Talking to gba cart

Discussion in 'NDS - Emulation and Homebrew' started by gudenau, Dec 30, 2011.

  1. gudenau
    OP

    gudenau Never a unique idea

    Member
    3,169
    1,188
    Jul 7, 2010
    United States
    /dev/random
    So how do I do this?
     
  2. Dirbaio

    Dirbaio GBAtemp Regular

    Member
    158
    15
    Sep 26, 2010
    Spain
    If you want to read the actual game cartridge, it's easy.
    The GBA cartridge is memory-mapped to 0x08000000 when in NDS mode. You can read directly from it. For example, here's a code to read the gamecode, so you can know which game is inserted. (I haven't tested it but it should work)

    Code:
    u32 gamecode = *((vu32*)0x080000AC);
    if(gamecode == 0x12345678) {...}
    
    This code reads 4 bytes from address 0x080000AC, which is offset 0xAC in the cartridge, which according to GBATEK, has the gamecode.

    If you want to read the saved game, I dunno if it's possible. I think I read somewhere it wasn't because the DS clock speed was too fast to talk to the EEPROM or whatever.
     
    1 person likes this.
  3. CoolAs

    CoolAs Advanced Member

    Newcomer
    75
    17
    Oct 21, 2011
    Yeah, but Pokemon DS Can read the GBA Pokemon game so you *can* read the save-game.

    Also Dirbaio, wouldn't you have to give the ARM9 rights to the card bus?
    Because you need to do that when reading a DS games eeprom, but then your trying to read something different...
     
  4. Dirbaio

    Dirbaio GBAtemp Regular

    Member
    158
    15
    Sep 26, 2010
    Spain
    Yeah, good point.
    http://nocash.emubase.de/gbatek.htm#dsmemorycontrolcartridgesandmainram

    In libnds, it would be

    Code:
    sysSetCartOwner(true);