Advertisement
NovaYoshi

new NES mapper design

Sep 28th, 2015
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.64 KB | None | 0 0
  1. 1024KB PRG ROM
  2. 1024KB PRG RAM
  3. 32KB or 128KB CHR RAM
  4. four screen mirroring
  5. scanline interrupts
  6.  
  7. $4800 - Same as register $0f (IRQ)
  8. $5000 - Port address ($00-$0f)
  9. $5800 - Port data ($00-$ff)
  10.  
  11. If $8000-$ffff is write protected:
  12. $8000-$9fff - Port address
  13. $a000-$bfff - Port data
  14.  
  15. Like with MMC3 and FME-7, writing to Port Address selects a register to write to, and Port Data writes to the selected register.
  16.  
  17. $00: CHR slot A
  18. $01: CHR slot B
  19. $02: CHR slot C
  20. $03: CHR slot D
  21. $04: CHR slot E
  22. $05: CHR slot F
  23. $06: CHR slot G
  24. $07: CHR slot H
  25. 32KB:
  26. ..nn nnnn .5K bank
  27. ...n nnnn 1K bank
  28. ...n nnn. 2K bank
  29. ...n nn.. 4K bank
  30. 256KB:
  31. nnnn nnnn .5K bank (first 128KB only)
  32. nnnn nnnn 1K bank
  33. nnnn nnn. 2K bank
  34. nnnn nn.. 4K bank
  35.  
  36. PRG banks:
  37. rbbb bbbb
  38. |+++-++++- 8kb PRG bank
  39. +--------- 0=ROM, 1=RAM
  40. $08: PRG bank at $6000-$7fff
  41. $09: PRG bank at $8000-$9fff
  42. $0a: PRG bank at $a000-$bfff
  43. $0b: PRG bank at $c000-$dfff
  44. $0e: PRG bank at $e000-$ffff
  45. Loss of M2 oscillation (caused by resets) causes register $0d to revert to a value of $7F, mapping the last ROM bank in the cart into $E000-$FFFF.
  46.  
  47. $0c: Mirroring and CHR mode
  48. .wcc sfmm
  49. ||| ||++- mirroring mode
  50. ||| |+--- four-screen from CHR RAM $7000-$7fff, ignores mm if on
  51. ||| +---- swap $0xxx with $1xxx
  52. |++------ CHR mode
  53. +-------- if 0, $8000-$ffff is write protected and $8000/$a000 work for address/data
  54.  
  55. Mirroring (same as FME-7):
  56. 0: vertical mirroring (horizontal arrangement) from CIRAM
  57. 1: horizontal mirroring (vertical arrangement) from CIRAM
  58. 2: One-screen, lower bank of CIRAM
  59. 3: One-screen, upper bank of CIRAM
  60. When combined with sprite 0 or the optional IRQ feature, this allows four-screen mirroring and a status bar at the same time, as the playfield is in CHR RAM and the status bar is in CIRAM.
  61.  
  62. CHR mode: (A through H are assigned in order)
  63. $0xxx | $1xxx
  64. 0: 1K, 1K, 1K, 1K | 1K, 1K, 1K, 1K
  65. 1: 2K, 1K, 1K | 2K, .5K, .5K, .5K, .5K
  66. 2: 2K, 2K | 1K, 1K, .5K, .5K, .5K, .5K
  67. 3: 4K | 1K, .5K, .5K, .5K, .5K, .5K, .5K
  68.  
  69. $0f: Set IRQ count
  70. At the start of each scanline, the PPU freezes for a few cycles, and PPU A13 stays high for at least three consecutive cycles of PPU /RD. The mapper detects this and subtracts 1 from the value in $0e unless the value is $F0-$FF. While the value is 0, /IRQ is pulled low.
  71. Programming tip: Reading from the nametables or palette during vertical or forced blanking will cause counts unless you write $FF to port $0e.
  72. Some implementations may count M2 cycles (1.8 MHz) instead of PPU /RD cycles (2.7 MHz) to save a pin. Cost-reduced versions may lack IRQ logic entirely.
  73.  
  74. $0d: Unused
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement