Saturday, September 29, 2012
Yellowl and Redowl
Tags: arm7, data recovery, DSi, english, iplayer, libfat, pixels, school zone, sprite editor
Thursday, September 27, 2012
owl story ...
Voici hélas tout ce qu'il reste de ma scéance de dessin de hibou sur la DS ... l'idée de faire d'abord uniquement les zones les plus sombres dans une "couleur stencil" avant de doubler la taille n'était (à mon avis) pas mauvaise, mais au moment de sauver mon travail sur la carte mémoire, quelque-chose a coincé sans crier gare et je me suis retrouvé (une fois de plus) avec une DS qui ne répondait plus aux commandes au moment de définir quel fichier de sauvegarde devait être utilisé. La batterie de ma console était fort faible (je n'ai même pas su la relancer), j'espère que c'était juste ça... Ce n'était pas encore la dernière mise à jour de SEDS, non plus.
N'empèche, ça m'ennuie ... il serait temps que mes outils de game-making sur DS redeviennent fiables.
Tags: data recovery, english, iplayer, photo, pixels, sprite editor
Tuesday, September 25, 2012
So many palettes!
as soon as you start editing your palette, it differs from those of the "upper screen" which are kept static "okay" button copy the edited palette into SPRITE_PALETTE_SUB, allowing a preview on the current sprite page if you're fine, "sure" button copies the edited palette on BG_PALETTE_SUB as well. It's now officially your working palette for the grid. At anytime, you can undo something by clicking "oops", which copies BG_PALETTE_SUB back as the edited palette.
Tags: coding, english, palette, sprite editor, user interface
Monday, September 24, 2012
branch/noswap
Le support du mode "multi-palettes" dans LEDS m'a obligé à revoir un point assez noirâtre de mon moteur d'interface graphiques: les widgets dynamiques. Bon, c'est un peu pompeux de les appeler comme ça, j'avoue: il ne s'agit ni plus ni moins que de pouvoir cacher certains éléments à l'écran ou d'en modifier l'ordre de priorité au fil de l'exécution du programme. La barre de boutons qui apparaît et disparaît dans l'éditeur de niveaux, par exemple ...
La plupart du temps, je m'en sors avec un tableau dont je modifie l'emplacement final. Un bouton "undo" à faire apparaître ? nbWidgets++ ... il doit disparaître ? nbWidgets--. C'est aussi simple que ça. Dans le cas des boutons d'édition, c'est un peu plus subtil, parce que la "zone sensible" qui permet de construire le niveau couvre tout l'écran et qu'il n'y a pas moyen de "cliquer à-travers" pour toucher les nouveaux boutons. Jusqu'ici, je me servais alors de Windows::swap() qui permuttait deux widgets dans la liste d'affichage, mais cette façon de faire rend rapidement le code lourdaud et peu lisible, avec pas mal de bugs qui jouent à cache-cache dès qu'on essaie de changer quoi que ce soit.
C'était donc l'occasion d'essayer autre chose: des instructions de saut dans la table des "widgets". En clair, je peux maintenant avoir quelque chose comme
Je n'ai donc "plus qu'à" choisir le point d'entrée dans ma liste de widgets pour avoir le rendu souhaité. Note qu'heureusement, ce type de pratique était resté rare puisque j'ai la possibilité "d'empiler" des "fenêtres" justement pour éviter ce genre de manipulations. S'il n'y avait pas eu en plus la grande tambouille du changement de linker, je n'y aurais d'ailleurs probablement même pas consacré un post.normal: (grille) (boutons) (palette) STOP copie: (curseur) GOTO normal recolor: (bouton sync) (bouton undo) GOTO normal
Monday, September 17, 2012
Let's get cracking

- [done] merge the 'z-order' branch back: it has proved it's a GoodThing
- [done] 4-palettes LEDS must be backward-compatible with one-palette spritesets
- [done] make sure we still see the background and monsters in 4-palettes LEDS
- [done] restore disappeared iprintf (known bug)
- [done] barebones to update colours on BG layer in LEDS
- [done] ensure that LEDS runs on real hardware (fix blue screens when loading a .cmd file and when switching to colors mode)
[badbuild?] ensure it's still possible to L-pick tiles in draw mode- [bug?] need to press select twice in SEDS to enable PaletteWindow ?
- [done] something odd happens on SEDS when loading a spriteset while a non-zero palette is currently selected in PaletteWindow (palette #0 overwrites current slot)
- [workaround] entering sleep mode breaks iPlayer's access to the media card.
- [done] palette selection in AnimEDS as well
- [fork] find something better than
Window::swap()to structure widgets. - [bugfix] ensure that SEDS works in the noswap branch too (currently, it's all black!?)
[badbuild?] some widget only display randomly on real hardware- decide what to do with left-handed mode
- [done] ensure I've got all the material to edit/test levels on the DSi
(currently, something displays "T.M.A.P" and random tiles on the console, and the level doesn't load). LEDS apparently saved a map file as autoexec.cmd. Needs investigation. - [done] allow map2png.pl to work again
- [wish] make map2png.pl work with swapped (and coloured) tiles too.
- [done] complete the books tileset so that I can change books size (cf. CyanGmou's mockup).
- [postponed] fix the landing bug for Bilou
- [postponed] fix blador.cmd so that bladors can be stunned
- [now] revamp the School's owl
- [postponed] draw/animate some pendats
Sunday, September 16, 2012
Linker de Bisounours pour DaySi
Yes! ça y est! Grâce au matos gracieusement donné par ZeBlackOS -- à savoir un linker de bisounours iplayer -- je peux enfin faire tourner mes homebrews sur la DSi rachetée à Mr. Proper l'an dernier! Vu qu'elle avait même un chargeur de poche pour brancher sur port USB, ç'aurait vraiment été dommage de la cantoner à faire tourner Zuma Revenge pour ma fée :P
Il pourra se vanter de m'avoir fait suer, note, au point que j'ai fini par craindre de l'avoir mis hors-circuit au moment de lui faire son "upgrade kernel" ... mais non. C'était tout simplement un problème de formattage. Si les gars de SuperCard insistent sur le fait que la carte microSD soit formattée avec leur outil dédié sous Windows, ils ont en fait une bonne raison: la mémoire de la DS étant limitée, il faut que la table d'allocation puisse tenir dedans.
Still, as the DS has limited memory, and given that using their formatting tool *did* unleash the linker's full potential, I can imagine the following scenario: the FAT driver of the linker's firmware is so crude that it *needs* to fit the whole FAT within 1Mo of RAM. A conventional formatting tool will instead try to come with settings that minimizes cluster size, so that you're doing the most of your filesystem... and dismiss FAT size as a significant issue.
En l'occurence, ici, la carte de 8Go a été formattée avec des clusters de 32Ko (ce qui est modérément large, mais large quand-même), de sorte que la FAT soit juste un rien plus petite que 1Mo ...
(Bien sûr ça pourrait être un autre détail: taille du répertoire racine, le nombre de clusters réservés ...)
En toute logique, j'aurais pu obtenir l'effet souhaité sous Linux avec mkdosfs -s 64 -F 32 -f 2 -h 8192 ... Mais pour une autre taille de carte SD, il faut ajuster le paramètre -s en conséquence (#Go*8, je dirais).
SchoolTest> sudo dosfsck -n -v /dev/mmcblk0p1
Boot sector contents:
System ID " "
Media byte 0xf8 (hard disk)
512 bytes per logical sector
32768 bytes per cluster
4404 reserved sectors
First FAT starts at byte 2254848 (sector 4404)
2 FATs, 32 bit entries
969728 bytes per FAT (= 1894 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 4194304 (sector 8192)
242304 data clusters (7939817472 bytes)
8192 hidden sectors
15515648 sectors total
| dosfsck /tmp/disk.img
Boot sector contents:
System ID "mkdosfs"
Media byte 0xf8 (hard disk)
512 bytes per logical sector
4096 bytes per cluster
32 reserved sectors
First FAT starts at byte 16384 (sector 32)
2 FATs, 32 bit entries
3992576 bytes per FAT (= 7798 sectors)
Root directory start at cluster 2 (arbitrary size)
Data area starts at byte 8001536 (sector 15628)
998046 data clusters (4087996416 bytes)
0 hidden sectors
8000000 sectors total
|
| 8GB formatted with special tool | 4GB formatted with mkdosfs under Ubuntu |
Pourquoi "de bisounours" ? Eh bien, parce que ce linker permet de faire tourner les jeux amateurs (dits "homebrew"), mais refusera de lancer les ROMs commerciales. Merci, tata Raymonde. Et merci à Pierrick de m'avoir filé un coup d'EEE main, sur ce coup-là. Et bien sûr Merci à ZeBlackOs pour le linker ^_^
Saturday, September 15, 2012
Doxygen & Cybook : round 2

Still, that requires a bit of tweaking of my Doxyfile configuration:
Au fil des mois, mon cybook odyssey se révèle de plus en plus un puissant allié pour la programmation de projets-hobby. Toujours en poche (ou presque), il me permet de planifier les évolutions de mon projet à tête reposée, dans mon fauteuil, sans nécessiter de réimprimer à chaque fois la dernière version du code. Il a évidemment fallu un peu chipoter pour avoir des documents "pratiques" sur cet écran 600x800, en enlevant les numéros de ligne ici, changeant la structure du document là, etc. Mais le résultat est plutôt satisfaisant.COLS_IN_ALPHA_INDEX = 3 ALPHABETICAL_INDEX = YES REFERENCES_LINK_SOURCE = NO REFERENCED_BY_RELATION = YES FULL_PATH_NAMES = NO
J'aimerais juste que l'Odyssey soit capable de détecter les "clics" sur les schémas en mode "image map" (cf. p. 1629, par exemple) et que doxgen propose un mode "epub" natif qui m'éviterait de faire tourner "calibre" pendant près de 10 minutes pour la conversion html->epub.
fe class*.html "mv % /tmp/% ; sed /tmp/% -e 's:/a>0[0-9]*:/a>:g;' > % ; echo % stripped"Last step is to get rid of
<namespace>:: prefix in some classes name (in the class index) so that it actually fits 3 columns. mv classes.html /tmp/ ; sed /tmp/classes.html -e "s/>[A-Z][a-zA-Z]*::/>/g;" > classes.htmlUnfortunately, calibre is still über-slow processing this, and it looks like the Cybook Odyssey doesn't support clickable image maps. Anyway, if you want to give it a try (and have the hardware as well), here's the file.





Vote for your favourite post
