Showing posts with label supercard. Show all posts
Showing posts with label supercard. Show all posts

Sunday, April 06, 2025

Ressortir la supercard ?

Rédiger ce post à propos de Kirby and the Amazing Mirror, ça m'a de nouveau donné envie d'y rejouer évidemment. Et pourquoi pas sur SuperCard, au fait ? après tout, ça a plutôt bien marché pour Goodboy Galaxy et le jeu "Professor Sinister" de Simian Zombie il y a quelques années ? Et pour pas mal de titres dont Prehistorik Man avant que je ne me lance dans le développement NDS (et que je n'achète mes premiers jeux NintendoDS) ...

I'd like to play Kirby and the Amazing Mirror again. I've been looking for it in 2nd hand stores for over 10 years (nearly 20?) without being able to find it. So maybe I should dust off my GBA SuperCard and give it a try ? It did a fair job on the last few homebrew I tried, despite the memory card being a bit small ...

Mais à l'époque, j'avais un vieux Windows en plus de mon système Linux, et je pouvais y faire tourner le patcheur de ROM du constructeur (Supercard, donc). Pendant des années, plus moyen de convertir des ROMs et donc plus moyen de jouer à des jeux officiels à travers mon linker GBA. Mais en creusant hier, je note qu'il y a finalement une version open-source tournant sous systèmes UNIX du patcheur en question!

But the drawback with the supercard is that you couldn't play "plain" dumps of your games. Instead, you'd have to make the go through a converter software, which was Windows-only, lost in the last Windows Crash I've had and of course, no longer shows up on the manufacturer's web site. But hey hey! Somebody uploaded a github variant of the tool, so finally I could try my favourite Kirby title on real hardware ... and ...

Voilà près de 20 ans que j'essaie de le trouver en boutique de seconde main et qu'on me répond "ah, très bon jeu, mais on ne le voit presque jamais ici" ... donc je tente...

Une fois patchée, la ROM tourne bel et bien ... j'ai omis d'ajouter le patch permettant de relayer les sauvegardes, donc si la cartouche est laissée hors-tension un peu trop longtemps, elle perd la partie en cours. Plutôt gênant pour ce jeu précis. Plus problématique encore, le jeu souffre de ralentissement. Je suis tombé sur un article qui explique assez bien le problème: dans la supercard il y a une RAM à la place de la ROM des cartouches classique, qui fait le "tampon" entre la console et la flash (il faut compter pas loin d'une minute pour charger le jeu depuis la flash) mais elle n'est pas aussi rapide que les meilleures ROM gba. Pour compenser, le patcheur va forcer le CPU à attendre le nombre maximum de cycles d'horloge à chaque lecture sur la cartouche. Et ça, avec Kirby, ça se traduit par des chutes à 30 fps trop souvent. Le jeu n'a évidemment pas été conçu pour ça et l'action est donc ralentie plutôt que saccadée.

... well, it's been disappointing. A bit more research taught me that the RAM used on the supercard is actually slower than the ROM used in high-end GBA game packs. What the patcher software does is changing the initial configuration to enforce enough wait states on the ROM bus so that the RAM has the time to answer. As you can guess, in some time-critical sections, it makes the frames per second drop, and the game wasn't written to compensate that. It was written to have a fast ROM where such conditions never happen. Playing the game isn't impossible, but it sure isn't as fun as I remember

On se dirait bien que "bah, ça laise quand-même la possibilité de faire du pixelstudy" ... sur DS peut-être. Sur l'écran de la Gameboy Advance SP que j'ai utilisé, franchement, ... c'est trop petit ^^"

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 ?

Saturday, September 08, 2012

supercard and multi-palette

There is one last thing I can do with my failed homebrew equipment: dig out my old SuperCard (slot 2), update the makefile so that it automatically apply DLDI patch if $DLDI environment variable is set, and work on that multi-palette support that will ultimately allow me to tint books in up to 16 colors in the school zone (only 4 slots atm.)

Premiers tests concluants pour le système "mutli-palettes":voici un bouquin vert, mais qui peut redevenir rouge à n'importe quel moment. Et il ne s'agit plus d'un simple test grandeur nature dans SEDS: les palettes alternatives peuvent maintenant vraiment être sauvées dans des fichiers .spr et re-chargées plus tard.

Thursday, September 06, 2012

Now, that's annoying...

Bon, DarkneSs, ma DS noire, est toujours en réparation ... Je viens de recevoir de ZeBlackOS un sympathique iplayer -- le linker de bisounours qui ne lance pas les ROMs commerciales -- mais j'ai encore du mal à le faire tourner convenablement... il "boote" sur la DSi, ça c'est déjà un progrès, mais reste bloqué au niveau des logos "loading": le message "DS Video Expert" n'apparaît jamais.

Apologises to those of you who expected an activity boost after the first "owl school zone" level: you'll have to wait for me to fix some issues... I have only one working linker left until I buy some new parts or got other back from repair.

Mes derniers développements se sont donc faits essentiellement sur la DS "phat" de ma fée, avec le 'faux' R4 SDHC que j'avais obtenu pour DarkneSs... Ce n'est pas génial pour les couleurs, mais pour éditer des animations et vérifier que tout passe bien sur hardware, c'est toujours ça... enfin "c'était". Les opérations de mise à jour de l'iplayer ont eu raison du système FAT de ma carte mémoire (oui, j'ai commis l'erreur d'essayer d'utiliser la même carte mémoire sur R4 et iplayer), bousillant au passage rungama.nds et sedsgama.nds, faisant disparaître ledsgama.nds, animeds.nds, spritea.spr (la school zone) et spritey.spr (la green zone). Rien de définitivement perdu normalement tant que les disques dur de mes machines PC tiennent bon, mais c'est tout de même très dérangeant.

One left, that should be enough ? well, except it's the linker that has no built-in support for DLDI, on the DS that has poor color contrast. No art can be seriously built on that, and software upgrades will be a pain at best... Hopefully, I don't think I've lost any data although both green zone and school zone .spr files were killed by the mess that resulted from running the iPlayer firmware.

Il me reste la possibilité de me rabattre sur mon bon vieux SuperCard slot 2 et son passcard associé ... le soucis, c'est qu'il ne supporte pas le DLDI. Je devrais donc veiller à ce que tous les fichiers transmis soient bien patchés pour super-card avant de les uploader ... plutôt pénible quand on se souvient qu'au départ le support supercard était d'office dans la libfat. Et non, m'sieur devkitpro, *je ne vais pas tenter la mise à jour système du dernier linker fonctionnel qui me reste*.

Tuesday, December 28, 2010

libFAT cache-cache

Après avoir instrumenté un brin le gestionnaire de cache de la libFAT, j'ai droit à une belle série de statistiques qui montrent que pour réécrire ~400K sur ma carte mémoire, il me faut au préalable lire à peu près autant (968 secteurs) ... En fait, puisque j'écris chaque paquet (~550 bytes) au fur et à mesure dans le fichier, et puisque le cache travaille par "page" de 4K, toutes les écritures sont partielles et le cache lit d'abord le contenu du disque avant de commencer à écrire la bonne valeur). Le hic, c'est bien sûr que dans mon cas, les anciennes données ne seront jamais utiles, puisque je les écraserai toutes :-P

J'essaie donc de modifier "cache.c" pour forcer une politique de "lecture paresseuse" où l'on ne remplirait une entrée du cache avec le contenu du disque que si une tentative de lecture a lieu. Il est donc possible de "préparer" progressivement un contenu à écrire et ne l'écrire qu'une fois complété. Bon, maintenant, il va falloir débugguer ça. A moi desmume, ddd et strace ...

Tout semble fonctionner sur émulateur, mais sur la DS "Phat" de ma fée, j'ai juste droit à un "FATinit failed" ... qui s'avère être dû à un petit problème de DLDI sur SuperCard SD. Après quelques hexdump et diff supplémentaires, je peux enfin vous proposer ma libfat revue et corrigée, jusqu'à 3 fois plus rapide sur les écritures de fichier.

PS: il restait un bug, donc voyez le post du 31 pour la version définitive.

Saturday, February 23, 2008

Link's Awakening sur DS

Je suis parti dans un trip nostalgique hier (minishlink pourra témoigner), si bien que ce matin, je suis parti à la pèche aux émulateurs Game Boy et GBC pour me refaire les excellents Zelda sorti sur ces petites consoles. A faire tourner sur ma DS, évidemment whistle

Le meilleur que j'aie trouvé jusqu'ici, c'est Lameboy. J'ai aussi essayé DSboy (qui ne supporte apparement pas le GBC) et goomba (pour GBA, que je n'ai pas réussi à démarrer avec ma SuperCard) ... Bref. Aucun d'eux n'a l'air de supporter le son du gameboy, et c'est là que je m'étonne.

Sans le son, un jeu gameboy, c'est franchement insipide ... Je suis d'autant plus surpris que je pensais que ce serait un jeu d'enfant pour une autre console nintendo. J'avais tenté un émulateur GB sur mon PDA (sharp zaurus) il y a quelques années, mais je n'avais pas été très étonné que le son en soit absent (petit CPU et hardware son a priori très différent, tout juste capable de faire du streaming audio).

Bref. Les choses auraient pu en rester là sans Cobain, qui m'a fait remarquer que l'adaptateur Supercard SD intègre un émulateur NES (pocket NES, je pense), un émulateur GB et GBC (Goomba DS, mais une version qui marche ^_^) et même un émulateur Master System (iirc). Et en effet, les fichiers .gb et .gbc sont listés par le menu de démarrage de la supercard!

I have to confess, I've been emulating lots of Nintendo titles while switching millenium. So many NES, SNES and even gameboy titles we had found on the freshly-available Internet made me realise how small the 'supermarkt demonstration kiosk' selection was compared to the international catalogue. And chatting with MinishLink made me wish I could play some gameboy titles again. Preferably on the Nintendo DS.

I tried a few of the suggested homebrew emulators (lameboy, DSboy, goomba), but even the best-working one lacked sound support. And a gameboy title is quite tasteless if you remove sound, imho. Then Cobain pointed out that my Supercard linker does feature a NES and a GB/GBC emulator. Even a Master System emulator!
Things unfortunately go a bit wild when trying to save, especially in Zelda titles.

Ca marche impec (mais j'imagine que les possesseur d'un linker slot 1 auront quand-même besoin d'un émulateur). J'avais cru comprendre que la DS n'avait pas les chips nécessaires pour faire tourner les jeux GBC ... je viens de pousser sur L+R pour tenter une sauvegarde ... Et je tombe sur le menu "Goomba Color alpha 6 on NDS" ... on dirait bien que les cocos de chez Supercard ont embarqué plus que je ne le pensais sur la cartouche ^_^

J'ai pu me refaire un petit "Zelda DX" (version GBC de "Link's Awakening", mon zelda préféré -- auquel il paraît qu'ils auraient rajouté un donjon caché ... me réjouis de le tester). Par contre, sauver est un peu plus complexe:
  1. pressons START+SELECT+A+B pendant le jeu pour écrire l'état de la quête dans la fausse mémoire de sauvegarde de l'émulateur
  2. pressons maintenant L+R pour invoquer le menu de l'émulateur, ce qui l'oblige à copier "fausse mémoire de sauvegarde" dans la "fausse mémoire de sauvegarde" embarquée sur la supercard.
  3. Enfin, appuyons sur "L+R+SELECT+A" pour invoquer la gestion des sauvegarde de la Supercard et sauver ça dans un fichier .sav sur la carte SD.
  4. Sur certains jeux, la dernière étape ne marche pas (je n'ai pas su la faire fonctionner dans Zelda : Oracle of Ages, par exemple). Il faut alors éteindre la console et la rallumer immédiatement après. On voit alors le fichier dans le menu "saver" et on a la possibilité de le copier vers la carte SD (il était en effet resté quelques secondes sur la supercard, même privée d'alim.

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

Wednesday, August 23, 2006

Premier Bilou sur la DS

CA y est, les gars. Le matériel de GameLand-Shop.fr est arrivé ... supercard, superpass et lecteur de cartes SD en USB, tout y est! Et bonne nouvelle, mon sprite editor marche presqu' impeccablement (évidemment, avec un design aussi minimaliste, je vois mal ce qui aurait pu foirer :P)

Hahaa! My homebrew dev'er hardware has arrived. Supercard, Superpass and SD card readers. I gave my Sprite Editor a real try and it works! Here it comes : the electronic millimetric sheet for drawing things ^_^. Only one sprite and no saving at this time :P
"Ah, si tu mets Bilou dessus, je veux bien regarder", me disait mon e-papou l'autre jour. Bin voilà, en arrivant chez eux, j'ai redessiné un p'tit bilou sur cette grille-là et je lui ai montré ... "Tu retournes aux sources, là", répond e-papou en voyant le même genre de grille que celui que j'ai utilisé il y a près de 10 ans pour tous mes petits jeux... Bin oui, c'était l'idée ... sauf que je ne suis plus obligé de démolir des claviers en faisant "flèche, espace, flèche, espace, flèche, espace" pour remplir un carré :)

"C'est encore plus un retour au source" que je lui dit, "c'est un peu comme si j'avais une feuille de papier millimétrée intelligente qui pourrait retenir tout ce qu'on dessine dessus ... enfin, sauf que j'ai pas encore programmé les sauvegardes, donc si je l'éteint, j'ai perdu mon Bilou".

Saturday, December 31, 2005

dslinker [t.a.g.]

Running homebrew software on a Nintendo DS needs a little help ... a device called "a linker" that typically looks like a DS/GBA game, but that include a (micro)SD card reader. Finding, maintaining and using those device is sometimes a story of its own, as Captain N typically hunt corporates that manufacture them and puts pressure on governments to make those things illegal and pretend that people who sell them are evil criminals.