Only use the lower half of bramCheck.

Was reading 0x0104 and 0x0704 from a Japanese RAM cart,
when B2 /MRES and B27 /VRES were not connected.
This commit is contained in:
jiyunomegami 2020-07-03 23:48:16 +09:00
parent c9938b177f
commit 9a77da1e66

View File

@ -575,8 +575,11 @@ void getCartInfo_MD() {
// 4 = 128KB (2045 Blocks) Sega CD Backup RAM Cart // 4 = 128KB (2045 Blocks) Sega CD Backup RAM Cart
// 6 = 512KB (8189 Blocks) Ultra CD Backup RAM Cart (Aftermarket) // 6 = 512KB (8189 Blocks) Ultra CD Backup RAM Cart (Aftermarket)
word bramCheck = readWord_MD(0x00); word bramCheck = readWord_MD(0x00);
if (((bramCheck == 0x0004) && (chksum == 0x0004)) || ((bramCheck == 0x0006) && (chksum == 0x0006))) if ( (((bramCheck & 0xFF) == 0x04) && ((chksum & 0xFF) == 0x04))
bramSize = pow(2, bramCheck) * 0x2000; || (((bramCheck & 0xFF) == 0x06) && ((chksum & 0xFF) == 0x06))) {
unsigned long p = 1 << (bramCheck & 0xFF);
bramSize = p * 0x2000L;
}
if (saveType != 4) { // NOT SERIAL EEPROM if (saveType != 4) { // NOT SERIAL EEPROM
// Check if cart has sram // Check if cart has sram
saveType = 0; saveType = 0;
@ -720,8 +723,10 @@ void getCartInfo_MD() {
print_Msg_PaddedHexByte(bramCheck >> 8); print_Msg_PaddedHexByte(bramCheck >> 8);
print_Msg_PaddedHexByte(bramCheck & 0x00ff); print_Msg_PaddedHexByte(bramCheck & 0x00ff);
println_Msg(F("")); println_Msg(F(""));
print_Msg(F("bramSize(KB): ")); if (bramSize > 0) {
println_Msg(bramSize>>10); print_Msg(F("bramSize(KB): "));
println_Msg(bramSize >> 10);
}
print_Msg(F("Size: ")); print_Msg(F("Size: "));
print_Msg(cartSize * 8 / 1024 / 1024 ); print_Msg(cartSize * 8 / 1024 / 1024 );
println_Msg(F(" MBit")); println_Msg(F(" MBit"));