Lawliet
很zuo的男人
级别: 火花会员
编号: 93177
精华: 7
发帖: 1091
威望: 35 点
配偶: 单身
火 花 币: 21955 HHB
注册时间:2008-08-30
最后登陆:2012-09-29
|
老外的火纹战斗动画修改教程
本人常年游走各中外游戏网站,找到不少外国高手的好东西,先拿出一点给大家分享一下,作为新人见面礼
GBA三作火纹的动画导出,修改,导入 原帖地址:http://forums.grandbell.net/index.php/topic,887.0.html 用到的软件WinHex(16进制编辑器), Unlz-gba(图片引导修改),Nightmare(火纹系列专用修改器,上面给出的网站就有下载)。以上软件网上都很容易搜到,不会用的到YouTube上找视频教程
教程主要内容: Search for the animation table. It uses plain-text to designate each animation (for example "magm" is the male mage class designation in the animation table) so you can just use your hex editor's ascii search for that. After it is a bunch of pointers. You'll have to copy everything that the pointers point to plus everything that the pointers in the copied data points to So, in the table, it'd be: plain-text designation (16 bytes, I think, maybe 8) pointer 1 (4 bytes) pointer 2 (4 bytes) ...etc.
You'd find the block that pointer 1 points to, and find all pointers within the block. You'll have to copy all of that (all of the blocks that you'll eventually copy are adjacent to one another in the end), insert it somewhere in the game you're importing it to, find the new game's animation table and append a new set of pointers at the end. Then you'll have to change all the pointers within the copied block to point to the new position of the blocks.
Note, though, that one mistake will screw up the entire animation, and some animations don't work completely properly (Lilina uses the Sage casting rune as a Mage when ported to FE8, probably due to different indices for the effects; Rath's Nomad animation glitched horribly when I tried his).
The safest way is probably just to make a second instance of an existing animation (same method, just within one game), adjust the tile sheet, and repoint the pointer necessary to load said sheet.
Well, the way I'm approaching it thanks to Ice Dragon's advice is to get hold of the images from one game (obviously you've done this) and make sure the tiles align up with the animation you're intending to mimic (fortunately for me the two cavalier sheets aligned perfectly). Then either replace a different animation that won't be used or add it into some unused space (I expanded the file using my hex editor to make sure I wouldn't interefere with any Nightmare additions and added it there).
Next step is to make a copy of the animation pointers you'll mimic. Let's us the shaman as an example. Look for data with ASCII starting as sham mgl. Include the hex values that makes up that ascii and copy up until the next ascii marker that isn't sham (it'll be drum). Now go to the end of this pointer list (where there should be a bunch of zeros). Put in the hex values you copied at the end of the last item. I'm not sure if it's required to change sham to shaf, but I changed it for cavalier without anything screwing up so might as well.
OK, now you have a copied list of pointers. You want the lowest pointer value as well as the lowest pointer value from the data that follows the original set (the one in drum in this case). This gives you where the animation data is. Take the sham pointer you got, drop the 08 from the end and reverse the order of the pairs, then go to that offset (not sure you needed to know how to get offsets from pointers, but I thought to play it safe).
Copy from that offset to 1 before the other offset you got from the drum pointer. Put this into some unused space. Now you have to update the pointers in your copy sham to the copy animation data. The lowest value pointer will just now be whichever offset you put the data at (well, don't forget to add 80000000 and then pair off numbers and reverse order to get your pointer). Now you have to work out the other pointers. What I did (with a calculator) is subtract the original offset value of the pointer I just changed from the new offset value and saved that to the calc's memory. Then for each other pointer I add that stored value to the offset value of each pointer and then convert to pointers.
楼主的回帖总结: Well, now we need the images, because at the moment the animation data is still using the old images. Go into unLZ-GBA and search for the sprites that belong to the animation data. Most of the time (if not always - haven't checked all of them) will have multiple sheets. Do a deep scan as a normal scan migh miss some (for example, a normal scan in FE8 revealed 2 female cavalier images but a deep scan revealed 4). Fortunately the sprite images are kept together. With each one you should be given the image offset by the program. Turn it into a pointer and look for this within the copied animation data. Replace every instance with a pointer to the relevant inserted image (note that sometimes a 00 might be within the pointer - just before the 08 at the end. I suggest maintaining that 00 when replacing with your new pointer). Do this for each image.
Final thing now is to create a new pointer set that can be assigned to a class. Fortunately this last bit is really easy thanks to Nightmare modules. But first go find a text file called "Animation List.txt" amongst the Nightmare modules and open it. You need to add to this list, but this is easy. Since we're mimicing an existing animation we do more copying. So find what you need to copy (in this example, the male shaman options). There should be at least 2 items for most classes, as there is here. Copy them, go to the end of the list and paste them there. Change the hex values so that the list continues to increment (and maybe change the actual text, although this doesn't affect the game). Now go back to the top of the list and find the number there. It should be 163 unless you've made changes before. Increase this number by however many items were added (if 2 were added, change it to 165). Save and close.
Open Nightmare and open the game file on it. Load the Custom Battle Animations module and find an unused one. You now need to assign an animation for every possible appearance a unit could make. For physical units you need to account for every usable weapon type. Stave users need stave animations. Spell casting animations. Disarmed animations (not sure if this applies to non-healing magic units, but I'd say do so anyway unless someone way more experienced says otherwise). Then take note of the offset listed at the top and apply changes and save. Now open the Class Editor module and scrol through to what class you intend to change. Near the bottom is something for "Battle Animation Pointer". Change the pointer to your custom one, apply changes and save.
Well, this last segment might be possible through editting the original animation pointer but I haven't looked into that quite yet.
目前正在试验中,有兴趣的话帮忙研究一下。此外,请大家用金手指调用一下代码为C9,CA,CB的物品,是隐藏魔法,动画效果为烈火的S级光,S级暗,和老奈的魔法(如果我火星的话不要骂我)
|
|
[楼 主]
|
Posted:2008-08-30 15:03| |
顶端
| |