through ScrCmd_release; propose names for remaining funcs

This commit is contained in:
scnorton
2019-01-06 13:06:56 -05:00
parent b16831e97b
commit 96e1b19dc1
22 changed files with 510 additions and 982 deletions
+286 -7
View File
@@ -15,6 +15,11 @@
#include "field_fadetransition.h"
#include "field_player_avatar.h"
#include "sound.h"
#include "script_movement.h"
#include "field_map_obj.h"
#include "field_map_obj_helpers.h"
#include "map_obj_lock.h"
#include "field_message_box.h"
extern u16 (*const gSpecials[])(void);
extern u16 (*const gSpecialsEnd[])(void);
@@ -24,11 +29,13 @@ extern const u8 *const gStdScriptsEnd[];
EWRAM_DATA ptrdiff_t gVScriptOffset = 0;
EWRAM_DATA u8 gUnknown_20370AC = 0;
EWRAM_DATA u16 sPauseCounter = 0;
EWRAM_DATA u16 gUnknown_20370B0 = 0;
EWRAM_DATA u16 gUnknown_20370B2 = 0;
EWRAM_DATA u16 gUnknown_20370B4 = 0;
EWRAM_DATA u16 sMovingNpcId = 0;
EWRAM_DATA u16 sMovingNpcMapBank = 0;
EWRAM_DATA u16 sMovingNpcMapId = 0;
EWRAM_DATA u16 gUnknown_20370B6 = 0;
extern u8 gSelectedEventObject;
// This is defined in here so the optimizer can't see its value when compiling
// script.c.
void * const gNullScriptPtr = NULL;
@@ -247,7 +254,7 @@ SCRCMD_DEF(ScrCmd_setmysteryeventstatus)
return FALSE;
}
SCRCMD_DEF(sub_806A28C)
SCRCMD_DEF(ScrCmd_cmdCF)
{
const u8 * script = sub_8069E48();
if (script != NULL)
@@ -562,7 +569,7 @@ SCRCMD_DEF(ScrCmd_incrementgamestat)
return FALSE;
}
SCRCMD_DEF(sub_806A888)
SCRCMD_DEF(ScrCmd_comparestattoword)
{
u8 statIdx = ScriptReadByte(ctx);
u32 value = ScriptReadWord(ctx);
@@ -577,7 +584,7 @@ SCRCMD_DEF(sub_806A888)
return FALSE;
}
SCRCMD_DEF(sub_806A8C0)
SCRCMD_DEF(ScrCmd_cmdD0)
{
u16 value = ScriptReadHalfword(ctx);
sub_8115748(value);
@@ -776,7 +783,7 @@ SCRCMD_DEF(ScrCmd_warpteleport)
return TRUE;
}
SCRCMD_DEF(ScrCmd_warpD7)
SCRCMD_DEF(ScrCmd_warpD1)
{
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
@@ -966,3 +973,275 @@ SCRCMD_DEF(ScrCmd_fadeinbgm)
FadeInBGM(4);
return FALSE;
}
SCRCMD_DEF(ScrCmd_applymovement)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
const void *movementScript = (const void *)ScriptReadWord(ctx);
ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript);
sMovingNpcId = localId;
return FALSE;
}
SCRCMD_DEF(ScrCmd_applymovement_at)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
const void *movementScript = (const void *)ScriptReadWord(ctx);
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript);
sMovingNpcId = localId;
return FALSE;
}
static bool8 WaitForMovementFinish(void)
{
return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank);
}
SCRCMD_DEF(ScrCmd_waitmovement)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
if (localId != 0)
sMovingNpcId = localId;
sMovingNpcMapBank = gSaveBlock1Ptr->location.mapGroup;
sMovingNpcMapId = gSaveBlock1Ptr->location.mapNum;
SetupNativeScript(ctx, WaitForMovementFinish);
return TRUE;
}
SCRCMD_DEF(ScrCmd_waitmovement_at)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapBank;
u8 mapId;
if (localId != 0)
sMovingNpcId = localId;
mapBank = ScriptReadByte(ctx);
mapId = ScriptReadByte(ctx);
sMovingNpcMapBank = mapBank;
sMovingNpcMapId = mapId;
SetupNativeScript(ctx, WaitForMovementFinish);
return TRUE;
}
SCRCMD_DEF(ScrCmd_removeobject)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
SCRCMD_DEF(ScrCmd_removeobject_at)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
return FALSE;
}
SCRCMD_DEF(ScrCmd_addobject)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
SCRCMD_DEF(ScrCmd_addobject_at)
{
u16 objectId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
show_sprite(objectId, mapNum, mapGroup);
return FALSE;
}
SCRCMD_DEF(ScrCmd_setobjectxy)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
sub_805F7C4(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y);
return FALSE;
}
SCRCMD_DEF(ScrCmd_setobjectxyperm)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u16 x = VarGet(ScriptReadHalfword(ctx));
u16 y = VarGet(ScriptReadHalfword(ctx));
Overworld_SetMapObjTemplateCoords(localId, x, y);
return FALSE;
}
SCRCMD_DEF(ScrCmd_moveobjectoffscreen)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
sub_805FE94(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
return FALSE;
}
SCRCMD_DEF(ScrCmd_showobject_at)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0);
return FALSE;
}
SCRCMD_DEF(ScrCmd_hideobject_at)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1);
return FALSE;
}
SCRCMD_DEF(ScrCmd_setobjectpriority)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
u8 priority = ScriptReadByte(ctx);
sub_805F3A8(localId, mapNum, mapGroup, priority + 83);
return FALSE;
}
SCRCMD_DEF(ScrCmd_resetobjectpriority)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 mapGroup = ScriptReadByte(ctx);
u8 mapNum = ScriptReadByte(ctx);
sub_805F400(localId, mapNum, mapGroup);
return FALSE;
}
SCRCMD_DEF(ScrCmd_faceplayer)
{
if (gMapObjects[gSelectedEventObject].active)
{
FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedEventObject],
player_get_direction_lower_nybble());
}
return FALSE;
}
SCRCMD_DEF(ScrCmd_turnobject)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 direction = ScriptReadByte(ctx);
FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, direction);
return FALSE;
}
SCRCMD_DEF(ScrCmd_setobjectmovementtype)
{
u16 localId = VarGet(ScriptReadHalfword(ctx));
u8 movementType = ScriptReadByte(ctx);
Overworld_SetMapObjTemplateMovementType(localId, movementType);
return FALSE;
}
SCRCMD_DEF(ScrCmd_createvobject)
{
u8 graphicsId = ScriptReadByte(ctx);
u8 v2 = ScriptReadByte(ctx);
u16 x = VarGet(ScriptReadHalfword(ctx));
u32 y = VarGet(ScriptReadHalfword(ctx));
u8 elevation = ScriptReadByte(ctx);
u8 direction = ScriptReadByte(ctx);
sprite_new(graphicsId, v2, x, y, elevation, direction);
return FALSE;
}
SCRCMD_DEF(ScrCmd_turnvobject)
{
u8 v1 = ScriptReadByte(ctx);
u8 direction = ScriptReadByte(ctx);
sub_8069058(v1, direction);
return FALSE;
}
SCRCMD_DEF(ScrCmd_lockall)
{
if (is_c1_link_related_active())
{
return FALSE;
}
else
{
ScriptFreezeMapObjects();
SetupNativeScript(ctx, sub_8069590);
return TRUE;
}
}
SCRCMD_DEF(ScrCmd_lock)
{
if (is_c1_link_related_active())
{
return FALSE;
}
else
{
if (gMapObjects[gSelectedEventObject].active)
{
LockSelectedMapObject();
SetupNativeScript(ctx, sub_8069648);
}
else
{
ScriptFreezeMapObjects();
SetupNativeScript(ctx, sub_8069590);
}
return TRUE;
}
}
SCRCMD_DEF(ScrCmd_releaseall)
{
u8 playerObjectId;
HideFieldMessageBox();
playerObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[playerObjectId]);
sub_80974D8();
UnfreezeMapObjects();
return FALSE;
}
SCRCMD_DEF(ScrCmd_release)
{
u8 playerObjectId;
HideFieldMessageBox();
if (gMapObjects[gSelectedEventObject].active)
FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedEventObject]);
playerObjectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[playerObjectId]);
sub_80974D8();
UnfreezeMapObjects();
return FALSE;
}
+2 -2
View File
@@ -65,7 +65,7 @@ struct VsSeekerStruct
extern u16 gSpecialVar_LastTalked;
extern struct MapObject gMapObjects[MAP_OBJECTS_COUNT];
extern u8 gUnknown_3005074;
extern u8 gSelectedEventObject;
// static declarations
static EWRAM_DATA struct VsSeekerStruct *sVsSeeker = NULL;
@@ -1012,7 +1012,7 @@ void sub_810CB90(void)
sub_810CF54(&r4[r8]); // You are using this function incorrectly. Please consult the manual.
sub_805FE7C(r4_2, gUnknown_8453F67[r4_2->mapobj_unk_18]);
gSaveBlock1Ptr->trainerRematches[r4[r8].localId] = 0;
if (gUnknown_3005074 == sp0)
if (gSelectedEventObject == sp0)
r4_2->animPattern = gUnknown_8453F67[r4_2->mapobj_unk_18];
else
r4_2->animPattern = 0x08;