|
Time: Now - Date: Today - Weather: What can be seen outside. - Mood: How it feels. Answer to the universe: 42
|
Originally posted by yoshiman
It was me who created the pick up Peach code as can be viewed on YouTube (search for yoshielectron). The reason why Peach appears as she should is because I've bothered to include her animation pointer.
One pointer indicates which gfx structure the object uses. And for animated objects you use the animation pointer otherwise you get a messed up object.
Oh, so you're that legendary James guy? Welcome to the forum!
I've known about your site since quite a while, there are many very interesting discoveries on it. I've been thinking of emailing you, but then the laziness bug bit me (it wouldn't be the first time...).
As I understand it, you're specialized in the RAM hacking side of Super Mario 64. Using the Equalizer, which is a super powerful GameShark-type device, you've reverse-engineered some of the mechanics behind the SM64 engine.
But what you've been stumbling on is different from what's edited by TT64, and it's actually a part I don't know much about (except from reading your info). While TT64 edits the level commands in the ROM that place objects in levels, what you've been editing is the "live" variables and parameters in RAM of the objects that are currently in the game as you play it. (You may already know that, but I'm explaining it for everyone else)
The 608 bytes data structures you're talking about on your site don't exist in the ROM as is.
The 0x24, 0x42 and 0x43 commands that TT64 can edit are the macro commands that initialize these data structures as the level is created.
For example, a 0x24 command may place an object at an X, Y and Z position which is essentially, its starting pos. When the level is initialized a 608 bytes structure is created in one of the 240 slots in RAM . Then, the X, Y and Z variables in that RAM structure may change according to the behavior assigned to the object. Note that a level command may create more than one structure thus using more than one slot, for example: the cannon base will spawn the cannon itself as another RAM object, which will itself spawn a bubble object if it's a bubble cannon.
You end up having more control over objects when you edit these RAM variables, because more parameters are available to be modified. For example, the 0x24, 0x42 and 0x43 commands don't include variables for size, but the 608 bytes RAM objects have width, height and depth variables.
While there are ways to edit some geometry layout commands in ROM to change the global size of an object, not all models include a size command, and changes will affect ALL objects of this type. If you changed the Flyguy enemy model to be 10x bigger by editing a geometry layout command in ROM (or scaling vertices), every Flyguy would appear this size in the game. On the other hand, changing the w, h and d variables in the RAM structure can be done on individual objects in the current level, so you could have Flyguys of various sizes.
So the thing is, many of your codes can't be easily transformed into an .IPS (or .PSF) patch, because the ROM level commands are not powerful enough to control all of the same variables, which are generally controlled by ASM functions called by the behavior code.
With some recent discoveries in animation command hacking tough, I could recreate the pickable Peach object mod as a ROM hack.
Still, there are tons of things you've discovered that can be useful to ROM editing and the advancement of SM64 hacking. As we'll begin to understand the mechanism that go from a level command in ROM to a 608 bytes data structure in RAM, it may eventually be possible to create a new "super" level command that can directly set all of these parameters, so we could set up levels with objects like boxes of different width, height and depth, much like the GoldenEye engine is able to do. That will require some ASM hacking for sure, but it would be worth it.
Anyway, maybe a whole thread could be created about hacking these RAM objects, and obviously you're welcome to participate in it 
____________________
|
  |
|
|