NES 2.0 Mapper 355: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(Created page with "NES 2.0 Mapper 355 is used for the original 1989 release of ''3D Block'' (copyright ''Hwang Shinwei'' rather than ''RCM Group'') and the original single-cartridge version of '...")
 
mNo edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
NES 2.0 Mapper 355 is used for the original 1989 release of ''3D Block'' (copyright ''Hwang Shinwei'' rather than ''RCM Group'') and the original single-cartridge version of ''Block Force'', which runs on the same PCB that has "3D-Block" written on it. It is basically NROM-256 with 8 KiB of CHR-RAM rather than CHR-ROM, but with an unusual protection mechanism: a PIC16C54 microcontroller with an embedded internal program ROM watches A4..A14 of the 6502 CPU address bus and raises IRQs based on what it sees.
{{DEFAULTSORT:355}}[[Category:Mappers triggering on reads]]
'''NES 2.0 Mapper 355''' denotes the '''黃信維 3D-BLOCK''' circuit board, used for two unlicensed games:
* ''3D Block'' (1989 version, copyright "Hwang Shinwei")
* ''Block Force'' (original version, with credits and contact information on the options screen)
Its UNIF board name is '''3D-BLOCK''' without prefix.


To emulate this mapper, the embedded ROM's data, included as a ''Misc. ROM'' in the [[NES 2.0]] specification, must be executed by a PIC16C54 emulator (running at one fourth of the 6502 clock/M2 switching rate), with the emulated microcontrollers' input/output ports being connected to the caridge's M2, IRQ and CPU A4..A14 signals.
It is basically NROM-256 with 8 KiB of CHR-RAM rather than CHR-ROM, but with an unusual protection mechanism: a PIC16C54 microcontroller with an embedded internal program ROM watches A4..A14 of the 6502 CPU address bus and raises IRQs based on what it sees.  


To emulate this mapper, the embedded ROM's data (512 words, stored as 1024 bytes of little-endian data), included as a [[NES_2.0#Byte_14_.28Misc._ROMs.29|Misc. ROM]] in the [[NES 2.0]] specification, must be executed by a [https://github.com/mamedev/mame/tree/master/src/devices/cpu/pic16c5x PIC16C54 emulator] (running at one fourth of the 6502 clock/M2 switching rate), with the emulated microcontrollers' input/output ports being connected to the cartridge's IRQ and CPU A4..A14 signals in the following way:
PIC16C54 pin#  Meaning
----------------------
RA0 (17)      /IRQ
RA1 (18)      CPU A6
RA2 (1)        CPU A5
RA3 (2)        CPU A4
RB0 (6)        CPU A12
RB1 (7)        CPU A7
RB2 (8)        CPU A10
RB3 (9)        CPU A11
RB4 (10)      CPU A9
RB5 (11)      CPU A8
RB6 (12)      CPU A13
RB7 (13)      CPU A14 
Note that even though ''3D Block'' seems to write specific values to addresses in the $4xxx range, since the CPU D0..D7 signals are not connected to the microcontroller, their values cannot affect IRQ generation, though their addresses could.
Note that even though ''3D Block'' seems to write specific values to addresses in the $4xxx range, since the CPU D0..D7 signals are not connected to the microcontroller, their values cannot affect IRQ generation, though their addresses could.
 
==Errata==
* The status bar in ''Block Force'' during gameplay will jump slightly on some CPU/PPU alignments.
* GoodNES 3.23b contains the correct dump of ''3D Block'' as "3D Block (Hwang Shinwei) [!].nes" (sans embedded PIC ROM data) and a Bung Game Master hack as "3D Block (RCM Group) [p1].nes" which on its original floppy disk came with a custom fusemap for the Game Master's FPGA.
* GoodNES 3.23b contains the correct dump of ''Block Force'' as "Square Force (Unl) [!].nes" (sans embedded PIC ROM data) and a multicart extract, without full credits or contact information, that no longer requires the PIC, as "Block Force (Hwang Shinwei).nes", incorrectly set to mapper 219 instead of the correct 0.
==See also==
==See also==
[https://forums.nesdev.org/viewtopic.php?f=3&t=16267 PCB image and analysis]
[https://forums.nesdev.org/viewtopic.php?f=3&t=16267#p222579 PCB image and analysis]

Latest revision as of 06:45, 21 May 2020

NES 2.0 Mapper 355 denotes the 黃信維 3D-BLOCK circuit board, used for two unlicensed games:

  • 3D Block (1989 version, copyright "Hwang Shinwei")
  • Block Force (original version, with credits and contact information on the options screen)

Its UNIF board name is 3D-BLOCK without prefix.

It is basically NROM-256 with 8 KiB of CHR-RAM rather than CHR-ROM, but with an unusual protection mechanism: a PIC16C54 microcontroller with an embedded internal program ROM watches A4..A14 of the 6502 CPU address bus and raises IRQs based on what it sees.

To emulate this mapper, the embedded ROM's data (512 words, stored as 1024 bytes of little-endian data), included as a Misc. ROM in the NES 2.0 specification, must be executed by a PIC16C54 emulator (running at one fourth of the 6502 clock/M2 switching rate), with the emulated microcontrollers' input/output ports being connected to the cartridge's IRQ and CPU A4..A14 signals in the following way:

PIC16C54 pin#  Meaning
----------------------
RA0 (17)       /IRQ
RA1 (18)       CPU A6
RA2 (1)        CPU A5
RA3 (2)        CPU A4
RB0 (6)        CPU A12
RB1 (7)        CPU A7
RB2 (8)        CPU A10
RB3 (9)        CPU A11
RB4 (10)       CPU A9
RB5 (11)       CPU A8
RB6 (12)       CPU A13
RB7 (13)       CPU A14  

Note that even though 3D Block seems to write specific values to addresses in the $4xxx range, since the CPU D0..D7 signals are not connected to the microcontroller, their values cannot affect IRQ generation, though their addresses could.

Errata

  • The status bar in Block Force during gameplay will jump slightly on some CPU/PPU alignments.
  • GoodNES 3.23b contains the correct dump of 3D Block as "3D Block (Hwang Shinwei) [!].nes" (sans embedded PIC ROM data) and a Bung Game Master hack as "3D Block (RCM Group) [p1].nes" which on its original floppy disk came with a custom fusemap for the Game Master's FPGA.
  • GoodNES 3.23b contains the correct dump of Block Force as "Square Force (Unl) [!].nes" (sans embedded PIC ROM data) and a multicart extract, without full credits or contact information, that no longer requires the PIC, as "Block Force (Hwang Shinwei).nes", incorrectly set to mapper 219 instead of the correct 0.

See also

PCB image and analysis