Mapper 339 variant
-
NewRisingSun
- Posts: 1593
- Joined: Thu May 19, 2005 11:30 am
Mapper 339 variant
This PCB knows three PRG banking modes:
- MMC3 banking
- NROM-256
- NROM-128
The outer bank bits and mode is selected via the address of a write to $6000-$7FFF. MMC3 banking mode is selected by A5=1. I don't understand based on the write patterns how it selects NROM-256 from NROM-128 mode, however.
- MMC3 banking
- NROM-256
- NROM-128
The outer bank bits and mode is selected via the address of a write to $6000-$7FFF. MMC3 banking mode is selected by A5=1. I don't understand based on the write patterns how it selects NROM-256 from NROM-128 mode, however.
You do not have the required permissions to view the files attached to this post.
-
krzysiobal
- Posts: 1221
- Joined: Sun Jun 12, 2011 12:06 pm
- Location: Poland
Re: Mapper 339 variant
I can tell you that if you tell me what goes to pins 8/9 of 7402 (IC4).
It is some logic combination of:
* $6000.A4 = PRG/CHR-A18
* $6000.A3 = PRG/CHR-A17
* $6000.A1 = NROM-A16
* $6000.A0 = NROM-A15
but I dont know exactly because the most important tracks are of course hidden as usual and I don't see any good reason to stick to a particular answer without knowing the ROM layout.
That multiplexer built on NOR gates switches between NROM-128 and NROM-256 //7402_sch.png
It can be
*IC4.8 = $6000.A4 = PRG/CHR-A18
*IC4.9 = $6000.A3 = PRG/CHR-A17
//7402_pcb.jpg
and so:
but then I am left with that three unconnected vias, two upper are part of $6000.A2=NROM-A16 and bottom one is $6000.A1=NROM15
//vias.jpg
If I'm not blind then IC4.8 must be $6000.A4=PRG/CHR-A18
//p18.jpg
but IC4.9 can be also possibly
$6000.A1 = NROM-A16
?
It is some logic combination of:
* $6000.A4 = PRG/CHR-A18
* $6000.A3 = PRG/CHR-A17
* $6000.A1 = NROM-A16
* $6000.A0 = NROM-A15
but I dont know exactly because the most important tracks are of course hidden as usual and I don't see any good reason to stick to a particular answer without knowing the ROM layout.
That multiplexer built on NOR gates switches between NROM-128 and NROM-256 //7402_sch.png
It can be
*IC4.8 = $6000.A4 = PRG/CHR-A18
*IC4.9 = $6000.A3 = PRG/CHR-A17
//7402_pcb.jpg
and so:
Code: Select all
IC4.8 | IC4.9 |
= | = |
$6000.A4 | $6000.A3 |
= | = |
PRG/CHR-A18 | PRG/CHR-A17 | MODE
------------+-------------+----------
0 | 0 | NROM-128
0 | 1 | NROM-256
1 | 0 | NROM-256
1 | 1 | NROM-256
If I'm not blind then IC4.8 must be $6000.A4=PRG/CHR-A18
//p18.jpg
but IC4.9 can be also possibly
$6000.A1 = NROM-A16
?
You do not have the required permissions to view the files attached to this post.
-
NewRisingSun
- Posts: 1593
- Joined: Thu May 19, 2005 11:30 am
Re: Mapper 339 variant
I shall ask the cartridge owner if he can perform continuity checking. In the meantime, here are the menu write patterns and ROM offsets:
Edit: Answer: no, he cannot.
Code: Select all
Game Mode Write ROM Offset
Galaxian NROM-128 $6000 $00000
Duck Hunt NROM-128 $6001 $04000
Wild Gunman NROM-128 $6002 $08000
Road Fighter NROM-128 $6003 $0C000
Tengen Tetris NROM-256 $6004 $10000
90 Tank NROM-256 $6006 $18000
Bucky O'Hare MMC3 $6028 $20000
Kick Master MMC3 $6030 $40000
Master Fighter 2 NROM-256 $6018 $60000You do not have the required permissions to view the files attached to this post.
-
krzysiobal
- Posts: 1221
- Joined: Sun Jun 12, 2011 12:06 pm
- Location: Poland
Re: Mapper 339 variant
I would assume the following then:
it would match the PCB and would explain the existence of two vias:
Code: Select all
$6000.A5 | $6000.A4 | $6000.A2 | mode
---------+----------+-----------+--------
1 | x | x | MMC3
0 | 0 | 0 | NROM-128
0 | 0 | 1 | NROM-256
0 | 1 | 0 | NROM-256
0 | 1 | 1 | NROM-256
You do not have the required permissions to view the files attached to this post.
-
NewRisingSun
- Posts: 1593
- Joined: Thu May 19, 2005 11:30 am
Re: Mapper 339 variant
So these are the five different variants of very similar PCBs that only differ in their NROM-256 selection method. The wiki currently only describes "submapper 0".
submapper 0 (K-3006):submapper 1 (unmarked PCB):submapper 2 (Realtec TL 8058):submapper 3 (K-3091/GN-16):submapper 4 (GR-002-31):I am afraid that I really will have to use either one submapper for each, or even use a new mapper for at least one of them; I don't see one common pattern for NROM-256 that would satisfy all five without breaking at least one NROM-128 game. And that is already taking into account that NROM-128 games in the second half of a 32 KiB PRG-ROM bank can run as NROM-256.
submapper 0 (K-3006):
Code: Select all
Galaxian 7000 NROM-128
Pac-Man 7001 NROM-128, A&6 = 0
Star Force 7002 NROM-128, A&6 = 2
Battle City 7003 NROM-128, A&6 = 2
Pooyan 7004 NROM-128, A&6 = 4
Bomberman 7005 NROM-128, A&6 = 4
Super Mario Bros. 7006 NROM-256, A&6 = 6
Double Dragon II 7028 MMC3
Super Contra 7030 MMC3
Crossfire 7038 MMC3Code: Select all
Menu 6000 NROM-128
Galaxian 6000 NROM-128, A&4 = 0
Duck Hunt 6001 NROM-128, A&4 = 0
Wild Gunman 6002 NROM-128, A&4 = 0
Bomberman 6003 NROM-128, A&4 = 0
Tengen Tetris 6004 NROM-256, A&4 = 4
90 Tank 6006 NROM-256, A&4 = 4
Captain America 6028 MMC3
Tokyuu Shirei Solbrain 6030 MMC3
Monster in My Pocket 6038 MMC3Code: Select all
Read Solder Pad 6080
Menu 6000 NROM-128
Galaxian 6840 NROM-128, A&1 = 0
Road Fighter 6841 NROM-128 or NROM-256, A&1 = 1
Adventure Island 6843 NROM-256, A&1 = 1
Chinese Chese 6845 NROM-256, A&1 = 1
Tengen Tetris 6847 NROM-256, A&1 = 1
Double Dragon II 6829 MMC3
Master Fighter II 6911 NROM-256, A&1 = 1
Contra Force 6879 MMC3Code: Select all
Read Solder Pad 6080
Menu 6000 NROM-128, A&18 = 0
Duck Hunt 6801 NROM-128, A&18 = 0
Wild Gunman 6842 NROM-128, A&18 = 0
Hogan's Alley 6843 NROM-128, A&18 = 0
Binary Land 6844 NROM-128, A&18 = 0
Ice Climber 6845 NROM-128, A&18 = 0
Dig Dug 6846 NROM-128, A&18 = 0
Lode Runner 6847 NROM-128, A&18 = 0
Adventure Island 6848 NROM-256, A&18 = 8
Chinese Chese 684A NROM-256, A&18 = 8
Tengen Tetris 684C NROM-256, A&18 = 8
90 Tank 684E NROM-256, A&18 = 8
Master Fighter II 6010 NROM-256, A&18 = 10
Monster in My Pocket 6878 MMC3Code: Select all
Galaxian 6000 NROM-128, A&1C = 0
Duck Hunt 6001 NROM-128, A&1C = 0
Wild Gunman 6002 NROM-128, A&1C = 0
Road Fighter 6003 NROM-128, A&1C = 0
Tengen Tetris 6004 NROM-256, A&1C = 4
90 Tank 6006 NROM-256, A&1C = 4
Bucky O'Hare 6028 MMC3
Kick Master 6030 MMC3
Master Fighter 2 6018 NROM-256, A&1C = 18-
NewRisingSun
- Posts: 1593
- Joined: Thu May 19, 2005 11:30 am
Re: Mapper 339 variant
I have updated the wiki accordingly.
https://www.nesdev.org/wiki/NES_2.0_Mapper_339
Many thanks, as usual, for your kind help, krzysiobal. I see from your screenshots that you have added a subfolder just for my stuff

https://www.nesdev.org/wiki/NES_2.0_Mapper_339
Many thanks, as usual, for your kind help, krzysiobal. I see from your screenshots that you have added a subfolder just for my stuff
-
Jerry
- Posts: 14
- Joined: Tue Oct 08, 2024 3:22 am
Re: Mapper 339 variant
Sorry, I'm a little confused. Why isn't MMC3-WRAM_CE connected to CLK? It is connected through 7402. What's so special about it? So is the reset circuit.
-
krzysiobal
- Posts: 1221
- Joined: Sun Jun 12, 2011 12:06 pm
- Location: Poland
Re: Mapper 339 variant
Yeah, that bothered me too. I don't remember anything like that in any of the MMC3+NROM discrete carts I've ever seen before, there was either:Jerry wrote: Fri Sep 19, 2025 10:23 pm Sorry, I'm a little confused. Why isn't MMC3-WRAM_CE connected to CLK? It is connected through 7402. What's so special about it? So is the reset circuit.
* MMC-WRAM-/CE connected directly to the register CLK or
* MMC-WRAM-/CE ORed with MMC-WRAM-/WE connected to the register.
http://krzysiobal.com/carts/?action=sea ... t=name_asc
I spent some time thinking what is connected to IC5 pin 3: //ic5_3_sch.png
because potentially there could be
* some higher addres bit (like CPU-A6), that would force the register to be written only if that address bit equals 0, but there is no such cpu address signal nearby
* some latched data bit, that would result as a write protection (after that bit is set to 1, all further writes are ignored), but I don't see any unused address bit for that purpose.
I thought this is some kind of delay circuit to surpress glitch writes (when MMC3 writes to $E000-$FFFF, if WRAM is enabled, there is short spike on the WRAM /CE due to the M2-ROMSEL delay). I was curious why they connected one of the NOR inputs to GND and the other to MMC-WRAM-/CE instead of both to MMC3-WRAM-/CE. Looks like I was fooled by the nearby GND via that is there:
//ic5_3_pcb.jpg But looking at the other top layer photo that has slightly different angle now I see that IC5.3 is IC6.15 = $6000.A5
//ic5_3_is_ic6_15.jpg and so indeed $6000.A5 acts as a write-protection bit - that is, when mapper is switched to MMC3 ($6000.A5=1), all further writes to this register (until reset) are ignored.
//sch_fix.png
You do not have the required permissions to view the files attached to this post.
-
krzysiobal
- Posts: 1221
- Joined: Sun Jun 12, 2011 12:06 pm
- Location: Poland
Re: Mapper 339 variant
My pleasure, thanks to your suggestions I was also able to finish quite similar PCB but with VRC4 instead of MMC3 that has also ability to switch between two distinct VRC types (mapper 23 vs 25):NewRisingSun wrote: Fri Sep 19, 2025 12:13 pm I have updated the wiki accordingly.
https://www.nesdev.org/wiki/NES_2.0_Mapper_339
Many thanks, as usual, for your kind help, krzysiobal. I see from your screenshots that you have added a subfolder just for my stuff![]()
![]()
Code: Select all
------------GAME---------------------- PRG CHR MPR
Teenage Mutant Ninja Turtles 1 (J) 256K 256K VRC4D (mpr 25), VRC-A1=CPU-A2, VRC-A0=CPU-A3
Akumajou Special - Boku Dracula Kun (J) 128K 128K VRC4C (mpr 23), VRC-A1=CPU-A3, VRC-A0=CPU-A2
Adventure Island 32K 32K CNROM
Shin Jinrui - The New Type (J) 32K 32K CNROM
Galaxian 16K 8K NROM
Battle City 16K 8K NROM
Lunar Ball 16K 8K NROM
Menu 16K 8K NROM
[fedcba9576543210] @ $6000-$7fff:
[011.......MQDCBA]
||++++--- PRG bits for NROM mode
||| +---- NROM mode (0=32K, 1=16k)
||+------ CHR A17 for NROM mode
|+------- PRG/CHR-A18
|+------- what drives PRG-A17 and CHR-A17: 0=D/D, 1=VRC-PRG-A17/VRC-CHR-A17
|+------- VRC mode: 0=mapper 23, 1=mapper 25
+-------- what drives PRG-A16/A15/A14/A13: 0=C/B/A/CPU-A13, 1=VRC)
CHR A16..A10 are always controlled by VRC
You do not have the required permissions to view the files attached to this post.
-
Jerry
- Posts: 14
- Joined: Tue Oct 08, 2024 3:22 am
Re: Mapper 339 variant
$6000.A5 acts as a write protection bit, so there is no problem.
My website:
My NES/FC flashcart: