Going through Jasper Vijn’s tutorial on making games that target the Game Boy Advance was honestly eye-opening. I mean, this tutorial convinced me of the virtues of coding in C. Compilation became approachable. Makefiles became my friends. I no longer fear pointers or raw memory-addresses. My knowledge of low-level graphics programming got such a big boost; Libretro’s software-rendering example made a lot more (though not yet absolute) sense! I mean, I actually know what a pitch is! (Low-level sound still freaks me out a little, though that may be because I did not get to that part of the tutorial yet.)
The biggest part was that I was worried that my Master’s Degree in Software Engineering was pointless because I had little practical knowledge (think makefiles and that stuff), while I had trouble picking apart rather advanced C++ code. I am not sure if that was due to the simplicity of Mr. Vijn’s tutorial, but I could not only actually understand the stuff (if I take things piecemeal), but a few things went without saying! (Of course I would abstract away stuff that I would otherwise repeat in my code!)
Whether I target the Game Boy Advance or not when programming games, I thank Mr. Vijn so much!
When I formed my goal of releasing Re-Hoard and Reckless Abandon on September 10, I was thinking only on coding, graphics, and music.
I realized recently that there are more steps after that.
In all, I need to give the games the respect they deserve.
I knew that making September 10 a mere goal instead of a promise was wise.
I should be finishing Re-Hoard and Reckless Abandon, but, other than doing most of the sprites at Re-Hoard, I spent most of my time trying to figure out how to display graphics through Libretro.
Basically, because I plan on using software rendering (which is more portable due to not dependent on any specific API), all I need to do is render to a framebuffer… or the backbuffer. I know that I am going to exclusively use .png files and, because of my choice of 2D retro-style graphics, the RGB565 format, but I do not know the exact procedure in displaying and moving graphics while targeting Libretro. I mean, I did not even know of RGB565 before reading the libretro.h file! LÖVE did not give me this much trouble!
I can use a sprite library, but those were made without the knowledge of Libretro, which means that they would render using SDL2 or OpenGL instead of the generic software rendering layer that Libretro uses. Even if I did find one that uses software rendering, I have trouble knowing how to write .png files to a framebuffer or backbuffer! Libretro does have its own png decoder, but I do not know how to use the thing! This is not even taking into account the Box2D or Chipmunk physics engines that I plan on using!
I still plan on going ahead with using straight C++ with Libretro instead of writing in Lua and running the resulting core through Lutro. After all, I prefer to be the closest possible to the Libretro library because I find that the extra control outweighs the difficulty. Besides, this knowledge would be helpful if I ever get a job at another game company. However, if this gets too difficult, then I shall use a Rust engine and rely on Libretro’s Rust wrapper, instead.