Okay, chances that i will still work on Apple Rumble are (very) slim. That was a demo game. So below you'll find the link to get the sources, libraries i used, modified version of Desmume (not that i think it'll be practical to play in the emulator).
Voilà. Il n'y a que très peu de chances que je bidouille encore Apple Rumble. C'était un jeu-démo pour essayer les sprites créés avec SEDS, en fait, donc je vous offre maintenant ses sources (GPL). J'y ajoute les bibliothèques que j'ai modifiées et 'ma' version de Desmume (pas que le jeu soit simple à jouer dans l'émulateur, mais je n'ai pas trouvé d'autre émulateur DS sous Linux qui supportait les cartes FLASH et les routines de décompression du BIOS.
download apple-rumble 0.1b
Thursday, May 17, 2007
Apple Rumble: sources release
Tags: apple-rumble, download, english, game, mybrew
Monday, March 26, 2007
Low Battery ...
It's unusual enough to see my mum behind a computer screen ... No need to tell you that she truly amazed me by being the first one to score over 1000 points at Apple Rumble on my DS this Sunday. Man, not only she played a video game for the second time in 20 years, but she mastered it in no time and she could blew any of my brother's score in a matter of one or two attempts -- which make my brother try even harder to beat her again.
I was far from thinking that a game that's so simple would meet such a success in my family.
This little duel has completely drained the power out of my DS so that i'm now forced to pause development until my new house is tidied up enough so that i can locate back my charger (and that's probably a good thing).
Tags: apple-rumble
Sunday, March 25, 2007
Let's Rumble !

Here you are, folks: my first homebrew game ever: Apple Rumble v0.1. Get it here, unpack and place the /rumble directory with media files at the root of your flash card.
How to play: hit the apples with the stylus when their eyes are open. The sooner you touch them in the game, the more points you'll score. My own best score is around 19 seconds for clearing the woods and around 970 points. If you manage to get at least 1000 points, post a comment ^_^
Mon tout premier jeu homebrew est enfin disponible: Apple Rumble v0.1! Téléchargez-le, décompressez l'archive et placez le répertoire /rumble (les musiques/sprites) à la racine de votre carte flash.
Comment jouer: touchez les pommes du stylet quand elles ont les yeux ouverts. Plus vous les touchez tôt dans le jeu, plus vous gagnez des points. Mon meilleur score est aux alentours de 970 points. Qui arrivera à passer les 1000 points le premier ?
SFX: V. Boigelot and S. Martin
GFX: S. Martin
Code: S. Martin and Sten Larsson (TetAttDS)
Thanks flies to the maintainers of devkitpro, yopyop and the desmume team, Miodrag Vallat and supporters of the mikmod library for the nds, TONC and people maintaining GBA/DS technical documentation, Natrium42 and many others i might have forgotten including everyone working on making nds homebrew possible.
Thursday, March 15, 2007
rumbling session
A small 'rumbling session' this lunchtime, after Cyril teased me about using apples to do "gravity experiments" on the DS -- "just like Isaac Newton, hmmm".
I managed to replace the 'decompress(VRAM, some_file_bin)' by tiles loader from my Sprite Editor, and started exploring the internals of Tetris Attack source code. I like how Sten Larsson did split his code between "PlayField" (that is basically how i would code the game in QuickBasic) and "FieldGraphics", which offers an abstract -- and adapted -- interface to push blocks on the screen, add effects, and the like.
Now i can enjoy a completely screwed "Tetris Attack" with random blocks of wood and apples as graphics :P
On discutait DS et sprites avec Cyril, et je lui explique que je voudrais faire quelques essais de gravité pour mes jeux DS, par exemple avec mes petites pommes -- "Comme Newton, hein?" qu'il rajoute.
Donc vous avez la un aperçu de la session de 'rumbling' de ce temps de midi, avec "TetattDS" qui ressemble de moins en moins à un jeu de Tetris depuis que j'ai intégré mon code du Sprite Editor DS pour récupérer mes pommes :P J'en ai aussi profité pour regarder un peu (et documenter en UML) la découpe du code de Sten. J'aime encore bien le partage entre les classes FieldGraphics (tout ce qui est dessin un peu bas niveau) et PlayField (grosso-modo, c'est l'algorithme de jeu comme je l'aurais écrit en BASIC si le jeu avait utilisé des caractères sur un fond tout noir -- sauf qu'on fait appel à FieldGraphics)
TetattDS sources show a good example of game-specific engine. On a sidescrolling platformer, i'd have avoid per-block state as much as i could, still tetattDS has "BaseBock *field[FIELD_WIDTH*FIELD_HEIGHT]". In other words, the whole grid contains pointers to instances of blocks or garbage blocks. Pretty odd.
Well, for me only, actually. Unlike blocks in e.g. SMB, here you need to 'stress()' 'pop()' and 'drop()' blocks individually, and you need to tell apart garbage block (unmovable) from regular blocks.
Yet another puzzle-specific thing is the effect handler. Anything that requires a fancy animation goes through a class that extends "effect" baseclass and that is registered in the EffectHandler. The EffectHandler is a singleton that will evaluate each effect, calling their individual 'tick()' and 'draw()' routines appropriatedly and collecting effects which duration is over. I claim this to be puzzle-specific because in a sidescroller, you'd have rather implemented such effect by transient Sprites among the character and foe sprites.
Unfortunately, that means i cannot just use it as such to implement falling apples (since they'll fall until they hit the ground, not simply for a fixed time interval.
Tags: apple-rumble, ch1, coding, english, homebrew, mybrew, open source, screenshot, uml
Tuesday, February 06, 2007
Pour faire un aarbreeeuu
Tree conversion in progress... I have it 40% completed, but there are bad things i need to fix here and there. Upper tree comes from TMC, bottom one is the one i'm building out of it. It features 7 colors for the leaves, plus the 'grass yellow' i'm using as backdrop.
I try very hard not to copy the blocks. That's study-and-reproduce.
Conversion d'arbre en cours ... 40% complétés. Bion, il y a 2 ou trois petites choses à ajuster ici et là, bien sûr. L'arbre du haut est celui de Zelda:TMC et celui du bas, celui que je construis... 7 couleurs en tout et un 'jaune-herbes' comme fond.
Et bien sûr, je m'applique pour ne pas recopier ... on étudie et on essaie d'avoir un bel effet similaire.
- [1] The palette is all messy, since it comes from a a screen capture. Since i haven't my palette editor extension ready so far, i have looked for the color gradient and built it manually ... so i tend to copy it in "free" spaces all over the tree i'm building.
La palette est sans-dessus-dessous, vu que l'image vient d'une capture d'écran. Le 'palette editor' n'est pas encore trop au point, donc je dois construire mes dégradés à la main dans tous les coins "inutilisés" de l'image :P - [2] My tree's top currently looks too flat. A few edits will make it rounder (just expand the leaves in top-middle). I'm also misusing light spots. The leaves are not "shiny" to the point they reflect more light on their corner. Rather, i should have a couple of lighter leaves.
Le haut de mon arbre est trop plat. Il me faut quelques retouches (agrandir un peu les feuilles du milieu) pour avoir quelque-chose de plus arrondi. Il faut aussi que je fasse attention avec la couleur la plus claires: les feuilles ne sont pas luisantes au point de réfléchir d'avantage la lumière sur leur coins! Au mieux, c'est la feuille entière qui doit être plus claire. - [3] Light comes from the left, right? so make sure your leaves on the deepest plane are very dark with small spots a bit lighter on the right and completely a bit lighter on the left, with just dark borders.
La lumière vient de la gauche, donc les feuilles à l'arrière-plan doivent être principalement ultra-sombre sur la droite et principalement "très sombres" sur la gauche...
Tags: apple-rumble, arbre, english, greenzone, pixels
Saturday, December 02, 2006
Ready for Rumble ?

Pfiouh. Bin y'avait du boulot ... j'ai bricolé un peu mon DeSmuME pour qu'il supporte les routines de décompressions (en fait, la version CVS de desmume le fait déjà, l'émulateur a été complètement réécrit en C alors que la version que j'avais bidouillée est en C++).
visiblement, le projet est plus actif que je le pensais, mais je n'ai pas trop trouvé comment utiliser le module "cflash.c", donc j'en reste à mon émulateur plein de rustine.
Résultat, après pas mal d'efforts, j'ai enfin le jeu qui tourne (avec mes modifications :P) et ... (roulement de tambours) les modules sont extraits du .nds et chargés sur la carte SD ...
Ca peut paraître génant, comme ça, mais il faut savoir que les transfers DSFTP ont tendance à s'interrompre trop tôt, donc si je peux essayer plusieurs musiques sans toucher au programme, ça ne serait pas plus mal ...
zou. J'ai enfin une bonne nouvelle dans ce projet "apple rumble": non seulement le test tourne dans l'émulateur, mais mon morceau "little flower on the grass" tourne dessus ^_^ Et ce sera "virtual sid session" qui sert de musique pour l'alarme. Voici donc le premier "tetris attack" avec une rangée de blocs qui se cache derrière un tronc d'arbre :P
It seems that the desmume project is more active than i initially presumed. That's both good and bad. Good, because they have the unpacking routines i was missing, and bad because they rewrote the whole code in C (while the version i have is written in C++) and because i couldn't figure out how their new flash-device support is supposed to work.
So after hacking all over the place, i finally have the tweaked-tetris-attack game running on my console, with the songs loaded with libfatdragon rather than just being bundled with the executable. At first thought, that may sound a bad idea, since it makes the game dependent on a flash reader technology, but this is my only chance to have the binary transferred over WiFi with DSFTP -- which seems to hang randomly when the file transfer gets longer or when the signal weakens.
So that's at least one good new for the "apple rumble" project. Not only i can now run it in the emulator (making bug hunts&fixes easier) but i also have the "little flower on the grass" tune of mine played fine during the game and "virtual SID session" played in "danger" mode. So here's a snapshot of the very first tetris attack clone with a column hidden behind a tree ^_^
Tags: apple-rumble, desmume, english, mybrew
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 ...

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" ^_^
Tags: apple-rumble, game, mikmod, modplayer, surDS
Saturday, December 31, 2005
mybrew (t.a.g.)
You've reached the last post in the "mybrew" thread.
These post present the software development and releases I've been through on the Nintendo DS. That captures everything about the sprite editor, the level editor and the animation editor that I intend to use for building Bilou's adventure, plus the Multi-purpose transfer-and-testing tool dubbed 'runme' and (of course), all the demo games that fill the gaps until the future Grand Release, such as Apple Rumble, apple assault and the other gedsdemo :P
It may miss some mere coding or documenting posts, and is wider than just the milestones. It doesn't cover the projects that haven't started yet such as Deep Ink Pit, although it has received a codename and a gameplay target.
Although all this software is homebrew (and open-source, btw), the 'homebrew' tag is for other's software on discussed on this blog.
Somehow, it would be a shame to keep that for myself. If I'm
right, it would be as good as having a game maker for NDS on the NDS. I started a tutorial series on github to share the knowledge of how to use my homebrew engine.
The first layer
is a framework of compilation scripts (Makefile) together with
low-level libraries (including a modified version of 0xtob music player.
Well, everything needed to get a first program built and running.


Vote for your favourite post

