Thursday, November 30, 2006

"swi pô implémenté"

Petite déception ce midi, alors que j'essaie de sortir les modules de tetattds, histoire de réduire la taille des fichiers à transférer par DSFTP.

J'ai enfin compris pourquoi "tetattds" affiche des écrans tout noirs quand j'essaie de faire tourner le jeu. J'avais d'abord attribué ça à un mauvais support de la transparence ou de l'ordre des plans. Bin non. La raison, c'est


PROC 0, SWI PO IMPLEMENTE 00000011 R0:020565F4
Lunch time, mood: disappointed. I'm trying to pick music files out of TetAttDS to shrink the executable size (DSFTP transfers doesn't perform as fine as i'd like). While doing so, i finally got why the game was all black in the emulator... i first thought it was due to a lack of transparency support, or something going wild in layers priorities ... no way. The real reason is "PROC 0, SWI PO IMPLEMENTE 0011 R0:020565F4" ...

Tout de go, comme ça. On ne dirait pas, mais c'est un poête qui s'ignore, le yopyop, à ces heures.

Pour le commun des mortels, ça veut dire qu'il n'y a rien derrière l'appel du "bios" (SWI = 'SoftWare Interrupt') sensé décompresser les fichiers ('zimaginez un peu un PC avec pkzip ou la zlib en rom! puissant, hein) Et naturellement, ça fait un peu rouspéter libmikmod, puisqu'il va se retrouver avec une grande caisse de zéros à la place du mod à jouer.

"DeSmuME works!" qu'il disaient !? ouais, bin ils ont eu de la chance, hein. Bon, bin j'ai plus qu'à essayer de porter les algorithmes de andré perrot (lzssdemo.zip) dans desmume, quoi.

For those who don't speak Yop fluently, "SWI PO IMPLEMENTED" basically means that there is no code behind the firmware call that's supposed to unpack files (yes, the DS and GBA actually have unpacking routines in their 'BIOS'. Can you imagine a PC with pkzip or zlib in its ROM?) ... And of course, this is not to please libmikmod, which will have a full box of zeroes to play where it's supposed to receive a module. "DeSmuME works!" they said ?? well, they were pretty lucky, if you ask me. My last hope lay in André Perrot's algorithms (lzssdemo.zip) for packing/unpacking and move that into desmume codebase.

Thursday, November 23, 2006

mario to the rescue

Bonne nouvelle, j'ai réussi à faire fonctionner DSFTP (et donc à envoyer des fichiers vers ma DS sans devoir retirer la cartouche!

Bon, y'a pas vraiment de quoi être fier: j'ai simplement emprunté le jeu "mariokart DS" au fils du concierge, le temps d'encoder les paramètres de mon stick wifi dans le firmware. Ca marche avec ce stick là, et ça ne marchera avec aucun autre point d'accès (et notamment pas avec mon routeur wifi à la maison) ... mais en attendant, ça donne une alternative viable.

Par contre, toujours pas plus de succès avec Artik tik tak, le mod de cette semaine, dont la version 64K continue à planter le player mikmod de TetAttDS '_'

Howdy. i managed to run DSFTP (and thus to beam files to the DS without having to remove any cartridge ...) Well, there's not so much to be proud of: i just borrowed mariokart DS to the caretaker's son, so that it can encode the settings of my wifi stick into the firmware. Way less impressive than if i managed to merge DSFTP with access point detection code as i intended, and that only solves the issue for _that_ specific USB stick (which i hopefully can carry along anywhere), but i won't be able to use the wifi router at home).

Still, i cannot make TetAttDS play the mod-of-the-week, Artik tik tak ... mikmod apparently doesn't like it, not even its 64KB version '_'

edit: j'ai finalement complétement laissé tomber DSFTP. Pas assez de mise à jours venant de l'auteur, et pas de sources pour intégrer ça avec d'autres programmes. Je me suis fait à la place mon petit outil de téléchargement "runme" que je vous invite à découvrir dans la section "mybrew".

edit2: oh, et si vous voulez *vraiment* du FTP et que l'affichage de fichiers .pcx ou la lecture des .mod ne vous tente pas plus que ça, je vous propose de tester le serveur FTP de lilou.

Monday, November 20, 2006

Hardware Félure ...

Bon ... pas de pot, mon matériel de bidouilleur DS commence a donner des signes de faiblesse ... juste au moment ou je m'apprétais à passer un petit week-end sympa à intégrer des musiques et des images à moi dans TetAttDS pour le transformer tout doucement en "apple rumble" ... grumble. 

Jusqu'ici, pour tester tous mes programmes, je faisais appel à la méthode dite du "cart swapping", qui consiste grosso modo à répéter la séquence suivante chaque fois que je change un bit dans mon programme:

  • éteindre la console
  • retirer la cartouche "supercard" (en bleu sur l'image)
  • éjecter la carte SD flash de la cartouche (en tout petit)
  • insérer la carte flash dans le lecteur USB (en lilas sur l'image)
  • taper la commande "mount /media/ukey"
  • copier le nouveau fichier
  • taper la commande "umount /media/ukey"
  • retirer la carte flash
  • réinsérer la carte flash dans la cartouche supercard
  • remettre la cartouche supercard à sa place
  • ralumer la console.

Autant vous dire que ça prend un certain temps, et que sur 1 heure de développement, je passe probablement bien 20 minutes à ce genre de manipulations (et probablement 10 minutes à passer les écrans d'accueils successifs avant de lancer mon jeu. Mais pas de bol, dès hier après-midi, mon petit lecteur USB se met à donner des signes de faiblesses ... d'abord il lui faut 2 à trois essais pour reconnaître la carte, puis la situation se dégrade il me faut bientôt une demie-heure de retrait/insertion de la clé USB dans le PC pour pouvoir transférer un seul fichier ... surchauffe ? fragilité mécanique du petit gadget ? va savoir ...

Toujours est-il que j'ai à grand peine pu constater qu'il y avait quelques bugs dans la bibliothèque mikmod, sans pouvoir vraiment mettre le doigt dessus ... autant dire que le développement va faire une pause le temps que j'aie réussi à faire tourner DSFTP et autres libcartreset Potentiellement, ça voudrait dire envoyer le nouveau programme à la DS et le démarrer via Wifi, mais pour ça, il faut aussi intégrer à DSFTP le programme de détection de point d'accès ... à suivre, donc.

No luck ... My homebrew hacker hardware for the DS seems failed to work this week-end! Just when i was about to afford an afternoon mixing TetAttDS code with my own background and music data ... It looks like the "cartridge swapping" technique i've been using so far no longer please the small USB device i use to read/write the SD memory card ... Or maybe i've just left it plugged in the computer for too long and it has overheated ? who knows. 

What's certain is that the plug-it-in/mount/copy/unmount/plug-it-out 2-minutes cycles i was used to turned into a total nightmare with "device not accepting address" errors in kern.log or things like "read/64 descriptor: error 110" ... Guys in Linux forums seems to say it could be due to a poor USB connection or a bug in a very specific kernel release... well, that smells like hardware failure to me! So it'll be time for me to opt for DSFTP-based technique (using the WiFi abilities of the console to grab a file and write it in the SD card 'in situ') ... which could be much faster, but which also requires me to mix DSFTP with the wifi library test (mainly the code for selecting an access point) as i don't have any game like Mario Kart DS for writing Wifi settings in the firmware memory (and i wouldn't trust a homebrew program to do it for me).

So development of Apple Rumble is frozen so far: all i can tell you is that mikmod library doesn't like Cyborg Jeff's tunes that much X_x

Tuesday, November 07, 2006

Homebrew Attack ...

A small picture of "Tetris Attack DS", a homebrew game by Sten Larsson. And by posting it here, i mainly mean "i love that game". Not only it keeps me smiling while i'm waiting for my fairy to fetch me with the car, but it's open source, running on a DS and featuring the now-famous "mikmod" module player library.

In other words, it has all the logic i need to start doing my own first game with music on the DS (as mikmod supports the .IT (impulse tracker) format my bros. uses to create music).

So stay tuned: "apple rumble" might be coming in the next few weeks ^_^


Un petit screenshot de "Tetris Attack DS", un jeu développé par Sten Larsson que j'aime encore bien. D'abord parce qu'il est bien sympa, que c'est un puzzle (donc, des heures de jeu :), que je peux l'emporter partout et y jouer 10 minutes quand ma fée n'arrive pas tout de suite avec la voiture ...

Mais surtout parce qu'il est libre (traduisez: j'ai les sources du programme en toute légalité), et qu'il utilise la (célèbre) bibliothèque "mikmod" pour jouer la musique et les effets du jeu. Autrement dit, tout ce dont j'ai besoin pour démarrer le code de mon premier jeu sur la DS avec une musique de mon frère

A bientôt donc peut-être avec mon tout premier jeu DS "Apple Rumble" ^_^

Friday, November 03, 2006

no jumping allowed


just a small post to put credit where it is due. A few month ago, we had a post of PadrinatoR on gbadev.org, offering a new way of reading stylus input that would avoid "stylus jumping" (e.g. you draw a continuous line, and what you read has some random stylus presses miles away from the real location).

I wasn't able to completely make use of Padrinator's code (among other things, my way of using stylus input wasn't compatible with his new way of reporting stylus movements), but all together, it worked pretty fine as soon as i disabled a few "extra checks". The basic idea is still that any stylus input that is below a given pressure threshold is ignored.

So thanks for your work, Padri. Without it, i couldn't have half of my pixels half as cute as they deserve to be :P
Petit message de remerciements ... il y a quelques mois, un message de PadrinatoR sur forum.gbadev.org offrait une nouvelle technique pour lire les mouvement du stylet et éviter les "sauts intempestifs" (en gros, si vous traciez une ligne continue, la console 'sentait' des petites pressions un peu partout, même à des kilomètres de la vraie ligne).

Même si je n'ai pas complètement réussi à exploiter toute la puissance du code de Padrinator (entre-autres, il faut changer la manière dont on lit les informations, ce qui n'est pas compatible avec mon programme), l'un dans l'autre, j'ai un résultat tout à fait correct dès que je désactives quelques "tests supplémentaires", l'idée de base étant d'ignorer les pressions trop faibles sur le touchpad.

Merci donc pour ton travail, Padri. Sans lui, je n'aurais pas la moitié de mes pixels à moitié aussi beaux qu'ils ne le méritent :P