In the first episode of this trilogy (Christmassy only in name) we talked about C and about an open source application that runs on a Game Boy Advance. In this second part, instead, we'll discuss AI. Yes, I know, your feed is begging for mercy.
📌 GPT: pay or pass?
For this project I used GPT-5.2 (the paid version) intensively. The main difference compared to the free version was its ability to maintain a much, much wider and more stable context over time. On an open source project, with no confidentiality constraints, this was a huge advantage. (OpenAI, unfortunately, doesn't pay me for this sponsorship :/)
One of the most interesting aspects is understanding what role AI really plays when you use it intensively. Often the first output wasn't the right one. But almost always it was sufficiently right to be able to work on top of it. Initially I used it mostly to:
- generate first prototypes of functions
- refactor hundreds-of-lines methods (AI-generated) into smaller functions
- reorganise logic and responsibilities
- model the application's domain better
- choose clearer names for functions, constants and states
📌 AI, panettoni and cognitive cost
...then a less obvious effect, but perhaps the most important one: AI drastically reduced the cognitive cost of switching languages (helped along by panettoni and the scarce blood flow to my brain).
Coming from the Java world, the paradigm shift was sharp. Not only at the syntactic level, but really at the mental one. In this context AI was extremely useful as a learning tool too: targeted explanations of C constructs, direct comparisons with Java, and a constant alternation between theory and application. This lets you explore and dig into a language much faster than doing it on your own and, above all, in a less tedious way.
Another important point: the open libraries for the GBA don't exactly shine for accessibility or completeness of documentation. Here AI worked as a researcher, summariser and interpreter, especially for those who aren't used to programming this close to the hardware.
📌 The "hassle" counts too
I didn't use it only to write code. It was just as useful for everything that's usually a necessary hassle: validating feature ideas even before implementing them (it didn't just speed up the doing, but also the deciding what not to do), writing commit messages, generating READMEs and CHANGELOGs, choosing and drafting an open licence.
The quality of the final result didn't come from a brilliant prompt, but from a great many micro-iterations with the AI.
In the next and final article we'll connect all of this to the real filesystem of the EverDrive. There, AI helps, but the hardware is unforgiving.
To be continued... ☕
📑 Link to the repo: gba-txt-reader