Helping out a friend here, so here's the problem:
He has a TKROM board. Added dip sockets for the chr rom and prg rom. After that added chr ram.
The problem is that when he plays a game with chr rom he needs to disable the chr ram (connect CE to vcc). Can he do this without a switch? Maybe with some 74xxx?
from wiki:
TQROM board has both CHR ROM and RAM. Bit 6 of the bank number, which appears on MMC3's CHR A16 line, controls whenever CHR RAM or CHR-ROM is enabled. A 74HC32 chip is used to combine this with other chip enable signals for the CHR-ROM and the CHR-RAM chips. Due to this incompatibility with the other MMC3 boards on a software viewpoint, this board is assigned to INES Mapper 119 instead of mapper 4.
Any help appreciated!
What's he doing with it? Is it some sort of dev board or multi-cart?
If you don't want a switch, how would you plan to select between TKROM and TQROM? Is it like a multicart and you want the proper operation based on what game is selected on screen or what?
Kinda need some more details of the bigger picture to make recommendations. Perhaps you're looking to just convert the TKROM to TQROM and not be able to go back and forth?
Correction - here's what he needs:
To switch between chr rom and chr ram without a switch. He doesn't want to convert the rom.
If a game is CHR-ROM, you probably won't get it to work with all CHR-RAM without extensive hacking.
So this is pretty much a NES flash cart it seems for MMC3, is that right? As for switching the boards automatically, you'd need to add more hardware obviously, and then a bootloader to then load a CHR-RAM with all thhe ROM images and then disable/enable the extra RAM in bank 6 it sounds. But I'm not a hardware guy so maybe see what others have to say to do.
jpx72 wrote:
The problem is that when he plays a game with chr rom he needs to disable the chr ram (connect CE to vcc).
Which game is this? I can think of only five MMC3 games for NES that use CHR RAM: two pinballs, two Mega Man games, and Ninja Crusaders.
Quote:
Can he do this without a switch? Maybe with some 74xxx?
Yes, but knowing which game is involved helps make it easier to reason about repros.
He's not trying to make a repro or a game, but trying to make an universal mmc3 flash cart...
Well, the only thing I can think of is have the programmer write to the cart's address and set the switch for what game it's needed for, or have a bootloader do it. How is he wanting to make the flash cart?
The only way I see the automatic selection between CHR-ROM and CHR-RAM (without hacking the games) is if you use a boot ROM, a program stored in a separate chip that will run before the game and will configure everything.
For a universal MMC3 cart, CHR-ROM/RAM isn't your only problem. You also have to worry about mirroring (I think a couple of MMC3 games have 4-screen mirroring) and possibly other details.
Yeah, check out SL1ROM:
http://bootgod.dyndns.org:7777/pcb.php? ... &PcbID=414
I believe it makes the mirroring 4 screen. Edit: NVM, Wrong thing. I ment single screen.
tepples wrote:
Which game is this? I can think of only five MMC3 games for NES that use CHR RAM: two pinballs, two Mega Man games, and Ninja Crusaders.
Seven, actually you forgot Final Fantasy III and Destiny of an Emperor II.
Quote:
I believe it makes the mirroring 4 screen.
Not quite.
Gauntlet and Rad Racer II use 4-screen mirroring with MMC3, while another weird Napoleon game uses 4-screen mirroring with it's own mapper.
Bregalad wrote:
tepples wrote:
I can think of only five MMC3 games for NES that use CHR RAM: two pinballs, two Mega Man games, and Ninja Crusaders.
Seven, actually you forgot Final Fantasy III and Destiny of an Emperor II.
Those are for Famicom.
As I understand it, the differences among extant T*ROM boards include PRG RAM on/off, CHR ROM/RAM/both, PRG ROM size, CHR ROM size, and normal/fixed/4-screen/1-screen mirroring. Making a submapper that supports all of them would need a
lot of 7400-age, to the point where a CPLD assisting the MMC3 (or clone thereof) might be the best option.
jpx72 wrote:
He's not trying to make a repro or a game, but trying to make an universal mmc3 flash cart...
How does he plan to program the RAM? Is it being done internally via something similar to a powerpak?
I'm using SRAM for my simple "flash" dev/multi cart and using and programming it with the kazzo. I'm battery backing it so the SRAM will act as the ROM did initially. The final version will be programmed internally via a microcontroller or by use of a bootrom and feeding the data to the NES so it can then program the SRAM.
But there's no switching involved, I'm still thoroughly confused what exactly your friend is looking to do here. And based on the wide range of answers here I don't think anyone else fully understands either. Really we'll need a more thorough explanation of the project and the exact problem you having here. Not to be rude, but I would recommend explaining it with a couple paragraphs vice a sentence or two.
I think what he had in mind is using some 74xxx logic to understand, if the currently burned game-rom needs chr ram or rom. Sorry, I don't understand it fully myself, but here's some thought:
If you look at the information from nesdev wiki:
"Bit 6 of the bank number, which appears on MMC3's CHR A16 line, controls whenever CHR RAM or CHR-ROM is enabled"
-I think he thought that after loading the game by the computer (sorry for my neanderthal explanation), the logic 74xxx can somehow read from the mapper if the game needs rom or ram and then selects it accordingly.
The bootloader / menu is a no-go solution, since it's too dificult for him or for me, without extensive programming knowledge...
Okay, well it's not like there is some special byte in the rom image that you'll be able to check except for the fact that there wasn't anything programmed onto the chr roms. That info is in the header of the .NES file and it sounds like you'd want to make use of that knowledge when programming the cart.
Do you guys have a current design thus far?
I would recommend somehow storing the fact that the chr ram or rom is needed when you program it. You could use a flipflop or something and battery back it if you were programming the cart externally. Perhaps you could access it through the exp pins if you had them. There are all kinds of possibilities.