From 3dbrew
Jump to navigation Jump to search
Alexander Nicholi
Gender Genderless
Age 113
Location Antarctica

I am a software developer and homebrew enthusiast; on the wiki I usually like to do aesthetic cleanup of articles. I am getting my first 3DS very soon, however I have spent years learning about assembly, ROM hacking, and homebrew dev on the Game Boy Advance.


Here are some summaries of the homebrew/hacking-related projects I am either currently working on or have worked on in the past.

Pokémon Citrite[edit]

A ROM hack of Pokémon Emerald that I started in 2014 on the Game Boy Advance. It evolved alongside my knowledge of ROM hacking and grew with how much I learned about the GBA and Game Freak's engine. Over time I learned many fundamental skills, including how to:

  • Write ARMv4 Thumb assembly
  • Reverse engineer code in IDA Pro
  • Effectively manipulate the GBA's hardware
  • Hack in C code into the existing Emerald binary
  • Automate ROM hacking into a single "build step" using Make

Development of Pokémon Citrite gradually came to a halt however, as it dawned on me that my game would never see popular fruition, mainly because I was permanently banned from the PokéCommunity (a forum with the largest Pokémon ROM hacking scene) unjustly. After departing from the ROM hacking development scene I decided to get involved with homebrew on the GBA, and write my own game engine for it in C++; this allowed the essence of Citrite to live on, but without any connection to Pokémon so I could retain copyrights (See: Trinity).


An independent continuation of Pokémon Citrite written in C++ for the GBA. Source code will be based on the fruits of libGBAmm and Saturn once those projects are ready for use.


An object-oriented rewrite of the libGBA provided by devkitPro, currently available on GitHub as a work-in-progress.


A generic framework that builds on libGBAmm, comprising a template project that can be used to jump-start other projects on the GBA. Will be written in C++, like libGBAmm, and will include:

  • Classes and functions that make working with graphics more human
  • A frame-based asynchronous task system
  • A mainloop complete with a modifiable set of purposed callbacks
  • A console interface that switches between input and output upon Select
  • More abstractions for key input, sound, and link cable networking


No details yet, but stay tuned. :)