Feed on

As you can see the blog hasn’t been updated in quite a bit of time and most of the previous posts have been about the GameBoy. We’ve had a bit of free time on our hands so have been busy working on projects and mods (most of which can be listed in our shop) but since starting up our Discord server, it’s easier to post real time updates there than writing up entries on the blog which can take a few hours at a minimum. A few ideas have come from the users there and users can talk about their own projects too.

So let’s have a look at the projects and mods we’ve worked on!


After playing around with the GBA LCD, I wanted to make a GBA handheld with a 7″ LCD screen (that accepts TTL) with our own LCD voltage control board but before that it made sense to try outputting it to a VGA monitor first. It was the first time I ever needed to use an FPGA and went with the Intel 10M02 because it ran off a single 3.3V rail, had a PLL, was a QFP package and didn’t need an external EEPROM. It did take a while to complete, it started off with using an SRAM but using a circular buffer the 10M02 had just enough internal RAM to make it work, timing was pretty tight. We added a wireless GBC receiver so it can also be played with our wireless GBC TX carts.


LiPo Battery Gauge for the GBA

Having a 2 colour LED for the GBA battery is alright but why not have more so you can see the exact state. This was the idea with the LiPo Battery Gauge project by using a clear GBA shell we could fit in quite a bit of LEDs in the front. Due to the wiring requirements and 2 board construction, it never made it as a product but you can make your own as we’ve got everything on GitHub. We do have a battery gauge available for the DMG. Another user has made their own for the GBA SP.


AdvanceLCD Prototype

As the AdvanceVGA project had been successful it was time to work on the AdvanceLCD 7″ project. Since the LCD I choose could accept a TTL signal (which has V/Hsync) it’s very similar to VGA so after a little bit, it was up and working. I was using the controller board that came with the LCD to provide the power so the next step is to make that board myself.



One of our discord users was looking into buying a clock control module for the GBA, it was quite large and a little bit expensive. We made our own version, one that could allow for any clock speed you wanted (for an additional cost) and it supports the DMG, GBC and GBA.


Read Full Post »

Playing around with the GBA LCD

With all of the recent GBC/GBA LCD upgrades available, it made me interested to learn more about LCDs and the signals to make them work, a subject which I hadn’t explored before thinking it might be a bit complex. Let’s take a look at the 40 pin GBA LCD and how we can change certain signals using a CPLD.

(Sneak peak)

Firstly, we’ll take a look at the GBA schematic which shows the LCD screen and all the connections going to it. It looks to have a fair few voltages required by the 40 pin LCD supplied by the AGB-REG chip while the 32 pin LCD on more recent GBA don’t require these voltages and thus don’t require the regulator chip.

We have signals DCLK, LP, PS, R1-R5, G0-G5, B1-B5, SPL, CLS, SPS and MOD but what do they do? For that we’re going to have to get the logic analyser out! Before we do, just by the naming, we can tell that we’ve got Red (R1-R5), Green (G0-G5) and Blue (B1-B5) so it’s 16 bits but since G0 is grounded we have 15 bits of colour.

Here’s how it all looks zoomed out a bit. We can see that the SPS signal has a duty cycle of 59.73Hz which is the screen refresh rate on the GBA.


Read Full Post »

Every now and then I receive an email about adding support for older flash carts but they are usually are hard to find or there isn’t too much information out about them which makes it difficult to add support. I had one user contact me about adding support for the GB Smart 16M flash cart and they were happy to do a swap of my flash cart for theirs. They mentioned it had 4x flash chips which was interesting and were also able to provide me with an empty menu file named GB16M.gb.

A few weeks later it turned up.

Before receiving it, I was thinking how could they fit 4x flash chips on the cart and then I saw they used the low pin count versions, ah makes sense. Perhaps they choose those because they were cheaper than going with a 2MB flash chip. I plugged the cart into my GBA and it loaded up Super Mario Land straight away so it seems to be working. One thing to be careful of is the battery, it is loosely installed and it sort of slid out when I opened the cart. You wouldn’t want to open it up only to lose your saves!

After dumping the cart contents and selecting 2MB as the ROM size, I could see that DK and GB Gallery were also on the cartridge, I’m guessing once we pass the 512KB mark, it switches to the next chip so that means DK started on the 2nd flash chip and GB Gallery started on the 3rd flash chip.


Read Full Post »

Previously we made a SNES transmitter board which allows you to converter your SNES controller to a wireless controller and allow you to use any of the existing receivers we have available.

Today we’ll look at making an NES drop in board for the generic NES controllers you can buy off Ebay and also revisit the GBA TX cart’s CPLD code after I made a basic 32MB GBA cart so we can remove the 50 MHz oscillator.

It seemed like a good starting point for the drop-in boards as the existing board shape is pretty simple where as the SNES board shape is a bit more complex.

(sneak peak, new boards will be ordered)

We can pretty much re-use all the components we used on the SNES TX mod board for this NES drop in board. Now that we’ll have control of the buttons ourselves we don’t have any chip that we need to switch on with a P mosfet and thus our power consumption when sleeping and power on response when the start button is pressed will be improved.

The only thing I hadn’t done before was making button pads on the PCB before. I looked around for existing Eagle libraries that had them but only found one which was pretty small. There are lots of different designs out there, some like the SNES have carbon coated pads on the PCB and others just have the bare PCB exposed.


Read Full Post »

Previously we added NES, WiiMote, N64 receivers and a Multi-RX Adapter for the Wireless Gameboy Controller. I think that pretty much covers all the receivers for now so I thought the next stage, while not related to the Gameboy directly, is to add transmitter sides to the receivers for NES, SNES, GC and N64.

Today we’ll look at the SNES transmitter board.

(sneak peak)

I want it to be as simple as possible to install, not like some others where you might have to wire up each button to the board, instead make it just query the SNES controller like a SNES console would. It would be neat to make an actual drop in replacement PCB – maybe something for the future. For the moment, it would mean just 5 wires to hook (Vcc, Gnd, clock, latch, data) up plus the LiPo battery, speaking of which, we’ll put a LiPo charger on the board. For the MCU, I went with the cheapest and smallest option I have used before, the ATtiny48 which can run at 8MHz. As you can see by the PCB design, I tried to make it pretty compact and not too wide which worked out quite well.

Upon testing a SNES’s controllers current consumption it’s a few mA so we can’t just leave out the SNES controller running all the time. We can choose to have a switch to turn everything on or off or just use a P mosfet instead – to keep things as nice as possible with minimal cut outs, I went with the P mosfet. But now we have to consider how to wake up, should we wire up to one button or can we do something else?


Read Full Post »

Previously we made the GBA TX Cart for the Wireless Gameboy Controller so now it’s time to keep adding more receivers to the project. We have the NES, WiiMote (which should also support the NES/SNES Classic Mini), the N64 plus a Multi-RX adapter which allows you to switch out systems for a lower overall cost.

NES receiver

As I didn’t have an NES to actually test with, I previously had purchased a Mayflash NES/SNES to WiiMote adapter so I should be able to use that to make sure it works correctly.

As the NES just uses 8 clocks instead of the SNES 16 clocks that’s pretty much all that needed to change. A quick verification and test and it was all ready to go, I had even named the PCB “NES/SNES RX” before hand.

WiiMote receiver

Since I had the Mayflash WiiMote adapter as mentioned, I started looking at it with the logic analyser whilst reviewing different websites to verify their data against what I was seeing with the logic analyser; in some parts they were correct and in other parts they were slightly off.

I won’t bore you with the details but I did get pretty far into it with an ATtiny, up to the point where everything was sent/received in the clear but then it came to the encryption stage. I thought perhaps if I don’t reply to those encryption requests, etc, it may bypass the need but it didn’t seem to be the case so that’s when I decided it was time to look to see if someone had released some code for that.


Read Full Post »

Inside the Game Boy Pocket Printer

Keeping up with the recent Game Boy related posts, today we’ll be taking a look at the Game Boy Pocket Printer (MGB-007) which connects to the Game Boy via the link cable and is powered by 6x AA’s.


A few screws later and we’re in.

The thermal print head/motor assembly looks very similar to the one used in the Thermodrucker Printer. Capacitors are decent branded Sanyo/Nichicon ones. On the back, we have ourselves a bodge wire. The battery terminals are starting to corrode. At first it looks like all the vias have corroded but on closer inspection, it’s a green via tent, couldn’t be corrosion as there is a pad named “TP1” which is bare copper and that’s looking fine. There is some weird solder mask corrosion/fading starting on the edges of the board.


Read Full Post »

Previously we made a Super Nintendo receiver for the Wireless Gameboy Controller but it would nice to add L & R support so that some games on the SNES could also be playable and it would also allow GBA games to be played which used the L & R buttons so that’s what we’ll do, make a GBA TX cart.

(sneak peak)

One of the problems is the GBA carts size, it’s half the size of the Gameboy cart so we don’t have a lot of room to work with and we need to fit a CPLD, flash chip, AVR MCU and the nRF24L01+. After a bit of browsing around trying to find the smallest CPLD & MCU, I came back to the Altera 5M80Z which I was looking at for a flash cart but didn’t go ahead with it due to the 0.4mm pin pitch but it’s basically the only choice.

For the AVR MCU, it doesn’t need a whole lot of I/O or anything special, so I settled with the lowest cost one, the ATtiny48. It runs at 8MHz max so it isn’t that fast and doesn’t have an option for an external crystal. I suspect that even if it could run at 16/20MHz it may not be fast enough for detecting data from the GBA so what I decided to do instead was have the CPLD communicate to the ATtiny48 directly; once data was ready it could potentially just set a pin high and then read out the data whenever it wants.

We didn’t need a CPLD with the Gameboy TX cart but we’ll need one for the GBA due to the way the GBA uses all 24 pins to set the address then latches the lower 16 bits of the address by setting CE low and it uses the lower 16 pins to read/write 16 bits of data. There is a way to increment the lower 16 bits by pulsing the RD pin which is also used. In some ways it’s easier than having to make an MBC like on flash carts.


Read Full Post »

Previously we made a Gamecube receiver which plugged into the Gamecube port which allows you to play Gamecube games, GameBoy games via the Game Boy Player or play Wii Virtual Console or Gamecube games via the Gameboy wirelessly. A few users requested a Super Nintendo receiver which should also work with the GBA Consolizer project, so let’s take a look.

A quick look at the SNES pin out shows that there are 3 lines – clock, latch and data so this should be relatively simple.

Out with the logic analyser we go, we can see the latch, 16 clocks (clock polarity is low) and the data is high by default. When a key is pressed the data bit for that clock cycle goes low.

For example if the B button is held down it appears on the first clock cycle, we can see that the data line is low until the clock goes high again.

We also have a listing of which clock cycle corresponds to which button is pressed.


Read Full Post »

Since making the the Wireless Gameboy Controller, there were some ideas thrown around about making other devices of it wireless, one of them was the Gameboy Link Cable which we’re going to look at today.

(sneak peak)

There are different link cables – one for the Gameboy and another for the GBA. I ordered both but only the Gameboy link cable had all the pins on the connector where as the GBA only had the ones it needed. The GBA connector won’t fit in the Gameboy but the Gameboy connector will fit into the GBA.

Let’s take a look at the link cable pinout. We have 5V, serial out, serial in, clock out and ground, seems easy enough.

Out comes the logic analyser to take a look at the signals, the game I was trying the multiplayer on was F1 Race and with just 1 end of the cable connected. We can see the clock is slow (120us per cycle) and that the serial in is high, serial out is low so it doesn’t seem to be sending anything. The F1 Race game shows that you are the only player in the game and you can continue on to the race.

When the other side is plugged in, we can see the SIN goes low. F1 Race now waits on the screen like we are waiting for other players.


Read Full Post »

Older Posts »