R7CrazyCanucks Posted Sunday at 02:35 PM Posted Sunday at 02:35 PM Hello all, I'm new to ResHax. And I'm opening up a new topic here because I would like to see if it's possible (if anybody wants to help me out) to rip the 3D models from this very strange and beautiful PlayStation 2 party game only released in Japan called Super Galdelic Hour. Me and a discord friend of mine managed to extract the game's data from the DATA.BIN/DATA.FAT files, and inside were a bunch of unique file formats that the game uses such as .EGG, .SEQ, .VUG, .VU1, .VU0, .MOT/BIN, and .BD/HD/SD. Each file format has a different purpose as explained down below. EGG: This is for graphics and textures. (Special thanks to BoringHexi for helping me extract all of the game's graphics and textures!) SEQ: Camera animations maybe. VUG: This stores the 3D geometry for each character and piece of scenery in the game. VU1/VU0: This stores 3D geometry for objects and miscellaneous models. MOT/BIN: Animations! BD/HD/SD: This is for audio, sound effects and voice clips while SD files are used for sequenced music. Our main focus for this topic is ripping the 3D models of the characters, objects and scenery from the .VUG/VU1/VU0 files, and maybe animations from the .MOT/BIN files. The ZIP file attached down below contains all of the necessary files that I pulled from the extracted game files for the topic. If anybody wants to help me out with this as a collaborative effort, feel free to be my guest as that would be much appreciated! galdelic_vu_files.zip
Engineers shak-otay Posted Sunday at 10:09 PM Engineers Posted Sunday at 10:09 PM Hello, it's a matter of vif tags in the vug files. bg00 vug has 1854 small sub meshes: 1
R7CrazyCanucks Posted Monday at 03:14 AM Author Posted Monday at 03:14 AM Oh wow! That's pretty neat how you got some of the scenery geometry that quickly! How exactly did you do it? And if so, does it also get UVs and normals too?
Engineers shak-otay Posted Monday at 08:00 AM Engineers Posted Monday at 08:00 AM (edited) The game uses vif tags. Generally it's like so where the signature and blocks are different usually for other games. (uvs will be checked later) edit: done Appended H2O files are for the bg00.vug only! (hex2obj required) Quote Unzip the H2O files to your vug folder. They are for the model bg00.vug. In hex2obj_0.25b load the model bg00.vug then toggle buttons 'noStr' to 'Strip' and 'noPtC' to 'Fake'. Choose File "SaveAs Mmesh" (multiple mesh) to create obj files from all contained submeshes. May take some seconds. After hex2obj processed the H2O files there should exist the same amount of obj files in the vug folder named from *_0.obj to *_xx.obj. Before executing load_multi_obj_blender2.69.py in a blender Text Editor window make sure to have set "path_to_obj_dir" to YOUR vug directory. Also be sure that there are no obj files in a maybe contained subdirectory. (they would be loaded, too) Best choice would be to have a separate folder for each vug and its obj files. Copy the code into a text file and rename it to import_multi_obj.py for example (not tested with blender versions >= v3.0). import os import bpy # http://blender.stackexchange.com/questions/5064/batch-import-wavefront-obj # put the location to the folder where the objs are located here in this fashion # this line will only work on windows ie C:\objects #path_to_obj_dir = os.path.join('C:\\', 'objects') path_to_obj_dir = os.path.join('D:\\', 'your_path\\vug') # get list of all files in directory file_list = sorted(os.listdir(path_to_obj_dir)) # get a list of files ending in 'obj' obj_list = [item for item in file_list if item[-3:] == 'obj'] # loop through the strings in obj_list and add the files to the scene for item in obj_list: path_to_file = os.path.join(path_to_obj_dir, item) bpy.ops.import_scene.obj(filepath = path_to_file) galdelic-bg00.vug_0000.zip Edited Monday at 11:01 AM by shak-otay zip appended 1
R7CrazyCanucks Posted Monday at 02:11 PM Author Posted Monday at 02:11 PM It seems to work alright, however I eventually ran into a go2 error saying "UV address greater than filesize". Would it be easier to handle all the meshes through a Noesis script if someone is capable of writing one? And I'm also unsure if there are assigned materials to them too which would save the hassle of texturing each poly by hand. But there's still the character "human" vug meshes yet to test out.
R7CrazyCanucks Posted Monday at 02:18 PM Author Posted Monday at 02:18 PM If you'd like to take a look how to the textures appear on the extracted meshes, I got all of the .EGG graphics and textures extracted with a python script. https://mega.nz/file/cysFSAgR#L125m16qmAfco4As--xL8RH4-bBpfMm8gT0nVix-Q4E 1
Engineers shak-otay Posted Tuesday at 10:13 AM Engineers Posted Tuesday at 10:13 AM (edited) Thanks. But I have no idea how to add the textures manually (or even automatically). edit: joining sub meshes manually ends up in wild guessing which texture(s) to use: Edited Tuesday at 10:20 AM by shak-otay 1
Engineers shak-otay Posted Tuesday at 07:23 PM Engineers Posted Tuesday at 07:23 PM (edited) Finally a tool to create H2O files from vug files. Not heavily tested. You'll need to find out for yourself which sub meshes to join to apply textures to them. (I have no idea how textures are referenced or connected to the sub meshes.) To get an idea I'd suggest to use a small vgu with a few textures only. Make_obj-Galdelic-vug.zip Edited Tuesday at 08:57 PM by shak-otay 1
R7CrazyCanucks Posted Tuesday at 11:48 PM Author Posted Tuesday at 11:48 PM This method almost works! I decided to test it out with Toko, one of the characters for example. It doesn't completely get all the meshes, (notice the holes in her head plus the missing body which I also tried importing,) but it's slowly getting there! Upon importing, I had to invert the Y and Z axis of the model and the Y axis of the UVs for it to be right-side-up. But good work, keep it up!
DemonTimeKilla Posted Wednesday at 05:12 AM Posted Wednesday at 05:12 AM @shak-otayyo bro I was wondering Can I have the tools That u & andreagtacj was talking about the WD1 Ripping including the 2.49 Blender xbg importer
Engineers shak-otay Posted Wednesday at 12:43 PM Engineers Posted Wednesday at 12:43 PM (edited) On 7/9/2025 at 1:48 AM, R7CrazyCanucks said: This method almost works! I decided to test it out with Toko, one of the characters for example. It doesn't completely get all the meshes, (notice the holes in her head plus the missing body which I also tried importing,) I have no idea where the holes come from. Use the exe from the zip here (needs dlls from previous zip) to get the rest of the body. For some unknown reason 47% of toko's sub mesh blocks don't have an uv block (the exe from the previous zip needs a correction because it misinterpretes normals as uvs). Still weird to join sub meshes manually (see shoe): Edited Thursday at 01:03 PM by shak-otay 2
R7CrazyCanucks Posted Wednesday at 05:10 PM Author Posted Wednesday at 05:10 PM (edited) Looking good! The holes issue could maybe be a thing with either how hex2obj handles it or the H2O converter. The new exe seemed to behave differently with the previous VUG I used (f0.vug) as supposed to the old exe which gave me a lot more sub-meshes. Hopefully you can think of a solution for it to read everything a little more accurately and find a method for it to join the sub-models together for you with maybe some material IDs that might be in there. Grouping them properly would be pretty tricky though because take the eyeballs in f0.vug for example. There are two models for both eyeballs and two meshes for the shine in her eyes. They're all positioned in the center of the 3D scene. The two eyeballs uses two textures and the other two meshes use only one from the face00.egg file. So if they were grouped by just those textures, it would be pretty painstaking to separate them by hand. Edited Wednesday at 05:13 PM by R7CrazyCanucks
Engineers shak-otay Posted Wednesday at 05:44 PM Engineers Posted Wednesday at 05:44 PM (edited) 13 hours ago, R7CrazyCanucks said: Looking good! The holes issue could maybe be a thing with either how hex2obj handles it or the H2O converter. The H2O creator just logs addresses of blocks - if it overlooked blocks (which is possible, of course) there would be bigger holes. I think it's a matter of the tri strips algo which hex2obj uses. Tested 2 variations or so (with other formats), the results usually didn't change that much. Quote The new exe seemed to behave differently with the previous VUG I used (f0.vug) as supposed to the old exe which gave me a lot more sub-meshes. ...vug-char.exe was for characters only. I've replaced it with a more unique one (see my previous post). Quote Hopefully you can think of a solution for it to read everything a little more accurately and find a method for it to join the sub-models together for you with maybe some material IDs that might be in there. Grouping them properly would be pretty tricky Sadly this took more time than planned, already. Also I usually do not do deep analysing. The tool was meant to serve as kind of startup. If you find material IDs, vertex groups, whatever feel free to report so that I could take a look at. (For now I have to care for my dozen other projects.) edit: some vug files have tables at the beginning, containing offsets to "VG1". Interestingly the count seems to match with the amount of textures, for bg00 at least. So it seems clear that all sub meshes between two VG1 "markers" should be joined. Will test that asap. edit: Treating the H2O files in groups (manually). (too bad, toko has 2 table address entries only...) Edited Thursday at 07:06 AM by shak-otay 1
Engineers shak-otay Posted Thursday at 07:45 AM Engineers Posted Thursday at 07:45 AM (edited) Doesn't make sense to recode before some problems aren't solved, so I just logged separating lines to mark the sub meshes which belong to a texture ("texture group"). View Makeobj_log.txt for bg00.vug Quote # tex11 - - - - - - - - - - # 340. 0x234c0 4 ... # 532. 0x34110 4 # 533. 0x34218 4 # tex12 - - - - - - - - - - So for tex11 (bg00_11.png) you'll need to treat the H2Os _340 to _533 as a group. Copy them to an extra folder where you use hex2obj, save as MMesh (multiple meshes) (the counting for the created obj file starts from 0 for each group) then import them to blender where you join them after border selection for example. Now you can apply the texture (works in v2.79 without adding a material, btw). Problems, bg00.vug: One face is to less to keep a whole texture... # tex1 - - - - - - - - - - # 63. 0x8480 4 # tex2 - - - - - - - - - - # 64. 0x8710 4 # tex3 - - - - - - - - - - # 65. 0x89a0 4 # tex4 - - - - - - - - - - # 66. 0x8c30 4 # tex5 - - - - - - - - - - # 67. 0x8ec0 4 ... # tex14 - - - - - - - - - - # 608. 0x49030 4 bg00_15.png (face) and sub mesh don't match. etc.. Exe needs dlls from zip here to work! edit: the face (bg00_15.png) belongs to tex13 sub mesh group, dunno why): Make_obj-Galdelic-vug-texGroups.zip Edited Thursday at 08:08 AM by shak-otay 1
Engineers roocker666 Posted yesterday at 12:33 AM Engineers Posted yesterday at 12:33 AM I noticed that 00.vug(from toko's folder) has two "VU1" files. You can see that in main header(image1). I tried to make a Noesis script but I got holes too, lol. I don't know why, this is weird... 1
R7CrazyCanucks Posted 17 hours ago Author Posted 17 hours ago Nicely done! That is strange how the holes issue crosses over from hex2obj to here too. Hopefully you can find a solution around that, there are no holes on the models as they appear in-game.
Engineers shak-otay Posted 17 hours ago Engineers Posted 17 hours ago (edited) 3 hours ago, R7CrazyCanucks said: That is strange how the holes issue crosses over from hex2obj to here too. This seems to indicate that it's a matter of how the triangle strips are generated automatically. Quote Hopefully you can find a solution around that, there are no holes on the models as they appear in-game. Speaking for me only I never saw this issue. Holes, yes, but bigger ones, not these "one-face-holes". There should exist scripts to fix this. (I'll check meshlab for such a feature when I'm back to office.) edit: well, the feature Filters > Remeshing, Simplification and Reconstruction > Close Holes does increase the holes. So it not meant to be used with one-face-holes, seems. Blender, Non-Manifold operator Works with v2.79 (disadvantage see pictures) Quote 14 hours ago, roocker666 said: I noticed that 00.vug(from toko's folder) has two "VU1" files. That's too less. For character models there must be other indicators (material IDs, vertex groups, whatever) to group vertex blocks together. Edited 14 hours ago by shak-otay 3
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