| @@ -7,6 +7,7 @@ PFLAGS = -g | |||||
| #PFLAGS += -DDEBUG_PPU -DDEBUG_VRAM -DDEBUG_OAM | #PFLAGS += -DDEBUG_PPU -DDEBUG_VRAM -DDEBUG_OAM | ||||
| PFLAGS += -DDEBUG_APU | PFLAGS += -DDEBUG_APU | ||||
| #PFLAGS += -DE6502_DEBUG | #PFLAGS += -DE6502_DEBUG | ||||
| PFLAGS += -DE6502_ILLEGAL | |||||
| CFLAGS = $(PFLAGS) -Wall -Werror -Wshadow -Wunused -I.. | CFLAGS = $(PFLAGS) -Wall -Werror -Wshadow -Wunused -I.. | ||||
| LDFLAGS = $(PFLAGS) | LDFLAGS = $(PFLAGS) | ||||
| @@ -26,6 +26,7 @@ int nes_cart_init_mem(nes_cart* cart, void* mem, int len) { | |||||
| INES_ERR("Bad program ROM size: %#x", prg_size); | INES_ERR("Bad program ROM size: %#x", prg_size); | ||||
| status = -1; | status = -1; | ||||
| } else { | } else { | ||||
| INES_INFO("%d KB PRG ROM", prg_size / 1024); | |||||
| cart->prg_rom = ptr; | cart->prg_rom = ptr; | ||||
| cart->prg_rom_banks = hdr->prg_size_lsb; | cart->prg_rom_banks = hdr->prg_size_lsb; | ||||
| } | } | ||||
| @@ -34,6 +35,7 @@ int nes_cart_init_mem(nes_cart* cart, void* mem, int len) { | |||||
| if (0 == status) { | if (0 == status) { | ||||
| int chr_size = nes_chr_page_size * hdr->chr_size_lsb; | int chr_size = nes_chr_page_size * hdr->chr_size_lsb; | ||||
| INES_INFO("%d KB CHR ROM", chr_size / 1024); | |||||
| cart->chr_rom = ptr; | cart->chr_rom = ptr; | ||||
| cart->chr_rom_banks = hdr->chr_size_lsb * 2; | cart->chr_rom_banks = hdr->chr_size_lsb * 2; | ||||
| ptr += chr_size; | ptr += chr_size; | ||||
| @@ -45,7 +47,7 @@ int nes_cart_init_mem(nes_cart* cart, void* mem, int len) { | |||||
| INES_ERR("No mapper found for type %d", index); | INES_ERR("No mapper found for type %d", index); | ||||
| status = -1; | status = -1; | ||||
| } else if (NULL != cart->mapper->name) { | } else if (NULL != cart->mapper->name) { | ||||
| INES_INFO("Mapper: %s\n", cart->mapper->name); | |||||
| INES_INFO("Mapper: %s", cart->mapper->name); | |||||
| } | } | ||||
| } | } | ||||
| @@ -73,26 +73,19 @@ static void mmc1_update_chr(mmc1_mapper* map) { | |||||
| static void mmc1_update_prg(mmc1_mapper* map) { | static void mmc1_update_prg(mmc1_mapper* map) { | ||||
| // PRG ROM selection | // PRG ROM selection | ||||
| int mode = (map->reg_control >> 2) & 3; | int mode = (map->reg_control >> 2) & 3; | ||||
| int bank = (map->reg_prg & 0b01111); | |||||
| int bank_0 = (map->reg_prg & 0b01111); | |||||
| int bank_1 = bank_0; | |||||
| if (!(mode & 0b10)) { | if (!(mode & 0b10)) { | ||||
| bank = (bank & 0b01110); | |||||
| MAP_LOG("PRG: 32 KB %d + %d", bank, bank + 1); | |||||
| bank *= nes_prg_rom_page_size; | |||||
| map->prg_bank[0] = &map->prg_rom[bank]; | |||||
| map->prg_bank[1] = &map->prg_rom[bank + | |||||
| nes_prg_rom_page_size]; | |||||
| bank_0 = (bank_0 & 0b01110); | |||||
| bank_1 = bank_0 + 1; | |||||
| } else if (mode == 2) { | } else if (mode == 2) { | ||||
| MAP_LOG("PRG: %d + %d", 0, bank); | |||||
| bank *= nes_prg_rom_page_size; | |||||
| map->prg_bank[0] = &map->prg_rom[0]; | |||||
| map->prg_bank[1] = &map->prg_rom[bank]; | |||||
| bank_0 = 0; | |||||
| } else if (mode == 3) { | } else if (mode == 3) { | ||||
| MAP_LOG("PRG: %d + %d", bank, map->prg_rom_banks - 1); | |||||
| bank *= nes_prg_rom_page_size; | |||||
| map->prg_bank[0] = &map->prg_rom[bank]; | |||||
| map->prg_bank[1] = &map->prg_rom[(map->prg_rom_banks - 1) * | |||||
| nes_prg_rom_page_size]; | |||||
| bank_1 = (map->prg_rom_banks - 1); | |||||
| } | } | ||||
| MAP_LOG("PRG: %d + %d", bank_0, bank_1); | |||||
| map->prg_bank[0] = &map->prg_rom[bank_0 * nes_prg_rom_page_size]; | |||||
| map->prg_bank[1] = &map->prg_rom[bank_1 * nes_prg_rom_page_size]; | |||||
| } | } | ||||
| static void mmc1_reset(nes_mapper* nes_map) { | static void mmc1_reset(nes_mapper* nes_map) { | ||||