MBC3: Update mapper to check if RTC is present before running RTC functions
This commit is contained in:
parent
03184dd513
commit
82e723a528
|
@ -389,7 +389,7 @@ void mapperMBC3ROM(uint16_t address, uint8_t value)
|
||||||
gbDataMBC3.mapperRAMBank = value;
|
gbDataMBC3.mapperRAMBank = value;
|
||||||
gbDataMBC3.mapperRAMAddress = tmpAddress;
|
gbDataMBC3.mapperRAMAddress = tmpAddress;
|
||||||
} else {
|
} else {
|
||||||
if (gbDataMBC3.mapperRAMEnable) {
|
if (gbRTCPresent && gbDataMBC3.mapperRAMEnable) {
|
||||||
gbDataMBC3.mapperRAMBank = -1;
|
gbDataMBC3.mapperRAMBank = -1;
|
||||||
|
|
||||||
gbDataMBC3.mapperClockRegister = value;
|
gbDataMBC3.mapperClockRegister = value;
|
||||||
|
@ -397,6 +397,7 @@ void mapperMBC3ROM(uint16_t address, uint8_t value)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0x6000: // clock latch
|
case 0x6000: // clock latch
|
||||||
|
if (gbRTCPresent) {
|
||||||
if (gbDataMBC3.mapperClockLatch == 0 && value == 1) {
|
if (gbDataMBC3.mapperClockLatch == 0 && value == 1) {
|
||||||
memoryUpdateMBC3Clock();
|
memoryUpdateMBC3Clock();
|
||||||
gbDataMBC3.mapperLSeconds = gbDataMBC3.mapperSeconds;
|
gbDataMBC3.mapperLSeconds = gbDataMBC3.mapperSeconds;
|
||||||
|
@ -407,6 +408,7 @@ void mapperMBC3ROM(uint16_t address, uint8_t value)
|
||||||
}
|
}
|
||||||
if (value == 0x00 || value == 0x01)
|
if (value == 0x00 || value == 0x01)
|
||||||
gbDataMBC3.mapperClockLatch = value;
|
gbDataMBC3.mapperClockLatch = value;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -415,12 +417,12 @@ void mapperMBC3ROM(uint16_t address, uint8_t value)
|
||||||
void mapperMBC3RAM(uint16_t address, uint8_t value)
|
void mapperMBC3RAM(uint16_t address, uint8_t value)
|
||||||
{
|
{
|
||||||
if (gbDataMBC3.mapperRAMEnable) {
|
if (gbDataMBC3.mapperRAMEnable) {
|
||||||
if (gbDataMBC3.mapperRAMBank != -1) {
|
if (gbDataMBC3.mapperRAMBank >= 0) {
|
||||||
if (gbRamSize) {
|
if (gbRamSize) {
|
||||||
gbMemoryMap[address >> 12][address & 0x0fff] = value;
|
gbMemoryMap[address >> 12][address & 0x0fff] = value;
|
||||||
systemSaveUpdateCounter = SYSTEM_SAVE_UPDATED;
|
systemSaveUpdateCounter = SYSTEM_SAVE_UPDATED;
|
||||||
}
|
}
|
||||||
} else {
|
} else if (gbRTCPresent) {
|
||||||
time(&gbDataMBC3.mapperLastTime);
|
time(&gbDataMBC3.mapperLastTime);
|
||||||
switch (gbDataMBC3.mapperClockRegister) {
|
switch (gbDataMBC3.mapperClockRegister) {
|
||||||
case 0x08:
|
case 0x08:
|
||||||
|
@ -450,10 +452,9 @@ void mapperMBC3RAM(uint16_t address, uint8_t value)
|
||||||
uint8_t mapperMBC3ReadRAM(uint16_t address)
|
uint8_t mapperMBC3ReadRAM(uint16_t address)
|
||||||
{
|
{
|
||||||
if (gbDataMBC3.mapperRAMEnable) {
|
if (gbDataMBC3.mapperRAMEnable) {
|
||||||
if (gbDataMBC3.mapperRAMBank != -1) {
|
if (gbDataMBC3.mapperRAMBank >= 0) {
|
||||||
return gbMemoryMap[address >> 12][address & 0x0fff];
|
return gbMemoryMap[address >> 12][address & 0x0fff];
|
||||||
}
|
} else if (gbRTCPresent) {
|
||||||
|
|
||||||
switch (gbDataMBC3.mapperClockRegister) {
|
switch (gbDataMBC3.mapperClockRegister) {
|
||||||
case 0x08:
|
case 0x08:
|
||||||
return gbDataMBC3.mapperLSeconds;
|
return gbDataMBC3.mapperLSeconds;
|
||||||
|
@ -471,6 +472,7 @@ uint8_t mapperMBC3ReadRAM(uint16_t address)
|
||||||
return gbDataMBC3.mapperLControl;
|
return gbDataMBC3.mapperLControl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!genericflashcardEnable)
|
if (!genericflashcardEnable)
|
||||||
return 0xff;
|
return 0xff;
|
||||||
|
|
Loading…
Reference in New Issue