papermario/src/code_f4c60_len_4300.c
2020-09-23 23:16:13 -04:00

342 lines
9.4 KiB
C

#include "common.h"
ApiStatus SpeakToPlayer(ScriptInstance* script, s32 isInitialCall) {
return _show_message(script, isInitialCall, 0);
}
ApiStatus EndSpeech(ScriptInstance* script, s32 isInitialCall) {
return _show_message(script, isInitialCall, 1);
}
ApiStatus ContinueSpeech(ScriptInstance* script, s32 isInitialCall) {
return _show_message(script, isInitialCall, 2);
}
ApiStatus SpeakToNpc(ScriptInstance* script, s32 isInitialCall) {
return _show_message(script, isInitialCall, 3);
}
INCLUDE_ASM("code_f4c60_len_4300", _show_message);
INCLUDE_API_ASM("code_f4c60_len_4300", ShowMessageAtScreenPos);
INCLUDE_API_ASM("code_f4c60_len_4300", ShowMessageAtWorldPos);
INCLUDE_API_ASM("code_f4c60_len_4300", CloseMessage);
INCLUDE_API_ASM("code_f4c60_len_4300", SwitchMessage);
INCLUDE_API_ASM("code_f4c60_len_4300", ShowChoice);
ApiStatus CloseChoice(ScriptInstance* script, s32 isInitialCall) {
close_message(D_802DB268);
return ApiStatus_DONE1;
}
ApiStatus CancelMessage(ScriptInstance* script, s32 isInitialCall) {
cancel_message(gCurrentPrintContext);
return ApiStatus_DONE2;
}
ApiStatus CancelMessageAndBlock(ScriptInstance* script, s32 isInitialCall) {
cancel_message(gCurrentPrintContext);
return ApiStatus_BLOCK;
}
ApiStatus SetMessageImages(ScriptInstance* script, s32 isInitialCall) {
set_message_images(*script->ptrReadPos);
return ApiStatus_DONE2;
}
ApiStatus func_802D0C94(ScriptInstance* script, s32 initialCall) {
if (get_variable(script, *script->ptrReadPos) == 0) {
D_8009A650[0] |= 0x10;
} else {
D_8009A650[0] &= ~0x10;
}
return ApiStatus_DONE2;
}
ApiStatus SetMessageString(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
Bytecode string = get_variable(script, *args++);
Bytecode index = get_variable(script, *args++);
set_message_string(string, index);
return ApiStatus_DONE2;
}
#ifdef NON_MATCHING
// TODO: Figure out why there's an extra NOP after this function
// It's probably because of a file split issue
ApiStatus SetMessageValue(ScriptInstance* script, s32 initialCall) {
Bytecode* ptrReadPos = script->ptrReadPos;
Bytecode value = get_variable(script, *ptrReadPos++);
Bytecode index = get_variable(script, *ptrReadPos);
set_message_value(value, index);
return ApiStatus_DONE2;
}
#else
INCLUDE_API_ASM("code_f4c60_len_4300", SetMessageValue);
#endif
ApiStatus HidePlayerShadow(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 hideShadow = get_variable(script, *args++);
if (hideShadow) {
disable_player_shadow();
} else {
enable_player_shadow();
}
return ApiStatus_DONE2;
}
ApiStatus DisablePlayerPhysics(ScriptInstance* script, s32 isInitialCall) {
Bytecode* args = script->ptrReadPos;
s32 disable = get_variable(script, *args++);
if (disable) {
disable_player_static_collisions();
} else {
enable_player_static_collisions();
}
return ApiStatus_DONE2;
}
ApiStatus DisablePlayerInput(ScriptInstance* script, s32 isInitialCall) {
PlayerStatus* playerStatus = &gPlayerStatus;
Bytecode* args = script->ptrReadPos;
s32 enable = get_variable(script, *args++);
if (enable) {
disable_player_input();
func_800EF628();
func_800E97B8();
func_800E984C();
if (playerStatus->actionState == ActionState_SPIN) {
playerStatus->animFlags |= 0x40000;
}
D_8009A650[0] |= 0x40;
} else {
enable_player_input();
func_800EF600();
func_800E01DC();
D_8009A650[0] &= ~0x40;
func_800E983C();
}
return ApiStatus_DONE2;
}
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerPos);
/*
ApiStatus SetPlayerPos(ScriptInstance* script, s32 isInitialCall) {
PlayerStatus* playerStatus = &gPlayerStatus;
Bytecode* args = script->ptrReadPos;
f32 x = get_variable(script, *args++);
f32 y = get_variable(script, *args++);
f32 z = get_variable(script, *args++);
Npc* playerNpc = gPlayerNpc;
playerNpc->pos.x = x;
playerNpc->pos.z = z;
playerNpc->pos.y = y;
playerStatus->position.x = x;
playerStatus->position.y = y;
playerStatus->position.z = z;
return ApiStatus_DONE2;
}
*/
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerCollisionSize);
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerSpeed);
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerJumpscale);
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerAnimation);
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerActionState);
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerAnimationSpeed);
INCLUDE_API_ASM("code_f4c60_len_4300", PlayerMoveTo);
INCLUDE_ASM("code_f4c60_len_4300", func_802D1270);
INCLUDE_ASM("code_f4c60_len_4300", func_802D1380);
INCLUDE_ASM("code_f4c60_len_4300", player_jump);
void PlayerJump(ScriptInstance* script, s32 isInitialCall) {
player_jump(script, isInitialCall, 0);
}
void PlayerJump1(ScriptInstance* script, s32 isInitialCall) {
player_jump(script, isInitialCall, 1);
}
void PlayerJump2(ScriptInstance* script, s32 isInitialCall) {
player_jump(script, isInitialCall, 2);
}
INCLUDE_API_ASM("code_f4c60_len_4300", InterpPlayerYaw);
INCLUDE_API_ASM("code_f4c60_len_4300", PlayerFaceNpc);
INCLUDE_API_ASM("code_f4c60_len_4300", GetPlayerTargetYaw);
INCLUDE_API_ASM("code_f4c60_len_4300", SetPlayerFlagBits);
ApiStatus GetPlayerActionState(ScriptInstance* script, s32 isInitialCall) {
Bytecode outVar = *script->ptrReadPos;
set_variable(script, outVar, gPlayerActionState);
return ApiStatus_DONE2;
}
ApiStatus GetPlayerPos(ScriptInstance* script, s32 isInitialCall) {
PlayerStatus* playerStatus = &gPlayerStatus;
Bytecode* args = script->ptrReadPos;
Bytecode outVar1 = *args++;
Bytecode outVar2 = *args++;
Bytecode outVar3 = *args++;
set_variable(script, outVar1, playerStatus->position.x);
set_variable(script, outVar2, playerStatus->position.y);
set_variable(script, outVar3, playerStatus->position.z);
return ApiStatus_DONE2;
}
ApiStatus GetPlayerAnimation(ScriptInstance* script, s32 isInitialCall) {
Bytecode outVar = *script->ptrReadPos;
set_variable(script, outVar, gPlayerAnimation);
return ApiStatus_DONE2;
}
ApiStatus FullyRestoreHPandFP(ScriptInstance* script, s32 isInitialCall) {
PlayerData* playerData = &gPlayerData;
playerData->curHP = playerData->curMaxHP;
playerData->curFP = playerData->curMaxFP;
return ApiStatus_DONE2;
}
INCLUDE_ASM("code_f4c60_len_4300", FullyRestoreSP);
INCLUDE_ASM("code_f4c60_len_4300", EnablePartner);
INCLUDE_ASM("code_f4c60_len_4300", DisablePartner);
INCLUDE_ASM("code_f4c60_len_4300", UseEntryHeading);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2148);
INCLUDE_ASM("code_f4c60_len_4300", UseExitHeading);
INCLUDE_ASM("code_f4c60_len_4300", func_802D23F8);
INCLUDE_ASM("code_f4c60_len_4300", func_802D244C);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2484);
INCLUDE_ASM("code_f4c60_len_4300", func_802D249C);
INCLUDE_ASM("code_f4c60_len_4300", func_802D24F4);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2508);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2520);
INCLUDE_ASM("code_f4c60_len_4300", func_802D286C);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2884);
INCLUDE_ASM("code_f4c60_len_4300", DisablePulseStone);
INCLUDE_API_ASM("code_f4c60_len_4300", GetCurrentPartner);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2B50);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2B6C);
INCLUDE_API_ASM("code_f4c60_len_4300", Disable8bitMario);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2C14);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2C40);
INCLUDE_API_ASM("code_f4c60_len_4300", PlaySoundAtPlayer);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2D30);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2ED4);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2F34);
INCLUDE_ASM("code_f4c60_len_4300", func_802D2FCC);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3028);
INCLUDE_ASM("code_f4c60_len_4300", func_802D31E0);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3398);
INCLUDE_ASM("code_f4c60_len_4300", func_802D33D4);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3474);
INCLUDE_ASM("code_f4c60_len_4300", func_802D354C);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3624);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3674);
INCLUDE_ASM("code_f4c60_len_4300", func_802D36E0);
INCLUDE_ASM("code_f4c60_len_4300", func_802D378C);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3840);
INCLUDE_ASM("code_f4c60_len_4300", func_802D38EC);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3998);
INCLUDE_ASM("code_f4c60_len_4300", func_802D39FC);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3A60);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3C58);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3EB8);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3F74);
INCLUDE_ASM("code_f4c60_len_4300", func_802D3FC8);
INCLUDE_ASM("code_f4c60_len_4300", func_802D4050);
INCLUDE_ASM("code_f4c60_len_4300", func_802D4164);
INCLUDE_ASM("code_f4c60_len_4300", func_802D417C);
INCLUDE_ASM("code_f4c60_len_4300", func_802D420C);
INCLUDE_ASM("code_f4c60_len_4300", func_802D42AC);
INCLUDE_ASM("code_f4c60_len_4300", func_802D4364);
INCLUDE_ASM("code_f4c60_len_4300", func_802D43AC);
INCLUDE_ASM("code_f4c60_len_4300", func_802D43D0);
INCLUDE_ASM("code_f4c60_len_4300", func_802D43F4);
INCLUDE_ASM("code_f4c60_len_4300", func_802D4434);
INCLUDE_ASM("code_f4c60_len_4300", func_802D4488);
INCLUDE_ASM("code_f4c60_len_4300", func_802D4560);