However, with the toolset growing in features, hacking .spr files with an hex editor becomes tedious. A few weeks ago, I came up with two small tools -- sprsplit and
sprmerge
-- that can explode a .spr into one-file-per-chunk so that one could more easily e.g. replace a buggy animation with a sane one (from a previous file) without losing updates on the graphics themselves. Granted, a separate .anm file with the animations alone would have saved me the trouble :PBien: Bilou marche à gauche et à droite, escalade la règle, l'encre est animée et la "zone de collision principale" a fini de changer au moindre mouvement. Mis à part le côté 'bricolage' de la map et un nombre effrayant de messages de débug au démarrage, le niveau-test pour la school zone commence à devenir un brin plus propre. Dernier couac avant de m'intéresser de plus près aux "transanims": un à-coup dans la démarche de Bilou (alors que l'éditeur d'animation m'en fait un rendu parfaitement fluide ...)
Je sors donc un des petits outils développés dernièrement --
sprsplit
-- pour "éclater" le fichier .spr correspondant en 'blocs logiques' histoire de repérer plus aisément l'animation qui cloche. Ensuite, un nouveau petit outil -- dumpanim
-- va (enfin ;) me permettre de "décompiler" les commandes pour avoir la confirmation qu'une des commandes "délai 2 frames" n'a pas été convertie en "instruction pour l'éditeur d'animation" mais qu'elle reste bien présente dans les instructions adressées au moteur de jeu.I've been one step further today, with a small "dumpanim" tool that present in a readable(?) format the content of an animation. It's crude, for sure, but less than mentally converting 0x2104fffe into
UPDATE|COORDS|4|-2|-1
or 0x01000002 into CONTROL|DELAY|0x0002
, etc. Here's how to make sense of its output::**=xxxx
: this is a "definition", such as page numbers, box size, etc. They're only read once.s?=yyyy
: indicates that sprite #?
should be changed.c?=xx,yy
: indicates that sprite #?
should be moved to (relative) coordinates xx,yy.m=xx,yy
: indicates that the whole object should move by xx,yy!dxxxx
: indicates that we should pause for xxxx frames before going on with playback!loop
,!pop
,!done
: end-of-animation notifications//
: an annotation for the editor (typically, how to place frames on the timeline when only the movement of the GOB guides the playback speed).
Now that AnimEDS' export code is fixed, I have great walk animations. Huzzah!
Mais bon, assez ri: la maison a besoin d'un coup de pouce pour se ranger ... entre les chaussettes et dumblador qui se bloque dans tous les coins, je vais devoir ajuster mes priorités :P
No comments:
Post a Comment