|
|
|
@@ -22,7 +22,11 @@ static int nrom_init(nes_mapper* nes_map, nes_cart* cart) { |
|
|
|
if (NULL != map) { |
|
|
|
map->prg_rom = cart->prg_rom; |
|
|
|
map->prg_rom_banks = cart->prg_rom_banks; |
|
|
|
map->chr_rom = cart->chr_rom; |
|
|
|
if (cart->chr_rom_banks <= 0) { |
|
|
|
map->chr_rom = calloc(8, 1024); |
|
|
|
} else { |
|
|
|
map->chr_rom = cart->chr_rom; |
|
|
|
} |
|
|
|
map->chr_rom_banks = cart->chr_rom_banks; |
|
|
|
map->mirror = (cart->flags & Cart_Flag_Horizontal) ? 0 : 1; |
|
|
|
} |
|
|
|
@@ -30,7 +34,13 @@ static int nrom_init(nes_mapper* nes_map, nes_cart* cart) { |
|
|
|
} |
|
|
|
|
|
|
|
static void nrom_done(nes_mapper* nes_map) { |
|
|
|
free(nes_map->data); |
|
|
|
nrom_mapper* map = (nrom_mapper*)nes_map->data; |
|
|
|
if (NULL != map) { |
|
|
|
if (map->chr_rom_banks <= 0) { |
|
|
|
free(map->chr_rom); |
|
|
|
} |
|
|
|
free(nes_map->data); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
static inline uint8_t* nrom_prg_addr(nrom_mapper* map, |
|
|
|
@@ -78,10 +88,13 @@ static uint8_t* nrom_vram_addr(nes_mapper* nes_map, |
|
|
|
return &map->vram[addr]; |
|
|
|
} |
|
|
|
|
|
|
|
static void nrom_chr_write(nes_mapper* map, |
|
|
|
static void nrom_chr_write(nes_mapper* nes_map, |
|
|
|
uint16_t addr, uint8_t val) { |
|
|
|
// ROM only. |
|
|
|
printf("CHR ROM Write: $%04x < %02x\n", addr, val); |
|
|
|
nrom_mapper* map = (nrom_mapper*)nes_map->data; |
|
|
|
if (map->chr_rom_banks <= 0) { |
|
|
|
*(nrom_chr_addr(nes_map, addr)) = val; |
|
|
|
} |
|
|
|
// printf("CHR ROM Write: $%04x < %02x\n", addr, val); |
|
|
|
} |
|
|
|
|
|
|
|
nes_mapper mapper_nrom = { |
|
|
|
|