Category Archives: NGPC USB Linker

Prototype NGPC USB Pocket Linker

So, we’ve moved from the breadboard to a working prototype PCB. I soldered on the parts and it works well. There’s not much more to say. There’s a good chance that this is what a “product” would look like. Do you want to buy one? Faselei cart not included.


Don’t Dremel Your Finger

Last night I cut up a couple PCI slots to make NGP cart sockets. The process of making multiple at a time is a bit easier than making one, because I can mark a couple at a time. After one is made, it’s much easier to use that as a guide to make others.

The drawback is that the faster you go, the less careful you get. At one point, I ended up hitting my finger with the Dremel cutting wheel. Actually, I think I got quite lucky that it wasn’t worse. It’s not really even noticeable today, except for a line of burnt flesh.

So, I’m ready with some sockets for when PCBs arrive. Did I mention that I ordered some PCBs? Yeah, Turfmasta helped me by drawing up some plans based on my breadboard design. We’re going to get this NGP linker working and also make the design compatible with his NeoSavemasta SRAM card. This means that the linker hardware will be dual-purpose (and probably have other uses soon-after).

I’ve been working on the theoretical side of the Flash Cart, too. I can’t do much in practice, because I don’t have any hardware for that yet, but I’m working out a design and all that.

NGF File To Cart

This one is a bit trickier. It’s a bit more involved to actually take a .NGF save-game file and write it to an official cart. Nonetheless, I did it. I had issues, and I left out any real error checking (like to make sure the .NGF is valid for the cart). It works, though.

So, now you can share save-game files between an official cart and an emulator (R.A.C.E. or NeoPop). You can dump an NGF from a cart and load it on your PSP running RACE. You can take a NeoPop save-game from your PC and put it on a cart and play it on the actual NGPC.

You can make periodic backups of your NGPC carts just in case you loose your data, want to start a new game, or end up dying. Then you can restore to the last backup.

I think it all works, but it will require some more testing. What it did bring to light, though, was how slow the cart writing process actually is. I was only writing small blocks, but it still took a long time. If I were writing an entire 32mbit cart (like a Bung), it would have taken hours.

I came up with a new “smarter” way of writing bulk data. It seems fairly usable. At the end of last night, it was able to write the entire Card Fighters save-game data in about 20 seconds. That accounts for about 1/64th of a 32mbit cart, so we’re still talking like 21 minutes to write an entire 32mbit. There are still tricks to speed this up, but 20min isn’t all that bad, really. First, you’re not usually writing a full 32mbit. Then, if you are writing a lot, you’re not doing it all that often. Like, if you’re developing some homebrew, you might be writing the cart fairly often, but you’re probably looking at like maybe a minute’s worth of data.

So, this is all good news. I continue to work on the USB Pocket Linker. Gerry continues to fit in work on the Pocket Flash Cart when real life permits. It’s all going well, and we have some other related projects in the works for you Neo SNK freak types.

NGF File From Cart

Today I had a new idea. I can take an official cart and scan it to see which blocks are unprotected. That means they’re writable. The save-game data will always be stored in one or more of the writable blocks.

I worked on the RACE NGPC emulator’s flash memory emulation enough to know how it stores the save-game data in a file. So, I combined these to make a tool to back up an official cart’s save-game data to a NGF file which RACE and NeoPop can use.

So, the idea is that you could take an official cart and backup its save-game data to a file. This file could either be used on an emulator or to restore it to a cart later.

It’s simple, but nifty. I got the backup working. I’ll work on restoring it later. It’s worth noting that this should also be able to take a NGF file from an emulator (RACE/NeoPop) and write it to an official cart.

Nothing To Show

Well, there wasn’t much for new development over the weekend. I don’t have any new pictures or videos to show off, because the things I did weren’t very showy.

On the USB Pocket Linker front, I wrestled with optimizing the cartridge dump/backup process. I put a little work into making the command-line application a bit more usable. Then I came up with a way to transfer bulk data (as opposed to a byte at a time). I believe that my final test had me back up an entire 32mbit cart in 138 seconds. That’s not blazing speed, but it’s definitely fast enough. This isn’t something people will do super often, and a couple minutes is no big deal, in my opinion.

Writing an entire 32mbit cart will be a whole different issue. To create a bulk transfer write process, the linker itself will need to be much smarter. The flash chip that we chose to base our new pocket flash cart around supports a bypass write mode. This will help with the bulk transfer, but I don’t know what we’re looking at for speed. At the moment, I don’t have a writable cart, so I can’t really test write speed. When I get a cart, if it’s under say 10 minutes to write the cart, that will be just fine, and I won’t worry about optimizing. I don’t know how realistic that is, though. We’ll just have to wait and see.

The other thing I worked on a bit was a plan of attack for the pocket flash cartridge’s logic. I know what it needs to do, but I hadn’t planned out a process for it. I started that, and it is currently a fairly simple design. I will need to learn more about how I can actually implement the design and then adapt the design to the implementation. Gerry promised to review this rudimentary design with some of his brilliant peers and see how they reacted. Hopefully it’s positive.

As for Gerry’s work, I know he’s been mapping out a PCB for the pocket flash cart. He has a design ready, but it isn’t quite all planned out. He’s also been analyzing some of the logic signals on the cart edge connector. I’m going to want that data so I can tweak my piece of the puzzle accordingly.

Both of us get a bit of time here and there. The project may move a bit more slowly for a while as real life takes its toll on fun. Stay tuned, but don’t hold your breath.

Reading and Writing Neo Geo Pocket Color Cartridges

USB Pocket Linker: All Lines Wired

USB Pocket Linker: Write Byte


Over lunch, I added the rest of the address lines. I was then able to read the entire cart. I was also able to send commands to it. I got some good data back, but I was unable to write to the cart. Hmm.

I tracked down the problem. Stupid me. The last thing I did with the AT29C040A was to hack in some quick test. I forgot to take it out, and it didn’t work well with the NGPC cart (as it shouldn’t). After that, I was able to write the last byte of the cart and read back what I wrote. How nifty!

So, what’s next for this thing? I’m not really sure. I will need a GUI. I think I have a developer for that task.

Reading a Neo Geo Pocket NGPC Cartridge Via USB

Reading Japanese CFC NGPC Via USB


Well, here it is. After I had a brilliant idea followed by an epiphany about how to breadboard the cartridge slot, I started wiring it up. I had to install a voltage regulator to drop the USB 5V down to 3.3V that the NGPC cart could handle.

I didn’t wire up all the lines yet, but I was able to verify that reading works. I hoped this picture would show the result, but it’s a bit blurry. In the command-prompt window, you can see the first 8 bytes of the cart. In the other background window, you can see a ROM dump of the game (from elsewhere). The first 8 bytes match, which is a very good indication that it’s reading properly.

Next is to connect up all the address lines (which just takes time). Then I can test writing to a cart. Unfortunately, there’s not much to write to an official cart. I should be able to read/write the save-game areas of official carts until we have a writeable cart. Gerry is working on that, though.

Once I have a usable NGPC reader/writer, I will have to start learning VHDL. Then I can code up some routines for a MAX3000 so that the NGPC will think it’s an official SNK cartridge. Oh, what fun.

I suppose I can also fab some PCBs for this USB Pocket Linker. I’ve never done that before, but much of this is new to me. How hard can it be?

Cart Edge Connector Ideas

I need some ideas for how I’m going to insert my NGP cart into this “linker” device. The pin spacing is the same as PCI, so I got some PCI slots to use in my prototype. The problems are…

  • The edge connector needs only be on one side.
  • There’s a key in the middle.
  • The ends of the cart are closed off (meaning the “socket” needs to be open-ended).
  • Breadboarding a PCI socket is a pain.
  • There are 18 pins, then a key (spanning 2 pins), and then 18 more pins.
  • This socket isn’t available off-the-shelf.

I’m soliciting ideas on how to approach this. I’d like both prototyping ideas and also ideas for a product that users would be okay with.

Here are some pictures to help you get an idea of what I’m up against. The pins pitch/spacing is 0.050 inches or 1.27 mm.

Pic_of_3_cart_PCBs ngpprotoi baseballv BUNG_Progerammer__001 DSC00740