|
Post by mariokart64n on Dec 17, 2011 6:31:08 GMT -5
I gotta figure out the havok stuff in the model files, like collision and physics.. anyway when you extract your ARC files use this BMS; > the file extensions are stored as a ID, this script will rename those ids to their proper extension. like tex and mod, needed for noesis preview endian big idstring "\0CRA" # "ARC\0" big endian get VERSION short get FILES short
for i = 0 < FILES getdstring NAME 64 get EXT long get ZSIZE long get SIZE long get OFFSET long if EXT == 1018003574 string NAME + .tex elif EXT == 272743838 string NAME + .mod elif EXT == 1332739548 string NAME + .fcp elif EXT == 641763256 string NAME + .fca elif EXT == 867601982 string NAME + .xml elif EXT == 1414542962 string NAME + .xml elif EXT == 296724104 string NAME + .xml elif EXT == 553864336 string NAME + .arc elif EXT == 1592916818 string NAME + .lcm elif EXT == 329180445 string NAME + .lmt elif EXT == 87164479 string NAME + .bts elif EXT == 1483314609 string NAME + .bns elif EXT == 731104429 string NAME + .xfs elif EXT == 776455971 string NAME + .xfs elif EXT == 1413366238 string NAME + .mkl elif EXT == 1976701554 string NAME + .pdc elif EXT == 956357328 string NAME + .cbs elif EXT == 1953552361 string NAME + .2tx else string NAME + . string NAME + EXT endif clog NAME OFFSET ZSIZE SIZE next i
|
|
|
Post by mariokart64n on Dec 16, 2011 22:45:37 GMT -5
the new noesis is up, fully supports DR1 now. all models and textures...
|
|
|
Post by mariokart64n on Dec 11, 2011 10:40:05 GMT -5
chrrox found some typos in my script, normal maps now work pastebin.com/BaA2Kui2however spec maps still dont, noesis does not support ATI1 you'll notice that some texture will look compressed funny.. those are ATI... oops I think I left the debugger enabled?
|
|
|
Post by mariokart64n on Dec 11, 2011 1:23:28 GMT -5
In case anyone cares, I wrote up a py plugin for noesis .... Get the script here: pastebin.com/QjibZQ1J pastebin.com/BaA2Kui2Copy and paste into a notepad, and save as this file, in the specific file path \\Noesis\plugins\python\fmt_deadrising_tex.py after you extract an arc you will get models and textures, this script opens up the textures.. unfortunately not all of them. The author of noesis will have to do the rest, but I'm not sure if he's even going to work on it? update: the new noesis is up, fully supports DR1 now. all models and textures...
|
|
|
Post by mariokart64n on Dec 10, 2011 22:10:47 GMT -5
i'm not sure how to make a external tool, the way I'm doing it requires the mesh names, and bone order to be the same.
I'm not sure how to maintain this outside of a controlled environment (3dsmax)...
soon as you bring it into another program, programs of any kind.. the format becomes uncontrolled. and I'm not able to reauthor a new DR2 file 100% yet. so I cant think of how to do this or format it to allow you guys to mod like you did in resident evil 4
|
|
|
Post by mariokart64n on Dec 7, 2011 16:47:03 GMT -5
the 360 models have more polygons then the wii models. and not only that, the Wii has smaller textures, and are diffuse only. the 360 uses diffuse, spec, and normal maps. aswell as support texture sizes of 512-2048 on main characters. in comparison to the Wii, which uses a single 512 map, which is equal to about 256 once you break it up... so quality drastically changes between the Wii and 360.
|
|
|
Post by mariokart64n on Dec 6, 2011 20:27:44 GMT -5
maybe the level of detail is triggered by our PC requirements.... cause I've never seen those 2D sprite before.. I'm not even sure those are apart of the zombie files....
|
|
|
Post by mariokart64n on Dec 6, 2011 0:01:25 GMT -5
ok, I whipped together a script to import zombies pastebin.com/yKNgREfqdoesn't work on all, but it gave me a better idea of what those sub models actually are. seems each zombie has 3 models, which seems to be verious level of LOD (Level of Detail) 1. High Poly 2. Mid Poly 3. Low Poly as observed in my test the 3rd mesh doesn't seem to be used... the mid poly is used when looking from far away, and after killing a zombie. I guess the 3rd mesh may be for extremely far distances? one thing thats interesting is that the big file for a zombie can hold several different full body models. seems the game accesses variations of the zombie meshes. this may make the names of the mesh parts critical? PS, if you want to import the zombies with SKIN weights, just change line# 15 from skinON=false to skinON=true
|
|
|
Post by mariokart64n on Dec 5, 2011 21:16:38 GMT -5
lol yeah I suppose... if someone wanted they could exploit this.. replace all the highpoly zombies with lowpoly zombies to create a lowpoly model. or vise versa..
still haven't figured a way to reduce the zombie count.
|
|
|
Post by mariokart64n on Dec 5, 2011 20:59:42 GMT -5
ok success on that zombie idea; 1. decompiled the zombie cop 2. decompiled the zombie cop's persistent.big 3. copied the boundingbox and boneattribute files 4. took a npc big, decompiled that. then decompiled its persistent.big 5. overwrote the boundingbox and boneattribute files with the one from the zombie cops persistent 6. repacked the modified persistent, then repacked it again so it was an importable character file 7. tweaked my script to ignore bad weights 8. import modified npc model.. and viola! 9. re-rig entire model to new skeleton 10. use script to export every mesh piece 11. repack 12. replace zombie cop with your now modified npc character and result get the modified script here; pastebin.com/zGvjVLhsthe zombie cop had 3 big models with it. the first big is the main model, the second is the lowpoly. the lowpoly is enabled when you see the zombie from far away. or when you kill that zombie. as for the last model file, I have no idea? also one thing to note, the lowpoly seems to double as the headless model. so when you replace the lowpoly, remove the head. in my demo, I just copied the entire model mod over the main model and lowpoly. the last model again doesn't seem to have any involvement ??
|
|
|
Post by mariokart64n on Dec 5, 2011 18:31:30 GMT -5
chrrox asked mradult, so supposedly noesis will get official support for DR1. both the models and the textures, it uses the same format used in RE5 and DMC4. not sure when he makes his noesis updates.. but about a weeks time I would think
|
|
|
Post by mariokart64n on Dec 5, 2011 15:55:29 GMT -5
to be honest I don't know. just unpack every arc file xrorebtI'll work on making a script to convert textures.
|
|
|
Post by mariokart64n on Dec 5, 2011 15:54:18 GMT -5
I can see bones and skin information in the DR1 files.. but was too lazy to read it in in any case you can copy the SKIN modifier off of the Wii model and paste it onto the 360 model. I wonder if noesis will open the textures?
|
|
|
Post by mariokart64n on Dec 4, 2011 13:09:41 GMT -5
|
|
|
Post by mariokart64n on Dec 4, 2011 12:32:50 GMT -5
ok, update2 on DR1 for the xbox360 the format is too difficult to solve without testing theories ingame. since its a xbox360 game that'll make it even more annoying to do. so I'm not doing it lol to top that off the format is the same format used in RE5, DMC4, and LP. there seems to have been a hacker for each game that made their own converter aswell.. and among all 3 or 4 of them none of those asshole left any documentation or source code. <_< so I can't solve the DR1 format easily, and I'm not begging a bunch of hackers for their source or for them to "do it" for me.. cause then things usually get ugly.. credit, and owning favors and all that jazz. anyway sat down and hunted down the DR1 characters I wanted, and they imported ok, not saying everything works.. alot of crap does NOT import. but I'll post the scripts and leave info I currently have on the format. quickBMS: (To Extract The Arc Files)endian big idstring "\0CRA" # "ARC\0" big endian get VERSION short get FILES short
for i = 0 < FILES getdstring NAME 64 get EXT long get ZSIZE long get SIZE long get OFFSET long string name + . string name + ext clog NAME OFFSET ZSIZE SIZE next i
MaxScript (For Importing files to 3dsmax) PS to get textures run the maxscript on a texture file and it'll spit out a dds. the dds is swizzled, so needs to be unswizzled I did not write any program for this yet, I just code the code from the dds and pasted it into a xbox360 xpression2 file. then used the xSDK to unswizzle (unbundler)
clearlistener()
obj=$*;delete obj
mscale=0.3937
fsource = GetOpenFileName \ caption:"DR1 MOD Importer" \ types: "All Files (*.272743838)|*.272743838|All Files (*.*)|*.*|" -- types: "All Files (*.*)|*.*|"
-- fsource = "E:\\_3DMODELS\\Ripped\\Dead Rising\\DeadRising\\model\\ev\\evo040\\evo040" -- fsource = "E:\\_3DMODELS\\Ripped\\Dead Rising\\DeadRising\\model\\om\\om0069\\om0069"
st = timestamp() --get start time in milliseconds if (fsource!=undefined) AND ((doesFileExist fsource)==true) then( fpath=getFilenamePath fsource fname=getFilenameFile fsource fsize=getFileSize fsource f = fopen fsource "rb"
fsize= getFileSize fsource fn ReadFixedString bstream fixedLen = ( local str = "" for i = 1 to fixedLen do ( str += bit.intAsChar (ReadByte bstream #unsigned) ) str ) fn ReadBEshort fstream = (bit.swapBytes (readshort fstream #unsigned) 1 2)
-- fn ReadBEshort fstream = ( -- a=readbyte fstream #unsigned -- (readbyte fstream #unsigned*0x0100)+a -- )
fn readBElong fstream = ( long = readlong fstream #unsigned long = bit.swapBytes long 1 4 long = bit.swapBytes long 2 3 return long ) fn ReadBEfloat fstream = ( fpt=readfloat fstream itger = bit.floatAsInt fpt hih = bit.intashex itger while hih.count < 8 do hih = "0" + hih shn = (substring hih 7 2) + \ (substring hih 5 2) + \ (substring hih 3 2) + \ (substring hih 1 2) bit.intAsFloat (bit.hexasint shn) ) fn readBEHalfFloat Fstream = ( local BH = readByte Fstream #unsigned local BL = readByte Fstream #unsigned local N = BH*256 + BL local S = floor((mod N 65536) / 32768) local Ef = floor((mod N 32768) / 1024) local M = mod N 1024 if (Ef==0)AND(M==0) then return ( (-1.0)^S * 0.0 ) if (Ef==0)AND(M!=0) then return ( (-1.0)^S * 2.0^-14 * (M / 2.0^10) ) if (Ef>0)AND(Ef<31) then return ( (-1.0)^S * 2.0^(Ef-15) * (1 + M/2.0^10) ) if (Ef==31)AND(M==0) then return ( (-1.0)^S * 1/0.0 ) if (Ef==31)AND(M!=0) then return 0 --hack-- should be #inf )--end fn ReadBEHalfFloat fn writeDDSheader streamin texW texH texM texC = ( texP=0 writelong streamin 0x20534444 #unsigned -- File ID writelong streamin 0x7C #unsigned -- Header Size case of( -- dwFlags (texC=="DXT1"): (writelong streamin 0x00081007 #unsigned;texP=((texW*texH)/0x02)) (texC=="DXT3"): (writelong streamin 0x00081007 #unsigned;texP=(texW*texH)) (texC=="DXT5"): (writelong streamin 0x00081007 #unsigned;texP=(texW*texH)) (texC=="ATI1"): (writelong streamin 0x000A1007 #unsigned;texP=(texW*texH)/2;texM=1) (texC=="ATI2"): (writelong streamin 0x000A1007 #unsigned;texP=(texW*texH);texM=1) (texC=="P8"): (writelong streamin 0x000A1007 #unsigned;texP=((texW*texH)/0x02)) (texC=="ARGB16"): (writelong streamin 0x00081007 #unsigned;texP=(((texW*texH)/0x8)*0x10)) (texC=="ARGB32"): (writelong streamin 0x00081007 #unsigned;texP=(((texW*texH)/0x4)*0x10))) writelong streamin texW #unsigned -- Texture Width writelong streamin texH #unsigned -- Texture Height writelong streamin texP #unsigned -- Pitch (#of bytes in a single row across the texture) writelong streamin 0x00 #unsigned -- Image Depth? Not Used, for Image Volume writelong streamin texM #unsigned -- Texture MIP Count for i = 1 to 11 do writelong streamin 0x00 #unsigned -- Reserved Space writelong streamin 0x20 #unsigned -- Size of PIXEL_FORMAT info, always 32bytes; case of( (texC=="DXT1"): (writelong streamin 0x04;writelong streamin 0x31545844 #unsigned writelong streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writelong streamin 0x00001000 #unsigned) (texC=="DXT3"): (writelong streamin 0x04;writelong streamin 0x33545844 #unsigned writelong streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writelong streamin 0x00001000 #unsigned) (texC=="DXT5"): (writelong streamin 0x04;writelong streamin 0x35545844 #unsigned writelong streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writelong streamin 0x00001000 #unsigned) (texC=="ATI1"): (writelong streamin 0x04;writelong streamin 0x31495441 #unsigned writelong streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writelong streamin 0x00401008 #unsigned) (texC=="ATI2"): (writelong streamin 0x04;writelong streamin 0x32495441 #unsigned writelong streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writelong streamin 0x00401008 #unsigned) (texC=="P8"): (writelong streamin 0x20;writelong streamin 0x20203850 #unsigned writelong streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writelong streamin 0x00401008 #unsigned) (texC=="ARGB16"): (writelong streamin 0x41;writelong streamin 0x00000000 #unsigned writelong streamin 0x10;writebyte streamin 0x00;writebyte streamin 0x0F;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0xF0;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x0F;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0xF0;writebyte streamin 0x00 writebyte streamin 0x00;writelong streamin 0x00001000 #unsigned) (texC=="ARGB32"): (writelong streamin 0x41;writelong streamin 0x00000000 #unsigned writelong streamin 0x20;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0xFF writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0xFF;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0xFF;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00;writebyte streamin 0x00 writebyte streamin 0xFF;writelong streamin 0x00001000 #unsigned)) for i = 1 to 4 do writelong streamin 0x00 #unsigned) -- Reserved Space for CAPS
fileID=readlong f #unsigned case of( (fileID==0x4D4F4400): ( ukn001=readBEshort f -- header size? ukn002=readBEshort f -- bone count? ukn003=readBEshort f -- mesh count? ukn004=readBEshort f -- material count?
ukn005=readBElong f -- vertex count ukn006=readBElong f -- face count ukn007=readBElong f ukn008=readBElong f ukn009=readBElong f
ukn010=readBElong f -- count, String Count, texture count ukn011=readBElong f -- always 0? ukn012=readBElong f -- bone offset ukn013=readBElong f -- offset, string table ukn014=readBElong f -- mesh info offset ukn015=readBElong f -- offset, vertices ukn016=readBElong f -- always 0? ukn017=readBElong f -- offset, faces
-- boundingSphere ukn018=readBEfloat f ukn019=readBEfloat f ukn020=readBEfloat f ukn021=readBEfloat f
-- minBounds ukn022=readBEfloat f ukn023=readBEfloat f ukn024=readBEfloat f ukn025=readBEfloat f
-- maxBounds ukn026=readBEfloat f ukn027=readBEfloat f ukn028=readBEfloat f ukn029=readBEfloat f
boundbox=[ukn026,-ukn028,ukn027]-[ukn022,-ukn024,ukn023]
fseek f ukn012 #seek_set for i = 1 to ukn002 do( -- 24bytes long bindex=readbyte f bparent=readbyte f fseek f (4*5.5) #seek_cur )
fseek f ukn013 #seek_set texNames=#();texNames[ukn010]="" for i = 1 to ukn010 do( texNames[i]=readFixedString f 64 )
fseek f ukn014 #seek_set for i = 1 to ukn003 do( getPos=ftell f + 80 ukn01=readBEshort f
fseek f getPos #seek_set )
vertArray=#() uvwArray=#() normArray=#() faceArray=#()
a=readbyte f #unsigned b=readbyte f #unsigned
fseek f ukn015 #seek_set for i = 1 to ukn005 do ( getPos=ftell f+32 -- p1=readBEfloat f * 1000 -- p2=readBEfloat f * 1000 vx=(((ReadBEshort f as float/0xffff)*(abs boundbox[1]))-(abs (boundbox[1]/2)))*mscale vy=((ReadBEshort f as float/0xffff)*(abs boundbox[3]))*mscale vz=(((ReadBEshort f as float/0xffff)*(abs boundbox[2]))-(abs (boundbox[2]/2)))*mscale wtf=readshort f b1=readbyte f #unsigned b2=readbyte f #unsigned b3=readbyte f #unsigned b4=readbyte f #unsigned w1=readbyte f #unsigned w2=readbyte f #unsigned w3=readbyte f #unsigned w4=readbyte f #unsigned
fseek f 8 #seek_cur -- D3DDECLTYPE_SHORT4N POSITION '--must divide all vals by 32767 -- D3DDECLTYPE_UBYTE4 BLENDINDICES '--must divide all vals by 255 -- D3DDECLTYPE_UBYTE4N BLENDWEIGHT '--must divide all vals by 255 -- D3DDECLTYPE_UBYTE4N NORMAL '--must divide all vals by 255 -- D3DDECLTYPE_UBYTE4N TANGENT '--must divide all vals by 255 -- D3DDECLTYPE_FLOAT16_2 TEXCOORD '--must divide all vals by 65535 -- D3DDECLTYPE_FLOAT16_2 TEXCOORD '--must divide all vals by 65535 --D3DDECLTYPE_SHORT2N POSITION '--must divide all vals by 32767 --D3DDECLTYPE_DEC3N '--must divide all vals by 511 tu=ReadBEHalfFloat f tv=ReadBEHalfFloat f
append vertArray [vx,-vz,vy] append uvwArray [tu,(-tv+1),0] fseek f getPos #seek_set )
fseek f ukn017 #seek_set StartDirection = -1 f1 = (readBEshort f) + 1 f2 = (readBEshort f) + 1 if f1>=ukn005 do f1=1 if f2>=ukn005 do f2=1 FaceDirection = StartDirection IndexCounter = 2 Do ( f3 = (readBEshort f)
IndexCounter += 1 if f3>=ukn005 then ( f1 = (readBEshort f) + 1 f2 = (readBEshort f) + 1 if f1>=ukn005 do f1=1 if f2>=ukn005 do f2=1 FaceDirection = StartDirection IndexCounter += 2
) else ( f3 += 1 FaceDirection = -FaceDirection if (f1!=f2)AND(f2!=f3)AND(f3!=f1) then ( if FaceDirection > 0 then append faceArray [f1,f2,f3] else append faceArray [f1,f3,f2] ) f1 = f2 f2 = f3 ) ) while IndexCounter !=(ukn006-1)
-- faceArray=#() -- print faceArray
msh = mesh vertices:vertArray faces:faceArray msh.numTVerts = vertArray.count buildTVFaces msh msh.displayByLayer = false msh.backfacecull = on
for j = 1 to vertArray.count do setTVert msh j uvwArray[j]
for j = 1 to faceArray.count do setTVFace msh j faceArray[j]
-- for j = 1 to vertArray.count do setNormal msh j normArray[j] convertTo msh PolyMeshObject
Print ("Last Read @ 0x"+((bit.intAsHex(ftell f))as string))
Print ("Done! ("+((((timestamp())-st)/60)as string)+" Seconds)") fclose f ) (fileID==0x54455800): ( ukn01=readbyte f #unsigned ukn02=readbyte f #unsigned-- flags?? ukn03=readbyte f #unsigned ukn04=readbyte f #unsigned texH=readBElong f texW=readBElong f ukn05=readlong f ukn06=readbyte f #unsigned ukn07=readbyte f #unsigned ukn08=readbyte f #unsigned texC=readbyte f #unsigned -- compression? fseek f (ukn03*4) #seek_cur getPos=ftell f print texCe case of( (texC==0x52): (texC="DXT1") (texC==0x53): (texC="DXT3") (texC==0x54): (texC="DXT5") (texC==0x86): (texC="ARGB32") (texC==0x4A): (texC="ARGB16") (texC==0x71): (texC="ATI2") (texC==0x7B): (texC="ATI1") (texC==0x7C): (texC="ATI1") ) xinfo=(" ["+texC+" - "+(texH as string)+" x "+(texW as string)+"]") -- createFile (fpath+fname+xinfo+".dds") s = fopen (fpath+fname+xinfo+".dds") "wb" writeDDSheader s texW texH 0 texC for i = 1 to ((fsize-getPos)/2) do writeshort s (readBEshort f) #unsigned -- (byte 02 = CTES Compression {ETC RGBA Introploated Alpha 8bpp} dword: ETCI) /like DXT5 -- (byte 52 = dxt1) -- (byte 53 = dxt3) -- (byte 54 = dxt5) -- (byte 56 = 32bitargb) -- (byte 4A) = 16bitargb) -- (byte 71 = ATI2) -- (byte 7C = ATI1 - CTX1) set to 54 to unswizzle
fclose s fclose f ) )
)else(Print "Aborted.")
Dead Rising (Xbox360) Mod Format Spec { // Header [LONG]: File ID [SHORT]: Header Size [SHORT]: bone count? [SHORT]: mesh count? [SHORT]: material count? [LONG]: vertex count [LONG]: face count [LONG]: ?? [LONG]: ?? [LONG]: ?? [LONG]: String Count / texture count [LONG]: always 0? [LONG]: bone offset [LONG]: offset, string table [LONG]: mesh info offset [LONG]: offset, vertices [LONG]: always 0? [LONG]: offset, faces [FLOAT32]: ?? bounding Sphere? [FLOAT32]: ?? x [FLOAT32]: ?? y [FLOAT32]: ?? z [FLOAT32]: boundingbox Min x position [FLOAT32]: boundingbox Min y position [FLOAT32]: boundingbox Min z position [FLOAT32]: ?? [FLOAT32]: boundingbox Max x position [FLOAT32]: boundingbox Max y position [FLOAT32]: boundingbox Max z position [FLOAT32]: ?? }
{ // String Table, Texture Names LOOP*COUNT [STRING][64]: Texture Name }
{ // Vertex Buffer [32bytes per definition] [SHORT]: Vertex Position X \\ (divided by 65535 to convert int to float) positions also need to be scaled by the bounding box [SHORT]: Vertex Position Y \\ (divided by 65535 to convert int to float) positions also need to be scaled by the bounding box [SHORT]: Vertex Position Z \\ (divided by 65535 to convert int to float) positions also need to be scaled by the bounding box [SHORT]: ?? [BYTE]: Bone Index #1 [BYTE]: Bone Index #2 [BYTE]: Bone Index #3 [BYTE]: Bone Index #4 [BYTE]: Bone Weight #1 [BYTE]: Bone Weight #2 [BYTE]: Bone Weight #3 [BYTE]: Bone Weight #4 [LONG]: ?? [LONG]: ?? [FLOAT16]: Texture Coordinate U [FLOAT16]: Texture Coordinate U [FLOAT16]: ?? [FLOAT16]: ?? }
{ // Face Data [SHORT]: Face (triStrip?) }
Dead Rising (Xbox360) Tex Format Spec{ // Texture Header [BYTE]: ?? [BYTE]: ?? [BYTE]: ?? [BYTE]: ?? [LONG]: Texture Height [LONG]: Texture Width [LONG]: ?? [BYTE]: ?? [BYTE]: ?? [BYTE]: ?? [BYTE]: Texture Compression } // Texture Compressions // (byte 02 = CTES Compression {ETC RGBA Introploated Alpha 8bpp}) // (byte 52 = dxt1) // (byte 53 = dxt3) // (byte 54 = dxt5) // (byte 56 = 32bitargb) // (byte 4A) = 16bitargb) // (byte 71 = ATI2) // (byte 7C = ATI1 - CTX1)
|
|
|
Post by mariokart64n on Dec 4, 2011 10:45:22 GMT -5
what about otis?
edit
DR2 is just a tweak to the bone outputfile.. actually I'm pretty sure you could use the current converter. I just think nobodies tried it
|
|
|
Post by mariokart64n on Dec 4, 2011 3:37:23 GMT -5
I don't think the cutting system has anything to do with the actual mesh files.. I think the game cuts the model actively and applies a texture on the cut area..
cause I've seen zombies slice in really weird ways.. almost inconsistent
also I successed in porting Jess over Stacy. I messed up some of the face rigging, but the quirky expressions are awesome
|
|
|
Post by mariokart64n on Dec 4, 2011 0:12:07 GMT -5
cool..
so that means we can decompile a npc BIG file and swap the bone file with the Zombie bone file. recompile the BIG and import it into max. that way the skeleton will be imported, and then all we gotta do is rig to the new skeleton.
^-^
|
|
|
Post by mariokart64n on Dec 3, 2011 22:36:38 GMT -5
i haven't tried it, but if you swap a zombie with a npc big does the game accept it?
|
|
|
Post by mariokart64n on Nov 28, 2011 16:39:37 GMT -5
theres nothing in there interesting enough to spend the time programming for it.
cause I have to convert it from big endian to little endian then convert it to the otr spec. and from what I can tell the bones are written differently and the vertex data does not include vertex tangents.. so the files need to be reconstructed. regardless if the target format was DR2 or OTR. thats alot of work :\
I'm focusing my time on generating content and thats taking forever lol
|
|
|
Post by mariokart64n on Nov 28, 2011 16:16:16 GMT -5
hm, maybe the retail EXE is packed.(compressed) I'm using a noDVD exe, which would have been unpacked.
|
|
|
Post by mariokart64n on Nov 28, 2011 1:09:56 GMT -5
with a trainer the best you can do is pause and resume time. so adding a permanent time pause would break progress of the game.
changing the rate of time is likely impossible, since most of the time its using the systems time. (time from your computer hardware)
|
|
|
Post by mariokart64n on Nov 28, 2011 1:07:33 GMT -5
corrupt?
i haven't had any problems with character models. when I upload the next script update it'll fix the dimension problem with non-square texture. though I'm not too concerned about item model yet.
|
|
|
Post by mariokart64n on Nov 26, 2011 16:38:52 GMT -5
it seems the command buffer hold material specifics.. like rim light, and bloom?
I haven't figured any of it out, but by swapping the command buffer you can for example make a certain mesh transparent, or whatever.
EDIT looked at the DR1 format, and was able to import static props. the format used is called MOD, and sure enough is almost identical to the MOD format CAPCOM used in the past for games like DevilMayCry4, LostPlanet, and ResidentEvil5.
I've put in a request to have the DR1 format supported by noeisis. which is a model viewing program which supports DMC4,RE5,andLP
Hopefully the Author MrAdult will find time to add the format to noesis. so that I don't have to reinvent the wheel to import DR1 models. So far I haven't had success importing skinned meshes.
Regardless I will share the scripts used to get the files.
BMS to extract DR1 files
endian big idstring "\0CRA" # "ARC\0" big endian get VERSION short get FILES short
for i = 0 < FILES getdstring NAME 64 get TIMESTAMP long get ZSIZE long get SIZE long get OFFSET long
clog NAME OFFSET ZSIZE SIZE next i
before qbms did not supports multiple files, heres a Batch file encase its needed.
set DIR=%CD% FOR %%1 in (*.arc) DO ( quickbms.exe -o drarcx.bms %%1 "%DIR%" DEL %%1 )
no use posting the script since it only imports crap from the object folder.. shovels and random items
the format stored the vertices weird. they were store as whole number instead of deciaml point numbers. I had to read the (value/0xFFFF)*bounddistance
wacky, and vertex and index buffers are piled together I need to figure out how they suppose to be seperated... but I'd rather not spend time on that if its only a few tweaks from working in noesis
lastly when I was poking around the DR1 textures I found a texture of lindsey lohans face, and the face of a former exotic model. the exotic model I understand because she did posing for a studio which takes photo references for 3d devlopers.. but how does lohan get in there lol...
|
|
|
Post by mariokart64n on Nov 26, 2011 14:04:32 GMT -5
I spent all morning trying to unlimited the amount of survivors you can have in your party.
from what I can tell the game won't allow you to recruit more then 7 characters in addition to frank. which seems silly since the game seems to be rendering hundreds of zombies :\
..anyway I poked around and wasn't able to get what I wanted. but instead was able to get inf ammo, which the trainer that I was using lacked.
the below requires you to use a hex editor, simply search the hex sequence then replace it. too permanently apply the fore-mentioned cheat
Frank, Health Doesn't Decrease
Search: F30F11493CC20400F30F11413CC20400 Replace: 9090909090909090F30F11413CC20400
Survivors, Health Doesn't Decrease ?
Search: F30F1180600100005EC20400F30F1044 Replace: 90909090909090905EC20400F30F1044
Survivors, Health Doesn't Decrease While OffScreen
Search: F30F1186970000007248E8E04E410084 Replace: 90909090909090907248E8E04E410084
Ammo, Does Not Decrease
Search: 894714837F14007F1184C9750DC7470C Replace: 909090837F14007F1184C9750DC7470C
Durability, Does Not Decrease
Search: F30F1186EC00000085C9742AD9442414 Replace: 909090909090909085C9742AD9442414
Percent, Does Not Decrease
Search: F30F1186800100000F57C00F2F868001 Replace: 90909090909090900F57C00F2F868001
there are different versions of the EXE thats why I've provided hex search and replace instructions instead posting the fixed exe.
|
|
|
Post by mariokart64n on Nov 23, 2011 23:08:45 GMT -5
Xian Mei (Dead Island)
|
|
|
Post by mariokart64n on Nov 23, 2011 23:08:05 GMT -5
the texture in the BIG file you posted is still green?
is this the same big thats crashing for you? or you just want me to mod it blue for you?
|
|
|
Post by mariokart64n on Nov 23, 2011 19:47:51 GMT -5
if you could upload your file, maybe I could assist you?
|
|
|
Post by mariokart64n on Nov 23, 2011 15:41:49 GMT -5
install nvidia's DDS image viewer developer.nvidia.com/legacy-texture-toolswhen ever you open a DDS with that it'll show the texture compression being used. most commonly DR2 uses DXt1 and DXT5, I've seen a ARGB32 aswell. when you open an image with the dds viewer take note of which compression its using. since after you complete your edit you must save it back as the correct compression. the wrong compression will trip up my script and write invalid texture files. I'll have to fail safe that in the future :\
|
|
|
Post by mariokart64n on Nov 22, 2011 21:54:15 GMT -5
I see, it cause all the textures I looked at were square, example 256x256, 512x512
the problem is that the dimensions are flipped...
so for example the texture is 256x128, it actually wrote out to 128x256
I just fixed it in the script, but that should not have caused a crash.
|
|