Add support for Megaman X3 Zero Project
Megaman X3 is an infinitely awesome game. But MMX3 Zero Project is like a sequel, or the X4 of SNES.
Since the game’s a hackrom, it relies on a custom ROM layout, and sadly it exceeds the NDS EWRAM memory (3M is the limit, and that game is 4M). So that means it’ll have to be ran from the paging method, which is somewhat flawed on SnemulDS and requires fixing.
Desktop side:
Tasks to do to implement a new SnemulDS IO Mapper:
IO addressing must be restricted to MAP_RELOAD→ Done
NintendoDS side:
- Merge SnemulDS IO mapper from VS2012 Snes9X into SnemulDS codebase
- Both Data Bank Register and Program Bank Register missing functionality must be implemented in the SNES CPU Fetcher (which is, in the SnezziDS ASM Opcodes layer implementation)
- SNES CPU must reload both DBR and PBR pages at it’s specified SNES CPU Opcode independently (which doesn’t happen currently in SnemulDS codebase)
- SNES programs must run entirely on the SnemulDS IO Mapper streaming code, and remove hardcoded ROM section copied to EWRAM. And the result must be equal or higher than current SNES games booting from either hardcoded ROM section or SnemulDS IO Mapper streaming code.
- -
- -
- -
- SnemulDS Intercepting (lowest level), 4 ) - SnezziDS ARM Core (see https://bitbucket.org/Coto88/snemulds/src/master/research.md) layer, update calls: ReadData8, ReadData16, WriteData8, WriteData16 so these must forcefully use TestReadIO, ReadIO8; So a block of memory can be reloaded through ReadIO8, according to current PBR or DBR and current D index and PC index. Then all these calls, example, ReadIO8 will resort by (ldrb r1,[SnesPC],
#1) in the default case.
Source:
Romhacking.net - Hacks - Mega Man X3 - Zero Project V4.4 (Base Mod & Source)
Comments (11)
-
reporter -
reporter Made progress; Fix APU issues (2/2):
https://bitbucket.org/Coto88/snemulds/commits/f396d8be451eee8e6fe171aeae9c69d766370397
-
reporter important improvement:
Move critical SNES IO to Shared WorkRAM which is faster, and required for the upcoming commit
https://bitbucket.org/Coto88/snemulds/commits/91a829cdc67cbd1be67c10704d0336cb9ab78b51
-
reporter - edited description
-
reporter - edited description
-
reporter - edited description
-
reporter -DSP core is C now
-CX4 core reads from an optimized buffered file stream as opposed to a single big page of memory (which NintendoDS doesn't have)
-Rewrite SnemulDS IO Mapper so SNES IO Addressing can either read from optimized buffered stream or the usual SNES IO map!Todo:
Merge SnemulDS IO mapper from VS2012 Snes9X into SnemulDS codebaseCoto88 / snes9x-vs2017-debugger / commit / 00e5ae005f4b — Bitbucket
-
reporter - edited description
-
reporter port snemulds io mapper to 'originalmapper' snes9x branch
https://bitbucket.org/Coto88/snes9x-vs2017-debugger/commits/280dce89000598e4f5d6ec8529bda887ae116fab
as expected, MMX3 doesn’t boot. So we may be closer to fixing the whole issue.
-
reporter SnemulDS:
- Implemented relative CX4 reads to bulk reads & LoROM banks re-used if inside HiROM bank from bulk reads (which means CX4 can page large ROM even if outside SnemulDS max ROM memory mapped, albeit slower at first).
- re-arrange memory after Snes ROM address to match SnemulDS
Snes addressing WORKING again in SnemulDS:
- HiROM is broken (because we need LoROM on 4M+ implemented first to port it)
- MMX3 Zero Project both addressing as direct mem_xxxx read writes and relative CX4 reads from bulk reads are fixed in Snes9X
- 2.7M ROM loading in SnemulDS (MMX3 Zero Project booting) but ...
Todo:
NTR paging from outside memory through snemulds io mapper is not implemented yet....When this last todo is done... we'll have MMX3 Zero Project working on SnemulDS on NTR, but it’s unlikely!
-
reporter - changed status to resolved
Megaman X3 Zero Project is added on TWL systems only:
https://bitbucket.org/Coto88/snemulds/commits/71d8dcf62cfbb9ff7c8ccf3f40164a598720dff8
On NTR you can still play the vanilla Megaman X3 fine.
- Log in to comment
Made progress; Fix APU issues (1/2):
https://bitbucket.org/Coto88/snemulds/commits/d5ea1addb78862bc2c6f28065964bc29d08e15a4