Restore ceiling plane in texture experiment #104
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| push: | |
| branches: | |
| - doom-neogeo-port | |
| - main | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| env: | |
| FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true | |
| concurrency: | |
| group: pages-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| rom: | |
| name: Neo Geo ROM | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install ngdevkit | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y software-properties-common curl zip imagemagick sox libsox-fmt-mp3 python3-pil python3-ruamel.yaml | |
| sudo add-apt-repository -y ppa:dciabrin/ngdevkit | |
| sudo apt-get update | |
| sudo apt-get install -y ngdevkit ngdevkit-gngeo | |
| - name: Verify helper scripts | |
| run: | | |
| python3 -m py_compile tools/doomgeo_build.py tools/doomgeo_plan.py | |
| python3 tools/doomgeo_build.py doctor --tools-prefix /usr | |
| python3 tools/doomgeo_plan.py list | |
| make DOOM_MAP=E1M1 BUILDDIR=build/ci-ripdoom-e1m1 ripdoom-check ripdoom-runtime-check | |
| make DOOM_MAP=E1M2 BUILDDIR=build/ci-ripdoom-e1m2 ripdoom-check ripdoom-runtime-check | |
| - name: Build ROM | |
| run: python3 tools/doomgeo_build.py build --tools-prefix /usr | |
| - name: Collect ROM artifacts | |
| run: python3 tools/doomgeo_build.py package --out dist/rom | |
| - name: Upload ROM | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: doomgeo-aes-rom | |
| path: dist/rom/* | |
| if-no-files-found: error | |
| asm-rom: | |
| name: 68000 ASM ROM | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Install ngdevkit | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y software-properties-common zip | |
| sudo add-apt-repository -y ppa:dciabrin/ngdevkit | |
| sudo apt-get update | |
| sudo apt-get install -y ngdevkit ngdevkit-gngeo | |
| - name: Build ASM ROM | |
| run: python3 tools/doomgeo_build.py build --tools-prefix /usr --target asm-rom | |
| - name: Collect ASM ROM artifacts | |
| run: python3 tools/doomgeo_build.py package --variant asm --out dist/asm-rom | |
| - name: Upload ASM ROM | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: doomgeo-aes-asm-rom | |
| path: dist/asm-rom/* | |
| if-no-files-found: error | |
| helpers: | |
| name: Standalone helpers (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - os: ubuntu-24.04 | |
| artifact: doomgeo-aes-linux-helpers | |
| build_name: doomgeo-build | |
| plan_name: doomgeo-plan | |
| - os: windows-2022 | |
| artifact: doomgeo-aes-windows-helpers | |
| build_name: doomgeo-build.exe | |
| plan_name: doomgeo-plan.exe | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: "3.12" | |
| - name: Install PyInstaller | |
| run: python -m pip install --upgrade pip pyinstaller | |
| - name: Build standalone helpers | |
| shell: bash | |
| run: | | |
| pyinstaller --onefile --name doomgeo-build tools/doomgeo_build.py | |
| pyinstaller --onefile --name doomgeo-plan tools/doomgeo_plan.py | |
| - name: Smoke test standalone helpers | |
| shell: bash | |
| run: | | |
| ./dist/${{ matrix.build_name }} --help | |
| ./dist/${{ matrix.build_name }} install --help | |
| ./dist/${{ matrix.build_name }} build --help | |
| ./dist/${{ matrix.build_name }} package --help | |
| ./dist/${{ matrix.plan_name }} list | |
| - name: Upload standalone helpers | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.artifact }} | |
| path: | | |
| dist/${{ matrix.build_name }} | |
| dist/${{ matrix.plan_name }} | |
| if-no-files-found: error | |
| windows-rom: | |
| name: Windows MSYS2 ROM | |
| runs-on: windows-2022 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Set up MSYS2 UCRT64 | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: UCRT64 | |
| update: true | |
| install: >- | |
| git | |
| pactoys | |
| python | |
| make | |
| zip | |
| unzip | |
| - name: Install ngdevkit for MSYS2 | |
| shell: msys2 {0} | |
| run: python3 tools/doomgeo_build.py install --method msys2 | |
| - name: Verify Windows build helper | |
| shell: msys2 {0} | |
| run: | | |
| python3 -m py_compile tools/doomgeo_build.py tools/doomgeo_plan.py | |
| python3 tools/doomgeo_build.py doctor --tools-prefix /ucrt64 | |
| python3 tools/doomgeo_plan.py list | |
| - name: Build ROM on Windows | |
| shell: msys2 {0} | |
| run: python3 tools/doomgeo_build.py build --tools-prefix /ucrt64 | |
| - name: Collect Windows ROM artifacts | |
| shell: msys2 {0} | |
| run: python3 tools/doomgeo_build.py package --out dist/windows-rom | |
| - name: Upload Windows-built ROM | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: doomgeo-aes-windows-rom | |
| path: dist/windows-rom/* | |
| if-no-files-found: error | |
| pages: | |
| name: GitHub Pages playable build | |
| runs-on: ubuntu-24.04 | |
| needs: | |
| - rom | |
| - asm-rom | |
| if: github.event_name != 'pull_request' | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Download ROM artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: doomgeo-aes-rom | |
| path: dist/rom | |
| - name: Download ASM ROM artifact | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: doomgeo-aes-asm-rom | |
| path: dist/asm-rom | |
| - name: Build Pages bundle | |
| run: python3 tools/doomgeo_build.py pages --rom dist/rom/doomgeo-aes.zip --bios dist/rom/neogeo.zip --asm-rom dist/asm-rom/doomgeo-aes-asm.zip --out dist/pages | |
| - name: Verify FBNeo web package CRCs | |
| run: | | |
| python3 - <<'PY' | |
| import binascii | |
| import glob | |
| import zipfile | |
| expected_rom = { | |
| "202-p1.p1": 0x2B61415B, | |
| "202-s1.s1": 0xCD19264F, | |
| "202-c1.c1": 0xCC0095EF, | |
| "202-c2.c2": 0x42371307, | |
| "202-m1.m1": 0x9C0291EA, | |
| "202-v1.v1": 0xDEBEB8FB, | |
| } | |
| expected_bios = { | |
| "sp-s3.sp1": 0x91B64BE3, | |
| "sm1.sm1": 0x94416D67, | |
| "sfix.sfix": 0xC2EA0CFD, | |
| "000-lo.lo": 0x5A86CFF2, | |
| } | |
| def check(path, expected): | |
| with zipfile.ZipFile(path) as archive: | |
| for name, crc in expected.items(): | |
| data = archive.read(name) | |
| actual = binascii.crc32(data) & 0xFFFFFFFF | |
| if actual != crc: | |
| raise SystemExit(f"{path}:{name} CRC {actual:08x} != {crc:08x}") | |
| main_rom = glob.glob("dist/pages/rom/web-*/doomgeo-aes.zip") | |
| main_bios = glob.glob("dist/pages/rom/web-*/neogeo.zip") | |
| asm_rom = glob.glob("dist/pages/rom/asm/web-*/doomgeo-aes-asm.zip") | |
| if len(main_rom) != 1 or len(main_bios) != 1 or len(asm_rom) != 1: | |
| raise SystemExit(f"unexpected web package layout: {main_rom=} {main_bios=} {asm_rom=}") | |
| check(main_rom[0], expected_rom) | |
| check(asm_rom[0], expected_rom) | |
| check(main_bios[0], expected_bios) | |
| PY | |
| - name: Upload Pages artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| name: github-pages-${{ github.run_attempt }} | |
| path: dist/pages | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 | |
| with: | |
| artifact_name: github-pages-${{ github.run_attempt }} |