diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 00000000..8182602f --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,62 @@ +name: Build pico-mac + +on: + push: + pull_request: + release: + types: [published] + check_suite: + types: [rerequested] + + +jobs: + bins: + runs-on: ubuntu-latest + steps: + + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Install ARM GCC + uses: carlosperate/arm-none-eabi-gcc-action@v1 + with: + release: '13.2.Rel1' + + - name: get submodules + run: git submodule update --init + + - name: get pico-sdk + run: git clone --depth=1 -b adafruit-fruit-jam https://github.com/adafruit/pico-sdk ../pico-sdk && (cd ../pico-sdk && git submodule update --init) + + - name: get pico-extras + run: git clone --depth=1 https://github.com/raspberrypi/pico-extras ../pico-extras + + - name: build targets + run: | + ./fruitjam-build.sh + mkdir uf2s + cp build*/src/*.uf2 uf2s/ + mkdir elfs + cp build*/src/*.elf elfs/ + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: uf2 files + path: uf2s/* + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: elf files + path: elfs/* + + - name: Create release + if: startsWith(github.ref, 'refs/tags/') + uses: softprops/action-gh-release@v1 + with: + files: uf2s/* + fail_on_unmatched_files: true + body: "Select a doom_tiny uf2 from the list below, plus the doom1-whx uf2." + diff --git a/.gitignore b/.gitignore index 45dc1afb..61301163 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,7 @@ config.status configure lib obj +picotool rpm.spec stamp-h stamp-h.in @@ -30,6 +31,8 @@ HEXEN*.pcx STRIFE*.pcx /build* +*.uf2 + # These are the default patterns globally ignored by Subversion: *.o *.lo diff --git a/README-fruitjam.md b/README-fruitjam.md index adfb138e..62d9bebb 100644 --- a/README-fruitjam.md +++ b/README-fruitjam.md @@ -2,13 +2,13 @@ * `git submodule update --init` * `sh fruitjam_build.sh` - * `picotool uf2 convert doom1.whx -t bin doom1-whx-for-fruitjam.uf2 -o 0x10080000 --family data` -You will get binary files including `build_fruitjam/src/doom_tiny.uf2`. - -Copy the uf2s (I copied `doom1-whx-for-fruitjam.uf2` first then `build_fruitjam/src/doom_tiny.uf2`) to fruit jam. +You will get binary files including `build_fruitjam/src/doom_tiny.uf2`. and `build_fruitjam/src/doom1-whx-for-fruitjam.uf2`. +Copy those two uf2s to fruit jam. You may need to re-enter the bootloader after copying the first file. +Note: When generating your own whx files, fruit jam ALWAYS uses the offset of 0x10080000. + You should get: * Debug UART output on pin "A4" * video data on pin 8, sync on 6/7 (I expected data on 9/10 as well but there's not: It's supposed to be 1-bit RGB) diff --git a/fruitjam-build.sh b/fruitjam-build.sh index 68fd9e70..2878fd2d 100755 --- a/fruitjam-build.sh +++ b/fruitjam-build.sh @@ -1,8 +1,9 @@ #!/bin/sh TAG=fruitjam +BUILD=build_${TAG} export CFLAGS="-include $(pwd)/fruitjam_cflags.h" export CXXFLAGS="-include $(pwd)/fruitjam_cflags.h" -cmake -S . -B build_${TAG} \ +cmake -S . -B $BUILD \ -DCMAKE_BUILD_TYPE=MinSizeRel \ -DPICO_SDK_PATH=../pico-sdk \ -DPICOTOOL_FETCH_FROM_GIT_PATH="$(pwd)/picotool" \ @@ -10,4 +11,5 @@ cmake -S . -B build_${TAG} \ -DUSE_HSTX=1 \ ${CMAKE_ARGS} "$@" -make -C build_${TAG} -j$(nproc) +make -C $BUILD -j$(nproc) +./picotool/picotool-build/picotool uf2 convert doom1.whx -t bin $BUILD/src/doom1-whx-for-fruitjam.uf2 -o 0x10080000 --family data