The tools are capable of modifying parameters relating to different objects, in other words how objects behave.
The idea is that when an object is loaded it copies this list of data into RAM and runs different actions using that data each frame or so.
"pointer" refers to the ID of each object. The
SDK2 and SDK3 editors both have a near full list of these (sprites.ini) which might make things a bit easier.
It might be helpful if rainbow felt like integrating that data into the editor?In the screenshot rainbow posted, he has loaded the object with ID 0x670, which is one kind of Bazza, typically seen in
Bazza's Blockade. I believe you'd load that by typing 0670 in the box at the top-right and clicking "Search".
The first line probably refers to the ROM address where this data was loaded, in this case $FF92CA = 0x3F92CA. Following that is a list of commands for this particular object.
The first one is command F9, which says to load more behaviours from the address $92AA in the same bank. This section is marked as a subroutine, which implies that multiple objects may use this command. Specifically, this subroutine is probably common to all the different Bazza objects, so each one will load it with the same F9::92AA command.
The first key in the subroutine is FF with a value of 01F8. Just a guess, but this might be related to graphics or audio loading as they only need to be done once per object. Someone will probably correct me if that's not the case.
The bracketed keys ([5C], [5E], [60], etc) are behaviours that have an associated value. Each one will change how the object behaves, and this is the primary purpose of the editor.
As for what each one does, well we don't know that so some experimenting is required.
- Code: Select all
[5C] - how many Bazzas are spawned at once
[5E] - the distance between spawns
[60] - how long it takes for a new spawn
[62] - ?
[38] - ?
Again, those behaviours are part of the 92AA subroutine, so they'll apply to all objects that use that subroutine.
Below that we have two more entries that aren't part of a subroutine, so we can deduce that they only apply to the 0670 object. Different Bazza objects might have different values for these.
- Code: Select all
[64] - spawn position X
[66] - distance to travel before disappearing? (might be positive or negative depending on direction?)
If you're very lucky you can sometimes guess what one of these commands might do based on the value. Other times you can find out by changing it and observing what effect it has in-game. Sometimes different values have no obvious observable effect so they might require deeper code analysis.
Also be aware that values might not be interpreted as a number, but as a number of different bits that represent flags. e.g. if this bit is set do this, otherwise do this... etc. These are probably a bit less common but they might still come up. The 0670 Bazza object goes from right-to-left, whereas the ones that go from left-to-right have an additional [60] parameter might be flag-based.
—
I believe the main object commands have been covered in-depth before by someone, somewhere. The Fx commands in particular seem familiar, but I can't find anything about it right now.