| @@ -110,6 +110,8 @@ int cnrom_state_read(nes_mapper* nes_map, const void* data) { | |||||
| memcpy(map->vram, ptr, sizeof(map->vram)); | memcpy(map->vram, ptr, sizeof(map->vram)); | ||||
| ptr += sizeof(map->vram); | ptr += sizeof(map->vram); | ||||
| cnrom_set_bank(map, map->bank); | |||||
| return (ptr - data); | return (ptr - data); | ||||
| } | } | ||||
| @@ -246,8 +246,14 @@ int mmc1_state_size(const nes_mapper* nes_map) { | |||||
| int mmc1_state_read(nes_mapper* nes_map, const void* data) { | int mmc1_state_read(nes_mapper* nes_map, const void* data) { | ||||
| mmc1_mapper* map = (mmc1_mapper*)nes_map->data; | mmc1_mapper* map = (mmc1_mapper*)nes_map->data; | ||||
| int size = mmc1_state_size(nes_map); | int size = mmc1_state_size(nes_map); | ||||
| memcpy(&(map->reg_shift), data, size); | memcpy(&(map->reg_shift), data, size); | ||||
| mmc1_update_prg(map); | |||||
| mmc1_update_chr(map); | |||||
| mmc1_update_vram(map); | |||||
| return size; | return size; | ||||
| } | } | ||||
| @@ -355,8 +355,18 @@ int mmc3_state_size(const nes_mapper* nes_map) { | |||||
| int mmc3_state_read(nes_mapper* nes_map, const void* data) { | int mmc3_state_read(nes_mapper* nes_map, const void* data) { | ||||
| mmc3_mapper* map = (mmc3_mapper*)nes_map->data; | mmc3_mapper* map = (mmc3_mapper*)nes_map->data; | ||||
| uint8_t old_bank_select = map->bank_select; | |||||
| int size = mmc3_state_size(nes_map); | int size = mmc3_state_size(nes_map); | ||||
| memcpy(map->r, data, size); | 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; | return size; | ||||
| } | } | ||||