Thursday, March 27, 2025

#20games part 3

Rick Dangerous has its own tag on this blog. This is a clear indication of a influential game. It's not so strong on Bilou's adventure (apart for a spikes at the bottom of pits), but it was Rick that pushed us into making our own platformers, even before Sonic and way before Mario. Its influence was still strong in Calimero, although the impact of Sonic was equally strong on that one. But I never end up telling myself "oh I know, I'll make a Sonic-like" when I need to do something with a "new" character. And I never tell myself "oh, I know: I'll bring Sonic as a cameo playable character". That's for Rick only.

Il reste quelques jeux parmi ceux-qui-m'ont-influencés qui datent d'avant le premier jeu Bilou-en-plate-forme, je pense que ça vaut la peine de les rassembler, même si à ce stade-là du challenge des 20 jeux, ils se retrouvent éparpillés sur les 12 jours restants. Commençons par Rick Dangerous, le jeu qui aura détrôné Sonic (Master System) de cette collection. Parce que si Calimero est construit sur un mélange des deux jeux, très rapidement (sic), c'est le côté Dangerous qui l'emporte dans le gameplay. Et quand je commence à avoir quelques petits sprites prêts sur NDS, à quoi je pense comme moule-de-jeu ? Rick Dangerous. Et quand mon frangin ressort l'idée d'utiliser son personnage "Spector" pour participer au C64 challenge, qu'est-ce qu'on propose ? Rick Dangerous. Et qui mettrait-on bien comme personnage "un peu plus stylé" dans un remake NDS de pharaoh's curse ? Encore Rick Dangerous. Même "Nono in the Maya Zone", n'est qu'un Rick Dangerous déguisé sans Rick.

Passons. Bubsy, c'est un de ces jeux dont on a pas raté la sortie. '94, on était au taquet, de retour devant la télé tous les samedis pour écouter Maniac et Sam Touzami nous parler des dernières nouveautés et nous présenter des trucs et astuces sur les jeux qui avaient déjà quelques mois. Bubsy en a fait partie, et même si on y aura pas joué dès le départ, le côté cartoon/potache de son animation se retrouvera intégrée dans la proposition de Bilou pour le concours de jeu... et qui deviendra un de ses traits de caractère jusque dans les "on the road" de la BD. C'est aussi un des jeux dont la musique ne me quitte pas, ce qui est un autre signe distinctif de jeu qui a eu de l'impact.

Comparatively, it may be surprising to see Bubsy in the list, but it came out precisely when we were brainstorming what the exact formula of Bilou's Adventure should be. New zones ... new super-powers ... new mechanics ... Unlike me, my brother wanted something combining the most original ideas of the era (like Rolo the Rescue map pieces), and Bubsy's animations were certainly novel by the time. More personnally, I keep getting a smile when some Bubsy tune pops up in my playlist. I cannot say the same for Sonic ^^".

Think about it that way: before Bubsy, Bilou was a mere next-game character. After Bubsy, I started practicing little cartoony animations where Bilou would end up stunned/splatted/electroshocked ... 

Donkey Kong Country, j'étais sur le point de commencer l'aventure RSD Game-Maker quand il est sorti ... C'est sans aucun doute une de mes référence en gameplay (et qui a son tag), même si je n'ai jamais envisagé la possibilité de faire un jeu qui y ressemble. Quelque soit l'élément considéré (type de graphisme, d'animation, dimension des niveau ou leur organisation), ce n'est pas quelque chose que je peux tenter en solo. Pensez ... 4 types de "Yoshi" différents ? C'est tout simplement hors d'atteinte. Pourtant ... pourtant quand viendra le moment de reprendre le design en main pour la DS, il reviendra régulièrement à l'avant de mes pensées parce que trouver des secrets dans ce premier DK, c'est à peu près aussi chouette que dans Prehistorik ...

Le plus délicat,ça aura été de choisir entre DKC et DKC2 ... mais malgré ses perles musicales et le monde caché qui manquait cruellement à DKC, il y a trop d'endroits de DKC2 que je n'ai pas envie de visiter, en particulier en début de partie, si bien que je me retrouve rarement à me dire "oh tiens, je me ferais bien un DKC2"

Donkey Kong Country was one of the key games in my life, but it is also the first key game I knew I couldn't ever mimmic. It's super-ambitious to believe I could craft something comparable to Super Mario World or Bubsy, even as a life-lasting project. But DKC is just out of reach as a solo developer. I don't think I've ever envisioned doing it. I'll only make a few observation regarding gameplay, and try to identify what is fun when hunting for secrets in the DKC series ... but that's it.

Surprisingly, though, Rayman became the ultimate game model for Bilou. With epic boss fights, gathering powers as you progress in the adventure, revisiting levels with powers you've just earned to unlock more secrets. It was also the proof that my idea for animating limbless characters could actually work although it was still very crudely done in the prototype I had when Rayman appeared on the shelves. Many people will compare Bilou to Rayman even nowadays (especially when seeing the School Zone), yet Rayman pushed me to avoid or even remove things more than include them, to ensure that Bilou would remain sufficiently distinct. In August '95, Bilou.bas could let you throw your fist if you had the "turtle power" (iirc). It would never be reused again...

Et pour clôturer, il y a Rayman ... le jeu auquel les aventures de Bilou sont le plus souvent comparées. ça me fait plaisir, puisque c'est un de mes jeux préférés, et en même temps, je ne découvre le jeu que 2 ans après le début du travail sur Bilou, quand à peu près toute la phase de "pré-production" de mon frangin a eu lieu et qu'il n'y a plus "qu'à pixeliser et coder tout ça". Rayman, c'est le jeu qui va définir ce que Bilou ne doit pas (ou plus) faire. Ne pas aller dans une zone des instruments ... ne pas faire des champignons qui marchent ... ne pas lancer son poing (pourtant c'était déjà codé). Ce sera le prix à payer pour garder une identité propre.

/boot/grub/oops.cfg

Une petite manip' de travers et je me suis retrouvé avec une machine multiboot automatisée qui ne bootait plus du tout. just un "grub2>" tout seul ... en général, je finis par retomber sur mes pattes dans ce genre de situation, mais cette fois-ci, même un simple "help" virait au "help.mod not found" ... Eh oui, il a bien changé, le monde des secteurs boots... le bootloader est un fichier comme un autre dans le répertoire /EFI d'un disque particulier. il charge des annexes venant d'autres fichiers comme les autres, et il peut aller les prendre avec l'un ou l'autre système de fichiers ...

Parce que oui, au moment d'utiliser la commande grub2-install --efi-directory=/boot/efi --boot-directory=/where/you/want/it/to/be ..., l'outil d'installation va regarder quel type de fichier est utilisé par le boot-directory et placer un grub.efi intégrant xfs ou fat ou (pourquoi pas) reiserfs ... 

Bonne nouvelle, par contre, les modules permettant d'accéder aux différents systèmes de fichiers sont tout de même disponibles, et la commande search --no-floppy --fs-uuid --set=VARNAME UUID_GOES_HERE marche toujours. Mais je tournais en rond jusqu'à ce que je note un set prefix=(hd0,gpt5)/boot/grub2 ... j'essaie quelques autres gpt (la table de partition, pas le chat) pour finalement tomber sur celle qui marche. Hourrah! Je peux enfin retrouver les fichiers vmlinuz et initrd ... je peux lire le fichier /boot/loader/entries/*.conf correspondant à ce que je veux démarrer pour copier-coller les uuid à travers l'interface chaise/clavier et au bout de 2 ou 3 erreurs (où le noyau linux s'est retrouvé sans système de fichier et ou j'ai préféré rebooter plutôt que de m'acharner avec des mount /dev/nvme0n1p5 /), j'ai mon linux de nouveau d'attaque... Ah parce que oui, menuentry, c'est bon pour les OS étrangers. Les entrées du genre "démarrer le système", "démarrer avec le kernel précédent" et "démarrer en mode opération de sauvetage avec Lino Commando", on a droit à des fichiers séparés que blscfg (encore un autre module, suivant les BootLoaderSpec) va passer en revue.

j'aurais probablement pu me simplifier la vie en exécutant export $prefix ; configfile $prefix/grub.cfg une fois le "chemin d'accès à grub.cfg" corrigé, mais ça, je ne l'ai découvert que trop tard ^^"

Bien, donc j'ai pu depuis mon système redémarré revenir à un système fonctionnel à coup de grub2-mkconfig et grub2-install, mais du coup, je perdais ma tentative de modifier l'OS à booter depuis n'importe quel OS en ré-installant grub sur une partition partagée ... et rien à faire, pas moyen de trouver où était la définition de cette variable prefix ... Mais j'avais vu un truc intéressant: la présence d'une commande source FILENAME suggérant qu'on pourrait aller lire un fichier .cfg minimal sur la partition partagée et garder grub tranquillement là où il est censé être.

Monday, March 24, 2025

#20 games, part 2

There has to be some Super Mario in my unsorted list hash of 20 most influential games... Given that we're only considering 20 games, it was also clear that I would likely keep only one of them. That *had* to be Super Mario World. The original one, on Super Nintendo. There are countless qualities in other Mario titles, but SMW is *the one* I wish I could be playing everytime I feel so. So that was game #5.

Pour vous, lecteurs de ce blog, voir un Mario apparaître dans la liste des 20 jeux qui m'ont marqués devrait être évident. Avec "seulement" 20 jeux, c'était clair qu'il fallait que j'en choisisse juste un, et que ça ne pouvait être que Super Mario World. Aucun autre avant ni après lui n'a aussi bien utilisé Yoshi. Aucun autre ne m'a à ce point marqué par ses choix graphiques au point que je chipe sa carapace de koopa comme icône pour mon terminal. Ils ont assurément leurs qualités propres, mais c'est à SMW que j'ai envie de rejouer.

It might be surprising, but I also wanted to include Zool. Because it's the pre-dever' embodiment of a game where you're in the middle of living objects. People often point out Rayman when they see School Rush, but you won't see any walking pencil or bouncing eraser in Picture City. They would definitely have worked in Zool.

Bon, ça vous surprendra peut-être que j'aie repris Zool dans cette liste. Lui, ça fait des décennies que je n'y ai pas joué, et je dirais que je le vis bien. Mais y avoir joué en 1993 a été déterminant pour la construction du monde de Bilou. Pas sûr qu'il y ait eu une School Zone s'il n'y avait pas eu Zool pour nous montrer la voie.

Si les environnements de Bilou ont du Zool dans le sang, le personnage lui-même n'a pas grand-chose en commun. Bilou serait plutôt un cousin de Coolspot de ce point-de vue là (11eme jour du challenge). Au point que dans la version BASIC, l'affichage indiquant le nombre de vie restant montrait Bilou plus ou moins tranquille d'esprit, un truc directement inspiré par la "pastille qui se décolle" du HUD de Coolspot. Par contre les environnements de Coolspot sont un peu trop "normaux"

You'll note that Bilou as a character is very unlike Zool, but there was another major platformer outsider in '92-'93, and that was Coolspot. Simple geometric shape with feet and hands, defined mostly by its animation... When you realise that one of Bilou's power-up implied shades, you won't be surprised if I tell you Coolspot's health meter inspired a "1-UP count" in the BASIC flip-screen platformer where you can read Bilou's anxiety regarding the lives left on his face.

Comparatively, Rainbow Bells Adventure seems to have been only lightly inspiring (apart from "Pipe Zone" music in my head). Yet, I've been hunting for ways to play that game for years. To the point where I couldn't write this post without trying to install an SNES emulator on my NDS and try running Twinbee there. Oh, it was the first game I've played where you could cummulate power-ups (where Mario would insist on swapping them).

Le jeu du 7eme jour conclut à merveille ce batch: Twinbee Rainbow Bell Adventure. la pépite qui n'a pas été rééditée, dont on a pas les sources ... au point que tout en faisant le challenge, j'ai fini par m'installer une version plus récente de SNemulDS pour le faire tourner sur DS... et il tourne. On ne va pas se mentir, on sent qu'on est émulé et l'émulateur n'est pas d'une stabilité exemplaire ...mais il est bel et bien là ;-) Son impact sur Bilou, il aura fallu attendre (à part la musique pour la "pipe zone"), mais si on peut cumuler les power-up dans School Rush, c'est bien grâce à lui.

Sunday, March 23, 2025

PENMENU.S3M

Vous pouvez l'écouter sur modarchive, vous pouvez le dédicacer sur Nectarine ... ce n'est pas le meilleur module de mon frangin, loin de là. C'est le thème envisagé pour le menu d'accueil de Pengo's Adventure, notre premier jeu sur RSD Game-Maker.

Mais c'est surtout en 1996 qu'il est devenu inoubliable pour moi, et associé à un écran tout bleu (avec un raster-effect un peu raté), preuve que ma routine d'interruption continuait bien à progresser dans les patterns et à mixer les 6 pistes pour les mettre dans le buffer transmis en continu par DMA à ma Master Boomer ...

If you've ever written your own .mod player routine (or any other tracked music format), there's a chance that you've had a very-first-tune-that-worked on that player. In my case, that was a tune my brother wrote, that should have replaced the menu music in our very first RSD Game-Maker title: Pengo. Sure my brother wrote plenty of much better tunes afterwards ... he already had some better ones at the time, including a title for the "Maya Zone" of a puzzle-platformer, which I was eager to start working on...

But since "penmenu.s3m" used no effects, it was possible to get it running earlier. It still reminds me of that blue raster showing up while playing -- like everyone else doing low-level programming at the time, I was hacking the background color to give me hints about where in the code I was. There would still be work to do before it could be featured in a game, but my 8-track player had turned from dream ... to reality.

Bon, bien sûr j'aurais préféré que ça soit la musique de Nono dans la Maya Zone ... mais pour ça il aurait fallu aussi le support des effets (dont l'arpeggio) alors que PENMENU, avec juste la colonne de volume, c'est réglé.

On a retrouvé Basket Island

On peut difficilement sous-estimer l'importance du musicien Français Maf sur la musique de mon frère. Assez pour le détourner du genre "Luc Baiwir" omniprésent depuis le concert de '97. Ce que ça a de bien, c'est qu'on peut alors utiliser les commentaires qu'il laissait dans ces pour retracer les influences ... comme le fait que c'est par l'intermédiaire du magazine "PC-Team" que nous avons découvert ledit Maf.

Parmi les titres qu'il avait partagés via la rubrique "productions des lecteurs", il y avait notamment une série de modules faisant référence à une mystérieuse "Basket Island".

Eh bien il est temps de lever ce mystère: quelqu'un a mis en ligne une vidéo de la diskette de démo du jeu "Basket Island" sur lequel l'équipe Syndrome dans laquelle Maf travaillait avec Guillaume Werlé (code) et Raph Le Gall (gfx).

This is the story about a French prototype game named "Basket Island". We had started our university years, and we encountered a collection of .MOD files French musician Maf wrote two years earlier. Some of them were referring to a then-mysterious "Basket Island" project, and my brother especially liked how he managed to have syncoped beat in the otherwise square playback of modtrackers. The influence went beyond mere technique and my brother started investigating the sample set and the style of Maf until he was ready with his own "CJ(is)land" tune.

Des petits écrans qui s'enchaînent, des persos qui suivent le ballon et tentent de mettre des paniers. De quoi convaincre une autre équippe de Posse Press responsable du magazine AMIGA DREAM en '96 de partager l'info avec leur lecteurs. Cette démo fait suite à une autre diskette qui présentait un slideshow de captures d'écrans (ou juste de maquettes, en fait ^^") sur une des musiques de Maf.

I recall my brother did call Maf at some point (pricy, international phone call), and likely this is where we learnt that Basket Island had been an amiga game project, but it never got completed. Nowadays, there are a few videos of the recovered demo disks Maf's demoscene group had sent to game / amiga magazine to promote the game.

Le jeu n'aura jamais été fini. Je vous laisse le soin de creuser les liens à la recherche d'une raison officielle. De mon côté, entre la musique qui s'arrête sans prévenir dans la démo et l'instruction invalide je dirais que toute sympathique qu'ait été la démo, il y avait un gros travail de nettoyage à fournir pour que le code devienne stable et fiable. En plus de ça, on se rend également compte en regardant les phases de jeu que l'IA du joueur 2 n'arrive pas vraiment à défendre son panier et que la dynamique du jeu ne permet pas non plus au joueur humain de s'interposer pendant les phases de contre-attaque. Un peu comme si on avait été face à un pacman où les fantômes ne vous pourchasse pas vraiment, mais se contentent de tourner en rond. 

Despite brilliant graphics and clean rendering, the demo also show that the game engine lacked stability and that gameplay was still very rough, hardly fair to the human player. I guess that's why killed the project before it could be shipped ...

Probable que tôt ou tard, l'équipe (ou ses membres ^^") ait fini par se concentrer sur un projet plus fiable pour assurer leur avenir.

Tuesday, March 18, 2025

procmon.exe

 A rogue DLL
Is failing to load
Who you gonna call ?
DependsWalker !

It's not in your path
nor in Windows Kit
Who you gonna call ?
Depends Walker !

Well, it used to be in Visual Studio ... then in Windows Kit ... now it is a mere .zip to be downloaded on some random dependencywalker.com site, waiting to be hacked away or sold to any advertiser ... It's useless with Windows 10 anyway: it doesn't understand new requests in the new internal API and throws tons of fake dependencies at you.

Oh, sure, there is a github fork in another language made by some nice guy trying to replicate the feature. It will require some specific .net version to build and no, I'm not going to mess up with my dotnet setup after upgrading python to please the antivirus broke my builds.

So what's left ? The "modules" window of Visual Studio is of course useless. Setting breakpoints on LoadLibrary* is a nice way to spend your time watching hex numbers, but it doesn't help either. Rubber duck suggested procmon.exe, which looks a lot like the long-searched-for strace for Windows, and at least comes from a known package hosted by a legit webmaster

O yum. O apt and your super cow powers. O pacman. How much I'm missing you ...

Friday, March 14, 2025

#20games

Bon, il y a 20 jours, j'ai décidé de suivre l'exemple de Sverx et d'essayer de poster chaque jour "un jeu qui m'a marqué". Je l'ai compris au départ comme "qui est une de mes sources d'influences dans les jeux que je conçois et réalise ... on y trouvera donc pas Link to the Past, même si c'est à son donjon des glaces que je repense chaque fois que je dois trouver la détermination d'envoyer un recommandé ou de renvoyer des couriers administratifs d'un bureau à l'autre du même bâtiment en passant par ma boîte aux lettres ^^".

J'avais dans le passé déjà voulu participer à un autre challenge du genre puisqu'il y avait jusqu'à hier un tag "10 games" avec 3 posts ...  Croyez-moi si vous voulez, le plus difficile aura été d'attendre chaque fois 24 heures avant de parler du jeu suivant ^^".

I've followed Sverx's example and try to identify 20 games that have been most influential to me as a gamedev. Having to wait for the next day before picking the next game turned out to be one of the trickiest part of the challenge to me ^^". The challenge also said "no explanation, no particular order", but it turns out the first four I picked were among games that I go back for reference very often.

Le challenge disait "pas d'ordre particulier" (avoir Goodbye Galaxy en #1 ne veut donc pas dire qu'il s'agit du meilleur jeu ou du plus important), et surtout "pas de commentaire". Mais sans grande surprise, j'aimerais maintenant revenir sur chaque choix et contextualiser.

"Commander Keen in Goodbye Galaxy", donc, qui a été _le_ jeu utilisé par mon frère pendant qu'il dessinait les premiers niveaux de Bilou. Sans oublier les imports aux monstres de "Secret of the Oracle" pour les ennemis de la Green Zone. Il est probablement aussi parmi les jeux dont j'aimerais le plus mettre la main sur le code source. Même s'il y a les sources de "Keen Dreams", le moteur de GG est plus abouti, ça se sent manette en main...

Some of the games I mention on this blog are so influential they even get their own tag in the cloud! That's the case for Commander Keen, the game that formatted my brother's level design and monster rooster, but also for Fury of the Furries, where *I* draw inspiration during so many levels revival and where I've truly learnt pixelart. 

"Fury of the Furries", que ce soit les graphismes, les musiques, le thème, le level design, ce jeu revient tout le temps dans mon esprit dès que je travaille sur mes propres jeux, donc bin ... évidemment, c'était le n° 2. Lui aussi, j'aimerais sacrément tomber sur son code source... la physique de l'eau, du sable, la corde ... vraiment curieux de voir comment les gars s'y étaient pris. (note au passage: il y a toujours le projet FuryStudio à étudier et les infos sur shikadi.net ). C'est aussi le premier jeu que j'ai pu utiliser comme référence pour le pixel art vu que tous ces graphismes étaient des .LBM.

Vient ensuite Prehistorik 2, qui reste une référence pour moi en matière de bonus, de cachette ... et de comment faire une démo d'un niveau capable de captiver une bande de gamins/jeunes pendant tout un après-midi. Comment Bilou.BAS faisait tomber les pommes pour le décompte du score à la fin du niveau ? Prehistorik 2. Comment le niveau-anniversaire essaie de vous pousser à faire un 100% sur un unique niveau un peu corsé quand-même ? Prehistorik 2. La révision des éponges pour les pendre au bout d'un fil ? Encore prehistorik 2. Lui ... trouver son code ... je ne sais pas trop. Ce serait peut-être un sacré travail de l'étudier si jamais il faisait surface, vu les stratégies "tout assembleur" si chères à M. Zmiro ... Mais on a toujours le site mine.nu et sa page sur le format des niveaux. (Il y a une réécriture SDL2 en C, cela dit ... )

The next two may not have their own tag, but their impact on game mechanics and how to make a compact game interesting over the long run are still fundamental. They are also two of the games for which I'd definitely like to see the source code, and figure out what design choice the developers have taken.

Et Pharaoh's curse. Il a beau être simpliste au regard des précédents, c'est peut être le meilleur exemple pour moi de rapport qualité de gameplay / quantité de contenu. Ceux qui lisent ce blog depuis assez longtemps n'auront pas manquer de noter que je finis régulièrement par revenir à des mécaniques tirées de ce jeu C64 ... et j'espère toujours voir débarquer la version remasterisée de notre ami Lazycow ... Notez que pour ce jeu-là, le code source, c'est de l'assembleur, donc plus facile à reverse-engineerer. Et quelqu'un s'y est déjà attelé.