Thursday, March 29, 2007

I'm glad i dropped MSVC++ long time ago

Oh boy! Just when i thought they couldn't screw things more than they've already did.

A friend of mine is just trying to compile something like

thefile = fopen("my-file","r");
if (thefile != NULL) printf("did it ^_^\n");

and there, he gets a warning message from MSVC IDE (no idea which version) about "fopen" being deprecated. For security purpose, or so says the msdn.

"I beg you pardon? i thought fopen() was part of a _standard_ library ?" well, all MS coders are now supposed to write code using fopen_s and strcpy_s (which happens to look very much like strncpy(), but maybe that one wasn't standard enough to redmon's tastes).

"We are the blorg" they replied "resistance is futile". Then i turned back at my friends and shouted "run! run for your lives!"

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

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.

Wednesday, March 21, 2007

Tiens, tiens ...

J'ai envie d'en rajouter une couche sur Prehistorik 2... Un jeu assez intriguant sur bien des rapports, et que j'ai envie de qualifier de "démo la plus impressionnante pour un jeu de plateforme sous DOS". Car il faut bien l'avouer, avec ses 15 niveaux tout mouillé, Prehistorik 2 est loin d'un rayman du point de vue de la longueur du jeu ... Et pourtant, les niveaux sont souvent d'une densité et d'une originalité qui fait défaut à bon nombre de jeux console.

Coté musique, rien à redire. Des mods multi-voix rendus en temps-réel, c'est à peu près ce que l'on pouvait faire de mieux à l'époque. Elles collent bien au jeu sans être trop gourmandes en ressources. Côté graphisme, je voulais vous mettre Prehistorik 1 (à droite) et 2 (à gauche) côte à côte. J'ai joué au deux des semaines entières, et je n'avais jamais remarqué que le décor du premier niveau avait tout simplement été repris de l'un à l'autre! C'est dire si l'animation des monstres en tout genres faisait la différence! Et pourtant, en jetant un oeil à la planche de sprites, on ne peut être qu'étonné par le faible nombre d'images qui ont été utilisées pour obtenir ce résultat. C'est bien simple: alors que pas un bonus ne reste fixe, la plupart ne dispose que d'une seule frame, que l'on a simplement fait rebondir.

source: snes-classics.blogspot.com Si je dis que le jeu fait figure de démo, c'est parce que depuis, j'ai eu l'occasion de tester la version SNES/GBA (cf image à gauche). Beaucoup plus colorée, avec des personnages qui tiennent plus du dessin animé que du sprite de jeu vidéo (ce que beaucoup prendront pour un avantage, j'en conviens) et plus rallongée. L'ensemble a subi une sorte de refonte scénaristique typique de chez nintendo, et on voit débarquer l'ancien du village (et sa fille), le forgeron-qui-fait-des-armes, l'inventeur-génial qui vous trouve de nouveaux moyens de déplacements tous plus farfelus les uns que les autres (pas loin de 4 en tout, si j'ai bonne mémoire, du pogo-stick au monocycle en pierre digne des pierrafeux) mais quelque-part, ça sent le prémaché ... Le "mass consumption" où il n'y a plus aucun clin-d'oeil au monde des jeux vidéo et où l'originalité du premier jeux (les passages secrets et téléporteurs) ont presque complètement disparus au profits de niveaux plus longs, mais aussi un peu insipides.

En revanche, on a droit à l'habituelle débauche d'effets (feu, lave, flotte, etc) que permet le hardware des console. C'est un peu curieux comme résultat. Comme si les joueurs de consoles étaient obligatoirement des gens avec lesquels on ne peut pas se permettre le moindre écart dans le gameplay traditionnel. Un autre exemple? Dans PH2-PC, chaque niveau comportait trois élément principaux: la sortie (un gros feu-rouge), un briquet géant qui permet d'allumer la marmite dans laquelle vous allez faire une méga-soupe avec toute la bouffe récoltée (indispensable pour que la sortie soit activée) et le code qui permet de reprendre le jeu depuis ce niveau.

http://prehistorik.milichovsky.com/img/sv.gifBin côté console, il n'en reste pas grand-chose. Exit les feux-rouges et une bestiole bizarre les remplace comme point de sauvegarde. Un peu comme si tout anachronisme aurait nuit au jeu alors que ça faisait son charme. On vous explique bien par-ci par-là que "groumpf! pour faire ton delta-plane, il me faut absolument de la peau de lion tacheté" et que "groarf. Je t'ai fait une nouvelle hache tu en auras besoin pour les bêtes plus coriaces".

A la place le joueur PC voyait juste la hache (ou le super-marteau) en question se balancer dans les airs. Ne vous tracassez pas que l'on comprenait aussi bien et que le fun était quand-même au rendez-vous quand tout le sol tremblait au son du "Breum!" gigantesque de ce marteau démesuré...

(images de www.abandonia.com/games/en/4/Prehistorik2.htm et prehistorik.milichovsky.com/zmeny.htm)

Tuesday, March 20, 2007

Les Secrets de Titus

Je suis tombé sur deux mines d'or: http://ttf.mine.nu/ (le fan club de Titus the Fox) et http://pre2.mine.nu/ (le fan club de Prehistorik 2)

"Titus Interactive was a long-running French software publisher that produced games for various formats over its lifetime." Voilà ce que Wikipedia nous apprend sur Titus, la société qui a écrit et produit Prehistorik, Titus the Fox (aka Moktar), et bien d'autres. Pour moi, Titus Interactive, c'est tout une époque... Les jeux DOS à la limite de l'impossible, bourré de bonus cachés, de monstres vicieux à côté desquels les Blôrks affrontés par le barbare de Kid Paddle font figure d'enfants de choeur en barboteuse rose à fleurs!


Titus interactive, ce sont des heures et des heures passées chez Alain Gillon ou Vivien Vanoirbeek à chercher après la caisse qu'on allait bien pouvoir balancer sur ce pocheron-lanceur-de-fléchette qui nous barrait la route tout en évitant les bouledogues survitaminés et les poubelles farceuses.


Titus Interactive, ce sont encore plus d'heures à fouiller le niveau à la recherche de cette porte cachée (comprenez: un emplacement quelconque dans le jeu où vous allez être téléporté vers un nouvel endroit à condition de rester "accroupi" 3 secondes), et de stress intense quand enfin apparaît la lampe magique (si, si) ou l'item généralement quelconque révélateur du code hexa qui permettra de reprendre depuis le niveau en question, dans un univers où les sauvegarde dans les jeux vidéo n'existaient que pour les aventures "pointer/cliquer".

Titus Interactive, enfin, c'est la migraine garantie quand on rentrait chez soi les doigts en feu, surexcité, et ayant passé toutes les heures sus-mentionnées à subir un scrolling brutal (genre "page down" dans firefox) chaque fois que le personnage s'approchait un peu trop du bord de l'écran... et quelques claviers dont la barre d'espace a été rendue complètement inutilisable.

Grand merci, donc, à Jesses pour ses deux sites en or... Et à tous les employés de Titus Interactive qui ont participé à nos rêves de gosses au dépend de leur salaire (j'espère qu'ils s'en sont sorti plus tard, et s'ils veulent un taré pour porter tout ça sur DS, je signe dès l'année prochaine -- peut-être)

I am somehow nostalgic towards that era where "gameplay" and "level design" were words you never needed when talking about a video game. It was the era of DOS games, when designers knew the game's lifetime is inversly proportionnal to the character's lifetime -- the era of Titus Interactive.

Relaying on our neighbours' keyboard, we were trying to duck foes' shots, hunting for hours the throwable crate that we could use to dispatch the next grumpy and vicious monster that was blocking us on the path to the HEX code that we could use to restart our quest at the same level. Then other hours were wasted searching for "hidden doors" that would give us the additional lifepoint we were missing to reach the end of the level ... once we found it :P

We then came back at home for dinner, with our mum asking what we did to get such headaches (if only she knew how basic scrolling was!) and how on earth we could be that excited ... Thanks Jesses for your goldmine websites ... and thank you, all dev'ers at Titus Interactive who built our dreams at the expense of your salary.

Sunday, March 18, 2007

Great Giana DS

L'annonce sur Drunker Coders m'a épaté. Après "Rick Dangerous", c'est "Great Giana Sisters" qui déboule sur la nintendo DS. Que tous ceux qui ont un jour eu une ame d'enfant et un commodore se ruent sur ce titre-culte! Des heures de fun portable garanti.

Giana, c'est le bras de fer entre le géant nippon et une bande de programmeurs de garage qui se sont vu interdire la vente de ce qui reste pour nombre d'entre nous _le_ jeu numéro 1 sur micro. Même s'il faudrait être aveugle pour ne pas remarquer l'énorme repompage sur Super Mario Bros., Giana bénéficie d'un gameplay propre, introduisant plus de variété dans les tirs (rebondissant sur les murs, à tête chercheuse, etc.), dans les obstacles (plateformes mortelles, ascenceurs, passerelles qui s'effacent quand vous marchez dessus, feu, etc).

Même si les niveaux 1 et 2 font figure de clin d'oeil énorme à SMB1, les auteurs du jeu n'en sont pas resté à un "bête plagiat": dès le niveau 3, ceux qui croyait que leur casquette et leurs moustaches allaient les tirer d'affaire dans ce monde dépourvu de carapace de tortues en seront pour leurs frais. De nombreux passages nécessitent une maitrise parfaite du saut, par exemple pour sauter d'un tuyau enflammé à l'autre, et une connaissance non moins parfaite du déplacement de certains vicieux ennemis qui vous tueront la-même où vous vous croyiez en sécurité!

Oh, et pour info: ne cherchez pas de 1UP. Pas de ça ici. Vous voulez une vie sup'? ramassez 100 diamants sans mourir. Point-barre.

Rick Dangerous was on of the first homebrew port i put on my DS. It kept me entertained for several hours. Today i found and installed Giana Sister (which -afaik- hasn't been announced on Drunken Coders), which promise hours and hours of portable fun: the soundtrack, the gameplay, the colors... The game is the exact one we had on the C64.

Giana Sister, this is also the duel of the Japanese Giant vs. some german lads in their garage who dared to release a jump/run game stating "brothers are history!" on the cover. And if you ask me, it's a shame the game has been withdrawn as it is one of the best side-scroller game ever on the commodore. Okay, i have to admit: the first two levels are a lame rip-off of SMB1, but as soon as you get to level 3 (which will require you some skill nonetheless), you'll meet the true giana sister experience! Flaming pipes, deathly disappearing platforms, and vicious foes. Watch your steps, tune your jumps and learn quickly.

Beside the absence of koopa shells, you will also notice that there is no such thing like a "1UP mushroom" in Giana Sister, but several flavour of shots (homing shot, bouncing shot, blast-them-all, etc). You want an extra life? grab as much diamonds as you can. period.

So you own a homebrew-ready DS and found New Super Mario Bros. damn too easy ? No problemo: Giana Sister DS will keep you happy for longer that you've thought.

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.