Showing posts with label y97. Show all posts
Showing posts with label y97. Show all posts

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é.

Wednesday, December 11, 2024

Des nouvelles de Crazy Brix

February 9th, Case Portman, author of the platformer game "Flynn, son of Crimson" was asking

The first ever game you developed, "finished" and publicly released. Show the world (don't be shy!).

In my case, that was Crazy Brix. More a technical demo than a real game. A breakout clone with raytraced graphics and 6-tracks. His was "Blappy Fird", a clone where a pipe must avoid columns of birds. But Brix eventually turned into a 100K compo entry that got 1st place at Inscene, so I count it as "publicly released". I got a few tokens of appreciation, but also a fun feedback and congratulations from Joke

C'est parti d'une question/chaîne comme il en apparaît régulièrement sur twitter: l'auteur de "Flynn, son of Crimson" avait lancé "montrez votre premier jeu grand-public" avec quelques captures d'écran de son blappy Fird. J'ai suivi en postant à mon tour les quelques images de Crazy Brix qui illustrent les pages que mon frangin lui a consacré dans son blog musical.

Parmi les réaction, les félicitations de Joke:

c'est impressionnant tout ça dans le contexte 1997/langage machine/pas d'Internet... vous êtes des génies ! -- Joke, Biloumaster

Mais il relève aussi au passage le côté un peu discutable du décor de fond, image zoomée à l'appui. Alors je pars à la fouille aux archives et je retrouve un répertoire BRiX avec des fichiers "NEXT.PCX", "EGYPT.PCX", etc. voilà donc à quoi le jeu aurait pu ressembler sans l'intervention du raytracing ... et je dois dire avec le recul que le décor présenté à la inscene est peut-être discutable, mais au moins on arrive à voir sa balle et sa raquette. On ne pouvait pas en dire autant de l'original.

And digging for archives of Brix, I found old pictures from pre-raytracing era ... initial "all flat" bricks, mock up showing tentacle bobs attacking and sized-up bat suggesting an arkanoïd clone for the second title.

There was also a second tileset intended for "egypt theme" that never got used. 

Je n'ai pas souvenir que le thème égyptien ait jamais été utilisé, pas même pour des tests. Il faut dire que ça n'a jamais vraiment emballé mon frère au niveau musical ... 

Je reposte un coup tout ça sur bluesky, et je tombe de ma chaise en découvrant que pix3l connait mon jeu ... il y a joué, aux alentours de 2010. Que le jeu est maintenant repris dans la machine à voyager internet dans le temps: archive.org !

That happened a few days after I created my BSKY account, so I posted pictures there too and to my surprise, I got someone saying

I played this one back then 😁 My first developed game was a collection of arcade games, like pong, breakout and tetris, but nothing special tho... :] Still need maintenance nowdays... -- pix3l on bluesky
It was some years ago, 2010 if I remember correctly... I think it was this one, or just another arkanoid clone, but I'm quite sure it was this one, since it looks pretty familiar :/ Its also on Internet archive, and published in 1999. Whats make strange to you? ó.ó
I've played a lot of games myself, also the more obscure ones, and sometimes I've reviewed them on my blog. Maybe this one has been came out in some search, I don't remember now :]

So there it is. Not only Crazy Brix was a publicly released game, it is now archived, playable online (although sound will be crappy until you figure out how to increase cpu rate). Oh, and it is used by dosbox folks to improve their code, apparently. And while I was in the mood for posting old BRiX pictures, I finally found the name of the game that inspired me to make a breakout clone in first place: the MS-Dos title "powball" (which I thought to be "powerball", and thus couldn't find anymore). It's a game released in 1997 I most likely discovered through the PC-Team sharewares CD. It featured the original idea of mixing a breakout and a shoot-em-up. Oh, I know: you were already seeing some shoot-em-up elements in Arkanoïd, but did you see your paddle morph into a spaceship ? could you purchase upgrades with collectibles you got from breaking bricks ? I don't think so.

Et en creusant après ces images, je finis par tomber sur un nom de casse-brique que je cherche depuis la création de wikipédia ... mais que je cherchais sous le mauvais titre. C'était le mélange parfait entre shoot-em-up et casse-brique, avec des graphismes raytracing lui aussi, mais de bien meilleure facture, des trucs à ramasser dans tous les sens pour pouvoir s'acheter des améliorations à son vaisseau et donc augmenter ses chances dans les champs d'astéroïdes ... que notre balle ne peut malheureusement pas casser. J'ai nommé Powball que j'ai cherché sous le nom "powerball", ce qui ne donnait évidemment rien ^^" . Oh, et bien entendu, powball est aussi dans le "dosbox archive", mais on ne va pas se mentir: c'est totalement injouable.

un tout premier écran-titre pour Brix, qui n'a manifestement pas plus, mais où le logo de PPP Team est bien reconnaissable
Un autre candidat d'écran-titre produit à partir d'une "heightmap" qui m'aura finalement surtout servi d'écran de boot pour Windows 98 :-P

Thursday, November 11, 2021

Slurp'n'Burp

At some point between '97 and '99, my brother suggested that we make a 2-players cooperative (?) pacman clone: Slurp'n'Burp. Of course, by then I had no idea how the original ghosts 'AI' was coded, so I came up with this complex algorithms where every hallway is a sensor.

While the ghosts wanders around the maze, they 'poll' hallways to know whether they have seen a player. If the hallway has seen a player, it can tell which direction to go, the ghost then goes hunting; at corners, the hunting ghost polls which branching hallway has suggestions to find the player. If none has, the ghost is "lost". It picks a branch, goes to the other side of it and polls again. if nothing works, it takes back the route it had found and picks another branch. 

I have no clue whether it would have worked, as I've never coded more than the sound configuration menu of Slurp 'n Burp. The actual pacman AI is much more cleaner and elegant, of course. (and has been extensively discussed, including here) 

Of course, my bro's blog has precise logging of when it happened, since he immediately wrote songs for it and logged the date.  knowing that Greedy is out in September '97 and that we track demoscene pretty frequently through #PossePresse magazine at that time, I still think it is perfectly possible that Eclipse prod inspired us.

(recovered from tweets posted in November 2021)

Sunday, September 19, 2021

Eclipse Operating System

Un de mes objectifs en 1997, c'était de parvenir à maîtriser le mode 32-bits des PC. Windows était encore un hybride 16/32 à l'époque, et pas franchement convainquant pour la programmation de jeux. Tous les jeux dos parus sur les dernières années annonçaient "Dos4GW" ou quelque-chose de ce genre, et la taille toujours croissante des modules de mon frère me faisaient bien comprendre que "640Ko pour tout le monde", ça ne serait plus suffisant bien longtemps.

My #1 programming goal of 1997 was to master the 32-bit (so-called protected) mode of my CPU. Back then, Windows was still 16/32-bit hybrid operating system and you wouldn't rely on it for playing games. The latest productions were still running in MS-DOS although they'd all mention "Dos4GW" or something similar when starting. I had myself just managed to code a modplayer for S3M files but with my bro's music growing bigger and bigger over time, it was clear that 640Ko wouldn't be enough for everybody for more than a few months.

Seulement voilà: basculer du mode 16-bit au mode 32-bit (connu à l'époque sous le nom de 'mode protégé'), ça demande une rigueur à tout épreuve et ma documentation était malheureusement plutôt imprécise. En plus, les fonctions du BIOS et du MS-DOS deviennent du coup inaccessibles (plus de chargement de fichier ni de changement de mode graphique, par exemple). Et au milieu de tout ça, je tombe sur une pépite venant de la démoscène: Eclipse Operating System et son jeu-démo Greedy. Il me lancera à la recherche du Watcom C++ sans lequel on ne sait pas recompiler les exemples. Une chasse qui durera jusqu'à la Inscene, si ma mémoire est bonne.

Don't you dare thinking that switching to 32-bit was an easy task. You'd have to get super-accurate documentation and turn yourself into an über-precise coder. You also have to wave goodbye to BIOS and MS-DOS functions. So it was a shock to find the so-called "Eclipse Operating System", a DOS extender (i.e. a package offering DOS-like functions in 32-bit) from the demoscene and its companion demo game "Greedy" - aka Eclipse Pacman. All I had to do now was to find Watcom C++, a mandatory tool to recompile the examples.

Of course, I spent hours playing the game, too, baffled by the high-resolution + high colors combo on my bubbly VGA screen. And let the menu screen play its menu loop when I was needing a virtual bench to sit my mind on.

edit: on présentait Greedy dans le PC-Team #15, p. 78. C'était en Juillet '96, il était proposé en shareware et était toujours baptisé "eclipse pacman"
Du coup, il faudra que je vous parle de Slurp'n'Burp. 

oh!? on dirait que c'était Rez à la bande son !?

Tuesday, May 19, 2015

Life-changing books [3/3]

1998. Bilou devient la cerise sur le gateau du projet "Ultimate Game Maker". Pour le réaliser, j'ai attaqué très sérieusement la lecture des documents (et les sources) de TRAN sur le mode protégé du 80386, les moyens de passer en mode "unreal" (code 16 bits avec données 32 bits) et ce genre de choses en ligne droite de la démoscène PC.

Many game development studios faced a hard time switching to 2D to 3D at the end of the 90's. Things were quite troublesome for my little self too. I had at last access to massive knowledge about VESA, sound cards and newer tools such as DJGPP compiler and early mikmod player source code ... but it was clear 320x200 MS-DOS games were gone for good. My quest for an improved Game-Maker software turned into a quest for a better operating system to run both game engines and game development tools. Filesystems that would make sharing of samples across a large bank of tracked songs trivial, etc. The cornerstone book for that shift is Andrew Tanenbaum's book on operating system, found somewhere in the university's library, and it will stay at my home, studied dailynightly as the Clicker 32 operating system project shaped up.

Je tombe ensuite sur un bouquin à la bibliothèque universitaire qui présente les structures de système d'exploitations avec environ 2 ans d'avance sur la matière dans mon cursus. Pendant à peu près 8 mois, le bouquin sera emprunté presqu'en permanence, et je remplis des carnets entiers de notes de lectures, d'idées pour aller au-delà des techniques habituelles avec l'idée de construire un système idéal où les politiques de gestion de mémoire et de temps CPU peuvent être échangées en temps réel (comprenez, lors du démarrage ou de l'arrêt de Bilou pour revenir au game maker).

Je vais ensuite tomber sur une description assez détaillées de Linux pour me permettre de définir les objectifs avec assez de précision, et identifier les aspects originaux de mon propre design. Un grand nombre des idées de base visent à donner une sensation de programmation Amiga sur une plate-forme multi-threads x86, avec les pilotes de périphériques vus comme des sortes de co-processeurs. Cette quête va m'occuper l'esprit jusqu'à mon travail de fin d'études et au-delà.

A second book, detailing the internals of the Linux system further refined what I did not wanted to have. Like a monolithic system, purely based on function calls. I wanted to give the programmer in the Clicker operating system the feeling to work on a virtual Amiga-like platform, with programmable co-processors for virtual memory, sound mixing and window compositing tasks, where you could hot-swap the process scheduler.

All this started 100% assembly, but that project taught me to use the C language for what it is and to avoid assembly whenever possible. The reason was you are too much bound to what you write. Do you realize there's a mistake in your algorithm ? you'll be to go through registers allocation planning and pipeline optimization once again.


Le projet Clicker sera aussi celui qui me fera lâcher l'assembleur pour chercher à comprendre le véritable fonctionnement du langage C grâce au bouquin de Kernighan & Ritchie. Les algorithmes utilisés pour la gestion de la mémoire deviennent tout simplement trop sophistiqués pour rester écrits en assembleur. Corriger une erreur de conception dans un code de recherche "best fit avec back-tracking" revient à reprendre le design d'une page blanche, re-réfléchir à l'affectation des registres et revoir tous les efforts destinés à assurer un comportement optimal sur le double pipeline du Pentium. C'est tout simplement intenable.

Friday, May 08, 2015

Hi. I'm Bilou.

Salut à tous! C'est un peu la pagaille dans le "moteur de jeu". Permettez que je laisse Bouli s'occuper de tout ça et que je vous raconte un peu comment tout a commencé.

Hi there. It's me, Bilou. Bouli says the "game engine" is wrecked, but since I'm just the pilot here, there's little I can do to help, so why wouldn't we use that time to know each other better ?


On est en 1993. Deux potes se rencontrent à l'école. Ils partagent une passion pour la musique et le désir de créer des jeux vidéos. Le frère de l'un va se retrouver l'interface entre le PC familiale, les idées de gameplay et les conseils de programmation du nouveau mentor pour tenter de donnée vie à tout ça à grand coups de DATA ...

It all started in '93, with two class mates sharing passion for music and video game design that turned friends. One's younger brother will become the idea-to-machine interface to convert all those ideas into a bunch of GOTOs and DATAs to bring the game to live. His handle was 'Pype' so far, and he's our host today.

Pour une raison nébuleuse, le frangin en question. Notre hôte, connu aujourd'hui sous la signature de "Pype" manque d'être rebaptisé "bilou" pendant cet après-midi. Si bien que c'est automatiquement en "BILOU.BAS" que seront sauvés mes premiers pixels sur processeur Intel... Encore quelques heures et le nom de "Bilou" sera définitivement transféré de Pype a ma propre bouille ronde.

But on that very day, he was about to be re-named "Bilou" by the two friends. That nickname was used so much on that afternoon that he used it when it was about to save my very first implementation on PC ... "BILOU.BAS". Hopefully, with a few more hours, *I* turn to be Bilou and he can remain "Pype".

C'est le début de l'âge d'or. Quels que soient les projets qui trottent dans la tête des membres de la toute nouvelle équipe -- PPP Team -- c'est moi, Bilou, qui suis au centre. Bilou Ski, Bilou Karting, Bilou's Adventure, Bilou's Quest, Biloutris. Tout y passe. Les lignes de code se cristallisent ... les démos deviennent jouables.

Somehow, it was the golden era. Whatever game the team dreamt of, I was the star in there. Bilou's adventure, Biloutris, Bilou Ski, Bilou Karting, Bilou's Quest, Bilou's Sky Quest ... name it, you'll have it. Code line piles up and demos start to be playable.

Malheureusement, les outils de développement de l'époque sont loin d'avoir la flexibilité et la convivialité des Unity d'aujourd'hui. On se bat tantôt avec l'espace mémoire, tantôt avec le nombre de couleurs, tantôt avec la puissance de calcul insuffisante... les grands projets piétinent.

But unfortunately, even the compilers that turned "calimero" into an executable will fail on the increased complexity of my world. Every additional colour on the gamefield requires a re-write of the engine and of all the level designed so far. Despite an all-shiny Master Boomer, they struggle to bring background music to the game ... It all looks unfinished to the foreign eye.

Les potes de PPP Team mettent alors la main sur un outil qui va les occuper pendant près de 2 ans: le RSD Game Maker, qui permet de suivre une nouvelle idée de jeu dans la semaine où elle germe... On dessine ses niveaux directement ... on les teste dans l'après-midi. Mais les interactions sont limitées et ce type de gameplay n'est pas pour moi. Mon destin est de sauter sur la tête de chenilles géantes et de me faufiler sous des champignons et des gommes sauteuses... Pas de tirer au lance-flamme sur des tronc rampants.

A few month later, the PPP Team get their hands on another tool that will keep them busy for 2 years: the RSD Game Maker. With a few clicks and some improved understanding of English, they can build a 4-level game in a single afternoon, and a Commander-Keen-sized quest in a couple of months. New heroes appear, pastiche and tributes alongside original characters. But the engine cannot be bent to my signature move of caterpillar-stomping and my world of bouncing mushrooms and switches: it's an engine for flamethrowers, weapon level ups and locks.

Quand j'y repense, je me console en me disant que le game-maker lui-même portait dans ses limites sa propre obsolescence. En 1997, Pype se met en tête d'exploiter ses nouvelles connaissances en Assembleur pour construire un Ultimate Game Maker, haute résolution, son HiFi stéréo, plus de couleurs, des monstres au comportement dignes de Super Mario World ... et la liste s'allonge au fur et à mesure que le jeu vidéo vit sa Grande Mutation de la IIIeme Dimension. Ça tourne à la définition d'un OS complet, qui aurait les bon format de fichier pour tout ... qui serait moins lourd et plus convivial que Windows ... Je me retrouve à jouer le rôle de simple mascotte en attendant mon heure.

But even that was meant to end at some point. In 1997, as the PPP Team is about to split, Pype has gathered some assembly language tools and decide to start designing and building the Ultimate Game Maker, with high definition graphics (that is, 800x600 by then), millions of colours, hi-fi stereo Impulse Tracker modules with up to 32 tracks, parallax scrolling and large sprites with behaviour comparable to Super Mario World ... And the list keeps growing as the video game industry's IIID revolution is re-shaping the platforming genre. And rather of growing bottom-up, all this digs deeper and deeper towards the building of a full operating system kernel that could run either the game, or the development tools... And I'm left being a mere sketch on the logo, even though I'm at the top.


Et puis un jour, un coup de crayon un peu plus affirmer vient me sortir de l'oubli. A court d'idées de griboulliages en attendant un cours de réseaux, Pype se dit "pourquoi pas faire un mini-strip qui raconte le parcours de Bilou".

And then, all of sudden, a line of pencil draws me out of the shadow. Out of T-shirt design ideas while he's waiting for a course to begin, Pype wonders "why not a comic strip that relates Bilou's adventure ?". Old characters get a revamp, New non-playing characters appear, a back story grow up ... and a couple of pages appear on a website -- although it never quite turned out into a web comic. This is the first milestone towards an art blog that will then host some Nintendo DS sprite editor developments before this very blog spawns to bring me back to full activity.

Les anciens personnages se font un lifting. De nouveaux intervenants apparaissent... L'idée plaît. Un mini "web-comic" vient s'ajouter aux réalisations de la branche "demoscene" de PPP Team. Plus tard, ça tournera au blog et sur ce blog, on se dira que, quand-même, ce serait rigolo de se faire un Sprite Editor sur Nintendo DS .. la boucle est bouclée.





Friday, June 20, 2014

Petit voyage dans le temps.

Petite image de ce que donnait la School Zone en QuickBasic en 1997... Que dis-je "image" ! presqu'une animation.
Côté Pixel Art, on regrettera évidemment les briques rouges rendant le crayon-soldat quasiment invisible. Côté animation, c'était impossible d'accélérer la démarche du crayon. Je ne suis pas mécontent du progrès réalisé ces dernières années.

Look! That's what the school zone looked like on its first implementation, in QuickBasic for MS-DOS in '97. I'm glad I took time to digest advise from Pixelation folks. 

I swear I'll never use plain red as a background colour in later games.

 

Friday, July 22, 2011

Futurs pixel-artistes: ne vous découragez pas

Ca me fait toujours sourire quand on me dit que je "dessine bien". J'aime ça, mais faites un tour sur pixelation ou deviant-art, et vous verrez que "dessiner bien", c'est autre chose. Voyons un peu ce que ça donnait en '96

Une vieille (~1997) tentative d'amélioration du graphisme de Bilou. Je venais donc de finir mon "modplayer" 6 pistes en assembleur, j'avais racheté à Pascal son scanner Logitech et je m'attaquais à convertir le nouveau look de la "green zone" en pixels "prêts à l'emploi". Mes nouvelles connaissances sur le mode X aurait dû fournir le dernier élément pour faire de Bilou un jeu MS-DOS capable de rivaliser (hum hum ^^") avec Rayman "himself".

Sauf que n'ayant pas une équipe de 100 personnes avec moi, j'avais encore beaucoup à faire.

Here's an old file dating back from '97 where I saved the steps to convert the output of a scaled-down scan into pixels "ready for integration in a game". As you can see guys, don't feel disappointed if your pixel art is not yet on par with your favourite artist. Mine wasn't either (and still isn't, by a large extent). I'm quite glad I had already learnt that one should not use black artlines at pixel-art scale. A dark color is much better. I hadn't learnt yet that hue shift is the key to nice colours, and I was using "plain value ramps" (where you build linear gradients from a saturated color towards white and black, making everything just look like plastic). And of course, I was overusing automated gradients. That may have saved me from pillow-shading, but it makes the petal looks like spheres rather than having the curve they deserve.

Il y a pas mal d'erreurs de débutants dans ces graphismes. Sur-utilisation des dégradés automatiques de Deluxe Paint qui rajoute une texture granuleuse à tout (que ce soit le bienvenu ou non) et aucun "hue shift" : chaque dégradé part d'une couleur et en diminue linéairement les composantes RVB vers le noir. Point. Pour le jaune et le vert, l'effet est particulièrement raté.
En revanche, déjà là, j'avais appris à fuir comme la peste les "art lines en noir", quitte à refaire entièrement le contour. à la main. Il faut dire que devoir supporter "Skunny the Wild West" m'a ouvert les yeux sur l'horreur que ça donne au final. Et j'ai évité le "pillow shading". C'est toujours ça de pris.

Thursday, March 10, 2011

Life-changing books (2/3)

When I turned 17, it became clear that I couldn't realise all my projects with BASIC alone. I opted for physics/chemics labs rather than computer labs, unfortunately, and the teacher wouldn't let me get a copy of the Turbo Pascal she was using for her courses. "It wouldn't make any sense to me without her teaching" or something alike.

A friend of mine (later known as Parmy in PPP Team) had a copy of A86 -- a 16-bit assembler for dos -- left over a floppy, and a book "Easy Assembly" he never really made sense of. Being from the 8-bit era, "Assembly" meant to me "the language of gods" and "blazing fast execution speed", so I immediately accepted the offer and started studying Intel's instruction set.


Vers 16 ans, je commençais a avoir fait le tour de ce qui peut se faire en BASIC. J'avais (mal?)heureusement préféré les cours de labo physique/chimie l'année précédente, et la prof d'informatique ne voulait pas me faire une copie du Turbo Pascal sous prétexte que je serais incapable de m'en servir sans suivre ses cours. Grmbl. En allant expliquer à un de nos nouveaux amis (que l'on connaîtra plus tard dans PPP Team sous le nom de Parmy) mes techniques graphiques en BASIC, je tombe dans sa bibliothèque sur un bouquin "L'assembleur facile" et une diskette 5'1/4 estampillée "A86". "Je ne m'y suis jamais vraiment mis", me confie-t'il. Pour un enfant de la génération 8-bit comme moi, l'assembleur, c'est comme le langage des dieux. J'emprunte sans hésiter le bouquin et je me mets à potasser le jeu d'instruction des processeurs Intel.


After I showed my uncle my first assembly program (iirc, a password-prompting tool to prevent my sister to mess up with "our" computer), he brought me a box full of low-level C64 stuff, including a copy of "programming the 6502" book, a disassembled and commented dump of the C64 kernal rom, an EEPROM programmer (with no EEPROM provided) and other similar books. SYS 49152 was no longer a mystery to me -- although POKEing machine instructions from a BASIC program wasn't a very sexy way to proceed. It took me time to wrap my brain around the LIFO stack concept ...
I never really "programmed" the 6502 at assembly level, as it was already a decade-old machine, but I must admit the beauty of 6502's instruction set simplicity has been inspiring to many regards... more about that in part 3.

At last, mastering assembly and the Ms-DOS service interrupts allow direct manipulation of any file format, opening up countless possibilities.


Voyant mon premier programme assembleur, mon oncle me propose de reprendre une caisse de documentation technique sur le commodore, dont une copie d'un livre d'introduction à la programmation du 6502 en assembleur -- le processeur du commodore 64. La caisse contient un programmateur d'EEPROM pour faire "de véritables cartouches" façon Rick Dangerous. Je bave. Je prends. Il n'en sortira pas grand-chose, cependant, hormis une meilleure compréhension de cette machine de rêve définitivement désuète et une admiration sans borne pour la simplicité de ces LAY et LAX. Mais n'anticipons pas.

Knowing the assembly language, however, wouldn't be of much use without knowing the hardware that sits around the CPU. A "PC" was still fairly simple by that time: everyone had a VGA-clone video card (super-VGA was only slowly starting to be adopted, and not by game vendors) and a Sound Blaster clone. Both and more were discussed in the "Bible of PC System Programming", a fairly huge book that I borrowed to another friend -- later known as Nowan -- before I got myself a copy of my own. He also let me grab another Sound-blaster related book (ISBN 978-2742901951) from the same editor, which was describing "how to build a 4-track modplayer from scratch -- in Pascal".

Bien sûr, l'assembleur tout seul ne servirait pas à grand-chose sans une meilleure compréhension du hardware du PC. Fort opportunément, c'est approximativement à ce moment qu'un autre ami (connu plus tard sous le pseudo de Nowan) va me préter coup sur coup la bible du PC et le supergrand livre de la SoundBlaster. Me voilà plongé de plus belle dans les documentations techniques, et armé jusqu'aux dents pour attaquer la conception 100% assembleur d'un modplayer -- pardon un S3Mplayer -- qui devra être le coeur de l'Ultimate Game Maker. J'aurai bien un petit jeu réalisé (Crazy Brix) fin '97, qui sera amélioré plus tard pour la Inscene '99, mais UGM restera un tas de papier attendant la réalisation de mon propre OS -- Clicker, une idée de Nowan, à l'origine -- le Windows 95 ne pouvant définitivement pas convenir pour nos projets.

I still had no Pascal compiler by that time, and I was sufficiently confident that, with that knowledge and the S3MINFO.TXT file shipped with my brother's Scream Tracker III, I would be able to run a 8-track Stereo S3M player instead, with 2 tracks dedicated to sound effects and 6 tracks dedicated to background music. I started copying every meaningful bit of information into a smaller draftbook, easier to carry around and not to be returned to a friend by the end of the month ^_^

According to my brother's archive, it took me another 6 month to convert that idea into something capable of replaying some simple modules. I never made it "the corner stone of the ultimate game maker" as I initially intended, but it was the core of Crazy Brix and Out'm'Up, the two awards-winning 100K game at Inscene'99 and Inscene'Y2K, respectively.

Wednesday, June 02, 2010

BRIX.TXT

Amusant, ce qu'on retrouve dans les fonds de tiroir ... voilà le fichier "readme" de mon premier jeu en Assembleur pour MS-DOS: Crazy Brix, qui (2 ans plus tard), remporta la compétion "100K games" à la Inscene'99 ... A défaut d'Internet, à cette époque, je tentais de voir mes jeux paraître sur le CD du magazine PC-Fun ... sans grand succès, malheureusement.

Well, I dug a README.TXT file for my first A86 game : Crazy Brix, as submitted to the French magazine Pc-Fun. It wouldn't make much sense to translate that to you, right ? it mostly has some nostalgic value. What I find amusing is how it built up : from a proof-of-concept QuickBas game (hardly playable, but conceptually correct), i retro-fitted the "algorithms" into my growing assembly-written .S3M player for the Sound Blaster Pro. Somehow, "importing" the S3M player into a fresh game project didn't work. Debugging such a program was a nightmare ...
I had no idea of the existence of GPL or free-software by that time (neither did I have any free software at hand, which more or less explain the use of assembly), so I was trying to trade my code against something else I could have a use for. Funny.


- - - 8< - - - 8< - - -

Salut à tous !
Bien le bonjour à vous, futurs joueurs de CrAzY BRIX.
Je me permets de me présenter: je suis Sylvain
( alias PYPEIN ), programmeur de BRIX. Vous allez sans tarder découvrir la version 1.9 du nouveau XAM-WARE de PPP TEAM SOFTWARE.

(XAM-WARE comme produit pendant les examens.)

Les Versions.
1.0: Développement de l'algorithme de jeu en BASIC ("appelle moi pour jouer",dit Vivien)
1.1: Première implémentation en Assembleur: MODPLAY+ chargement des images (ricanement de Piet)
1.2: Réalisation des routines graphiques
1.3: On peut commencer à jouer, mais c'est plein de bugs.
1.4: premiers essais de transparence ("C'est quoi, cette horreur?" dit Piet " C'était encore mieux en BASIC!")
1.5: décors de fond retravaillés
1.6: ajout des patterns "GAME OVER" et "NEXT LEVEL"
1.7: on peut changer la vitesse de la balle.
1.8: Ajout des samples pour les bruitages ("Je te laisse débugger, Pype, je reviens à 12h00")
1.9: image d'intro en POVRAY
1.A: "ajout d'animations"

Note aux programmeurs
Mon module player n'est pas encore au point, néanmoins, si l'un d'entre vous veut en faire un en assembleur, je lui conseille d'abord de lire 'Le SuperLivre de la SoundBlaster' paru chez Micro Application. Je peux aussi vous passer une partie des sources (les fonctions de la S.B.) mais ne me demandez pas les sources complètes du player: le code est pas encore optimisé (PENTIUM minimum). Je vous le passerai seulement contre d'autres trucs (un player pour un autre format, des truc de balaises sur le mode protégé, un jeu que vous avez fait et qui est mieux que le mien...)

- - - >8 - - - >8 - - -

(tout ça, c'était avant que je ne découvre la GPL, NDLR)
D'une certaine manière, Crazy Brix reflète assez bien ce qu'était PPP Team : en apparence un projet solo, ce jeu n'aurait jamais vu le jour sans le bouquin de Nowan sur la soundblaster ni sans l'assembleur A86 de Parmy. Il n'aurait pas été fun sans les Bilou/Badman de Pierrick, ni sans le personnage "tentacle bob" de Tbob, ni sans les mods de mon frère. Il n'aurait pas gagné la 100k sans les routines de compression de Kris, ni sans la voiture de Gino. Il n'aurait pas eu de sens si Pierrick n'avait pas lâché à Romu "tu te rends compte qu'il a fait ça en 100% assembleur !?"

download and play in DosBOX

Monday, June 01, 2009

Les collisions

Les collisions, c'est probablement un des éléments les plus important de la gestion des sprites dans un moteur de jeu. Outre l'aspect purement technique "y a-t-il ou pas collision" et l'aspect d'optimisation "comment tester les collisions entre N sprites (potentiellement (N*N-1)/2 calculs) en un temps raisonnable", il y a le côté "logique du jeu": comment vont réagir les différents objets en cas de collision.

Mes premiers jeux étaient assez élémentaires de ce point de vue là: collision = touché sauf si ybilou+8<ymonster. une tentative un peu simpliste de simuler le "pogotage de cafetière à la SuperMario".
Mais ça, c'était du temps du BASIC. En 1997 (déjà programmeur en assembleur et bricolant mon 'mod player à l'époque), je suis à l'unif le cours d'algorithmique de PaDM ou je découvre les joies des listes liées et où SJ me guide tout doucement vers la compréhension que "tes 'registres de sprites' ressemblent à des variables-membre en POO".

Collisions play a major role in game engines. So far, in my former game attempts, i mostly focused on "how do we know there is a collision?" or "how can i support many sprites without slow-down due to O(N²) collisions detection effort?". This time, i'm rather focusing on "what shall we do once a collision is detected?". Collisions are event that will affect the state machine of our sprites... of both sprites that are involved in the collision. My first "serious" design effort on collisions management dates back from "Out'm'Up" game for the 100K-game competition at Inscene'2K (a demoparty in Belgium), the distilled wisdom resulting on my effort to build an "Ultimate Game Maker" between '97 and '99.

Rétrospectivement, ça fait un peu peur: après 10 ans de programmation, je n'avais pas encore terriblement évolué dans ma manière d'approcher les problèmes de quand je programmais mon "Calimero" en BASIC C64 à grand coup de Gotos. Seule grosse différence, je tentais de reproduire en Software (via des "registres" pour la position, la vitesse, la puissance, etc.) le hardware idéal pour mon moteur de jeu. Un variante non-déclarée de la machine virtuelle donc, mais qui me poussait à sur-définir des éléments tout à fait accessoire du genre "combien de bits pour le niveau d'attaque et le niveau de défense du sprite ?"

Out'm'Up, mon dernier shoot en date
Bref, les années "Ultimate Game Maker" sont loin, maintenant. Si je reprends de temps en temps la farde bleue à carreau où tout cela est consigné, c'est plus par nostalgie que pour son contenu. Ou pour dater une technique ancestrale. En juin 2000, par exemple, j'expérimente dans "Out'm'up" une technique dont je ne me séparerais plus: les castes de sprites. Dans toute collisions, il y a toujours un sprite actif (qui cherche la bagarre) et un sprite passif (qui subit la collision). Le sprite passif appartient à une des deux castes possibles (hero ou evil) et le sprite actif ne cherchera pour ses collisions que dans la liste de la caste correspondance. En clair, celà signifie que les tirs de mon p'tit vaisseau ne testeront jamais que les "ennemis" (et pas les autres tirs ou les bonus) et que les ennemis ne se testent pas entre-eux (mais uniquement vis-à-vis du joueur). L'un dans l'autre, la technique s'est montrée tout à fait satisfaisante vu la quantité d'objets à l'écran (on est encore loin d'un Bullet Hell, bien sûr, mais n'empèche).

Active/Passive
The core concept is that in a collision between two sprites, one is *active* and the other *passive*. I.e. the passive sprite has just registered itself in a list of "sprites that accept collisions", but the active sprite is the one who will scan that list for a match. Together with that mechanism comes the idea of *casts*. We only have a limited number of such "lists" where sprites can register -- one per sprite cast. And so far, in all games two casts seems to be enough: heroes and evils. In a laser-ufo collision, for instance, the UFO is passive evil and the laser is active. That means that the laser only checks UFOs for collisions, not other lasers or explosions, bonuses, etc. In the UFO-spaceship collision, the spaceship is passive hero and the UFO is active. You'll note that the cast of the active sprite is irrelevant in a collision. So far, it has proven much more efficient and flexible than adjusting "power levels" (in RSD Game-Maker, all sprite had a power level, and when the collide, the one with the highest level kills the other one. period)

Si ça peut paraître un peu annecdotique dans un jeu de plate-formes, ça n'en reste pas moins la base de la gestion des collisions dans ma dernière démo. J'y ai ajouté le système des masques inspiré du code de Jill of the Jungle qui, une fois que j'aurai bricolé l'évaluateur d'expressions, permettra de faire réagir les personnages différemment selon la "source" de la collision. Petit exemple ici avec le "pendat" et ses réactions possible en cas de collision avec un objet lancé, avec un encrier bloquant ou avec le personnage.

In a platforming game like Bilou, this needs to be extended. Not only the cast of the 'hitter' is important, but also its nature, which i intend to implement through collision flags, drawing inspiration from Jill of the Jungle source code. Every "active area" defines a set of flags that identify "what it is" while "passive collision areas" indicate "what they are sensitive to". You can then have a penguin monster that takes a single hit unless it is hit by F_FIRE, which kills it instantaneously.

While the cast of a sprite never changes, each state can define various areas, with different flags. That allows us to have e.g. a special "strike" move with an additional, powerful attack area or a move that unveils a weak point. The game script defines transition on a per-area basis, so what happens when you hit one weak point can be different than what happens when you hit another area. Now, i still have to "make it so" in the code, and make the result of "area masks" visible to my "GobExpressions". In an attempt to separate the concerns, each sprite will take care of its own state manipulation: we won't have the pencil 'killing' anyone directly, but i expect that i might need some information about "the other guy" anyway (relative position, speed, etc.)

J'aurai donc bientôt réglé le bug qui "blesse" Bilou à chaque fois qu'il ramasse un bonus et un état dédié 'blessé' me permettra de rendre plus facilement Funky Funghi infranchissable. Par contre, rendre certains ennemis "solides", même quand Bilou est invulnérable temporairement, ça reste un challenge.

2024 #choice reality check: Well, now that I have access to countless hitbox reveal (mostly by Upsilandre), it turns out that having separate active and passive boxes (typically called hitbox and hurtbox) is the de-facto solution. Having a separate list for player and foes also is. But the more I progress, the more it shows that additional casts will be required for bridges and things alike. Nothing has been coded so far, though.

Thursday, March 26, 2009

BBL to .png converter

J'avais pris l'habitude de faire un p'tit cadeau sur Internet pour mon anniversaire, et là, pour mes 30 ans, schnol. Avec les travaux dans la maison et le retour de Suisse, je n'avais rien à montrer. Quelle idée saugrenue m'a pris ce midi? Aucune idée. Mais je vous offre un petit script de conversion des fichiers graphiques du Recreational Game Maker (.BBL, .CBL et .MBL) vers des .png, plus pratiques à manipuler. download bbl2png.pl exemple d'utilisation :

perl ~/DS/SEDS/runme/bbl2png.pl /tmp/TOYZONE2.PAL /tmp/%.MBL m%.png --sprites

Here comes some pixels dump of sprites i've been working on in '97, at the peak of my RSD Game-Maker years. Each level had its very own tileset and spriteset (though there might be much shared things between two levels in the same "zone"). Behold Badman III, most likely the more complex (and unfinished) project with the RSD-GM ever. I finally managed to write a small ".BBL->.png" conversion script, meaning that i can retrieve *all* the graphics from all our previous games. 

Ca veut donc dire que je peux récupérer tous les graphismes de Badman et autres pour vous les montrer... Je doute qu'il y ait grand-chose à en tirer à part de la nostalgie ... j'ai tant appris en matière de pixel art, que même mes "plus jolis" boss sont tartes "by today's standards" :P En vrac, donc voici quelques sprites tels qu'ils sont présents dans la démo jouable Badman 3 (Badboyz are Back!). On y découvre "Ratman", d'après un T-shirt de T-Bob, qui ne sera finalement pas repris comme boss de la Cheese Zone. Juste après, Burner "relooké" qui laisse derrière lui une trainée de feu quand il court, avec un shading un peu douteux. Enfin, le gris aux oreilles rondes, c'est le "ratman" tel que vous pouvez l'affronter, avec son astro-flasheur "kirsch" et ces attaques de roues de gruyère.  

In "Badman III: Badboyz are Back", you can play either with Badman or Rubishbin (who you saved in "Badman II: Out of This World") in three insane environments: the Cheese zone, the Toy zone and the Ice zone. Each character had unique abilities giving them access to hidden areas. Rubishbinn, for instance, can do a spin-jump that destroy some blocks below him while Badman can dash under low roofs. I also reused the technique developed in Badman II for creating shooting bosses. The result was near to an unmanageable nightmare that turned short as I entered university: with only 5 playable levels, Badman III games already lists 44 'levels' in the game editor. 

Ce serait à refaire, je prendrais le "ratman" initial comme PNJ genre "Je suis le seul maître légitime de la Lune Fromagère, et je délivrerai mon monde de la tyrannie des BadBoyz ... Enfin, si tu veux m'acheter des grenades Petit-Suisses ou des Camemberts lacrymogène, ... " Et oui, le volet 3 de Badman était franchement inspiré de la mécanique de jeu de Megaman ... Suit l'Ice Zone, dont les monstres sont pas mal inspirés du niveau des glaces de Prehistorik II (auquel je rejouais cet été-là -- juillet '97 selon le .zip -- en version complète). 

On y retrouve donc un le fameux pingouin et un eskimo dont je n'étais pas peu fier à l'époque et un "lemmings xmas" qui était là juste pour le fun. Ce genre d'apparition était d'ailleurs assez habituel dans la série des Badman : le bonhomme-promo de Belgacom, Moktar sur son tapis volant, une bestiole rampante "façon Commander Keen", des p'tits robots tout ronds "façon twinbee land", une souris bleue mécanique "à la sauce Alfred Chicken", etc. Vous remarquerez aussi "Rex", le chat (private joke) utilisé dans des "cut-scenes" façon "Kirby's dreamland". Le mamhout vous paraît bizarre ? logique. 

Le game maker de Recreational Software ne supporte qu'une seule taille pour les monstres: 20x20. Un monstre plus gros est indestructible par nature et construit à l'aide de plusieurs monstres que vous tentez de déplacer de manière synchronisée ... ce qui se traduisait généralement par un désastre complet. Allez, je vous mets aussi Badman "himself" et son compagnon d'aventures "Rubish bin" ... On est plus très loin d'un extracteur de niveaux complets, avec les autres infos dont je dispose déjà 

PS : mon frère possède aussi une mine de petits "trivias" sur le développement des épisodes de Badman, qu'il reconstitue a partir des commentaires de ses .S3M ... Si vous êtes fan, bonne lecture.

Tuesday, January 08, 2008

[C64] Shoot'm'up Construction Kit

Au terme d'une fameuse séance de LOAD "$", j'ai finalement remis la main sur un joyau que l'on croyait perdu depuis longtemps: la version commodore de Bilou's Sky Quest, ma tentative de shoot'm'up avec le "game maker" limité connu sous le nom de "SEUCK" (Shoot'em'up Construction Kit), qu'on a eu par des moyens plus ou moins obscurs au tournant de l'été 1998(?) (un mois avant que notre vénérable commodore ne grille, donc).

Seule une version assez rudimentaire a l'air d'avoir résisté au temps, pour ce qui est des exécutables, en tout cas (~10 minutes de chargement). J'ai bien les fichiers "données" de version a priori plus récentes, mais rien n'est sûr. Et comme je n'ai évidemment plus l'éditeur lui-même, l'histoire en reste-là pour l'instant. Je vous invite à passer faire un tour sur ma collection de vidéos pour voir ça en live, ou sur celle de frikilokooo, pour avoir une idée du fonctionnement de l'éditeur ...

Et pour ceux qui ont un player flash bien à jour, vous avez des vidéos de meilleure qualité dans la collection de mon frère.



It's been a long (and über-fun) LOAD "$" story, but we (my bross and I) finally retrieved the long lost "jewel": the Commodore 64 version of 'Bilou's Sky Quest'. It was a Shoot'm'up game i made up during the 1998 summer using Sensible Software's Shoot'm'up Construction Kit (SEUCK), about one month before we burnt out the C64. It seems that only an early release of the game has survived the 10-years time travel (or at least in an executable form), but i have good hope that some of the other files i've located on the disks might be sources of later versions (with better graphics and more interesting ennemies).
Now i'm investigating the options of connecting the C64 and its floppy drive to a PC system so that i can 1) retrieve the binary and data files and export them to the world and 2) import the SEUCK software back on the C64 to build playable disks of the later version... Of course, we shot video of the whole event, which you can watch on youtube by clickings links in the french text ^^"
edit: le cable PC-C64 s'appelle "X1541". Il passe du port parallèle au lecteur de diskette (5 petites pinoches à brancher) après quoi le programme "Star commander" sert à lire et écrire sur la diskette...

edit++ voir les conseils de TORX et la causette sur le blog "Commodore User Charleroi"

Sunday, January 06, 2008

Retour du Commodore 64

Suspense intense ... Mon frère est passé à la maison et on s'est décidé à remonter le vieux commodore de notre grand-père. Parmi les quelques disquettes qui n'ont pas disparu dans le grenier Rieppi, on espère retrouver les partitions réencodées dans "music processor" et le fameux "Bilou's Sky Quest", réalisé avec le Shoot'm'up Construction Kit ... Je dis suspense intense, parce que CJ vient de lancer un LOAD "BILOU PPP ",8,1 sur une diskette d'utilitaire d'impression ...

(il charge)
(il charge encore)
(il charge toujours)

Croute. Non. "LOAD ERROR" après 10 minutes de chargement...
Perdu. Bon, d'un autre côté les disquettes doivent avoir plus de 15 ans, maintenant.

Tuesday, May 01, 2007

* krribit *

Un peu de pioche dans mes vieilles images Deluxe Paint, ce matin, et j'ai notamment retrouvé un des arbres (et son décor) que j'avais fait pour bilou. Au départ, un dessin au porte-mine que j'avais scanné (du temps où il ne fallait pas trembler pour faire un bon résultat avec le scanner ISA racheté à Pascal), puis utilisé comme "calque de référence" pour reconstruire intégralement le résultat que vous avez là. Ma technique de remplissage à l'époque consistait à utiliser un dégradé "mélangé" par deluxe paint (avec un point de lumière approprié) puis à passer un coup de "smooth" sur le tout (flou gaussien, quoi).

Les champignons, etc. on subi plus ou moins le même sort avant d'être retransformés en simples silhouettes pour les besoins du dessin.

^^ one of my older trees for Bilou, first drawn on paper, then converted and colourized using Deluxe Paint II. By that time, my technique was mainly using gradients that i'd smooth afterwards. Not always looking good, unfortunately. Meanwhile, Team17 was releasing SuperFrog on Amiga, and i must say that i quite love how they made their trees... Among other things, because they aren't just background, but gameplay elements aswell thanks to the leaves-platforms you can put where you want (okay, you *must* put at least two oth them at the bottom).

A peu près à la même époque, une bande de joyeux driles nous sortaient SuperFrog sur Amiga, ensuite porté sur PC. Bin, je dois vous dire, j'aime bien les arbres de SuperFrog. leur côté sympa, d'abord, le tronc "ligneux" comme si il y avait plusieurs "tuyaux" indépendant qui avaient fusionné pour faire l'écorce, etc.

Et, surtout, ils font partie du level design par ces "branchages" sur lesquels notre héro vert peut courir et sauter. Tiens, et par curiosité, je me suis amusé à décrotiquer un peu le feuillage.

Tout d'abord, il faut trouver un repère pour la grille. Le bord du sol nous donne un bon indice, reste à superposer l'image avec elle-même (avec un peu de transparence dans Gimp) et à la décaler vers la droite jusqu'à ce qu'un carré net nous apparaisse au milieu de l'image toute floue.

Voilà. Un coup de "Image>Configure Grid" et on est parti.

Bon, clairement le "trou" dans le feuillage a été construit sur base de 4 blocs (je les appelle A,B,C,D si vous voulez bien). Capturons ces 4 blocs et faisons-en un calque séparé en mode "différence". En le promenant le long de notre grille, les pixels identiques vont se retrouver tout noirs (x-x=0) ... si jamais on voit un carré complet devenir tout noir, c'est que un de nos blocs (A,B,C ou D) a été utilisé à cet endroit de l'image.
C'est bien sur le cas pour le deuxième trou du feuillage, mais à pas mal d'autres endroits, on retrouve nos blocs, à quelques différences près (des feuilles au lieu du trous, ou certaines feuilles retirées pour faire le bord de l'abre).

Giving a closer look to those leaves, it looks like they're (too) built out of tiles (rather than having one, large bitmap for the tree as it is the case e.g. in Rayman). Just stack two copies of the screenshot on top of each other, give them proper transparency and slide one of the layer... after 16 pixels, you should see a square of the leaves that is "sharp" while the rest of the image is blurred. That sharp square identify an exact superposition of two 16x16 blocks. Bingo: we can configure our Grid in the Gimp to match the game's tileset.

Now, it is clear, too, that the 'hole' in the leaves comes from a 32x32 block ... let's see if we can find it at other places in the tree. To do this, i just pick a copy of "A,B,C,D" block in a separate layer in "difference" mode. As i move that pattern around, i'll get big black boxes when one of the 16x16 block match.

En répétant le processus, on peut identifier les différents blocs de l'arbre, chercher éventuellement des blocs de base supplémentaires, etc. En fait, ici, quasiment tout le feuillage est construit sur 4 blocs de base qui ont servi à la construction du "trou". Seules les platformes que l'on superpose au feuillage et quelques "raccords" sur le bord du feuillage font exception à cette règle.

Chapeau.

Oh, et pour ce qui est des couleurs, (#045624,#047604, #049a04) pour les feuillages (#645614, #544604, #343204) pour le tronc (allez, avec un petit pixel de (#8c7644 ou #746634 autour de la bouche) et (#242224) et quelques touches de brun foncé pour les ombres du feuillage (audacieux, mais ça a marché, visiblement).

Repeating this approach, we can identify almost all tiles of the leaves as being edited versions of one of the A,B,C or D tile. Nicely done. Only a few 'border leaves' seems to escape that rule. And all this with at most 10 background colours (probably 16 with eyes and blue sky) ... less than what i used in Bilou on QuickBasic!

Allez, ciao. Pixelisez bien.

more frogs for nostalgics

Friday, January 12, 2007

"Rainbow Bell"

Twinbee Land, PC, PPP TeamSi Fury of the Furries était mon jeu fétiche sur PC, sur la superNES, c'était (et c'est toujours resté) Twinbee : Rainbow Bells Adventure.

Contrairement aux autres titres de la série "pop'n'twinbee", "rainbow bell" était un jeu de plateforme (ce qui explique que je l'aimais bien) aux couleurs sympathiques et aux musiques envoûtantes. Au départ, c'est Julien qui m'a fait découvrir ce titre. Un jeu loué lors d'un de ses anniversaires, bien trop simple selon ces standards (Juju finissait DK1 ou SMW en une après-midi avec 99 vies et sans perdre une seule vie dans les jours où il était en forme).

Puis c'est Pascal "Kameah" qui a débarqué, dans les années game-maker avec un jeu curieux : un portage de Rainbow adventures pour PC. Repêchant entre-autres dans les graphismes de Badman II, ça a donné à peu-près ceci. Je suis repassé par là et ai retravaillé les planches de sprites (entre-autres) pour en faire un jeu finalement beaucoup trop coloré ... Mais j'étais dans le bon (pour une fois) avec mes bonshommes tout ronds (mon adaptation de son jeu "DBZ" était une hérésie profonde, quand j'y réfléchis).

As Fury of the Furies is my favorite PC game ever, Twinbee II (rainbow bells adventure) is my favorite on SNES. Unlike other titles in the Twinbee series, Rainbow Bells is a colorful platformer with really catchy tunes. I've been first exposed to it at the birthday party of a old friend of mine who happens to be a hardcore Gamer : Julien, but who quickly sold it since it was "way too easy" by his standards. Then, a few years during my "game maker" era, Pascal came with a small and strange-looking game which was intended to be a port of Rainbow Adventures on PC. Picking backgrounds here and there in Badman II i made it look more or less like the picture above. Not that bad, but way too colorful compared to the initial game (see below)

Twinbee II, aka. Rainbow Bell Adventure, SNESAlors Pascal m'a refilé une VHS où il s'enregistrait jouant (et finissant) le jeu. Vous allez rire, mais en session d'examens, je la regardais à peu près aussi souvent que "Star Wars VI". Et j'ai retravaillé quasiment tout. Les animations, les sprites, les décors (en faisant intervenir notamment mes arbres scannés et retravaillés), une "usine" où une série de petits robots "construisent" un upgrade pour notre héros...

Mais tout celà restait bien pâle à côté du titre original. Ou plutôt trop "flashy" comparé aux tons pastels utilisés ...

So Pascal recorded the real game on a VHS so that i could watch him playing, listen to the tunes and whatever -- and be in the "right mood" when working on the "undersee" level. I reworked everything to get closer of the spirit of the game which i enjoyed more and more, watching it even more often than StarWars! And today, i discover than thanks to the "Snes Advance" project, i could potentially play Rainbow Bell on my DS. w00t!

Twinbee II, the richest platformer ever when it comes to gameplay. Maybe in the palm of my hand. That mean you might have the long-awaited (hum) "Kirby and the Amazing Mirror" vs. "Twinbee Rainbow Bells" evaluation.

J'ai fini par l'avoir sur l'émulateur ZSNES, et voilà qu'au moment ou je cherche encore une fois sur le net après des adaptations des musiques (à force de regarder la vidéo, j'ai fini par les siffloter volontiers), je découvre le projet SnesAdvance", potentiellement capable de me permettre de jouer à "Rainbow Bell" sur ma DS.

Il faut dire que c'est un des jeux de plateforme les plus riches (en actions possibles) que j'ai vu. On vole, on saute, on cours, on blaste, on ramasse des options à la pelle sous forme de clochette qu'il faut récupérer après s'être fait touché par un ennemi. Et justement, les ennemis (même s'ils ont tous le même look de robot) ont des comportement très variés de par leurs armes, leur mode de déplacement, etc. Un bijou, je vous dis.


edit'09: à mon grand regret, mon frère n'a jamais "ocremixé" les thèmes originaux de Twinbee, mais en revanche, il nous a mis en ligne les mods qu'il avait écrit pendant cette "passe twimbee-sur-PC", avec un peu plus de contexte "real-life".