strat scripts: all 434 vm opcodes named from groove.exe handlers (argonaut names via croc 2 lineage), own assembly syntax with byte-exact round trip over all 1461 code units, script view and script panel in the editor, editing values with undo, custom object types from script or clone, manual chapter with the bucky circle tutorial
This commit is contained in:
1 parent
b36a366240
commit
2386443fac
32 files changed
+5983
-5
No files matched your search
@@ -179,3 +179,12 @@ dialog.Viewport navigation* = 04-navigation.md#navigation-presets
|
||||
dialog.Keyboard shortcuts = 19-shortcuts.md
|
||||
dialog.Shortcut sheet = 19-shortcuts.md
|
||||
dialog.Getting started = tutorial-first-level.md
|
||||
|
||||
# ---- strat scripts
|
||||
panel.strats.script = 22-strats.md#the-script-panel
|
||||
inspector.x:Script = 22-strats.md#the-script-panel
|
||||
action.strats.show = 22-strats.md#the-script-panel
|
||||
action.strats.newType = 22-strats.md#your-own-object-types
|
||||
dialog.Edit script constant = 22-strats.md#changing-numbers
|
||||
dialog.New object type from script = 22-strats.md#your-own-object-types
|
||||
dialog.Clone* = 22-strats.md#your-own-object-types
|
||||
@@ -0,0 +1,435 @@
|
||||
# opcode name operands pops pushes semantics confidence reference (Croc 2 PSX jump table / Croc 1 name)
|
||||
0x00 nop_0x00 - 0 0 No-op (shared empty handler 00426500); unused in levels. high stCommandError
|
||||
0x01 hide imm 0 0 arg!=0 sets, arg==0 clears flag 0x1000000 in +0xE8; renderer and shadow pass skip strats with this bit, so it hides the strat. medium stHide
|
||||
0x02 skipArgs count 0 0 Inline block: count word, then count push instructions (0x44 one word, 0x45/0xea two words) that are skipped without executing; data block read by 0x0c event descriptors (same use count as 0x0c). medium -
|
||||
0x03 print count 0 0 Debug print with output stripped: skips count inline push instructions like 0x02 and advances debug text line y DAT_006d9db8 by 12 (reset to 0x20/0x48 each frame). medium stPrint
|
||||
0x04 pushVar var 0 1 Pushes own variable n (+0xF4 array). high stLocal
|
||||
0x05 pushCodeWord rel 0 1 Pushes the 32-bit word at pc+arg*4 (inline data in the code stream, pc = next instruction). high -
|
||||
0x06 pushGlobal global 0 1 Pushes global n (0x6D9E8C[n]). high stGlobal
|
||||
0x07 pushProp prop 0 1 Pushes own property n via FUN_00550E60(self,self,n). high stAlienVar
|
||||
0x08 pushVarAddr var 0 1 Pushes address of own variable n (for 0x47/0x48/0x4d). high stLocalAddress
|
||||
0x09 pushCodeAddr rel 0 1 Pushes address pc+arg*4 (address of inline code-stream data word). high -
|
||||
0x0a pushGlobalAddr global 0 1 Pushes address of global n. high stGlobalAddress
|
||||
0x0b pushPropAddr prop 0 1 Pushes address of own property n (FUN_005509F0(self,self,n)). high stAlienVarAddress
|
||||
0x0c onEvent rel,imm 0 0 Installs event handler slot (2nd word) in table +0xF8 (16-byte slots): descriptor at word pc+1+off holds type, param, rel code address of the handler; type 0x40 = timer (param converted to frames), types 0x80/0x100 enable player-distance tracking (+0xEC bit 0x4000). high -
|
||||
0x0d clearEvent imm 0 0 Clears event handler slot arg (type word := 0). high -
|
||||
0x0e disableEvent imm 0 0 Disables event handler slot arg (sets bit 31 of its type word). high -
|
||||
0x0f enableEvent imm 0 0 Re-enables event handler slot arg (clears bit 31 of its type word). high -
|
||||
0x10 callYield rel 0 1 Pushes return address (next pc), jumps to next+arg*4 and yields (+0xE8 bit 2); unused in levels. high stJsr
|
||||
0x11 call rel 0 1 Pushes return address (next pc) and jumps to next+arg*4 without yielding; the call form actually used by the compiler. high stJsrImm
|
||||
0x12 jzYield rel 1 0 Pops cond; if 0 jumps to next+arg*4; always yields this frame. high stBeq
|
||||
0x13 jnzYield rel 1 0 Pops cond; if !=0 jumps to next+arg*4; always yields this frame. high stBne
|
||||
0x14 jz rel 1 0 Pops cond; if 0 jumps to next+arg*4. high stBeqImm
|
||||
0x15 jnz rel 1 0 Pops cond; if !=0 jumps to next+arg*4; unused. high stBneImm
|
||||
0x16 jmp rel 0 0 Jumps to next+arg*4. high stJumpImm
|
||||
0x17 switch rel 1 0 Pops value; table at next+arg*4+4: count, then entries (case value as 0x44 short or 0x45 imm, then rel offset); on match jumps to next+offset*4, otherwise falls through. high stIndex_Jump
|
||||
0x18 pushParentVar var 0 1 Pushes variable n of the linked strat at +0xC (parent/creator). high stExt_Local
|
||||
0x19 pushParentVarAddr var 0 1 Pushes address of variable n of the +0xC strat. high stExt_LocalAddress
|
||||
0x1a pushParentProp prop 0 1 Pushes property n of the +0xC strat. high stExt_AlienVar
|
||||
0x1b pushParentPropAddr prop 0 1 Pushes address of property n of the +0xC strat; unused. high stExt_AlienVarAddress
|
||||
0x1c pushPlayerProp playerProp 0 1 Pushes property n of the player strat (DAT_006D9E1C, set by 0xb5), 0 if none. high stPlayer_AlienVar
|
||||
0x1d pushPlayerPropAddr playerProp 0 1 Pushes address of player property n (0 if no player); unused. high stPlayer_AlienVarAddress
|
||||
0x1e pushCameraProp prop 0 1 Pushes property n of the camera strat (DAT_006D9E28, set by 0xc8), 0 if none. high stCamera_AlienVar
|
||||
0x1f pushCameraPropAddr prop 0 1 Pushes address of camera property n (0 if none); unused. high stCamera_AlienVarAddress
|
||||
0x20 pushTargetProp prop 0 1 Pushes property n of the camera target strat (DAT_006D9E30, set by 0xc9 from the player character strats), 0 if none. medium stTarget_AlienVar
|
||||
0x21 pushTargetPropAddr prop 0 1 Pushes address of target property n (0 if none); unused. medium stTarget_AlienVarAddress
|
||||
0x22 error_0x22 - 0 0 Prints "stCollide_AlienVar" not-implemented error; unused. high stCollide_AlienVar
|
||||
0x23 error_0x23 - 0 0 Prints "stCollide_AlienVarAddress" not-implemented error; unused. high stCollide_AlienVarAddress
|
||||
0x24 pushTarget2Prop prop 0 1 Pushes property n of the second target strat (DAT_006D9E34, set by 0xca), 0 if none; unused. medium stTarget_AlienVar
|
||||
0x25 pushTarget2PropAddr prop 0 1 Pushes address of target2 property n (0 if none); unused. medium stTarget_AlienVarAddress
|
||||
0x26 pushBossProp prop 0 1 Pushes property n of the strat in DAT_006D9E24 (set by 0xef), no null check; unused. low stBoss_AlienVar
|
||||
0x27 pushBossPropAddr prop 0 1 Pushes address of property n of the DAT_006D9E24 strat; unused. low stBoss_AlienVarAddress
|
||||
0x28 pushDialogProp prop 0 1 Pushes property n of the strat in DAT_006D9E2C (set by 0x113, used by NPC/puzzle strats), 0 if none. low stDialog_AlienVar
|
||||
0x29 pushDialogPropAddr prop 0 1 Pushes address of property n of the DAT_006D9E2C strat (0 if none); unused. low stDialog_AlienVarAddress
|
||||
0x2a shadow imm 0 0 arg!=0 sets, 0 clears +0xE8 bit 0x20 (shadow on; shadow pass requires it plus size from 0x59 and texture from 0x5a). medium stShadow
|
||||
0x2b jmpYield rel 0 0 Jumps to next+arg*4 and yields this frame (loop back-edge / wait one frame). high -
|
||||
0x2c nop_0x2c - 0 0 No-op (shared empty handler); unused. high -
|
||||
0x2d nop_0x2d - 0 0 No-op (shared empty handler); unused. high -
|
||||
0x2e nop_0x2e - 0 0 No-op (shared empty handler); unused. high -
|
||||
0x2f flagEC10000 imm 0 0 arg!=0 sets, 0 clears +0xEC bit 0x10000 (with 0x8000 both set the strat skips player-distance updates; property 0xf2 reads it); meaning unclear. low -
|
||||
0x30 trackPlayer imm 0 0 If no player yet: re-executes itself next frame (pc-=4, yield); else arg sets/clears +0xEC bit 0x4000 = update distance to player each frame (+0x148). medium -
|
||||
0x31 flagEC2 imm 0 0 arg sets/clears +0xEC bit 2 (checked by collision/floor code via +0xC0, readable as property 0x1f). low -
|
||||
0x32 flagE8_80000000 imm 0 0 arg sets/clears +0xE8 bit 31; unused. low -
|
||||
0x33 flagEC100 imm 0 0 arg sets/clears +0xEC bit 0x100 (tested in the collision response, skips floor handling; used by drops/projectiles/rollercoaster). low -
|
||||
0x34 flagEC200000 imm 0 0 arg sets/clears +0xEC bit 0x200000 (used by NPC helpers/canoe/llama). low -
|
||||
0x35 nop_0x35 - 0 0 No-op (shared empty handler); unused. high -
|
||||
0x36 nop_0x36 - 0 0 No-op (shared empty handler); unused. high -
|
||||
0x37 popPlayerProp playerProp 1 0 Pops value and stores it into player property n (discarded if no player). high -
|
||||
0x38 popCameraProp prop 1 0 Pops value into camera strat property n (discarded if none). high -
|
||||
0x39 popTargetProp prop 1 0 Pops value into camera target (DAT_006D9E30) property n (discarded if none). medium -
|
||||
0x3a popTarget2Prop prop 1 0 Pops value into DAT_006D9E34 strat property n (discarded if none); unused. medium -
|
||||
0x3b popDialogProp prop 1 0 Pops value into DAT_006D9E2C strat property n (discarded if none); unused. low -
|
||||
0x3c error_0x3c - 0 0 Prints "stCollide_AlienVar_Equals" not-implemented error; unused. high -
|
||||
0x3d popBossProp prop 1 0 Pops value into DAT_006D9E24 strat property n (no null check); unused. low -
|
||||
0x3e popParentVar var 1 0 Pops value into variable n of the +0xC strat. high -
|
||||
0x3f popParentProp prop 1 0 Pops value into property n of the +0xC strat; unused. high -
|
||||
0x40 popProp prop 1 0 Pops value into own property n (via FUN_005509F0 address). high -
|
||||
0x41 popVar var 1 0 Pops value into own variable n. high -
|
||||
0x42 popCodeWord rel 1 0 Pops value into the code-stream word at pc+arg*4 (self-modifying inline data, pairs with 0x05). high -
|
||||
0x43 popGlobal global 1 0 Pops value into global n. high -
|
||||
0x44 pushShort imm 0 1 Pushes the sign-extended 16-bit arg (raw, not shifted to 20.12). high stNumber
|
||||
0x45 push imm 0 1 Pushes inline 32-bit word (handler shared with 0xd7). high stNumber
|
||||
0x46 neg - 1 1 Pops a, pushes -a. high stUMinus
|
||||
0x47 inc - 1 0 Pops address, adds 1.0 (0x1000) to the word there. high stIncrease
|
||||
0x48 dec - 1 0 Pops address, subtracts 1.0 (0x1000) from the word there. high stDecrease
|
||||
0x49 add - 2 1 Pops b, a; pushes a+b. high stAdd
|
||||
0x4a sub - 2 1 Pops b, a; pushes a-b. high stSub
|
||||
0x4b mul - 2 1 Pops b, a; pushes fixed-point a*b>>12. high stMul
|
||||
0x4c div - 2 1 Pops b, a; pushes fixed-point (a<<8)/b<<4. high stDiv
|
||||
0x4d store - 2 0 Pops value, then address; stores value at address; unused (compiler uses pop ops). high stEquals
|
||||
0x4e eq - 2 1 Pops b, a; pushes a==b (0/1, raw). high stCompare
|
||||
0x4f lt - 2 1 Pops b, a; pushes a<b. high stLessThan
|
||||
0x50 shl - 2 1 Pops b, a; pushes a << (b>>12) (b fixed shift count). high stShiftLeft
|
||||
0x51 shr - 2 1 Pops b, a; pushes a >> (b>>12) arithmetic (also stashes a in 0x6DA2D8). high stShiftRight
|
||||
0x52 animToFrame - 1 0 Pops frame (fixed); steps current anim frame +0x110 forward (wrapping) until it reaches frame (clamped to last frame of anim +0x14), applying each frame to the model. medium -
|
||||
0x53 gt - 2 1 Pops b, a; pushes a>b. high stGreaterThan
|
||||
0x54 setModel - 1 0 Pops model address; sets +0x10 and updates +0xEC bit 0x20 / +0xE8 bit 0x80 from model header fields. high stSetModel
|
||||
0x55 scale - 1 0 Pops scale (fixed); sets x/y/z scale +0x60/+0x64/+0x68. high stScale
|
||||
0x56 scaleX - 1 0 Pops scale (fixed) into +0x60. high stScaleX
|
||||
0x57 scaleY - 1 0 Pops scale (fixed) into +0x64. high stScaleY
|
||||
0x58 scaleZ - 1 0 Pops scale (fixed) into +0x68. high stScalez
|
||||
0x59 shadowSize - 1 0 Pops shadow size (fixed) into +0x12C (shadow drawn only if >=0x80). high stShadowSize
|
||||
0x5a shadowTexture - 1 0 Pops shadow texture index (TEXT texture) into +0x128 (short). medium stShadowType
|
||||
0x5b error_0x5b - 0 0 Prints "stFlash" not-implemented error; unused. high stFlash
|
||||
0x5c error_0x5c - 0 0 Prints "stTrans" not-implemented error; unused. high stTrans
|
||||
0x5d moveUp - 1 0 Pops dist (fixed); moves strat by local (0,+d,0) via FUN_005501D0. high stMoveUp
|
||||
0x5e moveDown - 1 0 Pops dist; moves by local (0,-d,0). high stMoveDown
|
||||
0x5f moveForward - 1 0 Pops dist; moves by local (0,0,+d) along its facing. high stMoveForward
|
||||
0x60 moveBackward - 1 0 Pops dist; moves by local (0,0,-d). high stMoveBackward
|
||||
0x61 moveLeft - 1 0 Pops dist; moves by local (+d,0,0). high stMoveLeft
|
||||
0x62 moveRight - 1 0 Pops dist; moves by local (-d,0,0). high stMoveRight
|
||||
0x63 turnRight - 1 0 Pops angle; yaw +0x24 -= angle (24-bit wrap; 4096.0 = full turn). high stTurnRight
|
||||
0x64 turnLeft - 1 0 Pops angle; yaw +0x24 += angle. high stTurnLeft
|
||||
0x65 tiltLeft - 1 0 Pops angle; roll +0x28 -= angle. high stTiltLeft
|
||||
0x66 tiltRight - 1 0 Pops angle; roll +0x28 += angle. high stTiltRight
|
||||
0x67 tiltForward - 1 0 Pops angle; pitch +0x20 += angle. high stTiltForward
|
||||
0x68 tiltBackward - 1 0 Pops angle; pitch +0x20 -= angle; unused. high stTiltBackward
|
||||
0x69 turnToPlayerX - 1 0 Pops max step (angle); turns pitch +0x20 toward the player by at most step; unused. high stTurnToPlayerX
|
||||
0x6a turnToPlayerY - 1 0 Pops max step (angle); turns yaw +0x24 toward the player by at most step. high stTurnToPlayerY
|
||||
0x6b turnToPlayerXY - 1 0 Pops max step (angle); turns yaw and pitch toward the player. high stTurnToPlayerXY
|
||||
0x6c turnToX - 4 0 Pops step, z, y, x; turns pitch toward point (x,y,z) by at most step. high stTurnToX
|
||||
0x6d turnToY - 4 0 Pops step, z, y, x; turns yaw toward point (x,y,z) by at most step. high stTurnToY
|
||||
0x6e turnToXY - 4 0 Pops step, z, y, x; turns yaw and pitch toward point (x,y,z). high stTurnToXY
|
||||
0x6f wobble - 1 0 Pops and discards one value (unimplemented; shared pop handler); unused. medium stWobble
|
||||
0x70 resetPos - 0 0 Restores 8 words (angles+position, +0x20..+0x3C) from the saved copy at +0xA0. high stReSetPos
|
||||
0x71 savePos - 0 0 Saves 8 words (+0x20..+0x3C angles+position) to +0xA0 for 0x70. high stSetPos
|
||||
0x72 nop_0x72 - 0 0 No-op (shared empty handler); unused. medium stJump
|
||||
0x73 wpFirst - 0 0 Current waypoint +0x120 := first waypoint +0x118. high stWPFirst
|
||||
0x74 wpLast - 0 0 Current waypoint +0x120 := last waypoint +0x11C. high stWPLast
|
||||
0x75 wpNext - 0 0 Current waypoint := its next link; wraps to first. high stWPNext
|
||||
0x76 wpPrev - 0 0 Current waypoint := its prev link; wraps to last. high stWPPrev
|
||||
0x77 error_0x77 - 0 0 Prints "stWpdel" not-implemented error; unused. high stWPDel
|
||||
0x78 error_0x78 - 0 0 Prints "stWpnew" not-implemented error; unused. high stWPNew
|
||||
0x79 wpNearest - 0 0 Sets current waypoint to the one nearest the strat position; unused. high stWPNearest
|
||||
0x7a wpFurthest - 0 0 Sets current waypoint to the one furthest from the strat (excluding last); unused. high stWPFurthest
|
||||
0x7b wpTurnToX - 1 0 Pops max step (angle); turns pitch toward the current waypoint (pos at wp+0x18). high stWPTurnToX
|
||||
0x7c wpTurnToY - 1 0 Pops max step (angle); turns yaw toward the current waypoint (if any). high stWPTurnToY
|
||||
0x7d wpTurnToXY - 1 0 Pops max step (angle); turns yaw and pitch toward the current waypoint. high stWPTurnToXY
|
||||
0x7e animPlay - 1 0 Pops anim address; sets +0x14, frame +0x110 := 0, sets +0xE8 bit 8 (playing) and applies frame 0 to the model. high stAnimPlay
|
||||
0x7f animStop - 0 0 Clears +0xE8 bit 8 (anim playing). high stAnimStop
|
||||
0x80 animClear - 0 0 Clears the current anim pointer (+0x14) and flag 0x8 in +0xE8 (no anim playing). medium stAnimClear
|
||||
0x81 animSetSpeed - 0 0 Unimplemented on PC: only logs "stAnimsetspeed" via the debug print; no stack effect. high stAnimSetSpeed
|
||||
0x82 collisionType - 1 0 pops type (raw int); clears bits 0x42C of +0xEC then sets 1->0x8, 2->0x400, 3->0x20, 4->none, other->0x4 (collision shape/type flags). high stCollisionType
|
||||
0x83 collRadius - 1 0 pops radius; stores its low 16 bits raw into collision radius short +0xD2. high stCollRadius
|
||||
0x84 collHeight - 0 0 Unimplemented: logs "stCollheight" only. high stCollHeight
|
||||
0x85 collExtent - 1 0 pops extent; stores its low 16 bits raw into short +0xC4. medium stCollextent
|
||||
0x86 collView - 0 0 Unimplemented: logs "stCollview" only. high stCollView
|
||||
0x87 nop_0x87 - 0 0 Shared no-op handler (0x426500); unused. Slot of Croc2 stCollPoints. low stCollPoints
|
||||
0x88 nop_0x88 - 0 0 Shared no-op handler (0x426500); unused. Slot of Croc2 stCollSetPoint. low stCollSetPoint
|
||||
0x89 createTrigger - 0 0 Sets flag 0x40 in +0xE8 (strat becomes a trigger/touchable, used by pickups like Health, Carrot). medium stCreateTrigger
|
||||
0x8a killTrigger - 0 0 Clears flags 0x40 and 0x4000000 in +0xE8 (undoes createTrigger). medium stKillTrigger
|
||||
0x8b wait - 1 0 pops frames (fixed, >>12) into wait counter short +0xFE and sets flag 0x2 in +0xE8 (strat sleeps until the counter runs out). high stWait
|
||||
0x8c hold - 0 0 Sets flags 0x12 (0x2 wait + 0x10 stopped) in +0xE8: suspends the strat indefinitely until released. medium stHold
|
||||
0x8d release - 0 0 Unimplemented: logs "stRelease" only. high stRelease
|
||||
0x8e remove - 0 0 Sets flags 0x6 in +0xE8 (yield + kill); same handler as 0xb4 end. high stRemove
|
||||
0x8f nop_0x8f - 0 0 Shared no-op handler (0x426500); unused. Slot of Croc2 stMapRemove. low stMapRemove
|
||||
0x90 mapAdd - 0 0 Unimplemented: logs "stMapadd" only. high stMapAdd
|
||||
0x91 mapReplace - 0 0 Unimplemented: logs "stMapreplace" only. high stMapReplace
|
||||
0x92 activated - 0 0 Sets bit 0x8 in byte +0x44 of the strat's map-instance record (+0xF0): marks the map object as activated (persistent state). medium stActivated
|
||||
0x93 collected - 0 0 Sets bit 0x4 in byte +0x44 of the map-instance record (+0xF0): marks the map object as collected so it does not respawn. medium stCollected
|
||||
0x94 spawnLegacy count,imm,imm,flags,imm ? 0 pops code address of the new strat, then argCount (first inline word) argument values (popped inside FUN_0054bfc0); spawns a child strat at this strat's position (+0x20 block); inline words 3-5 are spawn parameters/flags (word 3 tested for 0x40000/0x80000/0x8000 collision-info allocation). Unused in shipped levels. medium stSpawn
|
||||
0x95 spawnFrom count,imm,imm,flags,imm,imm ? 0 Like spawn (pops code address + args) but with an extra inline block giving a local offset (x/y/z) that is rotated by the strat's matrix (+0x70..) and added to its translation (+0x94..): spawn at an offset relative to this strat. Unused. medium stSpawnFrom
|
||||
0x96 link - 0 0 Unimplemented: logs "stLink" only. high stLink
|
||||
0x97 unlink - 0 0 Unimplemented: logs "stUnlink" only. high stUnlink
|
||||
0x98 soundShift - 2 0 pops pitch (fixed, >>12), then sound channel; changes pitch of a playing sound channel owned by this strat (FUN_00546400). medium stSoundShift
|
||||
0x99 soundStop - 1 0 pops sound channel; stops that channel if owned by this strat, or (channel <0/invalid) all sounds of this strat. high stSoundStop
|
||||
0x9a musicPlay - 1 0 pops music track index (fixed, >>12); if different from the current track (0x586430) starts that ASF music stream (FUN_00546b70). high stCdPlay
|
||||
0x9b streamPlay - 0 0 Unimplemented: logs "stStreamPlay" only. high -
|
||||
0x9c speechSetPos - 1 0 pops a value (fixed, >>12) into global 0x6DA2B8 (meaning unknown, likely speech volume/range) and moves the speech/voice stream (handle 0x6D94B4, started by '#' text) to this strat's position. low -
|
||||
0x9d discard_0x9d - 1 0 pops a value (>>12) and passes it to the no-op debug print; effectively drop. Croc2 slot midiVolume/cdFade. low stMidiVolume
|
||||
0x9e speechStop - 0 0 Stops the current speech/voice stream (handle 0x6D94B4) if one is playing and resets the handle to -1. high stMidiStop
|
||||
0x9f streamQueue - 0 0 Unimplemented: logs "stStreamQueue" only. high stMidiQueue
|
||||
0xa0 isLight - 0 0 Unimplemented: logs "stIsLight" only. high stIsLight
|
||||
0xa1 lightCol - 0 0 Unimplemented: logs "stLightCol" only. high stLightCol
|
||||
0xa2 lightFade - 0 0 Unimplemented: logs "stLightFade" only. high stLightFade
|
||||
0xa3 lightAtten - 0 0 Unimplemented: logs "stLightAtten" only. high stLightAtten
|
||||
0xa4 lightType - 0 0 Unimplemented: logs "stLightType" only. high stLightType
|
||||
0xa5 collisionOn flags 0 0 ORs the inline flag word into +0xE8; if any of 0x34000 is set also sets 0x4000 in +0xEC. high stCollisionOn
|
||||
0xa6 collisionOff flags 0 0 Clears the inline flag word's bits in +0xE8. high stCollisionOff
|
||||
0xa7 collisionOffAll - 0 0 Clears all collision flag bits 0x7E000 in +0xE8. high stCollisionOffAll
|
||||
0xa8 soundPlayEx - 3 0 pops pitch (fixed), volume (fixed), sound id; in game states 3/4 plays the sound on this strat and sets its volume and pitch (no channel returned). high stSoundPlay
|
||||
0xa9 soundPlay4_0xa9 - 4 0 pops 4 values and discards them (stubbed sound-play variant). medium stSoundPlay
|
||||
0xaa soundPlayAssEx - 3 1 pops pitch, volume, sound id; plays it like 0xa8 and pushes the channel (raw int), or -1 if not in game state 3/4. high stSoundPlayAss
|
||||
0xab soundPlayAss4_0xab - 4 0 pops 4 values and discards them (same stub as 0xa9; pushes nothing). medium stSoundPlayAss
|
||||
0xac int - 1 1 pops x; pushes x & 0xFFFFF000 (fixed-point floor/truncate to integer). high stInt
|
||||
0xad sin - 1 1 pops angle (fixed, 4096 table units = full turn); pushes sin from table 0x574318 (20.12). high stSin
|
||||
0xae cos - 1 1 pops angle; pushes cos (table 0x574318 offset by quarter turn 0x400). high stCos
|
||||
0xaf not - 1 1 pops x; pushes 1 if x==0 else 0. high stNot
|
||||
0xb0 pop - 1 0 Drops the top stack value (stack pointer +0x104 -= 4). high stPop
|
||||
0xb1 stkCmp imm 0 1 Peeks (does not pop) the top stack entry, dereferences it as a pointer and pushes imm minus the pointed-to int (compare helper). low stStkCmp
|
||||
0xb2 address addr 0 1 Patches itself into 0x45 (push immediate) after resolving the operand to an absolute address (negative = import table 0x6DA324, else + STPC base 0x6D9DBC) and pushes it (code/model/anim address). high stAddress
|
||||
0xb3 return - 1 0 pops code address and jumps there (pc = popped). high stReturn
|
||||
0xb4 end - 0 0 Sets flags 0x6 in +0xE8 (yield + kill): ends the strat. Same handler as 0x8e. high stEndStrat
|
||||
0xb5 isPlayer - 0 0 Registers this strat as the player (global 0x6D9E1C = strat) and sets flag 0x800 in +0xE8. high stIsPlayer
|
||||
0xb6 and - 2 1 pops b, a; pushes 1 if both are non-zero else 0 (logical and). high stAnd
|
||||
0xb7 or - 2 1 pops b, a; pushes a | b (bitwise, used as logical or). high stOr
|
||||
0xb8 bitwiseAnd - 2 1 pops b, a; pushes a & b. high stBitwiseAnd
|
||||
0xb9 discard_0xb9 - 1 0 Shared stub 0x554fb0: pops one value and discards it. Unused (Croc2 ext-var slots). medium -
|
||||
0xba discard_0xba - 1 0 Shared stub 0x554fb0: pops one value and discards it. Unused. medium -
|
||||
0xbb nop_0xbb - 0 0 Shared no-op handler (0x426500); unused. low -
|
||||
0xbc notEqual - 2 1 pops b, a; pushes 1 if a != b else 0. high stNotEqual
|
||||
0xbd greaterEqual - 2 1 pops b, a; pushes 1 if a >= b else 0. high stGreaterEqual
|
||||
0xbe lessEqual - 2 1 pops b, a; pushes 1 if a <= b else 0. high stLessEqual
|
||||
0xbf rnd - 1 1 pops n; pushes random value (two rand() halves) modulo n, 0 if n==0; result is in the same units as n (fixed in, fixed out). high stRnd
|
||||
0xc0 loseHeart - 0 0 In game state 3, unless player invulnerable (0x584710 bit 0): health 0x584E70 -= 1.0, or if already 0 sets 0x584638 = 2 (player dies); refreshes HUD (FUN_004268c0(1)). high stLoseHeart
|
||||
0xc1 nop_0xc1 - 0 0 Shared no-op handler (0x426500); unused. Croc2 slot stResettoCheckPoint. low stResettoCheckPoint
|
||||
0xc2 forceCollision - 0 0 Runs world collision for this strat (FUN_00403020 with level geometry): updates floor/ceiling/wall info in the collision block +0xC0 (ground height, surface type). medium stForceCollision
|
||||
0xc3 turnFromPlayerY - 1 0 pops max turn step (angle, 0x1000000 = full turn); turns yaw +0x24 toward the direction from the player (0x6D9E1C) to this strat, i.e. away from the player, by at most step. medium stTurnFromPlayerY
|
||||
0xc4 rumble - 2 0 Shared stub 0x555090: pops two values and discards them (PSX pad rumble/vibrate not implemented on PC). low stRumble
|
||||
0xc5 suspendIfTooFar - 1 0 Shared stub 0x554fb0: pops one value (likely distance) and discards it. low stSuspendIfTooFar
|
||||
0xc6 collisionBone - 2 0 pops value (short), then bone id (fixed, >>12); sets/adds entry {id, value} in the bone table at +0xC8 (count +0xC6). medium stCollisionBone
|
||||
0xc7 useBone - 1 0 pops one value (ignored); if a model/anim is set (+0x14) rebuilds the rotation matrix and stores a transformed point (matrix * local vector + translation +0x94) into +0xD8/+0xDC/+0xE0. low stUseBone
|
||||
0xc8 isCamera - 0 0 Registers this strat as the camera (global 0x6D9E28) and sets flag 0x8000000 in +0xE8. high stIsCamera
|
||||
0xc9 lookAtMe - 0 0 Sets camera look-at target global 0x6D9E30 = this strat. high stLookatme
|
||||
0xca lookAtMe2 - 0 0 Sets secondary look-at global 0x6D9E34 = this strat. Unused. medium stLookatme
|
||||
0xcb pushCamera - 0 0 Pushes current camera (0x6D9E28) and look-at (0x6D9E30) pair onto the camera stack 0x6D9DCC (index 0x6D9E40). high stPushCamera
|
||||
0xcc popCamera - 0 0 If the camera stack is not empty, restores camera and look-at from it and increments camera-change counter 0x6D9D34. high stPopCamera
|
||||
0xcd nop_0xcd - 0 0 Shared no-op handler (0x426500); unused. Croc2 slot stResetCamerapos. low stResetCamerapos
|
||||
0xce gainHeart - 0 0 Health 0x584E70 += 1.0 if below max 0x584E6C; refreshes HUD (FUN_004268c0(1)). high stGainHeart
|
||||
0xcf nop_0xcf - 0 0 Shared no-op handler (0x426500); unused. Croc2 slot stGainHeartPot. low stGainHeartPot
|
||||
0xd0 addInv imm 0 0 Adds inline item to inventory via FUN_00426860(item,1,1,0,0), which is a stub returning 0 on PC (no effect). medium stAddInv
|
||||
0xd1 nop_0xd1 - 0 0 Shared no-op handler (0x426500); unused. Croc2 slot stGainCrystal. low stGainCrystal
|
||||
0xd2 discard_0xd2 - 1 0 Shared stub 0x554fb0: pops one value and discards it. Unused (Croc2 slot stCutscene). low stCutscene
|
||||
0xd3 inventory imm 0 1 Queries inline item via stub FUN_00426860 and pushes result<<12 (always 0 on PC). medium stInventory
|
||||
0xd4 debugName imm,count 0 0 Strat name: skips the first inline word, reads the byte length of the following name string, sets the name pointer (+0x18) to that string and jumps past it. high stDebugname
|
||||
0xd5 soundPlay - 1 0 pops sound id; plays it on this strat (FUN_00546170); outside game states 3/4 first sets game state 0x5846E4 = 5. high stSoundPlay
|
||||
0xd6 soundPlayAss - 1 1 pops sound id; in game states 3/4 plays it and pushes the channel (raw int), else pushes -1. high stSoundPlayass
|
||||
0xd7 soundAddress sound 0 1 Pushes the inline sound id (same handler as 0x45 push immediate). high stSoundAddress
|
||||
0xd8 nop_0xd8 - 0 0 Shared no-op handler (0x426500); unused. Croc2 slot stOnground/stObjectFallslow. low stOnground
|
||||
0xd9 collisionOffset - 3 0 pops z, y, x; stores low 16 bits into shorts +0xD0, +0xCE, +0xCC (collision centre offset). high stCollisionOffset
|
||||
0xda abs - 1 1 pops x; pushes |x|. high stAbs
|
||||
0xdb pickup imm 0 0 inline flag: nonzero sets bit 0x200 in +0xEC, zero clears it (strat can be picked up/carried). medium stPickup
|
||||
0xdc min - 2 1 pops b, a; pushes the smaller (signed). high stMin
|
||||
0xdd max - 2 1 pops b, a; pushes the larger (signed). high stMax
|
||||
0xde spawnParticle - 6 0 pops param (texture or colour, type-dependent), vz, vy, vx (velocity, fixed), scale (fixed, 0x1000 = default), particle type (raw int); emits a particle at this strat's position (FUN_00428ea0). medium stSpawnparticle
|
||||
0xdf sgn - 1 1 pops x; pushes 1.0 (0x1000), -1.0 or 0 by sign. high stSgn
|
||||
0xe0 spawn count,count,imm,flags,imm ? 0 Spawns a child strat via FUN_0054bfc0: pops code address of the new strat (top), then pops operand1 (param count) values from the parent stack as the child's MAP parameters; operand2 = local variable count of the child, operand4 = spawn flags (ORed with own +0x138; bits 0x40000/0x80000/0x8000 select model/collision setup), operands 3/5 extra sizes/flags; child copies parent orientation/position block (+0x20) and waypoint fields; fails silently (params still popped) if strat pool full medium stSpawn
|
||||
0xe1 nop_0xe1 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stDontLookatme?
|
||||
0xe2 nop_0xe2 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stRunat?
|
||||
0xe3 moveForwardQ - 1 0 pops distance (fixed); x(+0x30) += d*sin(yaw), z(+0x38) += d*cos(yaw), yaw = +0x24 (4096 units per turn, table 0x574318) high stMoveForwardq
|
||||
0xe4 moveBackwardQ - 1 0 pops distance (fixed); moves the strat backwards along its yaw (x -= d*sin, z -= d*cos) high stMoveBackwardq
|
||||
0xe5 playSoundVol - 2 0 pops volume (fixed, >>12), sound id; if game state DAT_005846e4 is 3 or 4 plays the sound for this strat (FUN_00546170) and sets the channel volume (+0x6a, FUN_00546360) high stSoundPlay
|
||||
0xe6 playSoundChannel - 2 1 pops volume (fixed), sound id; if game state DAT_005846e4==3 plays the sound with that volume and pushes the channel index (raw int, not fixed), else pushes -1 high stSoundPlayass
|
||||
0xe7 setWP - 0 0 saves the current waypoint: +0x124 = +0x120 high stSetWP
|
||||
0xe8 resetWP - 0 0 restores the saved waypoint: +0x120 = +0x124 high stResetWP
|
||||
0xe9 soundVolume - 2 0 pops volume (fixed), sound channel; sets the channel volume (+0x6a) if the channel belongs to this strat (FUN_00546360) high stSoundVolume
|
||||
0xea nop_0xea - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stString?
|
||||
0xeb setBossHearts - 1 0 pops count (fixed); sets boss heart max DAT_00584f0c and current DAT_00584f10 to count high stSetbossHearts
|
||||
0xec loseBossHeart - 0 0 decrements boss hearts DAT_00584f10 (not below 0) and refreshes the HUD (FUN_004268c0(1)) high stLosebossHeart
|
||||
0xed soundShiftRelative - 2 0 pops shift/pitch (fixed, >>12), sound channel; sets channel +0x70 and updates a playing voice (FUN_00546460) if the channel belongs to this strat medium stSoundShiftrelative
|
||||
0xee smin - 2 1 pops limit (top), value; pushes value with its magnitude clamped to limit, keeping the sign (sign(v)*min(|v|,limit)) high stSmin
|
||||
0xef isBoss - 0 0 registers this strat as the boss: DAT_006d9e24 = self high stIsboss
|
||||
0xf0 topSay text 0 0 shows dialog text (inline text index) in the top text box: sets DAT_006d9858=1 and formats via FUN_0040d4c0 high stTopsay
|
||||
0xf1 getParentPos - 0 0 copies parent's (+0xC) orientation+position block (+0x20..+0x3C, 8 words) into this strat high stGetparentpos
|
||||
0xf2 setDrawMode - 1 0 pops mode (raw int): 1 sets flag 0x80000 in +0xEC, 2 sets 0x100000, other clears both (exact effect of the bits unknown); unused low -
|
||||
0xf3 afterBoss - 0 0 if no boss (DAT_006d9e24) rewinds pc and yields (waits); else relinks this strat in the process list right after the boss high stAfterboss
|
||||
0xf4 afterPlayer - 0 0 if no player (DAT_006d9e1c) rewinds pc and yields (waits); else relinks this strat in the process list right after the player high stAfterPlayer
|
||||
0xf5 beforePlayer - 0 0 if no player rewinds pc and yields (waits); else relinks this strat in the process list right before the player high stBeforePlayer
|
||||
0xf6 nop_0xf6 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stBeforeboss?/stNohang?
|
||||
0xf7 pushZero - 0 1 pushes 0 (same handler as 0x1a7); unused high stZero
|
||||
0xf8 nop_0xf8 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stTophead?
|
||||
0xf9 popDiscard_0xf9 - 1 0 pops and discards one value (stub FUN_00554fb0, shared with 0x6f etc.); unused high stTopdialog?
|
||||
0xfa bottomSay text 0 0 shows dialog text (inline text index) in the bottom text box: sets DAT_006d94e8=2 and formats via FUN_0040d4c0 high stBottomsay
|
||||
0xfb nop_0xfb - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stBottomhead?
|
||||
0xfc popDiscard_0xfc - 1 0 pops and discards one value (stub FUN_00554fb0); unused high stBottomdialog?
|
||||
0xfd getPlayerPos - 0 0 if a player exists copies its orientation+position block (+0x20..+0x3C) into this strat high stGetPlayerpos
|
||||
0xfe getWPPos - 0 0 sets rotation x/y/z (+0x20..+0x28) from the current waypoint's (+0x120) ints <<12 and position (+0x30..+0x3C) from waypoint +0x18..+0x24 high stGetWPpos
|
||||
0xff getBossPos - 0 0 copies the boss's (DAT_006d9e24) orientation+position block (+0x20..+0x3C) into this strat (no null check); unused high stGetbosspos
|
||||
0x100 getDoorPos - 0 0 finds the level door record (DAT_00584648+0x24) in this strat's x/z cell nearest in y; if found sets current door DAT_00584644, places the strat at the door position/yaw (FUN_0054de00) and, unless door flag 2, moves it forward by the door's distance (+0x38) medium stGetdoorpos
|
||||
0x101 fadeOut - 1 0 pops speed selector (fixed, 1/2/3/other) and starts a screen fade-out (FUN_00415390 mode 1/5/0xb/3); sets DAT_00584638=6 unless it is 7 or 10 medium stFadeout
|
||||
0x102 fadeIn - 1 0 pops speed selector (fixed, 1/3/other) and starts a screen fade-in (FUN_00415390 mode 2/10/4); DAT_00584638=0 medium stFadein
|
||||
0x103 moveUpQ - 1 0 pops distance (fixed); y(+0x34) += d high stMoveUpq
|
||||
0x104 moveDownQ - 1 0 pops distance (fixed); y(+0x34) -= d high stMoveDownq
|
||||
0x105 forcePlayerDist - 0 0 recomputes the cached squared player distance +0x148 (coords >>6) and clears +0x1C; 0x200000 if no player; unused high stForcePlayerdist
|
||||
0x106 nop_0x106 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stShadeType?
|
||||
0x107 setAnimSpeed - 1 0 pops value and stores its low 16 bits (raw, not >>12) in halfword +0x114 (animation timing field, zeroed when the anim frame is set) low stSetanimSpeed?
|
||||
0x108 nop_0x108 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stCheckleveldoor?
|
||||
0x109 nop_0x109 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x10a nop_0x10a - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x10b nop_0x10b - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stGainjigsaw?
|
||||
0x10c nop_0x10c - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stGaingoldengobbo?
|
||||
0x10d gainSecret - 0 0 increments the collected-secrets counter DAT_00584e64 (copied to the HUD/stats at level reset); used only by strat Secret high stGainCrystal?
|
||||
0x10e nop_0x10e - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x10f nop_0x10f - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); used once (LlamaChase) high stCheckPoint?
|
||||
0x110 setMainCameraFlag - 0 0 sets flag 0x8000000 in own flags +0xE8 (same flag the camera-register opcode FUN_005500f0 sets, without registering DAT_006d9e28); used by CameraCollisionInFront medium stIsmainCamera?
|
||||
0x111 nop_0x111 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x112 nop_0x112 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x113 isDialog - 0 0 registers this strat as the dialog partner: DAT_006d9e2c = self high stIsdialog
|
||||
0x114 distance - 3 1 pops z (top), y, x; pushes the 3D distance from the strat's position (+0x30) to (x,y,z) (FUN_00404bb0, float sqrt -> int) high stDistance
|
||||
0x115 showLevelStartInfo imm 0 0 inline word: low byte stored in DAT_006da294 (level start info / title card index), logs 'show level start info %d' medium -
|
||||
0x116 topCloseDialog - 0 0 closes the top dialog text box: DAT_006d9858 = 0 high stTopclosedialog
|
||||
0x117 bottomCloseDialog - 0 0 closes the bottom dialog text box: DAT_006d94e8 = 0 high stBottomclosedialog
|
||||
0x118 nop_0x118 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stNextinventory?
|
||||
0x119 nop_0x119 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stPrevinventory?
|
||||
0x11a otherPiece - 0 0 finds the switchable map piece at the strat's grid cell (FUN_00553f10, table DAT_00584648+0x50) and sets it to its alternate state (*piece[5] = piece[4]), swapping its texture/collision table entries if DAT_006da330 bit 0x10000000 medium stOtherpiece
|
||||
0x11b normalPiece - 0 0 same as otherPiece but restores the piece's normal state (*piece[5] = piece[3]) medium stNormalpiece
|
||||
0x11c delInv imm 0 0 inline word (inventory item id) passed to FUN_00426860(item,1,-1,0,0), which is a stub returning 0 in this build: effectively no-op; unused medium stDelinv
|
||||
0x11d nop_0x11d - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x11e nop_0x11e - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x11f nop_0x11f - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x120 nop_0x120 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x121 nop_0x121 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x122 nop_0x122 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x123 nop_0x123 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x124 nop_0x124 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high -
|
||||
0x125 moveLeftQ - 1 0 pops distance (fixed); strafes: x += d*cos(yaw), z += d*sin(yaw-half turn) (= -d*sin) high stMoveLeftq
|
||||
0x126 moveRightQ - 1 0 pops distance (fixed); strafes opposite to moveLeft (x -= d*cos(yaw), z += d*sin(yaw)) high stMoveRightq
|
||||
0x127 bitwiseNot - 1 1 pops v; pushes ~v high stBitwisenot
|
||||
0x128 bordersOn - 0 0 enables cinematic letterbox borders: DAT_005fd090 = 1 high stBorderson
|
||||
0x129 bordersOff - 0 0 disables letterbox borders: DAT_005fd090 = 0 high stBordersoff
|
||||
0x12a soundAdsr - 5 0 pops and discards 5 values (stubbed); unused high stSoundadsr
|
||||
0x12b soundAdsrRelative - 3 0 pops a (top), b (fixed), sound channel; if the channel belongs to this strat sets channel +0x34 = b>>12, +0x38 = a>>12 (FUN_005463b0, envelope/range params) medium stSoundadsrrelative
|
||||
0x12c nop_0x12c - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stRotatepiece?
|
||||
0x12d setAmbient - 3 0 pops b, g, r (fixed, >>12, top = b) into bytes +0x135/+0x134/+0x133 and enables the own ambient light colour (+0x136 = 1) high stSet_ambient
|
||||
0x12e resetAmbient - 0 0 disables the own ambient colour: +0x136 = 0; unused high stReset_ambient
|
||||
0x12f invActive - 0 0 calls inventory stub FUN_00426860(0,1,0,1,0) (returns 0, no effect in this build); unused high stInvactive
|
||||
0x130 invInactive - 0 0 calls inventory stub FUN_00426860(0,1,0,1,1) (no effect); unused high stInvinactive
|
||||
0x131 sampleStatus - 1 1 pops sound id; pushes (fixed) the channel index on which this strat is playing that sound, or -1.0 if not playing (FUN_005461e0); unused high stSamplestatus
|
||||
0x132 nop_0x132 - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stResettoCheckPointnlh?
|
||||
0x133 resetDoor - 0 0 restores the stored door (DAT_006da28c -> DAT_00584644) and, if a player exists, places the player at that door (FUN_0054de00) and restores its saved orientation/position block from DAT_006d9e48 high stResetdoor
|
||||
0x134 storeDoor - 0 0 stores the current door (DAT_00584644 -> DAT_006da28c) and the player's orientation/position block (+0x20..+0x3C) into DAT_006d9e48 high stStoredoor
|
||||
0x135 cameraModified - 0 0 if a camera strat (DAT_006d9e28) exists copies this strat's orientation/position block into it and its position into globals DAT_006d9d20..2c; unused medium stCamera_modified
|
||||
0x136 pushPlayer - 0 0 saves the current player pointer DAT_006d9e1c into DAT_006d9e20 (logs an error if no player); unused high stPushPlayer
|
||||
0x137 popPlayer - 0 0 restores the player pointer (DAT_006d9e1c and DAT_006d9e30) from DAT_006d9e20 and clears it; unused high stPopPlayer
|
||||
0x138 resetToStart - 0 0 restores position +0x30..+0x38 from the saved (start) position +0xB0..+0xB8; unused high stReSetPostrn
|
||||
0x139 gainItem - 0 0 increments item counter DAT_005fd09c up to the maximum DAT_005fd0a4; unused high stGainitem
|
||||
0x13a setItem - 1 0 pops maximum (fixed); DAT_005fd0a4 = max, counter DAT_005fd09c = 0, enables item counter display (DAT_005fd0a0 = 1); unused high stSetitem
|
||||
0x13b setTimer - 1 0 pops time (fixed, >>12) into DAT_005fd0ac and enables the timer (DAT_005fd0a8 = 1); unused high stSettimer
|
||||
0x13c timerOff - 0 0 disables the timer: DAT_005fd0a8 = 0; unused high stTimeroff
|
||||
0x13d distanceNoY - 2 1 pops z (top), x; pushes the horizontal (x/z) distance from the strat's position to (x,z) (FUN_00404c50) high stDistancenoy
|
||||
0x13e nop_0x13e - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stSwim?
|
||||
0x13f nop_0x13f - 0 0 no-op handler FUN_00426500 (does nothing, no inline operands); unused high stLoseCrystal?
|
||||
0x140 nop_0x140 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x141 setDebugFlag5849a0On - 0 0 Writes short 1 to global 0x5849A0; that global is never read anywhere in groove.exe (dead PSX leftover). medium -
|
||||
0x142 setDebugFlag5849a0Off - 0 0 Writes short 0xFFFF to global 0x5849A0 (never read; dead leftover). medium -
|
||||
0x143 clearFlag5fd0b8 - 0 0 Sets global 0x5FD0B8 = 0; global is never read elsewhere (dead leftover). medium -
|
||||
0x144 setFlag5fd0b8 - 0 0 Sets global 0x5FD0B8 = 1; global is never read elsewhere (dead leftover). medium -
|
||||
0x145 nop_0x145 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x146 nop_0x146 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x147 nop_0x147 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x148 gotoLevel4_1 - 0 0 Hardcoded level change: next level (0x584EB4/EB8/EBC/EC0) = 4/1/1/0, previous level (0x585008..14) = 4/1/4/0, game state 0x584638 = 7 (load level). medium -
|
||||
0x149 nop_0x149 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x14a hudReset2 - 0 0 Calls HUD/panel init FUN_004268c0(2): re-initialises the on-screen counter panels (coins, lives, etc.) for the current level. low -
|
||||
0x14b setGlobal5fd086 imm 0 0 Stores the low 16 bits of the inline word in global 0x5FD086 (never read elsewhere; dead leftover). medium -
|
||||
0x14c removeCollPoint - 1 0 pops id (fixed, >>12); removes the collision point with that id from the strat's collision point list (+0xC8 array of 4-byte entries, count +0xC6). Counterpart of 0xc6 (add/set collision point). medium stSetCollPoint (inverse)
|
||||
0x14d setFlagEC_400000 flags 0 0 Inline word: nonzero sets, zero clears bit 0x400000 of strat flags2 (+0xEC); the bit selects which height constant own property 0xF2 returns. high -
|
||||
0x14e atan2 - 2 1 pops b (top), a; pushes angle atan2(a, b) as (0..0xFFF)<<12, i.e. full turn = 0x1000000 (4096.0); used with a=dx, b=dz like yaw-to-target. high -
|
||||
0x14f nop_0x14f - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x150 nop_0x150 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing (used once in HelpGirlSkip). high -
|
||||
0x151 nop_0x151 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x152 nop_0x152 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x153 findNearestLight - 3 1 pops z (top), y, x; searches the level light table (0x586598, 0x1C-byte entries, count 0x5865D0) for the nearest light of type 2 (point light) to (x,y,z) and pushes its pointer (0 if none). medium -
|
||||
0x154 setLightIntensity - 2 0 pops intensity (fixed; top), light pointer (from 0x153); stores intensity in light+0x18, rebuilds the light (FUN_0042c4a0) and re-flags/relights the map polygons within its radius (0 = off, 0x1000 = full). medium -
|
||||
0x155 nop_0x155 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x156 nop_0x156 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x157 nop_0x157 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x158 nop_0x158 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x159 nop_0x159 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x15a setPosToPlayer - 0 0 Copies the player's position x/y/z (+0x30..+0x38) and +0x3C into the strat (player strat = 0x6D9E1C). high -
|
||||
0x15b setPosToPlayerXZ - 0 0 Copies the player's x and z (+0x30, +0x38) into the strat; y unchanged. high -
|
||||
0x15c setShadowHeight - 1 0 pops v; stores it in strat +0x14C, used by the shadow renderer as the shadow/ground height override (-0x1000 = use default 0x586424). low -
|
||||
0x15d packRgb - 3 1 pops c (top), b, a (fixed 0..255); pushes (c<<16)|(b<<8)|a as a raw packed colour int (push order r,g,b gives 0x00BBGGRR). high -
|
||||
0x15e trailCreate - 2 1 pops vertB (top), vertA (fixed vertex indices of the strat's model/anim frame); allocates a free trail/ribbon slot (0x5FD180, 0x42C bytes each) owned by this strat and pushes its handle (0 if none free). medium -
|
||||
0x15f trailAddPoint - 3 0 pops colourB (top), colourA, trail handle; transforms the two trail vertices of the current anim frame into world space and appends them to the trail history (20 points) with the given colours; no-op if handle 0. medium -
|
||||
0x160 trailFree - 1 0 pops trail handle; releases it (clears owner +0x414) if nonzero. high -
|
||||
0x161 setPauseState - 1 0 pops v (fixed); sets global pause state 0x584640 = v>>12 (0 = not paused, 1 = paused, 2 = pausing disabled). medium -
|
||||
0x162 setFlagE8_1000 flags 0 0 Inline word: nonzero sets, zero clears bit 0x1000 of strat flags (+0xE8). high -
|
||||
0x163 setCollOffset - 3 0 pops z (top), y, x; stores them as 16-bit shorts into the strat's collision descriptor (+0xC0) at +0x32/+0x34/+0x36 = collision sphere centre offset. medium -
|
||||
0x164 angleDiff - 2 1 pops b (top), a (angles, full turn 0x1000000); pushes (a-b) wrapped to the signed half-turn range (-0x800000..0x7FF000). high -
|
||||
0x165 collideAsPlayer - 0 0 Sets flag 0x800 on self (excludes self), temporarily makes self the player (0x6D9E1C) and runs the player-vs-strat collision pass FUN_004051d0, then restores the player; lets projectiles (LlamaSpit) hit strats like the player does. medium -
|
||||
0x166 setGlobalTint - 3 0 pops b (top), g, r (fixed, clamped 0..255); sets the global strat tint 0x6D9E14..16 and enables it, and applies it to every strat that has no own tint yet (+0x133..+0x136). high -
|
||||
0x167 screenOverlay flags 0 0 Inline word: nonzero enables the full-screen colour overlay (0x583740 = 1, colour reset to 0), zero disables it. high -
|
||||
0x168 setScreenOverlayColour - 4 0 pops d (top), c, b, a (fixed 0..255, >>12); sets the full-screen overlay colour to a<<24 | d<<16 | b<<8 | c (a = alpha; d,b,c land in the R,G,B byte positions of the D3D colour). medium -
|
||||
0x169 nop_0x169 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x16a turnTowardStratY - 2 0 pops maxStep (top, angle), target strat pointer; turns own yaw (+0x24) toward the target's position by at most maxStep (full turn 0x1000000). high stTurnTowardY
|
||||
0x16b pushSelf - 0 1 Pushes the pointer of the executing strat (this). high -
|
||||
0x16c nop_0x16c - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x16d nop_0x16d - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x16e lerp - 3 1 pops t (top), b, a; pushes b + (a-b)*t (fixed): t=0 gives b, t=1.0 gives a. high -
|
||||
0x16f clamp - 3 1 pops hi (top), x, lo; pushes max(lo, min(x, hi)) (push order lo, x, hi). high -
|
||||
0x170 distSqToPos - 3 1 pops z (top), y, x; pushes squared 3D distance from own position, computed on coordinates >>6 (dx>>6)^2+(dy>>6)^2+(dz>>6)^2. high -
|
||||
0x171 distSqToPosXZ - 2 1 pops z (top), x; pushes squared horizontal distance from own position, (dx>>6)^2+(dz>>6)^2. high -
|
||||
0x172 approach - 3 1 pops step (top), target, value; pushes value moved toward target by step without overshooting. high -
|
||||
0x173 distSqXZ - 4 1 pops z2 (top), x2, z1, x1; pushes (x2-x1)^2 + (z2-z1)^2 in fixed point. high -
|
||||
0x174 turnTowardAngleY - 2 0 pops maxStep (top), targetYaw; turns own yaw (+0x24) toward targetYaw by at most maxStep, wrapping (full turn 0x1000000). high stTurnTowardY
|
||||
0x175 setFlagEC_80 flags 0 0 Inline word: nonzero sets, zero clears bit 0x80 of strat flags2 (+0xEC). high -
|
||||
0x176 inRectXZ - 6 1 pops maxZ (top), maxX, minZ, minX, z, x; pushes integer 1 (not 0x1000) if minX<=x<=maxX and minZ<=z<=maxZ, else 0. high -
|
||||
0x177 waypointStep - 1 0 pops n (fixed); moves current waypoint (+0x120) n steps forward via next links (wraps to first +0x118) or -n steps back via prev links (wraps to last +0x11C). high stNextWaypoint/stPrevWaypoint
|
||||
0x178 inWaypointBoxXZ - 2 1 pops z (top), x; pushes integer 1 if (x,z) lies inside the axis-aligned XZ box spanned by the current waypoint and the next one (wrapping to first), else 0. high -
|
||||
0x179 nearestWaypoint - 0 0 Sets current waypoint (+0x120) to the waypoint of the list (+0x118) nearest (XZ) to the strat. high stNearestWaypointNext
|
||||
0x17a nearestWaypointToPlayer - 0 0 Sets current waypoint to the waypoint nearest (XZ) to the player. high -
|
||||
0x17b nearestOtherWaypoint - 0 0 Sets current waypoint to the waypoint nearest (XZ) to the strat, excluding the current one. high -
|
||||
0x17c nop_0x17c - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x17d nop_0x17d - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x17e nop_0x17e - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x17f nop_0x17f - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x180 addTint - 3 0 pops b (top), g, r (fixed deltas); adds them to the strat's tint (own +0x133..135, or the level ambient at 0x584644+0x4C if none), clamps 0..255, stores and enables own tint (+0x136). high -
|
||||
0x181 setAnimFrame - 1 0 pops frame (fixed); if an anim is set (+0x14) sets current frame +0x110 (out of range/negative -> 0), clears +0x114 and sets flag 8 (anim changed). high -
|
||||
0x182 nop_0x182 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x183 showSaveSlotInfo - 1 0 pops slot (fixed 1..3); draws the save-game slot info text ('Gespeichertes Spiel n', chapter, etc.) for the main menu (FUN_0040db90). medium -
|
||||
0x184 pushTintR - 0 1 Pushes own tint red byte (+0x133) as fixed. high -
|
||||
0x185 pushTintG - 0 1 Pushes own tint green byte (+0x134) as fixed. high -
|
||||
0x186 pushTintB - 0 1 Pushes own tint blue byte (+0x135) as fixed. high -
|
||||
0x187 emitterInit - 7 0 pops colour/texture (top, raw), z, y, x (vector/offset), type (fixed 1..0x2B preset, or >=0x1000 type flags), size/speed (fixed, 0x1000 default), slot (0..2, >=3 = extra slot +0x153); (re)initialises the strat's particle emitter in that slot (records at 0x5FE230, 0x34 bytes; texture/colour stored per type). medium stSpawnparticle
|
||||
0x188 emitParticles - 3 0 pops yStep (top, fixed), count, slot; emits count particles from the slot's emitter at own position with random XZ velocity, each raised by yStep. medium -
|
||||
0x189 randSigned - 1 1 pops n; pushes a random value in (-n, n) ((rand32 - rand32) % n, same fixed scale as n). high -
|
||||
0x18a emitterSetParams - 5 0 pops e (top), d, c, b, slot; sets emitter slot params: +0x254 = b (rate/speed), +0x24A = c>>12 (life); if e==0 +0x25C = (d>>12)*32-32 else +0x246 = e, +0x23C = d. Allocates the slot if empty. low -
|
||||
0x18b emitterSetColour - 5 0 pops colour (top, raw packed, see 0x15d), b, g, r, slot; sets emitter colour (+0x250) and fade/alpha (+0x240..243): if r has no fraction it is an alpha value only, else r,g,b are per-channel fade values. low -
|
||||
0x18c emitParticlesStill - 3 0 pops yStep (top, raw fixed), count, slot; emits count particles from the slot's emitter at own position without velocity, stacked by yStep. medium -
|
||||
0x18d stubPop2_0x18d - 2 0 Stub FUN_00555090: pops and discards 2 values (feature removed in PC port). high -
|
||||
0x18e stubPop2_0x18e - 2 0 Stub FUN_00555090: pops and discards 2 values (feature removed in PC port). high -
|
||||
0x18f clampToWaypointBox - 0 0 Clamps own x/z (+0x30/+0x38) into the XZ box spanned by the current waypoint and the next one. high -
|
||||
0x190 processBeforeCamera - 0 0 If no camera strat (0x6D9E28) yet: re-executes next frame (pc-=4, yield). Else unlinks self from the strat list (0x6D9E38) and reinserts it directly before the camera so it updates before the camera. high -
|
||||
0x191 processBeforeCamera2 - 0 0 Same as 0x190 (waits for camera, then moves self just before the camera in the update list); functionally identical alias. high -
|
||||
0x192 endLevel - 3 0 pops sub (top), level, world (fixed); saves current level as previous, sets next level, sets 'all coins collected'/completion flags, updates furthest-progress 0x585018, state 0x584638 = 10 and starts the fade-out (world=level=sub=7 means return to the level map). medium stEndlevel
|
||||
0x193 stubPop1Push0_0x193 - 1 1 Stub FUN_005550b0: pops 1 value and pushes 0. high -
|
||||
0x194 stubPop1Push0_0x194 - 1 1 Stub FUN_005550b0: pops 1 value and pushes 0. high -
|
||||
0x195 stubPop2_0x195 - 2 0 Stub FUN_00555090: pops and discards 2 values (feature removed in PC port). high -
|
||||
0x196 stubPop2_0x196 - 2 0 Stub FUN_00555090: pops and discards 2 values (feature removed in PC port). high -
|
||||
0x197 nop_0x197 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x198 nop_0x198 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x199 nop_0x199 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x19a nop_0x19a - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x19b nop_0x19b - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x19c nop_0x19c - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x19d sqrt - 1 1 pops v (fixed); pushes fixed sqrt(v) (fsqrt of v/4096, rescaled). high -
|
||||
0x19e nop_0x19e - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x19f nop_0x19f - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x1a0 setWaypointParam1 - 1 0 pops v; sets current waypoint +0x08 = (v>>12)&0xFFF (readable as own property 9). high -
|
||||
0x1a1 setWaypointParam2 - 1 0 pops v; sets current waypoint +0x0C = (v>>12)&0xFFF (readable as own property 10). high -
|
||||
0x1a2 setWaypointParam3 - 1 0 pops v; sets current waypoint +0x10 = (v>>12)&0xFFF (readable as own property 11). high -
|
||||
0x1a3 stubPop1_0x1a3 - 1 0 Stub FUN_00554fb0: pops and discards 1 value. high -
|
||||
0x1a4 stubPop1_0x1a4 - 1 0 Stub FUN_00554fb0: pops and discards 1 value. high -
|
||||
0x1a5 nop_0x1a5 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
0x1a6 emitterKill - 1 0 pops slot (fixed); frees the strat's particle emitter in that slot (+0x150+slot = 0xFF) and resets the record. high -
|
||||
0x1a7 stubPush0_0x1a7 - 0 1 Stub FUN_0054e880: pushes 0. high -
|
||||
0x1a8 processFirst - 0 0 Moves self to the head of the strat update list (0x6D9E38) if not already there. high -
|
||||
0x1a9 setRain - 4 0 pops colour (top, raw -> 0x6D9BE8), b (->0x578EF4), a2 (->0x6D9BF4), a1 (->0x578EF0) (all >>12); if the three counts/params are 0 rain is stopped and cleared, else rain is enabled (0x6D9BE4 = 1). low -
|
||||
0x1aa stubPop1Push0_0x1aa - 1 1 Stub FUN_005550b0: pops 1 value and pushes 0. high -
|
||||
0x1ab stubPop2_0x1ab - 2 0 Stub FUN_00555090: pops and discards 2 values (feature removed in PC port). high -
|
||||
0x1ac stubPop1Push0_0x1ac - 1 1 Stub FUN_005550b0: pops 1 value and pushes 0. high -
|
||||
0x1ad stubPop2Push0_0x1ad - 2 1 Stub FUN_005550d0: pops 2 values and pushes 0. high -
|
||||
0x1ae stubPop3_0x1ae - 3 0 Stub FUN_005550f0: pops and discards 3 values. high -
|
||||
0x1af setWeatherRender - 1 0 pops mode (fixed): 0 installs the normal rain/weather update+render callbacks (0x5FF034/38), 1 installs no-op callbacks and clears 0x6D94D0 (weather off). medium -
|
||||
0x1b0 emitParticlesVel - 6 0 pops vz (top), vy, vx (velocity), yStep, count, slot (last three fixed >>12); emits count particles from the slot's emitter at own position with the given velocity, stacked by yStep. medium -
|
||||
0x1b1 nop_0x1b1 - 0 0 Empty handler FUN_00426500 (shared no-op); does nothing. high -
|
||||
|
Can't render this file because it contains an unexpected character in line 36 and column 30.
|
@@ -0,0 +1,195 @@
|
||||
# id name get set semantics confidence
|
||||
0 zero_0 yes no Always pushes 0 (unused id; also 0x13, 0x15, 0x47, 0x75, 0x76, 0x77, 0x98, 0x9e, 0xc1, 0xd8, 0xed, 0xee, 0x102 push 0). high
|
||||
1 unk_1 yes no DAT_006d94d0 << 12 (int global, cleared in FUN_00426... init; meaning unknown). low
|
||||
3 wpEndFlags yes no Current waypoint (+0x120) link bits: bit0 = no previous node (node[0]==0, first), bit1 = no next node (node[1]==0, last). Raw int. high
|
||||
4 wpParam yes yes Current waypoint field +0x28 (raw 32-bit, per-node parameter). medium
|
||||
5 distToWp yes no 3D distance from strat position (+0x30) to current waypoint position (wp+0x18), 20.12 (FUN_00404bb0, sqrt). high
|
||||
6 wpX yes yes Current waypoint x (wp+0x18), 20.12. high
|
||||
7 wpY yes yes Current waypoint y (wp+0x1C), 20.12. high
|
||||
8 wpZ yes yes Current waypoint z (wp+0x20), 20.12. high
|
||||
9 wpRotX yes no Current waypoint int field +0x08 << 12 (node rotation x in 4096 table units, per notes). medium
|
||||
10 wpRotY yes no Current waypoint int field +0x0C << 12 (node yaw in 4096 table units; e.g. checkpoint respawn yaw). medium
|
||||
11 wpRotZ yes no Current waypoint int field +0x10 << 12 (third node angle/param). low
|
||||
12 playerDistToWp yes no 3D distance from the player (0x6D9E1C) to this strat's current waypoint, 20.12; 100.0 (0x64000) if no player. high
|
||||
13 angleToWp yes no Yaw from the strat to its current waypoint: atan2(dx,dz) (FUN_00404d60), 24-bit angle (0x1000000 = full turn, 4096 table units <<12). high
|
||||
14 animFrame yes no Current anim frame +0x110 << 12. high
|
||||
15 animPlaying yes no Flag +0xE8 bit 3 (0x8, anim playing) as 0/1. high
|
||||
16 floorHeight yes yes Floor height under the strat, collision record (+0xC0)+0x00, 20.12 (0xFFFF0000 = no floor). Get returns 0 if no record. high
|
||||
17 floorMaterial yes no Floor surface/material id, short at (+0xC0)+0x04, << 12 (0xFFFF = none; 16 = level door trigger). 0 if no record. high
|
||||
18 ceilingMaterial yes no Short at (+0xC0)+0x30 << 12: material of the surface above (set together with ceiling height +0x28 in the collision code, 0xFFFF none). medium
|
||||
19 zero_19 yes no Always 0. high
|
||||
20 slideAngle yes no Short at (+0xC0)+0x2C << 12: direction (atan2 of old->new pos) written when the strat is pushed back off an edge/wall; 4096 units. low
|
||||
21 zero_21 yes no Always 0 (both branches push 0). high
|
||||
22 collisionRadius yes yes Collision radius, short at +0xD2 (raw, not shifted). Set writes a full 32-bit word at +0xD2 (also clobbers the short at +0xD4). high
|
||||
29 isActivated yes no Map-instance record (+0xF0) byte +0x44 bit 0x8 (persistent "activated" state, set by op 0x92). Returns 8 or 0. No null check. high
|
||||
30 isCollected yes no Map-instance record (+0xF0) byte +0x44 bit 0x4 (persistent "collected", set by op 0x93). Returns 4 or 0. No null check. high
|
||||
31 onGround yes no Flag +0xEC & 0x2 (standing on a floor; slope/platform code FUN_004054c0 requires it). Returns 2 or 0. medium
|
||||
32 flagE8_400000 yes no Flag +0xE8 bit 22 (0x400000) as 0/1. low
|
||||
33 flagE8_800000 yes no Flag +0xE8 bit 23 (0x800000) as 0/1. low
|
||||
34 x yes yes Position x +0x30, 20.12. high
|
||||
35 y yes yes Position y +0x34, 20.12. high
|
||||
36 z yes yes Position z +0x38, 20.12. high
|
||||
37 rotX yes yes Rotation x (pitch) +0x20; get masks to 24 bits (0x1000000 = full turn), set stores raw. high
|
||||
38 rotY yes yes Rotation y (yaw) +0x24; 24-bit angle, 0x1000000 = full turn. high
|
||||
39 rotZ yes yes Rotation z (roll) +0x28; 24-bit angle. high
|
||||
41 angleToPlayer yes no Yaw from this strat to the player: atan2(px-x, pz-z) (FUN_00404d60(player+0x30, self+0x30)), 24-bit angle; 0 if no player. (Notes called 41 "distance to player" - code is an angle.) high
|
||||
42 padHeld yes no Joypad buttons currently held, DAT_005FCF20 (bit mask: 0x10 up, 0x40 down, 0x80 left?, 0x20 right?, 0x1/0x8/0x400.. buttons; 0x10000-0x80000 = direction relative to player yaw). high
|
||||
43 padReleased yes no Buttons released this frame, DAT_005FCF34 (= old & ~new). high
|
||||
44 padPressed yes no Buttons newly pressed this frame, DAT_005FCF30 (= new & ~old). high
|
||||
45 distToPlayer yes no 3D distance to the player, cached in +0x1C (computed lazily as sqrt of +0x148, the squared distance updated per frame), 20.12. high
|
||||
47 scale yes no Scale y +0x64 (used as the uniform scale value), 20.12; see op 0x55. high
|
||||
48 scaleX yes no Scale x +0x60, 20.12. high
|
||||
49 scaleY yes no Scale y +0x64, 20.12. high
|
||||
50 scaleZ yes no Scale z +0x68, 20.12. high
|
||||
51 stratCount yes no Number of strats in use DAT_006D9DC8 << 12. medium
|
||||
52 stratCapacity yes no Level header (DAT_00584648)+0x08 << 12 (max strat count of the level; compared against stratCount on spawn). medium
|
||||
53 distToWpXZ yes no Horizontal (x/z) distance from strat to current waypoint, 20.12 (FUN_00404c50). high
|
||||
54 boneX yes no +0xD8: x of the bone/attachment point computed by op 0xc7 (useBone), 20.12 world. medium
|
||||
55 boneY yes no +0xDC bone point y. medium
|
||||
56 boneZ yes no +0xE0 bone point z. medium
|
||||
57 playerPtr yes no Pointer to the player strat (DAT_006D9E1C); 0 if none (usable as "player exists"). high
|
||||
58 camLookAtX yes yes Camera look-at point x DAT_006D9D80, 20.12 (default 0; cut-scene cameras write it). medium
|
||||
59 camLookAtY yes yes Camera look-at point y DAT_006D9D84 (default 1.0). medium
|
||||
60 camLookAtZ yes yes Camera look-at point z DAT_006D9D88. medium
|
||||
61 tribe yes no Current level tribe DAT_00584EB4 << 12 (level id part 1, %d_%d_%d file names). high
|
||||
62 world yes no Current level world DAT_00584EB8 << 12. high
|
||||
63 chapter yes no Current level chapter DAT_00584EBC << 12. high
|
||||
64 map yes no Current map/sub-level DAT_00584EC0 << 12. high
|
||||
65 hasCamTarget yes no -1 if a camera target strat (DAT_006D9E30, op 0xc9) is set, else 0. medium
|
||||
66 hasCamTarget2 yes no -1 if the second camera target (DAT_006D9E34, op 0xca) is set, else 0. medium
|
||||
67 padType yes no DAT_005FCF18 << 12: 3 = digital pad, 2 = direction/analog input active this frame. low
|
||||
68 camDistToTarget yes no 3D distance camera strat (0x6D9E28) -> camera target (0x6D9E30), 20.12; 0 if no camera. high
|
||||
69 camDistToTarget2 yes no 3D distance camera -> second target (0x6D9E34), 20.12; 0 if no camera. high
|
||||
70 camTargetYawDiff yes no Signed yaw difference target.rotY - camera.rotY (wrapped to +-0x800000, FUN_0054dae0). No null checks. high
|
||||
72 camDistToTargetXZ yes no Horizontal distance camera -> target (FUN_00404cc0), 20.12. No null check. high
|
||||
73 camDistToTarget2XZ yes no Horizontal distance camera -> second target, 20.12. No null check. high
|
||||
75 stickX yes no Analog/digital stick x DAT_005FCF1C (-0x2000..0x1FC0, i.e. about +-2.0 fixed). high
|
||||
76 stickY yes no Stick y DAT_005FCF2C (same range). high
|
||||
77 stickMagnitude yes no Stick deflection DAT_005FCEFC, raw int 0..0xB5 (thresholds: 42 deadzone, 84 direction bits, see ids 94-97/130-131). high
|
||||
78 stickAngle yes no Stick direction DAT_005FCF4E (short, 4096 units) << 12. high
|
||||
79 stickAngleWorld yes no (stick angle + camera yaw DAT_005FCF00) << 12, masked to 24 bits: stick direction in world yaw. high
|
||||
80 stick2X yes no DAT_005FCF28, never written by the exe (second stick set, always 0). low
|
||||
81 stick2Y yes no DAT_005FCF24, never written (always 0). low
|
||||
82 stick2Magnitude yes no DAT_005FCEF8, never written (always 0). low
|
||||
83 stick2Angle yes no Short DAT_005FCF4C << 12, never written. low
|
||||
84 stick2AngleWorld yes no (camera yaw + DAT_005FCF4C) << 12 masked 24 bits. low
|
||||
85 slopeForward yes no Floor normal rotated into the strat's yaw frame, forward component DAT_0057DDA8 (FUN_004054c0; 0 unless onGround), 20.12. medium
|
||||
86 slopeSide yes no Floor normal, sideways component in the strat's frame DAT_0057DD90, 20.12. medium
|
||||
87 slopeAngle yes no Downhill direction relative to the strat's yaw DAT_0057DD94 (0..0xFFF) << 12. medium
|
||||
88 padAux yes no DAT_005FCF58 (extra input bits, cleared when >1 pads). low
|
||||
90 padAuxPressed yes no DAT_005FCF60 = new & ~old of padAux. low
|
||||
91 unk_5b yes no DAT_00584F10 << 12 (game state global, unknown). low
|
||||
92 health yes no Player health DAT_00584E70 (fixed, starts at 5.0, HUD shows it; reset to 5.0 on respawn). Same value as id 189 (settable there). medium
|
||||
93 unk_5d yes no DAT_0058464C (raw, game-state pointer/flag). low
|
||||
94 stickWalkThreshold yes no Constant 84 (0x54, raw int): stick magnitude above which direction bits are generated. medium
|
||||
95 stickRunThreshold yes no Constant 123 (0x7B, raw int). medium
|
||||
96 stickWalkThreshold2 yes no Constant 84 (duplicate of 94). medium
|
||||
97 stickRunThreshold2 yes no Constant 123 (duplicate of 95). medium
|
||||
98 hasWaypoints yes no 1.0 if the EXECUTING strat (not the queried one) has a first waypoint (+0x118), else 0. For 0x1c (player prop) this still checks the caller. high
|
||||
99 distToBoss yes no 3D distance from the boss strat (DAT_006D9E24, op 0xef) to this strat, 20.12; 100.0 if none. high
|
||||
100 distToBossXZ yes no Horizontal distance boss -> this strat, 20.12; 100.0 if none. high
|
||||
101 zoneX yes no Map zone/cell record containing the strat (FUN_0054d560, same x/z grid cell, nearest y) field +0x0C, integer part (& 0xFFFFF000); -1.0 if none. low
|
||||
102 zoneY yes no Zone record field +0x10 integer part; -1.0 if none. low
|
||||
103 zoneZ yes no Zone record field +0x14 integer part; -1.0 if none. low
|
||||
104 distToWpSq yes no Squared 3D distance to current waypoint ((d>>6)^2 summed, i.e. 20.12 of world units squared). Same as 194. high
|
||||
105 distToWpSqXZ yes no Squared horizontal distance to current waypoint. high
|
||||
106 flag83730Clear yes no 1.0 if DAT_00583730 == 0 (FUN_00414fb0), else 0. low
|
||||
107 distToPlayerXZ yes no Horizontal distance player -> this strat, 20.12; 100.0 if no player. high
|
||||
108 saveByte5219 yes no DAT_00585219 << 12 (per-save-slot byte, reset to 0 on new game). low
|
||||
110 queueAEmpty yes no 1.0 if DAT_006D9858 < 1 (message/stream queue A empty), else 0. low
|
||||
111 queueBEmpty yes no 1.0 if DAT_006D94E8 < 1 (queue B empty; also blocks HUD counters), else 0. low
|
||||
120 camFloorHeight yes yes Get: floor height of the map cell under the camera DAT_00586424 (-16.0 if outside the map). Set: writes the OVERRIDE DAT_0058641C (non-zero replaces the computed value). Get and set use different variables. medium
|
||||
121 camX yes yes Camera position x DAT_006D9D20 (copied from the camera strat each frame), 20.12. high
|
||||
122 camY yes yes Camera position y DAT_006D9D24. high
|
||||
123 camZ yes yes Camera position z DAT_006D9D28. high
|
||||
124 flagEC_1000000 yes no Flag +0xEC bit 24 as 0/1. low
|
||||
125 flagEC_2000000 yes no Flag +0xEC bit 25 as 0/1. low
|
||||
126 hitDepth yes no Short +0xD4 (raw): penetration depth of the last player-vs-strat sphere hit (FUN_004051d0), 0xFFFF none. medium
|
||||
127 hitAngle yes no Short +0xD6 << 12: direction of the last sphere hit (4096 units; player gets the opposite of the strat). medium
|
||||
128 unk_80 yes no DAT_00585004 << 12 (unknown game global). low
|
||||
129 zoneFlags yes no Zone record (FUN_0054d560) +0x20 & 0xC00, << 12; -1.0 if none. low
|
||||
130 stickDeadzone yes no Constant 42 (0x2A, raw int). medium
|
||||
131 stickDeadzone2 yes no Constant 42 (duplicate). medium
|
||||
132 oldX yes yes Previous-frame position x +0x50, 20.12 (collision code restores it on edge push-back). medium
|
||||
133 oldY yes yes Previous position y +0x54. medium
|
||||
134 oldZ yes yes Previous position z +0x58. medium
|
||||
135 unk_6da2c0 yes no DAT_006DA2C0, no other reference (always 0). low
|
||||
136 unk_6da2c4 yes no DAT_006DA2C4, no other reference (always 0). low
|
||||
137 queuesEmpty yes no 1.0 if both queue A and queue B are empty (ids 110 and 111), else 0. low
|
||||
138 alpha yes yes Transparency +0x10C (renderer: < 0x1000 = translucent, 1.0 = opaque), 20.12. medium
|
||||
139 oldRotX yes yes Previous rotation x +0x40 (24-bit masked on get). medium
|
||||
140 oldRotY yes yes Previous yaw +0x44 (compared with +0x24 by the collision code). medium
|
||||
141 oldRotZ yes yes Previous rotation z +0x48. medium
|
||||
142 optionFlag80000 yes no DAT_006DA330 & 0x80000 (global option/debug flag word). low
|
||||
143 camScale yes yes DAT_006D9D30, camera value initialised to 1.0 (zoom/fov factor?). low
|
||||
144 levelHeaderC yes no Level header (DAT_00584648)+0x0C ushort << 12. low
|
||||
145 slopeSteepness yes no 1.0 - floor normal y (DAT_0057DDA4) << 12: 0 on flat ground (FUN_004054c0). medium
|
||||
147 levelTableByte yes no Byte table 0x585024[map + (chapter + tribe*10)*4] << 12 (per-level constant). low
|
||||
149 flagEC_1 yes no Flag +0xEC & 0x1. low
|
||||
150 flagEC_8000000 yes no Flag +0xEC & 0x8000000. low
|
||||
151 cheat5 yes no Cheat toggle bits DAT_00584710 & 0x20 (button-sequence cheats, FUN_0041a0xx). medium
|
||||
153 frameCounter yes no Strat-update frame counter DAT_006D9E10 (+1.0 per frame). high
|
||||
154 hitSphere yes no Byte +0x130 << 12: index of the collision sphere hit by the player (FUN_004051d0). medium
|
||||
155 unk_6d9d38 yes no DAT_006D9D38, no other reference. low
|
||||
156 unk_6d9cf0 yes no DAT_006D9CF0, no other reference. low
|
||||
157 isFloorCollisionSolid yes no 1 (raw) if +0xEC has both 0x8000 and 0x10000 set, else 0. low
|
||||
159 scratch6d9e68 yes yes DAT_006D9E68 (only accessed by strats). low
|
||||
160 saveEnabled yes yes DAT_006D9E74 (1.0 enables the save-game prompt, reset to 0 on level start). low
|
||||
161 hudValueA yes yes DAT_006DA300 (HUD element value, shown via >>12, reset per level). low
|
||||
162 hudValueB yes yes DAT_006DA2F8 (HUD element value, reset per level). low
|
||||
163 audioMode yes yes DAT_006DA2FC: 3.0/4.0/5.0 from the sound output menu (Stereo/Quatro/Surround); also written (slot+1) by save code. low
|
||||
164 instanceData0 yes yes Map-instance record (+0xF0)+0x28 -> word 0. Set returns NULL (crash) unless record+0x24 != 0. Get pushes nothing if no record. low
|
||||
165 instanceData1 yes yes Map-instance record (+0xF0)+0x28 -> word 1. low
|
||||
166 floorCollisionOn yes no Flag +0xEC & 0x8000 (floor collision, ops 0xa5/0xa6). medium
|
||||
169 lives yes yes DAT_00584E6C (fixed, starts at 5.0, saved per slot) - lives or max health. low
|
||||
171 saveProgressA yes no DAT_00585008 << 12 (saved progress byte). low
|
||||
172 progressWorld yes no DAT_0058500C << 12 (saved; world of the furthest/selected level, 8 = finale). low
|
||||
173 progressChapter yes no DAT_00585010 << 12 (saved; chapter, 6 with world 8 = last level). low
|
||||
174 saveProgressB yes no DAT_00585014 << 12 (saved progress byte). low
|
||||
175 unk_6da308 yes no DAT_006DA308, no other reference. low
|
||||
178 cheat4 yes no DAT_00584710 & 0x10 (cheat toggle). medium
|
||||
179 hudFlags yes yes DAT_006DA2E0 HUD element enable mask (default 0x3F000; 0x2000 timer, 0x8000/0x10000/0x20000/0x40000 counters). medium
|
||||
181 gameState1d74 yes yes DAT_00581D74 (game/menu state, checked == 0 for normal play). low
|
||||
182 camFlag800000 yes no Camera strat +0xEC & 0x800000 (0 if no camera). low
|
||||
183 slopeNormalX yes no Floor normal x DAT_0057DD9C (world, 20.12; FUN_004054c0). medium
|
||||
184 slopeNormalZ yes no Floor normal z DAT_0057DDA0. medium
|
||||
185 wpParam2 yes yes Current waypoint field +0x2C (raw); 0 / NULL if no waypoint. medium
|
||||
186 hitRadius yes yes +0x13C: player interaction radius (player collides when squared player distance +0x148 <= r*r), 20.12. medium
|
||||
187 hitDamage yes yes +0x140: damage dealt on contact (copied into the other strat's +0x144). medium
|
||||
188 damageTaken yes no +0x144: damage received from the last contact (player cleared to 0 each frame). medium
|
||||
189 health2 yes yes DAT_00584E70 = health (same as 92, settable). medium
|
||||
190 levelRecord yes yes Per-level saved word DAT_00584F1C[chapter + world*6] (best/collected value for the current level; HUD shows it). low
|
||||
191 counterC yes yes DAT_00584FFC: persistent HUD counter (icon 0x150), saved. low
|
||||
192 counterA yes yes DAT_00584FF4: persistent HUD counter (icon 0x184, displayed up to 999) - probably coins. low
|
||||
201 distToPlayerSq yes no +0x148: cached squared distance to the player ((d>>6)^2 sum), updated each frame when tracking (op 0x30). high
|
||||
202 distToPlayerSqXZ yes no Squared horizontal distance player -> strat (FUN_00404c90); 100.0 if no player. high
|
||||
203 soundVecX yes yes DAT_006DA2CC; on the next set of 203/204 the magnitude sqrt(x^2+y^2)*4 is passed to FUN_00546140 (sound/volume parameter). low
|
||||
204 soundVecY yes yes DAT_006DA2D0, see 203. low
|
||||
210 collisionHeight yes yes Collision record (+0xC0)+0x18: strat height/size used for ceiling tests (ceiling hit if ceiling <= y + this), 20.12. Get 0 if no record. medium
|
||||
211 mapFloorHeight yes no (+0xC0)+0x1C: floor height from the landscape test (FUN_004036d0), 0xFFFF0000 none. No null check. low
|
||||
212 mapFloorMaterial yes no Short (+0xC0)+0x24 << 12: material of that floor (0xFFFF none). low
|
||||
213 objFloorHeight yes no (+0xC0)+0x20: floor height from the strat-object test (FUN_00403ad0, skipped with +0xE8 bit 0x400). low
|
||||
214 objFloorMaterial yes no Short (+0xC0)+0x26 << 12: material of the object floor. low
|
||||
215 wallMaterial yes no Short (+0xC0)+0x3A << 12 (material of the wall/side surface hit, set with object/face +0x3C/+0x3E). low
|
||||
217 collisionField38 yes yes Short (+0xC0)+0x38 raw on get; set writes 32 bits at +0x38 (also clobbers +0x3A). low
|
||||
218 hudDigit yes yes DAT_006DA290: HUD single-digit counter (shown as '0'+value>>12). low
|
||||
226 animFrameCount yes no Anim header (+0x14)+0x08 << 12 (number of frames). No null check. high
|
||||
227 angleToCamLookAt yes no Yaw from the strat to the camera look-at point (DAT_006D9D80), 24-bit angle. medium
|
||||
228 skyParamA yes yes DAT_0057D830 (render global, sky/background). low
|
||||
229 skyParamB yes yes DAT_0057D83C. low
|
||||
230 skyParamC yes yes DAT_0057D840. low
|
||||
231 skyRotation yes yes DAT_0057D834: rotation added to a background model's yaw (>>12 & 0xFFF). low
|
||||
232 hudTimer yes yes DAT_006DA304: HUD timer/counter value (>>12 displayed, element bit 0x2000). low
|
||||
233 animPtr yes no Current anim address +0x14 (0 = none). high
|
||||
234 cheat1 yes no DAT_00584710 & 0x2 (cheat toggle). medium
|
||||
236 hudRefresh yes yes DAT_006DA2DC (forces HUD counter redraw when non-zero). low
|
||||
239 unk_57ddb0 yes no DAT_0057DDB0, no other reference. low
|
||||
240 unk_57ddb4 yes no DAT_0057DDB4, no other reference. low
|
||||
241 unk_57ddb8 yes no DAT_0057DDB8, no other reference. low
|
||||
242 drawDistance yes no 1000.0 unless +0xEC bit 0x10000; else (bit 0x400000 ? DAT_0058658C : DAT_00586590) + 0.5 (view/clip distance globals). low
|
||||
243 ceilingHeight yes no (+0xC0)+0x28: height of the surface above (1000.0 default when ceiling test enabled by +0xE8 0x200000). No null check. medium
|
||||
244 zoneParam yes no DAT_006DA298: short +0x38 of the zone record the strat entered (op FUN_0054df30, used as conveyor/offset). low
|
||||
249 wpPtr yes yes Current waypoint pointer +0x120 (set allows jumping to a stored node). high
|
||||
250 counterB yes yes DAT_00584E60: HUD counter (icon 0x11C), reset when entering a different level. low
|
||||
253 musicBusy yes no 1 (raw) if FUN_00546600(DAT_006D94B4,0) == 2 (stream/voice state), else 0. low
|
||||
265 musicTrack yes no Current music track DAT_00586430 << 12 (level header +0x58, 0x23/0x27 for special modes). medium
|
||||
|
Can't render this file because it contains an unexpected character in line 24 and column 82.
|
Reference in new issue
Block a user