r0.fyi

Hi, I'm Anatolij Vasilev (@tolik518), a software developer from Germany.

I'm interested in all kinds of stuff, for now I'm into Rust and Retro Computing.

On the page you'll find projects I worked on in my free time, and occasionally a blog post.

Kleiner Einstieg in die Game Boy Advance Programmierung

June 10, 2022

Ich wollte schon seit längerem wieder einen Post schreiben und eigentlich wollte ich ja mal öfter was posten. Aber dadurch das der Blog hier noch halbfertig ist, schiebe ich das ständig vor mich hin. Ich hab den Source-Code aber auf Github veröffentlich. Also wer Bugs findet, muss die nicht für sich behalten :)

In den letzten Tagen hab ich mich ein Bisschen mit C beschäftigt. Genauer genommen mit GBAProgramming. Ich wollte mich schon seit Ewigkeiten damit beschäftigen aber der Einstieg sah für mich immer so kompliziert aus, weswegen ich nie damit angefangen hab. Vor über 10 Jahren hab ich mich schon in der Pokémon ROM-Hacking-Szene bewegt und hatte immer Lust was eigenes zu machen — damals konnte ich aber noch nicht wirklich programmieren.

In meiner Ausbildung hab ich mich zuletzt viel mit Docker auseinandergesetzt, also kam mir die Idee das ich doch die ganze GBA Entwicklungsumgebung — DevkitARM/libgba/libtonc — ja gar nicht auf meiner lokalen Maschine installieren muss, sondern ganz einfach containerisieren kann! Dann hätte ich weniger Probleme mit den ganzen Dependencies und könnte auf meinem Linux-System und auf dem Windows-Rechner daran arbeiten, oder? Am Ende war es auch wirklich so einfach! Ab da war ich ein bisschen gehyped, um ehrlich zu sein. Am Ende hab ich sogar statt dem offiziellen Docker-Image für Devkitpro lieber einen eigenen Multi-Stage-Build geschrieben und mir damit über einen Gigabyte Speicherplatz gespart.

Ich wollte schnell ein Pong für GBA schreiben, aber ich hab relativ schnell gemerkt das ich ja gar kein C kann... und keine Ahnung hab wie Spiele programmiert werden. Nur weil ich mit C# Windows-Anwendungen und mit PHP und TypeScript kleinere Webseiten geschrieben hab, heißt es anscheinend noch lange nicht das man mit C, auf eingeschränkter Hardware, Spiele schreiben kann. ¯_(ツ)_/¯

Schade eigentlich. Am Ende heißt es aber einfach nur das es mehr Zeit in Anspruch nehmen wird als erwartet und das ich viel lernen müssen werde. Ich hab auf jeden Fall Bock. Das coolste was ich bisher gelernt hab ist das a[i] eigentlich nur Shorthand für *(a+i) ist — also ein Pointer auf a plus i. Dadurch das man bei einer Addition die Summanden vertauschen kann, kann man auch *(i+a) schreiben, oder i[a] als Shorthand. Ist logisch soweit, aber dann heißt es das ich anstatt meinArray[0] auch 0[meinArray] schreiben kann. Das ist schon sehr absurd tbh.

Ich hoffe mein nächster Blog-Eintrag kommt bald und hat mehr schicke Bilder als langweiligen Text.