black_racer Posted September 11 Share Posted September 11 Hello guys, please help to create QuickBMS script to uncompress and unpack this VFS format. Sample file: pak01.zip Link to comment Share on other sites More sharing options...
ikskoks Posted September 11 Share Posted September 11 What is the name of the game? Link to comment Share on other sites More sharing options...
black_racer Posted September 11 Author Share Posted September 11 4 hours ago, ikskoks said: What is the name of the game? Im sorry, Reckless Racing Link to comment Share on other sites More sharing options...
Solution Durik256 Posted September 11 Solution Share Posted September 11 (edited) 8 hours ago, black_racer said: Hello guys, please help to create QuickBMS script to uncompress and unpack this VFS format. Sample file: pak01.zip my plugin for vfs work with your file EDIT: and i made preview plugin for *.sggr fmt_sggr.py (*.pvr its image, use pvrTexTool) Edited September 11 by Durik256 1 Link to comment Share on other sites More sharing options...
black_racer Posted September 11 Author Share Posted September 11 (edited) 5 hours ago, Durik256 said: my plugin for vfs work with your file EDIT: and i made preview plugin for *.sggr fmt_sggr.py (*.pvr its image, use pvrTexTool) Thank you very much. could you please add UVs support? Edited September 11 by black_racer Link to comment Share on other sites More sharing options...
Durik256 Posted September 12 Share Posted September 12 not quite sure about uvs, try ofs 17 for U and ofs 21 for V, (all as Short) sample for 4e153346.SGGR Link to comment Share on other sites More sharing options...
black_racer Posted September 12 Author Share Posted September 12 (edited) 22 minutes ago, Durik256 said: not quite sure about uvs, try ofs 17 for U and ofs 21 for V, (all as Short) sample for 4e153346.SGGR Thank you, I’m not very familiar with Noesis and Python, but I’ll try to figure it out. I have another question: how can I split a model into segments, like by a specific material or texture? In addition to the basic textures, the game has static shadow map, maybe this map in UV2? Or planar projector shadow in the map, created game engine? Edited September 12 by black_racer Link to comment Share on other sites More sharing options...
testing4562145 Posted September 13 Share Posted September 13 the engine is always the same for both polarbit games and pixelbite, but some of them have model files in .dat format that weren't renamed Link to comment Share on other sites More sharing options...
black_racer Posted September 13 Author Share Posted September 13 (edited) On 9/13/2024 at 11:27 AM, testing4562145 said: the engine is always the same for both polarbit games and pixelbite, but some of them have model files in .dat format that weren't renamed Thanks, I'll see it. Updated noesis script, added partial support UV`s, this does not work completely correctly, the UV size has to be set manually. Thank you very much @Durik256 for your help from inc_noesis import * def registerNoesisTypes(): handle = noesis.register("Reckless Racing", ".sggr") noesis.setHandlerTypeCheck(handle, noepyCheckType) noesis.setHandlerLoadModel(handle, noepyLoadModel) return 1 def noepyCheckType(data): if data[:4] != b'\x4D\x3C\x2B\x1A': return 0 return 1 def noepyLoadModel(data, mdlList): bs = NoeBitStream(data) ctx = rapi.rpgCreateContext() ofs_res = data.find(b'#RES') if ofs_res != -1: bs.seek(ofs_res + 44) unk, vnum, zero = bs.read('3I') skip = 12 if unk == 4368 else 0 vbuf = b'' vbuf, uvbuf = b'', b''#bs.read(vnum*24) for x in range(vnum): bs.seek(2,1) vbuf += bs.read(2) bs.seek(2,1) vbuf += bs.read(2) bs.seek(2,1) vbuf += bs.read(2) bs.seek(5,1)#4 uvbuf += bs.read(2) bs.seek(2,1) uvbuf += bs.read(2) bs.seek(1,1)#2 bs.seek(skip,1)#12+ rapi.rpgBindPositionBuffer(vbuf, noesis.RPGEODATA_SHORT, 6) rapi.rpgBindUV1Buffer(uvbuf, noesis.RPGEODATA_USHORT, 4) u0, inum, u1 = bs.read('3I') ibuf = bs.read(inum * 2) rapi.rpgCommitTriangles(ibuf, noesis.RPGEODATA_USHORT, inum, noesis.RPGEO_TRIANGLE) try: mdlList.append(rapi.rpgConstructModel()) except: mdlList.append(NoeModel()) return 1 Edited September 14 by black_racer Link to comment Share on other sites More sharing options...
testing4562145 Posted September 14 Share Posted September 14 i get unexpected ident error with the updated script Link to comment Share on other sites More sharing options...
black_racer Posted September 14 Author Share Posted September 14 2 hours ago, testing4562145 said: i get unexpected ident error with the updated script I edited and checked. Now its works There are several problems: - With the type of meshes, it seems that in the example of street lights and electric lines, the script reads the Lod model. (The second screen example is a 3d ripper, but the UVs are also broken.) - Also with read the size of the UVs Link to comment Share on other sites More sharing options...
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