diff --git a/fruitjam-build.sh b/fruitjam-build.sh new file mode 100755 index 0000000..6bb594c --- /dev/null +++ b/fruitjam-build.sh @@ -0,0 +1,58 @@ +#!/bin/sh +set -e + +# Some configurations that actually work at the time I committed this: +# ./fruitjam-build.sh -v # vga resolution, no psram, 128KiB +# ./fruitjam-build.sh -v -m448 # vga resolution, no psram, 448KiB +# ./fruitjam-build.sh -m4096 # 512x342 resolution, psram, 4096KiB + +DISP_WIDTH=512 +DISP_HEIGHT=342 +MEMSIZE=128 +CMAKE_ARGS= + +while getopts "hvm:" o; do + case "$o" in + (v) + DISP_WIDTH=640 + DISP_HEIGHT=480 + CMAKE_ARGS="$CMAKE_ARGS -DUSE_VGA_RES=1 -DHSTX_CKP=12 -DHSTX_D0P=14 -DHSTX_D1P=16 -DHSTX_D2P=18" + ;; + (m) + MEMSIZE=$OPTARG + ;; + (h|?) + echo "Usage: $0 [-v] [-m KiB]" + echo "" + echo " -v: Use framebuffer resolution 640x480 instead of 512x342" + echo " -m: Set memory size in KiB" + echo "" + echo "PSRAM is automatically set depending on memory & framebuffer details" + exit + ;; + esac +done + +TAG=fruitjam_${DISP_WIDTH}x${DISP_HEIGHT}_${MEMSIZE}k +PSRAM=$((MEMSIZE > 448 || DISP_WIDTH != 640)) +if [ $PSRAM -ne 0 ] ; then + TAG=${TAG}_psram + CMAKE_ARGS="$CMAKE_ARGS -DUSE_PSRAM=1" +fi + +set -x +make -C external/umac clean +make -C external/umac DISP_WIDTH=${DISP_WIDTH} DISP_HEIGHT=${DISP_HEIGHT} MEMSIZE=${MEMSIZE} +rm -f rom.bin +./external/umac/main -r '4D1F8172 - MacPlus v3.ROM' -W rom.bin || true +[ -f rom.bin ] +xxd -i < rom.bin > incbin/umac-rom.h +rm -rf build_${TAG} +cmake -S . -B build_${TAG} \ + -DPICO_SDK_PATH=../pico-sdk \ + -DBOARD=adafruit_fruit_jam -DPICO_BOARD=pico2 \ + -DMEMSIZE=${MEMSIZE} \ + -DUSE_HSTX=1 \ + -DSD_TX=35 -DSD_RX=36 -DSD_SCK=34 -DSD_CS=39 -DUSE_SD=1 \ + ${CMAKE_ARGS} +make -C build_${TAG} -j$(nproc)