Chest & Heart Block entities (#393)

This commit is contained in:
JaThePlayer 2021-08-25 23:29:43 +02:00 committed by GitHub
parent ff2c968335
commit 0bdf15542e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 535 additions and 995 deletions

View File

@ -2121,13 +2121,23 @@ typedef struct struct802E4B10 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s8 unk_02;
/* 0x03 */ char unk_03[6];
/* 0x03 */ s8 unk_03;
/* 0x04 */ f32 unk_04;
/* 0x08 */ char unk_08;
/* 0x09 */ u8 unk_09;
/* 0x0A */ u8 unk_0A;
/* 0x0B */ char unk_0B; // padding?
/* 0x0C */ s32 unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ char unk_14[0xBC];
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ u16 unk_24;
/* 0x24 */ s16 unk_26;
/* 0x28 */ f32 unk_28[0xB];
/* 0x54 */ f32 unk_54;
/* 0x58 */ char unk_58[0x78];
/* 0xD0 */ u16 unk_D0;
/* 0xD4 */ f32 unk_D4[0];
} struct802E4B10;

View File

@ -448,4 +448,19 @@ s32 mdl_get_next_texture_address(void);
void draw_string(s32 stringID, s32 posX, s32 posY, s32 opacity, s32 palette, s32 style);
void get_background_color_blend(u8* r, u8* g, u8* b, u8* a);
s32 entity_base_block_idle(Entity* entity);
s32 recover_hp(s32 amt);
s32 recover_fp(s32 amt);
void entity_set_render_script(Entity* entity, u32* commandList);
s32 entity_can_collide_with_jumping_player(Entity* entity);
s32 set_global_flag(s32 index);
void entity_base_block_init(Entity* entity);
s32 entity_start_script(Npc* npc);
s32 remove_item_entity_by_index(s32 index); // might not actually return anything
void set_entity_commandlist(Entity* entity, s32* entityScript);
void func_800EF3E4(void);
void func_80268858(void);
void func_80269118(void);
s32 func_80268224(s32);
#endif

View File

@ -287,7 +287,7 @@ s32 check_block_input(s32 buttonMask) {
return block;
}
INCLUDE_ASM(s32, "196AA0", func_80269118);
INCLUDE_ASM(void, "196AA0", func_80269118);
INCLUDE_ASM(s32, "196AA0", func_80269160);

View File

@ -2,12 +2,98 @@
#define NAMESPACE action_command_squirt
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9000_429D20);
extern s32 D_80108AFC[];
extern s32 D_80108B28[];
extern s32 D_80294380;
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A911C_429E3C);
ApiStatus func_802A9000_429D20(void) {
ActionCommandStatus* actionCommandStatus = &gActionCommandStatus;
BattleStatus* battleStatus = &gBattleStatus;
HudElement* hudElement;
battleStatus->unk_82 = 5;
battleStatus->unk_434 = &D_80294380;
if (battleStatus->unk_83 == 0) {
battleStatus->actionSuccess = 0;
return ApiStatus_DONE2;
}
func_80268858();
actionCommandStatus->actionCommandID = ACTION_COMMAND_SQUIRT;
actionCommandStatus->state = 0;
actionCommandStatus->unk_60 = 0;
actionCommandStatus->unk_44 = 0;
actionCommandStatus->unk_48 = 0;
battleStatus->unk_84 = 0;
actionCommandStatus->hudElementX = -48;
actionCommandStatus->unk_5C = 0;
actionCommandStatus->hudElementY = 80;
hudElement = create_hud_element(D_80108B28);
actionCommandStatus->hudElements[0] = hudElement;
set_hud_element_flags(hudElement, 0x82);
set_hud_element_render_pos(hudElement, actionCommandStatus->hudElementX, actionCommandStatus->hudElementY);
set_hud_element_render_depth(hudElement, 0);
hudElement = create_hud_element(D_80108AFC);
actionCommandStatus->hudElements[1] = hudElement;
set_hud_element_render_pos(hudElement, actionCommandStatus->hudElementX, actionCommandStatus->hudElementY + 28);
set_hud_element_render_depth(hudElement, 0);
set_hud_element_flags(hudElement, 0x82);
return ApiStatus_DONE2;
}
ApiStatus func_802A911C_429E3C(Evt* script) {
ActionCommandStatus* actionCommandStatus = &gActionCommandStatus;
BattleStatus* battleStatus = &gBattleStatus;
Bytecode* args = script->ptrReadPos;
if (battleStatus->unk_83 == 0) {
battleStatus->actionSuccess = 0;
return ApiStatus_DONE2;
}
func_80268858();
actionCommandStatus->unk_4E = get_variable(script, *args++);
actionCommandStatus->unk_52 = get_variable(script, *args++);
actionCommandStatus->unk_50 = get_variable(script, *args++);
actionCommandStatus->unk_50 = func_80268224(actionCommandStatus->unk_50);
actionCommandStatus->unk_60 = 0;
actionCommandStatus->unk_44 = 0;
actionCommandStatus->unk_48 = 0;
battleStatus->actionSuccess = 0;
battleStatus->unk_86 = 0;
actionCommandStatus->state = 10;
battleStatus->flags1 &= ~0x8000;
func_80269118();
return ApiStatus_DONE2;
}
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9208_429F28);
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9634_42A354);
#ifdef NON_MATCHING
void func_802A9634_42A354(void) {
s32 x, y;
HudElement* hudElement;
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9720_42A440);
draw_hud_element_clipped(gActionCommandStatus.hudElements[0]);
hudElement = gActionCommandStatus.hudElements[1];
draw_hud_element_clipped(hudElement);
get_hud_element_render_pos(hudElement, &x, &y);
if (gActionCommandStatus.unk_5C == 0) {
func_80268798(x, y, gActionCommandStatus.unk_44 / 100, 1);
return;
}
func_802687E4(x, y, gActionCommandStatus.unk_44 / 100, 1, 1);
}
#else
INCLUDE_ASM(s32, "battle/action_cmd/squirt", func_802A9634_42A354);
#endif
void func_802A9720_42A440(void) {
sfx_stop_sound(0x80000041);
free_hud_element(gActionCommandStatus.hudElements[0]);
free_hud_element(gActionCommandStatus.hudElements[1]);
}

View File

@ -1,37 +1,247 @@
#include "common.h"
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_adjust_camera);
// size unknown
typedef struct Chest {
/* 0x00 */ u16 unk_00;
/* 0x02 */ s16 unk_02;
/* 0x04 */ u8 unk_04;
/* 0x04 */ s8 unk_05;
/* 0x06 */ s8 unk_06;
/* 0x07 */ u8 unk_07;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ s32 unk_10;
/* 0x14 */ s32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
/* 0x24 */ f32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ s8 unk_30;
} Chest;
extern s32 D_802EAD7C;
// requires data migration
#ifdef NON_MATCHING
extern Script D_802EAB30;
extern Script D_802EAC40;
extern Script D_802EAC84;
void entity_Chest_adjust_camera(void) {
Areas areaID;
Script* script;
areaID = gGameStatusPtr->areaID;
script = NULL;
if (areaID == AREA_ISK) {
script = &D_802EAB30;
} else if (areaID == AREA_TIK) {
script = &D_802EAC40;
} else if (areaID == AREA_KZN) {
script = &D_802EAC84;
}
if (script != NULL) {
start_script(script, 10, 32);
}
}
#else
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_adjust_camera);
#endif
// requires data migration
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_reset_camera);
s32 entity_Chest_setupGfx(void);
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_setupGfx);
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_check_opened);
void entity_Chest_check_opened(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
if ((data->unk_00 != 0xFFFF) && (get_global_flag(data->unk_00) != 0)) {
entity->flags |= 0x4000;
data->unk_10 = -1;
data->unk_08 = -28.7f;
set_entity_commandlist(entity, &D_802EAD7C);
}
}
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_idle);
void entity_Chest_idle(Entity* entity) {
f32 rotation;
f32 angle; // angle from the Chest to the Player
Chest* data;
PlayerStatus* playerStatus = &gPlayerStatus;
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_begin_opening);
rotation = clamp_angle(180.0f - entity->rotation.y);
angle = fabsf(rotation - clamp_angle(atan2(entity->position.x, entity->position.z, playerStatus->position.x, playerStatus->position.z)));
if ((!(playerStatus->animFlags & 1)) &&
(!(entity->collisionFlags & 1)) &&
((angle <= 40.0f) || (angle >= 320.0f))) {
entity->flags |= 0x1000;
if ((playerStatus->animFlags & 0x10) && (entity->collisionFlags & 8)) {
exec_entity_commandlist(entity);
data = (Chest*)entity->dataBuf;
data->unk_04 = 0;
entity->flags &= ~0x1000;
if (data->unk_10 != 0) {
disable_player_input();
}
func_800EF3E4();
}
} else {
entity->flags &= ~0x1000;
}
}
void entity_Chest_begin_opening(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
data->unk_06 = 10;
data->unk_08 = 0;
data->unk_05 = 0;
data->unk_02 = 40;
sfx_play_sound(467);
}
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_open);
// regalloc after sin_rad
#ifdef NON_MATCHING
void entity_Chest_close(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
switch (data->unk_04) {
case 0:
data->unk_0C = 0.0f;
data->unk_04++;
// fallthrough
case 1:
data->unk_0C += 5.0f;
if (data->unk_0C >= 180.0f) {
data->unk_0C = 180.0f;
data->unk_04++;
}
data->unk_08 += 2.6f * sin_rad(data->unk_0C * TAU / 360.0f);
break;
case 2:
data->unk_0C += 1.0f;
if (data->unk_0C >= 185.0f) {
data->unk_0C = 185.0f;
data->unk_06 = 10;
data->unk_04++;
}
data->unk_08 += 2.0f * sin_rad(data->unk_0C * TAU / 360.0f);
break;
case 3:
data->unk_06--;
if (data->unk_06 == 0) {
data->unk_04++;
entity->flags |= 0x4000;
}
break;
case 4: // needed to make gcc create a jumptable
break;
}
}
#else
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_close);
#endif
INCLUDE_ASM(s32, "entity/Chest", entity_GiantChest_hide_effect);
INCLUDE_ASM(s32, "entity/Chest", entity_GiantChest_open);
INCLUDE_ASM(s32, "entity/Chest", entity_GiantChest_give_equipment);
// the function itself matches, but somehow it breaks other completely unrelated files
#ifdef NON_MATCHING
void entity_GiantChest_give_equipment(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
f32 angle;
s32 flag;
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_start_bound_script);
switch (data->unk_10) {
case 1:
gPlayerData.bootsLevel = 0;
break;
case 2:
gPlayerData.bootsLevel = 1;
break;
case 3:
gPlayerData.bootsLevel = 2;
break;
case 4:
gPlayerData.hammerLevel = 0;
break;
case 5:
gPlayerData.hammerLevel = 1;
break;
case 6:
gPlayerData.hammerLevel = 2;
break;
}
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_enable_player_input);
if (data->unk_10 != 0) {
angle = (entity->rotation.y * TAU) / 360.0f;
data->unk_18 = entity->position.x + (sin_rad(angle) * 10.0f);
data->unk_1C = entity->position.y;
data->unk_20 = entity->position.z + (cos_rad(angle) * 10.0f);
data->unk_14 = make_item_entity_nodelay(data->unk_10, data->unk_18, data->unk_1C, data->unk_20, 1, -1);
}
INCLUDE_ASM(s32, "entity/Chest", entity_GiantChest_await_got_item);
flag = data->unk_00;
if (flag <= SI_SAVE_FLAG(10000000)) {
flag += 130000000;
}
set_global_flag(flag);
}
#else
INCLUDE_ASM(void, "entity/Chest", entity_GiantChest_give_equipment);
#endif
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_clear_item_id);
void entity_Chest_start_bound_script(Npc* npc) {
entity_start_script(npc);
}
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_readargs);
void entity_Chest_enable_player_input(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
if (data->unk_10 != 0) {
enable_player_input();
}
}
INCLUDE_ASM(s32, "entity/Chest", entity_GiantChest_init);
void entity_GiantChest_await_got_item(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
if (data->unk_10 != 0) {
if (data->unk_30 != 0) {
exec_entity_commandlist(entity);
remove_item_entity_by_index(data->unk_14);
suggest_player_anim_clearUnkFlag(0x10002);
enable_player_input();
data->unk_10 = -1;
}
return;
}
exec_entity_commandlist(entity);
}
INCLUDE_ASM(s32, "entity/Chest", entity_Chest_init);
void entity_Chest_clear_item_id(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
data->unk_10 = -1;
}
void entity_Chest_readargs(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
data->unk_10 = *D_8015C7D0;
data->unk_00 = 0xFFFF;
}
void entity_GiantChest_init(Entity* entity) {
entity_Chest_readargs(entity);
entity->renderSetupFunc = &entity_Chest_setupGfx;
}
void entity_Chest_init(Entity* entity) {
Chest* data = (Chest*)entity->dataBuf;
data->unk_07 = 1;
entity_Chest_readargs(entity);
entity->renderSetupFunc = &entity_Chest_setupGfx;
entity->scale.x = 0.56f;
entity->scale.y = 0.56f;
entity->scale.z = 0.56f;
}

View File

@ -1,11 +1,19 @@
#include "common.h"
#include "effects.h"
extern u32* D_802EA728;
extern u32* D_802EA760;
extern StaticEntityData D_802EA7BC;
extern UNK_TYPE D_802EB3C0;
extern s32 D_802EA744; //
INCLUDE_ASM(s32, "entity/HeartBlock", entity_HeartBlockContent_get_previous_yaw);
f32 entity_HeartBlockContent_get_previous_yaw(struct802E4B10* data, s32 arg1) {
s32 temp = data->unk_24 - arg1;
if (temp < 0) {
temp += 10;
}
return data->unk_28[temp];
}
INCLUDE_ASM(s32, "entity/HeartBlock", entity_HeartBlockContent__setupGfx);
@ -14,7 +22,7 @@ void entity_HeartBlockContent_setupGfx(s32 entityIndex) {
}
void entity_HeartBlockContent_set_initial_pos(Entity* entity) {
struct802E4B10* temp = entity->dataBuf;
struct802E4B10* temp = (struct802E4B10*)entity->dataBuf;
Entity* entityTemp = get_entity_by_index(temp->unk_00);
entity->position.x = entityTemp->position.x;
@ -28,7 +36,7 @@ void entity_HeartBlockContent__reset(Entity* entity) {
entity->renderSetupFunc = entity_HeartBlockContent_setupGfx;
entity->alpha = 255;
temp_s0 = entity->dataBuf;
temp_s0 = (struct802E4B10*)entity->dataBuf;
entity->flags |= 0x2000;
someEntity = get_entity_by_index(temp_s0->unk_00);
@ -52,10 +60,56 @@ void entity_HeartBlockContent__reset(Entity* entity) {
entity_HeartBlockContent_set_initial_pos(entity);
}
INCLUDE_ASM(s32, "entity/HeartBlock", entity_HeartBlockContent_anim_idle);
void entity_HeartBlockContent_anim_idle(Entity* entity, s32 arg1) {
struct802E4B10* temp = (struct802E4B10*)entity->dataBuf;
switch (temp->unk_01) {
case 0:
entity->scale.x = 0.0f;
entity->scale.y = 0.0f;
entity->scale.z = 0.0f;
if (arg1 == 0) {
temp->unk_01++;
break;
}
return;
case 1:
entity->scale.x += 0.01;
if (entity->scale.x >= 1.0) {
entity->scale.x = 1.0f;
temp->unk_02 = 0;
temp->unk_01++;
}
entity->scale.z = entity->scale.x;
entity->scale.y = entity->scale.x;
break;
case 2:
entity_HeartBlockContent_set_initial_pos(entity);
temp->unk_01++;
// fallthrough
case 3:
if (gOverrideFlags == 0) {
// create an effect every 50 frames
temp->unk_02--;
if (temp->unk_02 <= 0) {
temp->unk_02 = 50;
playFX_22(temp->unk_0A, entity->position.x, entity->position.y, entity->position.z, 22.0f, 8.0f, 4, 20);
}
}
break;
}
if (entity_can_collide_with_jumping_player(get_entity_by_index(temp->unk_00))) {
exec_entity_commandlist(entity);
disable_player_input();
gPlayerStatus.currentSpeed = 0;
gPlayerStatus.animFlags |= 0x200;
set_time_freeze_mode(1);
gOverrideFlags |= 0x40;
}
}
void func_802E4DE0(Entity* entity) {
struct802E4B10* temp = entity->dataBuf;
struct802E4B10* temp = (struct802E4B10*)entity->dataBuf;
temp->unk_01 = 0;
entity->scale.x = 1.0f;
@ -64,7 +118,116 @@ void func_802E4DE0(Entity* entity) {
entity->rotation.z = 0.0f;
}
INCLUDE_ASM(s32, "entity/HeartBlock", entity_HeartBlockContent__anim_heal);
void entity_HeartBlockContent__anim_heal(Entity* entity, s32 arg1) {
PlayerStatus* playerStatus = &gPlayerStatus;
struct802E4B10* data = (struct802E4B10*)entity->dataBuf;
f32 offsetX, offsetY, offsetZ;
switch (data->unk_01) {
case 0:
playFX_11(0, entity->position.x, entity->position.y, entity->position.z, 2.0f);
data->unk_20 = 0.0f;
data->unk_01++;
data->unk_14 = 6.0f;
break;
case 1:
entity->position.y = entity->position.y + data->unk_14;
data->unk_14 -= 1.0f;
if (data->unk_14 <= 2.0f) {
data->unk_01++;
entity->flags &= ~0x2000;
data->unk_54 = -10.0f;
entity_set_render_script(entity, &D_802EA744);
entity->renderSetupFunc = &entity_HeartBlockContent_setupGfx;
}
break;
case 2:
entity->position.y += sin_rad((data->unk_20 * TAU) / 360.0f) * 0.5f;
data->unk_20 -= 30.0f;
if (data->unk_20 < 0.0f) {
data->unk_20 += 360.0f;
}
entity->rotation.y += data->unk_54;
data->unk_54 += 2.0f;
if (data->unk_54 >= 0.0f) {
data->unk_18 = 0.0f;
data->unk_1C = 0.0f;
data->unk_01++;
data->unk_04 = playerStatus->colliderHeight + 5;
data->unk_03 = 0;
recover_hp(-1);
recover_fp(-1);
sfx_play_sound(0x131);
}
data->unk_28[data->unk_24] = entity->rotation.y;
data->unk_24++;
if (data->unk_24 >= 11) {
data->unk_24 = 0;
}
break;
case 3:
data->unk_1C += 2.0;
if (data->unk_1C >= 10.0f) {
data->unk_1C = 10.0f;
}
data->unk_18 += 18.0f;
if (data->unk_18 >= 360.0f) {
data->unk_18 -= 360.0f;
}
offsetX = data->unk_1C * sin_rad((data->unk_18 * TAU) / 360.0f);
offsetZ = data->unk_1C * cos_rad((data->unk_18 * TAU) / 360.0f);
offsetY = data->unk_04;
data->unk_04 -= 0.7;
if ((data->unk_03++ & 1) != 0) {
playFX_11(3, playerStatus->position.x + offsetX,
playerStatus->position.y + offsetY,
playerStatus->position.z - offsetZ,
8.0f
);
}
if (data->unk_04 < 20.0f) {
data->unk_04 = 20.0f;
data->unk_01++;
}
// fallthrough
case 4:
entity->position.y += sin_rad((data->unk_20 * TAU) / 360.0f) * 0.5f;
data->unk_20 -= 30.0f;
if (data->unk_20 < 0.0f) {
data->unk_20 += 360.0f;
}
data->unk_54 += 1.0;
if (data->unk_54 > 30.0f) {
data->unk_54 = 30.0f;
}
entity->rotation.y += data->unk_54;
if (entity->rotation.y >= 360.0f) {
entity->rotation.y -= 360.0f;
}
entity->alpha -= 5;
if (entity->alpha < 7) {
entity->alpha = 5;
if (data->unk_01 == 4) {
data->unk_01++;
}
}
data->unk_28[data->unk_24] = entity->rotation.y;
data->unk_24++;
if (data->unk_24 >= 11) {
data->unk_24 = 0;
}
break;
case 5:
playerStatus->animFlags &= ~0x200;
enable_player_input();
set_time_freeze_mode(0);
gOverrideFlags &= ~0x40;
exec_entity_commandlist(entity);
break;
}
}
void entity_HeartBlock_idle(Entity* entity) {
entity_base_block_idle(entity);
@ -78,7 +241,7 @@ void entity_HeartBlockContent_init(Entity* entity) {
void entity_HeartBlockContent_reset(Entity* entity) {
entity_HeartBlockContent__reset(entity);
entity_set_render_script(entity, &D_802EA728);
entity_set_render_script(entity, (u32*)&D_802EA728);
}
void entity_HeartBlockContent_idle(Entity* entity) {
@ -91,7 +254,7 @@ void entity_HeartBlockContent_anim_heal(Entity* entity) {
}
void entity_HeartBlock_change_render_script(Entity* entity) {
entity_set_render_script(entity, &D_802EA760);
entity_set_render_script(entity, (u32*)&D_802EA760);
}
void entity_HeartBlock_show_tutorial_message(Entity* entity) {
@ -125,7 +288,7 @@ s8 entity_HeartBlock_create_child_entity(Entity* entity, StaticEntityData* data)
entity_base_block_init(entity);
someEntity = get_entity_by_index(create_entity(data, entity->position.x, entity->position.y, entity->position.z, 0.0f,
0x80000000));
temp_v1 = someEntity->dataBuf;
temp_v1 = (struct802E4B10*)someEntity->dataBuf;
temp_v1->unk_00 = entity->listIndex;
if (temp_s2 == 0) {

View File

@ -13,9 +13,8 @@ void entity_Shadow_init(Shadow* shadow) {
shadow->scale.z = 0.1f;
}
//TODO: make sure this is the right struct for this.
s32 entity_can_collide_with_jumping_player(Shadow* shadow) {
if ((shadow->unk_06 & 4) && (gPlayerStatus.flags & 2)) {
s32 entity_can_collide_with_jumping_player(Entity* entity) {
if ((entity->collisionFlags & 4) && (gPlayerStatus.flags & 2)) {
return TRUE;
}
return FALSE;

View File

@ -1,8 +1,24 @@
#include "common.h"
#include "../partners.h"
INCLUDE_ASM(s32, "world/partner/bow", func_802BD100_323A50);
extern s32 D_802BE0C0;
extern s32 D_802BE0C4;
INCLUDE_ASM(s32, "world/partner/bow", func_802BD130_323A80);
void func_802BD100_323A50(Npc* partner) {
partner->collisionHeight = 26;
partner->collisionRadius = 24;
partner->renderMode = RENDER_MODE_SURFACE_XLU_LAYER1;
D_802BE0C4 = 0;
D_802BE0C0 = 0;
}
ApiStatus func_802BD130_323A80(Evt* script, s32 isInitialCall) {
Npc* owner = script->owner2.npc;
if (isInitialCall) {
partner_init_get_out(owner);
}
return partner_get_out(owner) != 0;
}
INCLUDE_ASM(s32, "world/partner/bow", func_802BD168_323AB8);

View File

@ -40,4 +40,7 @@ extern WorldPartner* wPartner;
extern NpcID D_8010CFD0; // wPartnerNpcIndex
extern Npc* wPartnerNpc; // wPartnerNpc
s32 partner_init_get_out(Npc*);
s32 partner_get_out(Npc*);
#endif

View File

@ -1,77 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802A9000_429D20
/* 429D20 802A9000 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 429D24 802A9004 AFB00010 */ sw $s0, 0x10($sp)
/* 429D28 802A9008 3C10800E */ lui $s0, %hi(gBattleStatus)
/* 429D2C 802A900C 2610C070 */ addiu $s0, $s0, %lo(gBattleStatus)
/* 429D30 802A9010 24020005 */ addiu $v0, $zero, 5
/* 429D34 802A9014 AFBF0018 */ sw $ra, 0x18($sp)
/* 429D38 802A9018 AFB10014 */ sw $s1, 0x14($sp)
/* 429D3C 802A901C A2020082 */ sb $v0, 0x82($s0)
/* 429D40 802A9020 3C028029 */ lui $v0, %hi(D_80294380)
/* 429D44 802A9024 24424380 */ addiu $v0, $v0, %lo(D_80294380)
/* 429D48 802A9028 3C11802A */ lui $s1, %hi(gActionCommandStatus)
/* 429D4C 802A902C 2631FBE0 */ addiu $s1, $s1, %lo(gActionCommandStatus)
/* 429D50 802A9030 AE020434 */ sw $v0, 0x434($s0)
/* 429D54 802A9034 82020083 */ lb $v0, 0x83($s0)
/* 429D58 802A9038 10400031 */ beqz $v0, .L802A9100
/* 429D5C 802A903C 0200182D */ daddu $v1, $s0, $zero
/* 429D60 802A9040 0C09A216 */ jal func_80268858
/* 429D64 802A9044 00000000 */ nop
/* 429D68 802A9048 3C048011 */ lui $a0, %hi(D_80108B28)
/* 429D6C 802A904C 24848B28 */ addiu $a0, $a0, %lo(D_80108B28)
/* 429D70 802A9050 2402000F */ addiu $v0, $zero, 0xf
/* 429D74 802A9054 A622004A */ sh $v0, 0x4a($s1)
/* 429D78 802A9058 2402FFD0 */ addiu $v0, $zero, -0x30
/* 429D7C 802A905C A620004C */ sh $zero, 0x4c($s1)
/* 429D80 802A9060 A2200060 */ sb $zero, 0x60($s1)
/* 429D84 802A9064 A6200044 */ sh $zero, 0x44($s1)
/* 429D88 802A9068 A6200048 */ sh $zero, 0x48($s1)
/* 429D8C 802A906C A2000084 */ sb $zero, 0x84($s0)
/* 429D90 802A9070 A6220056 */ sh $v0, 0x56($s1)
/* 429D94 802A9074 24020050 */ addiu $v0, $zero, 0x50
/* 429D98 802A9078 A220005C */ sb $zero, 0x5c($s1)
/* 429D9C 802A907C 0C050529 */ jal create_hud_element
/* 429DA0 802A9080 A6220058 */ sh $v0, 0x58($s1)
/* 429DA4 802A9084 0040802D */ daddu $s0, $v0, $zero
/* 429DA8 802A9088 0200202D */ daddu $a0, $s0, $zero
/* 429DAC 802A908C 24050082 */ addiu $a1, $zero, 0x82
/* 429DB0 802A9090 0C051280 */ jal set_hud_element_flags
/* 429DB4 802A9094 AE300004 */ sw $s0, 4($s1)
/* 429DB8 802A9098 86250056 */ lh $a1, 0x56($s1)
/* 429DBC 802A909C 86260058 */ lh $a2, 0x58($s1)
/* 429DC0 802A90A0 0C051261 */ jal set_hud_element_render_pos
/* 429DC4 802A90A4 0200202D */ daddu $a0, $s0, $zero
/* 429DC8 802A90A8 0200202D */ daddu $a0, $s0, $zero
/* 429DCC 802A90AC 0C051277 */ jal set_hud_element_render_depth
/* 429DD0 802A90B0 0000282D */ daddu $a1, $zero, $zero
/* 429DD4 802A90B4 3C048011 */ lui $a0, %hi(D_80108AFC)
/* 429DD8 802A90B8 24848AFC */ addiu $a0, $a0, %lo(D_80108AFC)
/* 429DDC 802A90BC 0C050529 */ jal create_hud_element
/* 429DE0 802A90C0 00000000 */ nop
/* 429DE4 802A90C4 0040802D */ daddu $s0, $v0, $zero
/* 429DE8 802A90C8 86250056 */ lh $a1, 0x56($s1)
/* 429DEC 802A90CC 86260058 */ lh $a2, 0x58($s1)
/* 429DF0 802A90D0 0200202D */ daddu $a0, $s0, $zero
/* 429DF4 802A90D4 AE300008 */ sw $s0, 8($s1)
/* 429DF8 802A90D8 0C051261 */ jal set_hud_element_render_pos
/* 429DFC 802A90DC 24C6001C */ addiu $a2, $a2, 0x1c
/* 429E00 802A90E0 0200202D */ daddu $a0, $s0, $zero
/* 429E04 802A90E4 0C051277 */ jal set_hud_element_render_depth
/* 429E08 802A90E8 0000282D */ daddu $a1, $zero, $zero
/* 429E0C 802A90EC 0200202D */ daddu $a0, $s0, $zero
/* 429E10 802A90F0 0C051280 */ jal set_hud_element_flags
/* 429E14 802A90F4 24050082 */ addiu $a1, $zero, 0x82
/* 429E18 802A90F8 080AA442 */ j .L802A9108
/* 429E1C 802A90FC 24020002 */ addiu $v0, $zero, 2
.L802A9100:
/* 429E20 802A9100 A0600081 */ sb $zero, 0x81($v1)
/* 429E24 802A9104 24020002 */ addiu $v0, $zero, 2
.L802A9108:
/* 429E28 802A9108 8FBF0018 */ lw $ra, 0x18($sp)
/* 429E2C 802A910C 8FB10014 */ lw $s1, 0x14($sp)
/* 429E30 802A9110 8FB00010 */ lw $s0, 0x10($sp)
/* 429E34 802A9114 03E00008 */ jr $ra
/* 429E38 802A9118 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,65 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802A911C_429E3C
/* 429E3C 802A911C 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 429E40 802A9120 AFB20018 */ sw $s2, 0x18($sp)
/* 429E44 802A9124 0080902D */ daddu $s2, $a0, $zero
/* 429E48 802A9128 AFB10014 */ sw $s1, 0x14($sp)
/* 429E4C 802A912C 3C11802A */ lui $s1, %hi(gActionCommandStatus)
/* 429E50 802A9130 2631FBE0 */ addiu $s1, $s1, %lo(gActionCommandStatus)
/* 429E54 802A9134 AFB3001C */ sw $s3, 0x1c($sp)
/* 429E58 802A9138 3C13800E */ lui $s3, %hi(gBattleStatus)
/* 429E5C 802A913C 2673C070 */ addiu $s3, $s3, %lo(gBattleStatus)
/* 429E60 802A9140 AFBF0020 */ sw $ra, 0x20($sp)
/* 429E64 802A9144 AFB00010 */ sw $s0, 0x10($sp)
/* 429E68 802A9148 82620083 */ lb $v0, 0x83($s3)
/* 429E6C 802A914C 8E50000C */ lw $s0, 0xc($s2)
/* 429E70 802A9150 10400024 */ beqz $v0, .L802A91E4
/* 429E74 802A9154 0260182D */ daddu $v1, $s3, $zero
/* 429E78 802A9158 0C09A216 */ jal func_80268858
/* 429E7C 802A915C 00000000 */ nop
/* 429E80 802A9160 8E050000 */ lw $a1, ($s0)
/* 429E84 802A9164 26100004 */ addiu $s0, $s0, 4
/* 429E88 802A9168 0C0B1EAF */ jal get_variable
/* 429E8C 802A916C 0240202D */ daddu $a0, $s2, $zero
/* 429E90 802A9170 A622004E */ sh $v0, 0x4e($s1)
/* 429E94 802A9174 8E050000 */ lw $a1, ($s0)
/* 429E98 802A9178 26100004 */ addiu $s0, $s0, 4
/* 429E9C 802A917C 0C0B1EAF */ jal get_variable
/* 429EA0 802A9180 0240202D */ daddu $a0, $s2, $zero
/* 429EA4 802A9184 A6220052 */ sh $v0, 0x52($s1)
/* 429EA8 802A9188 8E050000 */ lw $a1, ($s0)
/* 429EAC 802A918C 0C0B1EAF */ jal get_variable
/* 429EB0 802A9190 0240202D */ daddu $a0, $s2, $zero
/* 429EB4 802A9194 00022400 */ sll $a0, $v0, 0x10
/* 429EB8 802A9198 00042403 */ sra $a0, $a0, 0x10
/* 429EBC 802A919C 0C09A089 */ jal func_80268224
/* 429EC0 802A91A0 A6220050 */ sh $v0, 0x50($s1)
/* 429EC4 802A91A4 3C04FFFF */ lui $a0, 0xffff
/* 429EC8 802A91A8 34847FFF */ ori $a0, $a0, 0x7fff
/* 429ECC 802A91AC A6220050 */ sh $v0, 0x50($s1)
/* 429ED0 802A91B0 A2200060 */ sb $zero, 0x60($s1)
/* 429ED4 802A91B4 A6200044 */ sh $zero, 0x44($s1)
/* 429ED8 802A91B8 A6200048 */ sh $zero, 0x48($s1)
/* 429EDC 802A91BC 8E620000 */ lw $v0, ($s3)
/* 429EE0 802A91C0 2403000A */ addiu $v1, $zero, 0xa
/* 429EE4 802A91C4 A2600081 */ sb $zero, 0x81($s3)
/* 429EE8 802A91C8 A2600086 */ sb $zero, 0x86($s3)
/* 429EEC 802A91CC A623004C */ sh $v1, 0x4c($s1)
/* 429EF0 802A91D0 00441024 */ and $v0, $v0, $a0
/* 429EF4 802A91D4 0C09A446 */ jal func_80269118
/* 429EF8 802A91D8 AE620000 */ sw $v0, ($s3)
/* 429EFC 802A91DC 080AA47B */ j .L802A91EC
/* 429F00 802A91E0 24020002 */ addiu $v0, $zero, 2
.L802A91E4:
/* 429F04 802A91E4 A0600081 */ sb $zero, 0x81($v1)
/* 429F08 802A91E8 24020002 */ addiu $v0, $zero, 2
.L802A91EC:
/* 429F0C 802A91EC 8FBF0020 */ lw $ra, 0x20($sp)
/* 429F10 802A91F0 8FB3001C */ lw $s3, 0x1c($sp)
/* 429F14 802A91F4 8FB20018 */ lw $s2, 0x18($sp)
/* 429F18 802A91F8 8FB10014 */ lw $s1, 0x14($sp)
/* 429F1C 802A91FC 8FB00010 */ lw $s0, 0x10($sp)
/* 429F20 802A9200 03E00008 */ jr $ra
/* 429F24 802A9204 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,20 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802A9720_42A440
/* 42A440 802A9720 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 42A444 802A9724 3C048000 */ lui $a0, 0x8000
/* 42A448 802A9728 34840041 */ ori $a0, $a0, 0x41
/* 42A44C 802A972C AFBF0014 */ sw $ra, 0x14($sp)
/* 42A450 802A9730 0C05271B */ jal sfx_stop_sound
/* 42A454 802A9734 AFB00010 */ sw $s0, 0x10($sp)
/* 42A458 802A9738 3C10802A */ lui $s0, %hi(gActionCommandStatus)
/* 42A45C 802A973C 2610FBE0 */ addiu $s0, $s0, %lo(gActionCommandStatus)
/* 42A460 802A9740 0C05123D */ jal free_hud_element
/* 42A464 802A9744 8E040004 */ lw $a0, 4($s0)
/* 42A468 802A9748 0C05123D */ jal free_hud_element
/* 42A46C 802A974C 8E040008 */ lw $a0, 8($s0)
/* 42A470 802A9750 8FBF0014 */ lw $ra, 0x14($sp)
/* 42A474 802A9754 8FB00010 */ lw $s0, 0x10($sp)
/* 42A478 802A9758 03E00008 */ jr $ra
/* 42A47C 802A975C 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,18 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_begin_opening
/* 108A78 802E71F8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 108A7C 802E71FC 2403000A */ addiu $v1, $zero, 0xa
/* 108A80 802E7200 AFBF0010 */ sw $ra, 0x10($sp)
/* 108A84 802E7204 8C820040 */ lw $v0, 0x40($a0)
/* 108A88 802E7208 240401D3 */ addiu $a0, $zero, 0x1d3
/* 108A8C 802E720C A0430006 */ sb $v1, 6($v0)
/* 108A90 802E7210 24030028 */ addiu $v1, $zero, 0x28
/* 108A94 802E7214 AC400008 */ sw $zero, 8($v0)
/* 108A98 802E7218 A0400005 */ sb $zero, 5($v0)
/* 108A9C 802E721C 0C05272D */ jal sfx_play_sound
/* 108AA0 802E7220 A4430002 */ sh $v1, 2($v0)
/* 108AA4 802E7224 8FBF0010 */ lw $ra, 0x10($sp)
/* 108AA8 802E7228 03E00008 */ jr $ra
/* 108AAC 802E722C 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,36 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_check_opened
/* 1088B4 802E7034 27BDFFE0 */ addiu $sp, $sp, -0x20
/* 1088B8 802E7038 AFB10014 */ sw $s1, 0x14($sp)
/* 1088BC 802E703C 0080882D */ daddu $s1, $a0, $zero
/* 1088C0 802E7040 AFBF0018 */ sw $ra, 0x18($sp)
/* 1088C4 802E7044 AFB00010 */ sw $s0, 0x10($sp)
/* 1088C8 802E7048 8E300040 */ lw $s0, 0x40($s1)
/* 1088CC 802E704C 96030000 */ lhu $v1, ($s0)
/* 1088D0 802E7050 3402FFFF */ ori $v0, $zero, 0xffff
/* 1088D4 802E7054 10620011 */ beq $v1, $v0, .L802E709C
/* 1088D8 802E7058 00000000 */ nop
/* 1088DC 802E705C 0C05152F */ jal get_global_flag
/* 1088E0 802E7060 0060202D */ daddu $a0, $v1, $zero
/* 1088E4 802E7064 1040000D */ beqz $v0, .L802E709C
/* 1088E8 802E7068 0220202D */ daddu $a0, $s1, $zero
/* 1088EC 802E706C 3C05802F */ lui $a1, %hi(D_802EAD7C)
/* 1088F0 802E7070 24A5AD7C */ addiu $a1, $a1, %lo(D_802EAD7C)
/* 1088F4 802E7074 8E220000 */ lw $v0, ($s1)
/* 1088F8 802E7078 3C01C1E5 */ lui $at, 0xc1e5
/* 1088FC 802E707C 3421999A */ ori $at, $at, 0x999a
/* 108900 802E7080 44810000 */ mtc1 $at, $f0
/* 108904 802E7084 34424000 */ ori $v0, $v0, 0x4000
/* 108908 802E7088 AC820000 */ sw $v0, ($a0)
/* 10890C 802E708C 2402FFFF */ addiu $v0, $zero, -1
/* 108910 802E7090 AE020010 */ sw $v0, 0x10($s0)
/* 108914 802E7094 0C043EF0 */ jal set_entity_commandlist
/* 108918 802E7098 E6000008 */ swc1 $f0, 8($s0)
.L802E709C:
/* 10891C 802E709C 8FBF0018 */ lw $ra, 0x18($sp)
/* 108920 802E70A0 8FB10014 */ lw $s1, 0x14($sp)
/* 108924 802E70A4 8FB00010 */ lw $s0, 0x10($sp)
/* 108928 802E70A8 03E00008 */ jr $ra
/* 10892C 802E70AC 27BD0020 */ addiu $sp, $sp, 0x20

View File

@ -1,8 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_clear_item_id
/* 1095A8 802E7D28 8C830040 */ lw $v1, 0x40($a0)
/* 1095AC 802E7D2C 2402FFFF */ addiu $v0, $zero, -1
/* 1095B0 802E7D30 03E00008 */ jr $ra
/* 1095B4 802E7D34 AC620010 */ sw $v0, 0x10($v1)

View File

@ -1,16 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_enable_player_input
/* 10950C 802E7C8C 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 109510 802E7C90 AFBF0010 */ sw $ra, 0x10($sp)
/* 109514 802E7C94 8C820040 */ lw $v0, 0x40($a0)
/* 109518 802E7C98 8C420010 */ lw $v0, 0x10($v0)
/* 10951C 802E7C9C 10400003 */ beqz $v0, .L802E7CAC
/* 109520 802E7CA0 00000000 */ nop
/* 109524 802E7CA4 0C038069 */ jal enable_player_input
/* 109528 802E7CA8 00000000 */ nop
.L802E7CAC:
/* 10952C 802E7CAC 8FBF0010 */ lw $ra, 0x10($sp)
/* 109530 802E7CB0 03E00008 */ jr $ra
/* 109534 802E7CB4 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,90 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_idle
/* 108930 802E70B0 27BDFFD8 */ addiu $sp, $sp, -0x28
/* 108934 802E70B4 AFB10014 */ sw $s1, 0x14($sp)
/* 108938 802E70B8 0080882D */ daddu $s1, $a0, $zero
/* 10893C 802E70BC AFBF0018 */ sw $ra, 0x18($sp)
/* 108940 802E70C0 AFB00010 */ sw $s0, 0x10($sp)
/* 108944 802E70C4 F7B40020 */ sdc1 $f20, 0x20($sp)
/* 108948 802E70C8 C6200064 */ lwc1 $f0, 0x64($s1)
/* 10894C 802E70CC 3C014334 */ lui $at, 0x4334
/* 108950 802E70D0 44816000 */ mtc1 $at, $f12
/* 108954 802E70D4 0C00A6C9 */ jal clamp_angle
/* 108958 802E70D8 46006301 */ sub.s $f12, $f12, $f0
/* 10895C 802E70DC 3C108011 */ lui $s0, %hi(gPlayerStatus)
/* 108960 802E70E0 2610EFC8 */ addiu $s0, $s0, %lo(gPlayerStatus)
/* 108964 802E70E4 C62C0048 */ lwc1 $f12, 0x48($s1)
/* 108968 802E70E8 C62E0050 */ lwc1 $f14, 0x50($s1)
/* 10896C 802E70EC 8E060028 */ lw $a2, 0x28($s0)
/* 108970 802E70F0 8E070030 */ lw $a3, 0x30($s0)
/* 108974 802E70F4 0C00A720 */ jal atan2
/* 108978 802E70F8 46000506 */ mov.s $f20, $f0
/* 10897C 802E70FC 0C00A6C9 */ jal clamp_angle
/* 108980 802E7100 46000306 */ mov.s $f12, $f0
/* 108984 802E7104 4600A501 */ sub.s $f20, $f20, $f0
/* 108988 802E7108 8E020004 */ lw $v0, 4($s0)
/* 10898C 802E710C 30420001 */ andi $v0, $v0, 1
/* 108990 802E7110 1440002F */ bnez $v0, .L802E71D0
/* 108994 802E7114 4600A505 */ abs.s $f20, $f20
/* 108998 802E7118 92220006 */ lbu $v0, 6($s1)
/* 10899C 802E711C 30420001 */ andi $v0, $v0, 1
/* 1089A0 802E7120 1440002B */ bnez $v0, .L802E71D0
/* 1089A4 802E7124 00000000 */ nop
/* 1089A8 802E7128 3C014220 */ lui $at, 0x4220
/* 1089AC 802E712C 44810000 */ mtc1 $at, $f0
/* 1089B0 802E7130 00000000 */ nop
/* 1089B4 802E7134 4600A03E */ c.le.s $f20, $f0
/* 1089B8 802E7138 00000000 */ nop
/* 1089BC 802E713C 45010008 */ bc1t .L802E7160
/* 1089C0 802E7140 00000000 */ nop
/* 1089C4 802E7144 3C0143A0 */ lui $at, 0x43a0
/* 1089C8 802E7148 44810000 */ mtc1 $at, $f0
/* 1089CC 802E714C 00000000 */ nop
/* 1089D0 802E7150 4614003E */ c.le.s $f0, $f20
/* 1089D4 802E7154 00000000 */ nop
/* 1089D8 802E7158 4500001D */ bc1f .L802E71D0
/* 1089DC 802E715C 00000000 */ nop
.L802E7160:
/* 1089E0 802E7160 8E220000 */ lw $v0, ($s1)
/* 1089E4 802E7164 34421000 */ ori $v0, $v0, 0x1000
/* 1089E8 802E7168 AE220000 */ sw $v0, ($s1)
/* 1089EC 802E716C 8E020004 */ lw $v0, 4($s0)
/* 1089F0 802E7170 30420010 */ andi $v0, $v0, 0x10
/* 1089F4 802E7174 1040001A */ beqz $v0, .L802E71E0
/* 1089F8 802E7178 00000000 */ nop
/* 1089FC 802E717C 92220006 */ lbu $v0, 6($s1)
/* 108A00 802E7180 30420008 */ andi $v0, $v0, 8
/* 108A04 802E7184 10400016 */ beqz $v0, .L802E71E0
/* 108A08 802E7188 00000000 */ nop
/* 108A0C 802E718C 0C043F5A */ jal exec_entity_commandlist
/* 108A10 802E7190 0220202D */ daddu $a0, $s1, $zero
/* 108A14 802E7194 8E240040 */ lw $a0, 0x40($s1)
/* 108A18 802E7198 A0800004 */ sb $zero, 4($a0)
/* 108A1C 802E719C 8E220000 */ lw $v0, ($s1)
/* 108A20 802E71A0 2403EFFF */ addiu $v1, $zero, -0x1001
/* 108A24 802E71A4 00431024 */ and $v0, $v0, $v1
/* 108A28 802E71A8 AE220000 */ sw $v0, ($s1)
/* 108A2C 802E71AC 8C820010 */ lw $v0, 0x10($a0)
/* 108A30 802E71B0 10400003 */ beqz $v0, .L802E71C0
/* 108A34 802E71B4 00000000 */ nop
/* 108A38 802E71B8 0C03805E */ jal disable_player_input
/* 108A3C 802E71BC 00000000 */ nop
.L802E71C0:
/* 108A40 802E71C0 0C03BCF9 */ jal func_800EF3E4
/* 108A44 802E71C4 00000000 */ nop
/* 108A48 802E71C8 080B9C78 */ j .L802E71E0
/* 108A4C 802E71CC 00000000 */ nop
.L802E71D0:
/* 108A50 802E71D0 8E220000 */ lw $v0, ($s1)
/* 108A54 802E71D4 2403EFFF */ addiu $v1, $zero, -0x1001
/* 108A58 802E71D8 00431024 */ and $v0, $v0, $v1
/* 108A5C 802E71DC AE220000 */ sw $v0, ($s1)
.L802E71E0:
/* 108A60 802E71E0 8FBF0018 */ lw $ra, 0x18($sp)
/* 108A64 802E71E4 8FB10014 */ lw $s1, 0x14($sp)
/* 108A68 802E71E8 8FB00010 */ lw $s0, 0x10($sp)
/* 108A6C 802E71EC D7B40020 */ ldc1 $f20, 0x20($sp)
/* 108A70 802E71F0 03E00008 */ jr $ra
/* 108A74 802E71F4 27BD0028 */ addiu $sp, $sp, 0x28

View File

@ -1,27 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_init
/* 109604 802E7D84 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 109608 802E7D88 AFB00010 */ sw $s0, 0x10($sp)
/* 10960C 802E7D8C 0080802D */ daddu $s0, $a0, $zero
/* 109610 802E7D90 24020001 */ addiu $v0, $zero, 1
/* 109614 802E7D94 AFBF0014 */ sw $ra, 0x14($sp)
/* 109618 802E7D98 8E030040 */ lw $v1, 0x40($s0)
/* 10961C 802E7D9C 0C0B9F4E */ jal entity_Chest_readargs
/* 109620 802E7DA0 A0620007 */ sb $v0, 7($v1)
/* 109624 802E7DA4 3C013F0F */ lui $at, 0x3f0f
/* 109628 802E7DA8 34215C29 */ ori $at, $at, 0x5c29
/* 10962C 802E7DAC 44810000 */ mtc1 $at, $f0
/* 109630 802E7DB0 3C02802E */ lui $v0, %hi(entity_Chest_setupGfx)
/* 109634 802E7DB4 24426ED8 */ addiu $v0, $v0, %lo(entity_Chest_setupGfx)
/* 109638 802E7DB8 AE02003C */ sw $v0, 0x3c($s0)
/* 10963C 802E7DBC E6000054 */ swc1 $f0, 0x54($s0)
/* 109640 802E7DC0 E6000058 */ swc1 $f0, 0x58($s0)
/* 109644 802E7DC4 E600005C */ swc1 $f0, 0x5c($s0)
/* 109648 802E7DC8 8FBF0014 */ lw $ra, 0x14($sp)
/* 10964C 802E7DCC 8FB00010 */ lw $s0, 0x10($sp)
/* 109650 802E7DD0 03E00008 */ jr $ra
/* 109654 802E7DD4 27BD0018 */ addiu $sp, $sp, 0x18
/* 109658 802E7DD8 00000000 */ nop
/* 10965C 802E7DDC 00000000 */ nop

View File

@ -1,11 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_readargs
/* 1095B8 802E7D38 8C820040 */ lw $v0, 0x40($a0)
/* 1095BC 802E7D3C 3C038016 */ lui $v1, %hi(D_8015C7D0)
/* 1095C0 802E7D40 8C63C7D0 */ lw $v1, %lo(D_8015C7D0)($v1)
/* 1095C4 802E7D44 AC430010 */ sw $v1, 0x10($v0)
/* 1095C8 802E7D48 3403FFFF */ ori $v1, $zero, 0xffff
/* 1095CC 802E7D4C 03E00008 */ jr $ra
/* 1095D0 802E7D50 A4430000 */ sh $v1, ($v0)

View File

@ -1,11 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_Chest_start_bound_script
/* 1094F0 802E7C70 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 1094F4 802E7C74 AFBF0010 */ sw $ra, 0x10($sp)
/* 1094F8 802E7C78 0C04419E */ jal entity_start_script
/* 1094FC 802E7C7C 00000000 */ nop
/* 109500 802E7C80 8FBF0010 */ lw $ra, 0x10($sp)
/* 109504 802E7C84 03E00008 */ jr $ra
/* 109508 802E7C88 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,34 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_GiantChest_await_got_item
/* 109538 802E7CB8 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 10953C 802E7CBC AFBF0014 */ sw $ra, 0x14($sp)
/* 109540 802E7CC0 AFB00010 */ sw $s0, 0x10($sp)
/* 109544 802E7CC4 8C900040 */ lw $s0, 0x40($a0)
/* 109548 802E7CC8 8E020010 */ lw $v0, 0x10($s0)
/* 10954C 802E7CCC 10400010 */ beqz $v0, .L802E7D10
/* 109550 802E7CD0 00000000 */ nop
/* 109554 802E7CD4 82020030 */ lb $v0, 0x30($s0)
/* 109558 802E7CD8 1040000F */ beqz $v0, .L802E7D18
/* 10955C 802E7CDC 00000000 */ nop
/* 109560 802E7CE0 0C043F5A */ jal exec_entity_commandlist
/* 109564 802E7CE4 00000000 */ nop
/* 109568 802E7CE8 0C04CE7F */ jal remove_item_entity_by_index
/* 10956C 802E7CEC 8E040014 */ lw $a0, 0x14($s0)
/* 109570 802E7CF0 3C040001 */ lui $a0, 1
/* 109574 802E7CF4 0C037FBF */ jal suggest_player_anim_clearUnkFlag
/* 109578 802E7CF8 34840002 */ ori $a0, $a0, 2
/* 10957C 802E7CFC 0C038069 */ jal enable_player_input
/* 109580 802E7D00 00000000 */ nop
/* 109584 802E7D04 2402FFFF */ addiu $v0, $zero, -1
/* 109588 802E7D08 080B9F46 */ j .L802E7D18
/* 10958C 802E7D0C AE020010 */ sw $v0, 0x10($s0)
.L802E7D10:
/* 109590 802E7D10 0C043F5A */ jal exec_entity_commandlist
/* 109594 802E7D14 00000000 */ nop
.L802E7D18:
/* 109598 802E7D18 8FBF0014 */ lw $ra, 0x14($sp)
/* 10959C 802E7D1C 8FB00010 */ lw $s0, 0x10($sp)
/* 1095A0 802E7D20 03E00008 */ jr $ra
/* 1095A4 802E7D24 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,16 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_GiantChest_init
/* 1095D4 802E7D54 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 1095D8 802E7D58 AFB00010 */ sw $s0, 0x10($sp)
/* 1095DC 802E7D5C AFBF0014 */ sw $ra, 0x14($sp)
/* 1095E0 802E7D60 0C0B9F4E */ jal entity_Chest_readargs
/* 1095E4 802E7D64 0080802D */ daddu $s0, $a0, $zero
/* 1095E8 802E7D68 3C02802E */ lui $v0, %hi(entity_Chest_setupGfx)
/* 1095EC 802E7D6C 24426ED8 */ addiu $v0, $v0, %lo(entity_Chest_setupGfx)
/* 1095F0 802E7D70 AE02003C */ sw $v0, 0x3c($s0)
/* 1095F4 802E7D74 8FBF0014 */ lw $ra, 0x14($sp)
/* 1095F8 802E7D78 8FB00010 */ lw $s0, 0x10($sp)
/* 1095FC 802E7D7C 03E00008 */ jr $ra
/* 109600 802E7D80 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,350 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel jtbl_802EB278
.word L802E4E54_1066D4, L802E4E98_106718, L802E4F1C_10679C, L802E5018_106898, L802E5170_1069F0, L802E52AC_106B2C
glabel D_802EB290
.double 0.7
.section .text
glabel entity_HeartBlockContent__anim_heal
/* 106684 802E4E04 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 106688 802E4E08 AFB1001C */ sw $s1, 0x1c($sp)
/* 10668C 802E4E0C 0080882D */ daddu $s1, $a0, $zero
/* 106690 802E4E10 AFBF0024 */ sw $ra, 0x24($sp)
/* 106694 802E4E14 AFB20020 */ sw $s2, 0x20($sp)
/* 106698 802E4E18 AFB00018 */ sw $s0, 0x18($sp)
/* 10669C 802E4E1C F7B60030 */ sdc1 $f22, 0x30($sp)
/* 1066A0 802E4E20 F7B40028 */ sdc1 $f20, 0x28($sp)
/* 1066A4 802E4E24 8E300040 */ lw $s0, 0x40($s1)
/* 1066A8 802E4E28 92030001 */ lbu $v1, 1($s0)
/* 1066AC 802E4E2C 3C128011 */ lui $s2, %hi(gPlayerStatus)
/* 1066B0 802E4E30 2652EFC8 */ addiu $s2, $s2, %lo(gPlayerStatus)
/* 1066B4 802E4E34 2C620006 */ sltiu $v0, $v1, 6
/* 1066B8 802E4E38 1040012B */ beqz $v0, .L802E52E8
/* 1066BC 802E4E3C 00031080 */ sll $v0, $v1, 2
/* 1066C0 802E4E40 3C01802F */ lui $at, %hi(jtbl_802EB278)
/* 1066C4 802E4E44 00220821 */ addu $at, $at, $v0
/* 1066C8 802E4E48 8C22B278 */ lw $v0, %lo(jtbl_802EB278)($at)
/* 1066CC 802E4E4C 00400008 */ jr $v0
/* 1066D0 802E4E50 00000000 */ nop
glabel L802E4E54_1066D4
/* 1066D4 802E4E54 3C014000 */ lui $at, 0x4000
/* 1066D8 802E4E58 44810000 */ mtc1 $at, $f0
/* 1066DC 802E4E5C 00000000 */ nop
/* 1066E0 802E4E60 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1066E4 802E4E64 8E250048 */ lw $a1, 0x48($s1)
/* 1066E8 802E4E68 8E26004C */ lw $a2, 0x4c($s1)
/* 1066EC 802E4E6C 8E270050 */ lw $a3, 0x50($s1)
/* 1066F0 802E4E70 0C01BFBC */ jal playFX_11
/* 1066F4 802E4E74 0000202D */ daddu $a0, $zero, $zero
/* 1066F8 802E4E78 92020001 */ lbu $v0, 1($s0)
/* 1066FC 802E4E7C 3C0140C0 */ lui $at, 0x40c0
/* 106700 802E4E80 44810000 */ mtc1 $at, $f0
/* 106704 802E4E84 AE000020 */ sw $zero, 0x20($s0)
/* 106708 802E4E88 24420001 */ addiu $v0, $v0, 1
/* 10670C 802E4E8C A2020001 */ sb $v0, 1($s0)
/* 106710 802E4E90 080B94BA */ j .L802E52E8
/* 106714 802E4E94 E6000014 */ swc1 $f0, 0x14($s0)
glabel L802E4E98_106718
/* 106718 802E4E98 C620004C */ lwc1 $f0, 0x4c($s1)
/* 10671C 802E4E9C C6020014 */ lwc1 $f2, 0x14($s0)
/* 106720 802E4EA0 46020000 */ add.s $f0, $f0, $f2
/* 106724 802E4EA4 3C013F80 */ lui $at, 0x3f80
/* 106728 802E4EA8 44811000 */ mtc1 $at, $f2
/* 10672C 802E4EAC E620004C */ swc1 $f0, 0x4c($s1)
/* 106730 802E4EB0 C6000014 */ lwc1 $f0, 0x14($s0)
/* 106734 802E4EB4 46020001 */ sub.s $f0, $f0, $f2
/* 106738 802E4EB8 3C014000 */ lui $at, 0x4000
/* 10673C 802E4EBC 44811000 */ mtc1 $at, $f2
/* 106740 802E4EC0 00000000 */ nop
/* 106744 802E4EC4 4602003E */ c.le.s $f0, $f2
/* 106748 802E4EC8 00000000 */ nop
/* 10674C 802E4ECC 45000106 */ bc1f .L802E52E8
/* 106750 802E4ED0 E6000014 */ swc1 $f0, 0x14($s0)
/* 106754 802E4ED4 0220202D */ daddu $a0, $s1, $zero
/* 106758 802E4ED8 3C05802F */ lui $a1, %hi(D_802EA744)
/* 10675C 802E4EDC 24A5A744 */ addiu $a1, $a1, %lo(D_802EA744)
/* 106760 802E4EE0 92020001 */ lbu $v0, 1($s0)
/* 106764 802E4EE4 2403DFFF */ addiu $v1, $zero, -0x2001
/* 106768 802E4EE8 24420001 */ addiu $v0, $v0, 1
/* 10676C 802E4EEC A2020001 */ sb $v0, 1($s0)
/* 106770 802E4EF0 8E220000 */ lw $v0, ($s1)
/* 106774 802E4EF4 3C01C120 */ lui $at, 0xc120
/* 106778 802E4EF8 44810000 */ mtc1 $at, $f0
/* 10677C 802E4EFC 00431024 */ and $v0, $v0, $v1
/* 106780 802E4F00 AE220000 */ sw $v0, ($s1)
/* 106784 802E4F04 0C0442F3 */ jal entity_set_render_script
/* 106788 802E4F08 E6000054 */ swc1 $f0, 0x54($s0)
/* 10678C 802E4F0C 3C02802E */ lui $v0, %hi(entity_HeartBlockContent_setupGfx)
/* 106790 802E4F10 24424AEC */ addiu $v0, $v0, %lo(entity_HeartBlockContent_setupGfx)
/* 106794 802E4F14 080B94BA */ j .L802E52E8
/* 106798 802E4F18 AE22003C */ sw $v0, 0x3c($s1)
glabel L802E4F1C_10679C
/* 10679C 802E4F1C C60C0020 */ lwc1 $f12, 0x20($s0)
/* 1067A0 802E4F20 3C0140C9 */ lui $at, 0x40c9
/* 1067A4 802E4F24 34210FD0 */ ori $at, $at, 0xfd0
/* 1067A8 802E4F28 44810000 */ mtc1 $at, $f0
/* 1067AC 802E4F2C 00000000 */ nop
/* 1067B0 802E4F30 46006302 */ mul.s $f12, $f12, $f0
/* 1067B4 802E4F34 00000000 */ nop
/* 1067B8 802E4F38 3C0143B4 */ lui $at, 0x43b4
/* 1067BC 802E4F3C 4481A000 */ mtc1 $at, $f20
/* 1067C0 802E4F40 0C00A85B */ jal sin_rad
/* 1067C4 802E4F44 46146303 */ div.s $f12, $f12, $f20
/* 1067C8 802E4F48 3C013F00 */ lui $at, 0x3f00
/* 1067CC 802E4F4C 44811000 */ mtc1 $at, $f2
/* 1067D0 802E4F50 00000000 */ nop
/* 1067D4 802E4F54 46020002 */ mul.s $f0, $f0, $f2
/* 1067D8 802E4F58 00000000 */ nop
/* 1067DC 802E4F5C C622004C */ lwc1 $f2, 0x4c($s1)
/* 1067E0 802E4F60 46001080 */ add.s $f2, $f2, $f0
/* 1067E4 802E4F64 3C0141F0 */ lui $at, 0x41f0
/* 1067E8 802E4F68 44810000 */ mtc1 $at, $f0
/* 1067EC 802E4F6C E622004C */ swc1 $f2, 0x4c($s1)
/* 1067F0 802E4F70 C6020020 */ lwc1 $f2, 0x20($s0)
/* 1067F4 802E4F74 46001001 */ sub.s $f0, $f2, $f0
/* 1067F8 802E4F78 44802000 */ mtc1 $zero, $f4
/* 1067FC 802E4F7C 00000000 */ nop
/* 106800 802E4F80 4604003C */ c.lt.s $f0, $f4
/* 106804 802E4F84 00000000 */ nop
/* 106808 802E4F88 45000003 */ bc1f .L802E4F98
/* 10680C 802E4F8C E6000020 */ swc1 $f0, 0x20($s0)
/* 106810 802E4F90 46140000 */ add.s $f0, $f0, $f20
/* 106814 802E4F94 E6000020 */ swc1 $f0, 0x20($s0)
.L802E4F98:
/* 106818 802E4F98 C6200064 */ lwc1 $f0, 0x64($s1)
/* 10681C 802E4F9C C6020054 */ lwc1 $f2, 0x54($s0)
/* 106820 802E4FA0 46020000 */ add.s $f0, $f0, $f2
/* 106824 802E4FA4 3C014000 */ lui $at, 0x4000
/* 106828 802E4FA8 44811000 */ mtc1 $at, $f2
/* 10682C 802E4FAC E6200064 */ swc1 $f0, 0x64($s1)
/* 106830 802E4FB0 C6000054 */ lwc1 $f0, 0x54($s0)
/* 106834 802E4FB4 46020000 */ add.s $f0, $f0, $f2
/* 106838 802E4FB8 4600203E */ c.le.s $f4, $f0
/* 10683C 802E4FBC 00000000 */ nop
/* 106840 802E4FC0 450000AC */ bc1f .L802E5274
/* 106844 802E4FC4 E6000054 */ swc1 $f0, 0x54($s0)
/* 106848 802E4FC8 92020001 */ lbu $v0, 1($s0)
/* 10684C 802E4FCC E6040018 */ swc1 $f4, 0x18($s0)
/* 106850 802E4FD0 E604001C */ swc1 $f4, 0x1c($s0)
/* 106854 802E4FD4 24420001 */ addiu $v0, $v0, 1
/* 106858 802E4FD8 A2020001 */ sb $v0, 1($s0)
/* 10685C 802E4FDC 864200B0 */ lh $v0, 0xb0($s2)
/* 106860 802E4FE0 2404FFFF */ addiu $a0, $zero, -1
/* 106864 802E4FE4 A2000003 */ sb $zero, 3($s0)
/* 106868 802E4FE8 24420005 */ addiu $v0, $v0, 5
/* 10686C 802E4FEC 44820000 */ mtc1 $v0, $f0
/* 106870 802E4FF0 00000000 */ nop
/* 106874 802E4FF4 46800020 */ cvt.s.w $f0, $f0
/* 106878 802E4FF8 0C03A8B3 */ jal recover_hp
/* 10687C 802E4FFC E6000004 */ swc1 $f0, 4($s0)
/* 106880 802E5000 0C03A899 */ jal recover_fp
/* 106884 802E5004 2404FFFF */ addiu $a0, $zero, -1
/* 106888 802E5008 0C05272D */ jal sfx_play_sound
/* 10688C 802E500C 24040131 */ addiu $a0, $zero, 0x131
/* 106890 802E5010 080B949D */ j .L802E5274
/* 106894 802E5014 00000000 */ nop
glabel L802E5018_106898
/* 106898 802E5018 C600001C */ lwc1 $f0, 0x1c($s0)
/* 10689C 802E501C 3C014000 */ lui $at, 0x4000
/* 1068A0 802E5020 44811800 */ mtc1 $at, $f3
/* 1068A4 802E5024 44801000 */ mtc1 $zero, $f2
/* 1068A8 802E5028 46000021 */ cvt.d.s $f0, $f0
/* 1068AC 802E502C 46220000 */ add.d $f0, $f0, $f2
/* 1068B0 802E5030 3C014120 */ lui $at, 0x4120
/* 1068B4 802E5034 44811000 */ mtc1 $at, $f2
/* 1068B8 802E5038 46200020 */ cvt.s.d $f0, $f0
/* 1068BC 802E503C 4600103E */ c.le.s $f2, $f0
/* 1068C0 802E5040 00000000 */ nop
/* 1068C4 802E5044 45000002 */ bc1f .L802E5050
/* 1068C8 802E5048 E600001C */ swc1 $f0, 0x1c($s0)
/* 1068CC 802E504C E602001C */ swc1 $f2, 0x1c($s0)
.L802E5050:
/* 1068D0 802E5050 C6020018 */ lwc1 $f2, 0x18($s0)
/* 1068D4 802E5054 3C014190 */ lui $at, 0x4190
/* 1068D8 802E5058 44810000 */ mtc1 $at, $f0
/* 1068DC 802E505C 00000000 */ nop
/* 1068E0 802E5060 46001000 */ add.s $f0, $f2, $f0
/* 1068E4 802E5064 3C0143B4 */ lui $at, 0x43b4
/* 1068E8 802E5068 4481B000 */ mtc1 $at, $f22
/* 1068EC 802E506C 00000000 */ nop
/* 1068F0 802E5070 4600B03E */ c.le.s $f22, $f0
/* 1068F4 802E5074 00000000 */ nop
/* 1068F8 802E5078 45000003 */ bc1f .L802E5088
/* 1068FC 802E507C E6000018 */ swc1 $f0, 0x18($s0)
/* 106900 802E5080 46160001 */ sub.s $f0, $f0, $f22
/* 106904 802E5084 E6000018 */ swc1 $f0, 0x18($s0)
.L802E5088:
/* 106908 802E5088 C60C0018 */ lwc1 $f12, 0x18($s0)
/* 10690C 802E508C 3C0140C9 */ lui $at, 0x40c9
/* 106910 802E5090 34210FD0 */ ori $at, $at, 0xfd0
/* 106914 802E5094 4481A000 */ mtc1 $at, $f20
/* 106918 802E5098 00000000 */ nop
/* 10691C 802E509C 46146302 */ mul.s $f12, $f12, $f20
/* 106920 802E50A0 00000000 */ nop
/* 106924 802E50A4 0C00A85B */ jal sin_rad
/* 106928 802E50A8 46166303 */ div.s $f12, $f12, $f22
/* 10692C 802E50AC C60C0018 */ lwc1 $f12, 0x18($s0)
/* 106930 802E50B0 46146302 */ mul.s $f12, $f12, $f20
/* 106934 802E50B4 00000000 */ nop
/* 106938 802E50B8 C602001C */ lwc1 $f2, 0x1c($s0)
/* 10693C 802E50BC 46001502 */ mul.s $f20, $f2, $f0
/* 106940 802E50C0 00000000 */ nop
/* 106944 802E50C4 0C00A874 */ jal cos_rad
/* 106948 802E50C8 46166303 */ div.s $f12, $f12, $f22
/* 10694C 802E50CC C6060004 */ lwc1 $f6, 4($s0)
/* 106950 802E50D0 3C01802F */ lui $at, %hi(D_802EB290)
/* 106954 802E50D4 D424B290 */ ldc1 $f4, %lo(D_802EB290)($at)
/* 106958 802E50D8 92030003 */ lbu $v1, 3($s0)
/* 10695C 802E50DC 460030A1 */ cvt.d.s $f2, $f6
/* 106960 802E50E0 46241081 */ sub.d $f2, $f2, $f4
/* 106964 802E50E4 24620001 */ addiu $v0, $v1, 1
/* 106968 802E50E8 462010A0 */ cvt.s.d $f2, $f2
/* 10696C 802E50EC E6020004 */ swc1 $f2, 4($s0)
/* 106970 802E50F0 C602001C */ lwc1 $f2, 0x1c($s0)
/* 106974 802E50F4 30630001 */ andi $v1, $v1, 1
/* 106978 802E50F8 46001082 */ mul.s $f2, $f2, $f0
/* 10697C 802E50FC 00000000 */ nop
/* 106980 802E5100 1060000F */ beqz $v1, .L802E5140
/* 106984 802E5104 A2020003 */ sb $v0, 3($s0)
/* 106988 802E5108 C6400028 */ lwc1 $f0, 0x28($s2)
/* 10698C 802E510C 46140000 */ add.s $f0, $f0, $f20
/* 106990 802E5110 44050000 */ mfc1 $a1, $f0
/* 106994 802E5114 C640002C */ lwc1 $f0, 0x2c($s2)
/* 106998 802E5118 46060000 */ add.s $f0, $f0, $f6
/* 10699C 802E511C 44060000 */ mfc1 $a2, $f0
/* 1069A0 802E5120 C6400030 */ lwc1 $f0, 0x30($s2)
/* 1069A4 802E5124 46020001 */ sub.s $f0, $f0, $f2
/* 1069A8 802E5128 44070000 */ mfc1 $a3, $f0
/* 1069AC 802E512C 3C014100 */ lui $at, 0x4100
/* 1069B0 802E5130 44810000 */ mtc1 $at, $f0
/* 1069B4 802E5134 24040003 */ addiu $a0, $zero, 3
/* 1069B8 802E5138 0C01BFBC */ jal playFX_11
/* 1069BC 802E513C E7A00010 */ swc1 $f0, 0x10($sp)
.L802E5140:
/* 1069C0 802E5140 C6000004 */ lwc1 $f0, 4($s0)
/* 1069C4 802E5144 3C0141A0 */ lui $at, 0x41a0
/* 1069C8 802E5148 44811000 */ mtc1 $at, $f2
/* 1069CC 802E514C 00000000 */ nop
/* 1069D0 802E5150 4602003C */ c.lt.s $f0, $f2
/* 1069D4 802E5154 00000000 */ nop
/* 1069D8 802E5158 45000005 */ bc1f L802E5170_1069F0
/* 1069DC 802E515C 00000000 */ nop
/* 1069E0 802E5160 92020001 */ lbu $v0, 1($s0)
/* 1069E4 802E5164 E6020004 */ swc1 $f2, 4($s0)
/* 1069E8 802E5168 24420001 */ addiu $v0, $v0, 1
/* 1069EC 802E516C A2020001 */ sb $v0, 1($s0)
glabel L802E5170_1069F0
/* 1069F0 802E5170 C60C0020 */ lwc1 $f12, 0x20($s0)
/* 1069F4 802E5174 3C0140C9 */ lui $at, 0x40c9
/* 1069F8 802E5178 34210FD0 */ ori $at, $at, 0xfd0
/* 1069FC 802E517C 44810000 */ mtc1 $at, $f0
/* 106A00 802E5180 00000000 */ nop
/* 106A04 802E5184 46006302 */ mul.s $f12, $f12, $f0
/* 106A08 802E5188 00000000 */ nop
/* 106A0C 802E518C 3C0143B4 */ lui $at, 0x43b4
/* 106A10 802E5190 4481A000 */ mtc1 $at, $f20
/* 106A14 802E5194 0C00A85B */ jal sin_rad
/* 106A18 802E5198 46146303 */ div.s $f12, $f12, $f20
/* 106A1C 802E519C 3C013F00 */ lui $at, 0x3f00
/* 106A20 802E51A0 44811000 */ mtc1 $at, $f2
/* 106A24 802E51A4 00000000 */ nop
/* 106A28 802E51A8 46020002 */ mul.s $f0, $f0, $f2
/* 106A2C 802E51AC 00000000 */ nop
/* 106A30 802E51B0 C622004C */ lwc1 $f2, 0x4c($s1)
/* 106A34 802E51B4 46001080 */ add.s $f2, $f2, $f0
/* 106A38 802E51B8 3C0141F0 */ lui $at, 0x41f0
/* 106A3C 802E51BC 44812000 */ mtc1 $at, $f4
/* 106A40 802E51C0 E622004C */ swc1 $f2, 0x4c($s1)
/* 106A44 802E51C4 C6000020 */ lwc1 $f0, 0x20($s0)
/* 106A48 802E51C8 46040081 */ sub.s $f2, $f0, $f4
/* 106A4C 802E51CC 44800000 */ mtc1 $zero, $f0
/* 106A50 802E51D0 00000000 */ nop
/* 106A54 802E51D4 4600103C */ c.lt.s $f2, $f0
/* 106A58 802E51D8 00000000 */ nop
/* 106A5C 802E51DC 45000003 */ bc1f .L802E51EC
/* 106A60 802E51E0 E6020020 */ swc1 $f2, 0x20($s0)
/* 106A64 802E51E4 46141000 */ add.s $f0, $f2, $f20
/* 106A68 802E51E8 E6000020 */ swc1 $f0, 0x20($s0)
.L802E51EC:
/* 106A6C 802E51EC C6000054 */ lwc1 $f0, 0x54($s0)
/* 106A70 802E51F0 3C013FF0 */ lui $at, 0x3ff0
/* 106A74 802E51F4 44811800 */ mtc1 $at, $f3
/* 106A78 802E51F8 44801000 */ mtc1 $zero, $f2
/* 106A7C 802E51FC 46000021 */ cvt.d.s $f0, $f0
/* 106A80 802E5200 46220000 */ add.d $f0, $f0, $f2
/* 106A84 802E5204 46200020 */ cvt.s.d $f0, $f0
/* 106A88 802E5208 4600203C */ c.lt.s $f4, $f0
/* 106A8C 802E520C 00000000 */ nop
/* 106A90 802E5210 45000002 */ bc1f .L802E521C
/* 106A94 802E5214 E6000054 */ swc1 $f0, 0x54($s0)
/* 106A98 802E5218 E6040054 */ swc1 $f4, 0x54($s0)
.L802E521C:
/* 106A9C 802E521C C6220064 */ lwc1 $f2, 0x64($s1)
/* 106AA0 802E5220 C6000054 */ lwc1 $f0, 0x54($s0)
/* 106AA4 802E5224 46001000 */ add.s $f0, $f2, $f0
/* 106AA8 802E5228 4600A03E */ c.le.s $f20, $f0
/* 106AAC 802E522C 00000000 */ nop
/* 106AB0 802E5230 45000003 */ bc1f .L802E5240
/* 106AB4 802E5234 E6200064 */ swc1 $f0, 0x64($s1)
/* 106AB8 802E5238 46140001 */ sub.s $f0, $f0, $f20
/* 106ABC 802E523C E6200064 */ swc1 $f0, 0x64($s1)
.L802E5240:
/* 106AC0 802E5240 9222000B */ lbu $v0, 0xb($s1)
/* 106AC4 802E5244 2442FFFB */ addiu $v0, $v0, -5
/* 106AC8 802E5248 A222000B */ sb $v0, 0xb($s1)
/* 106ACC 802E524C 304200FF */ andi $v0, $v0, 0xff
/* 106AD0 802E5250 2C420007 */ sltiu $v0, $v0, 7
/* 106AD4 802E5254 10400007 */ beqz $v0, .L802E5274
/* 106AD8 802E5258 24020005 */ addiu $v0, $zero, 5
/* 106ADC 802E525C A222000B */ sb $v0, 0xb($s1)
/* 106AE0 802E5260 92030001 */ lbu $v1, 1($s0)
/* 106AE4 802E5264 24020004 */ addiu $v0, $zero, 4
/* 106AE8 802E5268 14620002 */ bne $v1, $v0, .L802E5274
/* 106AEC 802E526C 24620001 */ addiu $v0, $v1, 1
/* 106AF0 802E5270 A2020001 */ sb $v0, 1($s0)
.L802E5274:
/* 106AF4 802E5274 96020024 */ lhu $v0, 0x24($s0)
/* 106AF8 802E5278 C6200064 */ lwc1 $f0, 0x64($s1)
/* 106AFC 802E527C 00021080 */ sll $v0, $v0, 2
/* 106B00 802E5280 02021021 */ addu $v0, $s0, $v0
/* 106B04 802E5284 E4400028 */ swc1 $f0, 0x28($v0)
/* 106B08 802E5288 96020024 */ lhu $v0, 0x24($s0)
/* 106B0C 802E528C 24420001 */ addiu $v0, $v0, 1
/* 106B10 802E5290 A6020024 */ sh $v0, 0x24($s0)
/* 106B14 802E5294 3042FFFF */ andi $v0, $v0, 0xffff
/* 106B18 802E5298 2C42000B */ sltiu $v0, $v0, 0xb
/* 106B1C 802E529C 50400012 */ beql $v0, $zero, .L802E52E8
/* 106B20 802E52A0 A6000024 */ sh $zero, 0x24($s0)
/* 106B24 802E52A4 080B94BA */ j .L802E52E8
/* 106B28 802E52A8 00000000 */ nop
glabel L802E52AC_106B2C
/* 106B2C 802E52AC 8E420004 */ lw $v0, 4($s2)
/* 106B30 802E52B0 2403FDFF */ addiu $v1, $zero, -0x201
/* 106B34 802E52B4 00431024 */ and $v0, $v0, $v1
/* 106B38 802E52B8 0C038069 */ jal enable_player_input
/* 106B3C 802E52BC AE420004 */ sw $v0, 4($s2)
/* 106B40 802E52C0 0C009C22 */ jal set_time_freeze_mode
/* 106B44 802E52C4 0000202D */ daddu $a0, $zero, $zero
/* 106B48 802E52C8 0220202D */ daddu $a0, $s1, $zero
/* 106B4C 802E52CC 3C05800A */ lui $a1, %hi(gOverrideFlags)
/* 106B50 802E52D0 24A5A650 */ addiu $a1, $a1, %lo(gOverrideFlags)
/* 106B54 802E52D4 8CA20000 */ lw $v0, ($a1)
/* 106B58 802E52D8 2403FFBF */ addiu $v1, $zero, -0x41
/* 106B5C 802E52DC 00431024 */ and $v0, $v0, $v1
/* 106B60 802E52E0 0C043F5A */ jal exec_entity_commandlist
/* 106B64 802E52E4 ACA20000 */ sw $v0, ($a1)
.L802E52E8:
/* 106B68 802E52E8 8FBF0024 */ lw $ra, 0x24($sp)
/* 106B6C 802E52EC 8FB20020 */ lw $s2, 0x20($sp)
/* 106B70 802E52F0 8FB1001C */ lw $s1, 0x1c($sp)
/* 106B74 802E52F4 8FB00018 */ lw $s0, 0x18($sp)
/* 106B78 802E52F8 D7B60030 */ ldc1 $f22, 0x30($sp)
/* 106B7C 802E52FC D7B40028 */ ldc1 $f20, 0x28($sp)
/* 106B80 802E5300 03E00008 */ jr $ra
/* 106B84 802E5304 27BD0038 */ addiu $sp, $sp, 0x38

View File

@ -1,135 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
glabel D_802EB270
.double 0.01
.section .text
glabel entity_HeartBlockContent_anim_idle
/* 106490 802E4C10 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 106494 802E4C14 AFB10024 */ sw $s1, 0x24($sp)
/* 106498 802E4C18 0080882D */ daddu $s1, $a0, $zero
/* 10649C 802E4C1C AFBF0028 */ sw $ra, 0x28($sp)
/* 1064A0 802E4C20 AFB00020 */ sw $s0, 0x20($sp)
/* 1064A4 802E4C24 8E300040 */ lw $s0, 0x40($s1)
/* 1064A8 802E4C28 92030001 */ lbu $v1, 1($s0)
/* 1064AC 802E4C2C 24020001 */ addiu $v0, $zero, 1
/* 1064B0 802E4C30 10620014 */ beq $v1, $v0, .L802E4C84
/* 1064B4 802E4C34 28620002 */ slti $v0, $v1, 2
/* 1064B8 802E4C38 10400005 */ beqz $v0, .L802E4C50
/* 1064BC 802E4C3C 24020002 */ addiu $v0, $zero, 2
/* 1064C0 802E4C40 50600009 */ beql $v1, $zero, .L802E4C68
/* 1064C4 802E4C44 AE200054 */ sw $zero, 0x54($s1)
/* 1064C8 802E4C48 080B935C */ j .L802E4D70
/* 1064CC 802E4C4C 00000000 */ nop
.L802E4C50:
/* 1064D0 802E4C50 10620028 */ beq $v1, $v0, .L802E4CF4
/* 1064D4 802E4C54 24020003 */ addiu $v0, $zero, 3
/* 1064D8 802E4C58 1062002B */ beq $v1, $v0, .L802E4D08
/* 1064DC 802E4C5C 00000000 */ nop
/* 1064E0 802E4C60 080B935C */ j .L802E4D70
/* 1064E4 802E4C64 00000000 */ nop
.L802E4C68:
/* 1064E8 802E4C68 AE200058 */ sw $zero, 0x58($s1)
/* 1064EC 802E4C6C 14A00057 */ bnez $a1, .L802E4DCC
/* 1064F0 802E4C70 AE20005C */ sw $zero, 0x5c($s1)
/* 1064F4 802E4C74 92020001 */ lbu $v0, 1($s0)
/* 1064F8 802E4C78 24420001 */ addiu $v0, $v0, 1
/* 1064FC 802E4C7C 080B935C */ j .L802E4D70
/* 106500 802E4C80 A2020001 */ sb $v0, 1($s0)
.L802E4C84:
/* 106504 802E4C84 C6200054 */ lwc1 $f0, 0x54($s1)
/* 106508 802E4C88 3C01802F */ lui $at, %hi(D_802EB270)
/* 10650C 802E4C8C D422B270 */ ldc1 $f2, %lo(D_802EB270)($at)
/* 106510 802E4C90 46000021 */ cvt.d.s $f0, $f0
/* 106514 802E4C94 46220000 */ add.d $f0, $f0, $f2
/* 106518 802E4C98 3C013FF0 */ lui $at, 0x3ff0
/* 10651C 802E4C9C 44811800 */ mtc1 $at, $f3
/* 106520 802E4CA0 44801000 */ mtc1 $zero, $f2
/* 106524 802E4CA4 46200020 */ cvt.s.d $f0, $f0
/* 106528 802E4CA8 E6200054 */ swc1 $f0, 0x54($s1)
/* 10652C 802E4CAC 46000021 */ cvt.d.s $f0, $f0
/* 106530 802E4CB0 4620103E */ c.le.d $f2, $f0
/* 106534 802E4CB4 00000000 */ nop
/* 106538 802E4CB8 45000009 */ bc1f .L802E4CE0
/* 10653C 802E4CBC 00000000 */ nop
/* 106540 802E4CC0 3C013F80 */ lui $at, 0x3f80
/* 106544 802E4CC4 44810000 */ mtc1 $at, $f0
/* 106548 802E4CC8 00000000 */ nop
/* 10654C 802E4CCC E6200054 */ swc1 $f0, 0x54($s1)
/* 106550 802E4CD0 92020001 */ lbu $v0, 1($s0)
/* 106554 802E4CD4 A2000002 */ sb $zero, 2($s0)
/* 106558 802E4CD8 24420001 */ addiu $v0, $v0, 1
/* 10655C 802E4CDC A2020001 */ sb $v0, 1($s0)
.L802E4CE0:
/* 106560 802E4CE0 C6200054 */ lwc1 $f0, 0x54($s1)
/* 106564 802E4CE4 46000086 */ mov.s $f2, $f0
/* 106568 802E4CE8 E620005C */ swc1 $f0, 0x5c($s1)
/* 10656C 802E4CEC 080B935C */ j .L802E4D70
/* 106570 802E4CF0 E6220058 */ swc1 $f2, 0x58($s1)
.L802E4CF4:
/* 106574 802E4CF4 0C0B92C4 */ jal entity_HeartBlockContent_set_initial_pos
/* 106578 802E4CF8 0220202D */ daddu $a0, $s1, $zero
/* 10657C 802E4CFC 92020001 */ lbu $v0, 1($s0)
/* 106580 802E4D00 24420001 */ addiu $v0, $v0, 1
/* 106584 802E4D04 A2020001 */ sb $v0, 1($s0)
.L802E4D08:
/* 106588 802E4D08 3C02800A */ lui $v0, %hi(gOverrideFlags)
/* 10658C 802E4D0C 8C42A650 */ lw $v0, %lo(gOverrideFlags)($v0)
/* 106590 802E4D10 14400017 */ bnez $v0, .L802E4D70
/* 106594 802E4D14 00000000 */ nop
/* 106598 802E4D18 92020002 */ lbu $v0, 2($s0)
/* 10659C 802E4D1C 2442FFFF */ addiu $v0, $v0, -1
/* 1065A0 802E4D20 A2020002 */ sb $v0, 2($s0)
/* 1065A4 802E4D24 00021600 */ sll $v0, $v0, 0x18
/* 1065A8 802E4D28 1C400011 */ bgtz $v0, .L802E4D70
/* 1065AC 802E4D2C 24020032 */ addiu $v0, $zero, 0x32
/* 1065B0 802E4D30 9204000A */ lbu $a0, 0xa($s0)
/* 1065B4 802E4D34 3C0141B0 */ lui $at, 0x41b0
/* 1065B8 802E4D38 44810000 */ mtc1 $at, $f0
/* 1065BC 802E4D3C 3C014100 */ lui $at, 0x4100
/* 1065C0 802E4D40 44811000 */ mtc1 $at, $f2
/* 1065C4 802E4D44 A2020002 */ sb $v0, 2($s0)
/* 1065C8 802E4D48 24020004 */ addiu $v0, $zero, 4
/* 1065CC 802E4D4C AFA20018 */ sw $v0, 0x18($sp)
/* 1065D0 802E4D50 24020014 */ addiu $v0, $zero, 0x14
/* 1065D4 802E4D54 AFA2001C */ sw $v0, 0x1c($sp)
/* 1065D8 802E4D58 E7A00010 */ swc1 $f0, 0x10($sp)
/* 1065DC 802E4D5C E7A20014 */ swc1 $f2, 0x14($sp)
/* 1065E0 802E4D60 8E250048 */ lw $a1, 0x48($s1)
/* 1065E4 802E4D64 8E26004C */ lw $a2, 0x4c($s1)
/* 1065E8 802E4D68 0C01C154 */ jal playFX_22
/* 1065EC 802E4D6C 8E270050 */ lw $a3, 0x50($s1)
.L802E4D70:
/* 1065F0 802E4D70 0C04417A */ jal get_entity_by_index
/* 1065F4 802E4D74 92040000 */ lbu $a0, ($s0)
/* 1065F8 802E4D78 0C0B836C */ jal entity_can_collide_with_jumping_player
/* 1065FC 802E4D7C 0040202D */ daddu $a0, $v0, $zero
/* 106600 802E4D80 10400012 */ beqz $v0, .L802E4DCC
/* 106604 802E4D84 00000000 */ nop
/* 106608 802E4D88 0C043F5A */ jal exec_entity_commandlist
/* 10660C 802E4D8C 0220202D */ daddu $a0, $s1, $zero
/* 106610 802E4D90 0C03805E */ jal disable_player_input
/* 106614 802E4D94 00000000 */ nop
/* 106618 802E4D98 3C038011 */ lui $v1, %hi(gPlayerStatus)
/* 10661C 802E4D9C 2463EFC8 */ addiu $v1, $v1, %lo(gPlayerStatus)
/* 106620 802E4DA0 8C620004 */ lw $v0, 4($v1)
/* 106624 802E4DA4 24040001 */ addiu $a0, $zero, 1
/* 106628 802E4DA8 AC600054 */ sw $zero, 0x54($v1)
/* 10662C 802E4DAC 34420200 */ ori $v0, $v0, 0x200
/* 106630 802E4DB0 0C009C22 */ jal set_time_freeze_mode
/* 106634 802E4DB4 AC620004 */ sw $v0, 4($v1)
/* 106638 802E4DB8 3C03800A */ lui $v1, %hi(gOverrideFlags)
/* 10663C 802E4DBC 2463A650 */ addiu $v1, $v1, %lo(gOverrideFlags)
/* 106640 802E4DC0 8C620000 */ lw $v0, ($v1)
/* 106644 802E4DC4 34420040 */ ori $v0, $v0, 0x40
/* 106648 802E4DC8 AC620000 */ sw $v0, ($v1)
.L802E4DCC:
/* 10664C 802E4DCC 8FBF0028 */ lw $ra, 0x28($sp)
/* 106650 802E4DD0 8FB10024 */ lw $s1, 0x24($sp)
/* 106654 802E4DD4 8FB00020 */ lw $s0, 0x20($sp)
/* 106658 802E4DD8 03E00008 */ jr $ra
/* 10665C 802E4DDC 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,13 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel entity_HeartBlockContent_get_previous_yaw
/* 105F90 802E4710 94820024 */ lhu $v0, 0x24($a0)
/* 105F94 802E4714 00451023 */ subu $v0, $v0, $a1
/* 105F98 802E4718 04420001 */ bltzl $v0, .L802E4720
/* 105F9C 802E471C 2442000A */ addiu $v0, $v0, 0xa
.L802E4720:
/* 105FA0 802E4720 00021080 */ sll $v0, $v0, 2
/* 105FA4 802E4724 00821021 */ addu $v0, $a0, $v0
/* 105FA8 802E4728 03E00008 */ jr $ra
/* 105FAC 802E472C C4400028 */ lwc1 $f0, 0x28($v0)

View File

@ -1,16 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802BD100_323A50
/* 323A50 802BD100 2402001A */ addiu $v0, $zero, 0x1a
/* 323A54 802BD104 A48200A8 */ sh $v0, 0xa8($a0)
/* 323A58 802BD108 24020018 */ addiu $v0, $zero, 0x18
/* 323A5C 802BD10C A48200A6 */ sh $v0, 0xa6($a0)
/* 323A60 802BD110 24020011 */ addiu $v0, $zero, 0x11
/* 323A64 802BD114 A08200AA */ sb $v0, 0xaa($a0)
/* 323A68 802BD118 3C01802C */ lui $at, %hi(D_802BE0C4)
/* 323A6C 802BD11C AC20E0C4 */ sw $zero, %lo(D_802BE0C4)($at)
/* 323A70 802BD120 3C01802C */ lui $at, %hi(D_802BE0C0)
/* 323A74 802BD124 AC20E0C0 */ sw $zero, %lo(D_802BE0C0)($at)
/* 323A78 802BD128 03E00008 */ jr $ra
/* 323A7C 802BD12C 00000000 */ nop

View File

@ -1,19 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802BD130_323A80
/* 323A80 802BD130 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 323A84 802BD134 AFBF0014 */ sw $ra, 0x14($sp)
/* 323A88 802BD138 AFB00010 */ sw $s0, 0x10($sp)
/* 323A8C 802BD13C 10A00003 */ beqz $a1, .L802BD14C
/* 323A90 802BD140 8C90014C */ lw $s0, 0x14c($a0)
/* 323A94 802BD144 0C03BB31 */ jal partner_init_get_out
/* 323A98 802BD148 0200202D */ daddu $a0, $s0, $zero
.L802BD14C:
/* 323A9C 802BD14C 0C03BB3A */ jal partner_get_out
/* 323AA0 802BD150 0200202D */ daddu $a0, $s0, $zero
/* 323AA4 802BD154 8FBF0014 */ lw $ra, 0x14($sp)
/* 323AA8 802BD158 8FB00010 */ lw $s0, 0x10($sp)
/* 323AAC 802BD15C 0002102B */ sltu $v0, $zero, $v0
/* 323AB0 802BD160 03E00008 */ jr $ra
/* 323AB4 802BD164 27BD0018 */ addiu $sp, $sp, 0x18