Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
125 commits
Select commit Hold shift + click to select a range
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
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
6406891
Normalize public GBA enemy move choices and preserve native PP ownership
Roxas2712 Oct 24, 2026
206052f
Align API-3 GBA enemy-action battler selectors
Roxas2712 Oct 24, 2026
3f01f29
Expose shared API-3 GBA native move records
Roxas2712 Oct 24, 2026
f84dfb5
Honor portable GBA action targets through native execution
Roxas2712 Oct 24, 2026
c944bc0
Implement native GBA Follow Me targeting and round lifetime
Roxas2712 Oct 24, 2026
3edf776
Load composed effect probes in a single real mod session
Roxas2712 Oct 24, 2026
8052c79
Keep the composed effect probe within public content fields
Roxas2712 Oct 24, 2026
7f93af9
Use native GBA base-damage rounding
Roxas2712 Oct 24, 2026
45f5b4e
Apply native Gen-3 critical multiplier before type rounding
Roxas2712 Oct 24, 2026
8200b8d
Implement native GBA Helping Hand and shared damage modifier
Roxas2712 Oct 24, 2026
f09b570
Pin the composed effect proof's critical and variation inputs
Roxas2712 Oct 24, 2026
8c7df4d
Execute native GBA Spit Up with set-damage semantics
Roxas2712 Oct 24, 2026
ade8abd
Execute native GBA Beat Up with live party damage
Roxas2712 Oct 24, 2026
5538fa4
Use the shared canonical Beat Up effect identifier
Roxas2712 Oct 24, 2026
92ade2b
Read the active target species for native Beat Up defense
Roxas2712 Oct 24, 2026
45220e4
Align native GBA AI held-item knowledge and observation producers
Roxas2712 Oct 24, 2026
03d68a4
Verify native Beat Up held-item adjustment across engines
Roxas2712 Oct 24, 2026
c2a1a03
Read native Beat Up participants across both side parties
Roxas2712 Oct 25, 2026
d2d1f3b
Match native GBA critical context and hit metadata
Roxas2712 Oct 25, 2026
8e2aef3
Add native shiny and gender roll hooks with shared identity contracts
Roxas2712 Oct 24, 2026
2515a38
Read split and aliased trainer identities consistently without hooks
Roxas2712 Oct 24, 2026
440a5da
Create native Gen-3 preset parties with constrained identities
Roxas2712 Oct 25, 2026
184fdaa
Implement native GBA accuracy with retained execution gap evidence
Roxas2712 Oct 25, 2026
a6205df
Align native GBA secondary chances and guard battle rule compatibility
Roxas2712 Oct 25, 2026
b1795a7
Preserve native GBA party identity across trades and link battles
Roxas2712 Oct 25, 2026
0905dcd
Track native GBA Lock-On ownership through residuals and switches
Roxas2712 Oct 25, 2026
63e29a8
Add portable held-item reads and native cross-engine contracts
Roxas2712 Oct 24, 2026
49472aa
Align native GBA held-item action and residual phases
Roxas2712 Oct 24, 2026
103bc69
Resolve single-battle Leech Seed healing against the current occupant
Roxas2712 Oct 24, 2026
c27c37a
Preserve native single-battle Wish side order
Roxas2712 Oct 24, 2026
7e90de3
Implement native GBA Baton Pass choices and link continuation
Roxas2712 Oct 25, 2026
4db98ef
Defer nested Baton Pass item phases and hash transferred native stages
Roxas2712 Oct 25, 2026
da3666f
Document native Baton Pass contract and regression evidence
Roxas2712 Oct 25, 2026
be164ba
Preserve live link rosters alongside owner-specific party choices
Roxas2712 Oct 25, 2026
d5ad56a
Follow late-installed live battle rosters outside forced choices
Roxas2712 Oct 25, 2026
e8d6515
Record final Baton Pass feature and combined-fork acceptance
Roxas2712 Oct 25, 2026
bde1d79
Implement native GBA Encore state, planning and execution
Roxas2712 Oct 25, 2026
a17ff34
Declare the prepared native order input for Encore planning contracts
Roxas2712 Oct 25, 2026
6998a42
Preserve declared turn actions and planned move PP bindings
Roxas2712 Oct 25, 2026
313eb7a
Record native Encore contract and combined-fork acceptance
Roxas2712 Oct 25, 2026
55f4301
Implement native GBA Disable identity and execution lifecycle
Roxas2712 Oct 25, 2026
58b3187
Document native Disable contracts and validation boundaries
Roxas2712 Oct 25, 2026
6a3a315
Record complete Disable acceptance in the combined fork
Roxas2712 Oct 25, 2026
5ecfee4
Align ordinary native GBA multi-hit execution and RNG boundaries
Roxas2712 Oct 25, 2026
00e67c4
Keep scripted Beat Up continuation separate from ordinary multi-hits
Roxas2712 Oct 25, 2026
1d958bc
Document ordinary GBA multi-hit validation and native boundaries
Roxas2712 Oct 25, 2026
920b71b
Implement native GBA Rage state and move-end lifecycle
Roxas2712 Oct 25, 2026
381afee
Align native GBA AI order prediction and turn planning
Roxas2712 Oct 24, 2026
ecd80a9
Test native Rage planning, public commands and linked turns
Roxas2712 Oct 25, 2026
03c4a84
Clear native Rage on completed successful escape
Roxas2712 Oct 25, 2026
8e54361
Document native Rage contracts, acceptance and remaining boundaries
Roxas2712 Oct 25, 2026
6ccc478
Implement native GBA Triple Kick accuracy and power per hit
Roxas2712 Oct 25, 2026
10a5c32
Honor authored never-miss policy on every Triple Kick strike
Roxas2712 Oct 25, 2026
ecd2c0c
Document native Triple Kick acceptance and effect catalog boundary
Roxas2712 Oct 25, 2026
997ff3c
Implement native GBA Sleep Talk selection and nested move execution
Roxas2712 Oct 25, 2026
9b44f93
Preserve persistent sleep counters alongside native active state
Roxas2712 Oct 25, 2026
7d2763e
Allow portable authored GBA move effects and indexless Sleep Talk cho…
Roxas2712 Oct 25, 2026
1f33eb8
Map portable move effects to native Gen1-3 handlers
Roxas2712 Oct 22, 2026
a7988f2
Reuse current effect-contract fixtures with the native command stack
Roxas2712 Oct 25, 2026
cb6ddfa
Skip the native move-end script when Sleep Talk cannot call a move
Roxas2712 Oct 25, 2026
491d3a2
Document native Sleep Talk acceptance, prerequisites and remaining ho…
Roxas2712 Oct 25, 2026
0ce22b5
Align GBA held damage command reads and pre-stage item modifiers
Roxas2712 Oct 25, 2026
5f8a967
Keep set-damage sport gating and exercise actual GBA link profiles
Roxas2712 Oct 25, 2026
a2358df
Document native held damage command scope and remaining controller gaps
Roxas2712 Oct 25, 2026
9ad4f6a
Preserve sport-before-pinch rounding and cover charge and Flash Fire
Roxas2712 Oct 25, 2026
deb5f3e
Apply verified formatting to shared held damage fixtures
Roxas2712 Oct 25, 2026
d2665df
Record native held damage acceptance and remaining parity boundaries
Roxas2712 Oct 25, 2026
2fbfd30
Clarify existing native-default fix and isolate command-stack probe s…
Roxas2712 Oct 25, 2026
497575a
Prepare native GBA Choice Band commands and selection wiring; validat…
Roxas2712 Oct 25, 2026
be88b1f
Validate native Choice Band planning, public guards and canonical lin…
Roxas2712 Oct 25, 2026
32e69c0
Preserve delegated native slot ownership for PP-bound wild actions
Roxas2712 Oct 25, 2026
8eca1f9
Retain legacy choice handles and validate actual authored and resumed…
Roxas2712 Oct 25, 2026
9329838
Retain API-3 positional actions alongside legacy native choice handles
Roxas2712 Oct 25, 2026
a7b14c7
Preserve explicit PP policy and native caller failure boundaries
Roxas2712 Oct 25, 2026
137d775
Keep forced move PP detached when the planned slot is removed
Roxas2712 Oct 25, 2026
60d5a6f
Record actual move-used PP timing gap and corrected call probe
Roxas2712 Oct 25, 2026
e1d12f8
Run native contracts for Choice Band suite changes
Roxas2712 Oct 25, 2026
3ff3940
Document accepted Choice Band scope and remaining native hook gaps
Roxas2712 Oct 25, 2026
167f6c9
Add native public charge-turn decisions and shared battle contracts
Roxas2712 Oct 24, 2026
31a26ad
Align native GBA move-used events and current-slot PP commands
Roxas2712 Oct 25, 2026
28c51ea
Observe public PP records across consecutive event subscribers
Roxas2712 Oct 25, 2026
05927b8
Release native charge moves after action planning, including zero PP
Roxas2712 Oct 25, 2026
f7c1870
Document accepted move-used PP boundaries and remaining native gaps
Roxas2712 Oct 25, 2026
e7f1756
Align native GBA shared post-hit item commands and spectator turn bou…
Roxas2712 Oct 25, 2026
d88be1f
Supply identical native Tackle flags in held-item contract fixtures
Roxas2712 Oct 25, 2026
80c8bd8
Retain timeout evidence and budget complete post-hit script comparisons
Roxas2712 Oct 25, 2026
1ea0f87
Document verified post-hit contracts and imported-data reproduction
Roxas2712 Oct 25, 2026
dc1a2d3
Add native GBA Nature Power selection and child-owned PP commands
Roxas2712 Oct 25, 2026
f7e8f49
Verify unchanged API-3 Nature Power registration and execution
Roxas2712 Oct 25, 2026
474b3df
Exercise actual Nature Power imports through public battle submissions
Roxas2712 Oct 25, 2026
0536521
Preserve nested native caller history and sparse Sleep Talk slots
Roxas2712 Oct 25, 2026
812ec1f
Record final native and public Nature Power acceptance
Roxas2712 Oct 25, 2026
dc7e13c
Implement native GBA Assist and portable party move calls
Roxas2712 Oct 25, 2026
5c71253
Record native Assist validation and workflow coverage
Roxas2712 Oct 25, 2026
a3a80a1
Develop native GBA Mirror Move received-history contract
Roxas2712 Oct 25, 2026
2f6ae78
Fix Mirror Move recipient history in held-item scheduling fixture
Roxas2712 Oct 25, 2026
63084ec
Add native Substitute animation commands and controller contract cove…
Roxas2712 Oct 25, 2026
729c07f
Preserve sparse battle queues when grouping Substitute animations
Roxas2712 Oct 25, 2026
6b71be2
Record full regression parity after sparse queue repair
Roxas2712 Oct 25, 2026
bff8ec5
Import and render native GBA Substitute doll artwork
Roxas2712 Oct 25, 2026
e05a1bb
Record full regression baseline for native Substitute art
Roxas2712 Oct 25, 2026
816346b
Execute native Poison presentation with numbered stereo and mono soun…
Roxas2712 Oct 25, 2026
f4ef88f
Implement native GBA Focus Band presentation and qualify VM callbacks
Roxas2712 Oct 25, 2026
458a650
Implement native GBA Substitute fade with shared sprite exchange
Roxas2712 Oct 25, 2026
f9016f1
Qualify native Mirror Move in linked roles and public imported turns
Roxas2712 Oct 25, 2026
74602df
Cover native Mirror Move KO and self-target receipt histories
Roxas2712 Oct 25, 2026
f77cb74
Run native presentation and Substitute importer contracts in CI
Roxas2712 Oct 25, 2026
a215dc3
Document qualified native battle contracts and retained failure evidence
Roxas2712 Oct 25, 2026
eab9660
Bound exhaustive Assist workers and record native contract timings
Roxas2712 Oct 25, 2026
62d1e45
Record full native battle qualification and source-bound QA receipt
Roxas2712 Oct 25, 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
  •  
  •  
  •  
56 changes: 56 additions & 0 deletions .github/workflows/api3-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
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
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: 79ea62f45fb2ea8f65d081a109431e4eb1bbdb36
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
path: ${{ runner.temp }}/api3-report.json
if-no-files-found: error
44 changes: 44 additions & 0 deletions .github/workflows/charge-required-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: portable charge-required contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: charge-required-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 battle charge decisions and compatibility
run: |
luajit tests/engine/charge_required_contract.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/charge-required-contract
python3 tools/charge-required-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 1 --format native --report /tmp/charge-required-contract/api1-native.json
python3 tools/charge-required-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 2 --format native --report /tmp/charge-required-contract/api2-native.json
python3 tools/charge-required-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 2 --format unified --report /tmp/charge-required-contract/api2-unified.json
python3 tools/charge-required-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --report /tmp/charge-required-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: charge-required-contract
path: /tmp/charge-required-contract
if-no-files-found: ignore
37 changes: 37 additions & 0 deletions .github/workflows/critical-order-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: native critical/type ordering
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: critical-order-${{ 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: 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91
path: .contract-reference/gen1
- name: Install runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check critical/type boundaries
run: |
luajit tests/engine/gen3_critical_order.lua
luajit tests/engine/critical_order_contract.lua
- name: Compare unchanged public consumer
run: |
mkdir -p /tmp/critical-order
python3 tools/critical-order-contract-check/check.py --gen1 .contract-reference/gen1 --host-api 3 --report /tmp/critical-order/api3.json
python3 tools/critical-order-contract-check/check.py --gen1 .contract-reference/gen1 --host-api 2 --report /tmp/critical-order/api2.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: critical-order
path: /tmp/critical-order
if-no-files-found: ignore
95 changes: 95 additions & 0 deletions .github/workflows/enemy-action-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
name: Enemy move choice contracts
on:
pull_request:
paths:
- '.github/workflows/enemy-action-contract.yml'
- 'src/**'
- 'examples/portable_enemy_action/**'
- 'tests/enemy_actions/**'
- 'tests/engine/portable_enemy_action_*.lua'
- 'tests/engine/portable_enemy_move_records.lua'
- 'tests/engine/portable_enemy_targets.lua'
- 'tests/engine/gen3_follow_me.lua'
- 'tests/engine/gen3_helping_hand.lua'
- 'tests/engine/gen3_spit_up.lua'
- 'tests/engine/gen3_beat_up.lua'
- 'tests/engine/gen3_beat_up_adjustment.lua'
- 'tests/engine/gen3_beat_up_side_party.lua'
- 'tests/engine/gen3_critical_context.lua'
- 'tests/engine/gen3_constrained_party.lua'
- 'tests/engine/gen3_native_accuracy.lua'
- 'tests/engine/gen3_native_secondary.lua'
- 'tests/engine/gen3_battle_protocol.lua'
- 'tests/engine/gen3_party_codec.lua'
- 'tests/engine/gen3_party_transport.lua'
- 'tests/engine/gen3_lock_on.lua'
- 'tests/engine/gen3_lock_on_link.lua'
- 'tests/engine/gen3_baton_pass*.lua'
- 'tests/engine/gen3_encore*.lua'
- 'tests/engine/gen3_disable*.lua'
- 'tests/engine/gen3_multi_hit*.lua'
- 'tests/engine/gen3_rage*.lua'
- 'tests/engine/gen3_triple_kick*.lua'
- 'tests/engine/gen3_sleep_talk*.lua'
- 'tests/engine/gen3_choice*.lua'
- 'tests/engine/gen3_move_used*.lua'
- 'tests/engine/gen3_post_hit*.lua'
- 'tests/engine/gen3_nature_power*.lua'
- 'tests/engine/gen3_assist*.lua'
- 'tests/engine/gen3_mirror*.lua'
- 'tests/engine/gen3_substitute*.lua'
- 'tests/engine/gen3_effect_presentation.lua'
- 'tests/engine/gen3_native_sound.lua'
- 'tests/native_sound/**'
- 'tests/substitute_art/**'
- 'tests/tools/test_gba_substitute_art.py'
- 'tools/gba_substitute_art.py'
- 'tools/gen3_discover.py'
- 'tools/rom_manifest_firered.json'
- 'tools/rom_manifest_emerald.json'
- 'tests/post_hit_items/**'
- 'tests/held_item/**'
- 'tests/charge_required/**'
- 'tools/enemy-action-contract-check/**'
push:
branches: [main, dev]
permissions:
contents: read
concurrency:
group: enemy-action-contract-${{ github.ref }}
cancel-in-progress: true
jobs:
compare:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
path: gen2
- uses: actions/checkout@v7
with:
repository: bryanthaboi/gen1recomp
ref: 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91
path: gen1-reference
# Pin the maintained VM: the local 2.1.1700008891 ARM64 runtime
# produces JIT-dependent Thick Fat results in unchanged reference code.
- uses: actions/checkout@v7
with:
repository: LuaJIT/LuaJIT
ref: a4c064539ea931274d407e1249b4bb575424a0f4
path: luajit-runtime
- name: Build pinned LuaJIT
run: make -C luajit-runtime -j2
- name: Validate owned Substitute import locator inputs
run: nice -n 19 python3 -m unittest discover -s gen2/tests/tools -p test_gba_substitute_art.py
- name: Actual public hook and native move execution
run: >-
python3 gen2/tools/enemy-action-contract-check/check.py
--gen1 gen1-reference --gen2 gen2
--lua "${{ github.workspace }}/luajit-runtime/src/luajit"
--report "${{ runner.temp }}/enemy-action-report.json"
- uses: actions/upload-artifact@v7
if: always()
with:
name: enemy-action-contract-report
path: ${{ runner.temp }}/enemy-action-report.json
if-no-files-found: error
38 changes: 38 additions & 0 deletions .github/workflows/gba-damage-base-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: ordinary GBA base damage
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: gba-damage-base-${{ 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: 535a5ec088c1ae1bf4d91dd3e35a56f64cf46d91
path: .contract-reference/gen1
- name: Install runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check GBA damage and older-profile retention
run: |
luajit tests/engine/gba_damage_base.lua
luajit tests/engine/gen3_held_damage.lua
luajit tests/engine/gen3_held_damage_link.lua
- name: Compare actual ordinary damage calculators
run: |
mkdir -p /tmp/gba-damage-base
python3 tools/gba-damage-base-contract-check/check.py --gen1 .contract-reference/gen1 --report /tmp/gba-damage-base/records.json
python3 tools/held-damage-contract-check/check.py --gen1 .contract-reference/gen1 --report /tmp/gba-damage-base/held-records.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: gba-damage-base
path: /tmp/gba-damage-base
if-no-files-found: ignore
34 changes: 34 additions & 0 deletions .github/workflows/gen3-ai-item-knowledge-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: native GBA AI item knowledge
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: gen3-ai-item-knowledge-${{ 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: Roxas2712/gen1recomp-Mac-fix
ref: 12c9e5b5a2325470d6bb266c9a1f37b7954b698e
path: .contract-reference/gen1
- name: Install runtime
run: sudo apt-get update && sudo apt-get install -y luajit
- name: Check native item queries and observation producers
run: luajit tests/engine/gen3_ai_item_knowledge.lua
- name: Compare actual native AI and effect paths
run: |
mkdir -p /tmp/gen3-ai-item-knowledge
python3 tools/gen3-ai-item-knowledge-contract-check/check.py --gen1 .contract-reference/gen1 --report /tmp/gen3-ai-item-knowledge/records.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: gen3-ai-item-knowledge
path: /tmp/gen3-ai-item-knowledge
if-no-files-found: ignore
41 changes: 41 additions & 0 deletions .github/workflows/gen3-ai-order-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: native GBA AI order
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: gen3-ai-order-${{ 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: pret/pokefirered
ref: ce6406d8c2eaf46d543c8a2606de0c3cb1951982
path: .contract-reference/firered
- uses: actions/checkout@v7
with:
repository: pret/pokeemerald
ref: 731ad5bfd6e6f265508d0efcca0ba42f9dcf5881
path: .contract-reference/emerald
- name: Install runtime and compiler
run: sudo apt-get update && sudo apt-get install -y luajit build-essential
- name: Check real AI queries and battle planning
run: luajit tests/engine/gen3_ai_order.lua
- name: Compare actual VMs and sorting with original native C
run: |
python3 tools/gen3-ai-order-check/check.py \
--firered-main .contract-reference/firered/src/battle_main.c \
--emerald-main .contract-reference/emerald/src/battle_main.c \
--report /tmp/gen3-ai-order/records.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: gen3-ai-order
path: /tmp/gen3-ai-order
if-no-files-found: ignore
46 changes: 46 additions & 0 deletions .github/workflows/held-item-contract.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: portable held-item contract
on:
pull_request:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: held-item-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 held readers, metadata authority and SDK compatibility
run: |
luajit tests/engine/held_item_contract.lua
luajit tests/engine/held_item_authority.lua
luajit tests/engine/held_item_scheduling.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/held-item-contract
python3 tools/held-item-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 1 --format native --require-native-schedule-parity --report /tmp/held-item-contract/api1-native.json
python3 tools/held-item-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 2 --format native --require-native-schedule-parity --report /tmp/held-item-contract/api2-native.json
python3 tools/held-item-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 2 --format unified --require-native-schedule-parity --report /tmp/held-item-contract/api2-unified.json
python3 tools/held-item-contract-check/check.py --gen1 .contract-reference/gen1 \
--api 3 --format unified --require-native-schedule-parity --report /tmp/held-item-contract/api3.json
- uses: actions/upload-artifact@v6
if: always()
with:
name: held-item-contract
path: /tmp/held-item-contract
if-no-files-found: ignore
Loading