Thursday, April 08, 2021

Retro Game Dev

My brother got me a copy of Derek Morris' book on C64 game development. It is more or less a printed tutorial to his studio-like application that features code editor, resource packer, Commodore emulator and C64 graphic editors. I haven't managed to run that in WINE so far, unfortunately, but reading the book was already quite interesting.

One nice thing is that the games discussed in the book are programmed in assembly language. So we can skip the usual PEEK and POKE things and start straight with the main meal. I'd love to be able to say that the libraries that come with the studio let you focus on your game logic without having to figure out how to pull joystick state and push tiles into graphics memory, but the reality is that it adds a layer of confusion instead of abstraction.

Things like Screen_SetColors or Sprite_SetFrame are understandable and generic enough, but the "particles system" using special background characters to emulate more sprites would have been nice to see discussed in the book. Same goes for a few more key algorithms like map update after something got picked up, played monster collision, and the like.


A défaut de la démoparty espérée pour mes 42 ans, mon frangin m'a dégotté un bouquin sur la programmation de jeux pour C64. Il faut dire qu'entre Wolfling, PowerGlove et Relentless, mon frangin avait eu le temps aussi de cogiter à une adaptation de Spector sur C64 (mais bon, lazycow a finalement remis le couvert avec le chapitre II de Wolfling). J'imagine que ça pourrait être un appel du pied.
Le côté intéressant, c'est que le bouquin ne s'embarasse pas des PEEK/POKE bien connus de ceux qui ont essayé d'aller plus loin que le PETSCII en BASIC: ici, on code en assembleur. Enfin ... d'une certaine façon.
A côté du bouquin, Derek Morris nous propose en effet un "studio" pour windows, avec éditeur de salles, de sprites, de tiles et compagnie et une série de bibliothèques de macros pour pouvoir commencer son petit titre sans devoir se farcir les détails techniques de la programmation hardware de la bête.
C'est sympathique (et plus gamejam-friendly), mais ça transforme aussi une grande partie de la lecture en une sorte de visite-guidée-faites-moi-confiance où ira rarement plus loin avec l'assembleur qu'une petite augmentation du score ou une bidouille de la vitesse, parce que le reste se situe généralement à l'intérieur d'une macro qui n'est pas reprise à l'écran. Pour celui qui est curieux de savoir comment les tirs, les collisions ou les mises à jour de maps sont gérées, bin il faudra ouvrir le .zip parce que ce ne sera pas dans les pages.

Ah, par contre, sorry frangin: la gestion des musiques de fond, c'est aussi réservé au tome 2.

It is also a bit disappointing that the "engine" is only capable of scrolling 1/3rd of the screen, and thus the "platformer" example looks more like a simplified Wonder Boy title than the Great Giane Sisters.
60-fps full-screen scrolling requires page-flipping and interrupts, says the last page. It's a starter kit, in a sense, not a PhD thesis on Wolfling-like guru techniques that would push the limits of the machine. Well, I guess starter kits are good to have too, aren't they?
Now ... maybe for game jams ...Yes, I think that could be a good setup for an 8-bit game jam.

No comments: