Getting ready for GBA Homebrew Development

In my recent post I have been talking a lot about the GBA and some of my plans of writing homebrew for it. I have already tested a few small things but now I want to set up a development workflow for it. This means testing examples, tweaking and running on real hardware. The obvious way to do this is running a ROM in an emulator and ofcourse this is part of that workflow. But at some point it needs to be tested on real actual hardware. And that is what I am going to talk about today :D

Over the last few days I have been reading a lot of documentation and I think I have a very basic idea of how to use the system. What I would really like to have something similar to wiiload and 3dslink that allows me to "upload" a new ROM to test stuff out on the hardware. Since the GBA already has a build-in feature that allows it to download programs over a link cable that was originally meant for multiplayer that is a good place to start. For this purpose I have cut a multi-player cable and wired it to a Raspberry Pi to test a few programs I had found. While the upload speed is quite low it does work for small programs. I am currently using a python script that's based on a C++ uploader and the cable is connected to a breadboard and jumper wires....resulting in a less than stable connection. But at low speeds it seems to work good enough though.;)

The other obvious way to test bigger ROM's is using a flashcard's but the hassle of swapping SD cards get's old really quickly! What I am planning is to create a "gbalink" uploader that runs on the raspberry (or eventually on a remote PC) allowing to upload "multi-boot" homebrew to the GBA. As an extension to that I also want a way to have the uploaded program act as a "bridge" so I can access the RAM and VRAM from my PC with various commands. This will allow me to easily test graphics and sprites without compiling a new ROM every time!

To give an idea of how I see that upload work:
- execute command: "gbalink remote_mb.gba"
- "gbalink" will wait for a GBA and upload that ROM to it
- the "remote_mb.gba" ROM is a small loader that will wait for commands like:
- READ: read a RAM location in 8,16 or 32 bit mode
- WRITE: read a RAM location in 8, 16 or 32bit mode
- UPLOAD: upload data of size x (I guess small packets of 1-1024kb) or something would be nice)
- DOWNLOAD: same as upload but in reverse
- DMA: Use DMA to copy data from one place to another. (useful to upload graphics data or OAM data and than quickly transfer it to the GPU)

Maybe more useful commands could be added but this should be enough to get the idea. While I have an EZ Flash Omega on it's way to play with later, at the moment I only have the SuperCard MiniSD. While it's considered a bad and cheap flashcard it's what I have and hopefully it's good enough. It should have 32MB of RAM and it has an SD card slot to load data from. No matter how slow it might be loading data from it should be WAY FASTER than over the link cable :D Ofcourse the 2GB card limitation and no SDHC is an issue but I think it's only a problem of the default firmware being outdated! Electrically the SD cards are compatible but the protocol to access the card and the default filesystem are different, and that is why it does not work. Since I need to add SD card support manually in homebrew anyway why not test this theory right :wink:


In case anyone knows of helpful documentation or already existing apps (opensource preferred) please let me know. At least all my projects are keeping me too busy to get bored :rofl2:
  • Like
Reactions: 2 people

Comments

If you want to get really fancy
https://nerdtechy.com/best-wifi-sd-card
Might have to get a bit more creative with the wiring, and I don't know if you will be able to find a SD compatible one, but all within reason.

Or you could get a DS/DS lite, boot in DS mode (could even use flashme) and use something like DSFTP to gain a FTP server, reboot in GBA mode and go from there. The Omega and newer EZ4 models/firmwares won't support DS mode so you are probably left with the supercard.
On the other hand I was there not but a few days ago when you were experiencing the joys of DS wifi.

If you went searching for old links about the multiboot stuff then you probably came across it but for the sake of others reading
https://web.archive.org/web/20161014111841/http://www.reinerziegler.de/GBA/gba.htm#Multiboot
 
  • Like
Reactions: 3 people
While I am not sure how I could even fit a wifi-sd-card in the supercard mini sd,I did research those cards a couple of years ago. They setup an accespoint over which you can access the pictures or something but the wifi is not exposed to the camera from what I know. Luckily we have better options today in the form of an ESP8266 or ESP32 which cost less than the cheapest crappy GBA game on average. And with the ESP32 we can even add Bluetooth to the GBA as shown here to do some fun stuff.:D

...On the other hand I was there not but a few days ago when you were experiencing the joys of DS wifi.
Hahaha, true I am kind of jumping around between projects. But the reason for the DS wifi was to quickly upload a new build of my GBA Cartridge Validator with dslink which is working now :yay:. But I had extended that app to also make a backup of the cartridge and savegame in addition to validating the ROM hashes. And I was unable to successfully read the EEPROM saves on the NDS but it works on the GBA so that's what led me into reading more about both systems and see what the difference between them is. :D:shy:

I did came across that site during my many searches. Not sure if it was because of the multi-boot or trying to figure out how to make use of my USB Flash2Advance link cable again. maybe I should do a little reverse engineering on the cable and the old software to make a Linux version that can do multi-boot over it. :lol:....but when I found the Raspberry Pi projects I figured that would be much easier to use in the short time.
 

Blog entry information

Author
Archerite
Views
134
Comments
4
Last update

More entries in Personal Blogs

More entries from Archerite

General chit-chat
Help Users
  • Skelletonike @ Skelletonike:
    Tripas Enfarinhadas is the intestine
  • Skelletonike @ Skelletonike:
    not the stomach

    :D
  • Skelletonike @ Skelletonike:
    It's great <3
  • AncientBoi @ AncientBoi:
    LoL. No. good bye
  • Skelletonike @ Skelletonike:
    Fried tripas and fries <3
  • K3N1 @ K3N1:
    My power just randomly went out and it's not even raining out lol
  • H @ hecker_isaac:
    morning peeps
  • coolax @ coolax:
    hey guys anyone can help me for LOZ : TOTK ? im trying to install theses 60fps file but I don't understand where i'm suppose to paste them. ? anyone kno ?
  • K3N1 @ K3N1:
    Your mom's spaghetti
  • Psionic Roshambo @ Psionic Roshambo:
    Her armpits sweaty already
  • K3N1 @ K3N1:
    On the surface
  • Psionic Roshambo @ Psionic Roshambo:
    Flies crawling and pizza stained already
  • K3N1 @ K3N1:
    My noodle has vomit on it already
  • Psionic Roshambo @ Psionic Roshambo:
    Monica's dress stained already
  • SylverReZ @ SylverReZ:
    @Psionic Roshambo, Bill Clinton no!
    +1
  • SylverReZ @ SylverReZ:
    Lmao
    +1
  • Sonic Angel Knight @ Sonic Angel Knight:
    Mama Mia spaghetti :P
    +1
  • DJPlace @ DJPlace:
    don't forget the meatballs
    +1
  • Sonic Angel Knight @ Sonic Angel Knight:
    Mama mia wouldn't forget meatballs in her spaghetti. :P
  • Sonic Angel Knight @ Sonic Angel Knight:
    Speaking of meatballs, what's the deal with meatball sandwich? How can people eat those? It's ROUND. Trying to bite those in a sandwich is a challenge. It's easier to eat a burger stacked with toppings. :ninja:
  • idcwhat3v3r @ idcwhat3v3r:
    here's my cup of care
  • idcwhat3v3r @ idcwhat3v3r:
    oh look, IT'S FUCKING EMPTY.
    idcwhat3v3r @ idcwhat3v3r: oh look, IT'S FUCKING EMPTY.