mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-07-25 07:10:00 -06:00
savemem size for WarioWare is 16MB. fixes #1068
(also, fix some wonky code)
This commit is contained in:
@ -761,6 +761,12 @@ u8 CartCommon::SPIWrite(u8 val, u32 pos, bool last)
|
|||||||
return 0xFF;
|
return 0xFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CartCommon::SetIRQ()
|
||||||
|
{
|
||||||
|
NDS::SetIRQ(0, NDS::IRQ_CartIREQMC);
|
||||||
|
NDS::SetIRQ(1, NDS::IRQ_CartIREQMC);
|
||||||
|
}
|
||||||
|
|
||||||
void CartCommon::ReadROM(u32 addr, u32 len, u8* data, u32 offset)
|
void CartCommon::ReadROM(u32 addr, u32 len, u8* data, u32 offset)
|
||||||
{
|
{
|
||||||
if (addr >= ROMLength) return;
|
if (addr >= ROMLength) return;
|
||||||
@ -801,7 +807,14 @@ void CartRetail::LoadSave(const char* path, u32 type)
|
|||||||
SRAMPath[1023] = '\0';
|
SRAMPath[1023] = '\0';
|
||||||
|
|
||||||
if (type > 9) type = 0;
|
if (type > 9) type = 0;
|
||||||
int sramlen[] = {0, 512, 8192, 65536, 128*1024, 256*1024, 512*1024, 1024*1024, 8192*1024, 8192*1024};
|
int sramlen[] =
|
||||||
|
{
|
||||||
|
0,
|
||||||
|
512,
|
||||||
|
8192, 65536, 128*1024,
|
||||||
|
256*1024, 512*1024, 1024*1024,
|
||||||
|
8192*1024, 16384*1024
|
||||||
|
};
|
||||||
SRAMLength = sramlen[type];
|
SRAMLength = sramlen[type];
|
||||||
|
|
||||||
if (SRAMLength)
|
if (SRAMLength)
|
||||||
@ -830,8 +843,8 @@ void CartRetail::LoadSave(const char* path, u32 type)
|
|||||||
case 4: SRAMType = 2; break; // EEPROM, regular
|
case 4: SRAMType = 2; break; // EEPROM, regular
|
||||||
case 5:
|
case 5:
|
||||||
case 6:
|
case 6:
|
||||||
case 7:
|
case 7: SRAMType = 3; break; // FLASH
|
||||||
case 8: SRAMType = 3; break; // FLASH
|
case 8:
|
||||||
case 9: SRAMType = 4; break; // NAND
|
case 9: SRAMType = 4; break; // NAND
|
||||||
default: SRAMType = 0; break; // ...whatever else
|
default: SRAMType = 0; break; // ...whatever else
|
||||||
}
|
}
|
||||||
@ -1429,7 +1442,14 @@ void CartRetailBT::DoSavestate(Savestate* file)
|
|||||||
u8 CartRetailBT::SPIWrite(u8 val, u32 pos, bool last)
|
u8 CartRetailBT::SPIWrite(u8 val, u32 pos, bool last)
|
||||||
{
|
{
|
||||||
printf("POKETYPE SPI: %02X %d %d\n", val, pos, last);
|
printf("POKETYPE SPI: %02X %d %d\n", val, pos, last);
|
||||||
return val;
|
|
||||||
|
if (pos == 0)
|
||||||
|
{
|
||||||
|
// TODO do something with it??
|
||||||
|
SetIRQ();
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1844,7 +1864,7 @@ bool LoadROMCommon(u32 filelength, const char *sram, bool direct)
|
|||||||
else
|
else
|
||||||
CartID |= (0x100 - (CartROMSize >> 28)) << 8;
|
CartID |= (0x100 - (CartROMSize >> 28)) << 8;
|
||||||
|
|
||||||
if (romparams.SaveMemType == 8)
|
if (romparams.SaveMemType == 8 || romparams.SaveMemType == 9)
|
||||||
CartID |= 0x08000000; // NAND flag
|
CartID |= 0x08000000; // NAND flag
|
||||||
|
|
||||||
if (CartIsDSi)
|
if (CartIsDSi)
|
||||||
@ -1854,6 +1874,7 @@ bool LoadROMCommon(u32 filelength, const char *sram, bool direct)
|
|||||||
// TODO: this kind of ID triggers different KEY1 phase
|
// TODO: this kind of ID triggers different KEY1 phase
|
||||||
// (repeats commands a bunch of times)
|
// (repeats commands a bunch of times)
|
||||||
//CartID = 0x88017FEC;
|
//CartID = 0x88017FEC;
|
||||||
|
//CartID = 0x80007FC2; // pokémon typing adventure
|
||||||
|
|
||||||
printf("Cart ID: %08X\n", CartID);
|
printf("Cart ID: %08X\n", CartID);
|
||||||
|
|
||||||
|
@ -89,6 +89,8 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
void ReadROM(u32 addr, u32 len, u8* data, u32 offset);
|
void ReadROM(u32 addr, u32 len, u8* data, u32 offset);
|
||||||
|
|
||||||
|
void SetIRQ();
|
||||||
|
|
||||||
u8* ROM;
|
u8* ROM;
|
||||||
u32 ROMLength;
|
u32 ROMLength;
|
||||||
u32 ChipID;
|
u32 ChipID;
|
||||||
|
@ -1590,7 +1590,7 @@ ROMListEntry ROMList[] =
|
|||||||
{0x45524D43, 0x02000000, 0x00000002},
|
{0x45524D43, 0x02000000, 0x00000002},
|
||||||
{0x45524E42, 0x04000000, 0x00000003},
|
{0x45524E42, 0x04000000, 0x00000003},
|
||||||
{0x45524E43, 0x04000000, 0x00000002},
|
{0x45524E43, 0x04000000, 0x00000002},
|
||||||
{0x45524F55, 0x08000000, 0x00000008},
|
{0x45524F55, 0x08000000, 0x00000009},
|
||||||
{0x45525041, 0x02000000, 0x00000002},
|
{0x45525041, 0x02000000, 0x00000002},
|
||||||
{0x45525042, 0x00800000, 0x00000001},
|
{0x45525042, 0x00800000, 0x00000001},
|
||||||
{0x45525043, 0x04000000, 0x00000002},
|
{0x45525043, 0x04000000, 0x00000002},
|
||||||
@ -3828,7 +3828,7 @@ ROMListEntry ROMList[] =
|
|||||||
{0x4A524E54, 0x10000000, 0x00000003},
|
{0x4A524E54, 0x10000000, 0x00000003},
|
||||||
{0x4A524E59, 0x04000000, 0x00000002},
|
{0x4A524E59, 0x04000000, 0x00000002},
|
||||||
{0x4A524F42, 0x01000000, 0x00000003},
|
{0x4A524F42, 0x01000000, 0x00000003},
|
||||||
{0x4A524F55, 0x02000000, 0x00000008},
|
{0x4A524F55, 0x02000000, 0x00000009},
|
||||||
{0x4A525041, 0x02000000, 0x00000002},
|
{0x4A525041, 0x02000000, 0x00000002},
|
||||||
{0x4A525142, 0x02000000, 0x00000002},
|
{0x4A525142, 0x02000000, 0x00000002},
|
||||||
{0x4A525143, 0x04000000, 0x00000002},
|
{0x4A525143, 0x04000000, 0x00000002},
|
||||||
@ -5773,7 +5773,7 @@ ROMListEntry ROMList[] =
|
|||||||
{0x50524E41, 0x04000000, 0x00000001},
|
{0x50524E41, 0x04000000, 0x00000001},
|
||||||
{0x50524E42, 0x04000000, 0x00000003},
|
{0x50524E42, 0x04000000, 0x00000003},
|
||||||
{0x50524E43, 0x04000000, 0x00000002},
|
{0x50524E43, 0x04000000, 0x00000002},
|
||||||
{0x50524F55, 0x08000000, 0x00000008},
|
{0x50524F55, 0x08000000, 0x00000009},
|
||||||
{0x50525041, 0x02000000, 0x00000002},
|
{0x50525041, 0x02000000, 0x00000002},
|
||||||
{0x50525042, 0x00800000, 0x00000001},
|
{0x50525042, 0x00800000, 0x00000001},
|
||||||
{0x50525054, 0x02000000, 0x00000001},
|
{0x50525054, 0x02000000, 0x00000001},
|
||||||
|
Reference in New Issue
Block a user