diff --git a/Makefile b/Makefile index bf7096819..5ff919c4e 100644 --- a/Makefile +++ b/Makefile @@ -166,6 +166,14 @@ LIBCD_ELF := .run/obj40/libcd LIBCD_OBJDIR := build/psyq/libcd LIBCD_SYMS := build/psyq/libcd_externals.ld +# libgs block 6 (Phase 7 Task #9): 16 contiguous libgs objects (GS_110/119/120/121/122/123/127/131/ +# 133/134/135/137, PRESET, PRESET3, OBJT, OBJT3) linked in place of the single libgs6 stub. Same +# conditional/idempotent model as libcd. The curated block-6 object dir is SDK-derived (gitignored), +# regenerated by tools/make_libgs_block6.sh (needs the LIBGS ELF from psyq_build_libs.sh LIBGS). +LIBGS6_ELF := .run/obj40/libgs_block6 +LIBGS6_OBJDIR := build/psyq/libgs6 +LIBGS6_SYMS := build/psyq/libgs6_externals.ld + # Assembler flags (docs/SETUP.md §6.2). -G0 is confirmed by the disassembly # (ledger #8: zero $gp-relative addressing). -no-pad-sections keeps section ends # un-padded so the link reproduces the original layout. @@ -241,7 +249,12 @@ $(OUT): $(OBJS) $(LD_SCRIPT) else echo " (no $(LIBCD_ELF) — libcd region stays asm stubs; run tools/psyq_build_libs.sh LIBCD)" fi - SYMS=""; [ -f "$(LIBCD_SYMS)" ] && SYMS="-T $(LIBCD_SYMS)" + if [ -d "$(LIBGS6_ELF)" ]; then + $(PYTHON) tools/psyq_integrate.py $(LIBGS6_ELF) $(LD_SCRIPT) $(LIBGS6_OBJDIR) $(LIBGS6_SYMS) libgs6 + else + echo " (no $(LIBGS6_ELF) — libgs6 region stays asm stubs; run tools/make_libgs_block6.sh)" + fi + SYMS=""; [ -f "$(LIBCD_SYMS)" ] && SYMS="-T $(LIBCD_SYMS)"; [ -f "$(LIBGS6_SYMS)" ] && SYMS="$$SYMS -T $(LIBGS6_SYMS)" echo " LD $(ELF)" $(LD) -T $(LD_SCRIPT) -T $(UNDEF_SYMS) -T $(UNDEF_FUNCS) $$SYMS --no-check-sections -Map $(MAPFILE) -o $(ELF) echo " OBJCOPY $@" diff --git a/config/splat.us.exe.yaml b/config/splat.us.exe.yaml index d9b3659bd..56ede12a1 100644 --- a/config/splat.us.exe.yaml +++ b/config/splat.us.exe.yaml @@ -80,7 +80,13 @@ segments: - [0x33888, c, libcd1] # libcd block 1 -> src/libcd1.c (vram 0x80043088-0x80046980, 11 objs) - [0x37180, c, gap] # non-libcd gap -> src/gap.c (vram 0x80046980-0x800469CC, stub) - [0x371CC, c, libcd2] # libcd block 2 -> src/libcd2.c (vram 0x800469CC-0x8004787C, 7 objs) - - [0x3807C, c, 800b] # -O2 game code -> src/800b.c (vram 0x8004787C-0x800629DC) + # PsyQ libgs block 6 (Phase 7 Task #9): 16 contiguous libgs objects (GS_110/119/120/121/122/ + # 123/127/131/133/134/135/137, PRESET, PRESET3, OBJT, OBJT3) linked in place of stubs — same + # mechanism as libcd (psyq_integrate swaps build/src/libgs6.o -> the real objects + NOLOAD data). + # The other 5 libgs blocks + the GS_001 gap stay stubs (remaining libgs integration is future). + - [0x3807C, c, 800b] # -O2 game code (pre-libgs6) -> src/800b.c (vram 0x8004787C-0x80053AF8) + - [0x442F8, c, libgs6] # libgs block 6 (16 objs) -> src/libgs6.c (vram 0x80053AF8-0x80057928) + - [0x48128, c, 800b2] # -O2 game code (post-libgs6) -> src/800b2.c (vram 0x80057928-0x800629DC) # Phase 7 (Task 2' / LZSS) — SURGICAL rodata carve for the LZSS switch only. # The rodata island (0x80072A38-0x80074750) interleaves game jtbls, game data # (loadDestPtrTable @0x80072C70 etc.) and library jtbls (PRESET/OBJT/PRNT @0x800737CC+), @@ -90,7 +96,12 @@ segments: # code subseg covering exactly 0x63238-0x6324C migrates jtbl_80072A38 into # asm/nonmatchings/800/LzssDecodeSector.s; everything else stays raw in the tail data. # tools/ld_interleave.py then places .data(front) -> .rodata(LZSS jtbl) -> .data(tail). - - [0x531DC, data, 531DC] # front data (vram 0x800629DC-0x80072A38) + # front data starts at 0x53198 (vram 0x80062998), NOT 0x531DC: the 68-B data descriptor + # table at 0x80062998-0x800629DC (boot.c's __do_global_dtors references D_80062998/D_800629D4) + # is data-in-text (cookbook §8). The big-800b era auto-labelled it; the libgs6 resegment made + # splat mis-detect it as func_80062998 (shadowing D_80062998). Carving it as the head of the + # front-data subseg forces the data labels deterministically. (ld_interleave FRONT_DATA matches.) + - [0x53198, data, 53198] # data table + front data (vram 0x80062998-0x80072A38) - [0x63238, .rodata, 800] # LZSS jtbl_80072A38 ONLY (vram 0x80072A38-0x80072A4C) -> migrates into LzssDecodeSector - [0x6324C, data, 6324C] # tail data: rest of island (raw) + globals (vram 0x80072A4C-0x80074800) - [0x65000] diff --git a/config/symbols.us.txt b/config/symbols.us.txt index 9bdf80f26..14608de09 100644 --- a/config/symbols.us.txt +++ b/config/symbols.us.txt @@ -483,6 +483,8 @@ GS_002_OBJ_10C = 0x80052CE8; // func GsInitCoord2param = 0x80052E0C; // func GsSetLightMatrix = 0x80052E68; // func GsMulCoord0 = 0x80052F38; // func +GsMulCoord2 = 0x80052FCC; // func libgs MATRIX.o, verified via the PsyQ object, declared to stabilize the 800b split (Ghidra-mirror pending, R15) +GsMulCoord3 = 0x80053050; // func libgs MATRIX.o, verified via the PsyQ object, declared to stabilize the 800b split (Ghidra-mirror pending, R15) print_matrix = 0x800530D4; // func print_vector = 0x80053144; // func GsMapModelingData = 0x80053290; // func diff --git a/docs/matching-cookbook.md b/docs/matching-cookbook.md index 2baab54d0..2eedfa74d 100644 --- a/docs/matching-cookbook.md +++ b/docs/matching-cookbook.md @@ -383,6 +383,34 @@ Wiring a library region into `make build` byte-identical (libcd: 58 SDK funcs, f whole thing on `[ -d ]` — a fresh clone without `tools/psyq/` builds via stubs. Idempotent (`build/psyq/` in the `.ld` ⇒ re-derive syms only). +### §9.4 Integrating a SECOND library (libgs block 6 after libcd) — multi-library gotchas +Wiring a 2nd `psyq_integrate` call into the same build (libcd, then a libgs block) surfaced bugs the +single-library path never hit. All fixed in `tools/psyq_integrate.py`; reuse for libspu/libsnd/…: +- **Namespace the NOLOAD section names per library** (`.nl__`, e.g. `.nl_libgs6_0`). + The idempotency guard was a global `if ".nl_0" not in ld` — so the 2nd integration saw `.nl_0` (from + libcd) and SKIPPED adding its own NOLOAD lines, discarding that library's `.data/.rdata/.bss` + (symptom: `'.bss'/'.rdata' referenced … defined in discarded section` for the 2nd lib's objects, §9.1 tell). +- **Globally re-sort ALL `.nl_*` NOLOAD lines by vram across libraries** at the end of each integrate. + Two separately-sorted groups whose vram ranges interleave make ld's location counter jump back + (`warning: dot moved backwards`) — harmless (NOLOAD emits no bytes) but noisy. Pure reordering. +- **Pass already-emitted sibling `*_externals.ld` to the trial link.** The 2nd library's trial link sees + the FIRST library's real objects (already in the `.ld`) referencing symbols defined only in the first + library's externals (e.g. libcd objects call `DMACallback`/`DeliverEvent`); without the sibling syms the + trial reports them as spurious `!! UNRESOLVED`. Glob `build/psyq/*_externals.ld` minus the current one. +- **A resegment can shift spimdisasm's auto-detected function/data boundaries** in the UNCHANGED regions + around the new subseg (shrinking 800b re-merged `func_80052FCC/053050` and re-typed the `D_80062998` + data table as a `func_`). Two deterministic fixes, both from the real artifacts (G1): declare the + affected REAL functions in `symbols.us.txt` (verify via the PsyQ object's symbol table — these were + `GsMulCoord2/3` in MATRIX.o), and carve any trailing data-in-text table as its own `data` subseg (§8; + here extend the front-data subseg back to the table start, update `ld_interleave` FRONT_DATA basename). + Always regenerate the split `src/*.c` from the fresh extract so stubs match the generated `.s`. +- **Block selection is by EXE-placement + disambiguation, not the full library.** A library's objects span + several non-contiguous blocks (libgs: 6 blocks + gaps incl. the GS_001 scattered-`.bss` gap, §9.1). + `psyq_identify ` over ONE block's range reports the right objects PLUS byte- + identical-`.text` aliases (GS_131≡RVWUNIT, PRESET2≡PRESET3, OBJT2≡OBJT3); keep the one that also + matches `.data/.rdata` (`psyq_link_region --verify` confirms per-object). Hardcode the disambiguated + object list in a committed regen script (`tools/make_libgs_block6.sh`) — SDK-derived dir, gitignored. + --- ## §10 Closing the regalloc/scheduling hard tail by hand (LZSS, Phase 7 session F — the full close) diff --git a/phase-ends/CURRENT_PHASE.md b/phase-ends/CURRENT_PHASE.md index a57764ce5..9f0774f9c 100644 --- a/phase-ends/CURRENT_PHASE.md +++ b/phase-ends/CURRENT_PHASE.md @@ -45,12 +45,24 @@ entry above + the 5 LOAD-BEARING comments in `src/800.c` + cookbook §10. Method: §3a web-research ground-truthed all levers against the pinned gcc-2.7.2 source; a floor-free `.text` metric (objcopy `--only-section=.text` + `cmp`, bypasses the rodata/jtbl floor) measured the close; the permuter could NOT (score floor + random divergence). -- ▶ **NEXT — Task #9: full libgs integration** (+~63–69 SDK funcs; placement + byte-verification DONE in session - E, see "libgs placement" + "libgs BYTE-VERIFIED" below). **Required before PhaseEnd per Drew's locked decision.** - Remaining = mechanical: resegment splat 800b into the 6 libgs blocks + 5 gap stubs (~13 subsegs), `split_src`, - wire `psyq_integrate` for the 6 block stubs (the libcd pattern, §9.3) → byte-identical. Simpler first win = - block 6 alone (16 objs incl. PRESET3/OBJT3) → ~35 funcs. **GS_001 excluded** (scattered `.bss` commons, §9.1 hard - case). Then Task 6 close-out, Task 7 PhaseEnd. +- ✅ **libgs BLOCK 6 integrated byte-identical** (session F, Drew: "block 6 alone first, then the integration"). + **16 contiguous libgs objects → 26 SDK functions banked** (vram 0x80053AF8–0x80057928), `make clean/extract/ + build/check` → `143dbb89… BYTE-IDENTICAL`, reproducible; fresh-clone stub fallback verified; zero spurious + warnings. Mechanism (the libcd §9.3 pattern): resegment 800b → [800b pre][libgs6][800b2 post]; regenerate the + 3 split src files; `psyq_integrate libgs6`. **Three new fixes (all in this commit):** + - **splat instability the resegment exposed:** shrinking 800b shifted spimdisasm's auto-detected boundaries. + Declared `GsMulCoord2/3` (real MATRIX.o funcs, verified via the PsyQ object — R15, Ghidra-mirror pending); + and carved the §8 data descriptor table `[0x53198,data,53198]` (boot.c's `D_80062998` was being shadowed by + a mis-detected `func_80062998`). ld_interleave FRONT_DATA → `53198.data.o`. + - **psyq_integrate multi-library support:** NOLOAD section names namespaced per-library (`.nl__*`) so the + 2nd integration's NOLOAD placement isn't skipped (was discarding OBJT3 .rdata/.bss); trial-link now includes + already-emitted sibling `*_externals.ld` (kills the "31 UNRESOLVED" false alarm — they're libcd's externals); + NOLOAD lines globally re-sorted by vram across libraries (kills "dot moved backwards"). + - **reproducibility:** `tools/make_libgs_block6.sh` regenerates the curated 16-object dir (disambiguated: + GS_131/137 not RVWUNIT/RVWLUNIT, PRESET3/OBJT3 not PRESET2/OBJT2). +- ▶ **NEXT — full libgs integration** (the other 5 blocks: ~37 more SDK funcs; **GS_001 excluded**, scattered + `.bss` commons §9.1). Drew pre-approved ("then the integration"). Same pattern, now de-risked (the splat- + instability + multi-lib fixes are in). Then Task 6 close-out, Task 7 PhaseEnd (PhaseEnd gated on libgs per Drew). NOTE: Gen1 exit needs ≥3 SESSIONS of green `make check` — **satisfied** (A, B, C, D, E, +F); Tasks 6/7 pending. ### Island ownership map (session E — the decisive finding) @@ -83,7 +95,7 @@ Patched `tools/psyq_identify.py` to skip data-only objects (no .text, e.g. GLOBA - 2026-06-15 (session C): `make check` → `143dbb89… BYTE-IDENTICAL` ✓ (full `clean && extract && build`, restored after the Task-2′ experiments). **≥3-session bar MET.** This session: fully diagnosed + built the **rodata-island mechanism** (works); root-caused the +24; **proved the PsyQ-library-linking GO** (see below). No new matches (architectural session). Build green at start and after restore. - 2026-06-14 (session D): `make clean && make extract && make build && make check` → `143dbb89… BYTE-IDENTICAL` ✓ — **libcd LINKED INTO THE BUILD** (Drew-approved push-through). The first real PsyQ library is now sourced from real SDK objects in the byte-identical build: **58 libcd SDK functions** linked (not stubs), replacing the libcd-region asm stubs. Idempotent; Makefile-automated; conditional (fresh clone w/o `tools/psyq/` builds via stubs). New committed tooling: `tools/psyq_link.py` (per-object byte-link engine — recovers externals from resolved relocs, weakens psyq-obj-parser's mislabelled `.bss` commons), `psyq_link_lib.py` (whole-lib verify, 18/18 libcd), `psyq_link_region.py` (region link via **NOLOAD** = no data carving), `psyq_integrate.py` (build wiring: splat resegment + .ld swap + external resolution), `split_src_region.py` (H5-safe src split). Cookbook §9.1/9.2/9.3 + R16. **No data carving** (NOLOAD data placement; flat data subseg unchanged). Build green throughout. - 2026-06-15 (session E): `make clean && make extract && make build && make check` → `143dbb89… BYTE-IDENTICAL` ✓ — start-of-session baseline + after the **LZSS surgical rodata carve** (jtbl_80072A38 migrated + sandwiched) + LZSS C **NON_MATCHING-guarded** (default build = stub). **≥3-session bar already MET (A/B/C/D); E is margin.** Findings: lean LZSS path proven (no libgs needed for it); LZSS C structurally matches (111/122) but blocked on a gcc cross-jump-merge hard-tail (see LZSS block above); libgs placement+disambiguation done (bonus, task #9, deferred per Drew until before PhaseEnd). -- 2026-06-15 (session F): `make clean && make extract && make build && make check` → `143dbb89… BYTE-IDENTICAL` ✓ — **LZSS MATCHED byte-for-byte** (asm-differ score 0; C compiled in, NON_MATCHING guard dropped). Closed the session-E ~4 regalloc/scheduling residuals via §3a web-research (ground-truthed against pinned gcc-2.7.2 `reorg.c`/`jump.c`/`local-alloc.c`) + a floor-free `.text` object metric: decoupled high-byte var + OR operand order (residual A); `result`-in-predecessor + explicit-`$2`-local-with-early-pin (residual B); no-`default` sltiu-reuse (residual B3); §5a barrier retained. **43 real matches; Gen1-exit LZSS gate SATISFIED.** Cookbook §10 added. Only `src/800.c` changed (label/logic; zero generated/ROM bulk staged). **Tasks #9 (libgs) → 6 → 7 remain** (PhaseEnd gated on libgs per Drew). +- 2026-06-15 (session F): `make clean && make extract && make build && make check` → `143dbb89… BYTE-IDENTICAL` ✓ — TWO milestones. **(1) LZSS MATCHED byte-for-byte** (asm-differ score 0; C compiled in, NON_MATCHING guard dropped). Closed the session-E ~4 regalloc/scheduling residuals via §3a web-research (ground-truthed against pinned gcc-2.7.2 `reorg.c`/`jump.c`/`local-alloc.c`) + a floor-free `.text` object metric: decoupled high-byte var + OR operand order (residual A); `result`-in-predecessor + explicit-`$2`-local-with-early-pin (residual B); no-`default` sltiu-reuse (residual B3); §5a barrier retained. **43 real matches; Gen1-exit LZSS gate SATISFIED.** Cookbook §10. **(2) libgs BLOCK 6 integrated** (16 objects / 26 SDK funcs byte-identical; the libcd §9.3 pattern). Fixed a resegment-triggered spimdisasm boundary instability (declared GsMulCoord2/3; carved the §8 data table `[0x53198,data]`) + made psyq_integrate multi-library-safe (per-lib NOLOAD namespacing + global sort; sibling externals in the trial); `tools/make_libgs_block6.sh` for reproducibility; cookbook §9.4. Build byte-identical with OR without the SDK objects; fresh-clone stub fallback verified. Changed: `src/800.c`, `config/{splat.us.exe.yaml,symbols.us.txt}`, `Makefile`, `tools/{psyq_integrate.py,ld_interleave.py,make_libgs_block6.sh}`, `docs/matching-cookbook.md` (zero generated/ROM bulk staged). **Tasks: full libgs → 6 → 7 remain** (PhaseEnd gated on libgs per Drew). --- diff --git a/src/800b.c b/src/800b.c index 656287622..03002cb8c 100644 --- a/src/800b.c +++ b/src/800b.c @@ -413,9 +413,9 @@ INCLUDE_ASM("asm/nonmatchings/800b", func_80052F04); INCLUDE_ASM("asm/nonmatchings/800b", GsMulCoord0); -INCLUDE_ASM("asm/nonmatchings/800b", func_80052FCC); +INCLUDE_ASM("asm/nonmatchings/800b", GsMulCoord2); -INCLUDE_ASM("asm/nonmatchings/800b", func_80053050); +INCLUDE_ASM("asm/nonmatchings/800b", GsMulCoord3); INCLUDE_ASM("asm/nonmatchings/800b", print_matrix); @@ -480,1219 +480,3 @@ INCLUDE_ASM("asm/nonmatchings/800b", SetDQA); INCLUDE_ASM("asm/nonmatchings/800b", SetDQB); INCLUDE_ASM("asm/nonmatchings/800b", func_80053AD8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80053AF8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80053B20); - -INCLUDE_ASM("asm/nonmatchings/800b", gte_scale_matrix); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80053CF8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80053D44); - -void GS_122_OBJ_DC(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_80053E28); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_123_OBJ_78); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_123_OBJ_90); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_123_OBJ_A8); - -void GS_123_OBJ_BC(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_80053EEC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80053F6C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80054340); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_131_OBJ_4A4); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80054430); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800544F8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80054514); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_133_OBJ_30); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_133_OBJ_224); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800547D8); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_134_OBJ_30); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_134_OBJ_224); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80054AAC); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_135_OBJ_38); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_135_OBJ_22C); - -INCLUDE_ASM("asm/nonmatchings/800b", GsSetRefView2L); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_137_OBJ_1B8); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_137_OBJ_274); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_137_OBJ_39C); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_137_OBJ_488); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_137_OBJ_48C); - -INCLUDE_ASM("asm/nonmatchings/800b", GS_137_OBJ_5EC); - -INCLUDE_ASM("asm/nonmatchings/800b", GsLinkObject5); - -INCLUDE_ASM("asm/nonmatchings/800b", GsPresetObject); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_108); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_14C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_1A8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_1CC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_244); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_2E8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_380); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_39C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_3B4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_3C0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_450); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_4B4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_574); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_5C0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_63C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_6E8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_744); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_748); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_754); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_7E8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_8C0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_8CC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET_OBJ_8FC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80055D40); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_D0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_13C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_16C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_1A0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_210); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_254); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_2E0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_33C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_39C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_3E0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_424); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_484); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_4B0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_4D8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_4DC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_4FC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_528); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_540); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_550); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_598); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_5E4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_62C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_658); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_678); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_6C4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_6C8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_6D4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_6E4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_738); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_76C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_7F4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_838); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_8D4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_91C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_96C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_9B0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_9F4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_A44); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_A68); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_A88); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_A94); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_AA8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_AD4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_AF0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_B28); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_B68); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_BA0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_BCC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_BE0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_C20); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_C24); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_C30); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_C40); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_CB4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_D3C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_D80); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_E1C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_E64); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_EB4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_EF8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_F3C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_F8C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_FB4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_FD8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_FE0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_FF4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_1020); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_103C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_1074); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_10B4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_10EC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_1118); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_112C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_116C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_1170); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_117C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRESET2_OBJ_118C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80056F18); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_C4); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_D0); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_D8); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_E4); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_EC); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_F8); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_108); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_110); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_118); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_124); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_12C); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT_OBJ_13C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80057094); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_E0); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_14C); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_1C4); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_248); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_28C); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_358); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_3BC); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_468); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_4AC); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_558); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_5C0); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_5EC); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_614); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_618); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_640); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_66C); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_69C); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_6EC); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_740); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_790); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_7BC); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_7E4); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_838); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_83C); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_848); - -INCLUDE_ASM("asm/nonmatchings/800b", OBJT2_OBJ_858); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastG3GL); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastG3GNL); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastF3GL); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastF3GNL); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastF4GL); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastF4GNL); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastG4GL); - -INCLUDE_ASM("asm/nonmatchings/800b", GsTMDfastG4GNL); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80058890); - -INCLUDE_ASM("asm/nonmatchings/800b", EXT_OBJ_A8); - -INCLUDE_ASM("asm/nonmatchings/800b", EXT_OBJ_AC); - -INCLUDE_ASM("asm/nonmatchings/800b", LoadClut); - -INCLUDE_ASM("asm/nonmatchings/800b", LoadClut2); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80058A4C); - -INCLUDE_ASM("asm/nonmatchings/800b", EXT_OBJ_234); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80058B04); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80058B40); - -INCLUDE_ASM("asm/nonmatchings/800b", GetClut); - -INCLUDE_ASM("asm/nonmatchings/800b", DumpTPage); - -INCLUDE_ASM("asm/nonmatchings/800b", DumpClut); - -INCLUDE_ASM("asm/nonmatchings/800b", NextPrim); - -INCLUDE_ASM("asm/nonmatchings/800b", IsEndPrim); - -INCLUDE_ASM("asm/nonmatchings/800b", AddPrim); - -INCLUDE_ASM("asm/nonmatchings/800b", AddPrims); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80058CE4); - -INCLUDE_ASM("asm/nonmatchings/800b", TermPrim); - -INCLUDE_ASM("asm/nonmatchings/800b", SetSemiTrans); - -INCLUDE_ASM("asm/nonmatchings/800b", PRIM_OBJ_200); - -INCLUDE_ASM("asm/nonmatchings/800b", SetShadeTex); - -INCLUDE_ASM("asm/nonmatchings/800b", PRIM_OBJ_228); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyF3); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyFT3); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyG3); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyGT3); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyF4); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyFT4); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyG4); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPolyGT4); - -INCLUDE_ASM("asm/nonmatchings/800b", SetSprt8); - -INCLUDE_ASM("asm/nonmatchings/800b", SetSprt16); - -INCLUDE_ASM("asm/nonmatchings/800b", SetSprt); - -INCLUDE_ASM("asm/nonmatchings/800b", SetTile1); - -INCLUDE_ASM("asm/nonmatchings/800b", SetTile8); - -INCLUDE_ASM("asm/nonmatchings/800b", SetTile16); - -INCLUDE_ASM("asm/nonmatchings/800b", SetTile); - -INCLUDE_ASM("asm/nonmatchings/800b", SetLineF2); - -INCLUDE_ASM("asm/nonmatchings/800b", SetLineG2); - -INCLUDE_ASM("asm/nonmatchings/800b", SetLineF3); - -INCLUDE_ASM("asm/nonmatchings/800b", SetLineG3); - -INCLUDE_ASM("asm/nonmatchings/800b", SetLineF4); - -INCLUDE_ASM("asm/nonmatchings/800b", SetLineG4); - -INCLUDE_ASM("asm/nonmatchings/800b", SetDrawTPage); - -INCLUDE_ASM("asm/nonmatchings/800b", SetDrawMove); - -INCLUDE_ASM("asm/nonmatchings/800b", SetDrawLoad); - -INCLUDE_ASM("asm/nonmatchings/800b", MargePrim); - -void PRIM_OBJ_52C(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", DumpDrawEnv); - -INCLUDE_ASM("asm/nonmatchings/800b", DumpDispEnv); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059234); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_11C); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_16C); - -INCLUDE_ASM("asm/nonmatchings/800b", SetGraphReverse); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_210); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800594CC); - -INCLUDE_ASM("asm/nonmatchings/800b", SetGraphQueue); - -INCLUDE_ASM("asm/nonmatchings/800b", GetGraphType); - -INCLUDE_ASM("asm/nonmatchings/800b", GetGraphDebug); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800595FC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059658); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800596F4); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059760); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_604); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_640); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059888); - -INCLUDE_ASM("asm/nonmatchings/800b", ClearImage2); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800599B8); - -INCLUDE_ASM("asm/nonmatchings/800b", StoreImage); - -INCLUDE_ASM("asm/nonmatchings/800b", MoveImage); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_8F4); - -INCLUDE_ASM("asm/nonmatchings/800b", ClearOTag); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059BFC); - -INCLUDE_ASM("asm/nonmatchings/800b", DrawPrim); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059CF4); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059D68); - -INCLUDE_ASM("asm/nonmatchings/800b", DrawOTagEnv); - -INCLUDE_ASM("asm/nonmatchings/800b", GetDrawEnv); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80059FC0); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_E34); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_F00); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_F24); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_F58); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_FD8); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1034); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_11C0); - -INCLUDE_ASM("asm/nonmatchings/800b", GetDispEnv); - -INCLUDE_ASM("asm/nonmatchings/800b", GetODE); - -INCLUDE_ASM("asm/nonmatchings/800b", SetTexWindow); - -INCLUDE_ASM("asm/nonmatchings/800b", SetDrawArea); - -INCLUDE_ASM("asm/nonmatchings/800b", SetDrawOffset); - -INCLUDE_ASM("asm/nonmatchings/800b", SetPriority); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005A600); - -INCLUDE_ASM("asm/nonmatchings/800b", SetDrawEnv); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1578); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005A870); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1790); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_18AC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005AB00); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_191C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005AB58); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1964); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_19A4); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_19D8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005AC24); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1A30); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1A70); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1AA4); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005ACF0); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1AF0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005AD34); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1B78); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005ADB8); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1BC4); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1C28); - -void SYS_OBJ_1C2C(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", _status); - -INCLUDE_ASM("asm/nonmatchings/800b", _clr); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1D84); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1DC0); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1F64); - -INCLUDE_ASM("asm/nonmatchings/800b", _dws); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_1FF4); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_202C); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_21A4); - -INCLUDE_ASM("asm/nonmatchings/800b", _drs); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_222C); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_2264); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_242C); - -INCLUDE_ASM("asm/nonmatchings/800b", _getctl); - -INCLUDE_ASM("asm/nonmatchings/800b", _cwb); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005B710); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005B75C); - -INCLUDE_ASM("asm/nonmatchings/800b", _addque); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005B7B0); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_25C8); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_26EC); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_27A8); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_283C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005BA90); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005BD7C); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_2C6C); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_2CC4); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_2CDC); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_2DD8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C020); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C054); - -INCLUDE_ASM("asm/nonmatchings/800b", SYS_OBJ_2F7C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C1C0); - -void SYS_OBJ_3060(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C29C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C2C8); - -void BZERO_OBJ_28(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", getchar); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C324); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C358); - -void MEMSET_OBJ_28(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C388); - -INCLUDE_ASM("asm/nonmatchings/800b", PUTCHAR_OBJ_3C); - -INCLUDE_ASM("asm/nonmatchings/800b", PUTCHAR_OBJ_98); - -INCLUDE_ASM("asm/nonmatchings/800b", toupper); - -INCLUDE_ASM("asm/nonmatchings/800b", tolower); - -INCLUDE_ASM("asm/nonmatchings/800b", rand); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C4CC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C4DC); - -void STRCMP_OBJ_5C(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", strcpy); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C584); - -void STRNCMP_OBJ_78(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C604); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005C640); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_50); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_60); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_88); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_B8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_C8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_D0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_EC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_F4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_FC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_178); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_188); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_190); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_1E8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_1F0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_1F8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_200); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_21C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_220); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_24C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_264); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_2A0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_2A4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_2D8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_2E8); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_340); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_348); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_34C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_380); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_38C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_3BC); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_3D0); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_3D4); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_470); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_590); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_634); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_64C); - -INCLUDE_ASM("asm/nonmatchings/800b", PRNT_OBJ_654); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CCC8); - -INCLUDE_ASM("asm/nonmatchings/800b", MEMCHR_OBJ_20); - -void MEMCHR_OBJ_48(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CD18); - -void STRLEN_OBJ_28(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CD48); - -INCLUDE_ASM("asm/nonmatchings/800b", PUTS_OBJ_2C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CD98); - -INCLUDE_ASM("asm/nonmatchings/800b", longjmp); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CE18); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CE28); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CE38); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CE50); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CE68); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CE78); - -INCLUDE_ASM("asm/nonmatchings/800b", CloseEvent); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CE98); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CEA8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CEB8); - -INCLUDE_ASM("asm/nonmatchings/800b", DisableEvent); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CED8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CEE8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CEF8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CF08); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CF18); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CF28); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CF38); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CF48); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CF58); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005CF68); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D06C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D0A0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D0F8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D118); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D184); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D244); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D4B8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D538); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D6A0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D8A0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D8B4); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D980); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005D9C4); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005DBD8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005DCA0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005DE78); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E0AC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E13C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E168); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E178); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E188); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E1A4); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E228); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E374); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E3AC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E79C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005E8E8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005EA34); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005EA54); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005EA68); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005EA88); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005EAA8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005EAC8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005F0C8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005F384); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005F728); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FA94); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FB70); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FBA8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FBC8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FC68); - -INCLUDE_ASM("asm/nonmatchings/800b", MemCardEnd); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FCB8); - -INCLUDE_ASM("asm/nonmatchings/800b", MemCardStop); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FD58); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_15C); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_exist_back); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_2E4); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_308); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_310); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_330); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_334); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8005FFB4); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_3B8); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_accept_back); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_404); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_438); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_490); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_4B0); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_4DC); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_594); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_5BC); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_5C0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8006023C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_6DC); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_730); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800603BC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80060404); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_840); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_84C); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_read_data); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_990); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_994); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80060614); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_A50); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_A5C); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_write_data); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_BA0); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_BA4); - -INCLUDE_ASM("asm/nonmatchings/800b", MemCardReadFile); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_C90); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_C9C); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_read_file); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_D08); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_D2C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_D6C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_D9C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_DD0); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_E5C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_E60); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80060AE0); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_F4C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_F58); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_write_file); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_FC4); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_FE8); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1028); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1058); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_108C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1118); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_111C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80060D9C); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1284); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_12E8); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1374); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061010); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061024); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1460); - -void LIBMCRD_OBJ_14A4(void) { -} - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061114); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_15EC); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_16B8); - -INCLUDE_ASM("asm/nonmatchings/800b", MemCardDeleteFile); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_17E0); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_189C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061524); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1944); - -INCLUDE_ASM("asm/nonmatchings/800b", MemCardUnformat); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_19F8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061678); - -INCLUDE_ASM("asm/nonmatchings/800b", LIBMCRD_OBJ_1A60); - -INCLUDE_ASM("asm/nonmatchings/800b", _callback_handler); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061770); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpIOE); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpError); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpTimeout); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpNewcard); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpIOEx); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpErrorx); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpTimeoutx); - -INCLUDE_ASM("asm/nonmatchings/800b", funcEvSpNewcardx); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8006186C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8006189C); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_close); - -INCLUDE_ASM("asm/nonmatchings/800b", _card_stop); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061B58); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061C60); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061D3C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061E18); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061E54); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061E90); - -INCLUDE_ASM("asm/nonmatchings/800b", STRCAT_OBJ_8C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061F38); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061F48); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061F58); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061F68); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061F78); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061F88); - -INCLUDE_ASM("asm/nonmatchings/800b", erase); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80061FA8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062248); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062258); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062268); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062278); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062288); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062298); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800622D0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062328); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062360); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062394); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8006252C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800625A4); - -INCLUDE_ASM("asm/nonmatchings/800b", InitPAD2); - -INCLUDE_ASM("asm/nonmatchings/800b", StartPAD2); - -INCLUDE_ASM("asm/nonmatchings/800b", StopPAD2); - -INCLUDE_ASM("asm/nonmatchings/800b", PAD_init2); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800626C8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800626DC); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800626F0); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062768); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800627D8); - -INCLUDE_ASM("asm/nonmatchings/800b", func_800627E8); - -INCLUDE_ASM("asm/nonmatchings/800b", StopCARD2); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062808); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062888); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8006289C); - -INCLUDE_ASM("asm/nonmatchings/800b", USERFUNC_OBJ_84); - -INCLUDE_ASM("asm/nonmatchings/800b", func_8006291C); - -INCLUDE_ASM("asm/nonmatchings/800b", func_80062988); - -INCLUDE_ASM("asm/nonmatchings/800b", D_800629D4); diff --git a/src/800b2.c b/src/800b2.c new file mode 100644 index 000000000..db2a01c4b --- /dev/null +++ b/src/800b2.c @@ -0,0 +1,945 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastG3GL); + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastG3GNL); + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastF3GL); + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastF3GNL); + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastF4GL); + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastF4GNL); + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastG4GL); + +INCLUDE_ASM("asm/nonmatchings/800b2", GsTMDfastG4GNL); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80058890); + +INCLUDE_ASM("asm/nonmatchings/800b2", EXT_OBJ_A8); + +INCLUDE_ASM("asm/nonmatchings/800b2", EXT_OBJ_AC); + +INCLUDE_ASM("asm/nonmatchings/800b2", LoadClut); + +INCLUDE_ASM("asm/nonmatchings/800b2", LoadClut2); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80058A4C); + +INCLUDE_ASM("asm/nonmatchings/800b2", EXT_OBJ_234); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80058B04); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80058B40); + +INCLUDE_ASM("asm/nonmatchings/800b2", GetClut); + +INCLUDE_ASM("asm/nonmatchings/800b2", DumpTPage); + +INCLUDE_ASM("asm/nonmatchings/800b2", DumpClut); + +INCLUDE_ASM("asm/nonmatchings/800b2", NextPrim); + +INCLUDE_ASM("asm/nonmatchings/800b2", IsEndPrim); + +INCLUDE_ASM("asm/nonmatchings/800b2", AddPrim); + +INCLUDE_ASM("asm/nonmatchings/800b2", AddPrims); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80058CE4); + +INCLUDE_ASM("asm/nonmatchings/800b2", TermPrim); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetSemiTrans); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRIM_OBJ_200); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetShadeTex); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRIM_OBJ_228); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyF3); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyFT3); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyG3); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyGT3); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyF4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyFT4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyG4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPolyGT4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetSprt8); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetSprt16); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetSprt); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetTile1); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetTile8); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetTile16); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetTile); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetLineF2); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetLineG2); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetLineF3); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetLineG3); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetLineF4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetLineG4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetDrawTPage); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetDrawMove); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetDrawLoad); + +INCLUDE_ASM("asm/nonmatchings/800b2", MargePrim); + +void PRIM_OBJ_52C(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", DumpDrawEnv); + +INCLUDE_ASM("asm/nonmatchings/800b2", DumpDispEnv); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059234); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_11C); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_16C); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetGraphReverse); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_210); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800594CC); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetGraphQueue); + +INCLUDE_ASM("asm/nonmatchings/800b2", GetGraphType); + +INCLUDE_ASM("asm/nonmatchings/800b2", GetGraphDebug); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800595FC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059658); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800596F4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059760); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_604); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_640); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059888); + +INCLUDE_ASM("asm/nonmatchings/800b2", ClearImage2); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800599B8); + +INCLUDE_ASM("asm/nonmatchings/800b2", StoreImage); + +INCLUDE_ASM("asm/nonmatchings/800b2", MoveImage); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_8F4); + +INCLUDE_ASM("asm/nonmatchings/800b2", ClearOTag); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059BFC); + +INCLUDE_ASM("asm/nonmatchings/800b2", DrawPrim); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059CF4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059D68); + +INCLUDE_ASM("asm/nonmatchings/800b2", DrawOTagEnv); + +INCLUDE_ASM("asm/nonmatchings/800b2", GetDrawEnv); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80059FC0); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_E34); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_F00); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_F24); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_F58); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_FD8); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1034); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_11C0); + +INCLUDE_ASM("asm/nonmatchings/800b2", GetDispEnv); + +INCLUDE_ASM("asm/nonmatchings/800b2", GetODE); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetTexWindow); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetDrawArea); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetDrawOffset); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetPriority); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005A600); + +INCLUDE_ASM("asm/nonmatchings/800b2", SetDrawEnv); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1578); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005A870); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1790); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_18AC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005AB00); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_191C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005AB58); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1964); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_19A4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_19D8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005AC24); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1A30); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1A70); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1AA4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005ACF0); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1AF0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005AD34); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1B78); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005ADB8); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1BC4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1C28); + +void SYS_OBJ_1C2C(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", _status); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005AE80); + +INCLUDE_ASM("asm/nonmatchings/800b2", _clr); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1D84); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1DC0); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1F64); + +INCLUDE_ASM("asm/nonmatchings/800b2", _dws); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_1FF4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_202C); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_21A4); + +INCLUDE_ASM("asm/nonmatchings/800b2", _drs); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_222C); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_2264); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_242C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005B684); + +INCLUDE_ASM("asm/nonmatchings/800b2", _getctl); + +INCLUDE_ASM("asm/nonmatchings/800b2", _cwb); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005B710); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005B75C); + +INCLUDE_ASM("asm/nonmatchings/800b2", _addque); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005B7B0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005B7E4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_25C8); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_26EC); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_27A8); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_283C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005BA90); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005BD7C); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_2C6C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005BED8); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_2CC4); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_2CDC); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_2DD8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C020); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C054); + +INCLUDE_ASM("asm/nonmatchings/800b2", SYS_OBJ_2F7C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C1C0); + +void SYS_OBJ_3060(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C29C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C2C8); + +void BZERO_OBJ_28(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", getchar); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C324); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C358); + +void MEMSET_OBJ_28(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C388); + +INCLUDE_ASM("asm/nonmatchings/800b2", PUTCHAR_OBJ_3C); + +INCLUDE_ASM("asm/nonmatchings/800b2", PUTCHAR_OBJ_98); + +INCLUDE_ASM("asm/nonmatchings/800b2", toupper); + +INCLUDE_ASM("asm/nonmatchings/800b2", tolower); + +INCLUDE_ASM("asm/nonmatchings/800b2", rand); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C4CC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C4DC); + +void STRCMP_OBJ_5C(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", strcpy); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C584); + +void STRNCMP_OBJ_78(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C604); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005C640); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_50); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_60); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_88); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_B8); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_C8); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_D0); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_EC); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_F4); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_FC); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_178); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_188); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_190); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_1E8); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_1F0); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_1F8); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_200); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_21C); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_220); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_24C); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_264); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_2A0); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_2A4); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_2D8); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_2E8); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_340); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_348); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_34C); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_380); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_38C); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_3BC); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_3D0); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_3D4); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_470); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_590); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_634); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_64C); + +INCLUDE_ASM("asm/nonmatchings/800b2", PRNT_OBJ_654); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CCC8); + +INCLUDE_ASM("asm/nonmatchings/800b2", MEMCHR_OBJ_20); + +void MEMCHR_OBJ_48(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CD18); + +void STRLEN_OBJ_28(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CD48); + +INCLUDE_ASM("asm/nonmatchings/800b2", PUTS_OBJ_2C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CD98); + +INCLUDE_ASM("asm/nonmatchings/800b2", longjmp); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CE18); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CE28); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CE38); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CE50); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CE68); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CE78); + +INCLUDE_ASM("asm/nonmatchings/800b2", CloseEvent); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CE98); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CEA8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CEB8); + +INCLUDE_ASM("asm/nonmatchings/800b2", DisableEvent); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CED8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CEE8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CEF8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CF08); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CF18); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CF28); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CF38); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CF48); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CF58); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005CF68); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D004); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D03C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D06C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D0A0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D0D8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D0F8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D118); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D138); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D184); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D244); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D33C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D410); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D4B8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D4F0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D538); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D588); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D6A0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D6CC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D734); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D8A0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D8B4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D980); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005D9C4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005DBD8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005DCA0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005DE78); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E0AC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E13C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E168); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E178); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E188); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E194); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E1A4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E228); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E374); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E3AC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E480); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E528); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E79C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E804); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E820); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E8E8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E980); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005E9D4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EA34); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EA54); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EA68); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EA88); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EAA8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EAC8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EAE8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EB28); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005EC00); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005ECC0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005ED4C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F0C8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F228); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F290); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F384); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F394); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F450); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F6CC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F704); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F728); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F75C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005F830); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FA94); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FB70); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FBA8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FBC8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FC68); + +INCLUDE_ASM("asm/nonmatchings/800b2", MemCardEnd); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FCB8); + +INCLUDE_ASM("asm/nonmatchings/800b2", MemCardStop); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FD58); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_15C); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_exist_back); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_2E4); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_308); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_310); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_330); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_334); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8005FFB4); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_3B8); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_accept_back); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_404); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_438); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_490); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_4B0); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_4DC); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_594); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_5BC); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_5C0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8006023C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_6DC); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_730); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800603BC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80060404); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_840); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_84C); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_read_data); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_990); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_994); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80060614); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_A50); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_A5C); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_write_data); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_BA0); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_BA4); + +INCLUDE_ASM("asm/nonmatchings/800b2", MemCardReadFile); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_C90); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_C9C); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_read_file); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_D08); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_D2C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_D6C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_D9C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_DD0); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_E5C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_E60); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80060AE0); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_F4C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_F58); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_write_file); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_FC4); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_FE8); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1028); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1058); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_108C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1118); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_111C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80060D9C); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1284); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_12E8); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1374); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061010); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061024); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1460); + +void LIBMCRD_OBJ_14A4(void) { +} + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061114); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_15EC); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_16B8); + +INCLUDE_ASM("asm/nonmatchings/800b2", MemCardDeleteFile); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_17E0); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_189C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061524); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1944); + +INCLUDE_ASM("asm/nonmatchings/800b2", MemCardUnformat); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_19F8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061678); + +INCLUDE_ASM("asm/nonmatchings/800b2", LIBMCRD_OBJ_1A60); + +INCLUDE_ASM("asm/nonmatchings/800b2", _callback_handler); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061770); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpIOE); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpError); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpTimeout); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpNewcard); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpIOEx); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpErrorx); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpTimeoutx); + +INCLUDE_ASM("asm/nonmatchings/800b2", funcEvSpNewcardx); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8006186C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8006189C); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_close); + +INCLUDE_ASM("asm/nonmatchings/800b2", _card_stop); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061B58); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061C60); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061D3C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061E18); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061E54); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061E90); + +INCLUDE_ASM("asm/nonmatchings/800b2", STRCAT_OBJ_8C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061F38); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061F48); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061F58); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061F68); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061F78); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061F88); + +INCLUDE_ASM("asm/nonmatchings/800b2", erase); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80061FA8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062144); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062248); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062258); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062268); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062278); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062288); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062298); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800622D0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062328); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062360); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062388); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062394); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800623A4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062434); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800624C4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800624F4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8006252C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800625A4); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800625DC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062644); + +INCLUDE_ASM("asm/nonmatchings/800b2", InitPAD2); + +INCLUDE_ASM("asm/nonmatchings/800b2", StartPAD2); + +INCLUDE_ASM("asm/nonmatchings/800b2", StopPAD2); + +INCLUDE_ASM("asm/nonmatchings/800b2", PAD_init2); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800626C8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800626DC); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800626F0); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062768); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800627D8); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_800627E8); + +INCLUDE_ASM("asm/nonmatchings/800b2", StopCARD2); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062808); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062888); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8006289C); + +INCLUDE_ASM("asm/nonmatchings/800b2", USERFUNC_OBJ_84); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_8006291C); + +INCLUDE_ASM("asm/nonmatchings/800b2", func_80062988); diff --git a/src/libgs6.c b/src/libgs6.c new file mode 100644 index 000000000..f53cbbde5 --- /dev/null +++ b/src/libgs6.c @@ -0,0 +1,355 @@ +#include "common.h" + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80053AF8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80053B20); + +INCLUDE_ASM("asm/nonmatchings/libgs6", gte_scale_matrix); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80053CF8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80053D44); + +void GS_122_OBJ_DC(void) { +} + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80053E28); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_123_OBJ_78); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_123_OBJ_90); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_123_OBJ_A8); + +void GS_123_OBJ_BC(void) { +} + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80053EEC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80053F6C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80054340); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_131_OBJ_4A4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80054430); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_800544F8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80054514); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_133_OBJ_30); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_133_OBJ_224); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_800547D8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_134_OBJ_30); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_134_OBJ_224); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80054AAC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_135_OBJ_38); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_135_OBJ_22C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GsSetRefView2L); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_137_OBJ_1B8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_137_OBJ_274); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_137_OBJ_39C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_137_OBJ_488); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_137_OBJ_48C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GS_137_OBJ_5EC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GsLinkObject5); + +INCLUDE_ASM("asm/nonmatchings/libgs6", GsPresetObject); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_108); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_14C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_1A8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_1CC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_244); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_2E8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_380); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_39C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_3B4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_3C0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_450); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_4B4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_574); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_5C0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_63C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_6E8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_744); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_748); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_754); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_7E8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_8C0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_8CC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET_OBJ_8FC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80055D40); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_D0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_13C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_16C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_1A0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_210); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_254); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_2E0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_33C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_39C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_3E0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_424); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_484); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_4B0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_4D8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_4DC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_4FC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_528); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_540); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_550); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_598); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_5E4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_62C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_658); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_678); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_6C4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_6C8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_6D4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_6E4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_738); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_76C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_7F4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_838); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_8D4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_91C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_96C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_9B0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_9F4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_A44); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_A68); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_A88); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_A94); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_AA8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_AD4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_AF0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_B28); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_B68); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_BA0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_BCC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_BE0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_C20); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_C24); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_C30); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_C40); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_CB4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_D3C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_D80); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_E1C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_E64); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_EB4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_EF8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_F3C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_F8C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_FB4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_FD8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_FE0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_FF4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_1020); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_103C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_1074); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_10B4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_10EC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_1118); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_112C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_116C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_1170); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_117C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", PRESET2_OBJ_118C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80056F18); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_C4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_D0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_D8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_E4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_EC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_F8); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_108); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_110); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_118); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_124); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_12C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT_OBJ_13C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", func_80057094); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_E0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_14C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_1C4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_248); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_28C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_358); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_3BC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_468); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_4AC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_558); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_5C0); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_5EC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_614); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_618); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_640); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_66C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_69C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_6EC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_740); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_790); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_7BC); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_7E4); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_838); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_83C); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_848); + +INCLUDE_ASM("asm/nonmatchings/libgs6", OBJT2_OBJ_858); diff --git a/tools/ld_interleave.py b/tools/ld_interleave.py index 2def49c34..94d9909f0 100644 --- a/tools/ld_interleave.py +++ b/tools/ld_interleave.py @@ -26,7 +26,7 @@ import re, sys LD = sys.argv[1] if len(sys.argv) > 1 else "build/us/SLUS_007.26.ld" # object basenames whose (.data) belongs to the front / tail region -FRONT_DATA = ("531DC.data.o",) +FRONT_DATA = ("53198.data.o",) TAIL_DATA = ("6324C.data.o",) src = open(LD).read() diff --git a/tools/make_libgs_block6.sh b/tools/make_libgs_block6.sh new file mode 100644 index 000000000..7cd1f529c --- /dev/null +++ b/tools/make_libgs_block6.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +# Regenerate the curated libgs block-6 object dir (.run/obj40/libgs_block6) for the Phase-7 Task-#9 +# integration (Makefile LIBGS6_ELF). SDK-derived + gitignored, like .run/obj40/libcd; the build is +# byte-identical WITH or WITHOUT it (the stubs reproduce the same bytes), so this only matters to a +# developer who wants the real SDK objects linked. Needs the LIBGS ELF objects from +# tools/psyq_build_libs.sh LIBGS (which needs tools/psyq/lib40/LIBGS.LIB from the DTL-S2002 redump). +# +# Block 6 = the 6th of the 6 contiguous libgs blocks (vram 0x80053AF8-0x80057928), 16 objects. The +# list is DISAMBIGUATED (session E): psyq_identify reports 20 candidates because four objects have a +# byte-identical-.text alias — keep GS_131 (not RVWUNIT), GS_137 (not RVWLUNIT), PRESET3 (not +# PRESET2), OBJT3 (not OBJT2); the losers have a spurious .data/.rdata mismatch and do NOT link +# byte-exact. psyq_link_region verifies the chosen 16 are per-object .text byte-identical. +set -euo pipefail +cd "$(dirname "$0")/.." +LIBGS=.run/obj40/libgs +DST=.run/obj40/libgs_block6 +OBJS=(GS_110 GS_119 GS_120 GS_121 GS_122 GS_123 GS_127 GS_131 GS_133 GS_134 GS_135 GS_137 \ + PRESET PRESET3 OBJT OBJT3) + +[ -d "$LIBGS" ] || tools/psyq_build_libs.sh LIBGS +rm -rf "$DST"; mkdir -p "$DST" +for o in "${OBJS[@]}"; do + [ -f "$LIBGS/$o.o" ] || { echo "ERROR: $LIBGS/$o.o missing (run tools/psyq_build_libs.sh LIBGS)"; exit 1; } + cp "$LIBGS/$o.o" "$DST/$o.o" +done +echo "libgs_block6: ${#OBJS[@]} objects -> $DST" +# Optional self-check: verify the region links per-object .text byte-identical. +if [ "${1:-}" = "--verify" ]; then + .venv/bin/python tools/psyq_link_region.py "$DST" 0x80053AF8 0x80057928 +fi diff --git a/tools/psyq_integrate.py b/tools/psyq_integrate.py index 72ccc6fc8..34c5a2ce8 100644 --- a/tools/psyq_integrate.py +++ b/tools/psyq_integrate.py @@ -18,7 +18,7 @@ object block. Non-library gaps between blocks keep their own stub subsegment unt Usage: psyq_integrate.py [,,...] """ -import os, re, subprocess, sys, tempfile +import glob, os, re, subprocess, sys, tempfile sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from psyq_link import recover_sym_addrs, AS, sh, VRAM_BASE, DATA_SECTIONS from psyq_link_region import classify, placement @@ -41,13 +41,17 @@ def contiguous_blocks(order): def trial_undefined(ld_path, extra_syms=None): - """Full-build link with the rewritten .ld; return the set of undefined symbol names.""" + """Full-build link with the rewritten .ld; return the set of undefined symbol names. + extra_syms is a list of already-emitted sibling *_externals.ld (from prior library integrations); + including them stops THIS library's trial from re-flagging symbols another library already resolved + (e.g. integrating libgs6 after libcd: libcd's objects reference DMACallback etc., defined only in + libcd_externals.ld — without it the libgs6 trial reports them as spurious 'UNRESOLVED').""" td = tempfile.mkdtemp(dir=".run") elf = os.path.join(td, "trial.elf") cmd = [f"{AS}ld", "-T", ld_path, "-T", "undefined_syms_auto.txt", "-T", "undefined_funcs_auto.txt", "--no-check-sections", "-o", elf] - if extra_syms: - cmd += ["-T", extra_syms] + for es in (extra_syms or []): + cmd += ["-T", es] p = subprocess.run(cmd, capture_output=True) err = p.stderr.decode() # a weakened .bss common referenced by another object whose .bss we discarded shows up not as @@ -97,13 +101,26 @@ def integrate(elf_dir, ld_path, objdir, syms_path, stubs): other = re.compile(r"^[ \t]*build/src/" + re.escape(stub) + r"\.o\(\.(?:rodata|data|bss|sdata|sbss)\);[ \t]*\n", re.M) ld = other.sub("", ld) - # NOLOAD data sections, sorted by vram (keeps ld's location counter monotonic), before /DISCARD/ + # NOLOAD data sections, sorted by vram (keeps ld's location counter monotonic), before /DISCARD/. + # Section names are namespaced by the objdir basename (e.g. .nl_libgs6_*) so MULTIPLE integrations + # (libcd then libgs6) each add their own NOLOAD sections idempotently — a global `.nl_0` guard would + # let the 2nd library's NOLOAD placement be skipped, discarding its .rdata/.bss (the OBJT3 break). + tag = os.path.basename(objdir) nol_items = sorted((b, name, S) for name, (_, _) in order for S, b in bases_by[name].items()) - nol = [f' .nl_{i} 0x{b:08X} (NOLOAD) : {{ "{objdir}/{name}"(.{S[1:]}) }}' + nol = [f' .nl_{tag}_{i} 0x{b:08X} (NOLOAD) : {{ "{objdir}/{name}"(.{S[1:]}) }}' for i, (b, name, S) in enumerate(nol_items)] - if ".nl_0 " not in ld: + if f".nl_{tag}_0 " not in ld: ld = re.sub(r"^([ \t]*/DISCARD/ :)", "\n".join(nol) + r"\n\n\1", ld, count=1, flags=re.M) + # Globally re-sort ALL .nl_* NOLOAD lines by vram across libraries. Successive integrations (libcd + # then libgs6) otherwise leave two separately-sorted groups whose vram ranges interleave, so ld's + # location counter moves backwards (a harmless warning — NOLOAD emits no bytes). Pure reordering. + nlre = re.compile(r"^[ \t]*\.nl_\w+ (0x[0-9A-Fa-f]+) \(NOLOAD\) : \{[^}]*\}$", re.M) + items = sorted((int(m.group(1), 16), m.group(0).strip()) for m in nlre.finditer(ld)) + if len(items) > 1: + ld = re.sub(r"\n{3,}", "\n\n", nlre.sub("", ld)) + block = "\n".join(" " + t for _, t in items) + ld = re.sub(r"^([ \t]*/DISCARD/ :)", block + "\n\n" + r"\1", ld, count=1, flags=re.M) open(ld_path, "w").write(ld) # 3. resolve every symbol the rewritten build ACTUALLY leaves undefined (a full link, so symbols @@ -124,7 +141,9 @@ def integrate(elf_dir, ld_path, objdir, syms_path, stubs): weaken_all = {w for ws in weaken_by.values() for w in ws} externals = {s: recovered[s] for s in weaken_all if s in recovered} missing = [] - for s in sorted(set(trial_undefined(ld_path)) - set(externals)): + siblings = [f for f in glob.glob(os.path.join(os.path.dirname(syms_path) or ".", "*_externals.ld")) + if os.path.abspath(f) != os.path.abspath(syms_path)] + for s in sorted(set(trial_undefined(ld_path, siblings)) - set(externals)): m = re.fullmatch(r"func_([0-9A-Fa-f]{8})", s) if m: externals[s] = int(m.group(1), 16)