Files
2026-10-03 13:05:59 +00:00

870 lines
20 KiB
C++

#pragma once
#include "common.h"
#include "dataalloc_fwd.hpp"
/**
* @file
* Declares the opcodes a monster's battle script can call.
*
* Every opcode reads its arguments off the script's argument stack and reports
* whether the script may carry on. The monster it acts on is the one
* `NowMonstorUnit` currently names, except where the opcode takes a monster
* index of its own.
*/
// Forward declarations for the types these declarations name. The skeleton
// headers are generated from the retail symbol table, which knows the type
// names but not where they live.
class CRunScript;
struct RS_STACKDATA;
/**
* Integers each monster's script pushes and pops, eight per monster.
*/
extern int PUSH_INT_DATA[16][8];
/**
* Integers the monster scripts share, set and read by index.
*/
extern int GL_INT[10];
/**
* Opcode table the monster scripts dispatch through, indexed by operation number.
*/
extern int (*ext_func[256])(RS_STACKDATA *, int);
/**
* Palette colour each element tints a hit monster with, as red, green and blue.
*/
extern int elmColor[6][3];
/**
* Starts a motion on the monster and every part linked to it, optionally at a given speed and repeat count.
*
* @mangled _SET_MOTION__FP12RS_STACKDATAi
* @address 0x1E1710
* @size 0x478
*/
int _SET_MOTION(RS_STACKDATA *stack, int argc);
/**
* Reports whether the monster's motion has reached its last frame.
*
* @mangled _CHK_MOTION_FRM__FP12RS_STACKDATAi
* @address 0x1E1B90
* @size 0xCC
*/
int _CHK_MOTION_FRM(RS_STACKDATA *stack, int argc);
/**
* Reads the frame the monster's motion currently stands on.
*
* @mangled _GET_MOTION_FRM__FP12RS_STACKDATAi
* @address 0x1E1C60
* @size 0x44
*/
int _GET_MOTION_FRM(RS_STACKDATA *stack, int argc);
/**
* Moves the monster's motion to a given frame.
*
* @mangled _SET_MOTION_FRM__FP12RS_STACKDATAi
* @address 0x1E1CB0
* @size 0x48
*/
int _SET_MOTION_FRM(RS_STACKDATA *stack, int argc);
/**
* Measures the distance from the monster to the player or to a given point.
*
* @mangled _GET_DISTANCE__FP12RS_STACKDATAi
* @address 0x1E1D00
* @size 0xEC
*/
int _GET_DISTANCE(RS_STACKDATA *stack, int argc);
/**
* Reads the world position of the monster or of the player.
*
* @mangled _GET_POSITION__FP12RS_STACKDATAi
* @address 0x1E1DF0
* @size 0xEC
*/
int _GET_POSITION(RS_STACKDATA *stack, int argc);
/**
* Turns the monster towards a point, immediately where no turn rate is given.
*
* @mangled _SET_ROTATION__FP12RS_STACKDATAi
* @address 0x1E1EE0
* @size 0x1C4
*/
int _SET_ROTATION(RS_STACKDATA *stack, int argc);
/**
* Reports whether the monster has finished turning.
*
* @mangled _CHK_ROTATION__FP12RS_STACKDATAi
* @address 0x1E20B0
* @size 0x70
*/
int _CHK_ROTATION(RS_STACKDATA *stack, int argc);
/**
* Reports whether the monster has finished moving, and how far it still has to go.
*
* @mangled _CHK_MOVE__FP12RS_STACKDATAi
* @address 0x1E2120
* @size 0xFC
*/
int _CHK_MOVE(RS_STACKDATA *stack, int argc);
/**
* Reports whether the player stands within a cone in front of the monster and near enough to it.
*
* @mangled _CHK_USER_INNER_PRODUCT__FP12RS_STACKDATAi
* @address 0x1E2220
* @size 0x210
*/
int _CHK_USER_INNER_PRODUCT(RS_STACKDATA *stack, int argc);
/**
* Gives the unit vector from the monster to a point, optionally turned about the vertical axis.
*
* @mangled _GET_VECTOR__FP12RS_STACKDATAi
* @address 0x1E2430
* @size 0x210
*/
int _GET_VECTOR(RS_STACKDATA *stack, int argc);
/**
* Gives the unit vector the monster faces, optionally turned about the vertical axis.
*
* @mangled _GET_DIRECTION__FP12RS_STACKDATAi
* @address 0x1E2640
* @size 0x17C
*/
int _GET_DIRECTION(RS_STACKDATA *stack, int argc);
/**
* Sends the monster towards a point at a given speed.
*
* @mangled _SET_MOVE__FP12RS_STACKDATAi
* @address 0x1E27C0
* @size 0x15C
*/
int _SET_MOVE(RS_STACKDATA *stack, int argc);
/**
* Reports whether the floor carries the monster all the way to a point.
*
* @mangled _CHK_MOVE_INFO__FP12RS_STACKDATAi
* @address 0x1E2920
* @size 0x140
*/
int _CHK_MOVE_INFO(RS_STACKDATA *stack, int argc);
/**
* Stops the monster where it stands.
*
* @mangled _SET_MOVE_CANSEL__FP12RS_STACKDATAi
* @address 0x1E2A60
* @size 0x38
*/
int _SET_MOVE_CANSEL(RS_STACKDATA *stack, int argc);
/**
* Stops the monster's turn at its current angle.
*
* @mangled _SET_ROT_CANSEL__FP12RS_STACKDATAi
* @address 0x1E2AA0
* @size 0x38
*/
int _SET_ROT_CANSEL(RS_STACKDATA *stack, int argc);
/**
* Puts the monster at a world position.
*
* @mangled _SET_POSITION__FP12RS_STACKDATAi
* @address 0x1E2AE0
* @size 0x84
*/
int _SET_POSITION(RS_STACKDATA *stack, int argc);
/**
* Sets whether gravity pulls the monster down.
*
* @mangled _STATUS_SET_FALL__FP12RS_STACKDATAi
* @address 0x1E2B70
* @size 0x5C
*/
int _STATUS_SET_FALL(RS_STACKDATA *stack, int argc);
/**
* Makes the monster proof against damage, unless it is already dying.
*
* @mangled _STATUS_SET_MUTEKI__FP12RS_STACKDATAi
* @address 0x1E2BD0
* @size 0x8C
*/
int _STATUS_SET_MUTEKI(RS_STACKDATA *stack, int argc);
/**
* Fades the monster towards an opacity, or sets that opacity outright.
*
* @mangled _STATUS_SET_ALPHA__FP12RS_STACKDATAi
* @address 0x1E2C60
* @size 0xB4
*/
int _STATUS_SET_ALPHA(RS_STACKDATA *stack, int argc);
/**
* Reports whether the monster has finished fading out, or in.
*
* @mangled _STATUS_CHK_ALPHA__FP12RS_STACKDATAi
* @address 0x1E2D20
* @size 0x10C
*/
int _STATUS_CHK_ALPHA(RS_STACKDATA *stack, int argc);
/**
* Marks the monster dead and takes it off the live count.
*
* @mangled _STATUS_SET_DEAD__FP12RS_STACKDATAi
* @address 0x1E2E30
* @size 0x4C
*/
int _STATUS_SET_DEAD(RS_STACKDATA *stack, int argc);
/**
* Chooses the script the monster runs next.
*
* @mangled _STATUS_SET_EVENT__FP12RS_STACKDATAi
* @address 0x1E2E80
* @size 0x2C
*/
int _STATUS_SET_EVENT(RS_STACKDATA *stack, int argc);
/**
* Chooses the script the monster runs next and reports the change.
*
* @mangled _RUN_SCRIPT__FP12RS_STACKDATAi
* @address 0x1E2EB0
* @size 0x3C
*/
int _RUN_SCRIPT(RS_STACKDATA *stack, int argc);
/**
* Sets whether the monster takes part in collision.
*
* @mangled _STATUS_SET_COL_OFF__FP12RS_STACKDATAi
* @address 0x1E2EF0
* @size 0x5C
*/
int _STATUS_SET_COL_OFF(RS_STACKDATA *stack, int argc);
/**
* Gives the monster's remaining life as a percentage of its maximum.
*
* @mangled _STATUS_GET_LIFE_RATE__FP12RS_STACKDATAi
* @address 0x1E2F50
* @size 0x88
*/
int _STATUS_GET_LIFE_RATE(RS_STACKDATA *stack, int argc);
/**
* Gives the vector the player faces, turned by an angle and optionally normalized.
*
* @mangled _STATUS_GET_USER_VECTOR__FP12RS_STACKDATAi
* @address 0x1E2FE0
* @size 0x104
*/
int _STATUS_GET_USER_VECTOR(RS_STACKDATA *stack, int argc);
/**
* Gives the monster's height.
*
* @mangled _STATUS_GET_HEIGHT__FP12RS_STACKDATAi
* @address 0x1E30F0
* @size 0x50
*/
int _STATUS_GET_HEIGHT(RS_STACKDATA *stack, int argc);
/**
* Gives a random integer below a bound.
*
* @mangled _GET_RAND__FP12RS_STACKDATAi
* @address 0x1E3140
* @size 0x88
*/
int _GET_RAND(RS_STACKDATA *stack, int argc);
/**
* Gives a random whole number below a bound, as a float.
*
* @mangled _GET_RANDF__FP12RS_STACKDATAi
* @address 0x1E31D0
* @size 0x84
*/
int _GET_RANDF(RS_STACKDATA *stack, int argc);
/**
* Gives the sine of an angle in degrees.
*
* @mangled _SIN_DEG__FP12RS_STACKDATAi
* @address 0x1E3260
* @size 0x54
*/
int _SIN_DEG(RS_STACKDATA *stack, int argc);
/**
* Gives the cosine of an angle in degrees.
*
* @mangled _COS_DEG__FP12RS_STACKDATAi
* @address 0x1E32C0
* @size 0x54
*/
int _COS_DEG(RS_STACKDATA *stack, int argc);
/**
* Tints the monster, either with a given colour or with the colour of its element.
*
* @mangled _STATUS_SET_PALLET__FP12RS_STACKDATAi
* @address 0x1E3320
* @size 0x1D4
*/
int _STATUS_SET_PALLET(RS_STACKDATA *stack, int argc);
/**
* Sets the distance at which the monster stops being drawn.
*
* @mangled _STATUS_SET_CLIPLEVEL__FP12RS_STACKDATAi
* @address 0x1E3500
* @size 0x54
*/
int _STATUS_SET_CLIPLEVEL(RS_STACKDATA *stack, int argc);
/**
* Gives the damage the monster took from the last hit.
*
* @mangled _STATUS_GET_HITDMG_VOL__FP12RS_STACKDATAi
* @address 0x1E3560
* @size 0x50
*/
int _STATUS_GET_HITDMG_VOL(RS_STACKDATA *stack, int argc);
/**
* Gives the motion the monster is playing.
*
* @mangled _STATUS_GET_MOTION_ID__FP12RS_STACKDATAi
* @address 0x1E35B0
* @size 0x44
*/
int _STATUS_GET_MOTION_ID(RS_STACKDATA *stack, int argc);
/**
* Gives the damage collision that last struck the monster.
*
* @mangled _STATUS_GET_DMG_ID__FP12RS_STACKDATAi
* @address 0x1E3600
* @size 0x50
*/
int _STATUS_GET_DMG_ID(RS_STACKDATA *stack, int argc);
/**
* Sets how far away the player may lock on to the monster.
*
* @mangled _STATUS_SET_LOCKON_DIST__FP12RS_STACKDATAi
* @address 0x1E3650
* @size 0x54
*/
int _STATUS_SET_LOCKON_DIST(RS_STACKDATA *stack, int argc);
/**
* Sets the length of the monster's shadow.
*
* @mangled _STATUS_SET_SHADOW_LEN__FP12RS_STACKDATAi
* @address 0x1E36B0
* @size 0x54
*/
int _STATUS_SET_SHADOW_LEN(RS_STACKDATA *stack, int argc);
/**
* Puts the lock-on marker on a named frame of the monster's model.
*
* @mangled _STATUS_SET_LOCKON_TRG__FP12RS_STACKDATAi
* @address 0x1E3710
* @size 0x130
*/
int _STATUS_SET_LOCKON_TRG(RS_STACKDATA *stack, int argc);
/**
* Gives the monster a movement collision sphere on a named frame.
*
* @mangled _SET_MOV_COL__FP12RS_STACKDATAi
* @address 0x1E3840
* @size 0x1A8
*/
int _SET_MOV_COL(RS_STACKDATA *stack, int argc);
/**
* Gives the monster a body collision sphere on a named frame, and clears its parameters.
*
* @mangled _SET_BODY_COL__FP12RS_STACKDATAi
* @address 0x1E39F0
* @size 0x2A8
*/
int _SET_BODY_COL(RS_STACKDATA *stack, int argc);
/**
* Sets one parameter of the body collision sphere the last opcode created.
*
* @mangled _SET_BODY_COL_PARA__FP12RS_STACKDATAi
* @address 0x1E3CA0
* @size 0x104
*/
int _SET_BODY_COL_PARA(RS_STACKDATA *stack, int argc);
/**
* Gives the monster a damage collision sphere on a named frame.
*
* @mangled _SET_DMG_COL__FP12RS_STACKDATAi
* @address 0x1E3DB0
* @size 0x214
*/
int _SET_DMG_COL(RS_STACKDATA *stack, int argc);
/**
* Sets the damage, kind and effect of the damage collision the last opcode created.
*
* @mangled _SET_DMG_PARA__FP12RS_STACKDATAi
* @address 0x1E3FD0
* @size 0x150
*/
int _SET_DMG_PARA(RS_STACKDATA *stack, int argc);
/**
* Fires the monster's first projectile from a named frame.
*
* @mangled _SET_SHOT__FP12RS_STACKDATAi
* @address 0x1E4120
* @size 0x1EC
*/
int _SET_SHOT(RS_STACKDATA *stack, int argc);
/**
* Fires the monster's second projectile from a named frame.
*
* @mangled _SET_SHOT2__FP12RS_STACKDATAi
* @address 0x1E4310
* @size 0x20C
*/
int _SET_SHOT2(RS_STACKDATA *stack, int argc);
/**
* Schedules a sound to play when the motion reaches a frame.
*
* @mangled _SET_SND_FRM__FP12RS_STACKDATAi
* @address 0x1E4520
* @size 0x144
*/
int _SET_SND_FRM(RS_STACKDATA *stack, int argc);
/**
* Starts a sound that keeps playing until it is stopped.
*
* @mangled _SET_LOOP_SND__FP12RS_STACKDATAi
* @address 0x1E4670
* @size 0xC8
*/
int _SET_LOOP_SND(RS_STACKDATA *stack, int argc);
/**
* Stops the monster's looping sound.
*
* @mangled _STOP_LOOP_SND__FP12RS_STACKDATAi
* @address 0x1E4740
* @size 0x6C
*/
int _STOP_LOOP_SND(RS_STACKDATA *stack, int argc);
/**
* Forgets the monster's looping sound without stopping it.
*
* @mangled _DEL_LOOP_SND__FP12RS_STACKDATAi
* @address 0x1E47B0
* @size 0x34
*/
int _DEL_LOOP_SND(RS_STACKDATA *stack, int argc);
/**
* Plays a sound at once.
*
* @mangled _SET_SND_NOW__FP12RS_STACKDATAi
* @address 0x1E47F0
* @size 0x38
*/
int _SET_SND_NOW(RS_STACKDATA *stack, int argc);
/**
* Stops a sound at once.
*
* @mangled _STOP_SND_NOW__FP12RS_STACKDATAi
* @address 0x1E4830
* @size 0x34
*/
int _STOP_SND_NOW(RS_STACKDATA *stack, int argc);
/**
* Gives the character the player is controlling.
*
* @mangled _GET_CHR_ID__FP12RS_STACKDATAi
* @address 0x1E4870
* @size 0x2C
*/
int _GET_CHR_ID(RS_STACKDATA *stack, int argc);
/**
* Gives the body collision that was last struck.
*
* @mangled _GET_COL_HIT_ID__FP12RS_STACKDATAi
* @address 0x1E48A0
* @size 0x50
*/
int _GET_COL_HIT_ID(RS_STACKDATA *stack, int argc);
/**
* Gives the index of the monster the script is running for.
*
* @mangled _GET_SCRIPT_ID__FP12RS_STACKDATAi
* @address 0x1E48F0
* @size 0x2C
*/
int _GET_SCRIPT_ID(RS_STACKDATA *stack, int argc);
/**
* Reads the world position of another monster.
*
* @mangled _GET_MONSTOR_POS__FP12RS_STACKDATAi
* @address 0x1E4920
* @size 0x98
*/
int _GET_MONSTOR_POS(RS_STACKDATA *stack, int argc);
/**
* Reads the motion frame another monster stands on.
*
* @mangled _GET_MONSTOR_FRM__FP12RS_STACKDATAi
* @address 0x1E49C0
* @size 0x58
*/
int _GET_MONSTOR_FRM(RS_STACKDATA *stack, int argc);
/**
* Puts another monster at a world position.
*
* @mangled _SET_MONSTOR_POS__FP12RS_STACKDATAi
* @address 0x1E4A20
* @size 0x9C
*/
int _SET_MONSTOR_POS(RS_STACKDATA *stack, int argc);
/**
* Sends another monster towards a point at a given speed.
*
* @mangled _SET_MONSTOR_MOVE__FP12RS_STACKDATAi
* @address 0x1E4AC0
* @size 0x13C
*/
int _SET_MONSTOR_MOVE(RS_STACKDATA *stack, int argc);
/**
* Gives one monster the heading and speed of another.
*
* @mangled _SET_MONSTOR_LINK_MOVE__FP12RS_STACKDATAi
* @address 0x1E4C00
* @size 0xBC
*/
int _SET_MONSTOR_LINK_MOVE(RS_STACKDATA *stack, int argc);
/**
* Stops another monster where it stands.
*
* @mangled _SET_MONSTOR_MOVE_CANSEL__FP12RS_STACKDATAi
* @address 0x1E4CC0
* @size 0x4C
*/
int _SET_MONSTOR_MOVE_CANSEL(RS_STACKDATA *stack, int argc);
/**
* Sets how far away the player may lock on to the monster.
*
* @mangled _SET_LOCKON_DIST__FP12RS_STACKDATAi
* @address 0x1E4D10
* @size 0x54
*/
int _SET_LOCKON_DIST(RS_STACKDATA *stack, int argc);
/**
* Sets whether the player may lock on to the monster at all.
*
* @mangled _SET_LOCKON_SW__FP12RS_STACKDATAi
* @address 0x1E4D70
* @size 0x5C
*/
int _SET_LOCKON_SW(RS_STACKDATA *stack, int argc);
/**
* Starts a motion on another monster and every part linked to it.
*
* @mangled _SET_MONSTOR_MOTION__FP12RS_STACKDATAi
* @address 0x1E4DD0
* @size 0x3B4
*/
int _SET_MONSTOR_MOTION(RS_STACKDATA *stack, int argc);
/**
* Stores an integer in a slot every monster script shares.
*
* @mangled _SET_GLOBAL_INT__FP12RS_STACKDATAi
* @address 0x1E5190
* @size 0x5C
*/
int _SET_GLOBAL_INT(RS_STACKDATA *stack, int argc);
/**
* Reads an integer out of a slot every monster script shares.
*
* @mangled _GET_GLOBAL_INT__FP12RS_STACKDATAi
* @address 0x1E51F0
* @size 0x50
*/
int _GET_GLOBAL_INT(RS_STACKDATA *stack, int argc);
/**
* Pitches the monster towards a point.
*
* @mangled _SET_ROTATION_X__FP12RS_STACKDATAi
* @address 0x1E5310
* @size 0x168
*/
int _SET_ROTATION_X(RS_STACKDATA *stack, int argc);
/**
* Aims one of the monster's three axes at a point.
*
* @mangled _LOOKAT__FP12RS_STACKDATAi
* @address 0x1E5480
* @size 0x338
*/
int _LOOKAT(RS_STACKDATA *stack, int argc);
/**
* Sets how quickly the monster and its linked parts blend between motions.
*
* @mangled _SET_MOTION_CHANGE_STEP__FP12RS_STACKDATAi
* @address 0x1E57C0
* @size 0xA8
*/
int _SET_MOTION_CHANGE_STEP(RS_STACKDATA *stack, int argc);
/**
* Gives the unit vector from another monster to a point, optionally turned about the vertical axis.
*
* @mangled _GET_MONSTOR_VECTOR__FP12RS_STACKDATAi
* @address 0x1E5870
* @size 0x214
*/
int _GET_MONSTOR_VECTOR(RS_STACKDATA *stack, int argc);
/**
* Sets the monster's life to a fraction of its maximum.
*
* @mangled _STATUS_SET_LIFE__FP12RS_STACKDATAi
* @address 0x1E5A90
* @size 0x84
*/
int _STATUS_SET_LIFE(RS_STACKDATA *stack, int argc);
/**
* Stores the monster's script flag word.
*
* @mangled _SET_BIN2__FP12RS_STACKDATAi
* @address 0x1E5B20
* @size 0x5C
*/
int _SET_BIN2(RS_STACKDATA *stack, int argc);
/**
* Sets one of a monster's five status-change resistances.
*
* @mangled _SET_STATUS_CHANGE__FP12RS_STACKDATAi
* @address 0x1E5B80
* @size 0xCC
*/
int _SET_STATUS_CHANGE(RS_STACKDATA *stack, int argc);
/**
* Turns one of a monster's texture animations on or off.
*
* @mangled _SET_TEX_ANIME_SW__FP12RS_STACKDATAi
* @address 0x1E5C50
* @size 0x10C
*/
int _SET_TEX_ANIME_SW(RS_STACKDATA *stack, int argc);
/**
* Reads the monster's script flag word.
*
* @mangled _GET_STATUS_BIN2__FP12RS_STACKDATAi
* @address 0x1E5D60
* @size 0x58
*/
int _GET_STATUS_BIN2(RS_STACKDATA *stack, int argc);
/**
* Sets the radius the monster occupies for collision.
*
* @mangled _SET_COLLISION_WIDTH__FP12RS_STACKDATAi
* @address 0x1E5DC0
* @size 0x54
*/
int _SET_COLLISION_WIDTH(RS_STACKDATA *stack, int argc);
/**
* Finds the nearest other live monster within two hundred and forty units.
*
* @mangled _GET_NEAR_MONSTER__FP12RS_STACKDATAi
* @address 0x1E5E20
* @size 0x198
*/
int _GET_NEAR_MONSTER(RS_STACKDATA *stack, int argc);
/**
* Starts the fade to black that ends a boss fight.
*
* @mangled _BOSS_FADE_OUT__FP12RS_STACKDATAi
* @address 0x1E5FC0
* @size 0x50
*/
int _BOSS_FADE_OUT(RS_STACKDATA *stack, int argc);
/**
* Reports whether the boss fade has finished.
*
* @mangled _CHEKC_FADE_OUT__FP12RS_STACKDATAi
* @address 0x1E6010
* @size 0x40
*/
int _CHEKC_FADE_OUT(RS_STACKDATA *stack, int argc);
/**
* Sets the gravity applied to the monster.
*
* @mangled _SET_GRAVITY__FP12RS_STACKDATAi
* @address 0x1E6050
* @size 0x5C
*/
int _SET_GRAVITY(RS_STACKDATA *stack, int argc);
/**
* Opens a window, in motion frames, during which the monster guards.
*
* @mangled _SET_GUARD_FRAME__FP12RS_STACKDATAi
* @address 0x1E60B0
* @size 0x14C
*/
int _SET_GUARD_FRAME(RS_STACKDATA *stack, int argc);
/**
* Reports the player's guard state, distance and character while the monster is guarding.
*
* @mangled _GUARD_SEARCH__FP12RS_STACKDATAi
* @address 0x1E6200
* @size 0x158
*/
int _GUARD_SEARCH(RS_STACKDATA *stack, int argc);
/**
* Gives the direction the player is moving in.
*
* @mangled _GET_MOVE_VEC__FP12RS_STACKDATAi
* @address 0x1E6360
* @size 0x5C
*/
int _GET_MOVE_VEC(RS_STACKDATA *stack, int argc);
/**
* Stores an integer in one of the monster's own eight slots.
*
* @mangled _PUSH_IGLOBAL__FP12RS_STACKDATAi
* @address 0x1E63C0
* @size 0x94
*/
int _PUSH_IGLOBAL(RS_STACKDATA *stack, int argc);
/**
* Reads an integer out of one of the monster's own eight slots.
*
* @mangled _POP_IGLOBAL__FP12RS_STACKDATAi
* @address 0x1E6460
* @size 0x88
*/
int _POP_IGLOBAL(RS_STACKDATA *stack, int argc);
/**
* Gives the status ailment the player is suffering.
*
* @mangled _GET_USER_STATUS__FP12RS_STACKDATAi
* @address 0x1E64F0
* @size 0x74
*/
int _GET_USER_STATUS(RS_STACKDATA *stack, int argc);
/**
* Attaches the monster's model to a named frame of its own hierarchy.
*
* @mangled _SET_REFERENCE__FP12RS_STACKDATAi
* @address 0x1E6570
* @size 0xC0
*/
int _SET_REFERENCE(RS_STACKDATA *stack, int argc);
/**
* Detaches another monster's model from whatever it was attached to.
*
* @mangled _DEL_REFERENCE__FP12RS_STACKDATAi
* @address 0x1E6630
* @size 0x5C
*/
int _DEL_REFERENCE(RS_STACKDATA *stack, int argc);
/**
* Sets whether the monster casts a shadow.
*
* @mangled _SET_SHADOW_FLAG__FP12RS_STACKDATAi
* @address 0x1E6690
* @size 0x5C
*/
int _SET_SHADOW_FLAG(RS_STACKDATA *stack, int argc);
/**
* Loads a monster script, giving it its argument stack, call stack and opcode table.
*
* @mangled BtSetEventScript__FP10CRunScriptPcP14CDataAlloc2_1_
* @address 0x1E66F0
* @size 0xA4
*/
int BtSetEventScript(CRunScript *script, char *program, CDataAlloc2<1> *arena);
/**
* Builds the opcode table out of the extension list, refusing a list that names one twice.
*
* @mangled BtSetEventExtendTable__Fv
* @address 0x1E67A0
* @size 0x12C
*/
void BtSetEventExtendTable();