+  RHDN Forum Archive
|-+  Romhacking
| |-+  General Romhacking
| | |-+  Searching for Pointers in Chrono Cross (PSX) -- Any Advice?
Pages: [1]
Author Topic: Searching for Pointers in Chrono Cross (PSX) -- Any Advice?  (Read 1 times)
FaustWolf
Guest
« on: March 12, 2008, 09:39:18 am »

Hey all, the Compendium is finalizing its Guile > Magil hack; thanks for the help on patching!

I've found that *really* interesting Chrono Cross hacks will require pointer changing. Say you want to paste an enemy model's data over a main character's data -- unless the enemy file size is smaller than the player character's, it will likely run into other data and the game will freeze in real-time. But with pointers, I imagine it would be possible to alter where the game looks for data. Or better yet, perhaps it would be possible to accomplish a model switch just by swapping the appropriate pointers.

I've examined the first game CD's Table of Contents and found that these aren't real "pointers" -- the TOC seems to be a list of file locations measured in 2048-byte sectors, but changing values in the TOC has absolutely no effect in-game.

If anyone's curious about the Chrono Cross Table of Contents, you can see our investigation at the Compendium:
http://www.chronocompendium.com/Forums/index.php/topic,5181.0.html


But on to my question for you all -- is there any "best" way for a hacker to go about finding pointers for graphical data in a PlayStation game?

I've read Duo's PlayStation pointer doc (http://www.romhacking.net/docs/372/), which says that one needs to dump memory from pSX using the debugger. I dumped the r3000 processor memory, and got what appears to be 940kb of data from the game executable. Duo's doc was for text though, and I'm not sure how much it's going to help in finding graphical pointers.

In the game executable, I can see instructions like ()kzgetmodel in the ASCII sidebar of my hex editor. Pointers wouldn't directly follow these instruction sets by any chance, would they?

EDIT: From what Gemini tells me at the Compendium, there's no surefire method to finding pointers. I guess I'd be interested in knowing what pointers other people here have encountered in specific games and generally where in the game CD these pointers were stored.
« Last Edit: March 12, 2008, 10:10:48 am by FaustWolf »
akadewboy
Guest
« Reply #1 on: March 12, 2008, 10:35:26 am »

Just a warning, I noticed there's a typo in that pointer doc.

Quote
1. Find address in game file: 000B23C4
2. Find address in memory:  000B23C4
3. Find difference: C1BC4-B23C4=F800
4. Add difference to game file: B23C4+F800=C1BC4
5. Remove leading digit: 1BC4
6. Reverse last two bytes: C41B
7. C41B is the pointer address.

#2 should be:
2. Find address in memory:  000C1BC4




I don't know about graphic pointers, but I can give you some examples of text pointers.
Pointers can be practically anywhere in the file, take a look at this post about hacking PSP games:
http://z15.invisionfree.com/ImpossibleHAX/index.php?s=c63faf706eb6f18a40b985a09245bfa8&showtopic=11

Here's another example about pointers. In the PSP game that I am hacking I discovered that in one file ALL the pointers are at the very top of the file. Here's a screenshot:

« Last Edit: March 12, 2008, 01:27:43 pm by akadewboy »
FaustWolf
Guest
« Reply #2 on: March 17, 2008, 05:26:36 pm »

Thanks akadewboy. I've found that Chrono Cross handles text pointers the exact same way within the executable at least. For example, character names are stored in the executable, and preceding the names is a pointer table. Rinse and repeat with tech names, etc. But what makes this easy is that the various name data and the pointer tables are stored in the executable, and right next to each other. I'm not really sure where to go with the graphics pointers, as the graphics and the pointers are going to be stored in vastly different locations.

This is going to be a rather weird question, but does anyone know of a hex editor or other utility capable of finding differences between hex entries of specified length? For example, I suspect that the pointer table for Chrono Cross' character models will be set up with a four-byte stride (four bytes per entry), and that the values will be listed in sectors. I know the length of the various files in terms of sectors; therefore, if I could search for differences between 4-byte entries, I'd very likely be home free.
Pages: [1]  


Powered by SMF 1.1.4 | SMF © 2006-2007, Simple Machines LLC