Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Ultimate Muscle - Kinnikuman Namco game series "PS2" Armature - Animations 75% solved. Models solved but needs work.

Featured Replies

  • Localization

Making a post here for some partial tools someone else can finish. I don't have the time to invest to complete this or any desire. Animations and models for this game are mostly solved with issues. It would require some reverse engineering by someone else if they want to make a 100% accurate importer. First I will explain the method of how to get the assets from these games using Kinnikuman Muscle Grand Prix Max 2 Tokumori as the basis with the scripts I am adding here for people to use if they want. If you have a physical copy of the game or obtained it by other means, you will need to get the AFS file off of the disk/iso. To do this, you can use winrar or other tools to simply "unzip" decompress the iso to extract the files. You will get a file called data.bin. This is actually an AFS file. Do NOT use a bms script on this. Use AFSExplorer. Once you extracted the afs file with AFSexplorer, you will have thousands of files and probably no idea what to do next.  For this tutorial I will focus on characters only. Next use the kinnikuman_pack_pak_extract.py by drag and dropping the char bin file on it. This will make a new folder that uses the name of the file. Go into that folder and you will see a good many files. Next, use the Kinnikuman_recursive_extract script the same way but with the new char file inside your extracted folder. It will be named something like char01A.bin.  You will get a new folder. Now, copy the wres pak folder you have in that character folder named something like Wres01.pak and put that copy in the newest folder made from the recursive script.  Next, use the kinnikuman_pmo_json_export_v5 script "Not finished but working" the same way as the others but use the file in the newest folder called body.pmt. This will NOT work if you didn't copy over the wres file into this folder. The next step is to now open blender and install the unfinished and somewhat broken kinnikuman_json_import_addon_v2.  In Blender, go to Edit → Preferences → Add-ons → Install from Disk. locate file, select it, install. Next, in the 3D View, open the right sidebar with N or use your mouse to click on the plus icon in the gui. Look for the new Kinnikuman tab. Set the input folder for the newest folder you made with the export script.  Then click on import. You will get an armature that is most likely going to be messed up or close depending on which character you used for this "some will work better than others but all will wrong". And you will get one animation where the first few starting frames are wrong but the middle/end frames will be correct. I am not adding the mesh importer here that I put together since it as well needs more work. The animations and armature are very close and would require an additional 10 to 50 hours more reverse engineering work to solve. I decided to release this incase someone else wants to finish this. It is a weird workflow and one I don't wish to continue with. A similar pattern is involved with the models.  If you are nuts enough to finish this work, please feel free. All I ask is for the partial credit of even starting this extraction/conversion shitshow.

kinnikuman_pack_pak_extract.py kinnikuman_recursive_extract.py kinnikuman_pmo_json_export_v5.py kinnikuman_json_import_addon_v2.py

Edited by Eilde
Grammar/spelling errors.

  • Author
  • Localization

This post is for additional information to those that want to continue working on these games since it is very close to being fully solved.

The character XML files are very useful and describe file relationships clearly. You can open them with notepad++. 
It also defines a 42-part character structure (parts0 through parts41) and names common game resources like waza_motion.

Character .bin files are PACK containers with named internal files.
Stage data uses the same general family of formats.
Motion data appears to live in WresXX.pak files.  Example: Wres01.pak is a PAK with 148 entries. At least one entry unwraps to a PMO payload after a small wrapper.

The following is a list of what some of the files are
PM1 = character mesh/model data
PMH = hierarchy / bone / attachment / transform structure
PMO = motion / animation data
PMT = default pose / per-part transform or control table
PM2 = shadow or simplified special model
PM3 / PM4 = stage/static geometry variants

The importer uploaded to the post intro produces broken humanoid rigs on multiple characters, so the current decode is reading some real data, but the hierarchy/channel mapping is still wrong. It is closer for some characters than others and needs more work.

Some of the reasons for this are PMH hierarchy/parenting is not decoded correctly, PMO channels are not mapped to all the correct bones, PMT rest pose / local transforms are sometimes or mostly being applied in the wrong basis/order, and local vs global rotations/translations may be interpreted wrong.

The above included Blender scripts/add-ons are research prototypes only and not a finished flawless/working script to use for modding. It is close, but no cigar. They should not be treated as correct importers. Right now they are useful for inspection and experimentation, not for production modding.

And with that, I wish anyone nutty enough to try and finish this godspeed and thank you in advance. I can't work on it any more.

  • Supporter
2 hours ago, Eilde said:

Making a post here for some partial tools someone else can finish. I don't have the time to invest to complete this or any desire.

Hi. How about structuring your opening post? (2nd one looks better) Most people are scared away by a wall of text.

  • Use paragraphs.
  • Bulleted lists can also come in handy. (See point 12 of editor's menu list.)
  • Picture(s) showing the remaining problems would be nice.

Must of us don't have time in abundance.

(Your instructions should be presented in Quote or code tags, btw. While I'd prefer bulleted lists, see above.)

edit: who is/are the author/s of the py scripts?

Where did you get them?

Edited by shak-otay

  • Author
  • Localization
10 minutes ago, shak-otay said:

Hi. How about structuring your post at least? Most people are scared away by a wall of text.

  • Use paragraphs.
  • Bulleted lists can also come in handy. (See point 12 of editor's menu list.)
  • Picture(s) showing the remaining problems would be nice.

Must of us don't have time in abundance.

(Your instructions should be presented in Quote or code tags, btw. While I'd prefer bulleted lists, see above.)

edit: who is/are the author/s of the py scripts?

Where did you get them?

The post was only to give the work where I left off so someone else could continue it. Nothing more. As you stated, "Must? Meaning Most?" of us don't have time in abundance. At the time of the post I was in a hurry and was typing as I normally do. Walls of text. I admit the instructions are sloppy. I will re-write it later in an edit. You have a point there.  The scripts started with me, and then I asked openAI "chatgpt" for help because I was stuck. I gave chatgpt my work and then it made some edits/advancements to it. When OpenAI kept hitting the same wall as I was, I gave up. I couldn't figure it out, and AI couldn't figure it out. If given enough time, it probably could have. That is time I don't have.  I don't know what a code tag is or why I should even care. Never was forum savvy and don't plan to be. Nor do I understand why it would need to be in quotes. Sometime later when I get free time I will re-write it in steps while also cleaning up my typing blob.

  • Supporter
4 hours ago, Eilde said:

When OpenAI kept hitting the same wall as I was, I gave up. I couldn't figure it out, and AI couldn't figure it out.

Was it one problem or a bunch of them?

Quote

Nor do I understand why it would need to be in quotes.

It can just be used as a measure for structuring, see icons " and "</>" of editor menu, 9th and 10th.

Quote

I don't have the time to invest to complete this or any desire.

Just being curious: how much time did you spend in understanding the format and creating the scripts. One hour or some days?

(I'm asking since you seem to be more knowledgeable than me and I've given up attempts with projects that are above my head years ago.:classic_biggrin:)

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.