This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
sm64:behavior_commands [2017/06/23 10:17] 180.76.15.134 ↷ Links adapted because of a move operation |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ======== Behavior Commands ======== | ||
- | The behavior layout commands define how the objects and Mario are initialized and interact. Like the [[sm64:geometry_layout_commands]], the behavior commands start with a type byte and have no length byte. | ||
- | |||
- | ===== Behavior Commands ===== | ||
- | |||
- | ==== 00: Start ==== | ||
- | Marks start of behavior. If haunted chair (4FD4) or mad piano (5024), it calls BehCommonInit (802A4120). If it is message panel (32E0), it sets 0x194 to 0x43160000 (150.0). | ||
- | |||
- | ''00 [<color darkgrey>TT</color>] [<color purple>AA AA</color>]'' | ||
- | |||
- | | <color darkgrey>T</color> | Type of object. Used to determine which linked list placed in. | | ||
- | | <color purple>A</color> | Might be a bit-field, but Behavior00 ignores them | | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 01: State Loop ==== | ||
- | Used by some small effects. if <color purple>A</color> > current 0x1F4, adds 1 to 0x1F4 of object, otherwise sets to 0. It loops obj->0x1F4 from 0 up to <color purple>A</color> - 1 and then back to 0. | ||
- | |||
- | ''01 00 [<color purple>AA AA</color>]'' | ||
- | |||
- | | <color purple>A</color> | obj->0x1F4 = (<color purple>A</color> >= obj->0x1F4) ? obj->0x1F4 + 1 : 0 | | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 02: Jump and Link? ==== | ||
- | Jumps into another behavior and changes obj->0x1D0. | ||
- | |||
- | ''02 00 00 00 [<color purple>AA AA AA AA</color>]'' | ||
- | |||
- | | <color purple>A</color> | Segmented address of behavior to jump to | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 03: Return? ==== | ||
- | Writes something to 0x1D0. jumps into behavior at object->0x1d4. | ||
- | |||
- | ''03 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 04: Jump ==== | ||
- | Jumps into another behavior. | ||
- | |||
- | ''04 00 00 00 [<color purple>AA AA AA AA</color>]'' | ||
- | |||
- | | <color purple>A</color> | Segmented address of behavior to jump to | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 05: Loop N ==== | ||
- | Loop specified amount of times. | ||
- | |||
- | ''05 00 [<color purple>AA AA</color>]'' | ||
- | |||
- | | <color purple>A</color> | Number of times to loop | | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 06: End Loop N ==== | ||
- | End 0x05 loop. | ||
- | |||
- | ''06 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 07: Infinite Loop ==== | ||
- | Jumps back 4 bytes (usually results in infinite loop). | ||
- | |||
- | ''07 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 08: Loop Start ==== | ||
- | Loop start. | ||
- | |||
- | ''08 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 09: Loop End ==== | ||
- | End of 08 loop. Behavior script normally ends with this, looping around ASM function (0x0C command). | ||
- | |||
- | ''09 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 0A: No Op ==== | ||
- | No operation. | ||
- | |||
- | ''0A 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 0B: Unused ==== | ||
- | No operation. Unused. | ||
- | |||
- | ---- | ||
- | |||
- | ==== 0C: Call Function ==== | ||
- | Calls ASM function. Usually used to call object init routine or looping routine between 0x08/0x09 commands. | ||
- | |||
- | ''0C 00 00 00 [<color purple>AA AA AA AA</color>]'' | ||
- | |||
- | | <color purple>A</color> | ASM routine to call | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 0D: Update Object ==== | ||
- | Used to offset X, Y, or Z position a bit. It's useless except for Dorrie. | ||
- | |||
- | ''0D [<color purple>AA</color>] [<color brown>BB BB</color>]'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | float | | ||
- | | obj->address += (float)B (special cases are 06, 07 and 08. 06 is X, 07 is Y, and 08 is Z-position) || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 0E: Sight Distance ==== | ||
- | Mostly used for sight distance, does nearly the same as 0x0D. | ||
- | |||
- | ''0E [<color purple>AA</color>] [<color brown>BB BB</color>]'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | float | | ||
- | | obj->address = (float)B (special case is 45 for sight distance) || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 0F: Texture Animate ==== | ||
- | Mostly used as texture animation rate. Same as 0x0D, but without float. | ||
- | |||
- | ''0F [<color purple>AA</color>] [<color brown>BB BB</color>]'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | u16 | | ||
- | | obj->address = B (special case is 1A for texture animation rate) || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 10: Special Parameter ==== | ||
- | Special Parameter. | ||
- | |||
- | ''10 [<color purple>AA</color>] [<color brown>BB BB</color>]'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | u16 | | ||
- | | obj->address += B (special case is 2A for interaction or 2F for Bparam2 rate) || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 11: Bit-set ==== | ||
- | Sets bits designated by mask <color brown>B</color> at object offset <color purple>A</color>*4+88. | ||
- | |||
- | ''11 [<color purple>AA</color>] [<color brown>BB BB</color>]'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | u16 | | ||
- | | ''obj->address |= B'' || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | |||
- | ==== 12: Bit-clear ==== | ||
- | Clears bits designated by mask <color brown>B</color> at object offset <color purple>A</color>*4+88. This is not used by any of the behavior scripts. | ||
- | |||
- | ''12 [<color purple>AA</color>] [<color brown>BB BB</color>]'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | u16 | | ||
- | | ''obj->address &= (B ^ 0xFFFF)'' || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 13: Add RNG ==== | ||
- | Used in dirt and arrow lift. Calls 80383BB0 (some RNG). | ||
- | |||
- | ''13 [<color purple>AA</color>] [<color brown>BB BB</color>] [<color darkgrey>CC CC</color>] 00 00'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | u16 | | ||
- | | <color darkgrey>C</color> | u16 | | ||
- | | obj->address = <color brown>B</color> + (80383BB0() >> <color darkgrey>C</color>) || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 14: Object Type? ==== | ||
- | Mostly used for object type and once for Y-speed. | ||
- | |||
- | ''14 [<color purple>AA</color>] [<color brown>BB BB</color>] [<color darkgrey>CC CC</color>] 00 00'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | float | | ||
- | | <color darkgrey>C</color> | float | | ||
- | | obj->address = (float)<color brown>B</color> * (float)<color darkgrey>C</color> || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 15: Float Multiply ==== | ||
- | Floating point multiple with float return from 80383CB4(). Used only in bubbles. | ||
- | |||
- | ''15 [<color purple>AA</color>] [<color brown>BB BB</color>] [<color darkgrey>CC CC</color>] 00 00'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | float | | ||
- | | <color darkgrey>C</color> | float | | ||
- | | obj->address = <color brown>B</color> + 80383CB4() * <color darkgrey>C</color> || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 16: Float Add ==== | ||
- | Floating point add with float return from 80383CB4(). Used only in water particles. | ||
- | |||
- | ''16 [<color purple>AA</color>] [<color brown>BB BB</color>] [<color darkgrey>CC CC</color>] 00 00'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | float | | ||
- | | <color darkgrey>C</color> | float | | ||
- | | obj->address = (float)<color brown>B</color> + 80383CB4() + (float)<color darkgrey>C</color> || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 17: Right Shift ==== | ||
- | Right shift C with return from 80383BB0(). Unused. | ||
- | |||
- | ''17 [<color purple>AA</color>] [<color brown>BB BB</color>] [<color darkgrey>CC CC</color>] 00 00'' | ||
- | |||
- | | <color purple>A</color> | Address = <color purple>A</color>*4+88 | | ||
- | | <color brown>B</color> | u16 | | ||
- | | <color darkgrey>C</color> | u16 | | ||
- | | obj->address = <color brown>B</color> + 80383BB0() >> <color darkgrey>C</color> || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 18: No Operation ==== | ||
- | Does nothing. Unused. | ||
- | |||
- | ''18 ?? ?? ??'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 19: No Operation ==== | ||
- | Does nothing. Unused. | ||
- | |||
- | ''19 ?? ?? ??'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 1A: No Operation ==== | ||
- | Does nothing. Unused. | ||
- | |||
- | ''1A ?? ?? ??'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | |||
- | ==== 1B: Change Model ID ==== | ||
- | Changes the model ID of current behavior. Used by Mr. I, Bowser flame spawn, and floating wood bridge. | ||
- | |||
- | ''1B 00 [<color darkgray>II II</color>]'' | ||
- | |||
- | | <color darkgray>I</color> | model ID | | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 1C: Load Child Object ==== | ||
- | Load child object and save child object pointer to 0x6C (automatically follows?). | ||
- | |||
- | ''1C 00 00 00 [<color darkgray>II II II II</color>] [<color purple>AA AA AA AA</color>]'' | ||
- | |||
- | | <color darkgray>I</color> | model ID | | ||
- | | <color purple>A</color> | segmented address of child object behavior | | ||
- | |||
- | Length: C | ||
- | |||
- | ---- | ||
- | |||
- | ==== 1D: Deactivate ==== | ||
- | Deactivates object. obj->active (0x74) = 0 | ||
- | |||
- | ''1D 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 1E: Drop to Ground? ==== | ||
- | Calls 80381794(). Drop to ground? and object->0xEC |= 0x2; | ||
- | |||
- | ''1E 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | |||
- | ==== 1F: Used for Waves ==== | ||
- | Sums two floats at offsets B and C and stores in offset A. Used for waves and bubbles. | ||
- | |||
- | ''1F [<color darkred>AA</color>] [<color darkgreen>BB</color>] [<color darkblue>CC</color>]'' | ||
- | |||
- | | <color darkred>A</color> | AddressA = <color darkred>A</color>*4+88 | | ||
- | | <color darkgreen>B</color> | AddressB = <color darkgreen>B</color>*4+88 | | ||
- | | <color darkblue>C</color> | AddressC = <color darkblue>C</color>*4+88 | | ||
- | | obj->addressA = obj->addressB + obj->addressC || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 20: Unused ==== | ||
- | Sums two values at offsets B C and stores in offset A? | ||
- | |||
- | ''20 [<color darkred>AA</color>] [<color darkgreen>BB</color>] [<color darkblue>CC</color>]'' | ||
- | |||
- | | <color darkred>A</color> | AddressA = <color darkred>A</color>*4+88 | | ||
- | | <color darkgreen>B</color> | AddressB = <color darkgreen>B</color>*4+88 | | ||
- | | <color darkblue>C</color> | AddressC = <color darkblue>C</color>*4+88 | | ||
- | | obj->addressA = obj->addressB + obj->addressC || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 21: Set Billboarding ==== | ||
- | Sets billboarding flag (0x04) in graph flags. | ||
- | |||
- | ''21 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 22: Set 0x10 flag ==== | ||
- | Sets 0x10 in graph flags. | ||
- | |||
- | ''22 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 23: Collision sphere size ==== | ||
- | Define the collision sphere size. | ||
- | |||
- | ''23 00 00 00 [<color darkred>XZ XZ</color>] [<color darkgreen>YY YY</color>]'' | ||
- | |||
- | | <color darkred>XZ</color> | X and Z sphere| | ||
- | | <color darkgreen>Y</color> | Y sphere | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 24: Nothing ==== | ||
- | Does nothing. Unused. | ||
- | |||
- | ''24 [<color darkred>AA</color>] [<color darkgreen>BB BB</color>]'' | ||
- | |||
- | | <color darkred>A</color> | Unused | | ||
- | | <color darkgreen>B</color> | Unused | | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 25: State Cycle ==== | ||
- | Increment obj->0x1F4 or cycle back to 0 when it reaches obj->AddressA. Only used in Bubble (Mario) behavior. | ||
- | |||
- | ''25 [<color darkred>AA</color>] 00 00'' | ||
- | |||
- | | <color darkred>A</color> | AddressA = <color darkred>A</color>*4+88 | | ||
- | | <code c>if (obj->0x1F4 < obj->AddressA - 1) { | ||
- | obj->0x1F4 += 1; | ||
- | } else { | ||
- | obj->0x1F4 = 0; | ||
- | }</code>|| | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 26: Loop? ==== | ||
- | Similar to behavior command 0x05, except parameter is only 1 byte. Unused. | ||
- | |||
- | ''26 [<color darkred>AA</color>] 00 00'' | ||
- | |||
- | | <color darkred>A</color> | Loops? | | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 27: Set Word ==== | ||
- | Store word B at address A of object. Always used with A = 0x26 (addressA = 0x120) to set initial [[sm64:animation]] with segmented address. | ||
- | |||
- | ''27 [<color darkred>AA</color>] 00 00 [<color darkgreen>BB BB BB BB</color>]'' | ||
- | |||
- | | <color darkred>A</color> | AddressA = <color darkred>A</color>*4+88 | | ||
- | | <color darkgreen>B</color> | value to store in AddressA | | ||
- | | obj->addressA = <color darkgreen>B</color> || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 28: Animates ==== | ||
- | Animates object by advancing [[sm64:animation]] pointer (obj->0x120). | ||
- | |||
- | ''28 [<color darkred>AA</color>] 00 00'' | ||
- | |||
- | | <color darkred>A</color> | animation number (*4) | | ||
- | | ''8037C658(obj, obj->0x120 + <color darkred>A</color>*4)'' || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 29: Load Child Object ==== | ||
- | Load child object. Only used in Koopa flag and poundable. | ||
- | |||
- | ''29 00 [<color darkred>AA AA</color>] [<color darkgreen>BB BB BB BB</color>] [<color darkblue>CC CC CC CC</color>]'' | ||
- | |||
- | | <color darkred>A</color> | Bparam for child object | | ||
- | | <color darkgreen>B</color> | model ID | | ||
- | | <color darkblue>C</color> | Segmented address of behavior | | ||
- | |||
- | Length: C | ||
- | |||
- | ---- | ||
- | |||
- | ==== 2A: Set Collision ==== | ||
- | Set collision data. | ||
- | |||
- | ''2A 00 00 00 [<color darkred>AA AA AA AA</color>]'' | ||
- | |||
- | | <color darkred>A</color> | Segmented address of collision pointer | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 2B: Set Collision Sphere ==== | ||
- | Set collision data. | ||
- | |||
- | ''2B 00 00 00 [<color darkred>AA AA</color>] [<color darkgreen>BB BB</color>] [<color darkblue>CC CC</color>]'' | ||
- | |||
- | | <color darkred>A</color> | X/Z sphere as int | | ||
- | | <color darkgreen>B</color> | Y sphere as int | | ||
- | | <color darkblue>C</color> | obj->0x208 = (float)<color darkblue>C</color> | | ||
- | |||
- | Length: C | ||
- | |||
- | ---- | ||
- | |||
- | ==== 2C: Spawn Object ==== | ||
- | Spawns object. Same as 0x1C, but stores child obj pointer to parent->0x6C. | ||
- | |||
- | ''2C 00 00 00 [<color darkred>AA AA AA AA</color>] [<color darkgreen>BB BB BB BB</color>] [<color darkblue>CC CC</color>]'' | ||
- | |||
- | | <color darkred>A</color> | model ID | | ||
- | | <color darkgreen>B</color> | Segmented address of behavior | | ||
- | |||
- | Length: C | ||
- | |||
- | ---- | ||
- | |||
- | ==== 2D: Set Init Position ==== | ||
- | Declare initial position. Saves positions to 0x164, 0x168, and 0x16C. Used in Dorrie, Fly guys, etc. to determine in which range they can move. | ||
- | |||
- | ''2D 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 2E: Sight Distance ==== | ||
- | Uselessly long version of 0E? | ||
- | |||
- | ''2E 00 00 00 [<color darkred>AA AA</color>] [<color darkgreen>BB BB</color>]'' | ||
- | |||
- | | <color darkred>A</color> | obj->0x200 = (float) <color darkred>A</color> | | ||
- | | <color darkgreen>B</color> | obj->0x204 = (float) <color darkgreen>B</color> | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 2F: Set Interaction ==== | ||
- | Set interaction (obj->0x130). Same as 27 2A. | ||
- | |||
- | ''2F 00 00 00 [<color darkred>AA AA AA AA</color>]'' | ||
- | |||
- | | <color darkred>A</color> | Interaction (see table below) | | ||
- | |||
- | ^ Interaction ^ Description ^ | ||
- | | 00000001 | Mario can hang from it | | ||
- | | 00000002 | Mario can pick it up | | ||
- | | 00000004 | Door | | ||
- | | 00000008 | Damages Mario (normal) | | ||
- | | 00000010 | Coin | | ||
- | | 00000020 | Nothing? | | ||
- | | 00000040 | Pole | | ||
- | | 00000080 | Damages Mario (can be punched, bounced on) | | ||
- | | 00000100 | Damages Mario (can be punched) | | ||
- | | 00000200 | Nothing (can be punched) | | ||
- | | 00000400 | Blows Mario away | | ||
- | | 00000800 | Warp door | | ||
- | | 00001000 | Star | | ||
- | | 00002000 | Warp hole | | ||
- | | 00004000 | Cannon | | ||
- | | 00008000 | Damages Mario (can be punched, bounced on) | | ||
- | | 00010000 | Replenishes health | | ||
- | | 00020000 | Bully | | ||
- | | 00040000 | Flame | | ||
- | | 00080000 | Koopa shell | | ||
- | | 00100000 | Damages Mario (can be punched, bounced on) | | ||
- | | 00200000 | Damages Mario | | ||
- | | 00400000 | Damages Mario (can be punched and bounced on) | | ||
- | | 00800000 | Message | | ||
- | | 01000000 | Makes Mario spin | | ||
- | | 02000000 | Makes Mario fall? | | ||
- | | 04000000 | Damages Mario | | ||
- | | 08000000 | Warp (Mario shrinks in) | | ||
- | | 10000000 | Damages Mario | | ||
- | | 20000000 | Electrocutes Mario | | ||
- | | 40000000 | Normal | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 30: Set Gravity ==== | ||
- | Set gravity. | ||
- | |||
- | ''30 00 00 00 [<color darkred>AA AA</color>] [<color darkgreen>BB BB</color>] [<color darkblue>CC CC</color>] [<color red>DD DD</color>] [<color green>EE EE</color>] [<color blue>FF FF</color>] [<color purple>GG GG</color>] [<color darkgrey>HH HH</color>]'' | ||
- | |||
- | | <color darkred>A</color> | obj->0x128 = (float)<color darkred>A</color> | | ||
- | | <color darkgreen>B</color> | obj->0xE8 = (float)<color darkgreen>B</color>/100 | | ||
- | | <color darkblue>C</color> | obj->0x158 = (float)<color darkblue>C</color>/100 | | ||
- | | <color red>D</color> | obj->0x12C = (float)<color red>D</color>/100 | | ||
- | | <color green>E</color> | obj->0x170 = (float)<color green>E</color>/100 | | ||
- | | <color blue>F</color> | obj->0x174 = (float)<color blue>F</color>/100 | | ||
- | | <color purple>G</color> | Ignored | | ||
- | | <color darkgrey>H</color> | Ignored | | ||
- | |||
- | Length: 0x14 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 31: ?? ==== | ||
- | Sets obj->0x190. Unused. | ||
- | |||
- | ''31 00 00 00 [<color darkred>AA AA AA AA</color>]'' | ||
- | |||
- | | <color darkred>A</color> | obj->0x190 = <color darkred>A</color> | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 32: Scale Object ==== | ||
- | Scale object uniformly, sets X, Y, Z scaling to A as percent. | ||
- | |||
- | ''32 00 [<color darkred>AA AA</color>]'' | ||
- | |||
- | | <color darkred>A</color> | scale value (percent) | | ||
- | | <code c>ScaleObject((float)A/100.0f;</code> || | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 33: Child Object Change ==== | ||
- | Clear flags in address of child object. | ||
- | |||
- | ''33 [<color darkred>AA</color>] 00 00 [<color darkgreen>BB BB BB BB</color>]'' | ||
- | |||
- | | <color darkred>A</color> | AddressA = <color darkred>A</color>*4+88 | | ||
- | | <color darkgreen>B</color> | bit values to clear | | ||
- | | obj->child(0x68)->addressA &= ~B || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 34: Texture Animate Rate ==== | ||
- | Clear flags in address of child object. Only used for texture animation rate (0x1A). | ||
- | |||
- | ''34 [<color darkred>AA</color>] [<color darkgreen>BB BB</color>]'' | ||
- | |||
- | | <color darkred>A</color> | AddressA = <color darkred>A</color>*4+0x88 | | ||
- | | <color darkgreen>B</color> | divide value at 0x8032d5d4 with this (see code below) | | ||
- | |||
- | <code c> | ||
- | if ((*0x8032d5d4 / B) == 0) { | ||
- | addressA = A*4 + 0x88; | ||
- | obj->addressA += 1; | ||
- | } | ||
- | return 0;</code> | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 35: Clear Graph Flag ==== | ||
- | Clears least significant bit of graph (obj->0x02 &= 0xFFFE). | ||
- | |||
- | ''35 00 00 00'' | ||
- | |||
- | Length: 4 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 36: Set Value ==== | ||
- | Store value B at address A. Unused. | ||
- | |||
- | ''36 [<color darkred>AA</color>] 00 00 [<color darkgreen>BB BB</color>] 00 00'' | ||
- | |||
- | | <color darkred>A</color> | AddressA = <color darkred>A</color>*4+0x88 | | ||
- | | <color darkgreen>B</color> | value (u16) | | ||
- | | obj->addressA = (u32)value || | ||
- | |||
- | Length: 8 | ||
- | |||
- | ---- | ||
- | |||
- | ==== 37: Spawn Something ==== | ||
- | Spawns something. Only used in waves generator and surface waves. | ||
- | |||
- | ''37 00 00 00 [<color darkred>AA AA AA AA</color>]'' | ||
- | |||
- | | <color darkred>A</color> | Spawn function address | | ||
- | |||
- | Length: 8 | ||
- | |||
- | ===== See Also ===== | ||
- | [[sm64:list_of_behaviors]] | ||
- | |||
- | ===== References ===== | ||
- | * https://sites.google.com/site/kazemario64/home/all-behavior-commands |