Showing posts with label y96. Show all posts
Showing posts with label y96. Show all posts

Sunday, March 23, 2025

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.

Friday, April 02, 2021

Ma première forteresse.

On est toujours dans Badman 2, mais cette fois après que Piek m'ait proposé de faire un boss. Les possibilités du GameMaker étant ce qu'elles sont, le même ennemi 'boss' va être ré-affronté à 6 reprises dans des 'arènes' de plus en plus exigeantes. à chaque fois, il nous livre une clé qui permet d'ouvrir la 'porte-ours' rouge suivante.

Ce qui m'intéresse le plus, aujourd'hui, ce sont les 'mini-challenges' placés entre les arènes. Le premier fait appel à la mécanique 'pick up' utilisée jusqu'ici pour se saisir de power-ups, mais qu'il faudra utiliser pour ramasser l'échelle dans son inventaire et ensuite la déposer sur un autre bloc.

L'échelle est simplement un bloc sans gravitation, ça aurait pu être utilisé à plus d'endroit dans le jeu, mais ça n'a rien à voir avec le gameplay run-and-gun du reste de Badman.

Badman 2 could have been the game where I designed my first level-with-a-Boss: the badboy Burner. We'll meet him 6 times in the level, everytime in an arena that's a bit more difficult to survive than the previous one. You can see them in the top row of the level map. But let's focus on the trials we'll encounter in-between. The first one is just a tutorial on how to use the 'ladder' pick-up block (well, it'd have been a tutorial if you'd had any hint that you can pick that up, and not only the power-ups like the badarang)

Le deuxième passage fait appel à une variante d'échelle qu'on emporte pas. C'est dessiné comme des chaînes, mais en réalité, ce sont juste des emplacements où il n'y a pas de gravité. Si on parvient à y arrêter Badman, il aura l'air de marcher dans le vide.

Le deuxième mécanisme "unique" de ce niveau, ce sont les blocs qui rentrent et sortent du décor. Des plate-formes temporaires, en somme, qui ont été introduites dans le premier écran (pour récupérer de Badarang), puis servent de 'porte-temporisatrice' après le premier boss, mais là, on va commencer à les utiliser comme un vrai challenge, avec une alternance entre deux position de plate-formes qui nécessiteront de bien synchroniser ses sauts. (Bon, il y a 6 à 10 étapes intermédiaires de 'fade' où les plate-formes sont solides simultanément, donc ça reste gentil par rapport aux arbres de Gris).

C'est bon ? c'est bien rentré ? parce que juste après, je vous ai mis un loooong pont par-dessus les pics qui utilise une série de blocs disparaissant les uns après les autres. Il faudra être rapide et ne pas hésiter.

The ladder is pretty minimalist in RSD game-maker: it's simply a block where gravity does not apply. But it gave me the idea to draw 'hanging chains' that area also just gravity-less tiles. I guess navigating them with Badman's moves is closer to a bonus room (if there had been bonuses) than to a trial room.

The next one is the first real challenge, with blocks that fade in and out. Not that it will really stress your dexterity and timing skills, since both fading in and fading out blocks are simultaneously solid during the whole (fairly slow) animation. But immediately after, you'll get a super-long bridge of such blocks where you'd better ne quick (=jump) and steadfast if you want to make it to the final door.

And while we're in the 'bridge over spikes' theme, the next one uses falling platforms. That one is shorter, but the falling platforms are a side-effect of gamemaker's collision rules and tends to bounce you or let you fall through them.

Et puisqu'on y est, vu que j'avais découvert comment faire des plate-formes qui tombent dans le niveau précédent, bin je refais un deuxième long pont (moins, quand même) avec ces fameuses plate-formes qui croulent. (et qui sont peu fiables avec le moteur du RSD Game-Maker: on peut facilement passer à travers ou se faire repousser par le bord d'une d'elles

And then the pace changes, with the next transition being more a 'delevator' than a trial. Blocks are fading in and out, and let you slowly fall from cell to cell. There's nothing you can do to rush it.

The final trial will be much harder, with one-block fading mini-platforms. Badman's jump height is limited, though (2 blocks) so don't expect much variety here like having to move backwards or so.

Une fois n'est pas coutume, après ce deuxième pont (et son boss), un peu de temporisation avec les blocs-temporaires qui nous font une sorte d'échelle de descente où on a rien d'autre à faire que d'attendre.

Et après encore un boss, une petite échelle de plus, une autre chaîne et on passe sur l'incontournable série de mini-plate-formes (un bloc) qui s'effacent l'une après l'autre.

(bon, avec un maximum de 2 blocs de haut pour les sauts de Badman, la variété de ce passage reste limitée).
 



Thursday, April 01, 2021

Ma première pyramide

Assez curieusement, je n'avais pas eu le genre d'angoisse de la page blanche pour la pyramide de Badman II.


Mais bon le level design de Badman 2, c'était de la grande improvisation et pas mal de "bah si, regarde, on sait passer si ...". Et on a droit à un potpourri de vieux cliché de la pyramide de jeu. Voyons un peu.

Badman II was the first game where I did much of the level design myself. I guess my brother was on vacation or had found some student summer job. And I wasn't doing so much analysis paralysis on level design by then, as you can see. Let's have a look at the 'pyramid' level I wrote back in '96, since I'm currently struggling on designing pyramid levels for Bilou's Dreamland.

A peine arrivés dans la pyramide, on est accueilli par une sculpture lanceuse de flèches (A). On est sur RSD Game-Maker, donc quand ça tire, ça tire à intervalle régulier, qu'on soit présent ou non. Petite subtilité, cependant, si on s'accroupit, la flèche pas juste au-dessus de Badman et on est pas touché. J'étais tout fier d'avoir découvert ça :D

A peine quelques blocs plus loin, on rencontre le lanceur de grosses boules (B) à la Indy/Rick Dangerous. on est dans un corridor étroit, il vaudra mieux doser son timing. On enchaîne sur un saut pas évident pour Badman (j'y reviens) et on tombe sur les 'lances' qui sortent puis se rétractent (C) et plus loin dans la salle, des lance-flèches qui tirent depuis le plafond (D). Les 10 points de vie suppléemntaires trouvés devant l'entrée de la pyramide ne seront pas du luxe.

There are a few baddies in this level like lil'pharaohs and tank-like giant spiders, but your true nemesis is hidden in the walls and shoots things at you on periodic timers. It can be arrows (A), big boulders (B), ceiling-attached retractile spikes (C) or more arrows (D). 

On continue avec un choix: affronter toutes les araignées-tank ou escalader vers le haut de la salle et tenter de passer de pilier en pilier pour choper les 5 vies supplémentaires. En cas d'échec, on retombe dans les araignées.
 

ça mérite une précision sur le saut dans Badman. Dans la plupart des jeux de plate-forme, se cogner la tête au plafond signifie commencer à chuter immédiatement. Mais pas avec RSD. A la place, notre personnage 'vole' le long du plafond comme et la portée de son saut n'est pas diminuée. Le challenge pourrait donc sembler assez gentil et les vies sup' "gratuites". Oh que non.

Some of the level goes around the fact that some jumps are possible but tricky. If you just try them with a regular diagonal jump there will be some 'hanging-time' where you're almost there, but not quite. If you release "the jump button" then, you'll fall back to the ground. To reduce that time (where you'll be vulnerable to arrows in the previous screen), you'll have to chain a press on the '8' key of the numeric keypad and then only a '9'. Because unlike too-old-Mario, Badman's vertical (standing) jump goes higher than his running-jump.

La série Badman possède ce qu'on pourrait être tenté d'appeler "un nuancier de saut". En fait, il y a 2 sauts: le saut vertical et le saut diagonal. Chacun est mappé sur une des touches du pavé numérique, il faudra donc faire '6' pour courir vers la droite, '8' pour sauter sur place et '9' pour sauter vers la droite. Et si le saut en avant est légèrement plus rapide que la course en avant, en revanche, le saut vers l'avant monte moins que le saut vertical (effet inverse de Mario, en somme).

En plus de ça, à cause de notre mauvaises compréhension du moteur, chaque saut à une petite frame de non-saut lorsqu'on le déclenche. le résultat, c'est que pour monter par-dessus un obstacle de 2 blocs avec le saut-9 (au saut-7), ça 'coince' un moment et notre personnage va plus ou moins rester 'suspendu' près du bord du coin. Le truc pour passer en une fois, ça va être d'enchaîner rapidement un saut-8 puis un saut-9-maintenu. Ah, et oui, le moteur de jeu a une manière bien à lui de gérer l'inertie qu'on avait pas encore découverte, donc dès qu'on relache les touches, Badman retombe verticalement. Autant dire que sans être mauvais, la prise en main n'est pas immédiate.

Reprenons notre pyramide. On débouche sur un "gentil" zig-zag où il faut éviter les tirs de flèches et timer son passage. ça pourrait être une variation intéressante sur le premier passage si je ne commençais pas par le tir croisé.

On enchaîne sur un escalier plus long, de nouveau avec des lanceurs de gros boulets, mais cette fois-ci, l'espace étant plus dégagé, les boulets se déplacent presqu'en ligne droite (diagonale) plutôt que de "tomber" de marche en marche (la gravitation étant réservée aux seuls héros dans ce moteur). J'avais prévu qu'on doive "sauter" par-dessus les boulets façon Donkey Kong, mais le saut est trop court pour se tour-là si bien que la stratégie pour passer sans casse, c'est de s'accroupir au bord de l'escalier et de repartir une fois que le boulet nous a dépassé.

The pyramid features more zig-zagging areas with decreasing amount of 'cold places' and only the generous (?), amount of hit-point bonuses (those aces of tiles cards) you can use to heal. Apart from that, it isn't so far from the shot-frenzy of Commander Keen.

On enchaîne sur un faux-choix: à droite un sale moment à passer puis la suite du chemin, à gauche, un long corridor (quelques tireurs de flèches) et on retombe à l'entrée de la pyramide (mais en surplomb, ce qui ne sert à rien).

Et on ne va pas pouvoir souffler tout de suite. J'ai rajouté sur la section tortueuse suivante les trajectoires des projectiles: ça crépite de partout. Digne élève des pyramides de Commander Keen. Et seul l'absence de limite supérieure sur les points de vies de Badman rend la chose faisable tant les points de repos sont rares.

Dernier challenge avant le sommet, ces trois gardes à dégommer malgré le tireur sur le mur du fond (et un refill plus généreux de 10 points de vies). Mais les gardes ont un mouvement assez piégeux, faisant des "bonds" pour passer d'un creux à l'autre (en principe), inspirés des égyptiens-rappeurs de Lost Vickings.

Arrivé là, j'ai dû me dire qu'une pyramide sans clés, ça devait être un peu comme un soupe sans sel, alors j'ai rajouté une carte-clé et un bloc-serrure. Voilà. (ils étaient déjà dans le jeu Badman 1, celà dit, mais arrivaient nettement plus tard dans l'aventure)

Past the summit of the pyramid, I'll switch to a key-and-locks mechanics. The layout isn't that innovative, it's mostly an excuse to make you experience way-and-back motion versus one-way boulders or arrows.

Cette première clé n'est vraiment pas méchante. Elle fait presque tutoriel: on la voit en arrivant avant de tomber sur la serrure, et il suffit de partir dans la direction où on l'a vue pour tomber dessus en quelques secondes.

La deuxième (et dernière) va être plus chère à obtenir (en particulier à cause du nombre d'ennemis et de lance-pièges disposés sur le chemin), mais on reste sur la même recette.

Voilà. C'est le genre de niveau sans grande subtilité réalisé 'selon l'humeur du chef' qui constituait le coeur du jeu où j'étais seul à la manoeuvre (frangin en vacances ?) jusqu'à ce que Piek débarque fin-juillet.

Alors ? bon level design ?

Tuesday, June 30, 2015

Reading: Ken Kutagari.

Avec le recul, ça pourrait être mon "life-changing book: 4/3". Une lecture très enrichissante qui dépasse la simple annecdote de playhistoire pour nous donner une idée assez précise des enjeux de la conception d'un équippement électronique de pointe. Complexité d'approvisionnements, choix marketting, ... comment le fait d'utiliser moins de robots pour placer les puces sur la carte-mère est la meilleure option pour baisser les coûts (et enterrer la Saturn de SEGA). De quoi quitter un moment l'artisanat du homebrew pour découvrir "le vrai monde" de la production électronique de masse, parce qu'en électronique, si on a pas la masse, on y est.

Another Great Read at Pix'n'Love editions, but this time, you too, English-readers, can enjoy it, and not only the French-Folks. Because Reiji Asukara wrote it in English under the title "Revolutionaries at Sony", published by Mac-GrawHill, obviously. It goes well beyond telling the tale of Nintendo and Sony teaming up, then splitting, then fighting to death. It gives you a complete overview of how a technical tour de force has been converted into a successful mass-market product. Retrospectively, I realise that everytime I have to understand why some idea to hack around some existing hardware to extend functionalities cannot be integrated into a finished product, I end up mapping the situation to one of the key decisions of Ken Kutagari in the PlayStation design story.

Le côté technique est malgré tout un peu léger. J'aurais aimé voir en vis-à-vis le schéma général de la PS1, voire l'organigramme de son CPU/GPU basé sur le System G... Pour ça, il me faudra faire l'étude du "psx-tek" comme j'ai étudié les DS-tek et GBA-tek, encore qu'il est probable que je laisse ça à mon ancien étudiant qui avait réussi à s'acheter une "Net Yaroze" d'occasion... Peut-être que Ce que vous avez toujours voulu savoir sur la Playstation (par Joshua Walker)
.txt donnerait quelques raccourcis, celà dit.

I would have loved the book to go a little bit more into the technical details, though. It is nice to have this discourse over the hardware evolving towards lower manufacturing costs and how it was decisive in the race against the Sega Saturn. It would have been much better to show together the motherboard layouts over the evolution. The book kind of assume that you've teared down a PSX already or that you don't want to depict the chips in your mind when it tells about it.

There's very little being said about the actual engineering of the GPU, the component that made the PSX so unique. Because it is architectured along the (now classic) model of a command FIFO and hiding the video memory from the CPU altogether, even showing the register map do not reveal a single detail about how things are structured to make the rendition of 360,000 polygons per frame possible for the first time except two words: massively parallel. There's not a single example of what "the framework" that PSX developers had to use. For the first time, afaik, a gaming console was made using a CPU that had a "kernel mode" and a "user mode", unlike microcomputers-derived CPUs in NES-SMS-Genesis-SNES. I'm left guessing the kind of functions / construction blocks might be in there, but it shed light about misunderstandings concerning the "BIOS" of the playstation line of products: magazines may have messed up BIOS, kernel and framework countless times.


Je comprends néanmoins qu'une grande partie de ce qui était présenté à l'époque comme le "BIOS" de la PS2 (pour faire bouger les cheveux) était sans doute plutôt un composant du "framework", cet ensemble de fonctions toujours grandissant mis à la disposition des développeurs de jeu pour qu'il puissent se concentrer sur leur développement. Pas uniquement des bouts de code présent sur tous les systèmes ni même des bouts de code destinés à être embarqués sur CD, mais aussi les outils de développement qui vont avec ... peut-être p.ex. un encodeur vidéo pour 3DSmax qui utiliseraient au mieux le décodeur vidéo hardware présent sur la console.

NB: je n'ai jamais eu de Playstation ni cherché à en avoir une. Aucun des jeux que mon frangin me montrera sur la sienne (après Y2K) ne me convaincront. Seul m'aura plus Rayman, que j'ai eu en version PC (, avec un pad plus capricieux mais mieux adapté à mon historique de jeu.

Tuesday, June 23, 2015

Twinbee Rainbow Bell: la face cachée.

Vous vous souvenez de "Twinbee: Rainbow Adventures" sur SNES ? Moi oui. C'est toujours un de mes "platformers" préférés. Grâce à BananaMaster et à l'émission "SpeedGame" de Nesblog, je viens de découvrir une face de ce jeu que j'ignorais complètement: la version japonaise du jeu contenait une dimension d'exploration qui m'étais totalement inconnue.

I've been surprised to hear Banana Master presenting Twinbee: Rainbow Bell Adventure as an obscure, unknown platformer. After all, it's among my favourite titles on Super NES. I've been playing it, watching it, fan-covering it and playing it again ...But I was even more surprised to learn that the "European" version did not have the same overall game design as the Japanese version. Or maybe Pascal "Kameah"'s K7 featured an import of the Japanese version ?

Voyez plutôt: la map en version Européenne. Une sortie par niveau, une sorte de grosse spirale du début à la fin. A chaque niveau, il n'y aura qu'une seule sortie, bien sûr.

European game is linear. You find the exit of each level and you unlock the next one. The fact that you're moving on a map is purely cosmetic. The Japanese version, instead, has a kind of meta-game where you explore levels in a route you plan yourself. I'm not sure how the game decides that you may enter final levels, though. Personally, I prefer the original "Japanese" game design, which is closer to the kind of world map that my brother used to draw for our own "Bilou's adventure".

La version Japonaise, en revanche, aura une map avec plusieurs sorties dans un nombre important de niveaux, avec une dimension d'exploration "mais par où est-ce que je dois sortir d'ici pour continuer à progresser?" ...
Ce système n'est pas sans rappeler le design des niveaux de notre propre "Bilou's Adventure", même si mon frère avait plutôt en tête un système de "morceau de map" à récolter ici et là dans le niveau avant de se diriger vers une sortie unique plutôt que d'avoir plusieurs portes de sorties comme dans NSMB ou DK:Tropical Freeze.

Wednesday, September 14, 2011

Animer Bilou

Petite image d'archive, pour meubler un petit peu pendant que je tripatouille les entrailles de runme. Entre mes notes de philo, je gribouillais déjà en '96 des animations complète de Bilou à réintégrer dans le jeu QuickBasic. A partir de là, je pouvais identifier les positions à dessiner pour le "corps" dans mon Sprite Editor de l'époque, puis définir les coordonnées des 2 mains et des 4 morceaux de pieds à chaque étape. Bien moins agréable qu'avec AnimEDS, hein ?
Côté animation proprement dite, l'influence de Fury of the Furries a été déterminante.

I retrieved last week-end the full set of hand-drawn animations that were used to produce the QBasic version of Bilou platformer game... I'm sure you can feel the "Fury of the Furries" inspiration here. That was later used to plot the various (but restricted) 10x10 sprites for Bilou's body in my custom Sprite Editor, and then to write down the code that set the position of hands and feet ... 6 coordinates pair for every move. Sure it would have been easier if I had the AnimEDS as well by then ^_^

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.

Sunday, November 14, 2010

Bleeps and Bloops...

Je dois avoir découvert Donkey Kong Country II chez un gamin en '96 ou '97, qui m'avais demandé de lui passer un de ces niveaux au-dessus de la lave dans le Chaudron du Croco. Le jeu m'avait fait une forte impression et je sais l'avoir fini sur SNES avant de me lancer dans la chasse au 103% avec ZSNES. Mon frère l'ayant dégotté en GBA -- alors qu'il n'a jamais été très Donkey --, je lui chippe une petite semaine. Hélas, le portage n'est pas à la hauteur de l'original: son "rabotté" qui sonne "début des années 90 sur Amiga" et des graphismes curieusement pauvres en couleurs ... Le gameplay semble être resté assez bien le même, mais garder le bouton 'B' enfoncé pendant tout un niveau se révèle pénible sur DS lite avec mes paluches d'adulte. Déçu, donc, mais intrigué de savoir pourquoi Captain N a ainsi décidé de massacrer un chef-d'oeuvre d'immersion sensorielle pour le faire tenir sur une console près de 10 ans après sa sortie sur SNES ... Voilà ce que j'ai trouvé au niveau du son.

My brother dug two GBA cartridges that we tested last week-end : Donkey Kong Country 2 and Super Mario World -- two major SNES hits that were converted to "prime" the new console. Both turned out to be fairly disappointing, esp. DKC2 that sounds and look like a cheap clone. This post collects pointers to the audio specs of the original Game Boy, the Gameboy Advance and the Super NES in an attempt to explain why the "cool sound" of the SNES couldn't be retrieved and why the SNES tunes usually sound more like MIDI than like tracked music, although the hardware 'looks' tracking-compatible.

Game Boy :

2 square waves, 1 programmable 32-sample 4-bit PCM wave, 1 white noise, and one audio input from the cartridge.[25] The unit only has one speaker, but headphones provide stereo sound (for further information, see Game Boy music)


En clair, au niveau rhytmique, on est proche de ce que fait le beat-voxing: un son masque complètement le précédent. Et celui qui veut faire dire "Ghostbuster ... wha hahahaa !" a sa console doit reprogrammer à la volée le buffer de 16 bytes jusqu'à ce que l'ensemble du sample ait été joué. Oui, quand ils disent "32-sample", ils parlent bien de 32 bytes si le son avait été 8-bit, et de 16 bytes vu qu'on a que 4 bit par échantillon. Rien à voir donc avec le "sample" d'un soundtracker.
Autant dire que quand "Zelda: Link's awakening" nous chante une mouette qui passe, le "z80" ne doit pas être loin du 100% d'utilisation de ses 4MHz tout mouillés (en fait, non. La mouette est faite à coup de square waves, et pour le reste, c'est surtout la technique des wave tables qui est utilisée).

SNES et son SPC-700 -- une sorte de System-on-Chip intégrant un CPU de C64 (6502), des unités de conversion Analogique/Digital, de l'ADSR en hardware, lecture de samples à vitesse variable et mixage hardware pour 8 pistes. 64KB de RAM dédié au contrôle de tout ce petit monde (et aux samples, évidemment) grâce à un programme pour SPC qui aura été "uploadé" depuis le CPU principal de la console. Ca me rappelle un peu le tandem ARM7/ARM9 de la DS, mais en horriblement plus custom :P

GBA :
The GBA supplies four 'analogue' sound channels for Tone and Noise (mostly compatible to CGB sound), as well as two 'digital' sound channels (which can be used to replay 8bit DMA sample data).

La réalité me semble un peu plus tordue: deux canaux de "square wave à timbre programmable", avec enveloppe simplifiée (linéaire, quoi), et un de ces canaux est capable de "portamento" en hardware. On a un canal de bruit (canal#4) et un "chipsound programmable" similaire au canal 3 du bon vieux gameboy. A côté de ça, deux canaux jouent ce qui sort de la ROM (ou de la RAM si on veut faire un modplayer) à grand renfort de transfer DMA -- exactement comme une Sound Blaster 8 bit, donc. De quoi expliquer le "look" si particulier de la bande son de Zelda: Minish Cap qui mélange "sons gameboy" avec des strings orchestraux et des voix numérisées pour les personnages. Pour jouer un .MOD de 4 pistes sur cette console, il faudra faire le mixage et le traitement de la hauteur de la note entièrement en software sur le processeur ARM à 33MHz. Si c'est techniquement possible, on aura sans doute plus grand-chose comme puissance de calcul à dédier au jeu lui-même qui devient une sorte "d'annexe au modplayer" façon Crazy Brix. Il faut aussi rappeler que le GBA a relativement peu de RAM (32K, plus de la "EWRAM" à accès probablement plus lent, mais dont je n'ai pas saisi le rôle précis jusqu'ici), et que si le SPC de la SNES pouvait laisser la lecture des samples au hardware dédié, avec un mixage en software, ça passera forcément à travers le même bus que le reste des données...

I'm pretty sure you remember your good old 486 DX 33 and his soundblaster, right ? That computer had the guts to do software rendering of a multi-track sample-based tune, but still, 90% of the games you can find on any DOS museum site will use AdLib (or clone) for the background music. And for a good reason: doing software real-time mixing of the samples will consume a good deal of your CPU's power. Yet, that .MOD tune you're struggling to play was likely written on an Amiga 500 clocked at 8MHz -- but that had dedicated hardware for bending, shaping and mixing samples. The very same thing occured between GBA and SNES : the GBA inherited from the sound system of the original Game Boy and has a stereo DMA channel to stream something else -- including something that is mixed in real time -- where the SNES had a slower clock speed, but hardware sound mixing.

plein d'infos sur le son du GBC (sauf à quel point celà diffère du GB :P) On notera sur GB et GBC la présence d'une ligne "audio IN" de la cartouche vers la machine. Pas souvent utilisée commercialement, mais ça ouvre la possibilité de monter un soundchip ADlib sur une cartouche GBC pour se faire un remake ultime de Fury of the Furries ;)

Sunday, July 26, 2009

avant Bilou ...

Avant même Calimero, se basant sur Rick Dangerous, mon frère me sort un niveau pour un jeu de plate-forme mono-écran qu'il baptise "Logic Labyrinth", rempli d'interrupteurs et de pièges en tout genres. Le concept me plait et je relancerai l'idée plusieurs fois (chaque fois que je découvre un nouvel environnement de programmation, en fait). Logic labyrinth manquait d'un personnage, par contre. Il devait s'agir d'un "char de l'espace", ce qui ne passait pas trop mal du temps de LOCO 64, mais plus difficilement après avoir découvert Giana Sisters. Je vous laisse donc découvrir cette petite illustration millimétrée de deux protagonistes destinés à s'attaquer au fameux labyrinthe, qui doit précéder la rencontre avec Piek de deux ans au moins.
Une balle aux cheveux hirsutes et une asperge à casquette ... Eh oui. On reconnait déjà le tandem "Bilou et Bouli" même si le style n'a encore rien à voir. A noter que Bouli étant arrivé sur le tard, son 'look' a souvent changé au fil du temps. Il était de bon ton, à l'époque, de prévoir un deuxième perso pour le joueur qui prendrait la manette 2 (ah, époque bénie ou une manette de console ne coûtait rien ;)

The image above is the Level 1 for a never-realised game of mine : Logic Labyrinth. With a strong influence from Rick Dangerous, my brother imaged one vicious puzzle screen where a hover-tank would avoid traps and cleverly activate switches to reach its goal. Since I wasn't too happy with the "hover tank" idea as a character, i started investigating a funnier team: a blue ball and a tall guy with a cap. This all took place years before we met Piek and it could be viewed as the very first step towards Bilou and Bouli the way we know them today.
Over the years (I was roughly 10 at the initial attempt on Logic Labyrinth), I reviewed the concept several times, being somehow a fan of puzzle platformers. Drawing inspiration from Misadventure of Flink or Pushover, the game has been renamed "Mo, the sorcerer apprentice" or "Nono in the Maya Zone", but it never grew bigger than a dozen of lines of code.
première tentative, Bouli en "négatif couleur" de Bilou, mais tout aussi rond que lui, qui apparaît parmi les ennemis d'une "technical zone" très largement inspirée de la "Chemical Zone" de Sonic 2 (découvert début '93).
C'est peut-être un peu trop "cheap". C'était bon du temps de Mario Bros. ou de Chip & Dales sur la NES, mais plus à l'époque de Sonic & Tails où même Mario et Luigi commencent à ressembler à Laurel & Hardie.

Second essai à peine plus ancien: Bouli en tant que "Superlapin", sans doute inspiré de Mr. Nutz. Mon frère n'aime pas. On oublie. A noter qu'à l'époque, Bilou porte des gants et a encore des bras.

C'est à Sparenduin, notre "pépinière de jeux vidéos" que naîtront les habitants de la "Pipe Zone". Il ne manque plus qu'un sourire au Pipe Meccano pour se transformer en Bouli tel que nous le connaissons.

Et pour revenir au jeu Logic Labyrinth, il aura été "revu" à plusieurs passages successifs à Sparenduin, une fois en "Nono in the Maya Zone" (en avril '96, influence probable de Push Over) puis en "Mo, l'apprenti sorcier" (influencé par Misadventure of Flink"), mais je n'en ai encore jamais commencé une tentative de programmation "sérieuse".

Still on the 'historical' side, can show you the very first spritesheet of Bilou (still named 'Boudy the Bubble' when drawn, though the name 'Bilou' appeared that very day) that Piek brought us on September the 25th, while i was working on a "maze race" game. Just above, you can see a collection of "alternative designs" for Bouli, first as "color opposite" of Bilou (plus hat), then as "über bunny". None of them were kept (hopefully ^_^) and i'd be tempted to say that de "pipemans" designed to be baddies in the 'Pipe Zone' might be announciating the current design.

Quant au nom "Bilou", c'est au moment de sauver les premiers essais de course dans les labyrinthes (précurseurs de "Bilou RPG") sur diskette qu'il apparaît. Piek m'avait affublé de ce sobriquet tout au long de l'après-midi, il deviendra officiellement le nom du personnage quelques heures plus tard.

Dernière pièce de musée, donc, cette "planche de sprites" dessinée et apportée ce jour-là par Piek, où Bilou s'appelle encore "Boudy" ou "Bubule".

PS: Oui, désolé, je suis dans un trip nostalgico-historique cette semaine-ci. Je promets le retour du développement sur DS prochainement ...

edit Découvrez M.G.T, la source d'inspiration de Logic Labyrinth, dans Pix'n'Love #13.

Thursday, March 26, 2009

BBL metadata.

Voilà. Une fois qu'on dispose de tout un jeu de .BBL avec les tileset correspondant, c'est bien plus simple de reconstituer le rôle des 20 bytes de contrôle ... C'est ce que fait de son mieux ce petit outil "bblmeta.pl" que je vous offre également.

Chaque ligne rappelle le numéro du bloc (en hexa) et sa position dans l'image générée par bbl2png (le premier, par exemple, r02 c12 correspond au premier canon, tourné vers la gauche sur la 3eme ligne de l'image). Suit ensuite les "flags" tels que lus dans le fichier .BBL puis l'interprétation de ces flags par le script bblmeta.pl

J'ai repris la technique des répertoires UNIX: un '-' chaque fois qu'il n'y a rien à signaler, une lettre sinon. Ainsi "B--a-K" serait un bloc solide (B) animé qui interagit avec une clé (probablement une porte). "--g-+-" est un bonus qui rapporte uniquement des points, etc. Pour être exhaustif, je dirais que le programme reconnait:

  1. Bloc, Floor, Wall ou ciel (-)
  2. Pickme : l'objet peut être ramassé pour l'inventaire
  3. g, l ou r : gravité normale, vers la gauche ou la droite. Les autres combinaisons ne sont pas reconnues.
  4. a : bloc animé,
  5. t: réagit au contact
  6. bonus/malus : H=hitpoints, x=kills, + : score
  7. L = 1UP, K=clé/porte.
En plus de ces "flags", certaines valeurs sont indiquées dans une liste entre parenthèse, comme la succession des blocs pour une animation, le nombre de hitpoints ou de clés, ou de points modifiés lors d'un contact , le numéro du monstre tiré (pour les blocs qui tirent des monstres), etc.

Here comes a second funny PERL script. It extracts meta-data from .BBL (Background BLocks), .CBL (Character BLocks) and .MBL (Monster BLocks) produced by RSD Game-Maker. If you used to write games with that editor, feel free to use that tool to retrieve all meaningful elements and port your old funware to some new platform. If you do so (or just plan to do so), please share the joy and post a comment.

This tool is a kind of "preliminary" reverse-engineering tool. It can tell you roughly what are the properties of individual blocks but detailed information may need to be looked up in the 40-digits hex string. Each line describes a block. Right to left you'll have the following information :

1c (r01 c13): 400100000000000000ffff1b64001c0400010000  --ga-x-  (a1b,100)(h-1)
^    coords   |--- complete hex dump of meta-data ---|  |flags|  |---details--|
+- block number
On the right side, "flags" tell you roughly what are the properties of your block. here you see an Animated block that has downwards Gravity and that hurts the player (x) on contact. Details tell you that it animates to block 1b after 100 ticks and that hitpoints are reduced by 1 on contact. On the left, you have block number (block #x pixels are located at bytes x*420..x*420+399 in xBL file) and the row/column coordinates on the picture generated by my former bbl2png.pl script.
Bref, ce n'est certainement pas aussi souple que l'éditeur du game-maker (et d'ailleurs, ce n'est pas un éditeur, juste un outil d'inspection), mais ça capturera la plus grande partie des cas que l'on retrouve dans un jeu de plates-forme comme les Badman.

Hope it Helps ^_^
PS: 1st byte is the index of the generated monster (0x40 = no monster generated), thus byte 2 is likely the delay between two such generations.

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, September 23, 2008

Biokid NT : countermeasures

Quelque part en 1996, mon frère Piet me pond une storyline un peu abracadabrante inspirée d'un vieux souvenir (le Stoner): votre PC est infecté par le terrible virus Terminator 007. Le seul moyen d'en venir à bout, c'est le nouvel anti-virus interactif de PPP Team Software: Biokid.

Back in 1996, my brother's mind give birth to a curious story: your PC is infected by a dangerous virus -- the Terminator 007 -- and the only thing that can get rid of it is the brand-new interactive antivirus from PPP Team Software: Biokid. To put it simpler, Biokid is a crossing over between Megaman character and Commander Keen level design where you hunt for keys and weapon upgrades in maze-like platformer. It turned into one of our best production on RSD Game Maker.

L'idée, c'était de tenter de s'approcher du gameplay d'un Megaman. Mais là, j'ai envie d'un petit jeu au principe plus simple (un shoot'm'up) que Bilou pour roder un peu mon Game Engine, et plutôt que de ressortir Bilou Sky Quest (C64) ou d'essayer un portage de Out'm'up (assembleur, Y2K), je me suis dit que j'allais ressortir Biokid dans un nouveau mode de jeu: "Counter Measures".

Plus question d'assurer passivement la défense de votre réseau: Biokid prend les devant et part vaillamment à l'assaut du plus grand Botnet qu'il vous a jamais été donné de combattre.

I was thinking of giving my game engine for DS a try in a different setup : a shoot-m-up. I could have reused "Out'm'Up", our brain-free shooter that won the 100K game competition at Inscene Y2K. Or I could have revived "Bilou Sky Quest", the test game I made on C64 with the "Shoot-Em-Up Construction Kit". For some reason I started dreaming of a shooter featuring Biokid who'd now have to protect your corporate network proactively and fight the largest and scariest Botnet ever fought. (hmm. I could have been "inspired" by the Bionet EU project a colleague of mine is working on, btw).

edit: bon, comme vous le voyez, côté graphique, il y aura du boulot ... je voudrais recréer une ambiance "newschool" inspirée de Matrix, Tron et autres Space Invaders Extreme ... on verra ce que ça donne ...

Saturday, August 02, 2008

Appleman II -- le retour

L'autre jour, j'attendais Cyril dans la cuisine de Montef' avec une série de "vieux" croquis du temps où je nourissais le rêve d'un Bilou en 3D sur PC. Contrairement à l'animation habituelle, cet appleman rondouillard se dandinait de droite à gauche en marchant, et je lui ai trouvé un air plus intéressant ... un peu "pataud", en quelques sorte, trop rond que pour pouvoir "marcher" confortablement.

Un qui a bien ri, évidemment, c'est Dali, qui m'est entré au moment où je faisais le tour de la table en marchant les mains serrant les chevilles histoire de me sentir plus dans la peau du personnage ^^". Mais vu l'animation qui en résulte, je crois que ça valait la peine. I hope you enjoy the new look of Bilou in this walking animation, but also the new look of the Appleman. I'm trying to apply pixelating tips learnt on WayOfThePixel.net (such as sub-pixel animation), but also trying to make the appleman perceived as a "less evoluted" lifeform that cannot move as freely as Bilou. He's too heavy for his poor feet and must lift his body at every step. Bref, je profite des dernières heures avec la DS lite de mon frère pour faire du pixel art à gogo. Hier, avec Pierrick, j'expérimentait une variante de mon arbre avec des "pixels transparents" dans les feuilles de l'avant-plan, histoire d'éviter l'aspect "brocoli" habituel ... Aujourd'hui, c'est l'appleman ... Oups! le four est chaud. Je vous laisse: faut que j'enfourne mes quiches :P *edit* ah. les problèmes de serveur sont réglés. Vous pouvez enfin voir ça ... Au fait, merci pour les 25 amis qui ont donné leur avis sur le nouveau look de Bilou, comparé à celui vu sur la bannière du blog (pour rappel, les arbres utilisés provenaient de Zelda: Minish Cap et de Donkey Kong : King of Swing sur GBA). Pour rappel, un petit screenshot de la forêt en 1996, avec Bilou et un Appleman. Si votre avis est plutôt "on oublie", je suis évidemment intéressé de savoir ce qui vous paraît moins réussi dans cette nouvelle version. Oh, and by the way, thanks to those that have voted on the "do you like Bilou's new look" so far. I'd be curious to know what made two of you pick "forget it", of course (esp. if knowing it allows me to improve). Please take into account that the blog's banner (which is what i suggest you to compare against) features background trees from DK:KOS and that leaves on foreground trees were borrowed and edited from Zelda : Minish Cap.