Just some flash fixes
This commit is contained in:
@@ -24,7 +24,7 @@ Mem::Mem() {
|
|||||||
void Mem::Reset() {
|
void Mem::Reset() {
|
||||||
memset(rom.cart, 0, CART_SIZE);
|
memset(rom.cart, 0, CART_SIZE);
|
||||||
flash.Reset();
|
flash.Reset();
|
||||||
if(sram.is_open()) {
|
if(sram.is_mapped()) {
|
||||||
std::error_code error;
|
std::error_code error;
|
||||||
sram.sync(error);
|
sram.sync(error);
|
||||||
sram.unmap();
|
sram.unmap();
|
||||||
@@ -533,7 +533,7 @@ u32 Mem::BackupRead32(u32 addr) {
|
|||||||
Util::warn("Accessing cartridge backup type SAVE_EEPROM, returning 0 for word read");
|
Util::warn("Accessing cartridge backup type SAVE_EEPROM, returning 0 for word read");
|
||||||
return 0;
|
return 0;
|
||||||
case SAVE_FLASH_1m:
|
case SAVE_FLASH_1m:
|
||||||
if(flash.flash.is_open()) {
|
if(flash.flash.is_mapped()) {
|
||||||
return flash.Read32(addr);
|
return flash.Read32(addr);
|
||||||
} else {
|
} else {
|
||||||
Util::panic("Invalid backup Read32 if save data is not initialized");
|
Util::panic("Invalid backup Read32 if save data is not initialized");
|
||||||
@@ -552,7 +552,7 @@ void Mem::BackupWrite32(u32 addr, u32 val) {
|
|||||||
case SAVE_EEPROM_4k: case SAVE_EEPROM_16k:
|
case SAVE_EEPROM_4k: case SAVE_EEPROM_16k:
|
||||||
Util::panic("Accessing cartridge with save type SAVE_EEPROM in write word");
|
Util::panic("Accessing cartridge with save type SAVE_EEPROM in write word");
|
||||||
case SAVE_FLASH_1m:
|
case SAVE_FLASH_1m:
|
||||||
if(flash.flash.is_open()) {
|
if(flash.flash.is_mapped()) {
|
||||||
flash.Write32(addr, val);
|
flash.Write32(addr, val);
|
||||||
} else {
|
} else {
|
||||||
Util::panic("Invalid backup Write32 if save data is not initialized");
|
Util::panic("Invalid backup Write32 if save data is not initialized");
|
||||||
@@ -572,13 +572,13 @@ u8 Mem::BackupRead8(u32 addr) {
|
|||||||
Util::warn("Accessing cartridge backup type SAVE_EEPROM, returning 0 for word read");
|
Util::warn("Accessing cartridge backup type SAVE_EEPROM, returning 0 for word read");
|
||||||
return 0;
|
return 0;
|
||||||
case SAVE_FLASH_1m:
|
case SAVE_FLASH_1m:
|
||||||
if(flash.flash.is_open()) {
|
if(flash.flash.is_mapped()) {
|
||||||
return flash.Read8(addr);
|
return flash.Read8(addr);
|
||||||
} else {
|
} else {
|
||||||
Util::panic("Invalid backup Read8 if save data is not initialized");
|
Util::panic("Invalid backup Read8 if save data is not initialized");
|
||||||
}
|
}
|
||||||
case SAVE_SRAM_256k:
|
case SAVE_SRAM_256k:
|
||||||
if(sram.is_open()) {
|
if(sram.is_mapped()) {
|
||||||
return sram[addr & 0x8000];
|
return sram[addr & 0x8000];
|
||||||
} else {
|
} else {
|
||||||
Util::panic("Invalid backup Read8 if save data is not initialized");
|
Util::panic("Invalid backup Read8 if save data is not initialized");
|
||||||
@@ -595,14 +595,14 @@ void Mem::BackupWrite8(u32 addr, u8 val) {
|
|||||||
case SAVE_EEPROM_4k: case SAVE_EEPROM_16k:
|
case SAVE_EEPROM_4k: case SAVE_EEPROM_16k:
|
||||||
Util::panic("Accessing cartridge with save type SAVE_EEPROM in write word");
|
Util::panic("Accessing cartridge with save type SAVE_EEPROM in write word");
|
||||||
case SAVE_FLASH_1m:
|
case SAVE_FLASH_1m:
|
||||||
if(flash.flash.is_open()) {
|
if(flash.flash.is_mapped()) {
|
||||||
flash.Write8(addr, val);
|
flash.Write8(addr, val);
|
||||||
} else {
|
} else {
|
||||||
Util::panic("Invalid backup Write8 if save data is not initialized");
|
Util::panic("Invalid backup Write8 if save data is not initialized");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SAVE_SRAM_256k:
|
case SAVE_SRAM_256k:
|
||||||
if(sram.is_open()) {
|
if(sram.is_mapped()) {
|
||||||
sram[addr & 0x8000] = val;
|
sram[addr & 0x8000] = val;
|
||||||
} else {
|
} else {
|
||||||
Util::panic("Invalid backup Write8 if save data is not initialized");
|
Util::panic("Invalid backup Write8 if save data is not initialized");
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ namespace n64 {
|
|||||||
constexpr auto FLASH_SIZE = 1_mb;
|
constexpr auto FLASH_SIZE = 1_mb;
|
||||||
|
|
||||||
void Flash::Reset() {
|
void Flash::Reset() {
|
||||||
|
state = Idle;
|
||||||
if (flash.is_mapped()) {
|
if (flash.is_mapped()) {
|
||||||
std::error_code error;
|
std::error_code error;
|
||||||
flash.sync(error);
|
flash.sync(error);
|
||||||
@@ -77,16 +78,16 @@ void Flash::CommandSetEraseOffs(u32 val) {
|
|||||||
|
|
||||||
void Flash::CommandErase() {
|
void Flash::CommandErase() {
|
||||||
state = FlashState::Erase;
|
state = FlashState::Erase;
|
||||||
status = 0x11118004F0000000;
|
status = 0x1111800800C20000LL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Flash::CommandSetWriteOffs(u32 val) {
|
void Flash::CommandSetWriteOffs(u32 val) {
|
||||||
writeOffs = (val & 0xffff) << 7;
|
writeOffs = (val & 0xffff) << 7;
|
||||||
|
status = 0x1111800400C20000LL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Flash::CommandWrite() {
|
void Flash::CommandWrite() {
|
||||||
state = FlashState::Write;
|
state = FlashState::Write;
|
||||||
status = 0x1111800400C20000LL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Flash::CommandRead() {
|
void Flash::CommandRead() {
|
||||||
|
|||||||
Reference in New Issue
Block a user