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.

If you just found an iPlayer, but that it seems to stall after showing a blue logo screen but without going to the screen that says "DS Video Expert", chances are that you overlooked the vendors' recommendation for using their own formatting tool for your media microSD card. Granted, that sounds plain ridiculous. Every OS (decent or not) comes with a FAT formatting tool, and you shouldn't have to install third party to do that, and certainly not on a Microsoft OS!.

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).

Here's the result of a filesystem analysis after supercard's tool "correctly" formatted my 8GB media card for iPlayer:

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 tool4GB 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 ^_^
My last fear is gone, btw: although the linker's documentation mention directories such as MUSIC, VIDEO and HOMEBREW where we're supposed to place our files, it can still launch files that are at the root (e.g. beta versions of my tools) and that have been downloaded by runME (currently in /moving/) Mais du coup, je m'interroge: les difficultés que j'ai à faire tourner de manière fiable mes outils avec ce matériel pourraient-elles être liées à une libfat pas vraiment calibrée pour des clusters de cette taille ?

5 comments:

cyborgjeff said...

et maintenant, let's work !

PypeBros said...

... dit-il alors que les vacances sont fini(t)es.

blk said...

L'outil n'est pas de supercard, mais de Panasonic, il me semble, et résout tous les problèmes de compatibilité des cartes SD ou microSD avec les appareils récalcitrants (appareils photos etc...) à cause du formatage tout pourri des divers OS (au hasard windows)
Au fait, je t'ai donné ce linker, et non prêté... lol
:)
Tant mieux s'il a supporté le voyage et qu'il fonctionne ;)
Tu pourras même programmer la puce spécifique embarquée pour un surcroît de puissance (voir l'émulateur GBA existant pour ce linker), je crois bien que c'est possible.
blk

PypeBros said...

@blk:"Au fait, je t'ai donné ce linker, et non prêté..."
Dans un recoin de mon esprit, je me suis juré que c'était tellement sympa de ta part que si un jour j'arrète le dev DS, je te le ré-expédie ... d'où, c'est un peu comme un prêt à très, très long terme

mais tu fais bien de me reprendre: je ne dois pas minimiser ta générosité.

blk said...

lol : non, je croyais juste que t'allais me le renvoyer parce que tu pensais que c'était un prêt >_<"