Has anyone around here attempted to construct a GamePak jukebox similar to an M82? I'm considering doing it as a step up to full-on custom cart development, plus to expand my knowledge about electronics.
M82 Demo Unit
Older demo unit
Concept
The concept I've been kicking around would involve having 7 or so standard cartridges (unmodified) plug into a single backplane. All 72 pins from that backplane would plug into a ribbon that leads into an "adapter" cart. Said cart would be a simple UNROM that uses a mapper-like latch to switch power to any one of the carts on the backplane.
The program for the adapter cart would be pretty simple. Just a menu for selecting which game, with maybe some music. Could easily be done inside a few K so an UNROM layout would work great.
After selecting a game, the NES is locked into that game until you hit reset, as the goal here is to not customize all the carts in the jukebox.
Decoder/Latch
I'm thinking about using an 3 to 8 decoder/latch to provide the switching, which will be writable at $Fxxx - by ANDing the high address lines. The individual outputs will switch power to the various carts on the backplane. If it works, it could easily be expanded to bigger decoder for more games to be plugged into the "jukebox".
What Now?
Where I'm getting stuck, planning wise, is how to simulate a reset in software after I've written to the latch. The adapter cart itself would have its power switched at latch #0 (so the menu is running at power-on), so I would loose power to its PRG ROM and CHR ROM the instant that write is complete.
I think I can get away with doing this, but I have no clue if it will work:
- Copy 'reset' code (the following bits) to RAM, and JMP to it.
- Turn off interrupts, sound and display
- Write cart number to the decoder/latch's mapped address space (PRG and CHR go offline for a bit)
- Wait for a few milliseconds (for good measure) while the latch and transistors re-route power
- clear display memory and re-enable display (not sure about this step)
- JMP to program start in the new cartridge ($8000?)
At the point of that last jump we've effectively bankswitched an entire cartridge onto the PRG and CHR lines. The cart won't know what hit it, and neither will the console - in theory at least.
Any ideas, critiques and circuit layouts would be welcome.
M82 Demo Unit
Older demo unit
Concept
The concept I've been kicking around would involve having 7 or so standard cartridges (unmodified) plug into a single backplane. All 72 pins from that backplane would plug into a ribbon that leads into an "adapter" cart. Said cart would be a simple UNROM that uses a mapper-like latch to switch power to any one of the carts on the backplane.
The program for the adapter cart would be pretty simple. Just a menu for selecting which game, with maybe some music. Could easily be done inside a few K so an UNROM layout would work great.
After selecting a game, the NES is locked into that game until you hit reset, as the goal here is to not customize all the carts in the jukebox.
Decoder/Latch
I'm thinking about using an 3 to 8 decoder/latch to provide the switching, which will be writable at $Fxxx - by ANDing the high address lines. The individual outputs will switch power to the various carts on the backplane. If it works, it could easily be expanded to bigger decoder for more games to be plugged into the "jukebox".
What Now?
Where I'm getting stuck, planning wise, is how to simulate a reset in software after I've written to the latch. The adapter cart itself would have its power switched at latch #0 (so the menu is running at power-on), so I would loose power to its PRG ROM and CHR ROM the instant that write is complete.
I think I can get away with doing this, but I have no clue if it will work:
- Copy 'reset' code (the following bits) to RAM, and JMP to it.
- Turn off interrupts, sound and display
- Write cart number to the decoder/latch's mapped address space (PRG and CHR go offline for a bit)
- Wait for a few milliseconds (for good measure) while the latch and transistors re-route power
- clear display memory and re-enable display (not sure about this step)
- JMP to program start in the new cartridge ($8000?)
At the point of that last jump we've effectively bankswitched an entire cartridge onto the PRG and CHR lines. The cart won't know what hit it, and neither will the console - in theory at least.
Any ideas, critiques and circuit layouts would be welcome.