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.

Wallace & Gromit: The Curse of the Were-Rabbit (Xbox) - Rigged Model Extraction Help

Featured Replies

  • Localization

Getting these models has already been possible but I'm trying to look for a way to streamline it and finally manage to extract rigging, I would like to eventually make a Noesis script for these or something similar but I've got no scripting experience so I'll focus on rigs for now.


Using Advanced Mesh Reaper - Extreme, I've recently been able to get blend weights and just automatically generating the rigs which leads to mixed results.

Overview of the AMR - Extreme settings used with one of the rigged models in a Blender Viewport

Bones seem to be assigned to the verts correctly but are not parented to each other and are located incorrectly and leads to the mesh deforming weirdly.

A screenshot of the bones deforming the mesh incorrectly

I have absolutely no prior knowledge of getting rigged models with hex tools so I don't know what type of data pattern I have to look for to find possible skeleton data so I've included some reference files from the game and some notes I wrote for each file, some of the notes might be a tad bit off but it's all the stuff that I've figured out after awhile.


WGCOTW_RefFiles.zip


Any help with this is greatly appreciated and I thank everyone who's got great advice for these.

 

Edited by Hell Inspector
added a sentence I forgot to put in

  • Supporter
29 minutes ago, Hell Inspector said:

Using Advanced Mesh Reaper - Extreme, I've recently been able to get blend weights and just automatically generating the rigs

Hi, could you give a short description how you did that (steps, no wall of text:classic_smile:), please?

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

Hi, could you give a short description how you did that (steps, no wall of text:classic_smile:), please?

Using Model Researcher I just found the spots in the hex data that weren't used and just guessed they were somewhere around there, I'm not sure if it was the correct way but I just stumbled my way into them and screwed around with AMR and things just kinda lined up.

 

image.png.86277a9ccb2e4ea79f46f22a9876825a.png

And then with AMR I just added the mesh to the Parameter List and was able to just Auto Generate the bones 

image.png.c572a6a4e923bc534571cee4019b927b.png

A lot of my "knowledge" on this format is literally just trial and error lol
 

Edited by Hell Inspector

  • Supporter

Thanks, well,there only 17 bones autogenerated (without hierarchy) but there's 122 "Bip01" in the wallace.ovl file.

I guess the skeleton must be created using Durik's skelfinder (see 2 post here). Iirc there was also a skeleton tool from Bigchillghost, (wait, it was ASH)

picture AmateurSkeletonHunter

 

edit: first you'll need to sort out the bone names:

these:

Quote

  1. Bip01.Or
  2. Bip01.Pos
  3. Bip01 Pelvis.Or
  4. Bip01 Spine.Or
  5. Bip01 Spine.Pos
  6. Bip01 Spine1.Or
  7. Bip01 Spine1.Pos
  8. Bip01 Neck.Or
  9. Bip01 Head.Or
 10. LeftEyelidStage2.Or
 11. RightEyelidStage2.Or
 12. Bip01 L Clavicle.Or
 13. Bip01 L Clavicle.Pos
 14. Bip01 L UpperArm.Or
 15. Bip01 L ForeArm.Or
 16. Bip01 L Hand.Or
 17. Bip01 L Finger0.Or
 18. Bip01 L Finger01.Or
 19. Bip01 L Finger02.Or
 20. Bip01 L Finger1.Or
 21. Bip01 L Finger11.Or
 22. Bip01 L Finger12.Or
 23. Bip01 L Finger2.Or
 24. Bip01 L Finger21.Or
 25. Bip01 L Finger22.Or

...

or those?

Quote

155. Bip01
156. Bip01 BetweenEyesDmy
157. Bip01 Head
158. Bip01 L Calf
159. Bip01 L Clavicle
160. Bip01 L Finger0
161. Bip01 L Finger01
162. Bip01 L Finger02
163. Bip01 L Finger1
164. Bip01 L Finger11
165. Bip01 L Finger12
166. Bip01 L Finger2
167. Bip01 L Finger21
168. Bip01 L Finger22
169. Bip01 L Finger3
170. Bip01 L Finger31
171. Bip01 L Finger32
172. Bip01 L Finger4
173. Bip01 L Finger41
174. Bip01 L Finger42
175. Bip01 L Foot
176. Bip01 L ForeArm
177. Bip01 L Hand
178. Bip01 L Thigh
179. Bip01 L Toe0
180. Bip01 L UpperArm
181. Bip01 LeftEar
182. Bip01 Neck
183. Bip01 Pelvis
184. Bip01 R Calf
185. Bip01 R Clavicle
186. Bip01 R Finger0
187. Bip01 R Finger01
188. Bip01 R Finger02
189. Bip01 R Finger1
190. Bip01 R Finger11
191. Bip01 R Finger12
192. Bip01 R Finger2
193. Bip01 R Finger21
194. Bip01 R Finger22

...

 

Edited by shak-otay

  • Author
  • Localization
8 hours ago, shak-otay said:

Thanks, well,there only 17 bones autogenerated (without hierarchy) but there's 122 "Bip01" in the wallace.ovl file.

I guess the skeleton must be created using Durik's skelfinder (see 2 post here). Iirc there was also a skeleton tool from Bigchillghost, (wait, it was ASH)

picture AmateurSkeletonHunter

 

edit: first you'll need to sort out the bone names:

these:

or those?

 

I know that character skeletons are more robust and seem to have duplicate bones(?) so I think looking at the skeletons for birdy.ovl and Hedgehog.ovl might be easier first, and while doing some more file digging I found a file that's just a single animation with a small skeleton list. 

 

I've got ASH but I don't know any syntax settings that'll fit.

Skagbridge_T59.zip

  • Supporter
17 hours ago, Hell Inspector said:

so I think looking at the skeletons for birdy.ovl and Hedgehog.ovl might be easier first,

Good idea.:classic_biggrin:

Quote

and while doing some more file digging I found a file that's just a single animation with a small skeleton list.

The problem is that the ovl format is not too obvious. These might be some animation curves, but not sure:

 

Skagbridge anim.png

  • Author
  • Localization
3 hours ago, shak-otay said:

Good idea.:classic_biggrin:

Quote

The problem is that the ovl format is not too obvious. These might be some animation curves, but not sure:

 

Skagbridge anim.png

Oh yeah, I think these .ovl files are technically Archive files since they've got so many different types of files in them but absolutely no tool works with these so I've just been manually sifting through them to rip textures, models and character transcripts.

  • Author
  • Localization

I've gone through a different character file and tried to just separate what I think is skeleton and animation data with a bone list and possible count, I don't even know if what I did is correct here but if I ended up completely missing it I included the original character file.

Reverend_SkelAnims.zip

  • Author
  • Localization
5 hours ago, shak-otay said:

At least there's some shape at 0x2CC10:

mesh_viewer_GCO4ZWnU6k.png.4c2d89f67c29767b54308157b8cbf700.png

Frames remain a riddle.

Those are shape keys, they're usually right after the last mesh. They aren't too necessary but ripping them is still possible. 

You can find the phoneme list within the file as well.

 image.thumb.png.8909d636042a1ddedd593cd770ea6aec.png

  • Author
  • Localization
On 3/22/2026 at 8:10 AM, shak-otay said:

I guess the skeleton must be created using Durik's skelfinder


Trying out Durik's SkelFinder with birdy.ovl and.... I have absolutely no idea what I'm doing or what hex data I'm supposed to be looking for but I got the bone names listed at least so I guess it's a start?

image.thumb.png.a1c14f95a00c3bf5fa1e9e9ccf0c14da.png

  • Supporter
1 hour ago, Hell Inspector said:


Trying out Durik's SkelFinder with birdy.ovl and.... I have absolutely no idea what I'm doing or what hex data I'm supposed to be looking for

Not the best condition to start. I assume you've read here? (Without knowing about the 3 addresses mentioned you won't get far.)

Quote

but I got the bone names listed at least so I guess it's a start?

Yep. 16 bones? Assuming a matrix block (transVec + rotMat) having 64 (48?) bytes there should be a 1k block (0x400) with the required data.

But we'll need more structure before,

I checked 0x619 with a block size of 60 and the first column looks like frame time:

(switch to floats required for other columns)

address 0x619:
   32     2    14     0     1     0     0 49024     0     0 48430 46011     0     0     0 16256     0     0 48430 13243     0     0     0 49024 28855 12605  9040 48526 36513 15143 
   48     2     5     0     1     0 52693 13324     0     0     0 49024     0 49024 48429 45883 52693 46092 48429 45883     0 16256 34025 42958 55044 45475 12952 12052 20033 42480 
   64     2    15     0     5     0 55928 16253 16531 15498 12769 48643 38673 48643 60738 15982 49196 49014 17457 15455 58751 16248  9497 15983 31979 48607 43001 15835 23261 15415 
   80     2    16     0    15     0 38396 16185 38414 48519 33959 48943 40337 15656 27868 16255 22311 48472  1272 16176 60057 15396 56819 16185 32494 15996 46523 12755 11489 45533 
   96     2    17     0     5     0 51714 16254 24213 48556 48411 48454 38282 15768 30105 16046 60501 16239 24328 48511 46777 49007 55363 16048 43483 48608 38824 48607 14312 15507 
  112     2    18     0    17     0 38396 16185 38428 48519 33959 48943 40337 15656 27868 16255 22311 48472  1272 16176 60057 15396 56819 16185 32494 15996 60772 12565 30803 45296 
  128     2     3     0     5     0 42199 48754 61660 42730 46471 16248     0     0     0 16256 65535  6863 46471 49016 60863  9940 42199 48754 44300 48570 55044 45475 42346 15494 
  144     2     4     0     3     0 54786 48753 65282 48550 57731 49015 18568 48286  9666 16255 15732 48546 46471 16248 15775 10782 42199 48754 14899 15879 31455 12544  5766 48335 
  160     2    19     0     4     0 50160 46092     0 16256 18851 13301 52699 13364 32974 46073     0 16256     0 16256 45301 13289 44521 46142 30445 15816 10539 45762 22371 48666 
  176     2    20     0     5     0 25844 46071     0 16256 25844 13303 60286 16042 40348 45974 20596 16241 20596 16241 58640 13341 60286 48810 28133 15996 21925  9501  8731 15780 
  192     2    11     0     5     0 25844 46071     0 16256 25844 13303 64027 13361 25844 46071     0 16256     0 16256 25844 13303 64027 46129  7377 15338  2096 15660 42414 48524 
  208     2    12     0     5     0 25844 46071     0 16256 25844 13303 64027 13361 25844 46071     0 16256     0 16256 25844 13303 64027 46129  7377 15338  2096 48428 42414 48524 
  224     2     2     0     1     0 52693 13324     0     0     0 49024     0 49024 48429 45883 52693 46092 48429 45883     0 16256 34025 42958 45569 45665 57967 48731 11184 15821 
  240     2     0 17920  1435 14881 33399 15753 32600 15691     0 16256     0 16384     0 16256     0     0     0     0     0 17920 24743 15940     0     0     2     0    13     0 

Sadly floats don't show much:

# 0x625: blocks= 16
 -1.000000 0.000000 -0.000000
 0.000000 0.000000 -1.000000
 0.991615 0.016876 -0.128120
 0.724945 -0.066204 -0.685618
 0.995270 -0.084165 -0.048520
 0.724945 -0.066204 -0.685618
 -0.236957 -0.000000 0.971520
 -0.236168 -0.081541 -0.968285
 -0.000000 1.000000 0.000000
 -0.000000 1.000000 0.000000
 -0.000000 1.000000 0.000000
 -0.000000 1.000000 0.000000
 0.000000 0.000000 -1.000000
 0.067143 0.049682 1.000000
 0.000000 0.000000 0.000000
 0.000000 0.000000 0.000000
# 0x9e5

Edited by shak-otay

  • Author
  • Localization
7 hours ago, shak-otay said:

Not the best condition to start. I assume you've read here?

I did, I tried to look for the example file used there for some reference but it seems to be removed since then.

  • Author
  • Localization
1 hour ago, shak-otay said:

Example can be found here, in OP.

Thanks, I am finding similar symbols but I know similar symbols might not mean anything so I'll try to keep fiddling with stuff which means I might just end up going one by one and hopefully stumble on something.

image.thumb.png.471d58b94f3f9f0cdc5836b60f4bff41.png

10 hours ago, shak-otay said:

Yep. 16 bones?

I still don't know if 16 is the actual bone count due to all those .Pos and .Or extra bones, with those in mind it could inflate it to 31. 
 

  • Supporter

Thanks! ("Allow custom variables" must be enabled in Options, btw.)

How did you get the bone names? (I get bone_0, bone_1, etc although the base address is 0xF6 - changing it doesn't matter, btw)

 

Edited by shak-otay

1 hour ago, shak-otay said:

Thanks! ("Allow custom variables" must be enabled in Options, btw.)

How did you get the bone names? (I get bone_0, bone_1, etc although the base address is 0xF6 - changing it doesn't matter, btw)

 

The file I used was birdy.ovl. I used the ASH tool with the settings shown in the image, and it correctly read the bone names

  • Supporter

I know that.

Which version/date is the ASH.exe of?

Does your version load layouts correctly? (For me with version 1.3.2 only the line uint32 boneIdx loads. I have to copy the missing lines manually.)

edit: maybe I need to change the PC... same problem.

Guess, I need to pick up my old Skel2SMD project again...

Columns 3/5 here don't fit as boneID/parentID but

the hierarchy can be added manually (maybe ignore "Groundpoint" for now):

//0 "!GroundPoint" 0
1 "<root>" -1
2 "<world>" 1
3 "Beak_Pigeon" 1
4 "Bip01_Body" 1
5 "Bip01_Head" 8
6 "Bip01_LWing1" 4
7 "Bip01_LWing2" 6
8 "Bip01_Neck" 4
9 "Bip01_RWing1" 4
10 "Bip01_RWing2" 9
11 "Bird" 1
12 "FootL" 4
13 "FootR" 4
14 "Tail" 4

Edited by shak-otay

  • Author
  • Localization
8 hours ago, AngelYan said:

The skeleton fails to appear in T-pose due to a lack of bone hierarchy。

1774948718654.thumb.png.1c80bb3dcac8060bc4a2c732bb1b6f50.png

1774948722584.thumb.png.245793b21e0fe8864a587bc6d903518f.png

Oh, so there's actual bone data for the .Pos and .Or listings and it's not some weird naming thing.

  • Supporter

It's easier to get the hierachy for reverend_english, imho:

(while the skel looks horrible as for now)

Rev_english.png

Edited by shak-otay

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

It's easier to get the hierachy for reverend_english, imho:

(while the skel looks horrible as for now)

Rev_english.png

What's your hierarchy settings so I can try others?

And as for the misplaced skeleton, is there some kind of extra pose data needed or should that just be a part of the existing bone data.

  • Supporter

I've set the hierarchy manually (may contain wrong parenting IDs):

Quote

0 "!GroundPoint" -1
1 "<root>" 0
2 "<world>" 1
3 "Bip01" 1
4 "Bip01 Belt11" 3
5 "Bip01 Belt12" 4
6 "Bip01 Belt13" 5
7 "Bip01 Belt21" 6
8 "Bip01 Belt22" 7
9 "Bip01 Belt23" 8
10 "Bip01 BetweenEyesDmy" 12
11 "Bip01 Hair1" 12
12 "Bip01 Head" 29
13 "Bip01 L Calf" 26
14 "Bip01 L Clavicle" 29
15 "Bip01 L Finger0" 25
16 "Bip01 L Finger01" 15
17 "Bip01 L Finger1" 25
18 "Bip01 L Finger11" 17
19 "Bip01 L Finger2" 25
20 "Bip01 L Finger21" 19
21 "Bip01 L Finger3" 25
22 "Bip01 L Finger31" 21
23 "Bip01 L Foot" 13
24 "Bip01 L Forearm" 28
25 "Bip01 L Hand" 24
26 "Bip01 L Thigh" 30
27 "Bip01 L Toe0" 23
28 "Bip01 L UpperArm" 14
29 "Bip01 Neck" 49
30 "Bip01 Pelvis" 1
31 "Bip01 R Calf" 44
32 "Bip01 R Clavicle" 29
33 "Bip01 R Finger0" 43
34 "Bip01 R Finger01" 33
35 "Bip01 R Finger1" 43
36 "Bip01 R Finger11" 35
37 "Bip01 R Finger2" 43
38 "Bip01 R Finger21" 37
39 "Bip01 R Finger3" 43
40 "Bip01 R Finger31" 39
41 "Bip01 R Foot" 31
42 "Bip01 R Forearm" 46
43 "Bip01 R Hand" 42
44 "Bip01 R Thigh" 30
45 "Bip01 R Toe0" 41
46 "Bip01 R UpperArm" 32
47 "Bip01 SkirtRt" 30
48 "Bip01 Spine" 30
49 "Bip01 Spine1" 48
50 "Bip01 Tail" 49
51 "Bip01 Tail1" 50
52 "BrowLeft" 54
53 "BrowRight" 57
54 "LeftEye" 12
55 "LeftEyelidStage2" 54
56 "RevCassock" 1
57 "RightEye" 12
58 "RightEyelidStage2" 57

Which "misplaced" skeleton do you mean?

edit: when starting with matrices at 0x49EFA in Rev_english.ovl I'm getting "double" bones, weird:

(there must be missing a "minus", for translation x?)

Quote

28 0.094184 -0.000000 0.193565 0.000000 0.707107 0.000000 0.707107
29 0.094184 -0.000000 0.193565 -0.000000 0.707107 -0.000000 0.707107

30 0.111933 0.000000 0.000000 -0.087101 0.012658 -0.001831 0.996117
31 0.111933 -0.000000 0.000000 0.087101 0.012658 0.001831 0.996117

32 0.270926 0.047490 0.156090 0.707107 0.707107 0.000000 -0.000001
33 0.270926 -0.044236 0.156090 0.707107 0.707107 0.000000 -0.000001
34 0.195164 0.030424 0.147857 0.707107 0.707107 0.000000 -0.000001
35 0.195164 -0.030000 0.147857 0.707107 0.707107 0.000000 -0.000001
36 0.192005 0.031000 0.144068 -0.000001 -0.000000 0.707107 0.707107
37 0.192005 -0.031000 0.144068 -0.000001 -0.000000 0.707107 0.707107
38 0.282865 -0.000000 0.000000 0.000000 -0.016157 0.000000 0.999869
39 0.282865 0.000000 0.000000 -0.000000 -0.016157 -0.000000 0.999869
40 0.312480 0.000000 -0.000000 -0.706825 0.000000 -0.000000 0.707388
41 0.312480 -0.000000 -0.000000 0.706825 0.000000 0.000000 0.707388

 

Edited by shak-otay

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

Which "misplaced" skeleton do you mean?

Oh, I thought that's what "while the skel looks horrible as for now" meant, my bad lol

  • Supporter

ASH: the unknown uint32 should be the bone's parent ID.

But since the bone IDs are mixed like 2, 4, 57, 59, 3 ... I won't give a d.

Assuming the numbering to be like here makes more sense. But I didn't get mirrored translation data for hands, etc so far.

Edited by shak-otay

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.