Jump to content

Recommended Posts

Posted

This is my first time posting on this website so please forgive me for not formatting this properly if such I made a mistake. Recently I have been reverse engineering a lot of different games for various old consoles or obscure hardware/software. Some due to clients "Paid commissions", other due to personal curiosity.  List is rather large. Recently, I came across the game Garou Golden Knight. I was asked to make tools and a system as to where people could easily "mod" the game. So far, I am about 80% there. Packing/repacking tools work. Decompressing the files is required before any file editing, etc. This game like many others uses Renderware for models, animations, etc. You could use the dragonFF model importer for the models though expect issues. Most models use a plethora of static parts "which is common with PS2 games using renderware among others" so you are not going to get a full single solid model but many pieces with a simple underlaying body and armature. Some animations are done literally through text based files and "in game load up" to attach some static models to specific bone/location/orientation. games uses a lot of txt based files making it extremely easy to mod. I have a client begging me to finish tools for this game which I am not fully able to and out of frustration about to tell them to pike off.  The animations for this game use a vendor I am not aware of for Renderware flavours. The format is the common rwanm but not the standard vendors/flavours like Climax, Eighting, etc.... 

For those that don't know about rwanm I will elaborate a little about these in particular. They are RenderWare Animation chunks (chunk id 0x1B). The version is  0x100. With these animations, they behave like expected (multiples of 16 pointing backwards). Others clearly do not. Many offsets point forward to keyframes that haven’t been read yet (e.g. 1248 when we’re only at keyframe 76, and 1248/16 = 78). There are also huge values way beyond keyframes_num * 16. If you were to try known renderware animation importers, they will all give errors or assign a wrong vendor to these.  Example being ValueError: 65226 is not in list.  Most of the time values, when interpreted as plain floats, are nonsense (gigantic positive/negative values, denormals, etc.), with only some near 0 or a few small fractions looking “reasonable”. These .rwanm are not the same “TM compressed rotation” variant of any vendor I have messed with in the past or for any known blender/noesis/3ds max importer.  It’s almost certainly using game-specific compression/packing on top of the base RW structure. If you try the well known blender animation importer for renderware it will try and associate these animations with trashmasters and only give errors due to misinterpretations.  This game has been giving me more trouble than any other renderware game I worked on. I spent 3 days straight now and still have made 0 progress while simply doing a whack-a-mole attempt at making a valid working importer for the animations.  If I can get help with these animations I could finish the modding suite for this game.

With this post I am uploading a rar file that has two animations. One small, one average, the texture file and the base skeleton/body for one of the characters these animations belong to.  At this point, with the amount of frustration I have had with this game... If I had some help with the animation format to successfully be able to get them into blender or even noesis.. I would then add that to the tools and make them public.  This game was/is more difficult than the King of Fighters Maximum Impact series with their animations.....  If I could get help with this I would be more than willing to release tools for many other games that have no public tools nor have a active modding scene. I know people like to steal from these games, that isn't the point of this. My work is for modders only.  While I hate writing this.... If you are replying only to try and get assets from this game, that won't happen. Any help with this would be most appreciated. I can't spend weeks on this and have too many other jobs to complete.  I will try to reply when possible to those offering advice/information or perhaps even a solution. Thank you in advance even if you just want to poke at the animations. Something is better than nothing.

 

Garou test files for public.rar

Posted
24 minutes ago, shak-otay said:

If you think so - I think, form matters.

Quoting AI

Content and form are both crucial and interconnected; great content needs good form to be effective. 

 

I never stated it didn't. Form matters only to a certain degree. The important factor is getting information across/transferred that can be used. Too much "form" can cause more confusion.  An example of this, is the difference between showing an equation like this example 𝛥𝑆=𝑄𝑟𝑒𝑣/𝑇 - Δ𝑆=𝑄𝑟𝑒𝑣𝑇 or explaining the equation using simple to understand words.

Form can disrupt the flow of information for some while making it easier for others. Since I am "new" still to using forums let alone this website. I decided to go with what I believed at the time would be the best way to relay what I was wanting to say to others rather than try to be overly complicated or compress everything to where only a few would understand.  Balance in all things. Either way, thanks for the feedback. Didn't want my post to turn into a rebuttal session about form when it should of been about Garou Golden Knight's animation files.

In the future I will try to improve "form" with the main topic of posts.

  • Engineers
Posted

I fear there's not too many who dealed with PS2 animations in this forum, me included.

Do you have skeleton data?

I checked the dff mesh, looks doable, but usually I don't like to work from scratch:

 

mesh_viewer_gar_clump.png

  • Like 1
Posted (edited)
3 hours ago, shak-otay said:

I fear there's not too many who dealed with PS2 animations in this forum, me included.

Do you have skeleton data?

I checked the dff mesh, looks doable, but usually I don't like to work from scratch:

 

mesh_viewer_gar_clump.png

The armature is with the model. When you import the DFF using DragonFF in blender it will have the armature with it. The bones are very small. You can use the side menu GUI to better find the bones.  Models and Skeletons are 100% workable. It is the custom renderware animation format that is the problem here.  In the files I uploaded in the topic post, there should be two rwanm files. Those are some of the animations. If you have the game I can give you one of my scripts that will extract everything for you so you can go through all the files for testing. I tried figuring this out through the elf file. Let me know if you want my script so you can poke at all the animations in the game.  There are two different sets of animations per character even if they don't have a weapon.  The animations specific for weapons would be much easier to look at since they are smaller. There are mot files that give some additional information but for the most part they are irrelevant. Mot files for this game is more of a listing of animations and positioning for static model pieces. Not the main animations. I am uploading the mot file so you can see it is mostly just for static pieces. The txt file for the character abbreviated with gar that states all the files for him and the gmobj data base text for it as well.  I used a renderware tool "forgot the name of it" that allows me to look at how the files are structured. Sending you a section_tree.txt that was made by that program. I was offered a job to make a modding tool for this game that would include editing animations..... As it stands, I don't believe I will be able to finish it. Will just make everything I have for this game public if that happens. Adding two scripts as well. The gar_rws_test.py script does a simple test on the files for the correct compression to decompress the files so you can get everything basically. The garou_rws_extractor is a slightly upgraded version that needs work and is for extracting the models/animations. On aluigi's website there is a bms script called ougon_kishi_garo. That would be your first step to getting all the files out. Then you will have to use the scripts I posted here. The unfinished one will have errors. The test one will work better.

gar_mot.rar gar_files_txt.rar gmobj_DB_Files_txt.rar Section_Tree_txt.rar gar_rws_test.py Garou_RWS_extractor.py

Edited by Eilde
Bad grammar and mistake.
  • Like 1
Posted (edited)
2 hours ago, shak-otay said:

I fear there's not too many who dealed with PS2 animations in this forum, me included.

Do you have skeleton data?

I checked the dff mesh, looks doable, but usually I don't like to work from scratch:

 

mesh_viewer_gar_clump.png

I am uploading all animations for the character gar here. I should have done that in the previous post but it slipped my mind. So now you have a complete set of animations for one character.

gar.rws.dec_be_-15_extracted.rar

Edited by Eilde
Bad grammar.
  • Like 1
  • Engineers
Posted (edited)

Ok, thanks. You rule that format (besides the anims). I'll check the files tomorrow.

(If I can't help maybe someone else can, with all the files provided.)

Good night.

edt: well, being more the "simple analyzer" I focussed on the skeleton (21 bones?) in the dff file and the gar.rws.dec_be_-15_anim_27.rwanm:

I think the 5th column here could be the frame time in msec with translation and rotation values to follow:

address 0x1b6:
30486 29945 63488 29628 58856 65209     0     0 51393 54393 57171 
30685 30720 63488 29628 58856 65209     0     0 32768 32768 59982 
30502 59743 63488 29628 58856 65209 34953 15752     0     0     0 
30720 63488 63488 29628     0     0 34953 15624 61841 59913 29289 
27424 63488 30459 59522    24     0 34953 15624 22619 21982 18934 
30704 58259 63488 29628    48     0 34953 15624 30430 60362 20288 
17433 25922 63488 29628    72     0 34953 15624 30136 28721 52832 
21347 59344 63488 29628    96     0 34953 15624 48489 62528 16374 
29259 25922 63488 29628   120     0 34953 15624 60085 59294 26987 
30152 58965 63488 29628   144     0 34953 15624     0     0 62248 
29560 24551 63488 29628   168     0 34953 15624 15843 53973 27979 
30346 23143 63488 29628   192     0 34953 15624 53430 29725 53792 
29292 25922 63488 29628   216     0 34953 15624 26788 24635 22352 
30525 58965 63488 29628   240     0 34953 15624     0     0 61788 
29946 24551 63488 29628   264     0 34953 15752 22777 25316 22954 
30638 23143 63488 29628   288     0 34953 15624 61008 30170 26220 
address 0x316:
13303 63488 63488 28399   312     0 34953 15624     0     0 27758 
30398 29945 63488 29628   336     0 34953 15624  7522 11482 59715 
30545 30720 63488 29628   360     0 34953 15752 32768 32768 59982 
30502 59743 63488 29628   384     0 34953 15624 61466 29974 59213 
57464 63488 63488 30720   408     0 34953 15624     0     0 28454 
30232 29945 63488 29628   432     0 34953 15624 51986 54325 58411 
30640 30720 63488 29628   456     0 34953 15752 32768 32768 59982 
30502 59743 63488 29628   480     0 34953 15752 59840 61645 28387 
29176 63488 30184 63488   528     0 34953 15752 21331 23096 25805 
30620 58259 63488 29628   552     0 34953 15752 30629 58637 21582 
16964 25922 63488 29628   576     0 34953 15752 30156 28689 53876 
51939 59344 63488 29628   600     0 34953 15752 47599 62461 15165 
29336 25922 63488 29628   624     0 34953 15752 59092 59464 28203 
30010 58965 63488 29628   648     0 34953 15752     0     0 62825 
28859 24551 63488 29628   672     0 34953 15752 52057 53845 27997 
30341 23143 63488 29628   696     0 34953 15752 55057 29609 55317 
address 0x476:
29406 25922 63488 29628   720     0 34953 15752 56171 26016 20052 
30608 58965 63488 29628   744     0 34953 15752     0     0 61930 
29839 24551 63488 29628   768     0 34953 15752 29497 62179 58598 
22637 63488 63488 28399   816     0 34953 15752     0     0 28323 
30266 29945 63488 29628   840     0 34953 15752  7817 11470 59999 
30499 30720 63488 29628   864     0 34953 15752 29655 61689 27187 
25651 63488 63488 30720   912     0 34953 15752     0     0 29009 
29954 29945 63488 29628   936     0 34953 15752 52130 54326 59350 
30587 30720 63488 29628   960     0 29287 16404 44589 16658 52439 

//49164 29287 16404 44589 16658     9 16448    21     0     1     2 

I checked 40 blocks with a size of 22 bytes but none of the point clouds resembled an animation curve (although you can get some points in a line sometimes).

noCurve.png

skel_PS2.png

Edited by shak-otay
typo
  • Like 1
Posted (edited)
1 hour ago, shak-otay said:

For the selected values in rectangles you may start at 0x208, 0x20A or 0x20C - none of the point clouds looks promising.

Frames_chooseMe.png

This is still extremely helpful and thank you for all the information.  I agree with your observation with frame time. If oddities appear it is mostly because these animations are a mix of two different kinds of animations inside the stream. The static animations at times run at 60 FPS while the main runs at 30 or vice verse. It increases the difficulty of reversing this version of renderware animations. I don't even understand why there is a change in FPS for the animations unless the 60 or 30 are mainly set for ingame story scenes while the other is for the actual fighting? The one for static mesh pieces, they run/set at runtime and get attached to bones while playing as "additive" along with the main animations.  The elf file for the game has this in it and the mot file further proves it. I will give this a further poke with a few "whack a mole" trial and error attempts focusing on just trying to get a single rotation for a single bone.  Thank you again for even attempting to look at them. This is perhaps the only PS2 game that uses this version of renderware animations.  It is almost a half and half.. .Half in the style of older generations like how PS1 animations are and the other half a pseudo normal version of the common renderware with some hacky load up for it to work along with the static side.

Edit:
When you import the DFF file, you will see a bunch of static models along with the rigged underbody which is what you show in the screenshot. Half of all these animations are specifically designed for those static pieces. The other half is for the normal rigged underbelly body. While it would of been more sane and simple to just attach to the bone and leave at that, they did some customization to the renderware system so they could make specialized animations just for the static pieces so it wouldn't look like there was ever clipping and/or to make it seem clean and smooth unlike what one would see with even older static blob animation based games.  If it isn't half.. maybe 1/3rd or 1/4th of them belong to the static pieces. Since I haven't been able to reverse this format I am mostly guessing that it is half and half.

Edited by Eilde
Forgot informaiton.
  • Engineers
Posted (edited)

Sounds complicated. Anyways, in gar.rws.dec_be_-15_anim_77.rwanm I found parts which might be animation curves.

But the timeline looks somehow cut in pieces. Not talking about gaps (which might be filled by interpolated frames, as you may know), it's these steps "back in time," haha.

address 0x10c8:
 4392     0 48060 16315     0     0 61541 30111 24841 63488 62256 
 4416     0 48060 16315 32768     0 21047 30717 23725 63488 62256 
 4440     0     0 16320 53301 30676 22558 24629 63330 63488 63488 
step back?
 4152     0 26214 16358     0     0 24224 30693 29960 63488 62256 
 4176     0     0 16320 52246 24488 61447 30130 30720 63488 62256 
 4464     0     0 16320 29178 29826 41088 49358 58949 63488 62256 
one single interruption?
 2616     0     0 16320 19549 62621 53216 29139 26173 63488 62256 

 4512     0     0 16320 57603 60936 21535 30255 58578 63488 62256 
 4536     0     0 16320     0     0 61231 30230 24841 63488 62256 
 4560     0     0 16320 57771 18609 21233 30669 23725 63488 62256 
 4584     0     0 16320 54112 29811 54832 29180 26173 63488 62256 
 4608     0     0 16320 25814 28071 57693 30186 58578 63488 62256 
 4632     0     0 16320     0     0 61565 30096 24841 63488 62256 
 4656     0     0 16320 52935 22002 20388 30710 23725 63488 62256 
 4680     0 17476 16324 28679 28658 61447 61426 63420 30697 62911 
one single int/ step back
 3024     0 17476 16324 44238 15564 43253 30720 57885 63488 62256 
address 0x1228:
 4248     0 17476 16324 29178 29826 11892 49786 58949 63488 62256 
 4776     0 17476 16324 20137 62612 53593 29149 26173 63488 62256 
 4800     0 17476 16324 57236 61086 21117 30230 58578 63488 62256 
 4824     0 17476 16324     0     0 61456 30162 24841 63488 62256 
 4848     0 17476 16324 62036 28766 59130 28692 23725 63488 62256 
 4872     0 17476 16324 54297 29800 55031 29192 26173 63488 62256 
 4896     0 17476 16324 26484 27725 58682 30174 58578 63488 62256 
 4920     0 17476 16324     0     0 61606 30070 24841 63488 62256 
 4944     0 17476 16324 55822 24945 19244 30661 23725 63488 62256 
 4968     0 34953 16328 53047 30677 22461 24619 63330 63488 63488 
step back
 4704     0 17476 16324 52133 24362 61452 30130 30720 63488 62256 
 4752     0 52429 16332 28686 28644 61454 61412 63418 30697 62906 
 4992     0 21845 16341 10682 15408 39411 30720 57885 63488 62256 
 5016     0 39322 16345 29178 29826 43782 50136 58949 63488 62256 
 5040     0 34953 16328 20579 62599 53912 29163 26173 63488 62256 
 5064     0 34953 16328 56688 61223 20816 30203 58578 63488 62256 
address 0x1388:
 5088     0 34953 16328     0     0 61592 30079 24841 63488 62256 
 5112     0 34953 16328 62115 28717 61186 26846 23725 63488 62256 
 5136     0 34953 16328 54424 29790 55156 29204 26173 63488 62256 
 5160     0 34953 16328 27053 27110 59618 30138 58578 63488 62256 
 5184     0 34953 16328     0     0 61665 30032 24841 63488 62256 
 5208     0 34953 16328 57532 26626 19092 30549 23725 63488 62256 
 5232     0 34953 16328 52021 24237 61456 30129 30720 63488 62256 
 5280     0 52429 16332 53754 30675 55574 57291 63330 63488 60606 
one single step back
 4488     0 52429 16332 20774 62580 54116 29185 26173 63488 62256 

 5376     0 52429 16332 56853 61202 20694 30206 58578 63488 62256 
 5400     0 52429 16332     0     0 61788 29946 24841 63488 62256 
 5424     0 52429 16332 62044 28380 61696 26151 23725 63488 62256 
 5448     0 52429 16332 54547 29777 55268 29218 26173 63488 62256 
 5472     0 52429 16332 27445 26230 60149 30073 58578 63488 62256 
 5496     0 52429 16332     0     0 61728 29989 24841 63488 62256 
 5520     0 52429 16332 58316 27162 19461 30435 23725 63488 62256 
address 0x14e8:
 5544     0 39322 16345 52592 30677 22509 24635 63330 63488 63488 
 5256     0 21845 16341 52111 24340 61455 30128 30720 63488 62256 
 5568     0     0 16384 28686 28644 61454 61412 63326 30697 62825 
 5304     0 43691 16362 30693 57026 15938  9533 26173 63488 62256 
 strange
  576     0  4369 16337 20851 62555 54153 29215 26173 63488 62256 
 5616     0  4369 16337 57604 60892 21068 30267 58578 63488 62256 
 5640     0  4369 16337     0     0 62039 29750 24841 63488 62256 
 5664     0  4369 16337 62168 28395 61422 26828 23725 63488 62256 
 5688     0  4369 16337 54672 29762 55334 29235 26173 63488 62256 
 5712     0  4369 16337 27496 25516 60464 30038 58578 63488 62256 
 5736     0  4369 16337     0     0 61802 29936 24841 63488 62256 
 5760     0  4369 16337 58935 27260 19496 30384 23725 63488 62256 
 5784     0 43691 16362 53606 30676 55498 57321 63330 63488 60606 
 5592     0 21845 16341 20844 62524 54074 29253 26173 63488 62256 
 5904     0 21845 16341 58154 60378 22229 30354 58578 63488 62256 
 5928     0 21845 16341     0     0 62292 29517 24841 63488 62256 
address 0x1648:
 5952     0 21845 16341 62256 28360 60963 27198 23725 63488 62256 
 5976     0 21845 16341 54773 29744 55367 29255 26173 63488 62256 
 6000     0 21845 16341 27366 25291 60654 30032 58578 63488 62256 
 6024     0 21845 16341     0     0 61886 29873 24841 63488 62256 
 6048     0 21845 16341 59449 27129 19091 30370 23725 63488 62256 
 6072     0 43691 16362     0     0 24688 30684 29960 63488 62256 
 step back
 4224     0 21845 16341 19132 57034 61493 30107 30720 63488 62256 
 step back
 3264     0 39322 16345 14059 16222 10554 30720 57885 63488 62256 

 5328     0 39322 16345 20817 62489 53965 29295 26173 63488 62256 
 6120     0 39322 16345 58505 59791 23174 30435 58578 63488 62256 
 6144     0 39322 16345     0     0 62518 29271 24841 63488 62256 
 6168     0 39322 16345 62322 28254 60582 27535 23725 63488 62256 
 6192     0 39322 16345 54856 29727 55388 29274 26173 63488 62256 
 6216     0 39322 16345 27173 25274 60786 30038 58578 63488 62256 
 6240     0 39322 16345     0     0 61964 29812 24841 63488 62256 
 6264     0 39322 16345 59711 26929 17414 30364 23725 63488 62256 
address 0x17a8:
 6288     0 39322 16345 52220 24462 61451 30128 30720 63488 62256 
 and so on
 5832     0 43691 16362 19209 57095 61486 30110 30720 63488 62256 
 6336     0 56798 16349 15191 16672 12805 30720 57885 63488 62256 
 6360     0 56798 16349 29178 29826 46966 49975 58949 63488 62256 

 5352     0 56798 16349 20837 62449 53905 29341 26173 63488 62256 
 6384     0 56798 16349 58615 59023 23685 30505 58578 63488 62256 
 6408     0 56798 16349     0     0 62719 29013 24841 63488 62256 
 6432     0 56798 16349 62391 28041 60163 27919 23725 63488 62256 
 6456     0 56798 16349 54925 29711 55403 29292 26173 63488 62256 
 6480     0 56798 16349 27014 25159 60900 30044 58578 63488 62256 
 6504     0 56798 16349     0     0 62028 29759 24841 63488 62256 
 6528     0 56798 16349 59959 26765 47430 30348 23725 63488 62256 
 6552     0 43691 16362 52854 30676 22596 24625 63330 63488 63488 

 

mesh_viewer_15_anim_77.png

edit: using 2d72 1100 in step 3 will give some more obvious animation curves, imho

Edited by shak-otay

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...