Add support for Megaman X3 Zero Project

Issue #1 resolved
Coto repo owner created an issue

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)

  1. Coto 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!

    Coto88 / snemulds / commit / 17676f10f70f — Bitbucket

  2. Log in to comment