- Trial Member: Trial Members
- Active Posts:
- 4 (0.01 per day)
- Most Active In:
- Engineering & Reverse Engineering (2 posts)
- 23-May 11
- Profile Views:
- Last Active:
- Jun 02 2011 12:40 PM
- Age Unknown
- Birthday Unknown
- Not Telling
- Click here to e-mail me
23 May 2011 - 06:43
Posts I've Made
27 May 2011 - 03:13 AMI don't think I understand quite how chunks work (or where they are when decompressed into ram).
I've been working with the object status table, and am not sure how to identify objects (other than player1 and player2). It sounds like there's a pointer somewhere to entries in those lists (sonic3/knuckles), but is this associated with the object's status in ram? This looks like the easiest way to identify an object.
I notice a lot of objects with dimentions of 0 or 1. I don't know what these could be (I'm working with AIZ at the moment).
23 May 2011 - 01:44 PMI'm trying to write a program that monitors save states and can give verbal descriptions of things like level layouts.
The scripting language I'm using is decidedly not the best for this task, mostly because it loads binary files as strings. It can convert them into hex, which basically doubles the size. So I'm not confident in my ability to find my way around the data.
I'm working with Sonic 3 & Knuckles (Yeah, pretty sure I should have started with Sonic 1 or 2... it was the easiest to get to when I started. No sense in changing games after I've gotten into it, right?)
I've been able to track down basic variables all fine and well. I'm a little worried that the address I got for the master level trigger appears to be a byte off from where the guides say it should be, but the number of rings collected is right (I blame the method I'm using for looking at the data).
Where I'm hitting problems is level layout things. I've read the Nemesis guide and the more updated SCHG guide on this several times. I've found what could be the layout header, but I can't make sense of what comes after that.
I don't need anything related to the appearance of things—tracking downs objects, identifying them, and giving their position is the most of it.
Pretty sure this has been done, since level editors exist. Those don't help me much, though.
It looks like one of three things, here. 1, I'm completely lost with how I'm doing this (is layout data even saved in a save state?); 2, the method I'm using to examine the data is screwing with the offsets; 3, I'm just really confused by how level layouts are handled (pointers and different-sized block-mappings all over the place are hard to keep straight with my lack of experience).
I'm kinda hoping it's 3, as in that case I could probably just show my numbers and see if anyone can tell me what I'm doing wrong.
Right now, I'm looking for layout header data at $8000 and $A478. To find where my script put them, I multiply by 2 and convert to decimal. So the indeces my program checks internally are 65536 and 84208. If it helps, the program looks for rings internally at 148786, and it looks like the MLT is at 144624-144625.
(I'm rather confused by how well this scripting language I'm using works with hex. Hopefully it'll let me enter hexadecimal values so I don't have to convert all the time.)
... So... any idea what I'm doing wrong? :-/
CAE Jones hasn't added any friends yet.