Henchman800 Posted July 31 Posted July 31 Hello, Level files are my last piece of 3D content left to export from both of the Backyard Wrestling Games. (Might also work for Xmen: Next Generation and Mortal Kombat: Shaolin Monks, since it's the only two other PS2 games by Paradox Development and Shaolin Monks also makes use of GAMEDATA.WAD as main archive) Here's what i have/know so far: - Level Files (Backyard Wrestling 1) Files need to be extracted from main archive GAMEDATA.WAD with this Script. Every Level has 11 Files (e.g. Backyard): - 96.MESH = Model file containing 450 submeshes that can be converted to .3ds files using this Script. Magic "2EMP". - 97.DATA = unknown data block - 98.DATA = unknown data block - 99.DATA = unknown data block - 100.DATA = unknown data block - 101.DATA = Magic "PWF". Container for the levels sound files (12 sounds with one being a dummy). Sounds can be extracted using PSound. - 102.DATA = Magic "PWF". Container for the levels texture files (136 textures...not 100% sure though). Textures can be extracted from main archive using this Method. - 103.DATA = unknown data block - 104.DATA = unknown data block - 105.DATA = unknown data block - 106.DATA = unknown data block This structure will repeate for 8 more levels (with only 7 in total being in the game). When you search 96.MESH (Hexeditor) for "MIP_" you'll find 212 entries with names like "MIP_polyhouse01" (might be materials, since it doesnt match submesh count). - Offsets for Submeshes Each level submesh seems to have offset floats (location,rotation?) before the actual vertex data. - Please Help Since submeshes are exportable with uvs, i can assign textures manually (tedious task but doable). Im kindly asking for help with a blender python script to shift the imported .3ds submeshes to theird world location instead of 0,0,0. I was working on that script with ChatGPT but was unsuccessful. Any other method is also appreciated if it means easier working for you. So feel free to ask me more, i help where i can. Level files for "Backyard" are attached to this post. Thank you for reading level96(Backyard).zip
Engineers shak-otay Posted July 31 Engineers Posted July 31 (edited) Hello. Nice try, this was handled 5 and a half years ago on former Xentax. The "world most famous" bms script by FurryFan, iirc, needs some additional log lines to find the start of vertices to maybe find the offsets, if any. edit: I had done this already, including move.py scripts. Exploded level looks like so: Edited August 10 by shak-otay
Henchman800 Posted August 1 Author Posted August 1 11 hours ago, shak-otay said: ...this was handled 5 and a half years ago on former Xentax. Wow time is really flying haha. I remember the exploded Level problem and you not being able to find the correct offsets. I was a little more encouraged after my try with chatgpt. Maybe its Just easier to do it with a ripper than. But thanks for the reply ✌️
Engineers shak-otay Posted August 4 Engineers Posted August 4 On 8/1/2025 at 7:52 AM, Henchman800 said: I remember the exploded Level problem and you not being able to find the correct offsets. That's not the whole truth. Coincidentally I found some move.py script which was used to move objects to their absolute positions. There's arrays contained like xpos = [-12278.892578, -12278.892578,... so offsets were known, obviously. Maybe rotations were missing but without an ingame screenshot of the real situation everything remains guesswork.
Henchman800 Posted August 9 Author Posted August 9 On 8/5/2025 at 12:34 AM, shak-otay said: offsets were known, obviously. Maybe rotations were missing but without an ingame screenshot of the real situation everything remains guesswork. you give me hope man. i just collected 4 screenshots for you with the ingame debug camera. i can also provide the .obj from my ripping attempt, if that helps. submeshes are split by materials though. LVL_Backyard.zip 1
Engineers shak-otay Posted August 9 Engineers Posted August 9 (edited) Thanks. Are that scenes of level96? Because I have that data only. And (after 5+ years) I wouldn't like to deal with another level. (If the screenshots are from level96: can the debug cam be moved inside of the house?) edit: ok, one house in your 2nd picture is empty. (Maybe all house are empty?) Seems I can identify the car's bonnet in your 4th picture. And the tailgate. Sadly it has a different z position. That sucks. btw, it could be helpful if you could restore the concerning thread from Xentax (search through archives) because I don't have the time to do it. (Date is around 18th January to 22th February of 2020) Edited August 9 by shak-otay
Henchman800 Posted August 9 Author Posted August 9 (edited) 26 minutes ago, shak-otay said: btw, it could be helpful if you could restore the concerning thread from Xentax (search through archives) because I don't have the time to do it. I have this link from archive.org and yes, all of the houses are empty. the surroundings for each level are very plane/box-like. the fighting (main) area of every level is the most detailed. the camera just circles around this square in level 96.mesh (backyard) for example. when you straight import all the .3ds submeshes you will see that the submeshes for the car wont allign anyway (with there original origin point). so different z-positions for the car parts would make sense. i can provide more screenshots or a video if you want. otherwise try the obj file i provided. doesnt have 100% correct proportions, but should help you locate stuff more easily. Edited August 9 by Henchman800
Engineers shak-otay Posted August 9 Engineers Posted August 9 5 minutes ago, Henchman800 said: I have this link from archive.org Cool! Thanks. I'll need to re read that. Quote when you straight import all the .3ds submeshes you will see that the submeshes for the car wont allign anyway (with there original origin point). so different z-positions for the car parts would make sense. Yes, but the "exploded" level had the offsets applied, iirc, that's why it suxx.., imho. Quote i can provide more screenshots or a video if you want. Maybe later. Quote otherwise try the obj file i provided. doesnt have 100% correct proportions, but should help you locate stuff more easily. How did you create it? (It's too time consuming for me to compare it to the data I have.)
Henchman800 Posted August 9 Author Posted August 9 1 minute ago, shak-otay said: How did you create it? (It's too time consuming for me to compare it to the data I have.) I was using this version of PCSX2 Emulator. It allows for 3D-screenshots directly within the emulator. with the debug cam i flew high above the levels origin point and aimed directly down on it. that made it easier to scale it to close enoguh correct proportions. theres lots of garbage objects though that contain like a handfull triangles that are missing in the "correctly" ripped objects. but still it gives a better understanding for placement imho.
Engineers shak-otay Posted August 9 Engineers Posted August 9 (edited) 17 minutes ago, Henchman800 said: I was using this version of PCSX2 Emulator. It allows for 3D-screenshots directly within the emulator. ... in the "correctly" ripped objects. but still it gives a better understanding for placement imho. Understand. I'll check your obj file asap. In the Xentax thread you marked the Hollywood swing and other stuff which you said to be placed correctly. It's not clear to me why and how the other objects were not. edit: btw, when there's an emulator, isn't there a community that supports it? And it would make more sense to use its output as a base instead of rebuilding a level like I tried to do it. Edited August 9 by shak-otay
Henchman800 Posted August 9 Author Posted August 9 7 minutes ago, shak-otay said: In the Xentax thread you marked the Hollywood swing and other stuff which you said to be placed correctly. It's not clear to me why and how the other objects were not. Yeah this was confusing me aswell....the hollywood swing can be damaged and moves when touched. also the 4 corners per square things (3 of them) under the level are used as target markers for a king of the hill style game. maybe theres different coordinate patterns for moving objects vs static objects. the debug menu also suggests that theres 3 render layers: background (level), weapons (included as submesh in the 96.Mesh level file) and characters (separate skeletal .mesh files) could that be a thing? like 3 different groups each with different style of saving coordinates for translation? thanks for diving into this so deep man.
Engineers shak-otay Posted August 9 Engineers Posted August 9 (edited) 9 minutes ago, Henchman800 said: like 3 different groups each with different style of saving coordinates for translation? Maybe. As I wrote 5 years ago, there's different signatures. Quote thanks for diving into this so deep man. Well, I don't mean to dive again. Spent too much time on it. Will just check some objects. How about the emulator community? btw. which objects are destructible? The car? Edited August 9 by shak-otay
Henchman800 Posted August 9 Author Posted August 9 (edited) 22 minutes ago, shak-otay said: btw. which objects are destructible? The car? destructable things: - boat next to house - hollywood swing - punching bag - 4 tables - car (i think) moves when opponent is smashed against it (bonnet and trunk) - weapon objects (shopping cart, lighttubes, car door, chairs, baseball bat, tires, etc.) please let me know if i can help with anything Edited August 9 by Henchman800
Engineers shak-otay Posted August 9 Engineers Posted August 9 (edited) thanks. I checked your obj file, on a quick glance: car's bonnet and tailgate are one part and there's 4 lods of them. Nevertheless there's 245 objects only (compared to the 449 3ds files). You could ask in the emulator community (if any) whether there's means to get the objects more complete using the emu. Once you got all 449 objects of level 96 by the emu (with correct positions/rotations, that's the advantage) you could replace the uncomplete ones by importing the concerning 3ds file. edit: forget, what I wrote. The emu seems to combine some objects, see bonnet and tailgate for example. That's a very time consuming task, I know, but it's doable. (Having the correct positions of the car parts from your obj I could check how to get the same offset values, once I understood how I did it, years ago.) edit: btw, I guess, the objects coordinates depend on those of the debug camera. Is there a difference in the obj file if you set the cam to 0.0 0.0 0.0 (or in midst of the level for example)? Edited August 10 by shak-otay typo and cross out
Henchman800 Posted August 10 Author Posted August 10 On 8/9/2025 at 3:37 PM, shak-otay said: edit: btw, I guess, the objects coordinates depend on those of the debug camera. Is there a difference in the obj file if you set the cam to 0.0 0.0 0.0 (or in midst of the level for example)? i guess thats just the way the ripper works. if i take the 3d-screenshot from regular "game perspective" the model comes out heavily distorted and only looks correct from camera view. i got the least amount of distortion when aiming the cam from way up high straight down. also easier to fix mesh afterwards. but yeah your solution might be the best way and its gonna be a side task for a long while. but will bring a 99% correct level anyway. thanks for the help again
Engineers shak-otay Posted August 10 Engineers Posted August 10 (edited) Thanks for the infos! And, btw, what I don't understand, if you're such an enthusiast (you are, aren't you?) why didn't you start rebuilding this level earlier (I mean, it's 5+ years now). Having all 449 objects as 3ds files. You could have worked out a map with estimated x,y,z positions for the biggest objects. (I'm checking the distance between car and Hollywood swing now) edit: no, it's bonnet and tailgate which must be checked. They're inline in the clumped heap and get shifted against each other when applying the offsets. So something is wrong with the offsets. But what exactly? These 6 parts of a cube for example are treated correctly, same offset (x shown only): 0. -12278.892578 , 1. -12278.892578 , 2. -12278.892578 , 3. -12278.892578 , 4. -12278.892578 , 5. -12278.892578 , There's other parts, too. Looks consistent so far: Edited August 10 by shak-otay
Henchman800 Posted August 11 Author Posted August 11 13 hours ago, shak-otay said: And, btw, what I don't understand, if you're such an enthusiast (you are, aren't you?) why didn't you start rebuilding this level earlier (I mean, it's 5+ years now). caught lol. yeah its true haha the game meant alot to me back in the day and kinda got me where i am now. back in the day it kinda was the bridgebuilding assistance for me to learn 3d modelling/animating which helped me in my career. i could rip every model of the game so i kinda did step by step when ever i found a new way or needed to kill some time. iand i went on and off with model ripping like that for a while. recently it fell into my hands again and during a big client show i had to kill lots of time in between setup and practicing. so got back into backyard wrestling ripping and check if i overlooked something. its my sudoko lol so yeah im fixing and manipulating the rip step by step whenever i have these little windows :-P but extracting from a file would also give the opportunity to extract models from unused maps. besides that! the cube you have there must be the skybox. since it comes out like that (subdivided) with the ripper methods i tried. the car parts you are showing are the only two moveable parts of the car (when smashing an opponent into it). the swingframe however is a static part. could it be, that moveable parts are parented to an empty/dummy object with its own coordinates? the origin points of tailgate and bonnet suggest that these parts just use the origin point for rotation though. the train consits out of like 5 or 6 different parts aswell but also moves along one axis in the backround of the level. so as a moving object the coordinates shouldnt work there aswell. but all in all like 90% of the the objects should be static.
Engineers shak-otay Posted August 11 Engineers Posted August 11 2 hours ago, Henchman800 said: recently it fell into my hands again Understand. So it's not a ghost that haunts you - you had just some time to kill. Quote besides that! the cube you have there must be the skybox. since it comes out like that (subdivided) with the ripper methods i tried. Wouldn't a skybox be bigger? Quote the car parts you are showing are the only two moveable parts of the car (when smashing an opponent into it). the swingframe however is a static part. could it be, that moveable parts are parented to an empty/dummy object with its own coordinates? Makes sense. Thing is that I have a condition in the code (and, as usual, not commented so that I don't understand it any more after all the years 😞 if (((*pFBuf&255)==0xFF)||(*(pFBuf-4)==0x18)) { which decides whether to use an offset or set it to zero. And I have two sets of offsets, one with 21 objects with offset 0.0, another set with 86. Don't see the difference in blender atm. Quote the origin points of tailgate and bonnet suggest that these parts just use the origin point for rotation though. the train consits out of like 5 or 6 different parts aswell but also moves along one axis in the backround of the level. so as a moving object the coordinates shouldnt work there aswell. but all in all like 90% of the the objects should be static. Didn't see all train parts in the ".3ds assembled" level so far, so I'll try to find the car parts and check their offsets. (If I had known this 5 years ago the level would have been assembled then, I guess. But I didn't even recognize the bonnet and tail gate as such because the chassis (and doors?) were moved somewhere else.)
DKDave Posted August 11 Posted August 11 The car parts are files 30 to 35. This is them without any positioning, just the actual vertices - there's quite a few floats in the mesh header, so the info must be in there in some form, but not sure what exactly.
Engineers h3x3r Posted Monday at 10:18 PM Engineers Posted Monday at 10:18 PM Here's bms for unpacking GAMEDATA.WAD with resource name support pulled out of PS2 game exe. Just make sure that your exe name match bms one and is next to the GAMEDATA.WAD. If not change it in bms on third line > Open FDSE SLES_519.86 1 get BaseFileName basename Open FDSE SLES_519.86 1 # Header Info getdstring Sign 0x4 get TotalFileSize uint32 get Unknown uint32 get ResourceCount uint32 getdstring Align 0x7F0 savepos ResourceTableOffset # Search for resource name table FindLoc FileNameTableOffset string "\x5C\x47\x41\x4D\x45\x44\x41\x54\x41\x2E\x57\x41\x44\x00" 1 goto FileNameTableOffset 1 get MainResourceName string 1 Padding 8 1 for i = 0 < ResourceCount get ResourceName[i] string 1 Padding 8 1 next i goto ResourceTableOffset # Resource Info for i = 0 < ResourceCount get ResourceOffset uint32 get ResourceSize uint32 string Name p "%s%s" BaseFileName ResourceName[i] Log Name ResourceOffset ResourceSize next i 1
Engineers h3x3r Posted Tuesday at 10:28 AM Engineers Posted Tuesday at 10:28 AM It uses classic XYZ positions and for rotation XYZ but in radians. 1
Henchman800 Posted Tuesday at 11:28 AM Author Posted Tuesday at 11:28 AM On 8/11/2025 at 12:11 PM, shak-otay said: Understand. So it's not a ghost that haunts you - you had just some time to kill. ahhh...there still kinda is a ghost :-P but it just got weaker with your guys progress! haha 50 minutes ago, h3x3r said: It uses classic XYZ positions and for rotation XYZ but in radians. wow great find! does this apply to all objects? cause you got a static part aswell as moving parts assembled correctly with your method. also your bms script is a gamechanger for me! thank you so much. Finally names instead of over 1000 files just numbered. i just had a brief look and tried tackling some files with the existing scripts. no success though... but when im back from work this weekend i will look deeper into it. what i found out though is that animations seem to be used per level aswell. the games debug menu has an animation player and must be drawing the info from the .rtt file within the map folder.
Engineers h3x3r Posted Tuesday at 11:39 AM Engineers Posted Tuesday at 11:39 AM Whole scene assembled... 1
Henchman800 Posted Tuesday at 11:47 AM Author Posted Tuesday at 11:47 AM 5 minutes ago, h3x3r said: Whole scene assembled... Wtf....no way!...how? And so fast... Is all the geo one Material or seperated? I remember having to seperate meshes into two or more Materials manually in order to apply Textures correctly. ...but damn man i dont know what to say...this is awesome!
Engineers h3x3r Posted Tuesday at 12:01 PM Engineers Posted Tuesday at 12:01 PM I wish i knew how to deal with tristrips in 010 hex editor and general. I noticed that it use some kind of face index chunks. Chunk start with ?? 80 then follows indices, but how about count?. Maybe it's end terminator?... Quote I remember having to seperate meshes into two or more Materials manually in order to apply Textures correctly. Not sure. I still didn't figure out materials...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now