Monday, April 14, 2008

A propos ...

        ||///
@ . .
----ooo--( )--ooo----

Ce blog est dédié à mes tests/programmes/jeux(?) sur la console nintendo DS, mais aussi à tout ce qui pourrait me permettre de redonner vie au jeu "Bilou's Adventure".

3eme planète du Système Solaire, un gars bizarre dessine des balles bleues et écrit des programmes ... C'est moi ;) Les copains, si vous m'avez lu, laissez-moi un commentaire de temps en temps, c'est toujours sympa ^_^


Si ça ne satisfait pas encore votre curiosité, je vous invite à dévorer ma fiche parano.be, désormais effacée par l'Ordinateur, ou la petite FAQ du projet "Bilou sur DS", voire (pourquoi pas) vous faire une rétrospective du projet : la green zone et la préparation de la school zone

PS: n'oubliez pas de signer le livre d'or

Level Editor en cours

Allez, j'ai fait ma petite "todo list" des modif à apporter à mon éditeur de niveau (qui sait déjà gérer deux plans séparés pour construire les niveaux depuis vendredi soir). On s'y met pour le code (y'a pas mal de boulot).

  • [done] SpriteSet::Load() and SpriteSet::Save() support for extra datablocks.
  • [done] TileTable that works like SpriteTable widget, but using tiles, not sprites
  • [unlikely] Grid and Palette widgets that use multiple 16-color palettes instead of 256-color palette to reduce the amount of unique tiles needed by the widgets
  • [done] fit all the widgets within 16K Vram *max* (one 'charbase'), including maps. Everything beyond 16K is free for allocation using Engine::allocate(RES_TILES). That would make 16-color ASCII font (8K -- well, i'm unlikely to need extended ascii characters, so i could replace those upper 4K with widget-specific tiles)
  • [done] a cleaner way to manipulate up to two layers in an application-dedicated way (e.g. standard widgets in libgeds will not use these). That means only "standard" layers are background and (ascii) overlay.
  • [wish] SpritePages that can share tiles among many blocs
  • [done] extra tilesets in the file to store animations out of the 64K of tileset VRAM allows.
  • [done] SpriteSet that automatically insert blank tile #0
edit: c'est assez marrant de voir que c'est principalement ce que j'avais marqué comme "souhaité, mais pas vraiment nécessaire" qui s'est quand-même retrouvé implémenté en premier :P

Friday, April 11, 2008

Ravalement de Façade (de donjon)

1. Relooking des couleurs ...
'Faut comparer des choses comparables. A noter déjà qu'il y a 3 teintes dans la plupart des blocs "sols" dans ZLA contre seulement 2 dans OOS. Et avec 2 teintes, on sait juste donner un look 'peinture', pas de relief.
So, I picked a room in "Zelda: Oracle of Seasons" and applied the tail cave look of "Zelda: Link's Awakening DX" on the right. Just that already makes the ZOOS version look flat and dull, with only 2 colours for most floor tiles.
 
2. Un peu plus de relief
Assez facile aussi. Une troisième teinte de mauve, un peu plus désaturée et plus sombre, et je "bumpe" les pavés mauves qui entourent l'escalier. Notez qu'en laissant tomber le contour jaune, je ne consomme en fait pas plus de couleurs que les tiles d'origine.
As a first step, I replaced the "2 purple + 1 yellow" palette with "3 purple", in order to "bevel" more the decorative tiles around the stair.

3. Un peu moins "rectangle".
Cassons les coins de cette salle, que diable. C'est un donjon, quoi, pas une salle de bal. Un gros donjon bien lourd = des gros piliers massifs pour soutenir le toit = des coins pas droits. J'en profite pour épaissir les traits au pied des murs. Ca renforce l'impression de lourdeur (c't'un mur, quoi, pas un bête escalier).
Second step: breaking the corner, to make the room visually more interesting. This was done a lot in ZLA. I also increase the black outline to make the walls more massive-looking (compared to the stairs, for instance)

4. La touche finale
Ces p'tits blocs qui ne servent à rien qu'à décorer et à être dans le chemin. Bin voilà. Mettons-les dans le chemin pour décorer ^_^ (moitié OOS, moitié ZLA, bien sûr).
Next, some decorative obstacles such as those statues (and why not fire lights in the corners, after all ;) That helps giving the room its own "personality" (you could "name" the place to another player without having to rely on a coordinate system), and it makes monsters fighting more interesting, as it it enables hide/seek.

Je ne sais pas vous, mais je trouve que le niveau y gagne en intérêt. Pour être tout à fait juste, j'aurais dû refaire le sol de OOS avec 3 teintes aussi, pour ne pas qu'il reste aussi plat. Mais bof, il ne me convainc de toutes façons pas, donc je le laisse comme ça. Allez, hop, j'ai trouvé la 3eme teinte de "vert-gameboy" sur un switch, elle est plus sombre, donc j'assombris le tout. On note que ça passe mieux avec les murs, du coup. J'ajoute aussi du relief avec la teinte "claire" qui était au départ la plus présente et voilà le résultat: Poison Moth's Lair comme il aurait pu (dû?) l'être si Nintendo n'avait pas essayé de sortir 2 zelda en même temps (?)

Final touch is on the ground. There's a 3rd tint in the yellow palette, as confirmed by a switch tile somewhere further in the dungeon, so I moved the floor to the two darkest shades, and kept the lightest one for selective highlights. That makes "Moth's Lair" as it should (imho) have looked like if Nintendo wasn't trying to have two Zelda games released simultaneously.
That being said, I have no programmable GBC/GBA to check that it would indeed be good-looking on the no-backlit GBC screen ...

Zelda DX vs Zelda OOS

Eh oui. Je me refais (encore) Link's Awakening. Entrée dans le donjon 6 avec l'arc et le boomerang, sortie avec l'épée niveau 2 (déjà). Et je ne suis pas trop dans la dèche. Je crois même que je vais aller m'acheter des tickets pour le concert de Wart. J'emmènerais bien Marine avec moi, tiens, ça lui fera sans-doute plaisir.

Non, sérieusement, ça faisait un moment que je voulais mettre côte à côte un niveau de Link's Awakening et un niveau de Oracle of Seasons), tous deux sur GBC, mais le second me donne l'impression d'être plus "creux" et plus "plat" dans ces donjons que le premier. Bien sûr, je ne peux pas être objectif vis-à-vis de ZLA, vu que c'est mon tout premier Zelda. Quand on découvre le grappin pour la première fois dans un jeu, ça vous marque, bien sûr.

N'empêche, même en faisant abstraction des couleurs (plus pâlote à droite dans OOS), et qui font plus ressortir le contour noir des objets, je trouve qu'il y a beaucoup d'espace inutilisé dans cette map du 3eme donjon par rapport à une surface identique dans le 1er donjon de ZLA. Un choix pour favoriser les combats de groupes plutôt que les combats dans une zone restreinte ? Ce qui est sûr, c'est qu'on perd un peu plus du côté "labyrinthique" des donjons (je trouve). Ils sont moins décorés, aussi. Les salles sont plus rectangulaires et arborent moins de ces petits détails mégalomanes que l'on trouvait dans les donjons de ZLA. Contrainte technique due à un gameplay plus riche, peut-être ?

Difficile à dire, quoi. Et vous, vous en pensez quoi ?

Thursday, April 10, 2008

Buggy Beetle

un bug vraiment très bête, en fait. Genre, deux lignes inversées dans un module noyau, et vlan, tout plante ... Je ne suis pas trop rouillé en Assembleur et en noyau linux, heureusement. A partir du crashdump sur le terminal (zd1201_usbrx+0x717), j'ai réussi malgré tout à retrouver le bout du driver pour ma clé wifi USB qui a provoqué un beau gros plantage de Gutsy Gibbon, la release ubuntu installée sur mon nouveau beetle. Il aura fallu attendre le passage à Hardy Heron pour que la correction arrive dans Ubuntu. Je suis aussi arrivé à la conclusion (après un peu plus de chipotage), que la ligne
 skb->dev->last_rx = jiffies; 
supposée indiquer dans l'état du driver l'instant où le dernier paquet avait été reçu tentait de modifier un "device" qui n'a jamais été initialisé auparavant ("thou shall not follow thee NULL pointer", comme dirait Cyril). J'aurais bien rajouté à la main un "skb->dev = zd->dev", mais j'ai fini par faire une petite recherche google qui m'a appris beaucoup plus rapidement qu'en fait, ce champs-là est initialisé par la fonction appelée juste en-dessous (eth_type_trans, pour les intimes) :P Le code correct lit donc
  memcpy(skb_put(skb, len), data, len);
  skb->protocol = eth_type_trans(skb, zd->dev);
  skb->dev->last_rx = jiffies;
  zd->stats.rx_packets++;

Bon, par contre, pas trouvé le moyen de recompiler juste le module foireux (voir plus bas). Il est teatime, et je lance ma première recompilation de noyau sur mon dual-c0re tout neuf à 4GB de RAM... ... 1/2 heure plus tard, la recompilation est terminée, mais évidemment, les batteries de ma DS n'ont pas attendu jusque là. 'faudra essayer tout ça demain :P here's a recompiled zd1201.ko module for the default gutsy kernel reusing local configuration (dual core, just in case). 

Install in /lib/modules/2.6.22-14-generic/kernel/drivers/net/wireless/ and make sure you have fresh firmware files (available on http://linux-lc100020.sourceforge.net/, to be installed in /lib/firmware/2.6.22-14-generic/) 2.6.22-14-generic/kernel/drivers/net/> md5sum wireless/zd12* 5e109dc87a1fa80d7c67834ce0d7a11c wireless/zd1201.ko 0ed15b4dab3e4f52f978a031ae102e02 wireless/zd1201.ko.original (i'd suggest that you *don't* replace your wireless/zd1201.ko unless with mine unless you happen to have the same md5 as wireless/zd1201.ko.original) edit: ça marche. c'est reparti pour le homebrew du temps de midi ^_^ edit+: oh, au fait: tout ça parce que je voulais vérifier que mon installation du dernier devkitpro (r21) était au poil... edit: Thanks to this post by linuxtilti, i figured out how to make a small Makefile that lets me rebuild just the module i need

obj-m = zd1201.o
KVERSION = $(shell uname -r)

all:
 make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
 make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean
Okay, that was damn obvious, but i'm always confused by kernel makefiles, somehow. They export all their regular duties to those called builders, just pointing out "here is where i stand". I suspect that only obj-m is then imported by the builder ...

Monday, April 07, 2008

Paper Mario + Doukutsu = Fez ?

Note pour plus tard: regarder la vidéo de FEZ de level select jusqu'au bout et essayer le jeu sur un PC équippé de Windows. ça a l'air grand. Le mélange entre Super Paper Mario et Cave Story ...

That looks very promising. Like someone had merged Super Paper Mario's level-changing mechanics with Cave Story look and feel. Take notice: I'll be keeping that FEZ thing under watch.

Autre note: lire leur site Web qui a l'air excellent aussi ...

Tuesday, April 01, 2008

Appleman

Petit passage dans le bureau de Cyril avant la pause-café... De temps en temps, quand Cyril n'est pas pret, j'en profite pour gribouiller un peu. Ici, c'est l'appleman de la foret de Greenwoods qui y passe. Une petite version "toute normale" d'abord, puis à force (et c'est tout l'intéret du tableau blanc), je me lache un peu et j'essaie des nouveaux concepts...

Premier dans la série : le parapple, un tantinet inspiré par les parakoopas et autre paragoombas de Super Mario. Tombant des hauteurs des arbres, voilà un appleman plus difficile à éliminer, vu qu'il ne suffit plus de sauter dessus. Enfin, si, mais à condition d'y parvenir. On pourrait meme doser la difficulté en lui permettant d'abandonner subitement son parachute si Bilou passe par-dessous.
On peut voir que je m'étais d'abord orienté vers un parachute "normal" avant de prendre ... une feuille d'arbre. Plus sympa, selon moi.

Poursuivons dans la série des délires. Les chauves-souris jouent un role essentiel dans le level-design de la foret. Le hic, c'est que leur concept à elles n'étaient pas terrible. Les "bubble-bat" en mauve et bleu de la version basic ne sont plus vraiment adaptées au jeu depuis que j'ai laissé tombé le bubble-dragon, la tic-tac-bombe et autre escargot-turbo des premières esquisses de Piet et Pierrick... Bref, en écoutant un morceau (virt+beek) nommé "fruitbat", j'ai eu l'idée de transformer nos pommes aussi en chauves-souris. Evidemment, ça ne volettera pas très bien, mais ça ne me dérange pas.