Author Topic: CHRONO CROSS FILE EXPLORATION THREAD  (Read 83973 times)

Luminaire85

  • Guru of Time Emeritus
  • Chronopolitan (+300)
  • *
  • Posts: 311
    • View Profile
    • Chrono Cinema
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #360 on: January 18, 2008, 11:10:34 pm »
I wouldn't bother checking them all manually, at least not until after I try adding in the triangle-mapping procedure to my C++ program. Unfortunately that won't be for a few days since I have family in town this weekend.

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #361 on: January 19, 2008, 12:35:08 am »
No rush; I'm largely booked for the weekend as well. I'll be lucky to squeeze in some more ruminations on the triangle procedure. I blindly hope the scheme will function sensibly once I do the following switcharoos:

Give UV coordinate 1 the 2nd pointer.
Give UV coordinate 2 the 3rd pointer.
Give UV coordinate 3 the 1st pointer.

But, in doing this shifting, one must be careful to retain the divisions suggested by the pointer's original position, so figuring it out will be a bit tricky. Even though the first pointer would be shifted to the third column to correspond to the third UV coordinate, it will still be divided only by 8 (in decimal terms) as if it were in the first column. Ugh.

But the more I think about the quads, the more I believe they are mapped to their vertices in order.  I started thinking about the pointer swap for triangles precisely because I couldn't get the negative pointers to work properly, but I never had that problem with the quad pointers once I used M's scheme for those. So I think we're good there, and your program replicated the model quads accurately from the looks of it Luminaire.

MDenham

  • CC:DBT Dream Team
  • Chronopolitan (+300)
  • *
  • Posts: 330
  • Glowsticks are not a weapon.
    • View Profile
    • Java IRC - konata.echoes-online.com
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #362 on: January 19, 2008, 12:47:50 am »
No rush; I'm largely booked for the weekend as well. I'll be lucky to squeeze in some more ruminations on the triangle procedure. I blindly hope the scheme will function sensibly once I do the following switcharoos:

Give UV coordinate 1 the 2nd pointer.
Give UV coordinate 2 the 3rd pointer.
Give UV coordinate 3 the 1st pointer.

But, in doing this shifting, one must be careful to retain the divisions suggested by the pointer's original position, so figuring it out will be a bit tricky. Even though the first pointer would be shifted to the third column to correspond to the third UV coordinate, it will still be divided only by 8 (in decimal terms) as if it were in the first column. Ugh.
Alternatively, you can use a simpler scheme after swapping, and just divide the first two by 16 and the subsequent one(s) by 8. :D

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #363 on: January 25, 2008, 12:30:34 pm »
For great justice!  :lee:

I've been tinkering with these triangles like an apologist for Ptolemy's model of the universe, adding circles within circles and wondering why the hell things weren't working out 100% of the time. Then the spirit of Copernicus must have come upon me and showed me that simplicity rules after all.

The triangle pointers can be understood as follows:

Rule for Positive Pointers (hex)
*If you're in the first column, divide the byte pair value by 0x8. This value is the vertex index.
*If you're in one of the last two columns, divide the byte pair value by 0x2, then by 0x8. This value is the vertex index.

Rule for Negative Pointers (dec)
*If you're in the first column, divide the byte pair value by 8. Go backward that number of positions into the non-UV data.
*If you're in one of the last two columns, divide the byte pair value by 16. Go backward that number of positions into the non-UV data.

*Switch pointers such that the first UV coordinate gets the second pointer; the second UV coordinate gets the third pointer; the third UV coordinate gets the first pointer. The pointers retain the division properties they had in their original positions.

We've known this much for the past week or so. The new news is, even though there's only three pointer "slots" in the triangle non-UV data, the fourth "slot" is still there for purposes of negative pointing!

So let's see how this works. Here's the data from those 12 triangles in Section 1-2 I've previously rattled on about; the non-UV pointer columns have been re-ordered so that they correspond directly to the UV coordinates:


2658   69 EC   67 FB   5D EB   50 20   D0 21   08 10
2664   5A EF   5D EB   56 F9   70 22   D0 FF   50 11
2670   51 D9   3B DB   4B D6   90 21   00 21   D8 10
267C   3B DB   33 DC   37 D7   D0 FF   F0 20   E0 10
2688   33 DC   33 D7   37 D7   D0 FF   A0 21   E0 FF
2694   3B DB   37 D7   3C D7   80 FF   D0 FF   A0 FF
26A0   6A D9   6E D6   7F DA   60 21   20 21   70 10
26AC   47 DC   36 D5   32 DA   E0 FF   30 21   68 10
26B8   32 DA   36 D5   33 D7   E0 FF   C0 FF   A0 10
26C4   47 DC   3A D5   36 D5   80 FF   40 FF   D8 FF
26D0   30 DB   24 D7   2A D7   80 FE   80 21   38 FF
26DC   31 DA   2B D6   25 D6   40 FF   50 FF   B8 10


We'll run through the triangle @ address 0x2694:

0xFF80 = -128, /16 (because it was once in the second column) = 8 slots back. Add an imaginary fourth column and this leads to address 0x2682, value 0xFFD0. 0xFFD0 = -48, /16 = 3 positions back. With the imaginary fourth column, this leads to address 0x2679, value 0x2100.

0xFFD0 = -48, /16 (because it was once in the third column) = 3 slots back. Add the imaginary column and this leads to address 0x2692, value 0xFFE0. 0xFFE0 = -32, /8 (because it was once in the first column) = 4 slots back. With the imaginary fourth column, this leads to address 0x2686, value 0x10E0.

0xFFA0 = -96, /8 (because it was once in the first column) = 12 slots back. Add the imaginary columns and this leads to address 0x267A, value 0x10D8.

Suffice it to say I've tested these values to ensure that this scheme accurately describes the behavior of the negative pointers. But rather than flood this post with pics of Serge's battle model in various states of intact-ness, I'll end with some awesome artwork I found on my hard drive.  :P

PS: Luminaire, to answer a question you asked earlier, it does seem that the quad and triangle sections are self-contained as far as negative pointers are concerned; once you cross the boundary from triangles to quads and vice-versa, the negative pointers will not go back beyond that boundary.

Once I get the quad and triangle pointers in the wiki, it's time to hunt for bone data.  :twisted:

[attachment deleted by admin]
« Last Edit: January 25, 2008, 01:18:50 pm by FaustWolf »

ZeaLitY

  • Entity
  • End of Timer (+10000)
  • *
  • Posts: 10797
  • Spring Breeze Dancin'
    • View Profile
    • My Compendium Staff Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #364 on: January 25, 2008, 04:52:33 pm »
I've been eager to post this since I found it:


FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #365 on: January 25, 2008, 06:16:50 pm »
Once again, a kickass Grimmjow pic heralds the dawn of a new era in which fans will gain complete control over their favorite franchises. In addition to the awesome work being done at qhimm and in Kajar Labs, various similar efforts are achieving success throughout the globe.

Hear the rumblings of the fan communities!

http://forum.xentax.com/viewtopic.php?p=24193&sid=8c9db27619f4bd9280225c394f811a3f#24193
http://auritech.eu/
http://www.youtube.com/watch?v=PyyZegEFDOo

Ahem. Enough FANaticism for one day. What's most pertinent at the moment is this:



This is what happens when a fair amount of Section 2 (not to be confused with Section 1-2!  :mrgreen:) is zero'd out. It's possible this experiment may have hit on some bone lengths, reducing them to zero and thus planting Serge's head directly on top of the origin point for the model's bones. But I've gotta review all of halkun's notes before I try more experiments.

halkun

  • Architect of Kajar
  • Earthbound (+15)
  • *
  • Posts: 50
  • Ayumi Hamasaki Fanboy
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #366 on: January 25, 2008, 10:10:44 pm »
Look like the HRC, or probably a "bone pool" pointed to by the HRC.  The HRC has bone length and what attaches to what. I'm guessing 0 is the root bone so you are attaching all the RSD's to the root (bone 0) with a length of 0.

Oops! Vocabulary!

the "root bone" is the bone that comes up from the floor and goes to the center of the body. It is the bone you move to move the whole model.  It was always the bone we missed with hacking FF7s models. It's usually first (bone 0) and sometimes it's assumed and not declared explicitly.

The HRC also is supposed to tell what RSD to use, so it might be "converting" the "arm" RSD to a "Head" RSD and putting it at 0. But I can't tell.

« Last Edit: January 25, 2008, 10:14:16 pm by halkun »

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #367 on: January 25, 2008, 10:17:15 pm »
Here's what the data in Section 2 looks like in hex, halkun:


00004EF0                          17 00 00 00 FF FF FF FF          ........
00004F00  00 00 01 FC 00 00 00 00-F0 FD 06 00 FF FF FF FF  ................
00004F10  00 00 00 00 00 00 00 00-FB FB 00 00 00 00 00 00  ................
00004F20  00 00 00 00 01 00 00 00-00 00 00 00 46 00 70 00  ............F.p.
00004F30  00 00 00 00 00 00 01 00-02 00 00 00 00 00 00 00  ................
00004F40  00 00 E7 00 00 00 00 00-00 00 02 00 03 00 00 00  ................
00004F50  55 FC FF 03 00 00 42 00-35 00 00 00 00 00 03 00  U.....B.5.......
00004F60  03 00 00 00 55 FC FF 03-00 00 42 00 35 00 00 00  ....U.....B.5...
00004F70  00 00 04 00 02 00 00 00-00 00 00 00 00 04 B4 00  ................
00004F80  02 00 8D FF FF FF FF FF-06 00 00 00 00 00 00 01  ................
00004F90  BF 03 00 00 00 00 00 00-00 00 05 00 07 00 00 00  ................
00004FA0  00 00 00 00 00 00 76 00-00 00 00 00 00 00 06 00  ......v.........
00004FB0  08 00 00 00 00 00 00 00-00 00 87 00 00 00 00 00  ................
00004FC0  00 00 07 00 02 00 00 00-00 00 00 00 00 04 B4 00  ................
00004FD0  02 00 73 00 FF FF FF FF-0A 00 00 00 00 00 00 FF  ..s.............
00004FE0  BF 03 00 00 00 00 00 00-00 00 08 00 0B 00 00 00  ................
00004FF0  00 00 00 00 09 00 75 00-00 00 00 00 00 00 09 00  ......u.........
00005000  0C 00 00 00 00 00 00 00-00 00 88 00 00 00 00 00  ................
00005010  00 00 0A 00 0D 00 00 00-00 04 00 05 F7 FF CB 01  ................
00005020  10 00 5C FE FF FF FF FF-01 00 00 00 00 00 00 00  ..\.............
00005030  00 04 00 00 00 00 C8 FF-FF FF FF FF 0F 00 00 00  ................
00005040  00 00 0C 00 00 04 00 00-00 00 00 00 00 00 0B 00  ................


Very sparse; lots of 00s. Not sure if that provides any immediate insight. IIRC, for the experiment above I zero'd out addresses 0x4F90 ~ 0x4FCF. My guess is, that stuff (0x4F90 ~ 0x4FCF or thereabouts) all applies to Serge's chest and arms; the stuff above to his head, and the stuff below to his legs. So it might flow in a top-down logical order.

EDIT: halkun, what would be the theoretical effect on the model if I zero'd out the root bone, provided it exists explicitly?
« Last Edit: January 25, 2008, 10:21:45 pm by FaustWolf »

MDenham

  • CC:DBT Dream Team
  • Chronopolitan (+300)
  • *
  • Posts: 330
  • Glowsticks are not a weapon.
    • View Profile
    • Java IRC - konata.echoes-online.com
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #368 on: January 25, 2008, 11:01:28 pm »
Here's what the data in Section 2 looks like in hex, halkun:


00004EF0                          17 00 00 00 FF FF FF FF          ........
00004F00  00 00 01 FC 00 00 00 00-F0 FD 06 00 FF FF FF FF  ................
00004F10  00 00 00 00 00 00 00 00-FB FB 00 00 00 00 00 00  ................
00004F20  00 00 00 00 01 00 00 00-00 00 00 00 46 00 70 00  ............F.p.
00004F30  00 00 00 00 00 00 01 00-02 00 00 00 00 00 00 00  ................
00004F40  00 00 E7 00 00 00 00 00-00 00 02 00 03 00 00 00  ................
00004F50  55 FC FF 03 00 00 42 00-35 00 00 00 00 00 03 00  U.....B.5.......
00004F60  03 00 00 00 55 FC FF 03-00 00 42 00 35 00 00 00  ....U.....B.5...
00004F70  00 00 04 00 02 00 00 00-00 00 00 00 00 04 B4 00  ................
00004F80  02 00 8D FF FF FF FF FF-06 00 00 00 00 00 00 01  ................
00004F90  BF 03 00 00 00 00 00 00-00 00 05 00 07 00 00 00  ................
00004FA0  00 00 00 00 00 00 76 00-00 00 00 00 00 00 06 00  ......v.........
00004FB0  08 00 00 00 00 00 00 00-00 00 87 00 00 00 00 00  ................
00004FC0  00 00 07 00 02 00 00 00-00 00 00 00 00 04 B4 00  ................
00004FD0  02 00 73 00 FF FF FF FF-0A 00 00 00 00 00 00 FF  ..s.............
00004FE0  BF 03 00 00 00 00 00 00-00 00 08 00 0B 00 00 00  ................
00004FF0  00 00 00 00 09 00 75 00-00 00 00 00 00 00 09 00  ......u.........
00005000  0C 00 00 00 00 00 00 00-00 00 88 00 00 00 00 00  ................
00005010  00 00 0A 00 0D 00 00 00-00 04 00 05 F7 FF CB 01  ................
00005020  10 00 5C FE FF FF FF FF-01 00 00 00 00 00 00 00  ..\.............
00005030  00 04 00 00 00 00 C8 FF-FF FF FF FF 0F 00 00 00  ................
00005040  00 00 0C 00 00 04 00 00-00 00 00 00 00 00 0B 00  ................
00005050  10 00 00 00 00 00 00 00-D2 FF A7 00 00 00 00 00  ................
00005060  00 00 0C 00 11 00 00 00-00 00 00 00 00 00 23 01  ..............#.
00005070  00 00 00 00 00 00 0D 00-01 00 00 00 00 00 00 00  ................
00005080  00 04 00 00 00 00 38 00-FF FF FF FF 13 00 00 00  ......8.........
00005090  00 00 F4 FF FF 03 00 00-00 00 00 00 00 00 0E 00  ................
000050A0  14 00 00 00 00 00 00 00-D2 FF A7 00 00 00 00 00  ................
000050B0  00 00 0F 00 15 00 00 00-00 00 00 00 00 00 23 01  ..............#.
000050C0  00 00 00 00 00 00 10 00                          ........       


Very sparse; lots of 00s. Not sure if that provides any immediate insight. IIRC, for the experiment above I zero'd out addresses 0x4F90 ~ 0x4FCF. My guess is, that stuff (0x4F90 ~ 0x4FCF or thereabouts) all applies to Serge's chest and arms; the stuff above to his head, and the stuff below to his legs. So it might flow in a top-down logical order.

EDIT: halkun, what would be the theoretical effect on the model if I zero'd out the root bone, provided it exists explicitly?

I want to say there's six distinct bones, each terminated with 0xFFFFFFFF (or, alternatively, 2x 0xFFFF, which reads like the same thing - I mention this because it looks more likely to be pairs of 16-bit quantities, rather than single 32-bit quantities, for the most part), which break down into sections of length 1, 3, 29, 19, 19, and 4.  I have no idea what the last 20 bytes are, other than that they seem to be 3-byte numbers (in which case $504E-$5050 is missing its most significant byte - it's probably 0).  However, considering that Section 2 continues for another 136 bytes after what you've posted (last byte is $50C7, according to a couple of months ago), it may just be another bone or two you left out.  The 3- or 6-byte stride that seems to be showing up here is somewhat troubling, though.  I'm suspecting it may be bone rotations - either that, or I'm completely misreading it. :D

This gives us 74, 75, 148, or 150 (depending on whether or not the first 4 bytes are actually a bone or not, and on whether or not it's pairs or singlets of 16-bit numbers for each entry within a bone) total entries...  and 156 bytes of additional information as well (either 26 or 52 entries for the second half).

Something isn't quite matching up right here.


EDIT to handle the additional information, and because part of the info I gave is now wrong:

Looks to be a total of 8 bones now - lengths 1, 3, 29, 19, 19, 4, 19, and 15.  Bones 4 and 5 match up almost exactly (slightly different numbers, which is to be expected), as do bones 7 and 8...  with the exception of the last 4 entries of bone 7, which have no counterpart in bone 8.  They do, however, match up with bone 6, so they're divided a little strangely.

If I had to guess what bones are what:

#1 - Unknown; if it is a bone, it's probably the root.
#2 - 2nd-tier "control" bones - essentially, the spine.  Might be the head instead.
#3 - Torso.  Might include the head if #2 isn't the head.
#4 and 5 - Considering the relatively close correspondence between these two (some corresponding pairs are equal, others add up to 0x10000), and how 6+first part of 7 matches end of 7+8, I'm pegging these as the legs, despite what happened in the picture.
#6 - Dominant arm.
#7 - Non-dominant arm and hand.
#8 - Dominant hand.

The camera angle for that image is a little bad, also.  Was he still standing on the ground, floating above it somewhat, or partway in the ground?
« Last Edit: January 26, 2008, 01:09:34 am by MDenham »

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #369 on: January 26, 2008, 12:15:39 am »
Thanks for noting those various patterns, M. I was wondering what the significance of those FFFF strings might be. Since Section 2 is short enough, let me post the whole thing so everyone can see:


00004EF0                          17 00 00 00 FF FF FF FF          ........
00004F00  00 00 01 FC 00 00 00 00-F0 FD 06 00 FF FF FF FF  ................
00004F10  00 00 00 00 00 00 00 00-FB FB 00 00 00 00 00 00  ................
00004F20  00 00 00 00 01 00 00 00-00 00 00 00 46 00 70 00  ............F.p.
00004F30  00 00 00 00 00 00 01 00-02 00 00 00 00 00 00 00  ................
00004F40  00 00 E7 00 00 00 00 00-00 00 02 00 03 00 00 00  ................
00004F50  55 FC FF 03 00 00 42 00-35 00 00 00 00 00 03 00  U.....B.5.......
00004F60  03 00 00 00 55 FC FF 03-00 00 42 00 35 00 00 00  ....U.....B.5...
00004F70  00 00 04 00 02 00 00 00-00 00 00 00 00 04 B4 00  ................
00004F80  02 00 8D FF FF FF FF FF-06 00 00 00 00 00 00 01  ................
00004F90  BF 03 00 00 00 00 00 00-00 00 05 00 07 00 00 00  ................
00004FA0  00 00 00 00 00 00 76 00-00 00 00 00 00 00 06 00  ......v.........
00004FB0  08 00 00 00 00 00 00 00-00 00 87 00 00 00 00 00  ................
00004FC0  00 00 07 00 02 00 00 00-00 00 00 00 00 04 B4 00  ................
00004FD0  02 00 73 00 FF FF FF FF-0A 00 00 00 00 00 00 FF  ..s.............
00004FE0  BF 03 00 00 00 00 00 00-00 00 08 00 0B 00 00 00  ................
00004FF0  00 00 00 00 09 00 75 00-00 00 00 00 00 00 09 00  ......u.........
00005000  0C 00 00 00 00 00 00 00-00 00 88 00 00 00 00 00  ................
00005010  00 00 0A 00 0D 00 00 00-00 04 00 05 F7 FF CB 01  ................
00005020  10 00 5C FE FF FF FF FF-01 00 00 00 00 00 00 00  ..\.............
00005030  00 04 00 00 00 00 C8 FF-FF FF FF FF 0F 00 00 00  ................
00005040  00 00 0C 00 00 04 00 00-00 00 00 00 00 00 0B 00  ................
00005050  10 00 00 00 00 00 00 00-D2 FF A7 00 00 00 00 00  ................
00005060  00 00 0C 00 11 00 00 00-00 00 00 00 00 00 23 01  ..............#.
00005070  00 00 00 00 00 00 0D 00-01 00 00 00 00 00 00 00  ................
00005080  00 04 00 00 00 00 38 00-FF FF FF FF 13 00 00 00  ......8.........
00005090  00 00 F4 FF FF 03 00 00-00 00 00 00 00 00 0E 00  ................
000050A0  14 00 00 00 00 00 00 00-D2 FF A7 00 00 00 00 00  ................
000050B0  00 00 0F 00 15 00 00 00-00 00 00 00 00 00 23 01  ..............#.
000050C0  00 00 00 00 00 00 10 00                          ........       


When I get a chance to do another experiment, I'll record which offsets I zero out and post a pic of the results. If anyone has a specific suggestion for how to mess with this data, I'm all ears; otherwise I'm shooting in the dark, since this is a completely new type of data I'm working with.
« Last Edit: January 26, 2008, 12:19:01 am by FaustWolf »

MDenham

  • CC:DBT Dream Team
  • Chronopolitan (+300)
  • *
  • Posts: 330
  • Glowsticks are not a weapon.
    • View Profile
    • Java IRC - konata.echoes-online.com
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #370 on: January 26, 2008, 01:25:22 am »
When I get a chance to do another experiment, I'll record which offsets I zero out and post a pic of the results. If anyone has a specific suggestion for how to mess with this data, I'm all ears; otherwise I'm shooting in the dark, since this is a completely new type of data I'm working with.
Hm...  the first thing I'd recommend is seeing what gets moved/changed by zeroing out 5028-5037 (bone 6 in my new, updated version of my last post :D) as I suspect it's his right arm (seeing as how he's right-handed, it'd make sense to separate the hand for it into its own bone, which would be bone 8; his left arm, in its entirety, would then be bone 7).

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #371 on: January 26, 2008, 01:33:31 am »
Alrighty, I've got time for another experiment, so I'll get on that right away. Thanks M!

Is it possible that the bones have 20 bytes of data each? Section 2 starts with the value 0x17, and if the entire section is split into 0x17 equal parts, it appears each subdivision (we'll call 'em "bones") would have 20 bytes each (that's in decimal). Also, when I zero out addresses 0x4EF8 ~ 0x4F18, the game can't load Serge's model and crashes. I'd say it's because I obliterated the 0x17 at the beginning; perhaps its a root bone or a header for this section.

I'm not sure what was going on with Serge's feet in that pic I posted awhile back; I was under the impression that everything below the waist was normal at the time, but I could be wrong because I was paying attention to the fact that Serge was discombobulated from the waist up.

UPDATE: Ooh, look! I zero'd out addresses 0x5028 ~ 503B, which is a little more than what you suggested M because I wanted to see what would happen if I counted 20 bytes per section.



It would appear that the angle of one of Serge's legs has been significantly altered. But not the bone length itself as far as I can tell, which is odd. I'll go back and do only up to 0x5037 next -- that way we can isolate the purpose of those FF strings that seem to come at the tail end of each section.

EDIT: Here's the same views of a normal Serge for quick comparison:

« Last Edit: January 26, 2008, 01:54:48 am by FaustWolf »

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #372 on: January 26, 2008, 02:13:26 am »
Hmm, not really a noticeable difference if I leave alone the FF string that comes after address 0x5037:



The purpose of the FF string is still hidden from me. The next step is to start zeroing out adjacent areas, to see if each bone has an angle component and a length component that occur separately or something.

Intriguing!

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #373 on: January 26, 2008, 10:46:11 am »
Ooh, look at the pretty colors in the attached pic. It's Section 2 color-coded into the header (which is in the black box, value 0x00000017) and "objects" of 20 (dec) bytes each. Given that this works out, I believe this might be the basic structure of Section 2.

The header says that there's 0x17 (0r 23 in dec) objects, and sure enough there's that number of 20(dec)-byte sections in Section 2! I'm unsure whether this is related to HRC in any way though.

I'm interested in any observations people might have on this. Just to be clear, there's absolutely no significance to the colors I've assigned the various "objects." I just wanted to make them stand out from one another. Also, I'm not sure that each "object" is an entire bone, since my experiment last night altered only bone angle it seems; so M's observation of 8 or so bones could still pan out. At least this gives me some structure to work with; I'll need to find out what each byte does in a given "object," and how many objects make up a bone.

[attachment deleted by admin]
« Last Edit: January 26, 2008, 10:52:45 am by FaustWolf »

FaustWolf

  • Guru of Time Emeritus
  • Arbiter (+8000)
  • *
  • Posts: 8972
  • Fan Power Advocate
    • View Profile
Re: CHRONO CROSS FILE EXPLORATION THREAD
« Reply #374 on: January 26, 2008, 03:53:53 pm »
 :D


Zeroing the range 0x4EFC ~ 0x4F0F makes the model disappear entirely and makes the game crash when I try to get Serge to attack, so this range must have some high-level organizational function for the model. This pic is what happens when the next range, 0x4F10 ~ 0x4F23, is zero'd out. It would appear that this might have affected the root bone that halkun referred to earlier, the one that goes from the ground to the model's central point. But to make sure, here's a Youtube vid so people can see the behavior of the model in various situations:
http://www.youtube.com/watch?v=ni3Kse0YmKI

It's obvious that bone angles are defined in this section of model data, but I'm still not sure that bone lengths are defined here. In any case, I'm going to go section-by-section to see what parts of the model are affected. I'll get a list and pics up for that once I've gone through all of them.