Showing posts with label music. Show all posts
Showing posts with label music. Show all posts

Tuesday, April 02, 2024

Show and Birthday

It's been 10 years I've swapped jobs. It's been 10 years and yet most of my colleagues had never seen my little DS games. Working as a software developer makes it a bit harder to show hobby software to colleagues. Few of them know this blog, and those who do do mostly because of their intervention on the cxx or rongtudju categories. Most know I'm drawing things because I had some of my drawings displayed on the wall before we move to the new building.

And then a new batch of colleague joined, including one who's been doing a Flappy Bird clone on FPGA for a school assignment. They are the same generation as my S-team beta-testers, so I decided to pick my DS along at one social event, showed it to the young team... not much more than AnimEditor, but they were quite smiley about it. I did not have any ready-to-run playable demo on the device, though, and the cheese pot came in ...

That was a few months ago. Two weeks ago, I was visiting Ged's place. I clearly couldn't get there without my latest demo in my pocket. Well, not quite that version. The 'ongoing work' one, with a different tune for every world, but still needing fixes every here and there. He did enjoy it, though, and his 8-year-old son did enjoy some not-too-old version of SchoolRush. I've been told that it is a shame we can no longer catch the highest apples on the green zone, though.

Then there was my birthday, alone until 13:00 where Cyril came and play some Donkey Kong Tropical Freeze ... and check the latest progress on Bilou. And I knew I'd bring some "cookies" at the office the day after. I typically prefer to make it so people can come and meet me at the coffee machine rather than just drop the stuff and disappear... So I decided it was about time to show them Bilou as well. 

Most of my team were pleased to give a look at the game, a few of them played either 3-Rooms (.nds) or School Rush, and among those who did, none found it obvious that GRAB is GRAB instead of PUNCH. I might want to do something about that before I make a release of DreamLand... A few colleague actually tried to beat level 1 of School Rush and one even managed to reach level 2.

In other teams, there were of course some colleagues to find it odd that I do that with a Nintendo DS rather than going for Androïd or Nintendo Switch. The recent court face-off between Big N and the team behind 3DS and Switch emulators doesn't really speak in favour of retro-homebrew approach ...

Final round was yesterday with my even-younger-nephews who wanted to try 3-Rooms after I shown it to my brother for music selection approval. Last but not least, that triggered a question from the 15-y-o Tango nephew who was curious to know where he could download the tools I used to build the demo and asked whether programming was required to create new characters.

Friday, November 27, 2020

4U2

 C'est un groove dont je ne me lasse pas, même s'il a plus de 10 ans maintenant. Mon frangin a écrit "4U2" à une période où on avait la SNES et Donkey Kong à la maison, et pour ma part, ses roulements de percu m'invitent à sauter d'arbre en arbre aussi.

Et comme j'ai plus trop l'âge pour ce genre d'exercice, j'ai furieusement envie de filer le rôle à Bilou, ce thème viendrait alors compléter "little flower on the grass" pour illustrer musicalement la Green Zone.

Mon frère le présente comme un morceau 16 pistes (que j'avais ramené sur 6 pistes à l'époque de mon player SoundBlaster), mais vérifications faites, on pourrait le ramener à 13 pistes + 3 pistes libres pour les effets sonores. Il est un peu gros (611K), mais il y a un sample de synthé qui fait plus de 290K et qui ne demande qu'à être loopé (on en passe d'ailleurs jamais la moitié pendant le replay). Il y a aussi pas mal de sons de drums'n'bass qui se terminent par du quasi-silence et qui pourraient aussi être raccourcis/loopés/finalisés à coup d'enveloppe.

Il lui reste un dernier défaut: il est fort répétitif. On a 2 patterns qui tournent en boucle pendant pas loin de 2 minutes, avec un instrument de percu qui arrive au bout de 40'. Puis on coupe un peu la rythmique, puis on la remet. etc. ça manque d'une p'tite mélodie, et les syntés qui arrivent pour doubler le 'marimba' à 2 minutes ne relève pas vraiment le niveau. Les 2 mesures de piano "façon planer n'est pas jouer" sont très chouettes mais trop courtes elles aussi.

Bref, il faudrait trouver un thème sympa (1er monde) à jouer p.ex. à la flute de pan. Mais je n'ai encore rien à proposer pour l'instant.

Sunday, March 01, 2020

Top 100 Video Game Music

Last December, my brother finally released his top-100 chart of video game music. It took me a few days to understand his process: although he names one track per game he lists, we shouldn't consider it is a video game tracks chart. He's really trying to compare full OSTs to one another.

That was a lot of things to check at once, especially since there are games in this chart I had never played, and was aware of their music only through overclocked remixes. So I started a twitter thread, commenting one track a day, bottom up. And there are many points where we apparently disagree. (of course, the fact that we start with the soundtrack for Fury of the Furries out of the top 100 didn't help).


En décembre dernier, mon frangin nous a sorti son top-100 des musiques de jeu vidéo. Projet ambitieux et longtemps maturé puisqu'il ne s'agit d'un classement piste-par-piste, mais bien jeu par jeu. Comprenez par là que quand il met "Introduction de Dune" en 30ème position, c'est tout l'OST de Dune qui est repris: Chani's Eyes, Morning, etc. mais qu'on nous propose un 'aperçu' de l'OST à travers la musique d'introduction. Et moi, pour me rendre compte si j'étais ou non d'accord avec son tri, j'ai repris une musique par jour sur twitter. Du bas vers le sommet. Demain, on attaque le top 10.

Mais plus j'avançais, plus je me rendais compte que j'avais un problème avec la façon de faire "intuitive" de mon frère. D'une certaine façon, un top-100, c'est pour moi le résultat d'un tri à l'aide d'une fonction d'évaluation entre les objets. Si Super Mario World se retrouve devant new Super Mario Bros, il doit y avoir moyen de dire pourquoi. Un certain nombre de "qualités" de la musique doivent pouvoir être dégagées (qualité des instruments utilisés, richesse des accompagnements, "personnalité"  de la mélodie) et une musique ne pourra être proclamée meilleure qu'une autre que si elle se montre meilleure sur un nombre suffisant de ces qualités. Ensuite, un jeu ne pourra être proclamé meilleur qu'un autre que si un nombre suffisant de ses musiques sont jugée meilleures que les musiques de l'autre.

Au final, ça nous permettrait de test un challenger (disons Céleste ?) par rapport à la collection actuelle avec un nombre raisonnable de "matchs" entre les jeux.

As I progressed towards #50, one thing turned obvious: my brother and I do not approach making charts the same way. Not to say that his way is bad. And neither of us do that through statistics. I figured out I see charts as the result of a sorting process. Being a "computer scientist", I know that sorting implies we have a comparison function that is capable of telling which of two items is the greatest. If items have multiple dimensions, it relies on simpler functions applied to their constitutents (e.g. comparing their catchiness and the quality of their instruments separatedly), then combining those things together - either through priorities or through weights - to get a final comparison result.

I also know that if I have a pre-sorted list and a new challenger, I should be able to find its rank with a fairly small amount of comparisons (log2 N, to be precise) to existing items (that number would be about 7 per challenger in a top-100). That in turn implies that such comparison should work for items we pretend to be sorted.


Les jeux retenus par mon frère sont assez variés, aussi bien en styles (RPG, shoot'em'up, sandbox, plate-forme, horror shooter, point-n-click) qu'en plate-formes (on va du C64 à la Switch). Le premier problème du coup, c'est qu'au fil des années, la taille des OSTs n'a cessé de croître. Comment comparer Warhawk et son excellent thème (mais unique piste) avec les 10 pistes de Lotus II ou les 52 pistes de Skyrim ? C'est d'autant plus délicat que dans les jeux modernes, on a souvent beaucoup de remplissage dans la bande son. Des pistes avec un solo instrumental pour présenter un NPC ou une ambiance de fond pour les landes perdues qui auraient vite fait de 'plomber' le jeu.

Pour pouvoir faire un match entre 2 jeux sur la durée d'une pause café au plus, je pense que chaque jeu devrait être représenté par un petit nombre de "championnes" disons 3 pistes (5 au grand maximum et on évitera les nombres pairs). L'idée est que si un jeu A parvient à avoir une meilleure piste pour chacune des championnes du jeu B, alors le jeu A est déclaré vaincqueur, et on accepte par principe le fait qu'aucune autre piste du jeu B n'aurait pu le sauver -- sinon, elle aurait dû faire partie des championnes. On peut très bien imaginer qu'une des championnes de A explose toutes les championnes de B ou que chacune des championnes de B a trouvé une championne de A qui la déclasse spécifiquement.

Se ramener à une poignée de musiques plutôt qu'à une seule évite d'avoir ratatiné tous les shoot-em-up avec un titre péchu (la jungle de DK) pour se faire étaler par le premier JRPG venu et son thème-requiem-du-NPC-perdu si poignant. Un jeu à la BO variée (à mon avis c'est un plus) pourrait donc avoir plus de chance de grimper vers les sommets qu'un titre très mono-thématique.

The first thing that doesn't quite work with my brother's top-100 is that we do not know what to compare. He names only one track per game, but considers many other should be taken into account. He has games with only one track (let's say warhawk), some with a few dozen (say a regular SNES platformer), and some with so many hours of soundtrack that you cannot decently hear them all (yes, you JRPG). Moreover, the longest the soundtrack, the more likely you are to see it filled with uninteresting 'NPC solo themes' or ambiant tracks of 10 minutes that hardly feature 30 seconds of true "music" (yes, you, Rayman II).

I would suggest instead that for every game, we pick at most 3 tunes that will be the 'champion' for that game. If none of those tunes manage to beat the tunes of a challenger game, we could pretty much assume that none of the OST would be on par. The selection should be made carefully, but I believe it can accomodate for more sophisticated stories with different kind of emotions, where we need a beautiful-and-quite tune to face JRPGs, a dynamic tune to face Megaman and an epic tune to face hack-and-slash, if any. In Link to the past, that trio would likely be (Overworld, Darkworld, fairy fountain). When comparing two games, we would make at most 3 matches, track-vs-track. The game that won most matches is claimed better than the game who lost them.


La deuxième règle serait de se limiter aux musiques de jeu vidéo, pas à l'OST tout entière. On ne prendrait donc pas en compte les effets sonores ou le doublage des personnages quand on compare deux titres. Je pense aussi qu'on devrait mettre de côté les ambiances sonores non-musicales. Il nous faut quelque-chose à base de notes qui peuvent être jouées sur des instruments. Sans aller jusqu'à dire qu'on devrait faire comme si les sons de vents et de gouttes qui tombent dans les grottes doivent être filtrées avant le match, mais quelque chose qui est constitué presqu'exclusivement de sifflement de vent, de craquements, de chuchotements avec à l'occasion quelques notes de violon dissonnantes qui durent si longtemps qu'on arriverait pas à les chanter ... bin, laissons ça de côté. Que le jeu se choisisse des championnes qui sont de vraies musiques, et s'il en est incapable, qu'il reste en-dehors du concours.

Troisièment, la musique doit faire partie du jeu. Peu importe qu'elle soit sur l'écran titre, dans un niveau, un menu ou les crédits de fin, mais elle ne peut pas être sur un CD vendu à côté du jeu avec des versions remasterisées ou une vidéo de bande-annonce. S'il y a eu plusieurs éditions du jeu, on devrait choisir une seule édition qui semble la meilleure pour y pêcher les championnes, et toutes les autres éditions sont hors-concours.

Je pense aussi qu'on devrait déclarer hors-concours toutes les musiques qui ont été reprises dans un jeu mais qui viennent en réalité d'ailleurs. Que ce soit un titre de JMJ dans loco 64, un groupe pop dans Xenon Megablast, JS Bach revisité dans Gyruss ou la bande son du film Star Wars: tout ça n'a rien à faire dans le top 100 des musiques de jeu: ils ont déjà leur propre championnat. Que les jeux concernés se choisissent d'autres championnes ou qu'ils se taisent à jamais.

Second thing, I'd like it to be a video game music chart, not a sound track chart. That means the quality of the sound effects, the voice acting is not taken into account when comparing two games. That also means that ambient moods in the OST are automatically dismissed. It has to be music, that is, instruments playing notes. Some ambiant, non-instrument sounds are accepted, but they cannot be the main part of the track. That mean it would be very tricky to find three "tracks" for games such as HoB, despite it has a very long soundtrack. It means if you want to convey fear of anxiety, you have to do it through notes, not through whispers, cracks and windblows with occasional dissonant violin notes that last for so long that you couldn't even sing a note that long.

Third thing, although it's the most obvious, tunes that are considered must be part of the game. They may be title songs, in-game music, staff roll, soundtracks for cinematics, but they cannot be tracks on a promotional audio CD, remasters or clips from video teasers. At least, my brother and I seem to agree on that. If there have been re-editions of the game (or multiple editions with different soundtracks), we are free to pick either edition we believe the best (is it SMB or SMB-as-in-all-stars, or SMB-tune-as-in-melee), but it can only enter once. And we should use the same edition for all the matches the game does. It should be original composition, too. Covers of Jean-Michel Jarre in Loco 64, of Sky playing J.S. Bach in Gyruss and the pop band sampled for Xenon Megablast are ruled out. If a game features a mix of original composition and imports from non-video-games (e.g. a Star Wars game), only original compositions may be champions for the game.


Enfin, je crois que l'on doit faire abstraction de tout ce qui n'est pas musique et expérience d'entendre la musique pendant le jeu. Que le jeu ait un gameplay pourri et qu'on ne l'ait utilisé que comme un juke box ? pas d'importance. Qui a contribué à la musique ? pas d'importance. Il a fait un bide au niveau des ventes pour Dieu-sait-quelles-raisons? aucune espèce d'importance. Il n'a jamais été disponible qu'en téléchargment gratuit et jamais dans un catalogue commercial ? pas d'importance. Par contre, le jeu doit être un vrai jeu. Pas de démo jouable qui n'a pas d'objectif. Pas de vaporware dont la bande son existe mais le jeu n'a jamais été disponible.

Finally, we should abstract from everything that is not the music, and the experience of enjoying the music while playing the game. A game with terrible gameplay but great music should be able to enter the top 100, even if we say "yeah, I never played further than level 1 in XXX, but I loved to launch the game, just to listen to musics in the secret juke box screen". Who did them ? Was the game a commercial success or an obscure title released while official support for the console had been dropped ? Was it a free-to-download game that never received a commercial release ? That doesn't matter. That must not matter. But it may not be a cancelled game that nobody could complete because it isn't finished. It may not be a demo. (Sorry, basket island: that means you cannot enter).

Sunday, November 14, 2010

Bleeps and Bloops...

Je dois avoir découvert Donkey Kong Country II chez un gamin en '96 ou '97, qui m'avais demandé de lui passer un de ces niveaux au-dessus de la lave dans le Chaudron du Croco. Le jeu m'avait fait une forte impression et je sais l'avoir fini sur SNES avant de me lancer dans la chasse au 103% avec ZSNES. Mon frère l'ayant dégotté en GBA -- alors qu'il n'a jamais été très Donkey --, je lui chippe une petite semaine. Hélas, le portage n'est pas à la hauteur de l'original: son "rabotté" qui sonne "début des années 90 sur Amiga" et des graphismes curieusement pauvres en couleurs ... Le gameplay semble être resté assez bien le même, mais garder le bouton 'B' enfoncé pendant tout un niveau se révèle pénible sur DS lite avec mes paluches d'adulte. Déçu, donc, mais intrigué de savoir pourquoi Captain N a ainsi décidé de massacrer un chef-d'oeuvre d'immersion sensorielle pour le faire tenir sur une console près de 10 ans après sa sortie sur SNES ... Voilà ce que j'ai trouvé au niveau du son.

My brother dug two GBA cartridges that we tested last week-end : Donkey Kong Country 2 and Super Mario World -- two major SNES hits that were converted to "prime" the new console. Both turned out to be fairly disappointing, esp. DKC2 that sounds and look like a cheap clone. This post collects pointers to the audio specs of the original Game Boy, the Gameboy Advance and the Super NES in an attempt to explain why the "cool sound" of the SNES couldn't be retrieved and why the SNES tunes usually sound more like MIDI than like tracked music, although the hardware 'looks' tracking-compatible.

Game Boy :

2 square waves, 1 programmable 32-sample 4-bit PCM wave, 1 white noise, and one audio input from the cartridge.[25] The unit only has one speaker, but headphones provide stereo sound (for further information, see Game Boy music)


En clair, au niveau rhytmique, on est proche de ce que fait le beat-voxing: un son masque complètement le précédent. Et celui qui veut faire dire "Ghostbuster ... wha hahahaa !" a sa console doit reprogrammer à la volée le buffer de 16 bytes jusqu'à ce que l'ensemble du sample ait été joué. Oui, quand ils disent "32-sample", ils parlent bien de 32 bytes si le son avait été 8-bit, et de 16 bytes vu qu'on a que 4 bit par échantillon. Rien à voir donc avec le "sample" d'un soundtracker.
Autant dire que quand "Zelda: Link's awakening" nous chante une mouette qui passe, le "z80" ne doit pas être loin du 100% d'utilisation de ses 4MHz tout mouillés (en fait, non. La mouette est faite à coup de square waves, et pour le reste, c'est surtout la technique des wave tables qui est utilisée).

SNES et son SPC-700 -- une sorte de System-on-Chip intégrant un CPU de C64 (6502), des unités de conversion Analogique/Digital, de l'ADSR en hardware, lecture de samples à vitesse variable et mixage hardware pour 8 pistes. 64KB de RAM dédié au contrôle de tout ce petit monde (et aux samples, évidemment) grâce à un programme pour SPC qui aura été "uploadé" depuis le CPU principal de la console. Ca me rappelle un peu le tandem ARM7/ARM9 de la DS, mais en horriblement plus custom :P

GBA :
The GBA supplies four 'analogue' sound channels for Tone and Noise (mostly compatible to CGB sound), as well as two 'digital' sound channels (which can be used to replay 8bit DMA sample data).

La réalité me semble un peu plus tordue: deux canaux de "square wave à timbre programmable", avec enveloppe simplifiée (linéaire, quoi), et un de ces canaux est capable de "portamento" en hardware. On a un canal de bruit (canal#4) et un "chipsound programmable" similaire au canal 3 du bon vieux gameboy. A côté de ça, deux canaux jouent ce qui sort de la ROM (ou de la RAM si on veut faire un modplayer) à grand renfort de transfer DMA -- exactement comme une Sound Blaster 8 bit, donc. De quoi expliquer le "look" si particulier de la bande son de Zelda: Minish Cap qui mélange "sons gameboy" avec des strings orchestraux et des voix numérisées pour les personnages. Pour jouer un .MOD de 4 pistes sur cette console, il faudra faire le mixage et le traitement de la hauteur de la note entièrement en software sur le processeur ARM à 33MHz. Si c'est techniquement possible, on aura sans doute plus grand-chose comme puissance de calcul à dédier au jeu lui-même qui devient une sorte "d'annexe au modplayer" façon Crazy Brix. Il faut aussi rappeler que le GBA a relativement peu de RAM (32K, plus de la "EWRAM" à accès probablement plus lent, mais dont je n'ai pas saisi le rôle précis jusqu'ici), et que si le SPC de la SNES pouvait laisser la lecture des samples au hardware dédié, avec un mixage en software, ça passera forcément à travers le même bus que le reste des données...

I'm pretty sure you remember your good old 486 DX 33 and his soundblaster, right ? That computer had the guts to do software rendering of a multi-track sample-based tune, but still, 90% of the games you can find on any DOS museum site will use AdLib (or clone) for the background music. And for a good reason: doing software real-time mixing of the samples will consume a good deal of your CPU's power. Yet, that .MOD tune you're struggling to play was likely written on an Amiga 500 clocked at 8MHz -- but that had dedicated hardware for bending, shaping and mixing samples. The very same thing occured between GBA and SNES : the GBA inherited from the sound system of the original Game Boy and has a stereo DMA channel to stream something else -- including something that is mixed in real time -- where the SNES had a slower clock speed, but hardware sound mixing.

plein d'infos sur le son du GBC (sauf à quel point celà diffère du GB :P) On notera sur GB et GBC la présence d'une ligne "audio IN" de la cartouche vers la machine. Pas souvent utilisée commercialement, mais ça ouvre la possibilité de monter un soundchip ADlib sur une cartouche GBC pour se faire un remake ultime de Fury of the Furries ;)

Sunday, July 18, 2010

Synopsis reloaded

sm-IMG_1724 Voilà donc un exemple de "synopsis" ... le feu et l'eau ont trouvé leur place, idem pour la "castle zone", dont j'ai enfin trouvé les antagonistes. Il reste pas mal de zones "creuses", dont seul le nom est défini. "sky road, lost temple, hills top" etc. Mais globalement, l'exercice a étéfertile, et plus facilement exploitable que les "world maps" d'un ancien projet: "Rock Story"

So here's the first attempt on a synopsis. There are still many "placeholders", but fire, technical, water, sky, temple and stuff found their place. Last time I did such an attempt on "game design", it was for the "Rock Story" lost project, which my brother never found interesting. In some sense, the "willy-inspired" game map sounds like a better tool than Donkey Kong Country-inspired "world maps".

'Finding Map' by CyborgJeff related tune

Friday, June 18, 2010

Yoshi's Island -- la partoche

Argh. Je suis tout seul à la maison et il faut changer le lange de *deline ... Je m'embrouille ... Je pagaille ... elle se met à pleurer ... AAaargh ... cerveaucerveaucerveau ... bébé pleure. calmer bébé. yoshi. toum toum toulou toum.

C'est plus ou moins ce qui s'est produit il y a un peu moins d'un an de ça. Comme elle adorait, je me suis entrainer à le jouer à la guitare. Encore et encore. Comme Internet trouvait que s'était bien, je me suis décidé le week-end dernier à retranscrire mon arrangement. Have fun.



You've asked for it, you've got it now. My spanish guitar arrangement for Yoshi's Island theme. Have fun and enjoy

Tuesday, March 23, 2010

Apple Assault

A force de compter les moutons pour essayer de me rendormir cette nuit, ils ont fini par se transformer en Applemen ... et Bilou était assailli encore et encore. Et à chaque collision, mon écran de débug confirmait les zones et les testpoints. En rebondissant sur plusieurs applemen d'affilée, la barre de punch de Bilou augmentait, ce qui lui permettait des "finishing moves" assez dévastateurs.

It was another such night, where I just can't get no sleep. It is supposed to help if you count sheeps, and so did I ... until sheeps started turning into angry applemen. They were assaulting Bilou, again and again, and there was no hope to escape them. It was punish or perish. And by chaining bounces over applemen's "heads", Bilou was gaining more punching strength that let him release impressive "finishing moves".

Then the sound got clearer, as letters "R E A D Y" were falling from the sky, prompting me for another round. Small echoes set the rythm, until in a zaash! they zapped to the right, letting the action start again. It was the sound of my bro' String Tracking.

Puis sur un "dit dililit dut dut deut deut" les lettres "R E A D Y" tombait en rebondissant avant de partir en trombe vers la droite sur un "ch..ooOO()()WAh!" et la bande son enchaînait sur la version 6 pistes du "String Tracking" de mon frère.

Ca doit venir du cadeau que mon frère a choisi pour mon anniversaire, qui reprennait ce dessin destiné à Romain. A l'arrière plan, le côté "débordé par l'avalanche de monstres" m'avait servi à illustrer le principe de "Bilouh-lanta" lors du petit sondage de janvier. Titre peu accrocheur supposé indiquer qu'il s'agit en somme d'une opération survie. "Apple Rumble 2" aurait été sympa, mais confusionnant. Ce sera donc "Apple Assault". On verra bien qui de lui ou de "Nuts'n'Bolts" peut être réalisé en premier.

If you followed January's Poll on "what should be the next milestone", you may have identified the "Bilouh-lanta" study case ... Which is more likely to be renamed "Apple Assault". I can't tell yet whether i'll focus on this and come back to "Nuts'n'Bolts" afterwards or whether I'll honour your preferences and keep working on the not-so-obvious-to-code distant clone of Manic Miner. Only time will tell, I guess.

Thursday, September 03, 2009

Sound Effects

Bon, il est temps de faire du bruit. Voilà le bout de code de la libntxm qui traite les nouvelles notes lors de la lecture du pattern. Le reste du temps, le player se contente d'ajuster le volume et de traiter les effets définis par une "cell" (une case du pattern).

Pour pouvoir faire des effets sonores, il faudra en quelques sortes que j'appelle ce même code à la demande depuis le processeur ARM9, probablement en réutilisant la technique d'IPC qui a servi à indiquer que le module devait être lancé ou arrêté (cf. NTXM7::updateCommands et le fichier command7.cpp)

It's been roughly 1 year that my game engine is waiting for sound effects. Let's see how to proceed, and add them to the ARM7 NTXM player that is the core of sound playback on the DS. This post is a sort of "exploration mission" to see how i'll proceed with programming them.
Primo, if i want to issue sound effects, the first thing to do is to ensure that I can invoke the "playNote" function (and surrounding code) on request from the game engine running on ARM9 . The most likely approach will be to mimmic the IPC approach 0xtob used to instruct the ARM7 to start or stop playing the whole song.
Funny enough, all the "commands handling code" always look the same. PLAY_SAMPLE and PLAY_INST commands already exist (i guess 0xtob needed them for the nitrotracker), but the actual stubs are missing. On the other hand, the "proxy" functions at the ARM9 are already present in command9.cpp ; they just lack an API in ntxm9.cpp ...

It should be running in a couple of evenings. It's really a shame it took me so0o long to check it out. It sounds that most of the effort will be to make GobExpression invoke ntxm9::playNote(), after all.

Tss. Même après l'an 2000, tous ces codes de "gestion des commandes" se ressemblent. PLAY_SAMPLE et PLAY_INST existent déjà, j'ai même déjà struct PlayInstCommand. Ils ne sont juste pas encore implémentés, mais Oxtob a bien préparé le terrain, pas de doute. Eh bien on va y remédier.
Cerise sur le gateau: CommandPlayInst et CommandStopInst sont déjà là dans command9.cpp ... Il reste juste à ajouter ça à NTXM9 et à faire en sorte que ce soit appelable depuis le GameScript et confrères.

edit: okay. Ca marche. Les pommes font "bzing!" quand on les prend. Il a fallu un peu plus de code que prévu du côté du game engine: c'est la première fois qu'une GobExpression du script appelle du code C++ ;)

Monday, February 25, 2008

Zelda Sound Test

Tout a commencé par une archive que m'avait filé MinishLink : la bande son intégrale de Zelda : Phantom Hourglass. Du coup, je me suis lancé ce week-end dans une frénésie de downloads (principalement sur le très excellent sound-test.org), à grand renfort de plugin "flashgot" pour firefox d'ailleurs.

J'ai toujours trouvé les "autres" zeldas un peu faiblards côté musique par rapport à mon "Link's Awakening fétiche". Le décompte :

  • Zelda : Link to the Past : 30 thèmes, tous les donjons (ou presque) utilisent la même musique
  • Zelda : Link's Awakening : 80 pistes, dont 8 pour les donjons et 8 pour les instruments collectés à la fin de chaque donjon.
  • Zelda : Oracle of xxx : 40 pistes chacun. Il y a aussi une musique séparée pour chaque donjon.
  • Zelda : Occarina of Time : 80 pistes.
  • Zelda : The Minish Cap : 50 pistes
  • Zelda : Phantom Hourglass : près de 70 pistes, mais dont une dizaine servent d'introduction (des thèmes des premiers zeldas joués à 2 instruments)
Bon, la comparaison n'est pas très juste. Je devrais filtrer les pistes qui ne sont que des effets sonores (genre "il reste un trésor" ou "trouvé une petite clé" ...)

edit:
au niveau sonore, c'est la bande son de "Minish Cap" qui me plaît le plus ... Ce mélange "chip+midi" avec quelques samples et des ondes toutes simples pour les basses et le rythme donnent un style absolument unique et parfaitement adapté au jeu. Par contre, le son de la N64, bof bof. Il manque de pèche.
edit++: finalement, je retire les "oracle of xxx" de ma playlist ... Même s'il y a quelques thèmes sympas, je trouve qu'il y a sur-utilisation de square waves (et faire un chiptune tout en squarewave, bof.) ... Elles ne sont pas aussi agréables à écouter que celles de Link's Awakening (mais c'est peut-être dû aux émulateurs qui ont été utilisés pour rendre les .mp3 plus qu'au boulot des musiciens de la "zelda-team", of course).