Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - glennxserge

Pages: [1] 2 3
1
Chrono Cross Modification / Re: Element Grid Growth Formula
« on: July 26, 2023, 01:17:34 am »
Ah, scratch that.  The data on disc isn't being used in this case, which is really strange because it matches exactly what's in ram.  But, that just means I need to keep tracing this upstream in the game execution.  I think I'm close to finding the answer

2
Chrono Cross Modification / Re: Element Grid Growth Formula
« on: July 23, 2023, 04:53:20 pm »
   Made some progress tracking down the lookup table.  I was able to trace execution through the star level up routine and find where it's pulling data from.  The game reads in a block of data from 0x13B6B370 on disc 1 (sector mm,ss,ff == 31,16,71), and stores it in memory at 0x80101448.  I don't understand how this data is formatted, it seems obfuscated in a way.  But I did verify it's responsible for which slots open up at specific levels.  If anyone wants to step through it in a debugger, the instruction execution for using this table starts here (after a battle if a star is earned): 801EF130

   The best summary I can make is that the game iterates over this data for the number of current star levels in 16 byte strides and uses the table data with some bit manipulation to determine which slot opens.  It then ORs the value onto another table at 0x80071C7C
   This second table is the current state of unlocked slots for all 45 characters in the game.  It's stored as a 2 byte pair of grid bitmasks.  As the star level increases, this table will eventually match the grid bitmasks defined in the character stat blocks
 
   Once this second table has been updated, the routine finishes by iterating across each 2 byte pair, shifting and masking for each slot, and checks the low bit to see if the slot is unlocked.  If that is the case, then the game clears the seventh bit of the character stat block's low byte pair (0x4000 becomes 0x0000), which makes the slot usable.

I still need to dig into that first table to try and understand how it's formatted.  But at least now we know where the data lives on disc.

3
Chrono Cross Modification / Re: Element Grid Growth Formula
« on: July 20, 2023, 04:16:51 pm »
I managed to run the full test on all star levels from 1-99 with all unknown slots checked too.  Ended up with the same result as you, F-man.  So it looks like growth table 0 (Serge, Kid, Guile, etc..) are bound by this leveling chart, regardless of their specific element grid availability:
Code: [Select]
[  22  ][  31  ][  39  ][      ]       ][      ][      ][  78  ]
[  19  ][  20  ][  24  ][  30  ][      ][      ][  69  ][  72  ]
[  12  ][  14  ][  16  ][  23  ][  36  ][  60  ][  63  ][  66  ]
[  07  ][  08  ][  09  ][  13  ][  21  ][  34  ][  46  ][  48  ]
[  00  ][  00  ][  00  ][  05  ][  11  ][  18  ][  26  ][  37  ]
[  01  ][  02  ][  03  ][  10  ][  15  ][  29  ][  35  ][  41  ]
[  04  ][  06  ][  25  ][  28  ][  33  ][  40  ][  43  ][  44  ]
[  17  ][  27  ][  32  ][  47  ][      ][      ][      ][  75  ]

Unfortunately, that means, the next test is chasing pointers and disc reads to figure out where that table lives.  Will let you know if I find anything.

4
Chrono Cross Modification / Re: Element Grid Growth Formula
« on: July 19, 2023, 03:49:26 pm »
That's a good test, F-man.  How are you incrementing the star level in game?  I'm taking a look at this again since I'm working through the character customization part of my tool.  I wasn't sure if the growth pattern was explicit, or something like: "at star level 1 an arbitrary first level slot opens", and then the grid layout of the character determined which slot matched that criteria.  So I did a similar test with star levels (but less complete than yours :wink:)

I tested using the grid bit masks in the player stat block to turn off the element slot that Serge learns at star level 1, and then fought the first boss.  The star level didn't yield any slots at all, which seems to imply that element growth is specifically hard coded somewhere.  I guess it's good to know that's the case, but it would be nice to have a better answer for where that information is stored. 

Oh, and one other thing that I discovered.  The stat blocks for characters only seems to apply at the point they are recruited.  So for Serge, making edits to his grid shape only worked if I started from a save state right as he's waking up at the beginning of the game.  There's probably more nuance here, but that's the only reliable way I've been able to test it.

5
Chrono Cross Modification / Re: Drop tables
« on: January 08, 2023, 03:22:46 am »
Thanks F-man for reviving this thread.  Believe it or not, it's rather timely  :lol:
I'm finishing up work on my own tool for editing parts of the game, but it only changes discreet, fixed size blocks of data (no compressed files since I'm poking values directly into the bin).  So I can only edit things like enemies, characters, shops, and elements.  Just yesterday I was thinking I should give the purple cat tools a check to see if I could incorporate battlescript, drop tables, and eins files into my application, but wasn't sure if it would work.  Thanks for confirming!  I'm going to give this a try too.

6
Chrono Cross Modification / Re: Element Grid Growth Formula
« on: December 06, 2022, 02:42:55 am »
Thanks, ZeaLitY, I'm still pluggin' away when I have time.  I'll let you know if I learn anything new, but it's slow going.

7
Chrono Cross Modification / Re: Element Grid Growth Formula
« on: August 26, 2022, 03:26:19 am »
Hey Grobyftw!  Thanks for sharing that, lots of good details in there  :lol:

Yeah, I tried finding some kind of lookup tables that represent the 7 specific growth patterns but I didn't have any luck.  Hard to search for something without knowing how the data is packed.  I should give this another look, after I read through your doc.

8
Thanks, trig.  That's super helpful.  I'll see if I can get that extension built and installed.  Good note about the missing data folder, I think I ran into something similar.  Nice to see though that this is still working in the current release.

Your ghidra output is looking about how I'd expect.  That is to say, all the work left ahead is making sense of the code in context of the game and renaming all the generic symbols :lol:

And thanks, Vehek for the additional signatures, those seem to line up and expand on the ones in trig's output.  These will be helpful in understanding what each function is trying to do.  I'll play around with this some more and see what I can find.

Also stumbled on TDR as well when I was looking around: https://www.beneaththewaves.net/Software/This_Dust_Remembers_What_It_Once_Was.html
An unwieldy name, but seems promising as a tool.

9
I don't have the PC version, but that's definitely worth a shot.  I wonder if the debug symbols you'd get are associated more with the emulation layer than the game execution, but not sure.

I took a look at using Ghidra to start analyzing the game.  I used ISOBuster to pull the game executable out: SLUS_010.41.  You have to set the language architecture to MIPS, default, 32, little endian, but it chugged through and made some sense of it.  I'm not sure it's starting in the right place though as it gets hung up eventually decompiling at 0004E868; constructor error.

I wasn't able to get the PSYQ extension stuff working through ghidra_psx_ldr, but I imagine some of those overlays will make a lot more sense with general PSX engine stuff identified.

Has anyone else successfully built ghidra_psx_ldr for Ghidra 10.1.4?

10
This is awesome!  Good find

11
Chrono Cross Modification / Re: Element Grid Growth Formula
« on: May 17, 2022, 07:10:56 pm »
Figured out a couple more things that are worth documenting, that I found weren't identified in the modification pages for enemy data: https://www.chronocompendium.com/Term/2535.html.  The player characters actually share the exact same data block format, and a couple of the missing 'unknown' bytes from the enemy section are used for characters.

Relevant to this post, byte 0x03 (previously unknown) is some kind of offset for which grid element growth table to use.  There are 8 used growth types, with most of them being Pip (uses 3,4,5, and 6 for his various forms), and Harle uses 7.  Serge and friends use 0 for the most part, and Viper and associates all seem to use 1.  I'll get a complete list as I keep digging.  I need to see if I can find an explicit lookup table associated with that byte offset, but this does seem to be the way the game determines which slots become available for characters at specific star levels.  I'll keep checking.

The other unknown byte from that link, is 0x1F.  This is the character stamina attribute.  It's listed in the block in the full integer form, the game must divide by 10 to get the decimal point, but I've verified that this is the stat that's used to regenerate character stamina.  It makes sense this wouldn't be used for enemies since they use a different attribute to determine their turn order.

Alright, back to looking for the element tables...

12
Chrono Cross Modification / Element Grid Growth Formula
« on: April 30, 2022, 01:23:52 am »
Hi everyone, I'm poking around in some of the character stats trying to work at a few details about how the element grids function.  And I think I've mostly sorted out out the bitmasks that enable grids as well as how they are initially set when a character joins your party.  But I'm running into trouble understanding how the game determines which slot to open up at what level.  I'm not sure if it's set explicitly in some other data block or if there's a formula related to star level.

I'll use Serge's block as an example (from :MKL122788's character gamefaq)
Code: [Select]
[  22  ][  31  ][  39  ][      ][      ][      ][      ][      ]
[  19  ][  20  ][  24  ][  30  ][      ][      ][      ][      ]
[  12  ][  14  ][  16  ][  23  ][  36  ][      ][      ][      ]
[  07  ][  08  ][  09  ][  13  ][  21  ][  34  ][  46  ][  48  ]
[  00  ][  00  ][  00  ][  05  ][  11  ][  18  ][  26  ][  37  ]
[  01  ][  02  ][  03  ][  10  ][  15  ][  29  ][  35  ][  41  ]
[  04  ][  06  ][  25  ][  28  ][  33  ][  40  ][  43  ][  44  ]
[  17  ][  27  ][  32  ][  47  ][      ][      ][      ][      ]

At star level 0, there is one open slot in level 1, 2, and 3, on the fourth row, which is basically the center of the grid.  This is the case for every character, except Sprigg because she has no low level elements.  The rest of the slots are denoted with a number indicating which star level they will be unlocked.  I can't find anywhere that determines this growth pattern, and it's varies quite a bit character to character.

Referencing the stat data block for Serge at 0x13B721C8:
Code: [Select]
xx   00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
   - -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
00 - 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00
01 - 00 00 00 00 01 40 32 00 09 05 55 08 07 07 0A 0A
02 - 20 00 96 00 00 00 00 00 00 00 00 00 00 00 00 00
03 - FC 03 FC 03 FC 03 F8 03 F0 01 E0 01 E0 01 E0 01
04 - 00 40 00 40 00 40 00 40 69 40 00 40 00 40 00 40
05 - 00 40 00 40 00 40 00 40 55 40 00 40 00 40 00 40
06 - 00 40 00 40 00 40 00 40 00 40 A0 C0 00 40 00 40
07 - 00 40 00 40 00 40 00 40 00 40 00 40 00 40 00 40
08 - 00 40 00 40 A1 C0 00 40 00 40 00 40 00 40 00 40
09 - 00 40 00 40 A2 C0 00 40 00 40 00 40 00 40 00 40
0A - 00 00 7B 00 32 14 00 00 00 00 00 00 00 00 00 00

Line 03 is the bitmask series (2 bytes per grid level), that indicate the final grid shape
Line 04-09 are the specific element slot values (2 bytes per value, with the upper nibble of the high byte being a flag for slot behavior; bit 7 means occupied for stuff like a tech, bit 6 is default)

I don't see any other areas of the data block that would indicate which slots open at what level.  Does anyone know more about this? 

13
Chrono Cross Modification / Re: Chrono Cross: The Scars of Time
« on: April 24, 2022, 08:14:41 pm »
Really interesting ideas in your write up.  I like the reduced cast as a way of focusing on meaningful character interactions.  Excited to see where you take this.

14
Are you talking about Wazuki's in game model we see during the Chronopolis flash back with Miguel?  I'm not sure if anyone has specifically dumped that model for the type of project you are interested in, but I know someone did this for Serge's model and textures and got him loaded into blender.  If you did something similar with Wazuki you could set up your own turntable reference. 

I think there is a good thread over here about the specifics of dumping models for use in blender: https://www.chronocompendium.com/Forums/index.php?topic=12461.msg223731#msg223731

15
Chrono Cross Modification / Re: Some usefull Hex list
« on: March 21, 2022, 06:22:08 pm »
One other note on the Element Shop List data Grobycftw posted.  I noticed when editing the Arni shop that the game only reads until the end of the block of data or until it sees a zero entry.  Which means if you had a series of elements like: AquaBeam, Tablet, empty, Fireball, Uplift; only the first two would make it into the shop and anything after gets ignored. 

Pages: [1] 2 3