H
halkun
Guest
Can you put in the list "find the #%#* field walkmesh and camera locations". I'm about ready to put a bounty on that data for a really nice prize *COUGH* US PSOne *COUGH*
Well I think the walk mesh is possibly in 2 places most likely only in 1 really.Can you put in the list "find the #%#* field walkmesh and camera locations". I'm about ready to put a bounty on that data for a really nice prize *COUGH* US PSOne *COUGH*
reading 23 bones reading objects start offset: 0000028C reading 26 vertices reading 0 groups, flag 0025 skipping 0 lines reading 48 triangles reading 0 quads ending offset: 00000730 start offset: 00000730 reading 76 vertices reading 0 groups, flag 0020 skipping 0 lines reading 108 triangles reading 20 quads ending offset: 000013F4 start offset: 000013F4 reading 131 vertices reading 11 groups, flag 0025 #00: 10 2E8 78 80 600 7840 2036 39 #01: 198 10 08 80 2036 7840 600 3A #02: 2F0 2E8 10 80 380C 7840 2036 600 #03: 2E8 2F0 308 80 2036 7840 380C 3932 #04: 10 198 318 80 600 7840 2036 380D #05: 300 368 320 80 AB 7800 37B5 1583 #06: 10 2F8 2F0 80 600 7840 3400 380C #07: 300 310 368 80 AB 7800 BF 37B5 #08: 2F8 10 318 80 3400 7840 600 380D #09: 368 310 3E0 80 37B5 7800 BF 15E6 #10: 318 198 48 80 380D 7840 2036 3932 skipping 0 lines reading 248 triangles reading 5 quads ending offset: 00002CA8 start offset: 00002CA8 reading 25 vertices reading 0 groups, flag 0025 skipping 0 lines reading 40 triangles reading 3 quads ending offset: 000030EC start offset: 000030EC reading 19 vertices reading 0 groups, flag 0025 skipping 0 lines reading 8 triangles reading 11 quads ending offset: 00003340 start offset: 00003340 reading 32 vertices reading 0 groups, flag 0025 skipping 0 lines reading 40 triangles reading 10 quads ending offset: 00003864 start offset: 00003864 reading 24 vertices reading 0 groups, flag 0025 skipping 0 lines reading 38 triangles reading 3 quads ending offset: 00003C78 start offset: 00003C78 reading 11 vertices reading 0 groups, flag 0025 skipping 0 lines reading 10 triangles reading 4 quads ending offset: 00003E0C start offset: 00003E0C reading 32 vertices reading 0 groups, flag 0025 skipping 0 lines reading 40 triangles reading 10 quads ending offset: 00004330 start offset: 00004330 reading 14 vertices reading 0 groups, flag 0025 skipping 0 lines reading 24 triangles reading 0 quads ending offset: 00004594 start offset: 00004594 reading 35 vertices reading 0 groups, flag 0025 skipping 0 lines reading 50 triangles reading 5 quads ending offset: 00004B20 start offset: 00004B20 reading 17 vertices reading 0 groups, flag 0025 skipping 0 lines reading 25 triangles reading 1 quads ending offset: 00004DC8 start offset: 00004DC8 reading 11 vertices reading 0 groups, flag 0025 skipping 0 lines reading 13 triangles reading 1 quads ending offset: 00004F50 start offset: 00004F50 reading 14 vertices reading 0 groups, flag 0025 skipping 0 lines reading 24 triangles reading 0 quads ending offset: 000051B4 start offset: 000051B4 reading 35 vertices reading 0 groups, flag 0025 skipping 0 lines reading 50 triangles reading 5 quads ending offset: 00005740 start offset: 00005740 reading 17 vertices reading 0 groups, flag 0025 skipping 0 lines reading 25 triangles reading 1 quads ending offset: 000059E8 start offset: 000059E8 reading 11 vertices reading 0 groups, flag 0025 skipping 0 lines reading 13 triangles reading 1 quads ending offset: 00005B70
#00: 10 2E8 78 80 600 7840 2036 39 #01: 198 10 08 80 2036 7840 600 3A #02: 2F0 2E8 10 80 380C 7840 2036 600 #03: 2E8 2F0 308 80 2036 7840 380C 3932 #04: 10 198 318 80 600 7840 2036 380D #05: 300 368 320 80 AB 7800 37B5 1583 #06: 10 2F8 2F0 80 600 7840 3400 380C #07: 300 310 368 80 AB 7800 BF 37B5 #08: 2F8 10 318 80 3400 7840 600 380D #09: 368 310 3E0 80 37B5 7800 BF 15E6 #10: 318 198 48 80 380D 7840 2036 3932
Code: [Select]first 3 numbers are vertice references (not indexes but offsets, as in polygons) and the rest should be tex coords. i'd say that repeating value '80' and '7840' are just fillers so only rest 3 nums are texture coords (which is enough, 2 bytes for each vertex)Code:#00: 10 2E8 78 80 600 7840 2036 39 #01: 198 10 08 80 2036 7840 600 3A #02: 2F0 2E8 10 80 380C 7840 2036 600 #03: 2E8 2F0 308 80 2036 7840 380C 3932 #04: 10 198 318 80 600 7840 2036 380D #05: 300 368 320 80 AB 7800 37B5 1583 #06: 10 2F8 2F0 80 600 7840 3400 380C #07: 300 310 368 80 AB 7800 BF 37B5 #08: 2F8 10 318 80 3400 7840 600 380D #09: 368 310 3E0 80 37B5 7800 BF 15E6 #10: 318 198 48 80 380D 7840 2036 3932
Thanks for the clue, as soon as I fix my corrupted vertex information problem I'll try to see if I can get a whole looking cloud!so those texture coords are correct; only thing buggin me is that they are correct only when number at offset 12 is '7840' (the number is actually size of the texture 120x64 ) ... those coords stand for cloud's eyes; but when the number is '7800' (at records #5, #7, #9) then the Y coord is way too big, out of picture. That should stand for cloud's mouth.
No Mirex has that already outlined somewhat I'm refering to the data in the PS1 version of FF7 as with a little help from mirex I have it decoding from the PS1 version of FF7. The animation data is compiled with the models in the PS1 version. However the data isn't completely understood as yet (IE it's not animated yet just the basic information). I still have to fix some bugs in the new object system. Cloud's head currently looks like a yllow and blue flat plate LOL. The PC information you might want to look at halkun's GEAR's project it's pretty up to date as far as I knowCyberman, when you mentioned (two posts back) that you would send mirex the animation data, are you talking about the normal .a files from fchar.lgp or the **da ones in battle.lgp?
If you’re talking about the **da ones I would like a copy.
I have been out of the loop for so long, so let me just take a moment to ask a few newbie questions and get caught up.
What is the status on the **da files? More frames working than just the first?
Do we know what is inside **ab files?
How much do we know about the files that store each 2-D map location?
CLOUD.LZS is in the PS1 version of FF7 in ENEMY006 directory on the CD's. That's what we are examining. It contains very similiar data to the PC version (of which data is stuck in an LGP archive). Instead of a bunch of archived sections the data is compacted into something the playstation can load into memory and directly use to draw the information. The file includes all the animation weapon models and the texture for the eyes and mouth. There is some addition information in the CLOUD.LZS but I've yet to figure out what exactly it is or means.That’s Cloud’s head from fchar.lgp or cloud.lzs?
Maybe my head is screwed (and it is) but I have never heard of cloud.lzs.
Where is it used (not in battle, not in cinemas, and not on the world map, so where)?
I feel like such a newbie, I’m not going to put my signature on this post.
Yup we are now working on the Playstation version of FF7 ... no great progress in FF7 PC .. we still have only 1st frame from DA anim files, no idea about AB files ... but maybe we can get to more information if we compare PC and PSX files.Cyberman, when you mentioned (two posts back) that you would send mirex the animation data, are you talking about the normal .a files from fchar.lgp or the **da ones in battle.lgp?
If you’re talking about the **da ones I would like a copy.
I have been out of the loop for so long, so let me just take a moment to ask a few newbie questions and get caught up.
What is the status on the **da files? More frames working than just the first?
Do we know what is inside **ab files?
Yea parent does not know its children but you can get them easily because children know their parent.There is one disturbing problem. The parent doesn't know it's children, so I assumed everything was depth first traversed. I suppose the playstation handles rendering this by creating a tree from the bone data and applying the animation data acordingly.
draw_bone( int index, float posx, posy, posz ){ rotate bone display bone's body part calculate bone's minor_joint_position for( i=0; i<bones_count; i++ ) { if ( bone[ i ].parent == index ) draw_bone( i, minor_joint_position ); }}and call it draw_bone( 0, 0, 0, 0 );
Yea parent does not know its children but you can get them easily because children know their parent.
What axis do you translate on by default the model? Currently I'm assuming X, however I'll worry more once things begin to actually render correctly. Amazingly the C++ with gl code seems to work rather neatly. I just need to hunt down this damnable vertex corruption bug.You could make an simple recursive function:
Code: [Select]or you could precalculate the order of bones into some stackCode:draw_bone( int index, float posx, posy, posz ){ rotate bone display bone's body part calculate bone's minor_joint_position for( i=0; i<bones_count; i++ ) { if ( bone[ i ].parent == index ) draw_bone( i, minor_joint_position ); }}and call it draw_bone( 0, 0, 0, 0 );
VOID FF7Model::SetBoneChildren() { char szBuffer[32]; int iIndex; for ( int I = 0; I < m_iBones; I++ ) { m_pBone[I].GetParentName( szBuffer ); iIndex = GetBoneIndexByName( szBuffer ); m_pBone[I].SetParentIndex( iIndex ); if ( iIndex != -1 ) { m_pBone[iIndex].AddChild( I ); } }}
for ( int I = 0; I < iBones * 3; I++ ) { // 3 floats per bone. iCurrentBit = I * 12; iBytewiseOffset = iCurrentBit / 8; iBitwiseOffset = iCurrentBit % 8; iTemp = * (unsigned int *)(&baData[iBytewiseOffset]); iTemp = iTemp << iBitwiseOffset; iTemp = iTemp & 0xFFF; if ( I % 3 == 0 ) { fTemp0 = (float)iTemp * 360.0f / 4096.0f; } if ( I % 3 == 1 ) { fTemp1 = (float)iTemp * 360.0f / 4096.0f; } if ( I % 3 == 2 ) { fTemp2 = (float)iTemp * 360.0f / 4096.0f; AttachRotationToBone( 0, iCount, fTemp0, fTemp1, fTemp2 ); iCount++; } }
tempXr = m_pBone[I].GetXRotation(); tempYr = m_pBone[I].GetYRotation(); tempZr = m_pBone[I].GetZRotation(); dxRotatef( -tempYr, 0, 1, 0 ); dxRotatef( tempXr, 1, 0, 0 ); dxRotatef( -tempZr, 0, 0, 1 ); m_pBone[I].SetMatrix( mDXMatrixStack[mDXStackPointer] ); dxTranslatef( 0, 0, m_pBone[I].GetLength() );