mirror of
https://github.com/ekeeke/Genesis-Plus-GX.git
synced 2025-01-14 12:19:06 +01:00
[SCD] fixed internal backup RAM formatting when switching regions
This commit is contained in:
parent
ac33d5ee34
commit
a973fd587e
@ -108,12 +108,17 @@ void slot_autoload(int slot, int device)
|
|||||||
/* update CRC */
|
/* update CRC */
|
||||||
brm_crc[0] = crc32(0, scd.bram, 0x2000);
|
brm_crc[0] = crc32(0, scd.bram, 0x2000);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* force internal backup RAM format (does not use previous region backup RAM) */
|
||||||
|
scd.bram[0x1fff] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* check if internal backup RAM is correctly formatted */
|
/* check if internal backup RAM is correctly formatted */
|
||||||
if (memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20))
|
if (memcmp(scd.bram + 0x2000 - 0x20, brm_format + 0x20, 0x20))
|
||||||
{
|
{
|
||||||
/* clear internal backup RAM */
|
/* clear internal backup RAM */
|
||||||
memset(scd.bram, 0x00, 0x200);
|
memset(scd.bram, 0x00, 0x2000 - 0x40);
|
||||||
|
|
||||||
/* internal Backup RAM size fields */
|
/* internal Backup RAM size fields */
|
||||||
brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00;
|
brm_format[0x10] = brm_format[0x12] = brm_format[0x14] = brm_format[0x16] = 0x00;
|
||||||
@ -121,6 +126,9 @@ void slot_autoload(int slot, int device)
|
|||||||
|
|
||||||
/* format internal backup RAM */
|
/* format internal backup RAM */
|
||||||
memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40);
|
memcpy(scd.bram + 0x2000 - 0x40, brm_format, 0x40);
|
||||||
|
|
||||||
|
/* clear CRC to force file saving (in case previous region backup RAM was also formatted) */
|
||||||
|
brm_crc[0] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* automatically load cartridge backup RAM (if enabled) */
|
/* automatically load cartridge backup RAM (if enabled) */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user