2
\$\begingroup\$

First off, I am not sure if this question fits here, so sorry for any inconvenience, mods!

I've looked over the internet, and I found this pretty little thing called nanoloop, and I've been wondering if I can make something like that myself. As I am pretty familiar with Arduino, I thought that I could make an Arduino somewhat of a Gameboy cartridge, and probably someone on the internet has done it, right?

Wrong. I haven't found a thing in people trying to use Arduinos as Gameboy cartridge processor. So, here comes my question: Is such thing possible? If so, where would one start?

\$\endgroup\$
5
  • \$\begingroup\$ If I remember correctly, the cartridges are (usually) just a mask ROM, so the Arduino would literally be overkill. \$\endgroup\$
    – Polynomial
    Mar 12 '14 at 18:26
  • \$\begingroup\$ Just FYI. There is now a stack dedicated to Arduino arduino.stackexchange.com \$\endgroup\$ Mar 12 '14 at 18:35
  • \$\begingroup\$ @Polynomial, I don't want to do usual things with it i guess, and i have arduino with me right now, so not too much of additional cost would be needed (except than making my own PCB) \$\endgroup\$
    – themorfeus
    Mar 12 '14 at 18:37
  • \$\begingroup\$ @NickAlexeev, Thanks, i didn't know that :) \$\endgroup\$
    – themorfeus
    Mar 12 '14 at 18:37
  • \$\begingroup\$ If your goal were to make a program storage cartridge you would probably want to base that around either a dual-port RAM or a single port one and a bus switch or multiplexer, plus some control logic. But if you are making a sort of memory-mapped I/O device, you might not need that. \$\endgroup\$ Mar 12 '14 at 19:59
2
\$\begingroup\$

Such a cartridge is essentially a ROM. It gets requests from the CPU in the gameboy for a particular address, and answers with the appropriate data. I doubt whether an Arduino could mimic this process fast enough to satisfy the gameboy CPU: the arduino would have to wait for the read strobe, the sample the (16 bit) address bus, find the data, and put it out (8 bits). But maybe it is possible for clever person with too much spare time. Start with getting the exact timing of the bus. According to wikipedia it is a custom 8080/z80 hybrid, so getting the documentation might be a challenge in itself. Then study the AVR instruction set and see whether you can satisfy the timing. That will definitely require assembly programming.

\$\endgroup\$
3
  • \$\begingroup\$ Thanks for that, and it just happens that i found docs of dmg cpu a while back :) \$\endgroup\$
    – themorfeus
    Mar 12 '14 at 19:22
  • 1
    \$\begingroup\$ That was my thought as well, but the link appears to be to a sort of output device rather than a conventional program-storage cartridge. So it might actually be possible to do something with interrupts or a small amount of address-decode logic to make it possible for custom software on the GB to send a few simple signals to the Arduino, and then send more complex messages by combining those. \$\endgroup\$ Mar 12 '14 at 20:02
  • \$\begingroup\$ The "Harmony" cartridge for the Atari 2600 uses a 70MHz ARM to produce data in response to addresses from a 6507 running at 1.19Mhz with a fair bit of time to spare on most cycles (the game Pitfall II used extra hardware in the cartridge to assist with audio waveform generation, and the ARM can use extra time on some cycles to perform those computations, though the timing margins on the cycles thus affected will be much reduced). \$\endgroup\$
    – supercat
    May 5 '16 at 15:42
0
\$\begingroup\$

You could make the Arduino act as a single rom for the cart. Have an lcd that connects to the arduino for rom selection prior to operating the gameboy to save having to program software for the gameboy itself .

\$\endgroup\$
2
  • 1
    \$\begingroup\$ The question was how to do it at a technical level, not what features it should have. \$\endgroup\$
    – user39382
    May 5 '16 at 15:57
  • \$\begingroup\$ Please edit your question and write how it might be accomplished, Thanks \$\endgroup\$
    – Voltage Spike
    May 5 '16 at 16:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.