Repository navigation
N64 PS1 Comparison
The ports share strong source/data lineage, but they do not share executable addresses, overlay placement, file containers, patch sites, free-memory claims, or checksum behavior.
For how to turn these transfer rules into an actual phased port once N64 1.0 is finished, see N64 -> PS1 port planning and strategy.
| Concept | N64 USA Rev. 0 | PS1 SLUS_004.76
|
Transfer status |
|---|---|---|---|
| Executable base | Cartridge segments/overlays; main overlay base 0x802ECE30
|
Payload 0x80010000, overlay base near 0x80130FF8
|
Concept only |
| Stage selector |
0x8000D0B8, index 0x800C11E0
|
0x8002A688, index 0x800D8150
|
Same label order; separate activation |
| Ordinary pickups | 84 records, manager 0x80038ACC
|
84 records, manager 0x8005499C
|
Record grammar strongly shared |
| Pickup record |
0x30 bytes; identity +0x10..+0x2B
|
Same structure | Field semantics transferable; addresses are not |
| Inventory |
0x800A600C, insertion 0x80075448
|
0x800ACE28, insertion 0x8004C0B0
|
Ten-word design shared |
| Enemy chain | 71500 -> 719F0 -> 71B20 -> 2FCDC |
3955C -> 39A3C -> 39B50 -> 41BF0 |
Architecture shared |
| Enemy streams | Global table region 0x800B...
|
Overlay/start region 0x80010000...
|
Grammar/ordering shared; bytes endian/platform-specific |
| Type 1 descriptor |
0x22AD8, file 0x89
|
0x22AD8, file 0x92 MONK2
|
Descriptor offset conserved, resource ID differs |
| Type 9 descriptor |
0x2C084, file 0x25
|
0x2C084, file 0x28 HULK
|
Same caveat |
| Type A descriptor |
0x20FC8, file 0x20
|
0x20FC8, file 0x20 FAST
|
Strong shared lineage |
| Text |
0x80073E74, width 0x80074084
|
0x8004ACD4, width 0x8004AEEC
|
Similar service, different implementation |
| Save | Native cartridge save paths; N64 research fields differ |
0x900 memory-card image, 0x78 records, XOR checksum |
Platform-specific |
| Output checksum | N64 header CRC1/CRC2 | PS1 file/disc layout and save checksum | Never reuse |
A particularly strong cross-port data match exists in the Test Scorpion/type-0x12 synthetic-control system:
| Data | PS1 | N64 |
|---|---|---|
| per-type AI/control table | 0x80010FC8 |
0x800AF340 |
type-0x12 list |
0x800114E8 |
0x800AF860 |
first type-0x12 condition |
0x80011554 |
0x800AF8CC |
| common sentinel | 0x80012B08 |
0x800B0E80 |
The descriptor bytes match after endian conversion. This is direct shared game-data lineage, not merely similar high-level behavior. It still does not make the PS1 and N64 evaluator code addresses interchangeable.
- The
0x30pickup grammar, 84-location boundary, item-ID family, ordinary-enemy stream concept, and several fighter descriptor offsets are common lineage. - PS1 can use N64 discoveries as search signatures and semantic hypotheses.
- Each port still requires its own guarded patch sites, resource residency proof, runtime allocation plan, and validation.
- An N64 virtual address cannot be transplanted to PS1.
- N64 stage-local resource slot numbers are not PS1 global file IDs.
- A matching descriptor offset does not prove identical surrounding binary data.
- Apparent space between PS1 overlay end and stack is not automatically free.
- N64 CRC logic, KSEG alias rules, and MIPS instruction patches do not define PS1 disc/save handling.
The bounded order is: guarded selector activation, runtime overlay/memory observation, safe eight-stage mapping, one same-stage Fire enemy substitution, one stage pickup/resource mapping, then a port estimate. Jumping directly to a full randomizer would conflate platform and gameplay unknowns.
MKMSZR current documentation · Wiki source: wiki/ · Evidence/archive: ChatGPT Library MKMSZR Research · Product source: smeagol44/MKMSZ-Randomizer
Orientation / Project
- Home
- Contributor start here
- Project status
- 1.0 requirements and roadmap
- Runtime validation status
- Architecture overview
- Research methodology and evidence
- Glossary
Core Technical Reference
- Core runtime and native payload
- Memory and allocation map
- Function registry
- Address and patch-site registry
- Data structures and encodings
- Resource and overlay system
- Address quick reference
- Testing and CI
Randomizer / Product Systems
- Stage flow and selector
- Pickups and stage-local randomization
- Global item materialization and solvability
- Persistence, inventory and lifecycle
- Lifecycle static closure / unbuilt v05
- XP and progression
- Native HUD and UI
- Presentation and branding
- Audio system
- Palette and recoloring
- Web patcher and product
Stage Reference
Gameplay / Enemy / Donor Research
- Enemy randomization
- Player actions and special moves
- MKT compatibility overview
- MKT adapter primitives
- MKT fighter asset translation
- Sub-Zero ↔ Sektor animation mapping
- Sektor takeover proof history
- Toasty audio research
- Toasty visual research
- PS1 research
- N64–PS1 comparison
- N64 -> PS1 port planning and strategy
History / Failures / Superseded Material