pokeemerald/include/script.h

66 lines
2.1 KiB
C
Raw Normal View History

2017-09-07 17:45:32 +00:00
#ifndef GUARD_SCRIPT_H
#define GUARD_SCRIPT_H
struct ScriptContext;
typedef bool8 (*ScrCmdFunc)(struct ScriptContext *);
typedef u8 Script[];
struct ScriptContext
{
u8 stackDepth;
u8 mode;
u8 comparisonResult;
u8 (*nativePtr)(void);
const u8 *scriptPtr;
const u8 *stack[20];
ScrCmdFunc *cmdTable;
ScrCmdFunc *cmdTableEnd;
u32 data[4];
};
#define ScriptReadByte(ctx) (*(ctx->scriptPtr++))
void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd);
u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr);
2017-09-10 21:05:23 +00:00
void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void));
2017-09-07 17:45:32 +00:00
void StopScript(struct ScriptContext *ctx);
2017-09-10 21:05:23 +00:00
bool8 RunScriptCommand(struct ScriptContext *ctx);
2017-10-12 19:36:26 +00:00
void ScriptJump(struct ScriptContext *ctx, const u8 *ptr);
void ScriptCall(struct ScriptContext *ctx, const u8 *ptr);
2017-09-07 17:45:32 +00:00
void ScriptReturn(struct ScriptContext *ctx);
u16 ScriptReadHalfword(struct ScriptContext *ctx);
u32 ScriptReadWord(struct ScriptContext *ctx);
void ScriptContext2_Enable(void);
void ScriptContext2_Disable(void);
bool8 ScriptContext2_IsEnabled(void);
void ScriptContext1_Init(void);
2017-09-10 21:05:23 +00:00
bool8 ScriptContext1_IsScriptSetUp(void);
2017-09-07 17:45:32 +00:00
bool8 ScriptContext2_RunScript(void);
void ScriptContext1_SetupScript(const u8 *ptr);
void ScriptContext1_Stop(void);
void EnableBothScriptContexts(void);
void ScriptContext2_RunNewScript(const u8 *ptr);
u8 *MapHeaderGetScriptTable(u8 tag);
void MapHeaderRunScriptType(u8 tag);
u8 *MapHeaderCheckScriptTable(u8 tag);
void RunOnLoadMapScript(void);
void RunOnTransitionMapScript(void);
void RunOnResumeMapScript(void);
void RunOnReturnToFieldMapScript(void);
void RunOnDiveWarpMapScript(void);
bool8 TryRunOnFrameMapScript(void);
void TryRunOnWarpIntoMapScript(void);
2017-09-07 17:45:32 +00:00
u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
2018-10-17 02:47:08 +00:00
bool8 InitRamScript(const u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
const u8 *GetRamScript(u8 objectId, const u8 *script);
2019-04-02 17:57:03 +00:00
bool32 ValidateSavedRamScript(void);
u8 *GetSavedRamScriptIfValid(void);
void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize);
2017-09-07 17:45:32 +00:00
2019-03-02 08:18:08 +00:00
// srccmd.h
2019-11-01 07:41:55 +00:00
void SetMovingNpcId(u16 npcId);
2019-03-02 08:18:08 +00:00
2017-09-07 17:45:32 +00:00
#endif // GUARD_SCRIPT_H