Showing posts with label mybrew. Show all posts
Showing posts with label mybrew. Show all posts

Saturday, July 18, 2026

The July Demo

Ooops Ooops oops. It's about time I tell you about the releasable nds I uploaded last week ... I wanted something featuring the latest Funky Funghi and applemen improvements that I could share over the not-too-new itch.io page and tried the development log feature to write a blurp about it. But of course, July is always super-crowded to the point I feel like an impostor when just taking time for me. And carbon-induced heatwave didn't help.

I also managed to put it on sourceforge download before my own laptop's battery told me to stop and go to bed...

Swimming got improved, too, and we finally see all the branches of that important tree, although it could use more leaves at the top ... that shall happen later on.
  

Sunday, May 10, 2026

Un TEDS ? Enfin ?

Quelques semaines avant de partir me reposer un peu, j'ai voulu faire un test de "3 rooms" sur ma DS. Pas de chance, il manquait une ligne - une seule - au fichier script sur la DS, de sorte que le fichier en question ne se lançait pas. Du coup, quand je me suis retrouvé assis tranquilou à une terrasse, je suis revenu sur cette idée d'éditeur de texte pour la DS.

I really could use a text editor running on the DS, to patch those script files without having to 1) turn the cube on; 2) stick the WiFi in; 3) setup upstream/downstream channels; 4) beam file out; 5) patch it in vim; 6) beam it in again; 7) try and most likely repeat from 4. And I did have a couple of hours by the swimming pool, sitting at a table to think how to approach it.

Et après quelques notes sur comment l'éditeur pourrait fonctionner, je retombe sur cette idée de "mode scribouille" qui me hante depuis 8 ans ... pour finir par me rendre compte que le meilleur programme pour tester le système, c'est celui qui permettrait d'encoder les patterns de chaque lettre. 

Et donc, après quelques petites opérations de maintenance, je lance une nouvelle branche pour prototyper ça , un peu patraque dans mon fauteuil et pas franchement d'attaque pour grand chose d'autre.

Of course, it wouldn't take long before I tried to inject the "handwriting for DS" technique into it, and I realised something interesting: the "minimal viable product" to see whether I can truly write stuff with that technique is 80% of what we need to populate the recognition data. So after more ndsdev in a row that I've been doing over the last few months, I made a first version of "teds", working enough to decide that, yeah, it's kinda-working. 

Je pourrais baptiser ça "un marathon ndsdev", avec son lot d'essai-erreur, de petites étapes prudentes et de passage par DDD pour me rendre compte que j'ai utilisé la mauvaise variable dans l'itération d'une boucle ^^".

J'ai maintenant une sorte de "minimal viable product" qui permet de tracer des lettres et d'effacer l'une ou l'autre lettre d'un L+LEFT. Assez pour constater que 

  • des cellules de 4x4 pixels, ce n'est pas convaincant, vu les imprécisions du tandem stylet/DS
  • une "zone morte" en bordure de cellule permet effectivement de faire des "diagonales" de façon plus fiable
  • il reste souvent nécessaire de faire des "retouches" pixel par pixel
  • tracer les lettres d'un traît ou tracer les lettres "tranches de pixel par tranche de pixel" donne grosso-modo la même vitesse d'écriture: 30-32 secondes pour "there is no spoon" (16 caractères avec les espaces)  

Next step will be storage and loading of the "recognition database" and selection of a "bank" of 8 characters to "train" from the ASCII set shown on the left of the screenshot.


 

Monday, December 25, 2023

Petite pause HDMA

Yes! I managed to get some HDMA effect applied on my 3-rooms demo. It has absolutely no use in that particular scenery, but it did work. Yet, at first, I couldn't get anything, up to the point where I suspected that my emulator simply had no support for HDMA at all. But then I remembered seeing something very HDMA-esque in WarhawkDS (recently open-sourced). And then before I could even try whether the .nds would work in my emulator, Asie confirmed that she knew another open-source homebrew using HDMA: MegaZeux.

Hahaa! Nous y voilà! J'ai réussi à appliquer un effet "HDMA" dans ma démo de Bilou Dreamland! ça ne sert à rien, c'est d'une esthétique discutable, mais voilà: il y a presque 2 ans que j'ai des notes sur comment faire ce genre de chose dans mon carnet-agenda et que je passe par-dessus en me disant que "ouais, je tenterai ça un de ces 4. C'est complètement le genre de technique qui fait que je suis sur NDS et pas sur playdate ou androïd. Mais c'est McMartin avec son post sur le HDMA de la SNES qui m'a donné envie de bousculer un peu mon absence-de-planning de hobby-coding pour le mettre en oeuvre. Sauf que vous vous en doutez, au premier essai, rien ne marchait. J'avais pourtant quelque chose de quasi-identique à ce setup dans MegaZeux DS ou même warhawk DS.

  DMA1_CR         = 0;
  REG_BG0VOFS_SUB = scroll_table[0];
  DMA1_SRC        = (u32)(scroll_table + 1);
  DMA1_DEST       = (u32)&REG_BG0VOFS_SUB;
  DMA1_CR         = DMA_DST_FIX | DMA_SRC_INC | DMA_REPEAT | DMA_16_BIT |
                    DMA_START_HBL | DMA_ENABLE | 1;

The registers configuration is almost identical to the one I tried in my demo: 16-bit transfer with proper start and repeat setup, and a transfer size of 1 word per line. At that point I started suspecting that something else in my code would break the setup of the DMA transfer. After all we already have channel 0 used for 3D pipeline and channel 3 used by dmaCopy macros. So I picked up devkitpro simplest graphics demo and tried to bring it there instead.

Un petit passage dans les programmes d'exemple de devkitpro. Aucune ne fait du HDMA alors j'essaie d'injecter mon code dedans. Sauf que la première victime n'a aucun plan de décor (donc rien à faire onduler) et est écrit en C (contre du C++ pour mon code). Je m'adapte et je fais la bonne vieille rasterbar (impossible dans le code de Bilou parce que je travaille en mode 4096 couleurs par plan, ce qui veut dire que la palette est hors de la mémoire adressable). Et là, ça marche presque nickel. Il faut juste veiller à programmer la couleur pour la ligne 0 "à la main" avant de commencer la configuration du HDMA qui fera toute les autres lignes parce qu'il se déclenche *à la fin* de chaque ligne, mais pas pendant les lignes virtuelles du délai entre 2 images.

The first one (simple sprite) had no background to wave but it had single palette, so there (unlike with my demo), I could beam values into palette slot 0 and see it draw raster bars on screen. A bit of translation was needed because it was a C example rather than a C++ one, but there it is. changing the background colour like I was driving an Atari 2600 except the DMA does the waits and syncs, and not the CPU.

class HdmaEffect {
  static const size_t N=256;
  static const unsigned CHN = 1;
  s16 data[N];
  size_t offset;
public:
  HdmaEffect(); // intialize data[]
  ~HdmaEffect() {
    DMA_CR(CHN) = 0;
  }

  void Frame() {
    DMA_CR(CHN) = 0; // disable channel
    DMA_SRC(CHN) = (uint32)(data + offset);
    DMA_DEST(CHN) = (uint32) &REG_BG0HOFS_SUB; // mind the & to get register *address*
    DMA_DEST(CHN) = (uint32) BG_PALETTE_SUB;
    DMA_CR(CHN) = DMA_REPEAT | DMA_START_HBL | DMA_SRC_INC | DMA_ENABLE | DMA_DST_FIX | 1;
    offset = (offset + 1) & ((N / 4) - 1);
  }
};

void mainLoop() {
	HdmaEffect hdma;
	
	while(1) {
		swiWaitForVBlank();
		hdma.Frame();
		scanKeys();
		if (keysDown()&KEY_START) break;
	}
}

Mais mon code C++, lui, toujours rien. Il n'est pourtant pas si différent. Je continue à passer d'un exemple à l'autre et je tombe sur un avec un décor (qui refusera mordicus de bouger) et en C++. Toujours rien. Par contre, en reprenant et adaptant le code C, là, je parviendrai à faire onduler le texte de l'écran du bas. Moins sexy, mais c'est un début. Il m'aura fallu un bon réveillon familial et une petite nuit de sommeil pour comprendre la différence fondamentale entre les deux implémentations.

I picked another example featuring a background, this time in C++. I couldn't get any color changed with my C++ code, and I couldn't get the picture waving. But with the adapted C code, it could change colors and I could make the text on the bottom screen waving (although somehow weirdly). We were 24th of December, I had errands to run and a party to attend, so I accidentally shut down the computer and went doing something completely different. It's only when I woke up this morning that I got struck by the difference between the C++ class and the C code. The C++ class will have the source array in a member and it allocates the HdmaEffect object on the stack. But the stack is invisible to DMA operations. I've been tricked by that a good number of times in the past already. One more alloc/free pair was all I needed to get the working screen-waving effect you've seen above. Huzzah! Merry Christmas! May the source be with you all ;-)

La conversion rapide en C utilisait une grosse variable globale pour le tableau contenant les différentes valeurs à streamer dans le registre de scrolling. La version C++, plus propre sur elle, encapsulait ce tableau au sein de l'objet HdmaEffect, lequel pouvait être construit dans une variable locale pour gérer ses ressources (le canal DMA) Rabi-style. Sauf que "local", ça veut dire "sur la pile" et que la pile de la DS est 1) petite et 2) mappée sur de la mémoire plus rapide (type cache L1) logée au coeur du chip ARM ... et donc inaccessible depuis le bus système avec lequel travaille le contrôleur DMA. Eh oui. Un malloc plus tard, j'étais prêt à faire une démo qui marche ^^"

Saturday, December 25, 2021

xmas21.zip

I finally posted something more on my sourceforge project: the set of editors (plus runme) as I've got them by this Christmas, invoking oven-hot slopes support.

I wish I could provide you with a meaningful 'change log' for this 'release' of my tools, but let's be

honest: there are over 20000 lines changed between then and now (assuming that you're only interested in what changed since last AnimEDS release in 2020). It won't be exhaustive, but I'll try to give you an idea of what's in anyway.

Sprite Editor

  • allows you to work on any file you've got on your memory card (including automatic backups put in /DATA/SEDS/*)
  • better 'colors zapping' implementation.
  • 'where is that color used?' now cleanly implemented in the PaletteWindow
  • (improved host tools sprdo and sprck are missing from this pack)

Animation Editor

  • allows you to work on any file you've got on your memory card. 

Level Editor

  • uses new map layout with dedicated PHYS layer (accidentally named 'SYHP' in the file >_>)
  • show the 8 color palettes when selecting a block in DRAW mode (A). Color paint mode now available on both foreground and background layers (trigger with L+A on the desired layer)
  • supports new any-sized special blocks with 'lookup arrows', features revised 'meta buttons' widget to select tile properties.
  • reads new 'slopes %d = "%x"' hint in .cmd or .gam files and populates the slope tiles graphics accordingly. Different maps can use different slopes or share them by importing the same .gam file.
  • supports spritesets and tilesets overlay commands

runMe (gameplay preview & WiFi transport)

  • Allows live-skipping of buggy script lines
  • allows auto-repair of the /moving/ directory
  • features new level map engine
  • supports script-driven song swapping with zik.file = "%s"
  • Improved modplayer playback speed stability
  • supports spriteset overlays (spr.more "%s" ...) and tileset overlays (bg0.more "%s" ...)

All these .nds files will work from anywhere in your flash card, but if you install them with their original *dlta.nds filenames at the root, you'll be allowed to hope from one tool to another with the embedded buttons (quit, LEDS, SEDS, MEDS) in the application welcome windows.

Wednesday, December 08, 2021

3 Rooms - Release Early

 

There we are. The first demo featuring the first 3 environments of Bilou's Dreamland cycling to one another, changing music and graphics. It's super work-in-progresss, and there are so many things to be fixed that I won't try list them now. But you know what they say: "release early, release often", and a fellow gamedever asked me earlier this week about being allowed to test and so on. So if you think he's right, enjoy this St-Nicolas gift.

Download: Dreams.nds updated Dreams.nds for new year

Voici donc (enfin ?) quelque-chose de téléchargeable avec les environnements que j'ai l'intention de faire évoluer pour y amener toutes les nouveautés de gameplay de Bilou's Dreamland. Alors, soyez avertis quand-même: c'est vraiment une version 0.0.0.1 là. Pas même une ébauche, tout juste un canevas. Y'a des retouches à faire par-tout. Y'en a tellement que je n'aurais même pas le temps d'en dresser la liste avant d'aller me coucher. Mais qui sait, ça vous amusera peut-être.

Tuesday, August 11, 2020

AnimEDS, cru 2020

Okay, these will be the first tools release with my new devkit setup. They seem to work fine on my iPlayer + lime DS setup.

I won't try to go with a 'how to use XXX' here, as this will be the mission of the AnimEDS manual page I'm editing this week. but you may want to know what to do after you

Download AnimEDS-2020.zip

right ? 

I want to use them on my NDS

Fine. Look at all the files in the archive, find back your micro-SD adapter and copy the files at the root of your SD card. The files themselves need to go there, not the AnimEDS-2020 folder. Don't change any file name.

Then put back everything in place, ensure your DS linker supports DLDI and launch medsdlta.nds. You can load the demo spritesheet by pressing START then L then A.

I want to use them in an emulator

Fine as well. I suggest you download the latest desmume (or at least 0.9.11). 

  • In the Config menu, check "ROM Loading > Load entirely to RAM"
  • In the Config menu, click "SLOT 1" to make the dialog box appear
  • opt for R4 as the type of device
  • point the 'director' to the location where you unpacked all the files. spriteA.spr should be in that directory.
  • launch medsdlta.nds 

Then, again, press START, then L then A to get the santa-demo file loaded.

Why should spriteA.spr be at the root of my SD card ?

This is where the Sprite Editor and the Animation Editor will look for your projects. That allows reliable load/save commands even when you're commuting, rather than having to cross finger while you tap the screen with the stylus.

Why shouldn't I change the names of the .nds files ?

They have path to each other hard-coded, so that you can switch from one to another easily (real hardware only, so far). This is also why you should drop them at the root of your media card.

Hope that will help ManafilledMangoes try out the soft.

Wednesday, March 07, 2018

libgeds tutorial

I have just started a github with one branch of the dsgametools project: the 'tutorials' branch, where I'm reconstructing and detailing step by step the components of the (refactored) game engine... together with Creative-Commons pictures and sounds to make demos on a regular basis.

Additional chatting and promotion of the tutorials happen in gbatemp and e-magination forums.


Cette fois-ci ça y est. J'ai transféré la branche "un tutoriel après l'autre" sur github. Pour que chacun puisse facilement suivre ma tentative de réécrire le moteur des jeux Bilou. Histoire que les différentes fonctions disponibles soient capturées clairement, et non pas éparpillées sur une demi-douzaine de patches.

On verra bien si ça intéresse du monde...

the mercurial-to-git conversion is performed by the fast-export tool from Frej. The process looks as follows:

cd hg2git/
cd dsgametools-hg/
# hg incoming -r $(hg id -b)
hg pull -r $(hg id -b)
cd ../tutorials-git/
../fast-export/hg-fast-export.sh -r ../dsgametools-hg
# git log
# git push --dry-run git@github.com:PypeBros/libgeds-tutorials.git
git push git@github.com:PypeBros/libgeds-tutorials.git
cd ..

Sunday, June 18, 2017

runme + assault = todo

I'd love to have the time to provide a real tutorial for people to start working with libgeds. So far, the best I have is a package with 8-bitifed graphics for AppleAssault and the corresponding game/character scripts... which -- thanks to some work I did a few weeks ago -- now also comes with a copy of RunMe that can run all of that. Maybe that will at some point make it more interesting to start working with the Game Engine for DS.

Of course, because runME is a tool primarily designed to transfer files, it will not exactly be easy to start a game there.


Bon, j'avoue, j'adorerais avoir le temps de travailler sur un vrai tutoriel pour le système lib geds, mais jusqu'ici, la seule chose qui s'en rapproche un petit peu, c'est une sorte de kit avec les graphismes de Apple Assault en version 8-bit et les script correspondant pour les personnages et pour le jeu. Et grâce au travail de ces dernières semaines,  tout ça i tourne maintenant avec une version récente de runme. youpi. Peut-être que ça rendra les choses plus faciles pour ceux qui veulent commencer à travailler avec le game engine for ds on peut toujours rêver...




click 'offline', then 'cmd'click 'A' to pick one of ASSAULT*.CMD, and then click the name you want to runpress now L+A to load the script into the memoryand now press L+Y to process that script to the end.

Évidemment, le programme 'runMe' est avant tout un outil de téléchargement. Donc il faut un peu chipoter pour pouvoir démarrer son programme:  passer la détection réseau , par exemple, puis choisir le fichier qu'on veut démarrer, et des commandes un peu barbare du genre La+À ou L+y pour démarrer la lecture du script ou pour l'interpréter sur la DS.

When I want to run this, I do it with desmume-cli, using --cflash-path=AA-efsroot (which is in the 'runMe.zip' archive) and --load-type=1. But that only works in Linux. For windows user, you'll have to go into config->slot2 and setup the directory manually (I just hope for Windows users that they can somehow save that configuration)
Il faudra aussi s'assurer que l'émulateur a accès au fichier du jeu qu'on veut essayer. Moi, je fais ça à la ligne de commande dans Linux, mais évidemment, les gens qui travaillent sous Windows devront passer par les menus de configuration de desmume pour avoir la même fonctionnalité ( voir l'image).

Voilà, avec tout ça vous avez la possibilité de tester le jeu que vous avez vous êtes en train de développer, mais malheureusement, s'il y a des erreurs dans le script, c'est encore très laborieux de les trouver et de les corriger. On peut faire mieux avec l'outil de test automatique que j'ai développé pour mettre School rush au point, mais c'est un truc qui doit être compilé à part. Et pour l'instant, il faut même le compiler à chaque fois qu'on veut essayer de traiter de nouveaux script pour un nouveau jeu, donc il faudrait que je fasse appel à l'équipe pour avoir une variante qui tourne sous Windows histoire que les jeunes puissent essayer de faire le même. Mais voilà, l'équipe, pour l'instant c'est juste bibi. alors soit vous vous enrolez, soit de vous patientez. Ciao.

All this makes you able to try the game you're developing, but when there are errors in the script, you just have a stop with the content of the offending line dumped.
Hopefully, It can now also be checked with 'testme', the unit-testing tool for current School Rush game. (which unfortunately still requires a rebuild for Windows everytime you change the scripts you want to check).

I could really use a helping hand to get that going somewhere. Someone who's used to do builds of Linux native projects in a Windows environment. Even then, it's unclear whether I can compete with a tool such as DSGameMaker, but I still think people should have the choice ^_^


Oh, et si vous allez jusque là, la présence du "log" deviendra vite gênante dès le niveau chargé avec succès. Rassurez-vous: il est tout à fait possible de le faire disparaître: il suffit pour ça de toucher le bouton 'log' sur l'écran du bas. Et si vous voulez retourner charger un autre niveau, le bouton "beam out" vous ramènera sur l'écran avec la liste de fichier et le "clavier virtuel" (qui fait les "lettres paires" quand on garde L enfoncé, soit dit en passant).

Et pendant que vous lisiez tout ça, j'ai ajusté la position des vagues d'encre pour le "niveau retour" de School Rush...

Thursday, April 28, 2016

Hello (androïd) World

Excellent! Les smartphones sont maintenant devenus suffisamment puissants pour faire tourner un émulateur DS. Ils sont nombreux les anciens homebrewers qui se sont fait la malle dans le monde du mobile depuis l'arrivée de l'Androïd et de son SDK accessible.

Je sais, j'aurais pu me mettre au développement Androïd, mais je préfère continuer à travailler sur le coeur du jeu et utiliser le super hardware de la DS comme "game engine" que de perdre du temps à chercher quel framework marcherait bien pour un jeu qui de toutes façons ne colle pas bien avec le hardware d'un smartphone.

That's the best news of the week! My brother managed to get a version of Bilou : School Rush running on an Androïd phone thanks to DraStic emulator. That's great news because it means that -- as I hoped -- I can keep working on the game on a platform I love rather than spending efforts at emulating that platform on a poorly-picked system that will eventually be deprecated by its maintainer. You see, nintendo console cannot turn deprecated. They can become obsolete, they can take dust, they can be forgotten or sold for gold, but they cannot turn deprecate because they were hardware. Therefore, an emulator for such a platform is something that is (until now) more age-traversing and cross-platform than any DirectX or OpenGL release.

edit: I tried the game on my brother's device. It indeed look, sound and moves fine, but there something going wrong with loading new levels. Hard to tell if there's something wrong with my code or if their emulator still needs improvement. 

edidit: J'ai fait un essai hier sur le smartphone de mon frère, j'admets qu'en dehors de l'aspect "gif animé interactif", l'émulateur sur Androïd ne permet pas vraiment de jouer au jeu. J'ai eu aussi cet espèce de bug lors des changements de niveau (l'émulateur refuse de nous relancer le jeu si on meurt, par exemple). Le mieux que je puisse dire, c'est qu'il est probable que l'émulateur ne soit pas encore suffisamment fidèle au vrai hardware. A réserver pour les curieux, mais pas vraiment une alternative crédible à DeSmuME sur PC ou au jeu sur une vraie DS.

Sunday, June 07, 2015

School Rush : Casual / Amiga / Arcade

At last, here's an updated version of School Rush starring Bilou in the School Zone.

https://sourceforge.net/projects/dsgametools/files/latest/download?source=navbarYour goal is to clear 4 levels of fast-paced jump-and-run, using either your skills or the natives of the School Zone to beat the challenges you'll face.


Voici la première version complète de mon 2eme jeu DS présentant Bilou : School Rush. Vous avez 4 parkours à couvrir dans une école en folie, avec de l'encre qui monte, qui monte ... et qui vous met la pression. Ressortez vos talents de platformeurs ou utilisez les "habitants" de cette école à votre avantage.

Controls

  • (A) button makes you  use your feet (jump/bounce/float) and (B) button makes you use your hands (grab, throw, punch). 
  • The Punch Power-up allows you to stun most ennemies, including the pendats, without having to carry dumbladors around. When you got it, you'll need to use "DOWN + B" to pick up objects. 
  • The Float Power-up allow you to defy gravity. Press (A) twice mid-air quickly to trigger it and then hold A to float to the next location.
  •  Up/Down let you look at what's around you.
  • R shoulder makes you run. You can also use Kirby's double-tap on a direction button to run if you prefer.


Select your destiny
The "Casual" mode is an alternative to tutorials. You have unlimited time to reach the end of each level, allowing you to experiment with mechanics of the game. Since the ink does not rise, you'll find safety nets in many places.
Le mode facile (casual) vous propose une prise en main du jeu, une découverte des mécaniques. L'encre ne bouge pas, vous aurez bien assez de possibilité pour vous tirer d'affaire en cas de faux-pas.

The "Amiga" mode is a bit more demanding. Ink raises slowly, pushing you forward. Some safety path are now sunk and unavailable. Missing a jump is more likely to kill you, but the "obvious" path can still be walked down to the end of the level. (you're welcome to run to get some headroom, but that's not even required).
Les choses deviennent plus sérieuses avec le mode "Amiga". Même si les niveaux sont toujours passables sans courir, un petit sprint ici et là sera sans doute le bienvenu. Avec l'encre qui monte vos faux-pas risquent d'être punis plus durement. Mais ce n'est pas ça qui vous arrêtera, parce que vous savez maintenant où se trouve le prochain power-up ;)

And then, you've got the "arcade" mode. You'll have to be twice as fast as in the "amiga" mode. You'll need to master game mechanics and plan your path ahead so that you can make it through despite the fact that some platforms have now disappeared in the ink.
Enfin, le mode "Arcade". Les choses sérieuses. Il faudra presque un entrainement de speedrunner pour boucler les 4 niveaux en 3 vies...

Cannot find data files
Homebrew is a bit different from official DS development. One major difference is that our games are files on a media card (microSD). If you play on emulator and get stuck with a black screen on the top and an error log like this on the bottom, you're missing something like "--gbaslot-rom=self". The keyword for that configuration is "DLDI". See below.

Playing on the Real Thing
You need a DS and a linker device that can play homebrew files. With most linkers sold after 2007 (that support DLDI), all you'll have to do is drop the .nds file somewhere on your media card and launch it as any game.

With older linkers, you need to patch the .nds file manually using the driver compatible with your hardware. If your hardware need patching and you haven't patched, you'll see the bottom screen displaying only purple background with the words "NODA!" written in the middle. (and other boot info around).


Si vous n'avez pas de DS prête pour les jeux homebrew, le mieux est d'utiliser l'émulateur DesmuMe, et d'aller dans Emulation/GBA slot pour indiquer à l'émulateur d'utiliser le fichier .nds à la fois comme ROM nds et comme contenu de la cartouche supplémentaire où le jeu ira chercher les musiques et les images.

Playing on an emulator
You're suggested to use desmume and follow these instructions to set the "GBA slot image" as being the .nds file itself. Other emulators (notably iDeaS, patch as R4TF) will require manual DLDI patching (see above). You'll get a better experience with a SNES-like gamepad.

edit: newer builds of desmume have the option for DLDI in Config | gba slot... oh well.

Friday, August 29, 2014

Rush to Completion -- 2 levels

Cette fois ça y est: vous pouvez prendre le contrôle de Bilou dans une course effreinée à travers deux niveaux de la School Zone: voici "Rush to Completion". Et quand il n'y en a plus, il y en a encore: tout comme Apple Assault vous faisait affronter de plus en plus de pommes, ici l'encre ira de plus en plus vite ! Pourrez-vous trouver les astuces et maîtriser les rebonds pour continuer à aller de l'avant ?

Finally, it's here! Bilou: Rush to Completion with two levels (you're allowed to expect at least 2 more by the end of October). But don't let yourself fooled: every time you'll beat those levels, the pace will speed up and the ink will raise faster, forcing you to find new path through the level and to improve your skills if you don't want to drown.

Oh, don't let the interactive menu trouble you. Default way to start the game is jumping into the inkjet on the left to grab the "GO" letters. Catch the blue ball on the left if you want "kids mode" and explore the levels with idle ink. If you manage to grab one of the "ARGH" letters without touching the blue ball, you'll enter "hard" mode, with ink raising faster straight from the start. 

Oh ... and you can "keep running" by holding the R shoulder button.

Known bug: 
  • pressing START in-game will likely crash 
  • hint for running on the welcome screen are obsolete.
  • wrong colors in the "heal" bonus.

Ne m'en veuillez pas: j'ai remis le couvert avec mes menus interactifs. Attrapez les lettres "GO" pour commencer le jeu en mode normal (par exemple en sautant dans l'encrier), "ARGH" pour commencer en mode difficile, et attrapez d'abord la balle bleue sur la gauche pour démarrer en mode "facile".
Au fait, on court avec un "double flèche avant", un ado-ken ou en gardant R enfoncé, tout simplement.

Bonne rentrée à tous les étudiants. Vive l'école ;)

Saturday, October 19, 2013

20 ans!

Il y a 20 ans, Bilou voyait sa première aventure esquissée sous les crayons de mon frère d'après les programmes CPC de Pierrick. J'ai fait de mon mieux alors pour transformer les "idées papier" de mes ainés en lignes de code et en pixels, mais la School Zone m'avait tenu en échec: le niveau de complexité dépassait ce que mes outils pouvaient supporter, menant peu à peu à la mise au grenier du projet.
Gain speed to break through that pencil barrier.

Aujourd'hui, je prends ma revanche avec ce homebrew pour Nintendo DS qui vous emmène à travers le dernier niveau dessiné par mon frère avec les monstres de Pierrick. Plus vous ramasserez de bonus, plus on vous emmène loin dans le temps...

That's it: the anniversary level celebrating the 20 years of Bilou video game sketching, design and coding is ready to play. At last, Pierrick's ennemies and my brother's level come to life and challenge you to gather all the letters scattered through the chemestry classroom. The more you get, the further we take you back in time. Can you make it back to 1993 ?

A: sauter et rebondir / jump & bounce
B: attraper et lancer / grab & throw
Bilou can run faster if you do a sharp turn back (tap left and slide to the right to run to the right). You can bounce on monsters by tapping A just when stomping them.

Pour courir vers la droite, pressez d'abord la croix vers la gauche puis glissez le pouce vers la droite. Pour courir vers la gauche, faites l'inverse. La "barrière crayon" peut être traversée si Bilou tombe d'assez haut.

Playing on the Real Thing
You need a DS and a linker device that can play homebrew files. With most linkers sold after 2007 (that support DLDI), all you'll have to do is drop the .nds file somewhere on your media card and launch it as any game.

With older linkers, you need to patch the .nds file manually using the driver compatible with your hardware. If your hardware need patching and you haven't patched, you'll see the bottom screen displaying only purple background with the words "NODA!" written in the middle. (and other boot info around).


Playing on an emulator
You're suggested to use desmume and follow these instructions to set the "GBA slot image" as being the .nds file itself. Other emulators (notably iDeaS, patch as R4TF) will require manual DLDI patching (see above). You'll get a better experience with a SNES-like gamepad.

Known Bugs/limitations
Although it's an anniversary, it's also a first release. There are things that are not visually consistent and room for improvement. It was however decided to release early and that those features would be left for future levels/releases.

edit: fix anniversary-G88 released.

Friday, December 28, 2012

XMAS School Demo.


Here's the new demo. I hope I'll be able to add some screenshots and stuff, but my Internet access is currently down. I've managed to fix the memory corruption problems that prevented to reload the level when Bilou "dies", so here you go.

Voilà enfin la démo promise. Bilou se promène dans les nouveaux graphismes de l'école, il saute (A), assomme les dumbladors, puis les ramasse, les transporte et les lance plus loin (bas). Une erreur de gestion de mémoire m'a obligé à rallonger la phase de debugging. Pour ne rien arranger, je me suis retrouvé sans connexion Internet pendant presque toute ma semaine de congés, du coup, c'est une release "en aveugle", goupillée à partir d'un .nds sur clé USB lors d'un passage-éclair pour reprendre du jus de fruits au bureau ^^".

Since it's a "blind release", I had no access to my todo list, so I couldn't remember I still had a bug with Dumblador recovering just on the left of walls. If you do that, it will remain stuck. (Fixed in SchoolTest-GoT.zip)

Press A to jump and stun bladors, then press "DOWN" to grab them and "DOWN" again to throw them in the direction you're facing.

START enters the pause/debug mode, which you leave by pressing L+START.


Wednesday, August 22, 2012

AnimEDS at Neoflash Compo

For the second time, I'm entering the "Neo Coding compo", with latest versions of AnimEDS and SEDS, with in-app help for almost all the operations. I had first some hope, as there weren't that much "good" (imho) applications submitted until Smealum (arsenal) nuked me with his FPSMaker ...

Un badge, des messages d'aide, un personnage moustachu en salopette dans un .spr (à la place de Badman), et voilà AnimEDS (et SEDS) prêts pour la compétition de "rétro-coding" de Neoflash. Cette année, c'est "toutes machines confondues", avec un sérieux regain d'intérêt pour les participants, même si je n'ai pas vu côté DS de production à la hauteur des jeux qui avaient brisé les espoirs de Apple Assault en 2010. Si je devais donner un pronostic, je parierais sur la victoire du FPSMaker dans la catégorie "Applications" (également sur DS).

Anyway, although I made the effort of having the compo badge shown in my entry this year, winning some prize is not my main motivation: I want to take the opportunity of many people blowing dust away from their handheld console and downloading homebrews to get more feedback about the user interface and how to make things more "user friendly". 10/15 blog readers have voted for that in the app/game poll that ends by friday ... but for that I'll need to know what people think and expect from my apps.



Saturday, February 04, 2012

Berry Bat Things

Hey, there! Cleaning up and tuning in are done. If you enjoyed once AppleAssault, but then stopped playing it because you didn't feel the challenge anymore, here's an update that you might love: AppleAssault -- BerryBat Things. The idea is simple: you've got limited time to clear up a level. As long as you punch applemen out of the arena, nothing bad will happen... But if you get lazy and that the applemen count remains the same for too long, a berry bat will come and tease you. You could manage to get rid of it, of course, but then another one will come soon, and then again another and another, again and again until you surrender (or focus on punching Applemen, after all).

So how comes you're still reading this ? Go and download it! -- oh, wait. Better pick the final release

Bilou! Le revoilou! Ok, je suis supposé bosser sur la School zone, mais j'ai une très bonne excuse pour recycler AppleAssault en ce début d'année 2012. J'ai enfin intégré les "berrybats" dans le jeu. Si vous aviez fini par faire le tour du jeu de 2010, autant vous prévenir tout de suite: vous allez faire une rechute!

A priori, le principe est toujours le même: assommez les pommes en leur sautant dessus, puis expédiez-les hors de l'arène d'un bon coup de poing. Ouaip. Sauf que maintenant, si vous passez trop de temps sans dégommer de pomme, une chauve-berrie (berrybat) viendra vous tirer les oreilles. Oh, bien sûr, vous parviendrez sans doute à vous en défaire, mais il en viendra alors encore et encore, de plus en plus vite. Jusqu'à ce que vous vous décidiez à vous concentrer sur la mission première: virer les pommes.

Prêts ? Moteur ... et .... Action!

Oh, and btw, make sure you're voting for the "success" of the new features in the side panel if you've played to v1.4 as well ;)

Sunday, January 01, 2012

Happy New Year !


En guise de carte de voeux, une "fractale du temps" de toutes les "releases" de mon projet sur DS depuis 2006. J'espère la compléter dans le courant du mois avec les "choix stratégiques" sur le moteur de jeu, etc.


Maybe a fractal timeline is too geeky for my audience, but at least, it allows me to tile all the downloadable material released on this blog since 2006. Let's pretend it's my new year's wishes card for 2012

Sunday, November 27, 2011

Level Editor for DS : 0.1

Nous y voilà enfin: mon éditeur de niveaux disponible au téléchargement, avec les bugs corrigés, même si l'interface reste assez expérimentale. Avec en prime deux tilesets Creative Common pour vos petits tests: "generic.spr" par Surt (CC-BY-SA) et "frogatto-dirt.spr" (CC0) par Guido Bos. Amusez-vous bien, les tifous: la version française du tutoriel est en construction sur le fil "dev-fr". Huzzah! At last, you've got it. My long-delayed Level Editor for Nintendo DS (LEDS) is at last available for download with some sample tilesets to toy with ^_^. Thanks fly to Surt and Guido Bos for releasing their game art under creative-common license on OpenGameArt. The software is still a bit rough on the angles, so make sure you've got the tutorial page displayed on some screen when you'll use it for the first time(s)... and now ...

Go create!
Features that I still wish to see appearing in a future release (check back this post for UI mock-up):
  • [hint] provide a way to change "type of tile" when editing the meta-layer, without requiring on-map display. (we have the whole ABXY buttons disabled in that mode, right ?)
  • flipped tiles that also work in "copy" mode
  • area manipulation (overlays?)
  • map size edition (crop, extend)
  • map sketching (zoomed-out drawing)
  • map radar widget
  • multi-palette support on the BG layer (needs SEDS coordination)
  • [done] more robust monster edition mode.
  • wizard for .cmd file generation
  • use the ARGV protocol to quick-load a map from runMe *at a specific position*.

Monday, November 14, 2011

meta_buttons_shown=false

Comme je devais tester une imprimante, ce week-end, je me suis imprimé quelques fichiers sources de l'éditeur de niveau, histoire de comprendre d'où vient le comportement erratique des "meta-buttons", cette petite palette en haut à droite de l'image qui permet d'indiquer quelle portion d'un niveau est solide, où sont les pentes, etc. Pour pouvoir éditer les "arènes" d'Apple Assault, je les avais rendus "escamotables", mais c'est loin d'être un succès. Ils donnent l'impression d'être actifs ou non indépendamment du fait qu'ils soient visibles ou non. Malheureusement, le Level Editor est aussi le dernier outil qui n'a pas encore été "porté" pour la nouvelle release du devkitpro. Du boulot en perspective, comme la réactivation de la lecture des répertoires, les nouveaux mécanismes pour initialiser la console, etc.

  • loadNDS_Vram turns into runNdsFile : http://dsgametools.svn.sourceforge.net/viewvc/dsgametools/trunk/SpriteEditor/source/main.cpp?r1=617&r2=824
  • convert to the new console system : http://dsgametools.svn.sourceforge.net/viewvc/dsgametools/trunk/runMe/arm9/source/main.cpp?r1=735&r2=750
at least those two must be done and checked before I can start fixing the huge mess that appeared on the Level Editor user interface when I tried to make the "meta-buttons" a pop-up widget... Yes, LEDS is the latest of my tools that has not received a revision since I switched to "devkitpro 32" ...

edit: done... maybe ?

Sunday, October 09, 2011

Apple Assault fait mouche

J'étais donc dans le Zurich-Bruxelles le week-end dernier. Presqu'une journée entière, en fait. Après quelques tentatives d'encrage du Bilou's Book abandonnées pour cause de virages un peu plus serrés que prévus, je déplie mon PC pour tenter de mettre en oeuvre les modifications du moteur de collisions dont j'ai parlé ces derniers jours... de mémoire, vu que si la SNCF a équipé son Vauban(?) de prises de courants depuis 2008, je n'ai toujours pas d'abonnement wifi-dans-le-train :P

C'est alors que débarquent Lucius, Harry et Ron qui viennent squatter "ma" banquette. Pendant que Lucius et Ron se chamaillent à coup d'iPhone, Harry tente désespérément de faire son devoir d'arithmancie. Il pose à ses camarades une question du genre "si, tu sais, t'as une droite ou un point et tu dois refaire un point ou une droite ...". Au bout de 2 minutes, je risque "symétrie", histoire d'avoir la paix. C'était bien ça. Ron, assis à côté de moi, semble impressionné, et me demande "c'est quoi mon métier". "Informaticien", que je réponds. "C'est vos e-mails", demande-t-il en voyant la fenêtre Xemacs. "Non", que je réponds, "c'est du code. Du C++. C'est mon moteur de jeu". Il n'a pas immédiatement relevé, mais au bout de 10 minutes de questions, je finis par lui sortir ma DS, lancer la dernière version de Apple Assault et je lui mets la console entre les mains. "Voilà: c'est le jeu que j'ai fait l'an dernier avec mon moteur de jeu. Maintenant j'essaie de l'améliorer pour pouvoir faire d'autres jeux".

Imagine, Ron, Lucius Draco and Harry in regular clothes, coming in your train and sitting next to you while you're coding upgrade to your collision engine. Ron was so curious about my job (since I was able to hint Harry on his math homework), and what is "code" for, what does a "game engine" do, en so on ... I finally picked up my DS in my bag and claimed. "Look, that's the video game I made last year with the code I'm updating now".

It merely took him some gameplay tips to start enjoying the game to the point Lucius couldn't resist to stand up and check what was going on. Both were previously toying with their iPhones, but Ron never complained about Apple Assault to be flat, old-school, odd or boring or whatever. He enjoyed it the same way I enjoyed Bomb Jack at his age... And when he handled me my DS back at his end station, he said "Informatics, that rulez!" -- "Yeah, I replied, but then you need to listen to your math and physics teacher well ;)"


Il lui a fallu quelques petits conseils pour pouvoir passer le premier niveau ("Waaaa, mortel!"), mais ensuite, le voilà lancé, posant ça et là des questions du genre "c'est vous qu'avez fait les pixels?" ou "on peut faire un jeu comme ça tout seul ?". Harry bougonne et continue son devoir, mais Lucius tend de plus en plus l'oeil par-dessus la console et finit par faire le tour pour s'asseoir sur l'accoudoir :) Ron ne me rendra la console qu'au moment de descendre du train, avec pour conclusion "C'est trop cool, informaticien !".
"Ouaip", que je réponds, "mais il faut bien bosser ses maths et sa physique".

quick gameplay note: despite my repeated suggestions that pressing (A) again while bouncing on ennemies would build up punch power faster, neither Ron, nor my colleague (and WP leader) Maugrey seemed to look at using that technique. As a result, they mostly had access to small-punch with limited range and efficience. Shooting a shuriken or doing a "big-punch" almost never occured during their game. When building levels further, bouncing on ennemies to reach a goal should be a refinement, not a basic feature to reach the level's exit.

Wednesday, June 29, 2011

Goro mode activated

There are still a few things that are unpolished, such as (sprite-based) widgets that remain sticky between the FileWindow and the AnimWindow ... or whose state isn't coherent among the two. But at least, the basic feature is there: you can expand your "character" and give him more limbs if needed. Look at this 4-handed Mr. Egg, for instance. Isn't he wonderfully promising of future fun ?

Bin ça n'aura pas été une semaine très causante, sur ce blog, hein ? Que voulez-vous, c'est qu'en-dehors des "grands travaux", il y a parfois une série de petites choses ingrates qui n'ont droit qu'à une ligne dans une todo-list et une autre ligne lors de leur commit SVN. Mais ce coup-ci, les epsilon se sont additionnés suffisamment pour devenir un delta: je peux (enfin) modifier la "structure" de mes personnages (le nombre de sprites utilisés, les pages parmi lesquelles choisir les images et l'image de référence) depuis l'application DS elle-même. Il reste encore pas mal de nettoyage à faire pour éliminer les incohérences de l'application, bien sûr ... mais on a fait un bon pas en avant.

On s'approche déjà de la release 0.3 ... bonne chose.

  • [bugfix] : la "petite main" réapparaît quand je sélectionne qqch dans la spritetable de droite, AnimWindow
  • [bugfix partiel] : si je réouvre une animation 2-mains, elle est "promue" animation 3-mains-3-pieds :P
  • [now] : si je sauve par START+R+R, l'animation en cours n'est pas réécrite dans la feuille d'animations avant la sauvegarde (et donc pas sauvée).