Thursday, September 16, 2010

Yet Another Update Post

I finally decided to get this blog on Devrs.com, since it seems to have enough info.  By the looks of it, there have been a lot more visitors since.

I keep putting off posting a tutorial, because of schoolwork, testing, and planning for college I don't have much time to spare.  However, I am definitely going to start posting ASM tutorials within the next two weeks.


EDIT: I found that the Gameboy Assembler Studio application that I use to program the gameboy is no longer up on the web.  I will try to get it uploaded somewhere useful and provide a working link for it when I have the time.  It's a really great GUI that was designed for windows 95, but it still works great for me on Windows 7.


To end this short update, I have a question for you who visit this site.  Should I create development blogs for other classic systems, such as the NES/SNES and maybe even the Gameboy Advance?  I have some information on those systems, as well as great tools I have downloaded throughout my journey of the internet.
What do you think?



Another post is sure to come soon, plus an article from another GameBoy developer from YouTube.

--Vaati

Thursday, June 24, 2010

Assembly School Link

I found the ever-elusive ASM School website, which is a pretty good Gameboy Assembly tutorial:
http://gameboy.mongenel.com/asmschool.html

I have another big project in the works right now, so once I finish that I'll write up a tutorial or two on my assembly adventures.

Friday, June 18, 2010

Update

Now that school is finally over and the ACT's are in the past, I can get into the real programming of the Gameboy, which is what this blog is all about.

I found this really awesome program for the computer that is probably the only windows application (not command line crap) for creating gameboy games. It's called Gameboy Assembler Studio, and it can be downloaded right here. Since that site may go down in time, I'll get permission from the site admin to post a zip file of that program on this blog if that ever happens.

Since I have never coded anything in assembly before, I will have to browse around for some good tutorials and post a few links of good tutorials in a few days.

Also, I will be making my own gameboy cartridge reader/writer from scratch, and I'll probably sell it on my main website for $20 to $30 if I can find a low-priced cartridge connector.

Monday, January 25, 2010


Thursday, January 21, 2010

Update

I haven't posted in a while because I have been so busy working on school and this project.  However, I finally got it to work!  I got a null-modem adapter from amazon.com and hooked it up to my ancient IBM laptop.

I also got the reprogrammable gameboy cartridge done.  I will post the pictures and info on it soon.  If you are reading this and want to make a reprogrammable gameboy flash cartridge, then do what I did ONLY if you are quite confident in your soldering skills, you have a 32-pin DIP flash chip (and found a load of guides for using PLCC's or SOIC's and don't know what do you with your through-hole chip) and you have 30+AWG wire or copper strands with a thin laminate coating.  :)  Otherwise, you will be in for a lot of pain and misery.

For those of you that are true DIY drones such as myself, I can give you a few pointers here and now on how to make a DIY gameboy flash cartridge.
- The first thing for you to do is to print out the image below.  This is a schematic of a Gameboy cartridge with the standard MBC1 chip.


- Now you should print out the one page of your datasheet that has the pinouts of both the DIP chip AND the PLCC chip.
- Next, print out the image below as well.

- Now, if you are using a standard dip chip for this, then you probably wouldn't have to print those out if you don't want to, but I suggest that you always have a hard copy of these old development diagrams, because the sites are ticking down to their expiration date.  In fact, I am fairly sure that one really excellent site went down just last night.  I don't know if it will be put back up, but it is eye-opening.
- If you are using the PLCC chip, then just print out that second diagram and follow that--it will be a LOT easier than what the DIP chip folks will have to do...
- For you who don't want to get a PLCC chip and want to have a DIP socketable flash cart: Now that you have your datasheet and those two diagrams, look at the pin labels of the DIP chip, and compare them to the schematic.  They should be identical, except for a few pins.
- What I did was I used tiny little wires and soldered one to each individual SOIC pad.  This entire project, including making a board for the DIP chip to go on, took me around 5 hours.  However, it should only take you 3-4 hours as you aren't documenting it and experimenting along the way.  :)
- (so much for a few short tips...)
- For my wire, I actually got some stuff off of an old CRT monitor I disassembled, and it happened to be the magnetic coil wire.  This meant that it had a thin coating of some plastic-ey material, but only the very ends of the wire were bare.
- First you need to remove the original ROM chip in the cartridge.  This can be done by either x-acto-kniving it out or by using a desoldering braid and a screwdriver to pry it out.  It is essential that you don't remove any of the pads that the chip is on!!
- What I did was I put solder on each of the SOIC pads; as depicted below.

- This is one of the numerous tricky parts: with your spool of wire, soldering iron with a very fine tip, and the victim-to-be cartridge, heat up the solder you just placed on the pad, and insert the wire at a 30 degree angle from the opposite side.  This way, the wire is certain to be electrically connected to the pad.
- Don't leave your soldering iron there too long--you might end up moving it and create a blob between two pads, and end up using your solder sucker to get it off.
- Once you got it soldered on there, give the wire a small tug, wiggle it around a bit, and make sure it won't fall out the moment you have it all together.  If it passes this test, then cut the wire off of the main spool.  Be sure to leave LOTS of slack on your wire--around 2-3 inches in length for each wire will be good.
- Repeat this....  32 times!!!  Mwahahaa....  But seriously--there are 32 pads you need to solder dinky wires to.  It is a pain, but it has fairly good results.
- What I did when I made mine was I had all the wires leading to the left, as shown below.

- Then I just repeated the process of putting solder on the pads, heating up the solder, inserting the wire and cutting the wire for the other side.
- Be sure to have the wires for pads 17 through 32 leading off to the left as well.  This will make it much easier for you.
- With all your wires leading off to the left side of the cart, now would be a good time to test for continuity, and to put down tape over the battery and/or other chips if you want.
- For this next part, you will need some tweezers or micro pliers.  What you are trying to do is to get it so your cartridge looks like this:

- To do this, simply use the tweezers to bend the tiny wires so they go vertical.  Try to get the bend as close to the solder pad as possible without accidentally breaking off the wire.  I had to re-solder two of my wires when I did this.
- You are almost there!  All that's left to do is to decide how you want to go about positioning the flash chip.  But while you think about that, you need to hack up the cartridge case.
- If you want to make it so the chip is right where the "Nintendo Gameboy" text is on the cartridge front, then you will need to cut slots with the spacing of your flash chip so it can sit in there.  Then you will simply solder the wires on to the corresponding chip leads (except for pin one of your chip, which REQUIRES no connection).  You could also socket the chip this way, and I regret not doing my cartridge like that.  I actually made a board that sticks out the top of the cartridge and is really wobbly, causes glitches and poor connections, and will be desoldered today!

Now, for an initial test, you should build the gameboy cartridge flasher project I described and BEFORE you follow all those steps, copy the game ROM file to your computer, or just download it off the internet.  You still need the cart flasher to program your cart, though.
To program your beta-flash cart, you need to click on the "write FLASH" button in the GB Cart Flahser 1.1 software and select the ROM file you want to load.  NOTE--for a first test, just use Metroid II--it is a small file, and supports RAM and battery saving.  Once you program it, I suggest using your beta flash cart on a gameboy advance (not advance SP) because the gameboy's cartridge slot is rather limited concerning space.  Then, just power it on and see if it works!

If you need help on this project or want info on development/flash carts for the SNES, NES and Gameboy, feel free to comment.

Tuesday, January 5, 2010

Odd happenings....

Well, it seems that in my troubleshooting process, I never once had the software for the Gameboy Cartridge Flasher up without the actual device plugged in.  However, I was in a hurry to run a few more tests and had my cable connected to the computer and not the device, and strangely enough, it found the Cartridge Programmer!
...
Wait a minute...  That can't be right...  I don't have an IR receiver on the GBCF!

It turns out that my cable was not a straight through serial cable, so I am now finally just making my own DB-9F to DB-9F null modem cable and returning the $11 RipoffShack null modem adapter.

-Vaati

Monday, January 4, 2010

Intro

Hello,
Welcome to my blog page! Just so you know, this is for my own use just as much as yours. For starters, what I am trying to do is to be able to program games or apps to modified Gameboy carts containing a Flash chip.
If you want to do some Gameboy programming, I suggest this site. It's where I got a lot of info and got a guide on what I have built: the Gameboy Cartridge Flasher.

This is my Gameboy Cartridge Flasher. I etched the PCB, ordered the parts I was missing, gutted my broken Gameshark for the connector, and programmed the chip....
IT DOESN'T WORK.
My guess is that the program itself must be bad, or I didn't program it correctly. I don't know if I need to program the ATmega8515 with ALL the parts connected to it, or just the crystal.

I am going to be posting some more once I have more free time, and if you have any feedback, feel free to comment.

-Vaati