瀏覽代碼

Force internal mapper state update on system state load

master
Nathaniel Walizer 11 月之前
父節點
當前提交
896ef80d3a
共有 3 個檔案被更改,包括 18 行新增0 行删除
  1. +2
    -0
      src/map/cnrom.c
  2. +6
    -0
      src/map/mmc1.c
  3. +10
    -0
      src/map/mmc3.c

+ 2
- 0
src/map/cnrom.c 查看文件

@@ -110,6 +110,8 @@ int cnrom_state_read(nes_mapper* nes_map, const void* data) {
memcpy(map->vram, ptr, sizeof(map->vram));
ptr += sizeof(map->vram);

cnrom_set_bank(map, map->bank);

return (ptr - data);
}



+ 6
- 0
src/map/mmc1.c 查看文件

@@ -246,8 +246,14 @@ int mmc1_state_size(const nes_mapper* nes_map) {

int mmc1_state_read(nes_mapper* nes_map, const void* data) {
mmc1_mapper* map = (mmc1_mapper*)nes_map->data;

int size = mmc1_state_size(nes_map);
memcpy(&(map->reg_shift), data, size);

mmc1_update_prg(map);
mmc1_update_chr(map);
mmc1_update_vram(map);

return size;
}



+ 10
- 0
src/map/mmc3.c 查看文件

@@ -355,8 +355,18 @@ int mmc3_state_size(const nes_mapper* nes_map) {

int mmc3_state_read(nes_mapper* nes_map, const void* data) {
mmc3_mapper* map = (mmc3_mapper*)nes_map->data;

uint8_t old_bank_select = map->bank_select;

int size = mmc3_state_size(nes_map);
memcpy(map->r, data, size);

uint8_t new_bank_select = map->bank_select;
map->bank_select = old_bank_select;

mmc3_update_rom_mode(map, new_bank_select);
mmc3_update_vram(map);

return size;
}



Loading…
取消
儲存