If you haven’t already read the initial tests of the adapter, I would advise doing so before reading this.
Okay, so where were we? Ah yes, It didn’t work. Matthias suggested that I send him a copy of the dumped ROM so that he could cast his ever-so-slightly-better-qualified-eye over it, to hopefully find something of worth in it. Which he did.
Somehow*, he noticed that the addressing was shifted by 1 bit, and suggested checking my wiring, as the text file I had followed showed that the Mega Drive address lines started on a1 where as the Virtual Boy’s started at a0. Sure enough, I had wired a1 to a1 and so on, meaning that they were all out by one. Oops.
*This was found by looking at the first few bytes of the dump in a hex editor. If a game is 4Mbit, it should wrap around at 0x080000 (512kByte). The Dump started over at 0x040000 (256kByte) and everything was half as long as it should have been, this pointed to all addresses being off by a factor of two. After noticing the mismatched pin numbering in the text file, it all became clear.
I unplugged all of the wires, and put them back taking into account the Virtual Boy’s shifted address lines. I made another dump and sent it to Matthias. This was better he informed me, but still didn’t look quite right. He said that the data lines looked like they were crossed** and suggested swapping d0-d7 with d8-d15.
**Reading BB AA DD CC where it should be AA BB CC DD points straight at the data bytes being flipped. There are different standards as to how the bytes in a 16-bit “word” are aligned in memory, little-endian and big-endian. After a quick bit of research, it was found that the Virtual Boy CPU (NEC V810) is little-endian and the Mega Drive CPU (Motorola 68000) is big-endian. The Virtual Boy cart data lines needed to be switched to match the order that the Retrode was expecting.
So again I unplugged all of the wires, and again I put them back in, only this time switching the data lines (by this time I had added a strip of masking tape with the socket numbers written on it to the Virtual Boy PCB to aid in re-seating the pins). Again I sent a dump to Mathias, and this time it was almost as it should be, but there was still an issue with the data lines***, he suggested checking their continuity with a multimeter, which I did.
***Comparing the Retrode dump to a known good dump showed that all the data was correct apart from one recurring bit. This bit corresponded to data line 14 on the Mega Drive side.
It was now I found my second wiring mistake, somehow I had switched the d7 and d14 lines which was causing the issue (I am blaming the tiny holes I was having to push the pins into…). After swapping them back to their correct locations, I made another dump, and this time, it had the correct information in it!! The file was the wrong size, but this was due to the Retrode not finding the correct info where it thought it should be, as far as the Retrode was concerned it had a MD cart plugged in.
I sent the ROM dump over to Matthias. After a couple of attempts, he was able to make a new firmware file for the Retrode that correctly reads the game title and file size! All this without the hardware in front of him, clever chap!
I’m not entirely sure why I had to switch the data lines over as it wasn’t mentioned in the text file. Perhaps it is something to do with the way the Retrode reads them? All I know is that it works, mainly due to the help I received, thanks Matthias.
The working test Retrode Virtual Boy adapter.
Screen shots of different sized games registering their sizes correctly and running in Reality Boy:
![]()
![]()
![]()
Next task is to make it more user friendly and look pretty…
Edit: Added more detail regarding how the errors were found.