Generate ALttP (USA) port from ROM via snesrecomp

- Recompiled LoROM 1MB USA dump (crc32=777aac2f) with snesrecomp v2 (ef0b3ff7)
- 4 analysis roots emitted to src/gen (bank00 + dispatch/module/stubs)
- ALttP title adapter hooks left in src/game_rtl.c for integration
This commit is contained in:
endergebnis-agent committed 2026-10-30 11:38:29 +00:00
1 parent 0cd0e5555c
commit 62c92e2b45
8 files changed
+1776

No files matched your search

+4
View File
@@ -8,4 +8,8 @@ tier_down_stubs
# Reset vector $8000, native NMI $80c9 (from the cartridge header).
# >>> BEGIN symbols.toml (generated — do not edit)
symbol 008000 I_RESET
force_lle 008000
symbol 0080c9 I_NMI
force_lle 0080c9
# <<< END symbols.toml
View File
Whitespace-only changes.
+36
View File
@@ -0,0 +1,36 @@
{
"analysis_input_digest": "1700f681ffb0ccea26a5e3dc7bbbc4fc633c06c567c077ca1eff3b1cd33f8a91",
"bank_outputs": {
"00": [
"bank00_v2.c"
]
},
"bank_symbols": {
"00": [
"I_IRQ"
]
},
"banks": {
"00": "999b5fac0f986e8ee1e55aae8b0aa8ec3160ef735cf41e063c68cda5d5ab5920"
},
"config_digest": "eb0b2df3e65c9a852e41fed1ced0eb5828510c6d60239bfce5d015794f63579c",
"format_version": 5,
"generator_digest": "d506070caed26ffc0b0cb275ea5f2c38e2570b864896bf3bfb711de89d63e4ef",
"module": {
"id": "main",
"prefix": ""
},
"outputs": {
"bank00_v2.c": "8c80d6c214ddf7229ffd8dc259908675f85a177190c6dc0204dd26d4ad8241f4",
"dispatch_v2.c": "e1993bb58129574e5fc3eb225a30708ac0883aff87a97c378d2db942269d6ca8",
"module_v2.c": "95a59b7f03333ab70ab3b8644f28bf76b0adbaa1c5d3b7fdc9ed2e5e60784e5c",
"program_manifest.json": "613ba97f57adfef1b31a722cde80b1f40f6c8a74b5b5a6d21611b09b953083c6",
"unresolved_stubs_v2.c": "47085f485c3e8d488d105e0aa641f1300af226efabf3dd2147b09c137edb49b7"
},
"stats": {
"banks": 1,
"emitted_variants": 4,
"lle_variants": 0,
"roots": 4
}
}
+1590
View File
File diff suppressed because it is too large. Load diff
+21
View File
@@ -0,0 +1,21 @@
/* Auto-generated from the authoritative LLE/AOT manifest. */
#include "cpu_state.h"
RecompReturn I_IRQ_M0X0(CpuState *cpu);
RecompReturn I_IRQ_M0X1(CpuState *cpu);
RecompReturn I_IRQ_M1X0(CpuState *cpu);
RecompReturn I_IRQ_M1X1(CpuState *cpu);
const DispatchEntry g_dispatch_table[] = {
{ 0x0082D8u, { I_IRQ_M0X0, I_IRQ_M0X1, I_IRQ_M1X0, I_IRQ_M1X1 }, 0 }, /* I_IRQ */
};
const unsigned g_dispatch_table_count =
(unsigned)(sizeof(g_dispatch_table) / sizeof(g_dispatch_table[0]));
const RamRoutineGuard g_ram_routine_guards[] = {
{ 0xFFFFFFFFu, 0u, 0u },
};
const unsigned g_ram_routine_guard_count =
(unsigned)(sizeof(g_ram_routine_guards) / sizeof(g_ram_routine_guards[0]));
+39
View File
@@ -0,0 +1,39 @@
/* Auto-generated by snesrecomp v2 program_emit. Do NOT hand-edit.
*
* Program module `main`.
* Registers this generated tree's dispatch/guard tables with the
* runtime module registry (runner/src/program_module.h) so a host
* can select it by id. */
#include <string.h>
#include "cpu_state.h"
#include "program_module.h"
extern const DispatchEntry g_dispatch_table[];
extern const unsigned g_dispatch_table_count;
extern const RamRoutineGuard g_ram_routine_guards[];
extern const unsigned g_ram_routine_guard_count;
SnesProgramModule g_program_module;
SNES_PROGRAM_MODULE_CONSTRUCTOR(snes_program_module_register_generated) {
g_program_module.id = "main";
g_program_module.symbol_prefix = "";
g_program_module.program_digest = "613ba97f57adfef1b31a722cde80b1f40f6c8a74b5b5a6d21611b09b953083c6";
g_program_module.build_digest = "b7cae10b1c212cb9fd725d1ddfa3c61092a2ff25d71a96363c8a71bd72df64f8";
g_program_module.dispatch = g_dispatch_table;
g_program_module.dispatch_count = g_dispatch_table_count;
g_program_module.guards = g_ram_routine_guards;
g_program_module.guard_count = g_ram_routine_guard_count;
g_program_module.rom_size = 1048576u;
{
static const uint8_t digest[32] = {
0x66, 0x87, 0x1d, 0x66, 0xbe, 0x19, 0xad, 0x2c,
0x34, 0xc9, 0x27, 0xd6, 0xb1, 0x4c, 0xd8, 0xeb,
0x6f, 0xc3, 0x18, 0x19, 0x65, 0xb6, 0xe5, 0x17,
0xcb, 0x36, 0x1f, 0x73, 0x16, 0x00, 0x9c, 0xfb,
};
memcpy(g_program_module.rom_sha256, digest, sizeof(digest));
}
snes_program_module_register(&g_program_module);
}
+85
View File
@@ -0,0 +1,85 @@
{
"exit_mode_sets": {},
"exit_modes": {},
"format_version": 3,
"nodes": {
"0082D8:M0X0": {
"demands": [],
"digest": "native",
"disposition": "aot_eligible",
"instruction_count": 49,
"key": {
"m": 0,
"pc24": 33496,
"x": 0
},
"max_pc24": 33586,
"min_pc24": 33496,
"reasons": []
},
"0082D8:M0X1": {
"demands": [],
"digest": "native",
"disposition": "aot_eligible",
"instruction_count": 49,
"key": {
"m": 0,
"pc24": 33496,
"x": 1
},
"max_pc24": 33586,
"min_pc24": 33496,
"reasons": []
},
"0082D8:M1X0": {
"demands": [],
"digest": "native",
"disposition": "aot_eligible",
"instruction_count": 49,
"key": {
"m": 1,
"pc24": 33496,
"x": 0
},
"max_pc24": 33586,
"min_pc24": 33496,
"reasons": []
},
"0082D8:M1X1": {
"demands": [],
"digest": "native",
"disposition": "aot_eligible",
"instruction_count": 49,
"key": {
"m": 1,
"pc24": 33496,
"x": 1
},
"max_pc24": 33586,
"min_pc24": 33496,
"reasons": []
}
},
"roots": [
{
"m": 0,
"pc24": 33496,
"x": 0
},
{
"m": 0,
"pc24": 33496,
"x": 1
},
{
"m": 1,
"pc24": 33496,
"x": 0
},
{
"m": 1,
"pc24": 33496,
"x": 1
}
]
}
+1
View File
@@ -0,0 +1 @@
/* Manifest-driven generation: unresolved execution remains LLE. */