Friday, August 29, 2008

montre moi ta VRAM et je te dirai qui tu es ...

Sans doute juste une curiosité pour vous, mais de plus en plus important pour moi : voici le contenu de la mémoire vidéo de mon SpriteEditor, vu sur un plan "16 couleurs" (1KB par ligne) à gauche et sur un plan "256 couleurs" (2KB par ligne) à droite.
Du temps du DOS, j'avais refais et plastifié sur un carton de 16x16 centimètres la table ASCII pour mes programmes en BASIC et en assembleur. J'ai d'ailleurs eu droit à du "oh! great! Can i borrow you your mouse pad ? please ?" en pleine démoparty parce qu'un gars qui passait par là avait bigrement besoin de ces infos pour continuer son intro 4K.

Les vieux de la vieille reconnaîtront pas mal de ce jeu de caractères, d'ailleurs, même si j'ai remplacé les symboles "coeur, pique, trèfle, carreau" par une animation de pacman qui me sert de 'scrobber' et que vous reconnaitrez à partir de la 4eme ligne quelques éléments de l'interface de SEDS (accessibles à l'aide de YOUR_CHARSET(0), et programmés à grand coups de codes hexa ... ça rappelle des souvenirs de CPC, ça, hein ;)

Version 256 couleurs, évidemment, ça ressemble furieusement à ma palette, puisque -- souvenez-vous -- j'avais reprogrammé un caractère par couleur pour pouvoir redessiner facilement ma grille ...

Il y a des curieux qui se demandent ce que peuvent bien être ces 8K de n'importe quoi entre les caractères et les couleurs ?

Allez, je vous aide: il y a quatres plans sur un écran DS et chaque écran peut contenir 32x32 caractères encodés sur 16 bits ...

Thursday, August 28, 2008

"Use the Source, Luke"

La nouvelle structure de l'éditeur de palette commence à prendre forme dans mon esprit, mais avant de tout casser, cette fois, je vais profiter pour faire une petite "release sources" du sprite editor : version 0.3.2x32. Eh oui, c'est quand-même un projet Open Source (j'ai finalement opté pour du LGPL+GPL), donc il faut que je fasse une release source de temps en temps ;)

Pour mon frère et les autres qui ne pensent jamais à cliquer sur les images de mes articles (et ils ont bien tort), c'est ici, et pour ceux qui n'ont pas besoin des sources mais qui veulent quand-même essayer la dernière version, c'est (md5sum ba88e6b898297d5fe99a918f70c47f8e).

Combo release, with both sources and binary version of SpriteEditor for DS, version 0.3.2x32 with eased edition of large regions. This is of course motivated by the fact that the current palette edition 'window' is completely messy and is the next big thing to be revised. As the new interface is getting clearer in my mind, i found it was about time to release what's working before breaking everything into puzzling pieces again.

Tuesday, August 26, 2008

Messy Colors ...

J'ai essayé d'ajouter un petit mode de composition RGB "semi-graphique" dans SEDS, mais j'ai bien l'impression que je suis bon pour tout reprendre depuis le début. C'est foireux au possible. Complètement anti-ergonomique. La pire interface utilisateur que j'aie jamais conçu. 

Voyons. D'abords, un "load" est nécessaire pour choisir les couleurs que l'on va manipuler. on sélectionne et sauve des couleurs comme on le faisait avec les sprites, mais celà n'est qu'une zone à part. Il faudra cliquer sur un des "w8", "w16" ou "w32" pour réécrire 8, 16 ou 32 couleurs de celles que l'on a modifiées dans la palette d'origine et ensuite cliquer sur "ok" pour que le résultat s'affiche.

I want new colors in my sprite editor I tried to do something half-GUI to enter RGB colors, but I feel like I can redo from scratch: this is possibly the worst user interface I've ever designed.

  1. you cannot directly edit colors on the palette. Instead you have to click 'load' to fetch them, and click one of the w* buttons to write them back (8, 16 or 32 of them at a time) when you're done.
  2. when you've written back colors, you can't see the result yet. You'll have to click 'OK' to do that (and then you have no undo step available)
  3. You can't slide R/G/B fields to the desired values. You have to click the '+' or '-' button as many times as needed to get the value you want. And you better have to know what you want, since no feedback will show you what color it will give.

Comme en plus, j'ai des widgets "+/-" sans répétition, il faut compter une bonne vingtaine de clics pour éditer quelques couleurs ... en aveugle, évidemment. Ce n'est qu'au moment de cliquer sur "ok" (sans undo possible par la suite) que l'on saura l'effet de nos transformations sur les sprites. Bref, avant de jouer à rajouter les dégradés HSV, je devrai reprendre ça depuis le début, repenser le "workflow" et construire mon interface en fonction de ça, et pas en fonction de ce qui est simple à programmer.

Monday, August 25, 2008

SEDS 0.3 user guide

Here come some new features of SEDS in version 0.3.x. Note the "cursor mode" that can be enabled with R-shoulder button to load/save anywhere in the grid. Note too the "quick palette" widget below the grid that automatically fills when you L-click the grid to pick some color and which can be used to reorganize your palette after a messy conversion.

All the former commands are still available

Now officially released download here.

Seen on dev-fr, tehskeen, gbatemp, pdroms

Friday, August 22, 2008

Canon!

"Tiens, toi qui aime bien tout ce qui est embarqué, tu vas adorer ça", me dit Oli ... A priori l'appareil à l'air tout à fait normal, plus récent que le mien, mais c'est tout. "J'ai fait tourner mon algorithme de détection de fond dessus" ... Je suis paf! Du code custom sur un appareil numérique !? C'est possible ça ?

Voui, ma bonne dame. Ca s'appelle CHDK, et c'est principalement utilisé par les gens qui veulent pouvoir stocker leurs photos au format .RAW avec un appareil qui, au départ, n'est pas prévu pour ça... On peut aussi s'en servir pour jouer à sudoku, si on préfère.

I loved that era of the 8-bits where every device sold with a processor was open to homebrew development (or so it seemed). So discovering the first pocket calculator where you could run your own stuff, or the first PDA always felt awesome. But I was far from imaginating what my colleague brought me today. He's runnig his own custom code on a camera! Compared to the odds of running homebrew code on game consoles, he doesn't even have to tweak the device. A small code of your own dropped on the SD card will automatically hook into this or that behaviour of the camera's code, like what-happens-when-I-push the trigger, and voilà. Exactly the kind of things DOS games trainers did when hooking the clock interrupt to keep your lives count at their top.

Et le tout sans devoir altérer l'appareil, rien qu'avec un petit bout de code à soi sur la carte SD qui va aller détourner l'un ou l'autre comportement de l'appareil au profit des siens (le bout de code qui réagit quand on appuie sur le déclencheur, par exemple). Oui, exactement comme au bon vieux temps du MS-DOS quand le trainer de votre jeu favori s'insérait par-devant l'interruption d'horloge du PC pour pouvoir aller bidouiller la mémoire du jeu et garder votre compteur de vie à 99 en permanence quoi qu'il arrive (le jeu étant en général incapable de se rendre compte de quoi que ce soit, mais étant quand-même bien forcé de continuer à appeler ce code sans quoi l'heure du PC serait complètement fausse à la fin du jeu).

Après les consoles de jeu et les PDA, ce sont les troisième petits gadgets numériques que je pourrais bien avoir envie de bidouiller ... enfin, je dois avouer que vu leur capacités, je ne sais pas trop ce que je pourrais leur faire faire à part un "hello world". Lecteur mp3, peut-être, mais l'intérêt resterait limité vu la taille de mon powershot :P Oli, lui, il est dans le traitement d'image, donc c'est une véritable mine d'or "à gauche dans la mémoire, j'ai le capteur CCD, à droite le buffer d'affichage. C'est génial, me dit il, je fais ce que je veux".

N'empèche, je regarderai quand même en rentrant pour mon GPS ... des fois que ... Et le micro-ondes, aussi.

Thursday, August 21, 2008

CrocoDinguS in Cube Island

previously seen on http://www.dev-fr.org/index.php?topic=3673.msg33853#msg33853 and http://www.madpxl.com/crocodingus/screenshot_1.png

Je suis doublement fier: Crocodingus sort sur DS ! Et pourtant je n'ai rien fait (à part un ou deux commentaires sur les graphismes 2D de madpixel), mais je suis fier quand-même, parce qu'à ma connaissance, c'est le premier homebrew réalisé en collaboration entre un membre de "pixelation" et "dev-fr", deux forums dont je suis membre. (chapi) Chapeau, donc Birslip (code) et Madpixel (gfx) pour ce petit bijou qui nous prouve une fois encore que le homebrew, c'est chouette comme un commodore! J'aurais aimé avoir plus de contrôle sur la vitesse du croco, mais c'est déjà très chouette comme ça ^_^  

I'm twice proud, and still i've done nothing on my own. But here it is, Crocodingus in Cube Island, the first (to my knowledge) homebrew game made by a dev-fr coder teaming up with a wayofthepixel graphist. It looks good. It works fine. And it runs on a real gaming platform. It rocks. This proves once again that homebrew is a fun alternative to Flash casual games.  

ci-contre, photo bonus du projet initial en pixels bien 2D... oh, je n'avais vraiment pas changé grand-chose à la version de Madpxl, vous savez. Un petit détail par-ci par-là dans les ombrages du sol, ou qqch comme ça (genre, le sol sous Croco est modifié et celui sous les singes est l'original) ... Et oui, comme le faisait justement remarquer mon frère, je crois me souvenir que c'est en jouant à Zoo Keeper qu'il est venu à Madpxl l'idée de faire passer son croco dans un monde "tout cubique". Résultat, il est maintenant le deuxième reptile à s'être fait "avaler" par un jeu vidéo. Tout ça à cause d'un sprite renversé ... moi j'avais fait tomber du coke sur mon C64, et ça avait juste bousillé le C64. Je ne me suis jamais retrouvé nez à nez avec une saucisse géante ou un extra-terrestre unijambiste au langage coloré. Mauvais drink, sans doute...

Wednesday, August 20, 2008

zoOom zoOom

Bin c'est la semaine des bonnes surprises, apparemment. Je m'attendais à avoir du mal avec cette histoire de "zoom" et ça marche en fait comme sur des roulettes. du coup, je me suis amusé à animer mon petit "chibby keen". Bon, c'est assez sommaire comme animation, évidemment -- ça me change pas mal de mes Bilous -- mais ça ne donne pas si mal que ça, je trouve. Et le plus marrant, c'est qu'au départ je m'étais trompé, j'avais mis les mains en avant en même temps que les pieds. Bin je suis redescendu en "16x16" pour aller récupérer les bras et les changer d'image ^_^ It seems to be a good week for coding. I expected troubles and debug sessions darker than night when de-coupling grid size and block size, but it finally worked flawlessly in one shot. Neat. Using that, i managed to fix the "walking animation" i just sketched for my "chibby commander", using the 16x16 cursor to overwrite the arms of sequence 2 with the one of sequence 4 and vice-versa.

Tuesday, August 19, 2008

32x32 : ça y est (presque?)

Je vais éviter de crier définitivement victoire trop tôt, mais je crois que cette fois-ci, je tiens le bon bout pour l'édition en mode 32x32. Preuve en est ce 'chibby commander keen' bidouillé "en vitesse" avec la bonne vieille palette EGA (plus une petite couleur qui joue les trouble-fêtes :P

L'est-y pas mignon ^_^
plus inspiré par le webcomic de bob que par les vrais jeux EGA, en fait.

I came up with this chibby Commander Keen as result of my experiments with the 32x32 editing mode of my sprite editor tonight. (yes, fairy is away, that means too much pixeling and midnight coding for my health and funny eyes in the morning %P) Kinda cute, isn't he ? All i hope is that i didn't erase anything important while saving him before beaming up to the Web. It's really about time i make that "backup system" when overwriting sheets or at least that i give SEDS the ability to beam things without altering the existing spriteA.spr..spriteY.spr files.

J'espère juste n'avoir rien perdu dans le transfert. Il serait vraiment temps

  • [done] que je remette en place les fichiers .bak quand on sauve
  • [wish] que je permette de voir ce qu'il y a dans les différents fichiers au moment de sauver...
  • [wish] ou au pire, que j'autorise l'export d'une page isolée par le Wifi...
  • [done] vérifier que les animations, les copies, les effacements et tout ça fonctionne toujours.
  • [done] zoom pour changer la taille de grille en cours d'édition.
  • [done] pouvoir choisir la taille des blocs quand on construit une nouvelle page
  • [wish] support des sprites "rectangulaires" 16x32, 16x8, etc.
  • [done] "overlay sprite over current grid content", p.ex. avec B en mode curseur.
  • [done] tri automatique des couleurs par QuickPal (via le bouton 'scan')
  • [done] remettre en route la fenêtre d'édition de palette qui ne marche plus du tout ^^"
et toujours, pour LEDS
(wouw. finalement, ça fait une belle liste tout ça)
Ensuite, on pourra lancer la release ... je sais pas moi ... 0.3.2 ?

*edit*: oh. Bonne nouvelle. Depuis la correction de l'ARM7 (ou la mise à jour de desmume ?) SEDS, malgré son wifi, peut tourner sur desmume (et peut-être d'autres émulateurs ? l'avenir nous le dira ;)

Sunday, August 17, 2008

ramno 1/2

Aah. Eh bien finalement, ça n'aura pas été aussi difficile que je ne l'avais cru. Je parle de la possibilité d'avoir plusieurs "zones de stockage" dans un seul fichier .spr, bien sûr. En fait, une seule classe dans tout mon imbroglio était sensible à l'emplacement réel des tiles en mémoire. Il a suffit de l'éditer pour que tout se mette en place. A part ça, il y a juste SpritePage qui a chopé une nouvelle variable "ramno" pour indiquer le numéro du SpriteRam utilisé ...

"Mais par l'espace, pourquoi tient-il absolument à regrouper dans son fichier des choses qui n'ont aucun rapport entre-elles ?" vous demandez-vous (si, si, sondez le fond de votre coeur, vous verrez)

Eh bien, la première raison, c'est évidemment le hardware de la DS. Si on dispose de 640K de mémoire vidéo, en revanche, les différents plans, les sprites, etc. utilisent généralement des zones mémoire séparées. Or, si je pourrais me satisfaire d'avoir Bilou complètement séparé de mon décor de forêt, l'appleman, le petit ver et d'autres éléments font un tout avec cette forêt. Supposez que je veuille faire un monstre comme "mimerock" dans Keen4: le même graphisme est utilisé à la fois comme élément du décor et comme sprite mobile. Idem avec le "bloc-question" de Super Mario (dans la version ou il 'sursaute' une fois coud-boulisé). Il serait vraiment pénible de devoir gérer un tel bloc dans deux fichiers séparés (croyez-moi: c'est ce que j'ai du faire avec mes Badman sous Game Maker :P)

La seconde raison, ce sont les blocs animés. Reprenons le bloc-question de Super Mario. Il va apparaître comme un seul bloc sur notre map, mais son contenu sera remplacé régulièrement par les étapes suivantes de l'animation. Evidemment, cela signifie que l'animation complète doit bien être stockée quelque-part, et si le nombre d'animations devient un peu important, ce serait ridicule de stocker tout ça en mémoire vidéo (alors qu'on a 4Mo de RAM à côté).

Voilà. Je n'ai peut-être pas convaincu grand-monde mais je me sens mieux. Plus léger d'avoir pu vous confier tout ça. A la semaine prochaine, docteur ?

Friday, August 15, 2008

"il pousse encore moins vite que ma barbe"

J'ai encore quelques ajustements à faire, mais l'un dans l'autre, je ne suis pas mécontent de mon tout nouvel arbre, héritier de la technique "curseur" et des nouvelles couleurs importées hier. Avec un peu de chance, j'attaque ce week-end la souche, j'ajuste les herbes (là, c'est un peu brol). Mais il faudrait bien que j'adapte l'éditeur de niveau pour pouvoir placer des "blocs" 16x16 à cheval sur la grille. Parce-que l'édition en 8x8, c'est bien pour ajuster quelque chose par-ci par-là, mais pour le reste, c'est pénible et ça tend à donner de drôles de résultats. Trop peu de différence entre les feuilles "avant plan" et celles en arrière plan.

I still have a couple of things to adjust here and there, but all together, i think the new tree (leftmost) comes quite nicely. The "cursor" technique definitely proves to be a very valuable tool. I'd like to work on the tree trump this week-end and fix the messy grass (i currently have up to 4 different variants that do not match together :P)
Now, it's really time that i adjust LEDS so that it could work with 16x16 blocs with more flexibility and manipulate complete objects so that i don't have to redo trees tile per tile everytime.

Thursday, August 14, 2008

spraddpage et compagnie.

Bon, puisque SEDS est "réparé", j'ai essayé de ramener l'entièreté de mes graphismes vers la DS. Certains avaient été faits sur la DS de mon frère (l'appleman, par exemple), d'autres sont des retouches dans Gimp, d'autres encore viennent du "vieux" jeu de tiles (oui, oui, celui qui a tout explosé en dépassant les 1024 tiles ;)

Découper, aligner sur la grille, rogner, convertir, re-convertir, compresser les palettes, transférer, fusionner, re-transférer ...

Je vous donne un petit aperçu en image de ce que ça donne, simplement pour fusionner un .spr qui était sur la DS et une image .png déjà préparée qui traine sur le PC ... puis je vous laisse imaginer le tableau quand il faut répéter l'opération avec quatre sources différentes ^_^

Ennfin. Je crois n'avoir rien perdu ni oublié dans la bagarre, ce qui relève presque de l'exploit !

Wednesday, August 13, 2008

Size'd up!

Un petit bug assez mal venu dans les effacements de sprites m'a fait reprendre le code de SEDS plus en détail. Je sais qu'il faudra que j'adapte SpriteRam et autres SpriteSheet pour pouvoir passer à la vitesse supérieure (ç.à.d. des animations gérées directement dans SEDS), mais là, je prends plutôt le temps de passer en revue ces "petits détails" qui trainent dans les todo list depuis ... hoouuuu ... aout dernier ? réparer ceci, arranger celà ...

Je mets la "priorité" sur la réparation du mode 32x32 et la possibilité d'éditer dans la grille 32x32 ou 16x16 indépendamment de la taille des blocs (donc prendre un quart de sprite 32x32 pour ajuster quelques détails, ou un groupe de quatre blocs 16x16 pour faire une esquisse).

An unexpected bug (sic) in the recently introduced "block erase" feature made me print SEDS code once again to track oddities. There is a growing list of "todo" items on this blog, with some of them dating back to ... augustus 2007 ^^". So i still have a couple of "fix&tune" things to do -- the most important one being to ensure 32x32 edition grid works fine (atm. it cannot scroll or use the cursor, for instance) and then allow the "zoom" button to switch between 16x16 and 32x32 regardless of the size of the blocks on the current page. After which i'll try to work on a "sketch mode", to avoid depending on Gimp for sketching larger pictures.

Et ensuite, je tente un "sketch mode": dessin libre sur toute la surface de l'écran, comme dans un programme de dessin classique, histoire de pouvoir donner l'allure générale d'un élément encore plus grand (un arbre ?-) avant de le détailler en mode "grille".

Monday, August 11, 2008

Spoutnick vs Core : Dangerous

Je suis tombé là-dessus en surfant ce midi. Suivant la trace d'un visiteur attentif de mon site web, je suis arrivé chez Pascal, membre de la "Spoutnick Team" qui nous a fait une très chouette reprise de Rick Dangerous sur GBA avec des graphismes tout neufs, etc.

Chouette, me dis-je. Ouaip. Sauf que le projet a été abandonné suite à un conflit avec Core Design, les réalisateurs de la version initiale sur Amstrad, C64 et Amiga pour raisons (évidentes) de copyright.

C'est triste, évidemment, parce que même si les anciens graphismes ont du charme, la version "remasterisée" promettait vraiment. Et je compatis pour Pascal, qui a probablement passé des mois sur le code et qui doit finalement se contenter d'un "XMAS dangerous" présenté en 2003 à une démoparty, mais à mon avis bien moins accrocheur et consistant graphiquement parlant.

I stumbled upon Pascal's website innocently and immediately clicked the "Rick dangerous" link under 'GBA' section once my eyes spotted it ... then i found out that you had to cancel the project due to copyright issues.

Kinda sad, imho. He deserves a few words of support regarding all those monthes of work ruined by laws. The graphics of the "remastered" version really looked nice. I wish we'd live in a world where Core Design would have tried to collaborate with his team to get the work done for the best of both parties (and players) rather than just frowning and saying "nah, you can't do that. We ownz the sprite".

I'll give Xmas Dangerous a try, but bitterness will remain ...

D'autant plus triste que (mais là, je peux me tromper) il me semble voir dans les niveaux des écrans inédits ... Bref, c'est avec une larme de nostalgie et une pointe d'amertume que je laisse ça dans la collection "ces projets chouettes qui ne sont pas compatibles avec le monde moderne" et que je retourne à mon p'tit Bilou, peut-être pas très original, mais au moins original.

Saturday, August 09, 2008

Petits Pas

vouaip. Petit progrès sur SEDS, qui sait (enfin) effacer ce qui ne vous plaît plus. C'est pas ultra-ergonomique (pressez R pour activer le curseur, déplacez le curseur sur le bloc qui vous déplaît puis pressez X pour l'effacer), mais ça marche.

Il faut dire que pour l'instant, j'essaie au maximum de me concentrer sur un fichu article reprenant mes travaux de thèse pour un journal, et qu'en plus, j'ai du faire une "pause sans écran" pendant une ou deux semaines, mes petits yeux ayant dit "stop, on en peut plus" :-/

Bref, je vais vous laisser vous rendre compte que j'ai pratiquement triplé la taille de mon post précédent (sur l'appleman), uploadé plein d'images et tout, et aller porter le dernier Maliki à ma fée avant que Morpheus ne l'emporte. Moi j'attaque les robots d'Asimov ;)

Enfin, avec tout ça, j'ai enfin réussi à "réparer" mon tileset de forêt et j'en ai profité pour faire un peu le ménage (virer les vieilles pommes et les souches qui ne servaient plus à rien ;) Restera à pouvoir "extraire" les anims et autres sprites, mais ça, ce sera une autre histoire, parce que là, je suis impatient d'essayer d'implémenter les tiles pentus.

*edit*: oh, et j'ai réussi à faire de "spr2png" un convertisseur reconnu par Image Magick. prochaine étape, en faire un vrai type mime reconnu par gnome et les autres ^_^

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.