Wednesday, October 21, 2009

You're gonna die! Dieee() Hahahaaa }:-D

First step into a more complete development environment on the DS: a small die() function that will play the role of a top-level exception catching for both C++ and hardware exceptions. You'll learn more about it in future posts. Of course, it relies on a modification of arm9/gurumeditation.c in libnds:



static void defaultHandler() {
videoSetModeSub(MODE_0_2D | DISPLAY_BG0_ACTIVE);
vramSetBankC(VRAM_C_SUB_BG);

SUB_BG0_CR = BG_MAP_BASE(31);

BG_PALETTE_SUB[0] = RGB15(31,0,0);
BG_PALETTE_SUB[255] = RGB15(31,31,31);

consoleInitDefault(...);

iprintf("\x1b[5CGuru Meditation Error!\n");

// ... here comes registers extraction, and stuff.

die("guru",0);
}

rhaatchet & clank

Jusqu'ici, mon Cyborg de frère m'avait surtout fait tester du "concept game" téléchargé sur PSN. Le week-end dernier, entre deux dessins pour mes p'tits n'veux, je n'ai pas pu résister à la tentation d'essayer moi-même le Ratchet & Clank que Ciji avait mis dans sa PS3 pour eux... Et je m'étonne qu'il y ait tant de lacunes à ce jeu.

Tuesday, October 20, 2009

Sprites à Priorité Dynamique

Voilà typiquement le genre d'environnement qui était pénible à construire avec l'ancienne version de LEDS et qui devient simplissime avec le curseur de copie et autres nouveautés.
Mais c'est aussi le genre d'environnement qui pose problème au moteur de jeu dans sa version ".999" parce que j'utilise les deux plans de tiles comme arrière-plan alors qu'à d'autres endroits dans le jeu (p.ex. quand Bilou est dans un arbre), il se situe en fait _entre_ les deux plans.

Bushes like these were typically the kind of background that was a real nightmare to build with the previous release of LEDS. And with the "copy cursor" and "pull to foreground" modes of the new prototype level editor, it's really easy and funny. On the other hand, it was also the kind of background that challenged the game engine. It is acutally built by "flattening" the two layers in such a way that i never need more than two tiles at a place, and yet simulate much more planes. Unfortunately, as i wish some elements to hide Bilou (such as walls and trees in secret places), Bilou actually stands "between" the two layers i'm using here, while in this specific case, he should be on top.

Le résultat, c'est que souvent, les pieds de Bilou étaient masqués, comme sur l'image ci-contre, soit parce que j'avais oublié de repasser l'herbe en arrière plan, soit parce qu'il y avait déjà un autre élément de décor par-derrière l'herbe.
Quand j'avais lu les spécifications techniques de la console Genesis, j'avais été plutôt étonné de voir qu'il n'y avait que deux plans de tiles. Or, Sonic est parfois devant le décor et parfois derrière (sans compter l'image de fond, bien sûr, qui occupe le 2eme plan). Le truc, c'est que contrairement aux console de Nintendo, la Genesis permettait de définir pour chaque tile si les sprites avait priorité ou pas pour l'affichage.

As a result, it is common to see Bilou's feet hidden by the grass in the latest demo, either because i forgot to move the grass to the bottom layer, or because it has to be on the front layer due to some other object (e.g. vines or bushes) in the background. I'm trying to address this by reproducing in software the technique used in the SEGA Genesis, as illustrated in Sonic II.

Je vais donc tenter de reproduire cette approche en software: puisque je dois tester les "flags" de chaque tile lors du déplacement de Bilou, je peux assez aisément en ajouter un qui force Bilou (et les autres sprites) à "passer par-devant le décor" quand ils sont au moins partiellement en contact avec ce tile-là. Ca risque bien de compliquer un rien l'édition de niveaux, mais ça devrait valoir la peine...


Despite the Genesis had only two "scroll layers" (against 4 for the DS), it dynamically evaluated tile-to-sprite priority: while all the tiles involved in the "tunnel" on the picture above were on scroll layer A, Sonic can be hidden by the "front pillars" and still seen in front of the dark checker tiles. I'm unsure whether this implies that rings in Sonic were sprites, though. I cannot change the DS hardware, but i can mimmic this technique by having some of the tile attributes (F_RAISER) that forces any sprite that hits it to appear above all the "scroll layers" rather than between "F scroll" and "B scroll" for this specific frame. It's still to be tested.

Tuesday, October 13, 2009

Ziggy, il s'appelle Ziggy ...

Unfortunately, I'm not the author of these graphics (2Dhero -- Tom Filhol is), neither am I working on a nintendo DS port of this indie game running on Game Maker for Windows. So why does it appear here ? because I'm studying it as much as I can: character design, graphic style, palette choice, composition. This is truly a platformer gem that we are offered here, reminiscence of Superfrog (with so much better gfx!) 

 Je ne peux pas m'empêcher de comparer Ziggy à Superfrog. C'est un excellent exemple de "jeu d'auteur" où la passion (et le talent, je dois l'admettre) nous apportent un jeu d'une qualité rare en ces temps de crise. Vous l'aurez compris: il ne s'agit pas de graphismes à moi, ni même d'un homebrew pour DS (dommage, d'ailleurs). 2Dhero nous a concocté son jeu "en indépendant", avec le Game Maker pour Windows, comme beaucoup d'artistes du pixel le font ces derniers temps. 

De mon côté, j'étudie tout ça avec beaucoup d'intérêt ... palette de couleur, composition de la scène, style graphique, etc. J'imprime en gros plan, je colle des petits extraits dans mon agenda, etc. Je ne "relookerai" probablement pas complètement Bilou pour suivre le "style ziggy", mais comme je coince sur les lianes et les fleurs ces temps-ci ... A noter au niveau gameplay une "attaque aérienne" qui permet de sauter horizontalement en plus du saut ordinaire, ce qui ouvre presque plus de possibilité que la "glissade", plus classique. Oh, et pour ne rien gâcher, il tourne dans wine...

Edit: it took me a while to do it, but in december, the 'slopes demo' features ziggy-inspired vines. 

Sunday, October 04, 2009

L'île des colons -- that was Bilou RPG

Je m'offre un petit moment de nostalgie... En cherchant "Bilou et son astro-flasheur à perforation en vrille" pour mon frère, j'ai repris une série de captures d'écran (vus sur twitter) d'un de mes plus gros projets en QuickBasic: Bilou's Quest. Un Zelda-like dont j'ai retrouvé une version sur diskette en fouillant chez mes parents il y a quelques semaines de ça. Le montage n'est pas génial: à l'époque de la sauvegarde, j'étais alors occupé à remplacer le joystick par la souris, ce qui fait que la version récupérée a besoin de la souris pour diriger Bilou et d'un gravis 4 boutons pour parler, soulever, etc. Bref, j'ai triché en démarrant les fichiers .BAS directement.

I'm taking you back 15 years ago, with a couple of screenshots i've taken this morning. Here comes the island that Bilou explores in Bilou's Quest -- one of my largest QuickBasic games. I recovered a backup on a floppy a couple of monthes ago and finally managed to make it run again ... well, sort of. I agree there isn't much to be proud about anymore: that's just a nostalgic memory, and the first occurence of Flower Power and Badman in pixels.

Du coup, je goupille comme je peux, je remplace les écrans auxquels je n'ai pas su accéder par des captures de l'intérieur des maisons et des grottes, etc. Bon, je vous le concède, en dehors de l'aspect "nostalgie", il n'y a pas grand-chose à en retirer. La maniabilité était innomable, les graphismes de Mystic Quest sous GameBoy sont bien plus réussis, le scénario manque cruellement d'inspiration, etc. Rien qui ne justifie que je cherche à en tirer une adaptation DS, quoi. Mais en son temps, c'était chouette de bosser dessus ;) Et puis, ne lui retirons pas sa valeur essentielle: c'est un projet qui a été transformé en un jeu. Compte tenu de la quantité impressionnante d'idées de jeu que "la farde PPP" contient, Bilou's Quest a tout de même le grade de "réalisation", même si ça ne couvre que 10% du scénario prévu (à la fin du niveau 1, le joueur n'a pas encore d'épée et ne peut se défendre qu'en lançant des pommes). Merci à mon frère Piet de me le rappeler.

Bilou's Quest (extra screenshots)

 Screen title used software-rendered fonts for better readability, and featured small cutscene with a "soldier bubble".


The "quest status" screen was equally black-background, and drew inspiration from "Zelda: Link's Awakening". You could pick two objects and assign them to the 2 buttons of the mouse ... but at this stage in the quest, you have no object yet. Your pal Bouli is shown in jail just above the load/save and the map icons.