Skip to content

Restore ceiling plane in texture experiment #104

Restore ceiling plane in texture experiment

Restore ceiling plane in texture experiment #104

Workflow file for this run

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 }}