X Tutup
Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Test 78

This program attempts to identify which variant of iNES Mapper 78 it's running on. Mapper 78 is used by two Famicom games by IREM, which use discrete logic boards that are identical except for their nametable mirroring behavior.

7654 3210
CCCC MPPP
|||| |+++- Select 16 KiB PRG ROM bank at CPU $8000
|||| |     ($C000 window is fixed to the last bank)
|||| +---- Mirroring (see below)
++++------ Select 8 KiB CHR ROM bank at PPU $0000

The NES 2.0 submapper distinguishes the two variants. 78.1 is Uchuusen Cosmo Carrier, with switchable 1-screen mirroring.

  • Bit 3 false (0): Use VRAM $000-$3FF for all nametables
  • Bit 3 true (1): Use VRAM $400-$7FF for all nametables

78.3 is Holy Diver, with switchable horizontal or vertical mirroring.

  • Bit 3 false (0): VRAM A10 = PA11, or horizontal mirroring
  • Bit 3 true (1): VRAM A10 = PA10, or vertical mirroring

The sense of bit 3 of 78.3 is 0=PA11, 1=PA10. This matches that of bit 0 of byte 6 of the iNES header as well as Disk System mirroring. It's inverted compared to most other mappers (FDS, MMC1-4, VRC2/4/7, FME-7, Action 52).

Test procedure

After performing these steps:

  1. Clear mapper bit 3 by writing $00
  2. Write 1 to $2C00 then 0 to $2000
  3. Set mapper bit 3 by writing $08
  4. Write 0 to $2000 then 1 to $2C00
  5. Clear mapper bit 3 by writing $00
  6. Read $2000, $2400, $2800, $2C00
  7. Set mapper bit 3 by writing $08
  8. Read $2000, $2400, $2800, $2C00

These results are likely:

  • 00110011: Fixed horizontal mirroring
  • 01010101: Fixed vertical mirroring
  • 00001111: 78.1 (1-screen selected by D3)
  • 00110101: 78.3 (D3=0 horizontal, D3=1 vertical)

Emulation results

As of 2017-11-20:

  • Mesen 0.9.3 correctly distinguishes the two.
  • FCEUX 2.2.3 treats everything as 78.1.

Legal

Copyright 2017 Damian Yerrick. This is free software under the zlib License (see LICENSE).

X Tutup