through sub_811BDA8
This commit is contained in:
@@ -154,8 +154,8 @@ _080689EC: .4byte gObjectEvents
|
||||
_080689F0: .4byte gPlayerAvatar
|
||||
thumb_func_end FreezeObjectEventsExceptOne
|
||||
|
||||
thumb_func_start npc_sync_anim_pause_bits
|
||||
npc_sync_anim_pause_bits: @ 80689F4
|
||||
thumb_func_start UnfreezeObjectEvent
|
||||
UnfreezeObjectEvent: @ 80689F4
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
ldrh r2, [r5]
|
||||
@@ -207,7 +207,7 @@ _08068A4C:
|
||||
.align 2, 0
|
||||
_08068A54: .4byte 0x00000101
|
||||
_08068A58: .4byte gSprites
|
||||
thumb_func_end npc_sync_anim_pause_bits
|
||||
thumb_func_end UnfreezeObjectEvent
|
||||
|
||||
thumb_func_start UnfreezeObjectEvents
|
||||
UnfreezeObjectEvents: @ 8068A5C
|
||||
@@ -224,7 +224,7 @@ _08068A62:
|
||||
cmp r0, 0
|
||||
beq _08068A78
|
||||
adds r0, r1, 0
|
||||
bl npc_sync_anim_pause_bits
|
||||
bl UnfreezeObjectEvent
|
||||
_08068A78:
|
||||
adds r0, r4, 0x1
|
||||
lsls r0, 24
|
||||
|
||||
@@ -1427,8 +1427,8 @@ SpawnSpecialObjectEventParameterized: @ 805E830
|
||||
_0805E894: .4byte 0xfff90000
|
||||
thumb_func_end SpawnSpecialObjectEventParameterized
|
||||
|
||||
thumb_func_start show_sprite
|
||||
show_sprite: @ 805E898
|
||||
thumb_func_start TrySpawnObjectEvent
|
||||
TrySpawnObjectEvent: @ 805E898
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x8
|
||||
lsls r0, 24
|
||||
@@ -1468,7 +1468,7 @@ _0805E8E0:
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end show_sprite
|
||||
thumb_func_end TrySpawnObjectEvent
|
||||
|
||||
thumb_func_start sub_805E8E8
|
||||
sub_805E8E8: @ 805E8E8
|
||||
@@ -13157,7 +13157,7 @@ _08063CC8:
|
||||
bl ObjectEventClearAnimIfSpecialAnimActive
|
||||
_08063CCE:
|
||||
adds r0, r4, 0
|
||||
bl npc_sync_anim_pause_bits
|
||||
bl UnfreezeObjectEvent
|
||||
movs r3, 0
|
||||
strb r5, [r4, 0x1C]
|
||||
ldrb r0, [r4]
|
||||
|
||||
@@ -2445,8 +2445,8 @@ _0805C560: .4byte gObjectEvents
|
||||
_0805C564: .4byte gPlayerAvatar
|
||||
thumb_func_end PlayerGetDestCoords
|
||||
|
||||
thumb_func_start plaer_get_pos_including_state_based_drift
|
||||
plaer_get_pos_including_state_based_drift: @ 805C568
|
||||
thumb_func_start player_get_pos_including_state_based_drift
|
||||
player_get_pos_including_state_based_drift: @ 805C568
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
@@ -2580,7 +2580,7 @@ _0805C6BC:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end plaer_get_pos_including_state_based_drift
|
||||
thumb_func_end player_get_pos_including_state_based_drift
|
||||
|
||||
thumb_func_start GetPlayerFacingDirection
|
||||
GetPlayerFacingDirection: @ 805C6C4
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -482,7 +482,7 @@ _0809777C:
|
||||
lsls r0, 2
|
||||
ldr r1, _080977A8 @ =gObjectEvents
|
||||
adds r0, r1
|
||||
bl npc_sync_anim_pause_bits
|
||||
bl UnfreezeObjectEvent
|
||||
_08097792:
|
||||
adds r0, r5, 0x1
|
||||
lsls r0, 24
|
||||
|
||||
@@ -6,27 +6,6 @@
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnknown_8457120:: @ 8457120
|
||||
.byte 0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00
|
||||
|
||||
.align 2
|
||||
gUnknown_8457138:: @ 8457138
|
||||
abspath "rfu_union_tool.c"
|
||||
|
||||
.align 2
|
||||
gUnknown_8457174:: @ 8457174
|
||||
.asciz "0"
|
||||
|
||||
.align 2
|
||||
gUnknown_8457178:: @ 8457178
|
||||
.asciz "UnionObjWork != NULL"
|
||||
|
||||
gUnknown_845718D:: @ 845718D
|
||||
.byte 0xA4, 0xFE
|
||||
|
||||
gUnknown_845718F:: @ 845718F
|
||||
.byte 0xA5, 0xFE
|
||||
|
||||
.align 2
|
||||
gUnknown_8457194:: @ 8457194
|
||||
.2byte 0x01FC, 0x0000 @ BgTemplate
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
|
||||
#define GUARD_CONSTANTS_EVENT_OBJECT_MOVEMENT_H
|
||||
|
||||
// FIXME: Different in FRLG
|
||||
#define MOVEMENT_TYPE_NONE 0x0
|
||||
#define MOVEMENT_TYPE_LOOK_AROUND 0x1
|
||||
#define MOVEMENT_TYPE_WANDER_AROUND 0x2
|
||||
@@ -239,8 +240,10 @@
|
||||
#define MOVEMENT_ACTION_STOP_LEVITATE 0x99
|
||||
#define MOVEMENT_ACTION_DESTROY_EXTRA_TASK_IF_AT_TOP 0x9A
|
||||
#define MOVEMENT_ACTION_FIGURE_8 0x9B
|
||||
#define MOVEMENT_ACTION_FLY_UP 0x9C
|
||||
#define MOVEMENT_ACTION_FLY_DOWN 0x9D
|
||||
|
||||
// These two are verified correct in FRLG
|
||||
#define MOVEMENT_ACTION_FLY_UP 0xA4
|
||||
#define MOVEMENT_ACTION_FLY_DOWN 0xA5
|
||||
|
||||
#define MOVEMENT_ACTION_STEP_END 0xFE
|
||||
|
||||
|
||||
@@ -6,5 +6,9 @@
|
||||
void FreezeObjectEvents(void);
|
||||
void FreezeObjectEvent(struct ObjectEvent *);
|
||||
void FreezeObjectEventsExceptOne(u8 objEventId);
|
||||
void sub_8069124(u8 a0, bool8 a1);
|
||||
u32 sub_806916C(u8 a0);
|
||||
void sub_80691A4(u8 a0, u8 a1);
|
||||
void sub_8069094(u8 a0, u8 a1);
|
||||
|
||||
#endif // GUARD_EVENT_OBJECT_80688E4_H
|
||||
|
||||
@@ -14,7 +14,7 @@ extern void *gUnknown_020375B8;
|
||||
|
||||
// Exported ROM declarations
|
||||
void sub_8097AC8(struct Sprite *);
|
||||
void npc_sync_anim_pause_bits(struct ObjectEvent *);
|
||||
void UnfreezeObjectEvent(struct ObjectEvent *);
|
||||
void oamt_npc_ministep_reset(struct Sprite *, u8, u8);
|
||||
u8 sub_8097F78(struct ObjectEvent *);
|
||||
bool8 obj_npc_ministep(struct Sprite *sprite);
|
||||
|
||||
@@ -47,7 +47,7 @@ void ObjectEventClearAnimIfSpecialAnimActive(struct ObjectEvent *);
|
||||
void SpawnObjectEventsInView(s16, s16);
|
||||
u8 sprite_new(u8, u8, s16, s16, u8, u8);
|
||||
u8 AddPseudoObjectEvent(u16, SpriteCallback, s16, s16, u8);
|
||||
u8 show_sprite(u8, u8, u8);
|
||||
u8 TrySpawnObjectEvent(u8, u8, u8);
|
||||
u8 SpawnSpecialObjectEventParameterized(u8, u8, u8, s16, s16, u8);
|
||||
u8 SpawnSpecialObjectEvent(struct ObjectEventTemplate *);
|
||||
void sub_8093038(s16, s16, s16 *, s16 *);
|
||||
@@ -82,7 +82,7 @@ bool8 ObjectEventIsSpecialAnimActive(struct ObjectEvent *);
|
||||
u8 ObjectEventClearHeldMovementIfFinished(struct ObjectEvent *);
|
||||
u8 GetObjectEventIdByXYZ(u16 x, u16 y, u8 z);
|
||||
void sub_8063E28(struct ObjectEvent *, struct Sprite *);
|
||||
void ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
|
||||
bool8 ObjectEventSetHeldMovement(struct ObjectEvent *, u8);
|
||||
void npc_coords_shift_still(struct ObjectEvent *);
|
||||
void sub_805FE7C(struct ObjectEvent *, u8);
|
||||
void SetTrainerMovementType(struct ObjectEvent *, u8);
|
||||
|
||||
@@ -35,5 +35,6 @@ bool32 sub_805DAD0(void);
|
||||
bool32 sub_805DC24(void);
|
||||
bool8 PartyHasMonWithSurf(void);
|
||||
bool8 IsPlayerSurfingNorth(void);
|
||||
void player_get_pos_including_state_based_drift(s16 *x, s16 *y);
|
||||
|
||||
#endif //GUARD_FIELD_PLAYER_AVATAR_H
|
||||
|
||||
@@ -31,5 +31,6 @@ void sub_8059948(u8 a0, u8 a1);
|
||||
void save_serialize_map(void);
|
||||
u32 sub_8058F1C(u32 original, u8 bit);
|
||||
u32 sub_8058F48(s16 x, s16 y, u8 z);
|
||||
void sub_8059024(s32 x, s32 y, bool32 arg2);
|
||||
|
||||
#endif //GUARD_FIELDMAP_H
|
||||
|
||||
@@ -11,7 +11,7 @@ void sub_811BECC(struct UnkStruct_URoom *arg0);
|
||||
void sub_811BEDC(struct UnkStruct_URoom *arg0);
|
||||
bool32 sub_811BF00(struct UnkStruct_Main0 *arg0, s16 *arg1, s16 *arg2, u8 *arg3);
|
||||
void sub_811C028(u32 arg0, u32 arg1, struct UnkStruct_Main0 *arg2);
|
||||
u8 sub_811B754(struct UnkStruct_8019BA8 * ptr);
|
||||
u8 sub_811B754(struct UnionObj * ptr);
|
||||
void sub_811BA78(void);
|
||||
|
||||
#endif //GUARD_UNION_ROOM_PLAYER_AVATAR_H
|
||||
|
||||
@@ -85,7 +85,7 @@ struct UnkStruct_Group
|
||||
u8 field_15;
|
||||
};
|
||||
|
||||
struct UnkStruct_8019BA8
|
||||
struct UnionObj
|
||||
{
|
||||
u8 field_0;
|
||||
u8 field_1;
|
||||
@@ -121,7 +121,7 @@ struct UnkStruct_URoom
|
||||
/* 0x058 */ u8 field_58[4][11];
|
||||
/* 0x084 */ u16 field_98;
|
||||
/* 0x086 */ u16 field_9A[3];
|
||||
/* 0x08C */ struct UnkStruct_8019BA8 field_A0[8];
|
||||
/* 0x08C */ struct UnionObj field_A0[8];
|
||||
/* 0x0AC */ u8 field_C0[12][15];
|
||||
/* 0x160 */ u8 field_174[48];
|
||||
/* 0x190 */ u8 field_1A4[200];
|
||||
|
||||
+451
-5
@@ -1,7 +1,23 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "event_object_80688E4.h"
|
||||
#include "event_object_8097404.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "rfu_union_tool.h"
|
||||
#include "script.h"
|
||||
#include "task.h"
|
||||
#include "constants/flags.h"
|
||||
#include "constants/event_object_movement.h"
|
||||
#include "constants/object_events.h"
|
||||
|
||||
EWRAM_DATA struct UnionObj * UnionObjWork = NULL;
|
||||
EWRAM_DATA u32 gUnknown_203B088 = 0;
|
||||
|
||||
u8 sub_811BA18(void);
|
||||
u32 sub_811BBC8(u32 playerIdx, u32 arg1);
|
||||
void sub_811C008(s32 arg0, s32 arg1, u8 arg2);
|
||||
|
||||
const u8 gUnknown_84570D8[][10] = {
|
||||
{0x29, 0x36, 0x27, 0x12, 0x13, 0x14, 0x19, 0x1A},
|
||||
@@ -35,6 +51,12 @@ const u8 gUnknown_845711B[] = {
|
||||
0x01, 0x03, 0x01, 0x04, 0x02
|
||||
};
|
||||
|
||||
const u8 gUnknown_8457120[] = {
|
||||
0x09, 0x08, 0x07, 0x02, 0x06, 0x05, 0x04, 0x03,
|
||||
0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00,
|
||||
0x67, 0x00, 0x68, 0x00, 0x69, 0x00, 0x6A, 0x00
|
||||
};
|
||||
|
||||
bool32 is_walking_or_running(void)
|
||||
{
|
||||
if (gPlayerAvatar.tileTransitionState == 2 || gPlayerAvatar.tileTransitionState == 0)
|
||||
@@ -73,8 +95,432 @@ bool32 sub_811B58C(u32 a0, u32 a1, s32 a2, s32 a3)
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
//
|
||||
//bool32 IsUnionRoomPlayerHidden(u32 player_idx)
|
||||
//{
|
||||
// return FlagGet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
|
||||
//}
|
||||
|
||||
bool32 IsUnionRoomPlayerHidden(u32 player_idx)
|
||||
{
|
||||
return FlagGet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
|
||||
}
|
||||
|
||||
void HideUnionRoomPlayer(u32 player_idx)
|
||||
{
|
||||
FlagSet(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
|
||||
}
|
||||
|
||||
void ShowUnionRoomPlayer(u32 player_idx)
|
||||
{
|
||||
FlagClear(FLAG_HIDE_UNION_ROOM_PLAYER_1 + player_idx);
|
||||
}
|
||||
|
||||
void SetUnionRoomPlayerGfx(u32 playerIdx, u32 gfxId)
|
||||
{
|
||||
VarSet(VAR_OBJ_GFX_ID_0 + playerIdx, gfxId);
|
||||
}
|
||||
|
||||
void CreateUnionRoomPlayerObjectEvent(u32 playerIdx)
|
||||
{
|
||||
TrySpawnObjectEvent(gUnknown_8457120[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
}
|
||||
|
||||
void RemoveUnionRoomPlayerObjectEvent(u32 playerIdx)
|
||||
{
|
||||
RemoveObjectEventByLocalIdAndMap(gUnknown_8457120[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
}
|
||||
|
||||
bool32 SetUnionRoomPlayerEnterExitMovement(u32 playerIdx, const u8 * movement)
|
||||
{
|
||||
u8 objectId;
|
||||
struct ObjectEvent * object;
|
||||
if (TryGetObjectEventIdByLocalIdAndMap(gUnknown_8457120[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
object = &gObjectEvents[objectId];
|
||||
if (ObjectEventIsMovementOverridden(object))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (ObjectEventSetHeldMovement(object, *movement))
|
||||
{
|
||||
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 387);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
bool32 sub_811B6E8(u32 playerIdx)
|
||||
{
|
||||
u8 objectId;
|
||||
struct ObjectEvent * object;
|
||||
if (TryGetObjectEventIdByLocalIdAndMap(gUnknown_8457120[playerIdx], gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectId))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
object = &gObjectEvents[objectId];
|
||||
if (!ObjectEventClearHeldMovementIfFinished(object))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
if (!ScriptContext2_IsEnabled())
|
||||
{
|
||||
UnfreezeObjectEvent(object);
|
||||
}
|
||||
else
|
||||
{
|
||||
FreezeObjectEvent(object);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u8 sub_811B754(struct UnionObj * ptr)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
gUnknown_203B088 = 0;
|
||||
UnionObjWork = ptr;
|
||||
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 442)
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
ptr[i].field_0 = 0;
|
||||
ptr[i].field_1 = 0;
|
||||
ptr[i].field_2 = 0;
|
||||
ptr[i].field_3 = 0;
|
||||
}
|
||||
return sub_811BA18();
|
||||
}
|
||||
|
||||
const u8 gUnknown_845718D[2] = {
|
||||
MOVEMENT_ACTION_FLY_UP,
|
||||
MOVEMENT_ACTION_STEP_END
|
||||
};
|
||||
|
||||
bool32 sub_811B7A8(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
|
||||
{
|
||||
switch (*a0)
|
||||
{
|
||||
case 0:
|
||||
if (SetUnionRoomPlayerEnterExitMovement(playerIdx, gUnknown_845718D) == TRUE)
|
||||
{
|
||||
HideUnionRoomPlayer(playerIdx);
|
||||
(*a0)++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (sub_811B6E8(playerIdx))
|
||||
{
|
||||
RemoveUnionRoomPlayerObjectEvent(playerIdx);
|
||||
HideUnionRoomPlayer(playerIdx);
|
||||
*a0 = 0;
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
const u8 gUnknown_845718F[2] = {
|
||||
MOVEMENT_ACTION_FLY_DOWN,
|
||||
MOVEMENT_ACTION_STEP_END
|
||||
};
|
||||
|
||||
bool32 sub_811B804(s8 * a0, u32 playerIdx, struct UnionObj * ptr)
|
||||
{
|
||||
s16 x, y;
|
||||
|
||||
switch (*a0)
|
||||
{
|
||||
case 0:
|
||||
if (!is_walking_or_running())
|
||||
{
|
||||
break;
|
||||
}
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
if (sub_811B58C(playerIdx, 0, x, y) == 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
player_get_pos_including_state_based_drift(&x, &y);
|
||||
if (sub_811B58C(playerIdx, 0, x, y) == 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
SetUnionRoomPlayerGfx(playerIdx, ptr->field_1);
|
||||
CreateUnionRoomPlayerObjectEvent(playerIdx);
|
||||
ShowUnionRoomPlayer(playerIdx);
|
||||
(*a0)++;
|
||||
// fallthrough
|
||||
case 3: // incorrect?
|
||||
if (SetUnionRoomPlayerEnterExitMovement(playerIdx, gUnknown_845718F) == 1)
|
||||
{
|
||||
(*a0)++;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (sub_811B6E8(playerIdx))
|
||||
{
|
||||
*a0 = 0;
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 sub_811B8BC(u32 playerIdx, u32 a1, u32 a2)
|
||||
{
|
||||
struct UnionObj * ptr = &UnionObjWork[playerIdx];
|
||||
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 561)
|
||||
ptr->field_3 = 1;
|
||||
ptr->field_1 = sub_811B524(a1, a2);
|
||||
if (ptr->field_0 == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_811B90C(u32 playerIdx)
|
||||
{
|
||||
struct UnionObj * ptr = &UnionObjWork[playerIdx];
|
||||
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 577)
|
||||
ptr->field_3 = 2;
|
||||
if (ptr->field_0 == 1)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811B94C(u32 playerIdx, struct UnionObj * ptr)
|
||||
{
|
||||
switch (ptr->field_0)
|
||||
{
|
||||
case 0:
|
||||
if (ptr->field_3 == 1)
|
||||
{
|
||||
ptr->field_0 = 2;
|
||||
ptr->field_2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
// fallthrough
|
||||
case 2:
|
||||
if (!sub_811BBC8(playerIdx, 0) && ptr->field_3 == 2)
|
||||
{
|
||||
ptr->field_0 = 0;
|
||||
ptr->field_2 = 0;
|
||||
RemoveUnionRoomPlayerObjectEvent(playerIdx);
|
||||
HideUnionRoomPlayer(playerIdx);
|
||||
}
|
||||
else if (sub_811B804(&ptr->field_2, playerIdx, ptr) == 1)
|
||||
{
|
||||
ptr->field_0 = 1;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (ptr->field_3 == 2)
|
||||
{
|
||||
ptr->field_0 = 3;
|
||||
ptr->field_2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
// fallthrough
|
||||
case 3:
|
||||
if (sub_811B7A8(&ptr->field_2, playerIdx, ptr) == 1)
|
||||
{
|
||||
ptr->field_0 = 0;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ptr->field_3 = 0;
|
||||
}
|
||||
|
||||
void sub_811B9D8(u8 taskId)
|
||||
{
|
||||
s32 i;
|
||||
AGB_ASSERT_EX(UnionObjWork != NULL, ABSPATH("rfu_union_tool.c"), 643)
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
sub_811B94C(i, &UnionObjWork[i]);
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_811BA18(void)
|
||||
{
|
||||
if (FuncIsActiveTask(sub_811B9D8) == TRUE)
|
||||
{
|
||||
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 655)
|
||||
return NUM_TASKS;
|
||||
}
|
||||
else
|
||||
{
|
||||
return CreateTask(sub_811B9D8, 5);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811BA5C(void)
|
||||
{
|
||||
u8 taskId = FindTaskIdByFunc(sub_811B9D8);
|
||||
if (taskId < NUM_TASKS)
|
||||
{
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811BA78(void)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (!IsUnionRoomPlayerHidden(i))
|
||||
{
|
||||
RemoveUnionRoomPlayerObjectEvent(i);
|
||||
HideUnionRoomPlayer(i);
|
||||
}
|
||||
}
|
||||
UnionObjWork = NULL;
|
||||
sub_811BA5C();
|
||||
}
|
||||
|
||||
void sub_811BAAC(u8 * sp8, s32 r9)
|
||||
{
|
||||
s32 r7;
|
||||
|
||||
for (r7 = 0; r7 < 5; r7++)
|
||||
{
|
||||
s32 r5 = 5 * r9 + r7;
|
||||
sp8[r5] = sprite_new(OBJECT_EVENT_GFX_MAN, r5 - 0x38, gUnknown_84570EC[r9][0] + gUnknown_845710C[r7][0], gUnknown_84570EC[r9][1] + gUnknown_845710C[r7][1], 3, 1);
|
||||
sub_8069124(r5 - 0x38, TRUE);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811BB40(u8 * r5)
|
||||
{
|
||||
s32 i;
|
||||
for (i = 0; i < 40; i++)
|
||||
{
|
||||
DestroySprite(&gSprites[r5[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811BB68(void)
|
||||
{
|
||||
s32 i, j, x, y;
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
for (j = 0; j < 5; j++)
|
||||
{
|
||||
sub_811B53C(i, j, &x, &y);
|
||||
sub_8059024(x, y, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
u8 sub_811BBA0(u32 r1, u32 unused, struct GFtgtGname * r2)
|
||||
{
|
||||
if (r1 != 0)
|
||||
{
|
||||
return gUnknown_845711B[r1];
|
||||
}
|
||||
else if (r2->unk_0a_0 == 0x45)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_811BBC8(u32 a0, u32 a1)
|
||||
{
|
||||
return sub_806916C(5 * a0 + a1 - 0x38);
|
||||
}
|
||||
|
||||
void sub_811BBE0(u32 r5, u32 r6, u8 r8, struct GFtgtGname * r9)
|
||||
{
|
||||
s32 x, y;
|
||||
s32 r7 = 5 * r5 + r6;
|
||||
if (sub_811BBC8(r5, r6) == 1)
|
||||
{
|
||||
sub_8069124(r7 - 0x38, FALSE);
|
||||
sub_80691A4(r7 - 0x38, 1);
|
||||
}
|
||||
sub_8069094(r7 - 0x38, r8);
|
||||
sub_811C008(r6, r5, sub_811BBA0(r6, r5, r9));
|
||||
sub_811B53C(r5, r6, &x, &y);
|
||||
sub_8059024(x, y, 1);
|
||||
}
|
||||
|
||||
void sub_811BC68(u32 a0, u32 a1)
|
||||
{
|
||||
s32 x, y;
|
||||
sub_80691A4(5 * a0 + a1 - 0x38, 2);
|
||||
sub_811B53C(a0, a1, &x, &y);
|
||||
sub_8059024(x, y, 0);
|
||||
}
|
||||
|
||||
void sub_811BCA0(u32 r7, struct GFtgtGname * r8)
|
||||
{
|
||||
s16 x, y, x2, y2;
|
||||
s32 i;
|
||||
|
||||
PlayerGetDestCoords(&x, &y);
|
||||
player_get_pos_including_state_based_drift(&x2, &y2);
|
||||
if (sub_806916C(5 * r7 - 0x38) == 1)
|
||||
{
|
||||
if (sub_811B58C(r7, 0, x, y) == 1 || sub_811B58C(r7, 0, x2, y2) == 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
sub_811BBE0(r7, 0, sub_811B524(r8->playerGender, r8->unk_00.playerTrainerId[0]), r8);
|
||||
}
|
||||
for (i = 1; i < 5; i++)
|
||||
{
|
||||
if (r8->unk_04[i - 1] == 0)
|
||||
{
|
||||
sub_811BC68(r7, i);
|
||||
}
|
||||
else if (sub_811B58C(r7, i, x, y) == 0 && sub_811B58C(r7, i, x2, y2) == 0)
|
||||
{
|
||||
sub_811BBE0(r7, i, sub_811B524((r8->unk_04[i - 1] >> 3) & 1, r8->unk_04[i - 1] & 7), r8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_811BDA8(u32 r5, struct GFtgtGname * r4)
|
||||
{
|
||||
u32 i;
|
||||
switch (r4->unk_0a_0)
|
||||
{
|
||||
case 0x40:
|
||||
case 0x54:
|
||||
sub_811B8BC(r5, r4->playerGender, r4->unk_00.playerTrainerId[0]);
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
sub_811BC68(r5, i);
|
||||
}
|
||||
break;
|
||||
case 0x41:
|
||||
case 0x44:
|
||||
case 0x45:
|
||||
case 0x48:
|
||||
case 0x51:
|
||||
case 0x52:
|
||||
case 0x53:
|
||||
sub_811B90C(r5);
|
||||
sub_811BCA0(r5, r4);
|
||||
break;
|
||||
default:
|
||||
AGB_ASSERT_EX(0, ABSPATH("rfu_union_tool.c"), 979)
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1064,7 +1064,7 @@ bool8 ScrCmd_addobject(struct ScriptContext *ctx)
|
||||
{
|
||||
u16 objectId = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
TrySpawnObjectEvent(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1074,7 +1074,7 @@ bool8 ScrCmd_addobject_at(struct ScriptContext *ctx)
|
||||
u8 mapGroup = ScriptReadByte(ctx);
|
||||
u8 mapNum = ScriptReadByte(ctx);
|
||||
|
||||
show_sprite(objectId, mapNum, mapGroup);
|
||||
TrySpawnObjectEvent(objectId, mapNum, mapGroup);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1273,7 +1273,7 @@ static u8 GetRematchableTrainerLocalId(void)
|
||||
|
||||
static void StartTrainerObjectMovementScript(struct VsSeekerTrainerInfo * trainerInfo, const u8 * script)
|
||||
{
|
||||
npc_sync_anim_pause_bits(&gObjectEvents[trainerInfo->objectEventId]);
|
||||
UnfreezeObjectEvent(&gObjectEvents[trainerInfo->objectEventId]);
|
||||
ScriptMovement_StartObjectMovementScript(trainerInfo->localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, script);
|
||||
}
|
||||
|
||||
|
||||
+2
-6
@@ -352,14 +352,10 @@ gUnknown_203ACF0: @ 203ACF0
|
||||
.include "src/quest_log.o"
|
||||
.align 2
|
||||
.include "src/union_room.o"
|
||||
.align 2
|
||||
.include "src/rfu_union_tool.o"
|
||||
|
||||
.align 2
|
||||
UnionObjWork: @ 203B084
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B088: @ 203B088
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203B08C: @ 203B08C
|
||||
.space 0x4
|
||||
|
||||
|
||||
Reference in New Issue
Block a user