Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
160 commits
Select commit Hold shift + click to select a range
5bb306c
Add optional GBC display colour correction
Roxas2712 Oct 21, 2026
644aa83
Add version-aware capability queries to the mod API
Roxas2712 Oct 21, 2026
044ff92
Add opt-in unified mod content records across generations
Roxas2712 Oct 21, 2026
4822a59
Add opt-in unified hook and event record boundaries
Roxas2712 Oct 21, 2026
886fca5
Add detached read-only world and party queries
Roxas2712 Oct 21, 2026
9b7bc09
Add guarded public world actions and native flight
Roxas2712 Oct 21, 2026
5934814
Allow capability tests to follow additive native flight support
Roxas2712 Oct 21, 2026
52b0055
Add detached read-only battle snapshots for mods
Roxas2712 Oct 21, 2026
9044909
Add revision-bound public battle actions through native commands
Roxas2712 Oct 21, 2026
418b55f
Add revision-bound public party, bag and dialogue UI actions
Roxas2712 Oct 21, 2026
4bfa668
Add opt-in prevalidated portable world dialogue scripts
Roxas2712 Oct 22, 2026
b46e128
Add read-only map overview and encounter table queries
Roxas2712 Oct 22, 2026
3ed4741
Add optional local shader presets with persistent parameters
Roxas2712 Oct 22, 2026
7f7e92d
Add preflighted single-pass RetroArch shader import
Roxas2712 Oct 22, 2026
40e8980
Integrate public API prerequisites (#90–#97)
Roxas2712 Oct 22, 2026
61edab0
Integrate portable script prerequisite (#98)
Roxas2712 Oct 22, 2026
4008ae2
Integrate world-overview prerequisite (#99)
Roxas2712 Oct 22, 2026
69c3474
Add shared API 3 entry and pinned cross-engine contracts
Roxas2712 Oct 22, 2026
ab7d941
Add validated API 3 world warps and cross-engine contracts
Roxas2712 Oct 22, 2026
2ea78e3
Add API 3 object visibility and block edits with shared contracts
Roxas2712 Oct 22, 2026
f184256
Add API 3 public NPC actions with cross-engine contracts
Roxas2712 Oct 22, 2026
f62b375
Support bounded multipass RetroArch presets and PNG LUTs
Roxas2712 Oct 22, 2026
5324b5c
Add portable keyboard, gamepad and wheel input hooks
Roxas2712 Oct 23, 2026
bbf00f2
Add portable mod.input tap, press and release controls
Roxas2712 Oct 23, 2026
34d5c10
Add portable core.update dispatch and native cross-engine contracts
Roxas2712 Oct 23, 2026
7801f9d
Add portable core.logic_speed dispatch and cross-engine contracts
Roxas2712 Oct 23, 2026
af4571f
Add portable screen.render_visible dispatch and cross-engine contracts
Roxas2712 Oct 23, 2026
5764ec8
Add portable battle.bottom_ui_visible dispatch and cross-engine contr…
Roxas2712 Oct 23, 2026
442e716
Add portable battle.status_hud_visible dispatch for GB and GBA
Roxas2712 Oct 23, 2026
eae79aa
Normalize contract fixture formatting
Roxas2712 Oct 23, 2026
95d6c75
Add portable world.talk dispatch and cross-engine NPC contracts
Roxas2712 Oct 23, 2026
ca7aed5
Add portable trainer preparation and battle-local party selection
Roxas2712 Oct 23, 2026
6e61c01
Add portable GB and GBA Pokemon level visibility hooks
Roxas2712 Oct 23, 2026
97eac55
Add portable auxiliary battle menu actions with native admission guards
Roxas2712 Oct 23, 2026
3800b63
Add portable battle move-grid navigation and native controller contracts
Roxas2712 Oct 23, 2026
5ed6353
Add portable battle-party grid navigation and native controller contr…
Roxas2712 Oct 23, 2026
c4152a5
Add API-3 playthrough storage with shared persistence contracts
Roxas2712 Oct 23, 2026
aef5650
Preserve requested storage identities across stale option writes
Roxas2712 Oct 23, 2026
d7581ba
Add native live-map lifecycle events and portable API-3 pixel placements
Roxas2712 Oct 23, 2026
5481fa2
Add portable native follower predicate and shared lifecycle contracts
Roxas2712 Oct 23, 2026
b0a8034
async-get native compatibility
Oct 24, 2026
5453b62
Stream file downloads in bounded native workers and publish complete …
Oct 25, 2026
71ac37e
Isolate cross-platform worker checks and allow an independently pinne…
Oct 25, 2026
2356135
Keep file progress and atomic publication off the native frame thread
Oct 25, 2026
7e02a10
Synchronize download publication checks with the worker claim
Oct 25, 2026
c8af61c
Expose the native Gen2 follower predicate with loader cleanup
Oct 25, 2026
6fb60df
Add portable asset pack requirements and atomic inbox installs
Oct 25, 2026
5eb8533
Add scoped native asset producers and SNES graphics extraction
Roxas2712 Oct 25, 2026
b5f2568
Document original producer contribution rights and integration credit
Roxas2712 Oct 25, 2026
c08f801
Import audited terrain palettes and refresh native rendering with bou…
Oct 25, 2026
01b6b24
perf(A1): instrument world, presentation and Nitro audio phases
Roxas2712 Oct 25, 2026
9206da3
test(A2): authenticate external mod fixtures and run ROM-free gallery…
Roxas2712 Oct 25, 2026
e22eb69
Record the explicit intermediate module-availability boundary
Roxas2712 Oct 25, 2026
58c093f
Keep the authenticated gallery documentation byte-identical
Roxas2712 Oct 25, 2026
d176fe8
compat(M1): add native module aliases and named unsupported imports
Roxas2712 Oct 25, 2026
9fb0208
Add fixed-destination mod logs and bounded native mobile HTTP
Roxas2712 Oct 25, 2026
d621ced
Frame empty TLS redirects and retain observed HTTP failure status
Roxas2712 Oct 25, 2026
b8ebe73
Implement native Gen2 radio records and wall-radio script lifecycle
Roxas2712 Oct 25, 2026
33b8a5b
Keep standalone radio registry visible to the coverage ratchet
Roxas2712 Oct 25, 2026
523bf0b
Pass bounded request bytes through the Android C-string bridge
Roxas2712 Oct 25, 2026
a7c266f
Expose native Pokegear presentation and optional window-resolution UI
Roxas2712 Oct 25, 2026
fd33272
compat(M1): defer to native providers and avoid failed-import sentinels
Roxas2712 Oct 25, 2026
2057dd6
Connect native Gen2 radio music and correct Snorlax admission
Roxas2712 Oct 26, 2026
7465114
Include native map-cue accessors for standalone radio ownership
Roxas2712 Oct 26, 2026
eca3524
Link upstream radio contribution permission explicitly
Roxas2712 Oct 26, 2026
5507ef2
perf(P1): skip redundant software pacing after VSync presentation
Roxas2712 Oct 26, 2026
65c3087
perf(P2): tune incremental GC and spend bounded idle deadline time
Roxas2712 Oct 26, 2026
0ef4570
Retain native Gen2 phone identities and restore Crystal Buena contact
Roxas2712 Oct 26, 2026
0956e2e
Respect already-loaded native GC delegation without loading a provider
Roxas2712 Oct 26, 2026
c63cd5d
Connect native Gen2 phone contacts to the semantic content registry
Roxas2712 Oct 26, 2026
cb62f94
Validate measured source fingerprints before and after native probes
Roxas2712 Oct 26, 2026
3445314
Keep explicit phone script keys authoritative during read edit write
Roxas2712 Oct 26, 2026
884d963
Name the native phone registry in its public API coverage test
Roxas2712 Oct 26, 2026
f0d4234
perf(P3): cache hot dependencies and retain private render scratch
Roxas2712 Oct 26, 2026
1c78d10
Merge remote-tracking branch 'upstream/main' into codex/upstream-perf-p3
Roxas2712 Oct 26, 2026
56a6948
Cover current native draw imports and refresh upstream qualification
Roxas2712 Oct 26, 2026
af26258
Share ordered native phone slots and permanent reservations with Poke…
Roxas2712 Oct 26, 2026
97ea982
Document offered contribution permission for the native phone book
Roxas2712 Oct 26, 2026
af00e0f
Merge commit '01b6b248' into codex/upstream-perf-p4
Roxas2712 Oct 26, 2026
391dc76
perf(P4): hoist world draw bodies and reuse private cover lists
Roxas2712 Oct 26, 2026
8fea135
Expose native phone list display hook and preserve deletion identity
Roxas2712 Oct 26, 2026
a2e3034
Preserve native phone caller byte selection and RNG consumption
Roxas2712 Oct 26, 2026
cef8beb
Link upstream caller selection contribution permission
Roxas2712 Oct 26, 2026
b77b27b
Exercise upstream native no-service header in caller selection regres…
Roxas2712 Oct 26, 2026
00f7faf
Emit native incoming call notification at actual random and special a…
Roxas2712 Oct 26, 2026
0fb2ad4
Keep native trainer caller class after authored contact renaming
Roxas2712 Oct 26, 2026
28e158f
perf(P5): cache native palette vectors and pixel-aligned zone geometry
Roxas2712 Oct 26, 2026
0594d15
Read native apricorn recipes and correct GSC Kurt selection transactions
Roxas2712 Oct 26, 2026
c27f836
Keep historical apricorn fallback in actual cartridge item order
Roxas2712 Oct 26, 2026
491d25a
Bind native GSC apricorn recipes to Kurt scripts and delivery events
Roxas2712 Oct 26, 2026
d9933b8
Preserve nested test-source quoting in native integration cases
Roxas2712 Oct 26, 2026
e5886cb
Retire unchanged recipe records individually during native mod reload
Roxas2712 Oct 26, 2026
cf3f2a0
Bind native GSC landmarks to map markers, names and edition boundaries
Roxas2712 Oct 26, 2026
40dfd6b
Use the native edition boundary in upstream map row classification
Roxas2712 Oct 26, 2026
0cd5b7a
Run native GSC bedroom decorations through ROM tables, PC and room ca…
Roxas2712 Oct 26, 2026
e49446d
Complete native bedroom acquisition through Mom savings and original …
Roxas2712 Oct 26, 2026
87f6959
Retain native non-trainer phone identity for original Mom purchase calls
Roxas2712 Oct 26, 2026
d0024cd
Expose legacy decoration contracts over native GSC records and room s…
Roxas2712 Oct 26, 2026
acd672b
Merge remote-tracking branch 'upstream/main' into codex/upstream-comp…
Roxas2712 Oct 26, 2026
1058832
Merge commit 'fd332722' into codex/upstream-compat-m5
Roxas2712 Oct 26, 2026
c5a997a
compat(M5): add per-mod decoded script callback profiles
Roxas2712 Oct 26, 2026
1543604
Release retired decoded-script sources and prevent failed-group retries
Roxas2712 Oct 26, 2026
e9395bb
Keep decoded tracing behind the original public compiler contract
Roxas2712 Oct 26, 2026
8a7500d
Keep decoded Gen2 call hooks open through native subroutine returns
Roxas2712 Oct 26, 2026
6ae26f1
Merge commit '8a7500d868a0195c7b54a22e652c776cc60128a0' into codex/up…
Roxas2712 Oct 26, 2026
cc52752
compat(M6): expose shared native NPC controls on legacy handles
Roxas2712 Oct 26, 2026
5d6e1e6
Allow the NPC fixture driver to load the legacy API consumer
Roxas2712 Oct 26, 2026
b6a98b3
Merge commit 'eca35240aaf6fb794dfee4cb879fa3e59b3eb1a8' into codex/up…
Roxas2712 Oct 26, 2026
ea3778a
Merge commit '0fb2ad456a015dc9226b5414808ad8d3b6f1defc' into codex/up…
Roxas2712 Oct 26, 2026
159bc2e
Merge commit 'e5886cb49b7762c1db1e9de2d3baf2e05b036b8f' into codex/up…
Roxas2712 Oct 26, 2026
e324ebc
Merge commit '40dfd6b930616713b70f05fde4435c52679c9d2d' into codex/up…
Roxas2712 Oct 26, 2026
f5eed5a
Merge commit 'd0024cdb2ccf056bc87a740146094f8752deb72e' into codex/up…
Roxas2712 Oct 26, 2026
db524f3
compat(M7): align Gen2 registry descriptors and isolate native limits
Roxas2712 Oct 26, 2026
19316eb
Measure registry validation with a guarded native FrameProfile probe
Roxas2712 Oct 26, 2026
6c9be52
Share native GSC Unown form registration and imported data with exter…
Roxas2712 Oct 26, 2026
f4ff1e2
Use the native egg predicate for Unown form registration
Roxas2712 Oct 26, 2026
35bf472
Merge commit 'b5f256874c1f0778995cefc5fb675b1375f47dfd' into codex/up…
Roxas2712 Oct 26, 2026
08fb407
Merge commit '523bf0bdccf42d553c972fedc0b270a17884f40a' into codex/up…
Roxas2712 Oct 26, 2026
f83f4ae
Share saved Gen2 RTC across native world scripts and clock card
Roxas2712 Oct 26, 2026
82c9fa4
Merge commit 'c8af61c17ab8777eab36115d272013736e5bc2d4' into codex/up…
Roxas2712 Oct 26, 2026
af2e1ae
compat(M8): connect native lifecycle callbacks and published-pack fol…
Roxas2712 Oct 26, 2026
ce4d894
Keep concrete player providers ahead of the live field fallback
Roxas2712 Oct 26, 2026
fa01a1d
Exercise force-enable policy against the native generation declaration
Roxas2712 Oct 26, 2026
db092fe
Merge commit 'f4ff1e2c9a1f7e823b2e3b4245d7344c4c1862d2' into codex/up…
Roxas2712 Oct 26, 2026
ea8905e
Keep native Gen2 daily services on the saved RTC midnight
Roxas2712 Oct 26, 2026
26d40db
Use shared native Unown and saved-calendar transitions without duplic…
Roxas2712 Oct 26, 2026
3e5c0dd
Qualify saved-midnight infection and native-only event capabilities
Roxas2712 Oct 26, 2026
858872a
Respect concrete query providers in module alias qualification
Roxas2712 Oct 26, 2026
9dac33b
Merge existing performance prerequisites through P5
Roxas2712 Oct 26, 2026
d7bbf97
perf(P6): prewarm effects and stream DS synthesis from the audio worker
Roxas2712 Oct 26, 2026
5af8542
Document qualified P6 worker and PCM validation
Roxas2712 Oct 26, 2026
73ff4d4
perf(P7): anchor static sun shadows and split moving casters
Roxas2712 Oct 26, 2026
de1a7e8
Document P7 shadow pass validation and baseline comparison
Roxas2712 Oct 26, 2026
c1906c6
perf(P8): budget world resolution and reflective water passes
Roxas2712 Oct 26, 2026
e93c24b
Document P8 render and water budget validation
Roxas2712 Oct 26, 2026
709d778
Merge commit '5bb306c4117122dd44e96e7a5fca804ff636b684' into codex/up…
Roxas2712 Oct 26, 2026
22126c7
Merge commit 'f62b3751d6417b7a287915e862a16b81889c8b81' into codex/up…
Roxas2712 Oct 26, 2026
688a62a
Keep Apple Silicon on the desktop performance tier
Roxas2712 Oct 26, 2026
3bd33cb
Merge commit 'c08f801196334aae6b91f0e47ee01e265d5c8ab9' into codex/up…
Roxas2712 Oct 26, 2026
455f911
perf(P9): budget LOW presentation and reuse native UI quads
Roxas2712 Oct 26, 2026
f8e0466
Document P9 policy, dependency reuse and native validation
Roxas2712 Oct 26, 2026
6edaa82
test: align updater fixtures with Gen2 release assets
Roxas2712 Oct 22, 2026
e48df32
test: cover twelve-action rebinding without fixed row indices
Roxas2712 Oct 22, 2026
f409d43
test: exercise profiled Game methods with complete fixtures
Roxas2712 Oct 22, 2026
7e01aad
test: execute quit-event veto and Android shutdown paths
Roxas2712 Oct 22, 2026
9dac838
test: pin continuous wide-battle animation anchor mapping
Roxas2712 Oct 22, 2026
719f564
test: audit and pin the current Gen2 link fingerprint surface
Roxas2712 Oct 22, 2026
496a341
test: cover six native producers through the public mod API
Roxas2712 Oct 22, 2026
5927399
Translate new transfer, hatch and athlete fallback messages at displa…
Roxas2712 Oct 26, 2026
a620d0c
Expose the existing native RTC subscription to the literal coverage gate
Roxas2712 Oct 26, 2026
00131e0
Provide guarded full-game FrameProfile qualification for independent …
Roxas2712 Oct 26, 2026
7727e8b
Clarify the owned output location required by the performance runner
Roxas2712 Oct 26, 2026
12ae28f
Measure the 60 FPS pacing boundary and moving-camera shadow workload …
Roxas2712 Oct 26, 2026
79ff56c
Require native pacing and quiescent voxel meshes in full-game qualifi…
Roxas2712 Oct 26, 2026
aa9a84e
Record completed programme gates and real-game FrameProfile evidence …
Roxas2712 Oct 26, 2026
4d58756
Merge current upstream fixes through hoisted entity and zone render p…
Roxas2712 Oct 26, 2026
867b001
Audit current native effect registrations and register cure text sources
Roxas2712 Oct 26, 2026
094d862
Verify current native Gen4 fog and poison-step band presentation
Roxas2712 Oct 26, 2026
98366e1
Record current upstream qualification and explicit standalone depende…
Roxas2712 Oct 26, 2026
b98db32
Record final qualified fork integration without relabeling earlier fu…
Roxas2712 Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
60 changes: 60 additions & 0 deletions .github/workflows/api3-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: API 3 contracts
on:
pull_request:
paths:
- '.github/workflows/api3-contract.yml'
- 'src/**'
- 'tests/api3_contract/**'
- 'tests/engine/api3_*.lua'
- 'tools/api3-contract-check/**'
push:
branches: [main, dev]
paths:
- '.github/workflows/api3-contract.yml'
- 'src/**'
- 'tests/api3_contract/**'
- 'tests/engine/api3_*.lua'
- 'tools/api3-contract-check/**'
permissions:
contents: read
concurrency:
group: api3-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
compare:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
reference: [79ea62f45fb2ea8f65d081a109431e4eb1bbdb36, 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91]
steps:
- uses: actions/checkout@v7
with:
path: gen2
sparse-checkout: |
src
data
tests
tools/api3-contract-check
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: ${{ matrix.reference }}
path: gen1-reference
sparse-checkout: |
src
data
tests
assets/fonts
- name: install LuaJIT
run: sudo apt-get update && sudo apt-get install -y luajit
- name: identical mod contracts on both engines
run: >-
python3 gen2/tools/api3-contract-check/check.py
--gen1 gen1-reference --gen2 gen2
--report "${{ runner.temp }}/api3-report.json"
- uses: actions/upload-artifact@v7
with:
name: api3-contract-report-${{ matrix.reference }}
path: ${{ runner.temp }}/api3-report.json
if-no-files-found: error
38 changes: 38 additions & 0 deletions .github/workflows/async-get.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: Async mod HTTP and file downloads
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
jobs:
transport:
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 5
steps:
- uses: actions/checkout@v7
- uses: actions/setup-python@v6
with:
python-version: '3.x'
- if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get install -y love
- name: Exercise real worker requests against a local server
shell: python
run: |
import os, pathlib, shutil, subprocess, urllib.request, zipfile
host = os.environ['RUNNER_OS']
if host == 'Linux':
executable = shutil.which('love')
else:
suffix = 'macos' if host == 'macOS' else 'win64'
target = pathlib.Path(os.environ['RUNNER_TEMP']) / 'love-get-check'
target.mkdir()
archive = target / 'runtime.zip'
urllib.request.urlretrieve(f'https://github.com/love2d/love/releases/download/11.5/love-11.5-{suffix}.zip', archive)
with zipfile.ZipFile(archive) as z: z.extractall(target)
executable = next(target.rglob('love.app/Contents/MacOS/love')) if host == 'macOS' else next(target.rglob('lovec.exe'))
if host == 'macOS': executable.chmod(0o755)
subprocess.run(['python', 'tools/check_async_get.py', '--love', str(executable), '--tls'], check=True)
50 changes: 50 additions & 0 deletions .github/workflows/battle-auxiliary-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: portable battle.menu_auxiliary contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: battle-auxiliary-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
contract:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36
path: .contract-reference/gen1
- name: Install ROM-free test runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check native auxiliary battle dispatch and SDK contracts
run: |
luajit tests/engine/battle_auxiliary.lua
luajit tests/engine/trainer_preparation.lua
luajit tests/engine/trainer_preparation_native.lua
luajit tests/engine/trainer_party_scope.lua
- name: Validate pinned native Gen1 auxiliary battle contracts
working-directory: .contract-reference/gen1
run: |
luajit tests/modkit/cases/unified_gen2_hooks.lua
luajit tests/modkit/cases/unified_gen3_hooks.lua
- name: Compare both engines in every SDK mode
run: |
mkdir -p /tmp/battle-auxiliary-contract
python3 tools/battle-auxiliary-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 1 --report /tmp/battle-auxiliary-contract/api1-native.json
python3 tools/battle-auxiliary-contract-check/check.py --gen1 .contract-reference/gen1 \
--report /tmp/battle-auxiliary-contract/api2-native.json
python3 tools/battle-auxiliary-contract-check/check.py --gen1 .contract-reference/gen1 \
--format unified --report /tmp/battle-auxiliary-contract/api2-unified.json
python3 tools/battle-auxiliary-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --report /tmp/battle-auxiliary-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: battle-auxiliary-contract
path: /tmp/battle-auxiliary-contract
if-no-files-found: ignore
49 changes: 49 additions & 0 deletions .github/workflows/battle-bottom-ui-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: portable battle.bottom_ui_visible contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: battle-bottom-ui-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
contract:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36
path: .contract-reference/gen1
- name: Install ROM-free test runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check bottom UI, inherited overlays and native battle composition
run: |
luajit tests/engine/battle_bottom_ui.lua
luajit tests/engine/battle_bottom_ui_routing.lua
luajit tests/engine/battle_bottom_ui_composition.lua
- name: Validate pinned native Gen1 GBA battle UI
working-directory: .contract-reference/gen1
run: luajit tests/modkit/cases/unified_gen3_battle_hooks.lua
- name: Compare native API 1 and 2
run: |
mkdir -p /tmp/battle-bottom-ui-contract
python3 tools/battle-bottom-ui-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 1 --report /tmp/battle-bottom-ui-contract/api1-native.json
python3 tools/battle-bottom-ui-contract-check/check.py --gen1 .contract-reference/gen1 \
--report /tmp/battle-bottom-ui-contract/api2-native.json
- name: Compare unified callbacks and API 3
run: |
python3 tools/battle-bottom-ui-contract-check/check.py --gen1 .contract-reference/gen1 \
--format unified --report /tmp/battle-bottom-ui-contract/api2-unified.json
python3 tools/battle-bottom-ui-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --report /tmp/battle-bottom-ui-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: battle-bottom-ui-contract
path: /tmp/battle-bottom-ui-contract
if-no-files-found: ignore
51 changes: 51 additions & 0 deletions .github/workflows/battle-grid-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: portable battle.move_grid_navigation contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: battle-grid-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
contract:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36
path: .contract-reference/gen1
- name: Install ROM-free test runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check native move navigation dispatch and SDK contracts
run: |
luajit tests/engine/battle_grid_navigation.lua
luajit tests/engine/battle_auxiliary.lua
luajit tests/engine/trainer_preparation.lua
luajit tests/engine/trainer_preparation_native.lua
luajit tests/engine/trainer_party_scope.lua
- name: Validate pinned native Gen1 move navigation contracts
working-directory: .contract-reference/gen1
run: |
luajit tests/modkit/cases/unified_gen2_hooks.lua
luajit tests/modkit/cases/unified_gen3_hooks.lua
- name: Compare both engines in every SDK mode
run: |
mkdir -p /tmp/battle-grid-contract
python3 tools/battle-grid-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 1 --report /tmp/battle-grid-contract/api1-native.json
python3 tools/battle-grid-contract-check/check.py --gen1 .contract-reference/gen1 \
--report /tmp/battle-grid-contract/api2-native.json
python3 tools/battle-grid-contract-check/check.py --gen1 .contract-reference/gen1 \
--format unified --report /tmp/battle-grid-contract/api2-unified.json
python3 tools/battle-grid-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --report /tmp/battle-grid-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: battle-grid-contract
path: /tmp/battle-grid-contract
if-no-files-found: ignore
43 changes: 43 additions & 0 deletions .github/workflows/core-update-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: portable core.update contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: core-update-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
contract:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36
path: .contract-reference/gen1
- name: Install ROM-free test runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check frame dispatch and native host routing
run: |
luajit tests/engine/core_update.lua
luajit tests/engine/core_update_routing.lua
- name: Compare both native engines through the same mod
run: |
mkdir -p /tmp/core-update-contract
python3 tools/core-update-contract-check/check.py --gen1 .contract-reference/gen1 \
--report /tmp/core-update-contract/api2-native.json
- name: Check unified callback and API-3 integration
run: |
python3 tools/core-update-contract-check/check.py --gen1 .contract-reference/gen1 \
--format unified --report /tmp/core-update-contract/api2-unified.json
python3 tools/core-update-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --report /tmp/core-update-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: core-update-contract
path: /tmp/core-update-contract
if-no-files-found: ignore
45 changes: 45 additions & 0 deletions .github/workflows/follower-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: portable follower predicate contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: follower-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
contract:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36
path: .contract-reference/gen1
- name: Install ROM-free test runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check native followers and compatibility
run: |
luajit tests/engine/follower_spawn.lua
luajit tests/engine/gen2_follower_predicate.lua
luajit tests/engine/api3_compat.lua
luajit tests/engine/unified_mod_callbacks.lua
- name: Compare both engines in every SDK mode
run: |
mkdir -p /tmp/follower-contract
python3 tools/follower-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 1 --format native --report /tmp/follower-contract/api1-native.json
python3 tools/follower-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 2 --format native --report /tmp/follower-contract/api2-native.json
python3 tools/follower-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 2 --format unified --report /tmp/follower-contract/api2-unified.json
python3 tools/follower-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --report /tmp/follower-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: follower-contract
path: /tmp/follower-contract
if-no-files-found: ignore
43 changes: 43 additions & 0 deletions .github/workflows/input-hook-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: portable input hook contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: input-hook-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
contract:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36
path: .contract-reference/gen1
- name: Install ROM-free test runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check native input and host routing
run: |
luajit tests/engine/portable_input_hooks.lua
luajit tests/engine/portable_input_routing.lua
- name: Compare both native engines through the same mod
run: |
mkdir -p /tmp/input-hook-contract
python3 tools/input-hook-contract-check/check.py --gen1 .contract-reference/gen1 \
--report /tmp/input-hook-contract/api2-native.json
- name: Check unified callback and API-3 integration
run: |
python3 tools/input-hook-contract-check/check.py --gen1 .contract-reference/gen1 \
--format unified --report /tmp/input-hook-contract/api2-unified.json
python3 tools/input-hook-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --report /tmp/input-hook-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: input-hook-contract
path: /tmp/input-hook-contract
if-no-files-found: ignore
Loading