INES Mapper 072: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(add some speculation on mapper 072 operations)
m (Traced the board, figured out how it worked. (Sorry about deleting all your musing, Zeromus))
Line 1: Line 1:
Some speculation on what may be going on here: Images of the PCB show 3 chips with 4 bits of registers each (a counter and two latches) as well as some OR gates. That isn't enough memory for the CHR+PRG regs, as well as a latched value, as well as a latched command. So, here is another theory whose behaviour could be verified, if anyone cared.
 
  When the top 2 bits of value are 0, then the low 4 bits are written to the register specified by the latch (%10 for PRG and %01 for CHR)
  When the top 2 bits of value aren't 0, they are written to the latch
This explains why the games tend to keep the requested bank in the bottom nybble in the second write, instead of just sending the command. It doesn't explain why the games go to any effort to put the bank's nybble in the first byte.
Note that Pinball Quest will require bus conflicts to be emulated if this mapper is emulated this way.
Note that Pinball Quest will require bus conflicts to be emulated if this mapper is emulated this way.


  Here are Disch's original notes: 
   ========================
   ========================
   =  Mapper 072          =
   =  Mapper 072          =
Line 24: Line 15:
   ---------------------------
   ---------------------------
    
    
     $8000-FFFF:  [MM.. PPPP]
     $8000-FFFF:  [PCRS DDDD]
       P = Page number
       P = When a 1 is written after a 0 was previously written,
       M = Command
          the bottom three bits of the data bus are copied to the PRG bank select
      C = When a 1 is written after a 0 was previously written,
          the bottom four bits of the data bus are copied to the CHR bank select
      R = For games that have add-on sound, while 0,
          the ADPCM playback IC is held in reset and unable to make sound
      S = For games that have add-on sound, when the value written here changes
          (direction unknown because the datasheet contradicts itself),
          the sound specified by the bottom 5 bits of the address bus is played.
          Leaving the value at 0 will probably result in erratic audio playback.
       D = the three- or four- bit bank number to switch to, as appropriate.
    
    
    
    
Line 32: Line 32:
   ---------------------------
   ---------------------------
    
    
     Page numbers seem to pass through a latch.  Rather than writing to the regs directly, you write the
     Commands pass through a latch.  Rather than writing to the regs directly, you write the
   desired page number and command to the latch, then send another command that copies the latch to the
   desired page number and command to the latch, then send another command that readies it for the next time.
  appropriate internal register.
    
    
     Commands:
     Commands (PC bits together):
       %00 = Copy latch to appropriate reg
       %00 = Do nothing (prepare for next write)
       %01 = Set CHR Page
       %01 = Set CHR Page
       %10 = Set PRG page
       %10 = Set PRG page
       %11 = Nothing/invalid
       %11 = Set both simultaneously
    
    
     Example:
     Example:
       If a game wanted to select CHR page 3, it would first write $43, then $03.  Presumably, the $43 fills
       If a game wanted to select CHR page 3, it would first write $43, then $03.  The $43 fills
   the latch, then the $03 looks at the latch, sees that it wants to set the CHR page, then copies the page
   the latch, then the $03 prepares for the next write. The $03 should be able to be any value from $00 to $0F.
  number to the CHR reg (actually performing the swap).
 
    No idea if that's really how it works or not, but emulating it that way seems to work.
    
    
  No current theory explains why games go to any effort to put the bank's nybble in the second byte.
    
    
   CHR Setup:
   CHR Setup:

Revision as of 19:20, 11 June 2012

Note that Pinball Quest will require bus conflicts to be emulated if this mapper is emulated this way.

 ========================
 =  Mapper 072          =
 ========================
 
 Example Games:
 --------------------------
 Pinball Quest (J)
 Moero!! Pro Tennis
 Moero!! Juudou Warriors
 
 
 Registers (**BUS CONFLICTS**):
 ---------------------------
 
   $8000-FFFF:  [PCRS DDDD]
     P = When a 1 is written after a 0 was previously written,
         the bottom three bits of the data bus are copied to the PRG bank select
     C = When a 1 is written after a 0 was previously written,
         the bottom four bits of the data bus are copied to the CHR bank select
     R = For games that have add-on sound, while 0,
         the ADPCM playback IC is held in reset and unable to make sound
     S = For games that have add-on sound, when the value written here changes
          (direction unknown because the datasheet contradicts itself), 
         the sound specified by the bottom 5 bits of the address bus is played.
         Leaving the value at 0 will probably result in erratic audio playback.
     D = the three- or four- bit bank number to switch to, as appropriate.
 
 
 Notes:
 ---------------------------
 
    Commands pass through a latch.  Rather than writing to the regs directly, you write the
 desired page number and command to the latch, then send another command that readies it for the next time.
 
    Commands (PC bits together):
      %00 = Do nothing (prepare for next write)
      %01 = Set CHR Page
      %10 = Set PRG page
      %11 = Set both simultaneously
 
    Example:
      If a game wanted to select CHR page 3, it would first write $43, then $03.  The $43 fills
 the latch, then the $03 prepares for the next write. The $03 should be able to be any value from $00 to $0F.
 
 No current theory explains why games go to any effort to put the bank's nybble in the second byte.
 
 CHR Setup:
 ---------------------------
 
       $0000   $0400   $0800   $0C00   $1000   $1400   $1800   $1C00 
     +---------------------------------------------------------------+
     |                            CHR Reg                            |
     +---------------------------------------------------------------+
 
 
 PRG Setup:
 ---------------------------
 
       $8000   $A000   $C000   $E000  
     +---------------+---------------+
     |    PRG Reg    |     { -1}     |
     +---------------+---------------+