actor decor stuff (#750)

* big func

* this and that

* checkpoint

* more funcs

* enough

* formatting

Co-authored-by: HailSanta <Hail2Santa@gmail.com>
Co-authored-by: Ethan Roseman <ethteck@gmail.com>
This commit is contained in:
HailSanta 2022-08-26 06:13:57 -04:00 committed by GitHub
parent 7467b148d1
commit 51d02cfbf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
59 changed files with 2198 additions and 3943 deletions

View File

@ -168,8 +168,6 @@ typedef struct NpcQuizmoBlur {
/* 0x04 */ char unk_04[0x4];
} NpcQuizmoBlur; // size = 0x8;
typedef u16 Palette16[16]; // size = 0x20
typedef struct Npc {
/* 0x000 */ s32 flags;
/* 0x004 */ void (*onUpdate)(struct Npc*); ///< Run before anything else for this NPC in update_npcs()
@ -225,7 +223,7 @@ typedef struct Npc {
/* 0x0AC */ u8 alpha;
/* 0x0AD */ u8 alpha2; ///< Multiplied with Npc::alpha
/* 0x0AE */ char unk_AE[2];
/* 0x0B0 */ u32** extraAnimList;
/* 0x0B0 */ AnimID** extraAnimList;
/* 0x0B4 */ s8 palSwapType; // 0..4 inclusive
/* 0x0B5 */ s8 palSwapPrevType;
/* 0x0B6 */ s8 dirtyPalettes;
@ -237,8 +235,8 @@ typedef struct Npc {
/* 0x0C1 */ s8 paletteCount;
/* 0x0C2 */ char unk_C2[2];
/* 0x0C4 */ PAL_PTR* spritePaletteList;
/* 0x0C8 */ Palette16 localPaletteData[16];
/* 0x2C8 */ Palette16* localPalettes[16];
/* 0x0C8 */ PAL_BIN localPaletteData[16][16];
/* 0x2C8 */ PAL_PTR* localPalettes[16];
/* 0x308 */ s16 unk_308;
/* 0x30A */ s16 unk_30A;
/* 0x30C */ s16 unk_30C;
@ -801,20 +799,6 @@ typedef struct Camera {
/* 0x556 */ s16 unk_556;
} Camera; // size = 0x558
typedef struct BattleStatusUnkInner {
/* 0x00 */ char unk_00[0x10];
/* 0x10 */ s16 unk_10;
/* 0x12 */ char unk_12[8];
/* 0x1A */ s16 unk_1A;
/* 0x1C */ char unk_1C[8];
/* 0x24 */ s16 unk_24;
} BattleStatusUnkInner; // size = unknown
typedef struct BattleStatusUnk {
/* 0x00 */ char unk_00[0xC];
/* 0x0C */ BattleStatusUnkInner* unk_0C;
} BattleStatusUnk; // size = unknown
typedef struct FGModelData {
/* 0x00 */ char unk_00[0x18];
/* 0x18 */ s32* idList;
@ -947,7 +931,7 @@ typedef struct BattleStatus {
/* 0x433 */ char unk_433;
/* 0x434 */ s32* unk_434;
/* 0x438 */ FGModelData* foregroundModelData;
/* 0x43C */ BattleStatusUnk* unk_43C;
/* 0x43C */ struct EffectInstance* buffEffect;
/* 0x440 */ u8 tattleFlags[28];
/* 0x45C */ char unk_45C[4];
} BattleStatus; // size = 0x460
@ -1627,18 +1611,20 @@ typedef struct DecorationUnk {
/* 0x0E */ s16 unk0E;
} DecorationUnk; // size = 0x10
#define MAX_ACTOR_DECORATIONS 2
typedef struct DecorationTable {
/* 0x000 */ Palette16 unk_00[54];
/* 0x000 */ PAL_BIN copiedPalettes[2][27][16];
/* 0x6C0 */ s8 unk_6C0;
/* 0x6C1 */ s8 unk_6C1;
/* 0x6C2 */ s8 unk_6C2;
/* 0x6C3 */ char unk_6C3[5];
/* 0x6C8 */ s16 unk_6C8;
/* 0x6CA */ u16 unk_6CA;
/* 0x6CC */ s8 unk_6CC;
/* 0x6CD */ s8 numPalettes;
/* 0x6CA */ s16 unk_6CA;
/* 0x6CC */ s8 spriteColorVariations;
/* 0x6CD */ s8 numSpritePalettes;
/* 0x6CE */ char unk_6CE[2];
/* 0x6D0 */ PAL_PTR* palettes;
/* 0x6D0 */ PAL_PTR* spritePalettes;
/* 0x6D4 */ PAL_PTR unk_6D4[27];
/* 0x740 */ s16 unk_740;
/* 0x742 */ s16 unk_742;
@ -1679,13 +1665,14 @@ typedef struct DecorationTable {
/* 0x89C */ u8 rotZ[16];
/* 0x8AC */ s8 effectType; /* 0 = blur, 14 = none? */
/* 0x8AD */ char unk_8AD[3];
/* 0x8B0 */ struct EffectInstance* effects[2];
/* 0x8B8 */ s8 decorationType[2];
/* 0x8BA */ u8 unk_8BA[2];
/* 0x8BC */ s8 unk_8BC[2];
/* 0x8BE */ s16 unk_8BE[2];
/* substruct for decorations? */
/* 0x8B0 */ struct EffectInstance* effect[MAX_ACTOR_DECORATIONS];
/* 0x8B8 */ s8 type[MAX_ACTOR_DECORATIONS];
/* 0x8BA */ u8 changed[MAX_ACTOR_DECORATIONS];
/* 0x8BC */ s8 state[MAX_ACTOR_DECORATIONS];
/* 0x8BE */ s16 stateResetTimer[MAX_ACTOR_DECORATIONS];
/* 0x8C2 */ char unk_8C0[4];
/* 0x8C6 */ DecorationUnk unk_8C6[2];
/* 0x8C6 */ DecorationUnk unk_8C6[MAX_ACTOR_DECORATIONS];
} DecorationTable; // size = 0x8E8
typedef struct PlayerPathElement {
@ -1852,11 +1839,11 @@ typedef struct Actor {
/* 0x215 */ s8 stoneDuration;
/* 0x216 */ s8 koStatus; /* 0D = yes */
/* 0x217 */ s8 koDuration;
/* 0x218 */ s8 transStatus; /* 0E = yes */
/* 0x219 */ s8 transDuration;
/* 0x218 */ s8 transparentStatus; /* 0E = yes */
/* 0x219 */ s8 transparentDuration;
/* 0x21A */ char unk_21A[2];
/* 0x21C */ s8 status;
/* 0x21D */ s8 unk_21D;
/* 0x21D */ s8 disableDismissTimer;
/* 0x21E */ s16 unk_21E;
/* 0x220 */ s8 isGlowing; // not the case for goombario
/* 0x221 */ s8 attackBoost;
@ -1870,7 +1857,7 @@ typedef struct Actor {
/* 0x40D */ s8 targetIndexList[24]; /* into targetData */
/* 0x425 */ s8 selectedTargetIndex; /* into target index list */
/* 0x426 */ s8 targetPartIndex;
/* 0x427 */ char unk_427;
/* 0x427 */ char unk_427[1];
/* 0x428 */ s16 targetActorID;
/* 0x42A */ char unk_42A[2];
/* 0x42C */ union {
@ -1880,8 +1867,8 @@ typedef struct Actor {
/* 0x430 */ f32 shadowScale; /* = actor size / 24.0 */
/* 0x434 */ s16 renderMode; /* initially 0xD, set to 0x22 if any part is transparent */
/* 0x436 */ s16 hudElementDataIndex;
/* 0x438 */ s32 unk_438[2]; /* ??? see FUN_80253974 */
/* 0x440 */ struct EffectInstance* debuffEffect;
/* 0x438 */ s32 loopingSoundID[2];
/* 0x440 */ struct EffectInstance* disableEffect;
} Actor; // size = 0x444
typedef struct BackgroundHeader {
@ -2269,7 +2256,7 @@ typedef struct ActionCommandStatus {
/* 0x61 */ s8 unk_61;
/* 0x62 */ s8 unk_62;
/* 0x63 */ s8 unk_63;
/* 0x64 */ s16 unk_64;
/* 0x64 */ s16 easyVersion;
/* 0x66 */ s16 unk_66;
/* 0x68 */ s16 unk_68;
/* 0x6A */ s16 unk_6A;
@ -2284,21 +2271,15 @@ typedef struct ActionCommandStatus {
typedef struct Message {
/* 0x00 */ s32 unk_00;
/* 0x04 */ s32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ f32 unk_1C;
/* 0x08 */ Vec3f accel;
/* 0x14 */ Vec3f vel;
/* 0x20 */ s32 unk_20;
/* 0x24 */ s32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ f32 unk_2C;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ f32 unk_38;
/* 0x3C */ f32 unk_3C;
/* 0x40 */ f32 unk_40;
/* 0x28 */ f32 rotZ;
/* 0x2C */ f32 rotVelZ;
/* 0x30 */ f32 rotY;
/* 0x34 */ f32 scale;
/* 0x38 */ Vec3f pos;
/* 0x44 */ s32 unk_44;
/* 0x48 */ f32 unk_48;
} Message; // size = 0x4C
@ -2308,8 +2289,8 @@ typedef void (*PopupMessageCallback)(void* popup);
typedef struct PopupMessage {
/* 0x00 */ s32 unk_00;
/* 0x04 */ PopupMessageCallback updateFunc;
/* 0x08 */ PopupMessageCallback unk_08;
/* 0x0C */ PopupMessageCallback drawFunc;
/* 0x08 */ PopupMessageCallback renderWorldFunc;
/* 0x0C */ PopupMessageCallback renderUIFunc;
/* 0x10 */ s16 active;
/* 0x12 */ s16 messageIndex;
/* 0x14 */ s16 duration;

View File

@ -615,7 +615,7 @@ typedef struct RadialShimmerFXData {
typedef struct EndingDecalsFXData {
/* 0x00 */ s32 unk_00;
/* 0x04 */ char unk_04[0xC];
/* 0x04 */ Vec3f pos;
/* 0x10 */ f32 unk_10;
/* 0x14 */ char todo[0];
} EndingDecalsFXData; // size = 0x??
@ -986,7 +986,9 @@ typedef struct SquirtFXData {
} SquirtFXData; // size = unknown
typedef struct WaterBlockFXData {
/* 0x00 */ char todo[0];
/* 0x00 */ char unk_00[4];
/* 0x04 */ Vec3f pos;
/* 0x10 */ char todo[0];
} WaterBlockFXData; // size = unknown
typedef struct WaterfallFXData {
@ -1302,9 +1304,27 @@ typedef struct BreakingJunkFXData {
/* 0x3A */ s16 envA;
} BreakingJunkFXData; // size = unknown
enum {
FX_BUFF_DATA_WATER_BLOCK = 0,
FX_BUFF_DATA_CLOUD_NINE = 1,
FX_BUFF_DATA_TURBO_CHARGE = 2
};
typedef struct BuffData {
/* 0x00 */ s16 alpha;
/* 0x02 */ s16 turnsDisplay;
/* 0x04 */ s16 turnsLeft;
/* 0x06 */ s16 state;
/* 0x08 */ s16 stateTimer;
} BuffData;
typedef struct PartnerBuffFXData {
/* 0x00 */ char todo[0];
} PartnerBuffFXData; // size = unknown
/* 0x00 */ s16 useRandomValues;
/* 0x02 */ s16 unk_02;
/* 0x04 */ s32 timeLeft;
/* 0x08 */ s32 lifeTime;
/* 0x0C */ BuffData unk_0C[3];
} PartnerBuffFXData; // size = 0x2C
typedef struct QuizmoAssistantFXData {
/* 0x00 */ char unk_00[0x4];

View File

@ -155,7 +155,7 @@ FX_MAIN(spirit_card_main);
FX_MAIN(lil_oink_main);
FX_MAIN(something_rotating_main);
EffectInstance* breaking_junk_main(s32, f32, f32, f32, f32, s32);
FX_MAIN(partner_buff_main);
EffectInstance* partner_buff_main(s32, f32, f32, f32, f32, s32);
FX_MAIN(quizmo_assistant_main);
FX_MAIN(ice_pillar_main);
EffectInstance* sun_main(s32, f32, f32, f32, f32, s32);

View File

@ -2381,7 +2381,7 @@ enum ActorFlags {
ACTOR_FLAG_NO_DMG_POPUP = 0x02000000, ///< Hide damage popup.
ACTOR_FLAG_4000000 = 0x04000000,
ACTOR_FLAG_8000000 = 0x08000000,
ACTOR_FLAG_10000000 = 0x10000000,
ACTOR_FLAG_BLUR_ENABLED = 0x10000000,
ACTOR_FLAG_20000000 = 0x20000000,
ACTOR_FLAG_40000000 = 0x40000000,
ACTOR_FLAG_80000000 = 0x80000000,

View File

@ -122,14 +122,14 @@ void update_hero_shadows(void);
// append gfx funcs
void appendGfx_background_texture(void);
void func_80257B28(void*);
void func_8025595C(void*);
void func_80257B68(void*);
void func_80257B48(void*);
void func_8025599C(void*);
void appendGfx_enemy_actor(void*);
void appendGfx_enemy_actor_blur(void*);
void appendGfx_enemy_actor_decorations(void*);
void appendGfx_partner_actor(void*);
void appendGfx_partner_actor_blur(void*);
void func_80257B88(void*);
void func_80257DA4(void*);
void func_80254C50(Actor*);
void appendGfx_player_actor(void*);
void appendGfx_player_actor_blur(Actor*);
void func_80258E14(void*);
void func_80254610(Actor*);
@ -376,8 +376,8 @@ void func_80263E08(Actor*, ActorPart*, s32);
void func_80266978(void);
void func_80266B14(void);
s32 btl_cam_is_moving_done(void);
void func_8024EE48(void);
void func_8024EEA8(void);
void btl_popup_messages_update(void);
void btl_popup_messages_draw_world_geometry(void);
void func_80255FD8(void);
void func_80266EE8(Actor* actor, s32 arg1);
@ -626,7 +626,7 @@ void play_movement_dust_effects(s32 var0, f32 xPos, f32 yPos, f32 zPos, f32 angl
void func_80138D88(s32, s32, s32, s32, f32);
void func_8013A4D0(void);
void btl_draw_popup_messages(void);
void btl_popup_messages_draw_ui(void);
void btl_cam_set_target_pos(f32, f32, f32);
void btl_cam_unfreeze(void);
@ -861,7 +861,7 @@ void load_model_animator_tree(s32, StaticAnimatorNode**);
s32 inflict_partner_ko(Actor* target, s32 statusTypeKey, s32 duration);
s32 get_defense(Actor* actor, s32* defenseTable, s32 elementFlags);
void func_8024EDC0(void);
void btl_popup_messages_init(void);
void remove_all_effects(void);
void update_effects(void);

View File

@ -210,11 +210,11 @@ void btl_state_update_begin_turn(void) {
battleStatus->merleeAttackBoost = 0;
battleStatus->merleeDefenseBoost = 0;
battleStatus->flags2 &= ~BS_FLAGS2_1000000;
player->unk_21D = 0;
player->disableDismissTimer = 0;
player->flags |= ACTOR_FLAG_8000000 | ACTOR_FLAG_4000000;
if (partner != NULL) {
player->flags |= ACTOR_FLAG_8000000 | ACTOR_FLAG_4000000;
partner->unk_21D = 0;
partner->disableDismissTimer = 0;
}
if (battleStatus->hustleTurns != 0) {
@ -422,7 +422,7 @@ void btl_state_update_begin_player_turn(void) {
if (gBattleState2 == BATTLE_STATE2_PLAYER_DEFEATED && (battleStatus->unk_8C == 0)) {
if (battleStatus->waterBlockTurnsLeft != 0) {
battleStatus->waterBlockTurnsLeft--;
battleStatus->unk_43C->unk_0C->unk_10 = battleStatus->waterBlockTurnsLeft;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_WATER_BLOCK].unk_04 = battleStatus->waterBlockTurnsLeft;
if (battleStatus->waterBlockTurnsLeft <= 0) {
battleStatus->waterBlockEffect->flags |= 0x10;
fx_water_block(1, player->currentPos.x, player->currentPos.y + 18.0f, player->currentPos.z + 5.0f, 1.5f, 10);
@ -448,7 +448,7 @@ void btl_state_update_begin_player_turn(void) {
case BATTLE_STATE2_UNK_B:
if (battleStatus->cloudNineTurnsLeft != 0) {
battleStatus->cloudNineTurnsLeft--;
battleStatus->unk_43C->unk_0C->unk_1A = battleStatus->cloudNineTurnsLeft;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_CLOUD_NINE].unk_04 = battleStatus->cloudNineTurnsLeft;
if (battleStatus->cloudNineTurnsLeft <= 0) {
remove_effect(battleStatus->cloudNineEffect);
@ -477,7 +477,7 @@ void btl_state_update_begin_player_turn(void) {
gBattleState2 = BATTLE_STATE2_UNK_15;
} else {
battleStatus->turboChargeTurnsLeft--;
battleStatus->unk_43C->unk_0C->unk_24 = battleStatus->turboChargeTurnsLeft;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_TURBO_CHARGE].unk_04 = battleStatus->turboChargeTurnsLeft;
if (battleStatus->turboChargeTurnsLeft <= 0) {
btl_show_battle_message(0x2B, 60);
gBattleState2 = BATTLE_STATE2_UNK_10;
@ -593,11 +593,11 @@ void btl_state_update_begin_player_turn(void) {
player->koDuration = debuffDuration;
if ((s8) debuffDuration > 0) {
player->koStatus = 0xD;
player->debuffEffect->data.disableX->unk_3C = player->koDuration;
player->disableEffect->data.disableX->unk_3C = player->koDuration;
} else if (koDuration != (s8) debuffDuration) {
player->koStatus = 0;
player->koDuration = 0;
player->debuffEffect->data.disableX->unk_3C = 0;
player->disableEffect->data.disableX->unk_3C = 0;
}
}
@ -775,11 +775,11 @@ void btl_state_update_begin_partner_turn(void) {
D_8029F254 = 1;
D_8029F258 = 20;
if (partner->koDuration > 0) {
partner->debuffEffect->data.disableX->unk_3C = partner->koDuration;
partner->disableEffect->data.disableX->unk_3C = partner->koDuration;
} else {
partner->koStatus = 0;
dispatch_event_partner(EVENT_RECOVER_PARTNER);
partner->debuffEffect->data.disableX->unk_3C = 0;
partner->disableEffect->data.disableX->unk_3C = 0;
gBattleStatus.flags2 |= BS_FLAGS2_8;
}
}
@ -985,10 +985,10 @@ void btl_state_update_victory(void) {
player->debuff = 0;
player->staticStatus = 0;
player->stoneStatus = 0;
player->transStatus = 0;
player->transparentStatus = 0;
player->koStatus = 0;
player->koDuration = 0;
player->debuffEffect->data.disableX->unk_3C = 0;
player->disableEffect->data.disableX->unk_3C = 0;
if (partner != NULL) {
if (partner->koStatus == STATUS_DAZE) {
@ -998,10 +998,10 @@ void btl_state_update_victory(void) {
partner->debuff = 0;
partner->staticStatus = 0;
partner->stoneStatus = 0;
partner->transStatus = 0;
partner->transparentStatus = 0;
partner->koStatus = 0;
partner->koDuration = 0;
partner->debuffEffect->data.disableX->unk_3C = 0;
partner->disableEffect->data.disableX->unk_3C = 0;
}
break;
case BATTLE_STATE2_PLAYER_DEFEATED:
@ -1155,10 +1155,10 @@ void btl_state_update_end_training_battle(void) {
player->debuff = 0;
player->staticStatus = 0;
player->stoneStatus = 0;
player->transStatus = 0;
player->transparentStatus = 0;
player->koStatus = 0;
player->koDuration = 0;
player->debuffEffect->data.disableX->unk_3C = 0;
player->disableEffect->data.disableX->unk_3C = 0;
if (partner != NULL) {
if (partner->koStatus == STATUS_DAZE) {
dispatch_event_partner(EVENT_RECOVER_PARTNER);
@ -1167,10 +1167,10 @@ void btl_state_update_end_training_battle(void) {
partner->debuff = 0;
partner->staticStatus = 0;
partner->stoneStatus = 0;
partner->transStatus = 0;
partner->transparentStatus = 0;
partner->koStatus = 0;
partner->koDuration = 0;
partner->debuffEffect->data.disableX->unk_3C = 0;
partner->disableEffect->data.disableX->unk_3C = 0;
}
break;
case BATTLE_STATE2_PLAYER_DEFEATED:
@ -1575,7 +1575,7 @@ void btl_state_update_defeat(void) {
remove_status_debuff(player->hudElementDataIndex);
player->koStatus = 0;
player->koDuration = 0;
player->debuffEffect->data.disableX->unk_3C = 0;
player->disableEffect->data.disableX->unk_3C = 0;
}
btl_cam_use_preset(BTL_CAM_PRESET_25);
@ -1911,7 +1911,7 @@ void btl_state_update_partner_move(void) {
btl_cam_use_preset(BTL_CAM_PRESET_54);
btl_show_battle_message(0x23, 60);
partner->status = 0;
partner->unk_21D = 0;
partner->disableDismissTimer = 0;
gBattleState2 = BATTLE_STATE2_UNK_B;
partner->flags |= ACTOR_FLAG_8000000;
} else {

View File

@ -198,7 +198,7 @@ void initialize_battle(void) {
}
create_generic_entity_world(NULL, func_8023ED5C);
func_8024EDC0();
btl_popup_messages_init();
func_80268E88();
set_windows_visible(WINDOW_GROUP_1);
D_8029EFBC = hud_element_create(&HES_HPBar);
@ -409,7 +409,7 @@ void btl_update(void) {
func_80266684();
func_80266978();
func_80266B14();
func_8024EE48();
btl_popup_messages_update();
update_actor_shadows();
if (battleStatus->unk_432 != -2) {
@ -608,7 +608,7 @@ void btl_draw_ui(void) {
break;
}
}
btl_draw_popup_messages();
btl_popup_messages_draw_ui();
draw_status_ui();
}
@ -620,7 +620,7 @@ void func_8023ED5C(void) {
s32 i;
if (gBattleState != BATTLE_STATE_0) {
func_8024EEA8();
btl_popup_messages_draw_world_geometry();
if (battleStatus->initBattleCallback != NULL) {
battleStatus->initBattleCallback();
}
@ -633,14 +633,14 @@ void func_8023ED5C(void) {
if (actor != NULL && !(actor->flags & ACTOR_FLAG_DISABLED)) {
renderTaskPtr->appendGfxArg = (void*)i;
renderTaskPtr->appendGfx = func_80257B28;
renderTaskPtr->appendGfx = appendGfx_enemy_actor;
renderTaskPtr->distance = actor->currentPos.z;
renderTaskPtr->renderMode = actor->renderMode;
queue_render_task(renderTaskPtr);
if (actor->flags & ACTOR_FLAG_10000000) {
if (actor->flags & ACTOR_FLAG_BLUR_ENABLED) {
renderTaskPtr->appendGfxArg = actor;
renderTaskPtr->appendGfx = func_8025595C;
renderTaskPtr->appendGfx = appendGfx_enemy_actor_blur;
renderTaskPtr->distance = actor->currentPos.z;
renderTaskPtr->renderMode = RENDER_MODE_SURFACE_XLU_LAYER3;
queue_render_task(renderTaskPtr);
@ -648,7 +648,7 @@ void func_8023ED5C(void) {
if (battleStatus->unk_92 & 1) {
renderTaskPtr->appendGfxArg = actor;
renderTaskPtr->appendGfx = func_80257B68;
renderTaskPtr->appendGfx = appendGfx_enemy_actor_decorations;
renderTaskPtr->distance = actor->currentPos.z;
renderTaskPtr->renderMode = actor->renderMode;
queue_render_task(renderTaskPtr);
@ -659,14 +659,14 @@ void func_8023ED5C(void) {
actor = battleStatus->partnerActor;
if (actor != NULL && !(actor->flags & ACTOR_FLAG_DISABLED)) {
renderTaskPtr->appendGfxArg = NULL;
renderTaskPtr->appendGfx = func_80257B48;
renderTaskPtr->appendGfx = appendGfx_partner_actor;
renderTaskPtr->distance = actor->currentPos.z;
renderTaskPtr->renderMode = actor->renderMode;
queue_render_task(renderTaskPtr);
if (actor->flags & ACTOR_FLAG_10000000) {
if (actor->flags & ACTOR_FLAG_BLUR_ENABLED) {
renderTaskPtr->appendGfxArg = actor;
renderTaskPtr->appendGfx = func_8025599C;
renderTaskPtr->appendGfx = appendGfx_partner_actor_blur;
renderTaskPtr->distance = actor->currentPos.z;
renderTaskPtr->renderMode = RENDER_MODE_SURFACE_XLU_LAYER3;
queue_render_task(renderTaskPtr);
@ -684,14 +684,14 @@ void func_8023ED5C(void) {
actor = battleStatus->playerActor;
if (actor != NULL && !(actor->flags & ACTOR_FLAG_DISABLED)) {
renderTaskPtr->appendGfxArg = NULL;
renderTaskPtr->appendGfx = func_80257DA4;
renderTaskPtr->appendGfx = appendGfx_player_actor;
renderTaskPtr->distance = actor->currentPos.z;
renderTaskPtr->renderMode = actor->renderMode;
queue_render_task(renderTaskPtr);
if (actor->flags & ACTOR_FLAG_10000000) {
if (actor->flags & ACTOR_FLAG_BLUR_ENABLED) {
renderTaskPtr->appendGfxArg = actor;
renderTaskPtr->appendGfx = func_80254C50;
renderTaskPtr->appendGfx = appendGfx_player_actor_blur;
renderTaskPtr->distance = actor->currentPos.z;
renderTaskPtr->renderMode = RENDER_MODE_SURFACE_XLU_LAYER3;
queue_render_task(renderTaskPtr);
@ -1027,7 +1027,7 @@ void btl_delete_actor(Actor* actor) {
delete_shadow(actor->shadow.id);
remove_all_status_icons(actor->hudElementDataIndex);
remove_effect(actor->debuffEffect);
remove_effect(actor->disableEffect);
if (actor->attackResultEffect != NULL) {
actor->attackResultEffect->data.attackResultText->unk_24 = 0;
@ -1070,7 +1070,7 @@ void btl_delete_player_actor(Actor* player) {
delete_shadow(player->shadow.id);
remove_all_status_icons(player->hudElementDataIndex);
remove_effect(player->debuffEffect);
remove_effect(player->disableEffect);
if (player->attackResultEffect != NULL) {
player->attackResultEffect->data.attackResultText->unk_24 = 0;

View File

@ -1170,7 +1170,7 @@ void func_8024F768(void* data);
void func_8024FB3C(void* popup);
void btl_show_message_popup(void* popup);
void func_8024EDC0(void) {
void btl_popup_messages_init(void) {
s32 i;
for (i = 0; i < ARRAY_COUNT(popupMessages); i++) {
@ -1180,7 +1180,7 @@ void func_8024EDC0(void) {
}
}
void func_8024EDEC(void) {
void btl_popup_messages_delete(void) {
s32 i;
for (i = 0; i < ARRAY_COUNT(popupMessages); i++) {
@ -1193,7 +1193,7 @@ void func_8024EDEC(void) {
}
}
void func_8024EE48(void) {
void btl_popup_messages_update(void) {
s32 i;
for (i = 0; i < ARRAY_COUNT(popupMessages); i++) {
@ -1204,24 +1204,24 @@ void func_8024EE48(void) {
}
}
void func_8024EEA8(void) {
void btl_popup_messages_draw_world_geometry(void) {
s32 i;
for (i = 0; i < ARRAY_COUNT(popupMessages); i++) {
PopupMessage* popup = &popupMessages[i];
if (popup->active && popup->unk_08 != NULL) {
popup->unk_08(popup);
if (popup->active && popup->renderWorldFunc != NULL) {
popup->renderWorldFunc(popup);
}
}
}
void btl_draw_popup_messages(void) {
void btl_popup_messages_draw_ui(void) {
s32 i;
for (i = 0; i < ARRAY_COUNT(popupMessages); i++) {
PopupMessage* popup = &popupMessages[i];
if (popup->active && popup->drawFunc != NULL) {
popup->drawFunc(popup);
if (popup->active && popup->renderUIFunc != NULL) {
popup->renderUIFunc(popup);
}
}
}
@ -1298,9 +1298,9 @@ void func_8024EFE0(f32 x, f32 y, f32 z, s32 numMessages, s32 arg4, s32 arg5) {
battleStatus->unk_90 = 0;
popup->updateFunc = func_8024F394;
popup->unk_08 = func_8024F5AC;
popup->renderWorldFunc = func_8024F5AC;
popup->unk_00 = 0;
popup->drawFunc = NULL;
popup->renderUIFunc = NULL;
popup->messageIndex = 1;
popup->active |= 0x10;
message = popup->message = heap_malloc(numMessages * sizeof(*popup->message));
@ -1310,11 +1310,11 @@ void func_8024EFE0(f32 x, f32 y, f32 z, s32 numMessages, s32 arg4, s32 arg5) {
sp10 = &D_80283744[numMessages];
message->unk_00 = 1;
message->unk_04 = load_entity_model(*sp10);
set_entity_model_flags(message->unk_04, 0x20);
set_entity_model_flags(message->unk_04, ENTITY_MODEL_FLAGS_HIDDEN);
bind_entity_model_setupGfx(message->unk_04, message, func_8024F768);
message->unk_38 = x;
message->unk_3C = y;
message->unk_40 = z;
message->pos.x = x;
message->pos.y = y;
message->pos.z = z;
arg5mod8 = arg5 % 8;
arg5++;
@ -1324,18 +1324,18 @@ void func_8024EFE0(f32 x, f32 y, f32 z, s32 numMessages, s32 arg4, s32 arg5) {
f1 = &D_802835DC[arg5mod8 * 3];
f2 = &D_802835DC[arg5mod8 * 3 + one];
f3 = &D_802835DC[arg5mod8 * 3 + two];
message->unk_14 = 2.0 * *f1 * sign * var_f20;
message->unk_18 = 2.0 * *f2 * var_f20;
message->unk_1C = 2.0 * *f3 * var_f20;
message->unk_08 = *f1 * sign * var_f20;
message->unk_0C = *f2 * var_f20;
message->unk_10 = *f3 * var_f20;
message->vel.x = 2.0 * *f1 * sign * var_f20;
message->vel.y = 2.0 * *f2 * var_f20;
message->vel.z = 2.0 * *f3 * var_f20;
message->accel.x = *f1 * sign * var_f20;
message->accel.y = *f2 * var_f20;
message->accel.z = *f3 * var_f20;
iMod8 = (i % 8);
message->unk_34 = D_80283690[iMod8 * 3] * var_f22;
message->unk_28 = 0;
message->unk_2C = sign * 107;
message->unk_30 = clamp_angle(180.0f - gCameras[CAM_BATTLE].currentYaw);
message->scale = D_80283690[iMod8 * 3] * var_f22;
message->rotZ = 0;
message->rotVelZ = sign * 107;
message->rotY = clamp_angle(180.0f - gCameras[CAM_BATTLE].currentYaw);
message->unk_20 = 14;
message->unk_24 = arg4;
message->unk_44 = 240;
@ -1368,21 +1368,21 @@ void func_8024F394(void* data) {
} else {
exec_entity_model_commandlist(modelIdx);
if (message->unk_20 >= 0) {
message->unk_38 += message->unk_14;
message->unk_3C += message->unk_18;
message->unk_40 += message->unk_1C;
message->pos.x += message->vel.x;
message->pos.y += message->vel.y;
message->pos.z += message->vel.z;
}
message->unk_30 = clamp_angle(180.0f - gCameras[CAM_BATTLE].currentYaw);
message->unk_28 += message->unk_2C;
message->unk_28 = clamp_angle(message->unk_28);
message->unk_2C *= 0.8;
message->rotY = clamp_angle(180.0f - gCameras[CAM_BATTLE].currentYaw);
message->rotZ += message->rotVelZ;
message->rotZ = clamp_angle(message->rotZ);
message->rotVelZ *= 0.8;
if (message->unk_20 < 10) {
message->unk_08 *= 0.5;
message->unk_0C *= 0.5;
message->unk_10 *= 0.5;
message->unk_14 = message->unk_08;
message->unk_18 = message->unk_0C;
message->unk_1C = message->unk_10;
message->accel.x *= 0.5;
message->accel.y *= 0.5;
message->accel.z *= 0.5;
message->vel.x = message->accel.x;
message->vel.y = message->accel.y;
message->vel.z = message->accel.z;
}
message->unk_20--;
@ -1408,13 +1408,13 @@ void func_8024F5AC(void* data) {
PopupMessage* popup = data;
Message* message = popup->message;
Matrix4f sp18;
Matrix4f sp58;
Matrix4f sp98;
Matrix4f spD8;
Matrix4f mtxRotX;
Matrix4f mtxRotY;
Matrix4f mtxRotZ;
Matrix4f sp118;
Matrix4f sp158;
Matrix4f sp198;
Matrix4f sp1D8;
Matrix4f mtxScale;
Mtx sp218;
s32 i;
@ -1425,14 +1425,14 @@ void func_8024F5AC(void* data) {
} else {
s32 modelIdx = message->unk_04;
guTranslateF(sp18, message->unk_38, message->unk_3C, message->unk_40);
guRotateF(sp58, 0.0f, 1.0f, 0.0f, 0.0f);
guRotateF(sp98, message->unk_30, 0.0f, 1.0f, 0.0f);
guRotateF(spD8, message->unk_28, 0.0f, 0.0f, 1.0f);
guScaleF(sp1D8, message->unk_34, message->unk_34, message->unk_34);
guMtxCatF(spD8, sp58, sp158);
guMtxCatF(sp158, sp98, sp118);
guMtxCatF(sp1D8, sp118, sp158);
guTranslateF(sp18, message->pos.x, message->pos.y, message->pos.z);
guRotateF(mtxRotX, 0.0f, 1.0f, 0.0f, 0.0f);
guRotateF(mtxRotY, message->rotY, 0.0f, 1.0f, 0.0f);
guRotateF(mtxRotZ, message->rotZ, 0.0f, 0.0f, 1.0f);
guScaleF(mtxScale, message->scale, message->scale, message->scale);
guMtxCatF(mtxRotZ, mtxRotX, sp158);
guMtxCatF(sp158, mtxRotY, sp118);
guMtxCatF(mtxScale, sp118, sp158);
guMtxCatF(sp158, sp18, sp198);
guMtxF2L(sp198, &sp218);
draw_entity_model_A(modelIdx, &sp218);
@ -1443,12 +1443,12 @@ void func_8024F5AC(void* data) {
void func_8024F768(void* data) {
Message* message = data;
s32 var_a3 = message->unk_44;
s32 alphaAmt = message->unk_44;
if (var_a3 > 0xA) {
var_a3 = 0xA;
if (alphaAmt > 10) {
alphaAmt = 10;
}
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, (var_a3 * 255) / 10);
gDPSetPrimColor(gMasterGfxPos++, 0, 0, 0, 0, 0, (alphaAmt * 255) / 10);
}
void func_8024F7C8(void) {
@ -1495,9 +1495,9 @@ void btl_show_battle_message(s32 messageIndex, s32 duration) {
if (popup != NULL) {
popup->updateFunc = func_8024FB3C;
popup->drawFunc = btl_show_message_popup;
popup->renderUIFunc = btl_show_message_popup;
popup->unk_00 = 0;
popup->unk_08 = NULL;
popup->renderWorldFunc = NULL;
popup->messageIndex = messageIndex;
popup->duration = duration;
popup->unk_16 = 0;
@ -1517,9 +1517,9 @@ void btl_show_variable_battle_message(s32 messageIndex, s32 duration, s32 varVal
if (popup != NULL) {
popup->updateFunc = func_8024FB3C;
popup->drawFunc = btl_show_message_popup;
popup->renderUIFunc = btl_show_message_popup;
popup->unk_00 = 0;
popup->unk_08 = NULL;
popup->renderWorldFunc = NULL;
popup->messageIndex = messageIndex;
popup->duration = duration;
popup->unk_16 = 0;

View File

@ -22,7 +22,7 @@ s32 calc_item_check_hit(void) {
ASSERT(actorPart != NULL);
if (!(actorPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY)) {
if (actor->transStatus == STATUS_TRANSPARENT) {
if (actor->transparentStatus == STATUS_TRANSPARENT) {
return HIT_RESULT_MISS;
}
if (actor->stoneStatus == STATUS_STONE) {
@ -107,7 +107,7 @@ s32 calc_item_damage_enemy(void) {
if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_REMOVE_BUFFS)) {
if ((targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY) ||
((target->transStatus == STATUS_TRANSPARENT) || ((targetPart->eventFlags & ACTOR_EVENT_FLAG_800) && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE))))
((target->transparentStatus == STATUS_TRANSPARENT) || ((targetPart->eventFlags & ACTOR_EVENT_FLAG_800) && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE))))
{
return 6;
}
@ -227,7 +227,7 @@ s32 calc_item_damage_enemy(void) {
if (battleStatus->currentAttackElement & DAMAGE_TYPE_REMOVE_BUFFS) {
if (gBattleStatus.flags1 & 0x20) {
if ((target->attackBoost > 0 || target->defenseBoost > 0) ||
((target->staticStatus == 0 && target->transStatus != 0) || target->staticStatus != 0))
((target->staticStatus == 0 && target->transparentStatus != 0) || target->staticStatus != 0))
{
target->attackBoost = 0;
target->defenseBoost = 0;
@ -238,9 +238,9 @@ s32 calc_item_damage_enemy(void) {
target->staticDuration = 0;
remove_status_static(target->hudElementDataIndex);
}
if (target->transStatus != 0) {
target->transStatus = 0;
target->transDuration = 0;
if (target->transparentStatus != 0) {
target->transparentStatus = 0;
target->transparentDuration = 0;
remove_status_transparent(target->hudElementDataIndex);
}
wasStatusInflicted = TRUE;

View File

@ -326,7 +326,7 @@ ApiStatus PlayLoopingSoundAtActor(Evt* script, s32 isInitialCall) {
}
actor = get_actor(actorID);
actor->unk_438[idx] = soundID;
actor->loopingSoundID[idx] = soundID;
sfx_play_sound_at_position(soundID, 0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
return ApiStatus_DONE2;
@ -344,12 +344,12 @@ ApiStatus StopLoopingSoundAtActor(Evt* script, s32 isInitialCall) {
actor = get_actor(actorID);
if (actor->unk_438[idx] == 0) {
if (actor->loopingSoundID[idx] == 0) {
return ApiStatus_DONE2;
}
sfx_stop_sound(actor->unk_438[idx]);
actor->unk_438[idx] = 0;
sfx_stop_sound(actor->loopingSoundID[idx]);
actor->loopingSoundID[idx] = 0;
return ApiStatus_DONE2;
}

File diff suppressed because it is too large Load Diff

View File

@ -858,11 +858,11 @@ void load_player_actor(void) {
player->stoneDuration = 0;
player->koStatus = 0;
player->koDuration = 0;
player->transStatus = 0;
player->transDuration = 0;
player->transparentStatus = 0;
player->transparentDuration = 0;
player->isGlowing = 0;
player->unk_21E = 0;
player->unk_21D = 0;
player->disableDismissTimer = 0;
player->attackBoost = 0;
player->defenseBoost = 0;
player->chillOutAmount = 0;
@ -877,8 +877,8 @@ void load_player_actor(void) {
player->actorTypeData1b[0] = bActorSoundTable[player->actorType].delay[0];
player->actorTypeData1b[1] = bActorSoundTable[player->actorType].delay[1];
for (i = 0; i < ARRAY_COUNT(player->unk_438); i++) {
player->unk_438[i] = 0;
for (i = 0; i < ARRAY_COUNT(player->loopingSoundID); i++) {
player->loopingSoundID[i] = 0;
}
part = heap_malloc(sizeof(*part));
@ -972,9 +972,9 @@ void load_player_actor(void) {
decorationTable->unk_7DB = 0;
decorationTable->effectType = 0;
for (j = 0; j < ARRAY_COUNT(decorationTable->effects); j++) {
decorationTable->effects[j] = NULL;
decorationTable->decorationType[j] = 0;
for (j = 0; j < ARRAY_COUNT(decorationTable->effect); j++) {
decorationTable->effect[j] = NULL;
decorationTable->type[j] = 0;
}
}
@ -984,7 +984,7 @@ void load_player_actor(void) {
player->shadow.id = create_shadow_type(0, player->currentPos.x, player->currentPos.y, player->currentPos.z);
player->shadowScale = player->size.x / 24.0;
player->hudElementDataIndex = create_status_icon_set();
player->debuffEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
player->disableEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
player->icePillarEffect = NULL;
if (is_ability_active(ABILITY_ZAP_TAP)) {
@ -1097,11 +1097,11 @@ void load_partner_actor(void) {
partnerActor->stoneDuration = 0;
partnerActor->koStatus = 0;
partnerActor->koDuration = 0;
partnerActor->transStatus = 0;
partnerActor->transDuration = 0;
partnerActor->transparentStatus = 0;
partnerActor->transparentDuration = 0;
partnerActor->isGlowing = 0;
partnerActor->unk_21E = 0;
partnerActor->unk_21D = 0;
partnerActor->disableDismissTimer = 0;
partnerActor->attackBoost = 0;
partnerActor->defenseBoost = 0;
partnerActor->chillOutAmount = 0;
@ -1116,8 +1116,8 @@ void load_partner_actor(void) {
partnerActor->actorTypeData1b[0] = bActorSoundTable[partnerActor->actorType].delay[0];
partnerActor->actorTypeData1b[1] = bActorSoundTable[partnerActor->actorType].delay[1];
for (i2 = 0; i2 < ARRAY_COUNT(partnerActor->unk_438); i2++) {
partnerActor->unk_438[i2] = 0;
for (i2 = 0; i2 < ARRAY_COUNT(partnerActor->loopingSoundID); i2++) {
partnerActor->loopingSoundID[i2] = 0;
}
part = heap_malloc(sizeof(*part));
@ -1201,9 +1201,9 @@ void load_partner_actor(void) {
decorationTable->unk_7DB = 0;
decorationTable->effectType = 0;
for (j = 0; j < ARRAY_COUNT(decorationTable->effects); j++) {
decorationTable->effects[j] = NULL;
decorationTable->decorationType[j] = 0;
for (j = 0; j < ARRAY_COUNT(decorationTable->effect); j++) {
decorationTable->effect[j] = NULL;
decorationTable->type[j] = 0;
}
}
@ -1238,7 +1238,7 @@ void load_partner_actor(void) {
partnerActor->shadow.id = create_shadow_type(0, partnerActor->currentPos.x, partnerActor->currentPos.y, partnerActor->currentPos.z);
partnerActor->shadowScale = partnerActor->size.x / 24.0;
partnerActor->hudElementDataIndex = create_status_icon_set();
partnerActor->debuffEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
partnerActor->disableEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
partnerActor->icePillarEffect = NULL;
takeTurnScript = start_script(partnerActor->takeTurnScriptSource, EVT_PRIORITY_A, 0);
@ -1349,11 +1349,11 @@ Actor* create_actor(Formation formation) {
actor->stoneDuration = 0;
actor->koStatus = 0;
actor->koDuration = 0;
actor->transStatus = 0;
actor->transDuration = 0;
actor->transparentStatus = 0;
actor->transparentDuration = 0;
actor->isGlowing = 0;
actor->unk_21E = 0;
actor->unk_21D = 0;
actor->disableDismissTimer = 0;
actor->attackBoost = 0;
actor->defenseBoost = 0;
actor->chillOutAmount = 0;
@ -1368,8 +1368,8 @@ Actor* create_actor(Formation formation) {
actor->actorTypeData1b[0] = bActorSoundTable[actor->actorType].delay[0];
actor->actorTypeData1b[1] = bActorSoundTable[actor->actorType].delay[1];
for (i = 0; i < ARRAY_COUNT(actor->unk_438); i++) {
actor->unk_438[i] = 0;
for (i = 0; i < ARRAY_COUNT(actor->loopingSoundID); i++) {
actor->loopingSoundID[i] = 0;
}
actor->state.varTable[0] = formation->var0;
@ -1463,9 +1463,9 @@ Actor* create_actor(Formation formation) {
decorationTable->unk_7DB = 0;
decorationTable->effectType = 0;
for (k = 0; k < ARRAY_COUNT(decorationTable->effects); k++) {
decorationTable->effects[k] = NULL;
decorationTable->decorationType[k] = 0;
for (k = 0; k < ARRAY_COUNT(decorationTable->effect); k++) {
decorationTable->effect[k] = NULL;
decorationTable->type[k] = 0;
}
}
@ -1509,7 +1509,7 @@ Actor* create_actor(Formation formation) {
takeTurnScript->owner1.enemyID = actor->enemyIndex | 0x200;
actor->shadow.id = create_shadow_type(0, actor->currentPos.x, actor->currentPos.y, actor->currentPos.z);
actor->shadowScale = actor->size.x / 24.0;
actor->debuffEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
actor->disableEffect = fx_disable_x(0, -142.0f, 34.0f, 1.0f, 0);
actor->icePillarEffect = NULL;
actor->hudElementDataIndex = create_status_icon_set();
return actor;
@ -1674,7 +1674,7 @@ s32 inflict_status(Actor* target, s32 statusTypeKey, s32 duration) {
if (target->debuff != statusTypeKey) {
target->status = statusTypeKey;
}
target->debuffEffect->data.disableX->unk_3C = 0;
target->disableEffect->data.disableX->unk_3C = 0;
target->debuff = statusTypeKey;
target->debuffDuration = duration;
if ((s8)duration > 9) {
@ -1756,10 +1756,10 @@ s32 inflict_status(Actor* target, s32 statusTypeKey, s32 duration) {
return TRUE;
case STATUS_TRANSPARENT:
if (target->actorID != ACTOR_PARTNER) {
target->transStatus = STATUS_TRANSPARENT;
target->transDuration = duration;
target->transparentStatus = STATUS_TRANSPARENT;
target->transparentDuration = duration;
if ((s8)duration > 9) {
target->transDuration = 9;
target->transparentDuration = 9;
}
target->status = STATUS_TRANSPARENT;
create_status_transparent(target->hudElementDataIndex, STATUS_TRANSPARENT);
@ -2370,9 +2370,9 @@ void add_part_decoration(ActorPart* part, s32 decorationIndex, s32 decorationTyp
DecorationTable* decorationTable = part->decorationTable;
_remove_part_decoration(part, decorationIndex);
decorationTable->decorationType[decorationIndex] = decorationType;
decorationTable->unk_8BA[decorationIndex] = 1;
decorationTable->unk_8BC[decorationIndex] = 0;
decorationTable->type[decorationIndex] = decorationType;
decorationTable->changed[decorationIndex] = TRUE;
decorationTable->state[decorationIndex] = 0;
_add_part_decoration(part);
}
}
@ -2472,15 +2472,15 @@ void remove_player_buffs(s32 buffs) {
player->staticStatus = 0;
remove_status_static(player->hudElementDataIndex);
}
if (buffs & 0x40 && (player->transStatus != 0)) {
player->transDuration = 0;
player->transStatus = 0;
if (buffs & 0x40 && (player->transparentStatus != 0)) {
player->transparentDuration = 0;
player->transparentStatus = 0;
playerPartsTable->flags &= ~0x100;
remove_status_transparent(player->hudElementDataIndex);
}
if (buffs & 0x200 && (battleStatus->waterBlockTurnsLeft != 0)) {
battleStatus->waterBlockTurnsLeft = 0;
battleStatus->unk_43C->unk_0C->unk_10 = 0;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_WATER_BLOCK].turnsLeft = 0;
battleStatus->waterBlockEffect->flags |= 0x10;
fx_water_block(1, player->currentPos.x, player->currentPos.y + 18.0f, player->currentPos.z + 5.0f, 1.5f, 0xA);
@ -2493,11 +2493,11 @@ void remove_player_buffs(s32 buffs) {
}
if (buffs & 0x100 && (battleStatus->turboChargeTurnsLeft != 0)) {
battleStatus->turboChargeTurnsLeft = 0;
battleStatus->unk_43C->unk_0C->unk_24 = 0;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_TURBO_CHARGE].turnsLeft = 0;
}
if (buffs & 0x80 && (battleStatus->cloudNineTurnsLeft != 0)) {
battleStatus->cloudNineTurnsLeft = 0;
battleStatus->unk_43C->unk_0C->unk_1A = 0;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_CLOUD_NINE].turnsLeft = 0;
remove_effect(battleStatus->cloudNineEffect);
battleStatus->cloudNineEffect = NULL;
}
@ -2518,7 +2518,7 @@ void btl_update_ko_status(void) {
player->koDuration = player->debuffDuration;
if (player->koDuration > 0) {
player->koStatus = STATUS_DAZE;
player->debuffEffect->data.disableX->unk_3C = player->koDuration;
player->disableEffect->data.disableX->unk_3C = player->koDuration;
if (koDuration == 0) {
sfx_play_sound(SOUND_2107);
@ -2533,7 +2533,7 @@ void btl_update_ko_status(void) {
if (partner->koDuration > 0) {
partner->koStatus = STATUS_DAZE;
partner->debuffEffect->data.disableX->unk_3C = partner->koDuration;
partner->disableEffect->data.disableX->unk_3C = partner->koDuration;
}
}
@ -2544,7 +2544,7 @@ void btl_update_ko_status(void) {
enemy->koDuration = enemy->debuffDuration;
if (enemy->koDuration > 0) {
enemy->koStatus = STATUS_DAZE;
enemy->debuffEffect->data.disableX->unk_3C = enemy->koDuration;
enemy->disableEffect->data.disableX->unk_3C = enemy->koDuration;
}
}
}

View File

@ -197,7 +197,7 @@ s32 calc_player_test_enemy(void) {
if (part->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY) {
return HIT_RESULT_MISS;
} else if (target->transStatus == STATUS_TRANSPARENT || ((part->eventFlags & ACTOR_EVENT_FLAG_800) &&
} else if (target->transparentStatus == STATUS_TRANSPARENT || ((part->eventFlags & ACTOR_EVENT_FLAG_800) &&
!(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE)))
{
return HIT_RESULT_MISS;
@ -286,7 +286,7 @@ s32 calc_player_damage_enemy(void) {
}
}
if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY || (target->transStatus == STATUS_TRANSPARENT ||
if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY || (target->transparentStatus == STATUS_TRANSPARENT ||
targetPart->eventFlags & ACTOR_EVENT_FLAG_800 && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE))) {
return 6;
}

View File

@ -168,7 +168,7 @@ s32 calc_enemy_test_target(Actor* actor) {
hitResult = HIT_RESULT_HIT;
target2 = target;
if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY || battleStatus->outtaSightActive || target2->transStatus == STATUS_TRANSPARENT) {
if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY || battleStatus->outtaSightActive || target2->transparentStatus == STATUS_TRANSPARENT) {
if (!(battleStatus->currentAttackElement & DAMAGE_TYPE_MAGIC)) {
hitResult = HIT_RESULT_MISS;
}
@ -285,7 +285,7 @@ s32 calc_enemy_damage_target(Actor* attacker) {
return HIT_RESULT_MISS;
}
if (target->transStatus == STATUS_TRANSPARENT || targetPart->eventFlags & ACTOR_EVENT_FLAG_800 && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE)) {
if (target->transparentStatus == STATUS_TRANSPARENT || targetPart->eventFlags & ACTOR_EVENT_FLAG_800 && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE)) {
return HIT_RESULT_MISS;
}
@ -781,7 +781,7 @@ s32 calc_enemy_damage_target(Actor* attacker) {
)
&& !(battleStatus->currentAttackElement & DAMAGE_TYPE_NO_CONTACT)
&& !(battleStatus->currentAttackEventSuppression & 8)
&& (attacker->transStatus != STATUS_TRANSPARENT)
&& (attacker->transparentStatus != STATUS_TRANSPARENT)
&& !has_enchanted_part(attacker)
) {
// enum mismatch? shock vs explode :raised_eyebrow:
@ -2548,7 +2548,7 @@ ApiStatus CopyStatusEffects(Evt* script, s32 isInitialCall) {
inflict_status(actorTo, actorFrom->staticStatus, actorFrom->staticDuration);
inflict_status(actorTo, actorFrom->stoneStatus, actorFrom->stoneDuration);
inflict_status(actorTo, actorFrom->koStatus, actorFrom->koDuration);
inflict_status(actorTo, actorFrom->transStatus, actorFrom->transDuration);
inflict_status(actorTo, actorFrom->transparentStatus, actorFrom->transparentDuration);
actorFrom->status = 0;
actorTo->status = 0;
@ -2580,9 +2580,9 @@ ApiStatus ClearStatusEffects(Evt* script, s32 isInitialCall) {
remove_status_static(actor->hudElementDataIndex);
}
if (actor->transStatus != 0) {
actor->transDuration = 0;
actor->transStatus = 0;
if (actor->transparentStatus != 0) {
actor->transparentDuration = 0;
actor->transparentStatus = 0;
remove_status_transparent(actor->hudElementDataIndex);
}
@ -2593,7 +2593,7 @@ ApiStatus ClearStatusEffects(Evt* script, s32 isInitialCall) {
actor->koStatus = 0;
actor->koDuration = 0;
actor->debuffEffect->data.disableX->unk_3C = 0;
actor->disableEffect->data.disableX->unk_3C = 0;
actor->attackBoost = 0;
actor->defenseBoost = 0;
actor->isGlowing = 0;

View File

@ -188,7 +188,7 @@ s32 calc_partner_damage_enemy(void) {
dispatchEvent = EVENT_UNKNOWN_TRIGGER;
sfx_play_sound_at_position(SOUND_IMMUNE, 0, state->goalPos.x, state->goalPos.y, state->goalPos.z);
} else {
if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY || target->transStatus == STATUS_TRANSPARENT ||
if (targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY || target->transparentStatus == STATUS_TRANSPARENT ||
targetPart->eventFlags & ACTOR_EVENT_FLAG_800 && !(battleStatus->currentAttackElement & DAMAGE_TYPE_QUAKE)) {
return 6;
}

View File

@ -2610,7 +2610,6 @@ ApiStatus func_8026ED20(Evt* script, s32 isInitialCall) {
s32 temp_s3 = evt_get_variable(script, *args++);
ActorPart* actorPart;
if (actorID == ACTOR_SELF) {
actorID = script->owner1.actorID;
}
@ -2816,7 +2815,7 @@ ApiStatus GetStatusFlags(Evt* script, s32 isInitialCall) {
break;
}
switch (actor->transStatus) {
switch (actor->transparentStatus) {
case STATUS_END:
break;
case STATUS_TRANSPARENT:

View File

@ -76,7 +76,7 @@ ApiStatus func_802A9184_428BF4(Evt* script, s32 isInitialCall) {
actionCommandStatus->unk_52 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = func_80268224(actionCommandStatus->unk_50);
actionCommandStatus->unk_64 = evt_get_variable(script, *args++);
actionCommandStatus->easyVersion = evt_get_variable(script, *args++);
actionCommandStatus->unk_60 = 0;
battleStatus->actionSuccess = 0;

View File

@ -126,7 +126,7 @@ void func_802A928C_427CFC(void) {
}
if (battleStatus->currentButtonsPressed & BUTTON_A) {
switch (actionCommandStatus->unk_64) {
switch (actionCommandStatus->easyVersion) {
case 0: {
s32 fillOffset = battleStatus->unk_434[actionCommandStatus->unk_50] * 235 * 4;
actionCommandStatus->barFillLevel += fillOffset / 100;

View File

@ -109,7 +109,7 @@ void func_802A928C_4263FC(void) {
case 11:
btl_set_popup_duration(99);
if (actionCommandStatus->unk_68 == 0) {
if (actionCommandStatus->unk_64 != 0) {
if (actionCommandStatus->easyVersion != 0) {
cutoff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals];
actionCommandStatus->barFillLevel -= D_802A9800_426970[actionCommandStatus->barFillLevel / cutoff / 20];
@ -126,7 +126,7 @@ void func_802A928C_4263FC(void) {
if (battleStatus->currentButtonsPressed & A_BUTTON) {
s32 a = battleStatus->unk_434[actionCommandStatus->unk_50];
s32 b = actionCommandStatus->unk_64 * 850;
s32 b = actionCommandStatus->easyVersion * 850;
s32 temp_v1_2 = (a * b) / 10000;
if (temp_v1_2 != 0) {
@ -156,7 +156,7 @@ void func_802A928C_4263FC(void) {
}
fillLevel = actionCommandStatus->barFillLevel;
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
fillLevel = 0;
}
@ -183,7 +183,7 @@ void func_802A928C_4263FC(void) {
actionCommandStatus->state = 12;
break;
case 12:
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
actionCommandStatus->barFillLevel -= 100;
if (actionCommandStatus->barFillLevel < 0) {
actionCommandStatus->barFillLevel = 0;

View File

@ -80,7 +80,7 @@ ApiStatus func_802A91A0_42F880(Evt* script, s32 isInitialCall) {
actionCommandStatus->unk_52 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = func_80268224(actionCommandStatus->unk_50);
actionCommandStatus->unk_64 = evt_get_variable(script, *args++);
actionCommandStatus->easyVersion = evt_get_variable(script, *args++);
actionCommandStatus->unk_60 = 0;
actionCommandStatus->barFillLevel = 0;
@ -170,7 +170,7 @@ void func_802A92A0_42F980(void) {
if (actionCommandStatus->unk_68 == 0) {
s16 newFillLevel;
if (actionCommandStatus->unk_64 != 0) {
if (actionCommandStatus->easyVersion != 0) {
s8 mashMeterIntervals = actionCommandStatus->mashMeterIntervals;
s16* mashMeterCutoffs = actionCommandStatus->mashMeterCutoffs;
s32 index;
@ -208,10 +208,10 @@ void func_802A92A0_42F980(void) {
buttonsAB = BUTTON_A | BUTTON_B;
if ((buttonsPushed & buttonsAB) == buttonsAB) {
if (actionCommandStatus->unk_64 != 0) {
if (actionCommandStatus->easyVersion != 0) {
s32 fillLevel;
fillLevel = actionCommandStatus->unk_64 * 650;
fillLevel = actionCommandStatus->easyVersion * 650;
fillLevel = fillLevel / 100 * battleStatus->unk_434[actionCommandStatus->unk_50];
// Perplexing reuse of buttonsPushed here, but it fixes register allocation. Likely another
@ -266,7 +266,7 @@ void func_802A92A0_42F980(void) {
//
// TODO: Find a way to avoid reusing buttonsPushed.
buttonsPushed = actionCommandStatus->barFillLevel;
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
buttonsPushed = 0;
}
@ -298,7 +298,7 @@ void func_802A92A0_42F980(void) {
}
break;
case 12:
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
actionCommandStatus->barFillLevel -= 100;
if (actionCommandStatus->barFillLevel < 0) {
actionCommandStatus->barFillLevel = 0;

View File

@ -82,7 +82,7 @@ ApiStatus func_802A91A0_42DBB0(Evt* script, s32 isInitialCall) {
actionCommandStatus->unk_50 = arg;
actionCommandStatus->unk_50 = func_80268224(arg);
actionCommandStatus->unk_64 = evt_get_variable(script, *readPos++);
actionCommandStatus->easyVersion = evt_get_variable(script, *readPos++);
actionCommandStatus->unk_60 = 0;
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->unk_48 = 0;
@ -176,7 +176,7 @@ void func_802A92A0_42DCB0(void) {
if (actionCommandStatus->unk_68 == 0) {
s16 newFillLevel;
if (actionCommandStatus->unk_64 != 0) {
if (actionCommandStatus->easyVersion != 0) {
s8 mashMeterIntervals = actionCommandStatus->mashMeterIntervals;
s16* mashMeterCutoffs = actionCommandStatus->mashMeterCutoffs;
s32 index;
@ -214,10 +214,10 @@ void func_802A92A0_42DCB0(void) {
buttonsAB = BUTTON_A | BUTTON_B;
if ((buttonsPushed & buttonsAB) == buttonsAB) {
if (actionCommandStatus->unk_64 != 0) {
if (actionCommandStatus->easyVersion != 0) {
s32 fillLevel;
fillLevel = actionCommandStatus->unk_64 * 780;
fillLevel = actionCommandStatus->easyVersion * 780;
fillLevel = fillLevel / 100 * battleStatus->unk_434[actionCommandStatus->unk_50];
// Perplexing reuse of buttonsPushed here, but it fixes register allocation. Likely another
@ -273,7 +273,7 @@ void func_802A92A0_42DCB0(void) {
//
// TODO: Find a way to avoid reusing buttonsPushed.
buttonsPushed = actionCommandStatus->barFillLevel;
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
buttonsPushed = 0;
}
@ -306,7 +306,7 @@ void func_802A92A0_42DCB0(void) {
}
break;
case 12:
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
actionCommandStatus->barFillLevel -= 100;
if (actionCommandStatus->barFillLevel < 0) {
actionCommandStatus->barFillLevel = 0;

View File

@ -88,7 +88,7 @@ ApiStatus func_802A9210_42D120(Evt* script, s32 isInitialCall) {
actionCommandStatus->unk_52 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = func_80268224(actionCommandStatus->unk_50);
actionCommandStatus->unk_64 = evt_get_variable(script, *args++);
actionCommandStatus->easyVersion = evt_get_variable(script, *args++);
actionCommandStatus->unk_60 = 0;
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->unk_48 = 0;

View File

@ -161,7 +161,7 @@ void func_802A9298_42E638(void) {
}
if (!(battleStatus->currentButtonsDown & BUTTON_STICK_LEFT) && actionCommandStatus->unk_5C) {
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
actionCommandStatus->barFillLevel += battleStatus->unk_434[actionCommandStatus->unk_50] * 13;
} else {
actionCommandStatus->barFillLevel += battleStatus->unk_434[actionCommandStatus->unk_50] * 850 / 100;
@ -218,7 +218,7 @@ void func_802A9298_42E638(void) {
}
break;
case 2:
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
if (battleStatus->unk_84 >= D_802A9A08_42EDA8[battleStatus->unk_85]) {
battleStatus->unk_85++;
}

View File

@ -111,7 +111,7 @@ void func_802A9298_4302B8(void) {
case 11:
btl_set_popup_duration(99);
if (actionCommandStatus->unk_68 == 0) {
if (actionCommandStatus->unk_64 != 0) {
if (actionCommandStatus->easyVersion != 0) {
cutoff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals];
actionCommandStatus->barFillLevel -= D_802A9920_430940[actionCommandStatus->barFillLevel / cutoff / 20];
@ -126,7 +126,7 @@ void func_802A9298_4302B8(void) {
}
if (actionCommandStatus->unk_68 == 0) {
if (actionCommandStatus->unk_64 != 0) {
if (actionCommandStatus->easyVersion != 0) {
if (battleStatus->currentButtonsDown & BUTTON_STICK_LEFT) {
actionCommandStatus->unk_5C = TRUE;
@ -134,7 +134,7 @@ void func_802A9298_4302B8(void) {
if (!(battleStatus->currentButtonsDown & BUTTON_STICK_LEFT) && actionCommandStatus->unk_5C) {
s32 a = battleStatus->unk_434[actionCommandStatus->unk_50];
s32 b = actionCommandStatus->unk_64 * 850;
s32 b = actionCommandStatus->easyVersion * 850;
actionCommandStatus->barFillLevel += (a * b) / 10000;
actionCommandStatus->unk_5C = 0;
@ -142,7 +142,7 @@ void func_802A9298_4302B8(void) {
if (battleStatus->currentButtonsPressed & BUTTON_STICK_RIGHT) {
s32 a = battleStatus->unk_434[actionCommandStatus->unk_50];
s32 b = actionCommandStatus->unk_64 * 850;
s32 b = actionCommandStatus->easyVersion * 850;
actionCommandStatus->barFillLevel -= (a * b) / 10000;
}
@ -186,7 +186,7 @@ void func_802A9298_4302B8(void) {
}
fillLevel = actionCommandStatus->barFillLevel;
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
fillLevel = 0;
}
@ -213,7 +213,7 @@ void func_802A9298_4302B8(void) {
actionCommandStatus->state = 12;
break;
case 12:
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
actionCommandStatus->barFillLevel -= 100;
if (actionCommandStatus->barFillLevel < 0) {
actionCommandStatus->barFillLevel = 0;

View File

@ -141,7 +141,7 @@ ApiStatus func_802A9000_42A4F0(Evt* script, s32 isInitialCall) {
actionCommandStatus->unk_60 = 0;
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->unk_48 = 0;
actionCommandStatus->unk_64 = evt_get_variable(script, *args++);
actionCommandStatus->easyVersion = evt_get_variable(script, *args++);
battleStatus->unk_84 = 1;
actionCommandStatus->unk_6C = 30;
actionCommandStatus->hudElementX = -48;
@ -207,7 +207,7 @@ ApiStatus func_802A9000_42A4F0(Evt* script, s32 isInitialCall) {
actionCommandStatus->hudElements[12] = id;
hud_element_set_render_pos(id, actionCommandStatus->hudElementX, actionCommandStatus->hudElementY);
switch (actionCommandStatus->unk_64) {
switch (actionCommandStatus->easyVersion) {
case 0:
actionCommandStatus->hudElements[13] = hud_element_create(&HES_WaterBlockBlock);
id = actionCommandStatus->hudElements[13];
@ -328,7 +328,7 @@ void func_802A948C_42A97C(void) {
hud_element_set_render_pos(actionCommandStatus->hudElements[4], actionCommandStatus->hudElementX + 61, actionCommandStatus->hudElementY + 24);
id = actionCommandStatus->hudElements[10];
switch (actionCommandStatus->unk_64) {
switch (actionCommandStatus->easyVersion) {
case 0:
hud_element_set_render_pos(id, actionCommandStatus->hudElementX + 91, actionCommandStatus->hudElementY + 7);
break;

View File

@ -34,82 +34,22 @@ extern s32 D_80294240;
#include "battle/action_cmd/whirlwind_bubble.png.inc.c"
#include "battle/action_cmd/whirlwind_bubble.pal.inc.c"
HudScript HES_Whirlwind1 = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetTileSize, HUD_ELEMENT_SIZE_24x24,
HUD_ELEMENT_OP_Loop,
HUD_ELEMENT_OP_SetCI, 60, (s32)battle_action_cmd_whirlwind_1_png, (s32)battle_action_cmd_whirlwind_1_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_Whirlwind1 = HES_TEMPLATE_CI_ENUM_SIZE(battle_action_cmd_whirlwind_1, 24, 24);
HudScript HES_Whirlwind2 = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetTileSize, HUD_ELEMENT_SIZE_24x24,
HUD_ELEMENT_OP_Loop,
HUD_ELEMENT_OP_SetCI, 60, (s32)battle_action_cmd_whirlwind_2_png, (s32)battle_action_cmd_whirlwind_2_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_Whirlwind2 = HES_TEMPLATE_CI_ENUM_SIZE(battle_action_cmd_whirlwind_2, 24, 24);
HudScript HES_Whirlwind3 = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetTileSize, HUD_ELEMENT_SIZE_24x24,
HUD_ELEMENT_OP_Loop,
HUD_ELEMENT_OP_SetCI,
60, (s32)battle_action_cmd_whirlwind_3_png, (s32)battle_action_cmd_whirlwind_3_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_Whirlwind3 = HES_TEMPLATE_CI_ENUM_SIZE(battle_action_cmd_whirlwind_3, 24, 24);
HudScript HES_Whirlwind4 = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetTileSize, HUD_ELEMENT_SIZE_24x24,
HUD_ELEMENT_OP_Loop,
HUD_ELEMENT_OP_SetCI,
60, (s32)battle_action_cmd_whirlwind_4_png, (s32)battle_action_cmd_whirlwind_4_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_Whirlwind4 = HES_TEMPLATE_CI_ENUM_SIZE(battle_action_cmd_whirlwind_4, 24, 24);
HudScript HES_Whirlwind5 = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetTileSize, HUD_ELEMENT_SIZE_24x24,
HUD_ELEMENT_OP_Loop,
HUD_ELEMENT_OP_SetCI,
60, (s32)battle_action_cmd_whirlwind_5_png, (s32)battle_action_cmd_whirlwind_5_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_Whirlwind5 = HES_TEMPLATE_CI_ENUM_SIZE(battle_action_cmd_whirlwind_5, 24, 24);;
HudScript HES_Whirlwind6 = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetTileSize, HUD_ELEMENT_SIZE_24x24,
HUD_ELEMENT_OP_Loop,
HUD_ELEMENT_OP_SetCI,
60, (s32)battle_action_cmd_whirlwind_6_png, (s32)battle_action_cmd_whirlwind_6_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_Whirlwind6 = HES_TEMPLATE_CI_ENUM_SIZE(battle_action_cmd_whirlwind_6, 24, 24);
HudScript HES_Whirlwind7 = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetTileSize, HUD_ELEMENT_SIZE_24x24,
HUD_ELEMENT_OP_Loop,
HUD_ELEMENT_OP_SetCI,
60, (s32)battle_action_cmd_whirlwind_7_png, (s32)battle_action_cmd_whirlwind_7_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_Whirlwind7 = HES_TEMPLATE_CI_ENUM_SIZE(battle_action_cmd_whirlwind_7, 24, 24);
HudScript HES_WhirlwindBubble = {
HUD_ELEMENT_OP_SetVisible,
HUD_ELEMENT_OP_SetCustomSize, battle_action_cmd_whirlwind_bubble_png_width, battle_action_cmd_whirlwind_bubble_png_height,
0x00000004,
HUD_ELEMENT_OP_SetCI, 60, (s32)battle_action_cmd_whirlwind_bubble_png, (s32)battle_action_cmd_whirlwind_bubble_pal,
0x00000003,
HUD_ELEMENT_OP_End
};
HudScript HES_WhirlwindBubble = HES_TEMPLATE_CI_CUSTOM_SIZE(battle_action_cmd_whirlwind_bubble,
battle_action_cmd_whirlwind_bubble_png_width, battle_action_cmd_whirlwind_bubble_png_height);
s32 D_802AA844_4254B4[] = { 0, 25, 50, 75, 100, 100 };
@ -140,14 +80,13 @@ ApiStatus func_802A9000_423C70(Evt* script, s32 isInitialCall) {
}
func_80268858();
temp_v0 = evt_get_variable(script, *args++);
actionCommandStatus->unk_64 = temp_v0;
actionCommandStatus->easyVersion = evt_get_variable(script, *args++);
actionCommandStatus->actionCommandID = ACTION_COMMAND_WHIRLWIND;
actionCommandStatus->state = 0;
actionCommandStatus->unk_60 = 0;
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->unk_48 = 0;
if (temp_v0 == 0) {
if (actionCommandStatus->easyVersion == 0) {
battleStatus->unk_84 = 0;
} else {
battleStatus->unk_84 = 3;
@ -202,7 +141,7 @@ ApiStatus func_802A91E0_423E50(Evt* script, s32 isInitialCall) {
actionCommandStatus->unk_48 = 0;
battleStatus->actionSuccess = 0;
battleStatus->unk_86 = 0;
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
battleStatus->unk_84 = 0;
} else {
battleStatus->unk_84 = 3;
@ -275,7 +214,7 @@ void func_802A92F0_423F60(void) {
btl_set_popup_duration(99);
cutoff = actionCommandStatus->mashMeterCutoffs[actionCommandStatus->mashMeterIntervals];
temp = actionCommandStatus->barFillLevel / cutoff;
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
amt = D_802AA844_4254B4[temp / 20];
} else {
amt = D_802AA85C_4254CC[temp / 10];
@ -290,7 +229,7 @@ void func_802A92F0_423F60(void) {
if (battleStatus->currentButtonsPressed & BUTTON_A) {
s32 amt;
if (actionCommandStatus->unk_64 == 0) {
if (actionCommandStatus->easyVersion == 0) {
amt = battleStatus->unk_434[actionCommandStatus->unk_50] * 5;
} else {
amt = battleStatus->unk_434[actionCommandStatus->unk_50] * 6;
@ -305,7 +244,7 @@ void func_802A92F0_423F60(void) {
if (actionCommandStatus->barFillLevel > cutoff * 100) {
actionCommandStatus->barFillLevel = cutoff * 100;
}
if (actionCommandStatus->unk_64 == 0) {
if (!actionCommandStatus->easyVersion) {
battleStatus->unk_84 = actionCommandStatus->barFillLevel / 2000;
} else {
battleStatus->unk_84 = D_802AA8B4_425524[actionCommandStatus->barFillLevel / 1000];
@ -347,7 +286,7 @@ void N(draw_hud_elements)(void) {
func_80268798(x, y, actionCommandStatus->barFillLevel / 100, 1);
hud_element_draw_clipped(actionCommandStatus->hudElements[3]);
id = actionCommandStatus->hudElements[2];
if (actionCommandStatus->unk_64 == 0) {
if (!actionCommandStatus->easyVersion) {
if (D_802AA888_4254F8[battleStatus->unk_84] != hud_element_get_script(id)) {
hud_element_set_script(id, D_802AA888_4254F8[battleStatus->unk_84]);
}

View File

@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_7333BC)(Evt* script, s32 isInitialCall) {
partner->koDuration = 0;
}
if (partner->koDuration > 0) {
partner->debuffEffect->data.disableX->unk_3C = partner->koDuration;
partner->disableEffect->data.disableX->unk_3C = partner->koDuration;
} else {
partner->koStatus = 0;
dispatch_event_partner(EVENT_RECOVER_PARTNER);
partner->debuffEffect->data.disableX->unk_3C = 0;
partner->disableEffect->data.disableX->unk_3C = 0;
}
return ApiStatus_DONE2;

View File

@ -20,9 +20,9 @@ ApiStatus N(func_802A123C_72619C)(Evt* script, s32 isInitialCall) {
player->stoneDuration = 0;
player->stoneStatus = 0;
}
if (player->transStatus != 0) {
player->transDuration = 0;
player->transStatus = 0;
if (player->transparentStatus != 0) {
player->transparentDuration = 0;
player->transparentStatus = 0;
}
return ApiStatus_DONE2;

View File

@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_72E81C)(Evt* script, s32 isInitialCall) {
partner->koDuration = 0;
}
if (partner->koDuration > 0) {
partner->debuffEffect->data.disableX->unk_3C = partner->koDuration;
partner->disableEffect->data.disableX->unk_3C = partner->koDuration;
} else {
partner->koStatus = 0;
dispatch_event_partner(EVENT_RECOVER_PARTNER);
partner->debuffEffect->data.disableX->unk_3C = 0;
partner->disableEffect->data.disableX->unk_3C = 0;
}
return ApiStatus_DONE2;

View File

@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_715B3C)(Evt* script, s32 isInitialCall) {
partner->koDuration = 0;
}
if (partner->koDuration > 0) {
partner->debuffEffect->data.disableX->unk_3C = partner->koDuration;
partner->disableEffect->data.disableX->unk_3C = partner->koDuration;
} else {
partner->koStatus = 0;
dispatch_event_partner(EVENT_RECOVER_PARTNER);
partner->debuffEffect->data.disableX->unk_3C = 0;
partner->disableEffect->data.disableX->unk_3C = 0;
}
return ApiStatus_DONE2;

View File

@ -180,7 +180,7 @@ ApiStatus N(func_802A1740_71ED90)(Evt* script, s32 isInitialCall) {
Actor* targetActor = get_actor(target->actorID);
ActorPart* targetPart = get_actor_part(targetActor, target->partID);
if ((targetActor->transStatus == 0) && !(targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY)) {
if ((targetActor->transparentStatus == 0) && !(targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY)) {
targetActor->yaw += 33.0f;
targetActor->yaw = clamp_angle(targetActor->yaw);
}
@ -213,7 +213,7 @@ ApiStatus N(func_802A1848_71EE98)(Evt* script, s32 isInitialCall) {
if (targetActor != NULL) {
ActorPart* targetPart = get_actor_part(targetActor, target->partID);
if ((targetActor->transStatus == 0) && !(targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY)) {
if ((targetActor->transparentStatus == 0) && !(targetPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY)) {
if (targetActor->yaw < 360.0f) {
targetActor->yaw += 33.0f;
if (targetActor->yaw >= 360.0f) {

View File

@ -31,11 +31,11 @@ ApiStatus N(func_802A12EC_724FCC)(Evt* script, s32 isInitialCall) {
partner->koDuration = 0;
}
if (partner->koDuration > 0) {
partner->debuffEffect->data.disableX->unk_3C = partner->koDuration;
partner->disableEffect->data.disableX->unk_3C = partner->koDuration;
} else {
partner->koStatus = 0;
dispatch_event_partner(EVENT_RECOVER_PARTNER);
partner->debuffEffect->data.disableX->unk_3C = 0;
partner->disableEffect->data.disableX->unk_3C = 0;
}
return ApiStatus_DONE2;
@ -64,7 +64,7 @@ ApiStatus N(func_802A1378_725058)(Evt* script, s32 isInitialCall) {
break;
}
actor->debuffEffect->data.disableX->unk_3C = 0;
actor->disableEffect->data.disableX->unk_3C = 0;
}
btl_update_ko_status();

View File

@ -24,7 +24,7 @@ ApiStatus N(func_802A123C_72223C)(Evt* script, s32 isInitialCall) {
case ACTOR_CLASS_PARTNER:
dispatch_event_partner(EVENT_RECOVER_STATUS);
}
actor->debuffEffect->data.disableX->unk_3C = 0;
actor->disableEffect->data.disableX->unk_3C = 0;
}
return ApiStatus_DONE2;

View File

@ -102,7 +102,7 @@ ApiStatus N(AverageTargetStatusChance)(Evt* script, s32 isInitialCall) {
targetActorBlueprint = targetActor->actorBlueprint;
targetActorBlueprintBaseStatusChance = targetActorBlueprint->baseStatusChance;
if (targetActor->transStatus == STATUS_TRANSPARENT) {
if (targetActor->transparentStatus == STATUS_TRANSPARENT) {
targetActorBlueprintBaseStatusChance = 0;
}

View File

@ -83,7 +83,7 @@ ApiStatus func_80238114_6F5F94(Evt* script, s32 isInitialCall) {
if (targetActor != NULL) {
targetActorPart = get_actor_part(targetActor, target->partID);
if (targetActor->transStatus == 0) {
if (targetActor->transparentStatus == 0) {
if (!(targetActorPart->eventFlags & 0x20)) {
if (x > targetX) {
targetActor->yaw += 33;
@ -126,7 +126,7 @@ ApiStatus N(AverageTargetDizzyChance)(Evt* script, s32 isInitialCall) {
targetActorPart = get_actor_part(targetActor, partnerActor->targetData[i].partID);
targetActorBlueprintBaseStatusChance = lookup_status_chance(targetActor->statusTable, STATUS_DIZZY);
if (targetActor->transStatus == STATUS_TRANSPARENT) {
if (targetActor->transparentStatus == STATUS_TRANSPARENT) {
targetActorBlueprintBaseStatusChance = 0;
}

View File

@ -79,7 +79,7 @@ ApiStatus func_80238D48_70CA58(Evt* script, s32 isInitialCall) {
if (gBattleStatus.cloudNineTurnsLeft < script->varTable[10]) {
gBattleStatus.cloudNineTurnsLeft = script->varTable[10];
gBattleStatus.cloudNineDodgeChance = 50;
gBattleStatus.unk_43C->unk_0C->unk_1A = gBattleStatus.cloudNineTurnsLeft;
gBattleStatus.buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_CLOUD_NINE].turnsLeft = gBattleStatus.cloudNineTurnsLeft;
}
return ApiStatus_DONE2;

View File

@ -349,7 +349,7 @@ ApiStatus func_80238CE0_700A60(Evt* script, s32 isInitialCall) {
s32 airLiftChance = targetActor->actorBlueprint->airLiftChance;
s32 hpPercentLost = 100 - (targetActor->currentHP * 100) / targetActor->maxHP;
if (targetActor->transStatus == STATUS_TRANSPARENT) {
if (targetActor->transparentStatus == STATUS_TRANSPARENT) {
airLiftChance = 0;
}

View File

@ -96,7 +96,7 @@ ApiStatus func_80238328_707FC8(Evt* script, s32 isInitialCall) {
if (battleStatus->waterBlockTurnsLeft < var) {
battleStatus->waterBlockTurnsLeft = var;
battleStatus->waterBlockAmount = 1;
battleStatus->unk_43C->unk_0C->unk_10 = battleStatus->waterBlockTurnsLeft;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_WATER_BLOCK].turnsLeft = battleStatus->waterBlockTurnsLeft;
}
return ApiStatus_DONE2;

View File

@ -120,7 +120,7 @@ ApiStatus func_80238784_704274(Evt* script, s32 isInitialCall) {
ActorPart* targetActorPart = get_actor_part(targetActor, partnerActor->targetPartIndex);
s32 statusChance = lookup_status_chance(targetActor->statusTable, 5);
if (targetActor->transStatus == STATUS_TRANSPARENT) {
if (targetActor->transparentStatus == STATUS_TRANSPARENT) {
statusChance = 0;
}
if (targetActorPart->eventFlags & ACTOR_EVENT_FLAG_ILLUSORY) {
@ -163,7 +163,7 @@ ApiStatus func_80238C08_7046F8(Evt* script, s32 isInitialCall) {
if (battleStatus->turboChargeTurnsLeft < var1) {
battleStatus->turboChargeTurnsLeft = var1;
battleStatus->turboChargeAmount = 1;
battleStatus->unk_43C->unk_0C->unk_24 = battleStatus->turboChargeTurnsLeft;
battleStatus->buffEffect->data.partnerBuff->unk_0C[FX_BUFF_DATA_TURBO_CHARGE].turnsLeft = battleStatus->turboChargeTurnsLeft;
}
if (gBattleStatus.flags2 & 2) {
@ -190,7 +190,7 @@ ApiStatus N(AverageTargetParalyzeChance)(Evt* script, s32 isInitialCall) {
targetActorPart = get_actor_part(targetActor, partnerActor->targetData[i].partID);
targetActorBlueprintBaseStatusChance = lookup_status_chance(targetActor->statusTable, STATUS_PARALYZE);
if (targetActor->transStatus == STATUS_TRANSPARENT) {
if (targetActor->transparentStatus == STATUS_TRANSPARENT) {
targetActorBlueprintBaseStatusChance = 0;
}

View File

@ -22,7 +22,7 @@ ApiStatus func_802A17D4_78BDD4(Evt* script, s32 isInitialCall) {
if (actor->koStatus != 0) {
actor->koDuration = 0;
actor->koStatus = 0;
actor->debuffEffect->data.disableX->unk_3C = 0;
actor->disableEffect->data.disableX->unk_3C = 0;
}
btl_update_ko_status();

View File

@ -15,7 +15,7 @@ ApiStatus N(MashActionCommandInit)(Evt* script, s32 isInitialCall) {
actionCommandStatus->unk_52 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = evt_get_variable(script, *args++);
actionCommandStatus->unk_50 = func_80268224(actionCommandStatus->unk_50);
actionCommandStatus->unk_64 = evt_get_variable(script, *args++);
actionCommandStatus->easyVersion = evt_get_variable(script, *args++);
actionCommandStatus->unk_60 = 0;
actionCommandStatus->barFillLevel = 0;
actionCommandStatus->unk_48 = 0;

View File

@ -424,7 +424,7 @@ void fold_update(u32 idx, FoldType type, s32 arg2, s32 arg3, s32 arg4, s32 arg5,
if (arg6 != 0) {
state->flags |= arg6;
} else {
state->flags = state->flags; // required to match
state->flags |= arg6; // required to match
}
return;
case FOLD_TYPE_1:

View File

@ -1,23 +1,173 @@
#include "common.h"
#include "effects_internal.h"
INCLUDE_ASM(s32, "effects/partner_buff", partner_buff_main);
void partner_buff_init(EffectInstance* effect);
void partner_buff_update(EffectInstance* effect);
void partner_buff_render(EffectInstance* effect);
void func_E011A3A0(EffectInstance* effect);
void func_E011A700(EffectInstance* effect);
void partner_buff_init(void) {
enum {
BUFF_STATE_IDLE = 0,
BUFF_STATE_DECREMENT_TURNS_INIT = 1,
BUFF_STATE_DECREMENT_TURNS = 10,
BUFF_STATE_SET_TURNS_INIT = 2,
BUFF_STATE_SET_TURNS = 20,
BUFF_STATE_FADE_OUT = 3,
BUFF_STATE_FADE_IN_INIT = 4,
BUFF_STATE_FADE_IN = 40
};
EffectInstance* partner_buff_main(s32 useRandomValues, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 duration) {
EffectBlueprint bp;
EffectInstance* effect;
PartnerBuffFXData* part;
s32 numParts = 1;
s32 i;
bp.unk_00 = 0;
bp.init = partner_buff_init;
bp.update = partner_buff_update;
bp.renderWorld = partner_buff_render;
bp.unk_14 = func_E011A3A0;
bp.effectID = EFFECT_PARTNER_BUFF;
effect = shim_create_effect_instance(&bp);
effect->numParts = numParts;
part = effect->data.partnerBuff = shim_general_heap_malloc(numParts * sizeof(*part));
ASSERT(effect->data.partnerBuff != NULL);
part->useRandomValues = useRandomValues;
part->lifeTime = 0;
if (duration <= 0) {
part->timeLeft = 1000;
} else {
part->timeLeft = duration;
}
for (i = 0; i < ARRAY_COUNT(part->unk_0C); i++) {
part->unk_0C[i].alpha = 0;
part->unk_0C[i].turnsDisplay = 0;
part->unk_0C[i].turnsLeft = 0;
part->unk_0C[i].state = BUFF_STATE_IDLE;
part->unk_0C[i].stateTimer = 0;
}
part->unk_02 = 0;
if (useRandomValues == 1) {
part->unk_02 = 1;
}
return effect;
}
INCLUDE_ASM(s32, "effects/partner_buff", partner_buff_update);
void partner_buff_render(void) {
void partner_buff_init(EffectInstance* effect) {
}
INCLUDE_ASM(s32, "effects/partner_buff", func_E011A3A0);
void partner_buff_update(EffectInstance* effect) {
PartnerBuffFXData* data = effect->data.partnerBuff;
s32 useRandomValues = data->useRandomValues;
s32 time;
s32 i;
if (effect->flags & EFFECT_INSTANCE_FLAGS_10) {
effect->flags &= ~EFFECT_INSTANCE_FLAGS_10;
data->timeLeft = 16;
}
if (data->timeLeft < 1000) {
data->timeLeft--;
}
data->lifeTime++;
if (data->timeLeft < 0) {
shim_remove_effect(effect);
return;
}
time = data->lifeTime;
for (i = 0; i < ARRAY_COUNT(data->unk_0C); i++) {
BuffData* buff = &data->unk_0C[i];
if (buff->turnsLeft < 0) {
buff->turnsLeft = 0;
}
// possibly a leftover debug option
if ((useRandomValues == 1) && (time % 30 == 0)) {
buff->turnsLeft = shim_rand_int(4);
}
switch (buff->state) {
case BUFF_STATE_IDLE:
if (buff->alpha == 255) {
if (buff->turnsLeft < buff->turnsDisplay) {
buff->state = BUFF_STATE_DECREMENT_TURNS_INIT;
} else if (buff->turnsDisplay < buff->turnsLeft) {
buff->state = BUFF_STATE_SET_TURNS_INIT;
} else if (buff->turnsDisplay == 0) {
buff->state = BUFF_STATE_FADE_OUT;
}
} else if ((buff->alpha == 0) && (buff->turnsLeft > 0)) {
buff->state = BUFF_STATE_FADE_IN_INIT;
}
break;
case BUFF_STATE_DECREMENT_TURNS_INIT:
buff->stateTimer = 0;
buff->state = BUFF_STATE_DECREMENT_TURNS;
// fallthrough
case BUFF_STATE_DECREMENT_TURNS:
buff->stateTimer++;
if (buff->stateTimer > 10) {
buff->stateTimer = 0;
buff->state = BUFF_STATE_IDLE;
buff->turnsDisplay--;
}
break;
case BUFF_STATE_SET_TURNS_INIT:
buff->stateTimer = 0;
buff->state = BUFF_STATE_SET_TURNS;
// fallthrough
case BUFF_STATE_SET_TURNS:
buff->stateTimer++;
if (buff->stateTimer > 10) {
buff->stateTimer = 0;
buff->state = BUFF_STATE_IDLE;
buff->turnsDisplay = buff->turnsLeft;
}
break;
case BUFF_STATE_FADE_OUT:
buff->alpha -= 32;
if (buff->alpha < 0) {
buff->alpha = 0;
buff->state = BUFF_STATE_IDLE;
}
break;
case BUFF_STATE_FADE_IN_INIT:
buff->state = BUFF_STATE_FADE_IN;
buff->turnsDisplay = buff->turnsLeft;
// fallthrough
case BUFF_STATE_FADE_IN:
buff->alpha += 64;
if (buff->alpha > 255) {
buff->alpha = 255;
buff->state = BUFF_STATE_IDLE;
}
break;
}
}
}
void partner_buff_render(EffectInstance* effect) {
}
void func_E011A3A0(EffectInstance* effect) {
func_E011A700(effect);
}
void func_E011A3BC(s16 alpha) {
if (alpha == 255) {
gDPSetRenderMode(gMasterGfxPos++, AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c1(G_BL_CLR_IN, G_BL_A_IN,
G_BL_CLR_MEM, G_BL_A_MEM), AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA | GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM,
G_BL_A_MEM));
gDPSetRenderMode(gMasterGfxPos++, AA_EN | CVG_DST_FULL | ZMODE_OPA | CVG_X_ALPHA |
GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM),
GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_A_MEM));
gDPSetCombineMode(gMasterGfxPos++, G_CC_DECALRGBA, G_CC_DECALRGBA);
} else {
gDPSetRenderMode(gMasterGfxPos++, G_RM_CLD_SURF, G_RM_CLD_SURF2);
@ -26,6 +176,18 @@ void func_E011A3BC(s16 alpha) {
}
}
INCLUDE_ASM(s32, "effects/partner_buff", func_E011A48C);
void func_E011A48C(s32 posX, s32 posY, s32 tile, f32 scale) {
gSPScisTextureRectangle(gMasterGfxPos++,
posX * 4,
posY * 4,
(posX + 32) * 4,
(posY + 32) * 4,
tile,
0,
1024,
scale,
-scale);
gDPPipeSync(gMasterGfxPos++);
}
INCLUDE_ASM(s32, "effects/partner_buff", func_E011A700);

View File

@ -1530,63 +1530,63 @@ void func_8003D3BC(Npc* npc) {
s32 temp_s6 = npc->unk_A0;
s32 temp_s3 = npc->unk_A2;
func_802DE894(npc->spriteInstanceID, 0, 0, 0, 0, 0, 0);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_NONE, 0, 0, 0, 0, 0);
switch (temp_s4) {
case 0:
case FOLD_TYPE_NONE:
npc->renderMode = 13;
func_802DE894(npc->spriteInstanceID, 0, 0, 0, 0, 0, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_NONE, 0, 0, 0, 0, temp_s3);
break;
case 2:
case 3:
case FOLD_TYPE_2:
case FOLD_TYPE_3:
npc->renderMode = 13;
// fallthrough
case 1:
case FOLD_TYPE_1:
func_802DE894(npc->spriteInstanceID, temp_s4, 0, 0, 0, 0, temp_s3);
break;
case 4:
case FOLD_TYPE_4:
npc->renderMode = 13;
func_802DE894(npc->spriteInstanceID, 4, temp_s0, temp_s5, temp_s2, 0, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_4, temp_s0, temp_s5, temp_s2, 0, temp_s3);
break;
case 6:
case FOLD_TYPE_6:
npc->renderMode = 13;
func_802DE894(npc->spriteInstanceID, 6, temp_s0, temp_s5, temp_s2, 255, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_6, temp_s0, temp_s5, temp_s2, 255, temp_s3);
break;
case 7:
case FOLD_TYPE_7:
npc->renderMode = 22;
func_802DE894(npc->spriteInstanceID, 7, 255, 255, 255, temp_s0, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_7, 255, 255, 255, temp_s0, temp_s3);
break;
case 8:
case FOLD_TYPE_8:
npc->renderMode = 22;
func_802DE894(npc->spriteInstanceID, 8, temp_s0, temp_s5, temp_s2, temp_s6, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_8, temp_s0, temp_s5, temp_s2, temp_s6, temp_s3);
break;
case 9:
case FOLD_TYPE_9:
npc->renderMode = 13;
func_802DE894(npc->spriteInstanceID, 9, temp_s0, temp_s5, temp_s2, 255, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_9, temp_s0, temp_s5, temp_s2, 255, temp_s3);
break;
case 10:
case FOLD_TYPE_A:
npc->renderMode = 22;
func_802DE894(npc->spriteInstanceID, 10, temp_s0, temp_s5, temp_s2, temp_s6, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_A, temp_s0, temp_s5, temp_s2, temp_s6, temp_s3);
break;
case 5:
case FOLD_TYPE_5:
npc->renderMode = 13;
func_802DE894(npc->spriteInstanceID, 5, temp_s0, temp_s5, temp_s2, 0, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_5, temp_s0, temp_s5, temp_s2, 0, temp_s3);
break;
case 13:
case FOLD_TYPE_D:
npc->renderMode = 22;
func_802DE894(npc->spriteInstanceID, 13, temp_s0, temp_s5, temp_s2, temp_s6, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_D, temp_s0, temp_s5, temp_s2, temp_s6, temp_s3);
break;
case 14:
case FOLD_TYPE_E:
npc->renderMode = 13;
func_802DE894(npc->spriteInstanceID, 14, temp_s0, temp_s5, temp_s2, 255, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_E, temp_s0, temp_s5, temp_s2, 255, temp_s3);
break;
case 15:
case FOLD_TYPE_F:
npc->renderMode = 13;
func_802DE894(npc->spriteInstanceID, 15, temp_s0, 255, 0, 255, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_F, temp_s0, 255, 0, 255, temp_s3);
break;
case 16:
case FOLD_TYPE_10:
npc->renderMode = 22;
func_802DE894(npc->spriteInstanceID, 15, temp_s0, temp_s5, 0, temp_s5, temp_s3);
func_802DE894(npc->spriteInstanceID, FOLD_TYPE_F, temp_s0, temp_s5, 0, temp_s5, temp_s3);
break;
}
}

View File

@ -666,17 +666,17 @@ s32 spr_free_sprite(s32 spriteInstanceID) {
return 0;
}
s32 func_802DE748(s32 arg0, s32 arg1) {
SpriteComponent** componentList = D_802DFA48[arg0].componentList;
s32 func_802DE748(s32 spriteIdx, s32 compIdx) {
SpriteComponent** componentList = D_802DFA48[spriteIdx].componentList;
if (componentList == NULL) {
return -1;
}
return componentList[arg1]->unk_4C & 0xFF;
return componentList[compIdx]->unk_4C & 0xFF;
}
void func_802DE780(s32 spriteIdx, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7) {
void func_802DE780(s32 spriteIdx, s32 compIdx, s32 foldType, s32 foldArg0, s32 foldArg1, s32 foldArg2, s32 foldArg3, s32 foldArg4) {
SpriteInstance* sprite = &D_802DFA48[spriteIdx];
SpriteComponent** componentList;
s32 i;
@ -688,9 +688,9 @@ void func_802DE780(s32 spriteIdx, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 ar
while ((s32) *componentList != -1) {
SpriteComponent* comp = *componentList;
if (arg1 == -1 || i == arg1) {
fold_update((u8)comp->unk_4C, arg2, arg3, arg4, arg5, arg6, arg7);
if (arg2 != FOLD_TYPE_NONE) {
if (compIdx == -1 || i == compIdx) {
fold_update((u8)comp->unk_4C, foldType, foldArg0, foldArg1, foldArg2, foldArg3, foldArg4);
if (foldType != FOLD_TYPE_NONE) {
comp->unk_4C |= 0x10000000;
} else {
comp->unk_4C &= ~0xF0000000;
@ -702,8 +702,8 @@ void func_802DE780(s32 spriteIdx, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 ar
}
}
void func_802DE894(s32 spriteIdx, s32 compListIdx, s32 foldType, s32 arg3, s32 arg4, s32 arg5, s32 arg6) {
func_802DE780(spriteIdx, -1, compListIdx, foldType, arg3, arg4, arg5, arg6);
void func_802DE894(s32 spriteIdx, s32 foldType, s32 foldArg0, s32 foldArg1, s32 foldArg2, s32 foldArg3, s32 foldArg4) {
func_802DE780(spriteIdx, -1, foldType, foldArg0, foldArg1, foldArg2, foldArg3, foldArg4);
}
// animList issue

View File

@ -3,6 +3,8 @@
#include "common.h"
#define SPR_PLAYER_COLOR_VARIATIONS 6
typedef struct SpriteComponent {
/* 0x00 */ s32 initialized;
/* 0x04 */ s32 unk_04;

View File

@ -54,7 +54,7 @@ typedef struct HudStatusIcon {
/* 0x28 */ s32 status4Radius;
/* 0x2C */ s32 status4OffsetY;
/* 0x30 */ s32 offsetY;
/* 0x34 */ f32 offsetX;
/* 0x34 */ s32 offsetX;
/* 0x38 */ HudComplexStatusIcon status1;
/* 0x48 */ HudComplexStatusIcon status2;
/* 0x58 */ HudComplexStatusIcon status3;
@ -158,8 +158,8 @@ void func_80045BC8(void) {
for (i = 0; i < ARRAY_COUNT(D_800A0BC0); i++) {
PopupMessage* popup = &D_800A0BC0[i];
if (popup->active && popup->unk_08 != NULL) {
popup->unk_08(popup);
if (popup->active && popup->renderWorldFunc != NULL) {
popup->renderWorldFunc(popup);
}
}
}
@ -169,8 +169,8 @@ void draw_merlee_messages(void) {
for (i = 0; i < ARRAY_COUNT(D_800A0BC0); i++) {
PopupMessage* popup = &D_800A0BC0[i];
if (popup->active && popup->drawFunc != NULL) {
popup->drawFunc(popup);
if (popup->active && popup->renderUIFunc != NULL) {
popup->renderUIFunc(popup);
}
}
}
@ -202,10 +202,10 @@ void show_merlee_message(s16 messageIndex, s16 duration) {
if (popup != NULL) {
popup->updateFunc = update_merlee_message;
popup->drawFunc = draw_merlee_message;
popup->renderUIFunc = draw_merlee_message;
popup->unk_17 = 1;
popup->unk_00 = 0;
popup->unk_08 = NULL;
popup->renderWorldFunc = NULL;
popup->messageIndex = messageIndex;
popup->duration = duration;
popup->unk_16 = 0;
@ -288,8 +288,8 @@ void init_all_status_icons(void) {
if (popup != NULL) {
popup->updateFunc = update_all_status_icons;
popup->unk_00 = 0;
popup->unk_08 = NULL;
popup->drawFunc = draw_all_status_icons;
popup->renderWorldFunc = NULL;
popup->renderUIFunc = draw_all_status_icons;
popup->message = general_heap_malloc(64 * sizeof(HudStatusIcon));
icons = D_800A0F44 = (HudStatusIcon*)(popup->message);
ASSERT(icons != NULL);
@ -983,7 +983,7 @@ void set_status_icons_properties(s32 iconID, f32 x, f32 y, f32 z, s32 arg, s32 a
icon->status4OffsetY = offsetY + 51;
}
void set_status_icons_offset(s32 iconID, s32 offsetY, f32 offsetX) {
void set_status_icons_offset(s32 iconID, s32 offsetY, s32 offsetX) {
HudStatusIcon* statusIcon = &D_800A0F44[iconID];
statusIcon->offsetY = offsetY;

View File

@ -11,7 +11,7 @@ dlabel D_8029D390
.section .text
glabel func_80257DA4
glabel appendGfx_player_actor
/* 186684 80257DA4 27BDFD18 */ addiu $sp, $sp, -0x2e8
/* 186688 80257DA8 AFB402B0 */ sw $s4, 0x2b0($sp)
/* 18668C 80257DAC 3C14800E */ lui $s4, %hi(gBattleStatus)

File diff suppressed because it is too large Load Diff

View File

@ -1,38 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_80259494
/* 187D74 80259494 8C8800C0 */ lw $t0, 0xc0($a0)
/* 187D78 80259498 810206CD */ lb $v0, 0x6cd($t0)
/* 187D7C 8025949C 18400019 */ blez $v0, .L80259504
/* 187D80 802594A0 0000482D */ daddu $t1, $zero, $zero
/* 187D84 802594A4 24070360 */ addiu $a3, $zero, 0x360
/* 187D88 802594A8 0100302D */ daddu $a2, $t0, $zero
.L802594AC:
/* 187D8C 802594AC 8CC206D4 */ lw $v0, 0x6d4($a2)
/* 187D90 802594B0 5040000F */ beql $v0, $zero, .L802594F0
/* 187D94 802594B4 24E70020 */ addiu $a3, $a3, 0x20
/* 187D98 802594B8 0040282D */ daddu $a1, $v0, $zero
/* 187D9C 802594BC 01072021 */ addu $a0, $t0, $a3
/* 187DA0 802594C0 0000182D */ daddu $v1, $zero, $zero
.L802594C4:
/* 187DA4 802594C4 94A20000 */ lhu $v0, ($a1)
/* 187DA8 802594C8 24A50002 */ addiu $a1, $a1, 2
/* 187DAC 802594CC 24630001 */ addiu $v1, $v1, 1
/* 187DB0 802594D0 3442FFFE */ ori $v0, $v0, 0xfffe
/* 187DB4 802594D4 A4820000 */ sh $v0, ($a0)
/* 187DB8 802594D8 28620010 */ slti $v0, $v1, 0x10
/* 187DBC 802594DC 1440FFF9 */ bnez $v0, .L802594C4
/* 187DC0 802594E0 24840002 */ addiu $a0, $a0, 2
/* 187DC4 802594E4 01071021 */ addu $v0, $t0, $a3
/* 187DC8 802594E8 ACC2076C */ sw $v0, 0x76c($a2)
/* 187DCC 802594EC 24E70020 */ addiu $a3, $a3, 0x20
.L802594F0:
/* 187DD0 802594F0 810206CD */ lb $v0, 0x6cd($t0)
/* 187DD4 802594F4 25290001 */ addiu $t1, $t1, 1
/* 187DD8 802594F8 0122102A */ slt $v0, $t1, $v0
/* 187DDC 802594FC 1440FFEB */ bnez $v0, .L802594AC
/* 187DE0 80259500 24C60004 */ addiu $a2, $a2, 4
.L80259504:
/* 187DE4 80259504 03E00008 */ jr $ra
/* 187DE8 80259508 00000000 */ nop

View File

@ -1,125 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8025950C
/* 187DEC 8025950C 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 187DF0 80259510 AFB1001C */ sw $s1, 0x1c($sp)
/* 187DF4 80259514 0080882D */ daddu $s1, $a0, $zero
/* 187DF8 80259518 AFB20020 */ sw $s2, 0x20($sp)
/* 187DFC 8025951C 00A0902D */ daddu $s2, $a1, $zero
/* 187E00 80259520 AFB30024 */ sw $s3, 0x24($sp)
/* 187E04 80259524 00C0982D */ daddu $s3, $a2, $zero
/* 187E08 80259528 240600FF */ addiu $a2, $zero, 0xff
/* 187E0C 8025952C AFBF0028 */ sw $ra, 0x28($sp)
/* 187E10 80259530 AFB00018 */ sw $s0, 0x18($sp)
/* 187E14 80259534 86230098 */ lh $v1, 0x98($s1)
/* 187E18 80259538 8E3000C0 */ lw $s0, 0xc0($s1)
/* 187E1C 8025953C 0066102A */ slt $v0, $v1, $a2
/* 187E20 80259540 10400003 */ beqz $v0, .L80259550
/* 187E24 80259544 0000382D */ daddu $a3, $zero, $zero
/* 187E28 80259548 3C078000 */ lui $a3, 0x8000
/* 187E2C 8025954C 0060302D */ daddu $a2, $v1, $zero
.L80259550:
/* 187E30 80259550 8E220000 */ lw $v0, ($s1)
/* 187E34 80259554 30420100 */ andi $v0, $v0, 0x100
/* 187E38 80259558 1040000C */ beqz $v0, .L8025958C
/* 187E3C 8025955C 3C038080 */ lui $v1, 0x8080
/* 187E40 80259560 34638081 */ ori $v1, $v1, 0x8081
/* 187E44 80259564 00061100 */ sll $v0, $a2, 4
/* 187E48 80259568 00461023 */ subu $v0, $v0, $a2
/* 187E4C 8025956C 000210C0 */ sll $v0, $v0, 3
/* 187E50 80259570 00430018 */ mult $v0, $v1
/* 187E54 80259574 3C078000 */ lui $a3, 0x8000
/* 187E58 80259578 00004010 */ mfhi $t0
/* 187E5C 8025957C 01021821 */ addu $v1, $t0, $v0
/* 187E60 80259580 000319C3 */ sra $v1, $v1, 7
/* 187E64 80259584 000217C3 */ sra $v0, $v0, 0x1f
/* 187E68 80259588 00623023 */ subu $a2, $v1, $v0
.L8025958C:
/* 187E6C 8025958C 92020768 */ lbu $v0, 0x768($s0)
/* 187E70 80259590 1040003F */ beqz $v0, .L80259690
/* 187E74 80259594 0240282D */ daddu $a1, $s2, $zero
/* 187E78 80259598 96240088 */ lhu $a0, 0x88($s1)
/* 187E7C 8025959C 0C0B7A90 */ jal spr_get_npc_palettes
/* 187E80 802595A0 00000000 */ nop
/* 187E84 802595A4 AE0206D0 */ sw $v0, 0x6d0($s0)
/* 187E88 802595A8 0040202D */ daddu $a0, $v0, $zero
/* 187E8C 802595AC A20006CD */ sb $zero, 0x6cd($s0)
/* 187E90 802595B0 8C830000 */ lw $v1, ($a0)
/* 187E94 802595B4 2402FFFF */ addiu $v0, $zero, -1
/* 187E98 802595B8 1062000C */ beq $v1, $v0, .L802595EC
/* 187E9C 802595BC 00000000 */ nop
/* 187EA0 802595C0 0080182D */ daddu $v1, $a0, $zero
/* 187EA4 802595C4 0040202D */ daddu $a0, $v0, $zero
.L802595C8:
/* 187EA8 802595C8 920206CD */ lbu $v0, 0x6cd($s0)
/* 187EAC 802595CC 24420001 */ addiu $v0, $v0, 1
/* 187EB0 802595D0 A20206CD */ sb $v0, 0x6cd($s0)
/* 187EB4 802595D4 00021600 */ sll $v0, $v0, 0x18
/* 187EB8 802595D8 00021583 */ sra $v0, $v0, 0x16
/* 187EBC 802595DC 00431021 */ addu $v0, $v0, $v1
/* 187EC0 802595E0 8C420000 */ lw $v0, ($v0)
/* 187EC4 802595E4 1444FFF8 */ bne $v0, $a0, .L802595C8
/* 187EC8 802595E8 00000000 */ nop
.L802595EC:
/* 187ECC 802595EC 820206CD */ lb $v0, 0x6cd($s0)
/* 187ED0 802595F0 18400016 */ blez $v0, .L8025964C
/* 187ED4 802595F4 0000302D */ daddu $a2, $zero, $zero
.L802595F8:
/* 187ED8 802595F8 8E0206D0 */ lw $v0, 0x6d0($s0)
/* 187EDC 802595FC 00061880 */ sll $v1, $a2, 2
/* 187EE0 80259600 00621821 */ addu $v1, $v1, $v0
/* 187EE4 80259604 00061140 */ sll $v0, $a2, 5
/* 187EE8 80259608 8C630000 */ lw $v1, ($v1)
/* 187EEC 8025960C 10600009 */ beqz $v1, .L80259634
/* 187EF0 80259610 02022821 */ addu $a1, $s0, $v0
/* 187EF4 80259614 0000202D */ daddu $a0, $zero, $zero
.L80259618:
/* 187EF8 80259618 94620000 */ lhu $v0, ($v1)
/* 187EFC 8025961C 24630002 */ addiu $v1, $v1, 2
/* 187F00 80259620 24840001 */ addiu $a0, $a0, 1
/* 187F04 80259624 A4A20000 */ sh $v0, ($a1)
/* 187F08 80259628 28820010 */ slti $v0, $a0, 0x10
/* 187F0C 8025962C 1440FFFA */ bnez $v0, .L80259618
/* 187F10 80259630 24A50002 */ addiu $a1, $a1, 2
.L80259634:
/* 187F14 80259634 820206CD */ lb $v0, 0x6cd($s0)
/* 187F18 80259638 24C60001 */ addiu $a2, $a2, 1
/* 187F1C 8025963C 00C2102A */ slt $v0, $a2, $v0
/* 187F20 80259640 1440FFED */ bnez $v0, .L802595F8
/* 187F24 80259644 00000000 */ nop
/* 187F28 80259648 820206CD */ lb $v0, 0x6cd($s0)
.L8025964C:
/* 187F2C 8025964C 1840000A */ blez $v0, .L80259678
/* 187F30 80259650 0000302D */ daddu $a2, $zero, $zero
/* 187F34 80259654 0200202D */ daddu $a0, $s0, $zero
/* 187F38 80259658 0200182D */ daddu $v1, $s0, $zero
.L8025965C:
/* 187F3C 8025965C AC6406D4 */ sw $a0, 0x6d4($v1)
/* 187F40 80259660 24840020 */ addiu $a0, $a0, 0x20
/* 187F44 80259664 820206CD */ lb $v0, 0x6cd($s0)
/* 187F48 80259668 24C60001 */ addiu $a2, $a2, 1
/* 187F4C 8025966C 00C2102A */ slt $v0, $a2, $v0
/* 187F50 80259670 1440FFFA */ bnez $v0, .L8025965C
/* 187F54 80259674 24630004 */ addiu $v1, $v1, 4
.L80259678:
/* 187F58 80259678 0220202D */ daddu $a0, $s1, $zero
/* 187F5C 8025967C 0240282D */ daddu $a1, $s2, $zero
/* 187F60 80259680 0C0965B0 */ jal func_802596C0
/* 187F64 80259684 0260302D */ daddu $a2, $s3, $zero
/* 187F68 80259688 080965A9 */ j .L802596A4
/* 187F6C 8025968C 00000000 */ nop
.L80259690:
/* 187F70 80259690 8E240084 */ lw $a0, 0x84($s1)
/* 187F74 80259694 AFB30010 */ sw $s3, 0x10($sp)
/* 187F78 80259698 00872025 */ or $a0, $a0, $a3
/* 187F7C 8025969C 0C0B78F6 */ jal spr_draw_npc_sprite
/* 187F80 802596A0 0000382D */ daddu $a3, $zero, $zero
.L802596A4:
/* 187F84 802596A4 8FBF0028 */ lw $ra, 0x28($sp)
/* 187F88 802596A8 8FB30024 */ lw $s3, 0x24($sp)
/* 187F8C 802596AC 8FB20020 */ lw $s2, 0x20($sp)
/* 187F90 802596B0 8FB1001C */ lw $s1, 0x1c($sp)
/* 187F94 802596B4 8FB00018 */ lw $s0, 0x18($sp)
/* 187F98 802596B8 03E00008 */ jr $ra
/* 187F9C 802596BC 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,123 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_802597B0
/* 188090 802597B0 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 188094 802597B4 AFB1001C */ sw $s1, 0x1c($sp)
/* 188098 802597B8 0080882D */ daddu $s1, $a0, $zero
/* 18809C 802597BC AFB30024 */ sw $s3, 0x24($sp)
/* 1880A0 802597C0 00A0982D */ daddu $s3, $a1, $zero
/* 1880A4 802597C4 AFB20020 */ sw $s2, 0x20($sp)
/* 1880A8 802597C8 00C0902D */ daddu $s2, $a2, $zero
/* 1880AC 802597CC 240600FF */ addiu $a2, $zero, 0xff
/* 1880B0 802597D0 AFBF0028 */ sw $ra, 0x28($sp)
/* 1880B4 802597D4 AFB00018 */ sw $s0, 0x18($sp)
/* 1880B8 802597D8 86230098 */ lh $v1, 0x98($s1)
/* 1880BC 802597DC 8E3000C0 */ lw $s0, 0xc0($s1)
/* 1880C0 802597E0 0066102A */ slt $v0, $v1, $a2
/* 1880C4 802597E4 10400003 */ beqz $v0, .L802597F4
/* 1880C8 802597E8 0000202D */ daddu $a0, $zero, $zero
/* 1880CC 802597EC 3C048000 */ lui $a0, 0x8000
/* 1880D0 802597F0 0060302D */ daddu $a2, $v1, $zero
.L802597F4:
/* 1880D4 802597F4 8E220000 */ lw $v0, ($s1)
/* 1880D8 802597F8 30420100 */ andi $v0, $v0, 0x100
/* 1880DC 802597FC 1040000C */ beqz $v0, .L80259830
/* 1880E0 80259800 3C038080 */ lui $v1, 0x8080
/* 1880E4 80259804 34638081 */ ori $v1, $v1, 0x8081
/* 1880E8 80259808 00061100 */ sll $v0, $a2, 4
/* 1880EC 8025980C 00461023 */ subu $v0, $v0, $a2
/* 1880F0 80259810 000210C0 */ sll $v0, $v0, 3
/* 1880F4 80259814 00430018 */ mult $v0, $v1
/* 1880F8 80259818 3C048000 */ lui $a0, 0x8000
/* 1880FC 8025981C 00004010 */ mfhi $t0
/* 188100 80259820 01021821 */ addu $v1, $t0, $v0
/* 188104 80259824 000319C3 */ sra $v1, $v1, 7
/* 188108 80259828 000217C3 */ sra $v0, $v0, 0x1f
/* 18810C 8025982C 00623023 */ subu $a2, $v1, $v0
.L80259830:
/* 188110 80259830 92020768 */ lbu $v0, 0x768($s0)
/* 188114 80259834 5040003F */ beql $v0, $zero, .L80259934
/* 188118 80259838 AFB20010 */ sw $s2, 0x10($sp)
/* 18811C 8025983C 96240088 */ lhu $a0, 0x88($s1)
/* 188120 80259840 0C0B7830 */ jal spr_get_player_palettes
/* 188124 80259844 00000000 */ nop
/* 188128 80259848 AE0206D0 */ sw $v0, 0x6d0($s0)
/* 18812C 8025984C 0040202D */ daddu $a0, $v0, $zero
/* 188130 80259850 A20006CD */ sb $zero, 0x6cd($s0)
/* 188134 80259854 8C830000 */ lw $v1, ($a0)
/* 188138 80259858 2402FFFF */ addiu $v0, $zero, -1
/* 18813C 8025985C 1062000C */ beq $v1, $v0, .L80259890
/* 188140 80259860 00000000 */ nop
/* 188144 80259864 0080182D */ daddu $v1, $a0, $zero
/* 188148 80259868 0040202D */ daddu $a0, $v0, $zero
.L8025986C:
/* 18814C 8025986C 920206CD */ lbu $v0, 0x6cd($s0)
/* 188150 80259870 24420001 */ addiu $v0, $v0, 1
/* 188154 80259874 A20206CD */ sb $v0, 0x6cd($s0)
/* 188158 80259878 00021600 */ sll $v0, $v0, 0x18
/* 18815C 8025987C 00021583 */ sra $v0, $v0, 0x16
/* 188160 80259880 00431021 */ addu $v0, $v0, $v1
/* 188164 80259884 8C420000 */ lw $v0, ($v0)
/* 188168 80259888 1444FFF8 */ bne $v0, $a0, .L8025986C
/* 18816C 8025988C 00000000 */ nop
.L80259890:
/* 188170 80259890 820206CD */ lb $v0, 0x6cd($s0)
/* 188174 80259894 18400016 */ blez $v0, .L802598F0
/* 188178 80259898 0000302D */ daddu $a2, $zero, $zero
.L8025989C:
/* 18817C 8025989C 8E0206D0 */ lw $v0, 0x6d0($s0)
/* 188180 802598A0 00061880 */ sll $v1, $a2, 2
/* 188184 802598A4 00621821 */ addu $v1, $v1, $v0
/* 188188 802598A8 00061140 */ sll $v0, $a2, 5
/* 18818C 802598AC 8C630000 */ lw $v1, ($v1)
/* 188190 802598B0 10600009 */ beqz $v1, .L802598D8
/* 188194 802598B4 02022821 */ addu $a1, $s0, $v0
/* 188198 802598B8 0000202D */ daddu $a0, $zero, $zero
.L802598BC:
/* 18819C 802598BC 94620000 */ lhu $v0, ($v1)
/* 1881A0 802598C0 24630002 */ addiu $v1, $v1, 2
/* 1881A4 802598C4 24840001 */ addiu $a0, $a0, 1
/* 1881A8 802598C8 A4A20000 */ sh $v0, ($a1)
/* 1881AC 802598CC 28820010 */ slti $v0, $a0, 0x10
/* 1881B0 802598D0 1440FFFA */ bnez $v0, .L802598BC
/* 1881B4 802598D4 24A50002 */ addiu $a1, $a1, 2
.L802598D8:
/* 1881B8 802598D8 820206CD */ lb $v0, 0x6cd($s0)
/* 1881BC 802598DC 24C60001 */ addiu $a2, $a2, 1
/* 1881C0 802598E0 00C2102A */ slt $v0, $a2, $v0
/* 1881C4 802598E4 1440FFED */ bnez $v0, .L8025989C
/* 1881C8 802598E8 00000000 */ nop
/* 1881CC 802598EC 820206CD */ lb $v0, 0x6cd($s0)
.L802598F0:
/* 1881D0 802598F0 1840000A */ blez $v0, .L8025991C
/* 1881D4 802598F4 0000302D */ daddu $a2, $zero, $zero
/* 1881D8 802598F8 0200202D */ daddu $a0, $s0, $zero
/* 1881DC 802598FC 0200182D */ daddu $v1, $s0, $zero
.L80259900:
/* 1881E0 80259900 AC6406D4 */ sw $a0, 0x6d4($v1)
/* 1881E4 80259904 24840020 */ addiu $a0, $a0, 0x20
/* 1881E8 80259908 820206CD */ lb $v0, 0x6cd($s0)
/* 1881EC 8025990C 24C60001 */ addiu $a2, $a2, 1
/* 1881F0 80259910 00C2102A */ slt $v0, $a2, $v0
/* 1881F4 80259914 1440FFFA */ bnez $v0, .L80259900
/* 1881F8 80259918 24630004 */ addiu $v1, $v1, 4
.L8025991C:
/* 1881FC 8025991C 0220202D */ daddu $a0, $s1, $zero
/* 188200 80259920 0260282D */ daddu $a1, $s3, $zero
/* 188204 80259924 0C096657 */ jal func_8025995C
/* 188208 80259928 0240302D */ daddu $a2, $s2, $zero
/* 18820C 8025992C 08096650 */ j .L80259940
/* 188210 80259930 00000000 */ nop
.L80259934:
/* 188214 80259934 0260282D */ daddu $a1, $s3, $zero
/* 188218 80259938 0C0B7710 */ jal spr_draw_player_sprite
/* 18821C 8025993C 0000382D */ daddu $a3, $zero, $zero
.L80259940:
/* 188220 80259940 8FBF0028 */ lw $ra, 0x28($sp)
/* 188224 80259944 8FB30024 */ lw $s3, 0x24($sp)
/* 188228 80259948 8FB20020 */ lw $s2, 0x20($sp)
/* 18822C 8025994C 8FB1001C */ lw $s1, 0x1c($sp)
/* 188230 80259950 8FB00018 */ lw $s0, 0x18($sp)
/* 188234 80259954 03E00008 */ jr $ra
/* 188238 80259958 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -1,453 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8025BAA0
/* 18A380 8025BAA0 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 18A384 8025BAA4 AFB40020 */ sw $s4, 0x20($sp)
/* 18A388 8025BAA8 0080A02D */ daddu $s4, $a0, $zero
/* 18A38C 8025BAAC AFB20018 */ sw $s2, 0x18($sp)
/* 18A390 8025BAB0 00A0902D */ daddu $s2, $a1, $zero
/* 18A394 8025BAB4 AFB50024 */ sw $s5, 0x24($sp)
/* 18A398 8025BAB8 00C0A82D */ daddu $s5, $a2, $zero
/* 18A39C 8025BABC AFB3001C */ sw $s3, 0x1c($sp)
/* 18A3A0 8025BAC0 AFBF0030 */ sw $ra, 0x30($sp)
/* 18A3A4 8025BAC4 AFB7002C */ sw $s7, 0x2c($sp)
/* 18A3A8 8025BAC8 AFB60028 */ sw $s6, 0x28($sp)
/* 18A3AC 8025BACC AFB10014 */ sw $s1, 0x14($sp)
/* 18A3B0 8025BAD0 AFB00010 */ sw $s0, 0x10($sp)
/* 18A3B4 8025BAD4 8E5000C0 */ lw $s0, 0xc0($s2)
/* 18A3B8 8025BAD8 8FB60048 */ lw $s6, 0x48($sp)
/* 18A3BC 8025BADC 820206C1 */ lb $v0, 0x6c1($s0)
/* 18A3C0 8025BAE0 8FB1004C */ lw $s1, 0x4c($sp)
/* 18A3C4 8025BAE4 1040005A */ beqz $v0, .L8025BC50
/* 18A3C8 8025BAE8 00E0982D */ daddu $s3, $a3, $zero
/* 18A3CC 8025BAEC 16800016 */ bnez $s4, .L8025BB48
/* 18A3D0 8025BAF0 00000000 */ nop
/* 18A3D4 8025BAF4 0C0B7830 */ jal spr_get_player_palettes
/* 18A3D8 8025BAF8 96440088 */ lhu $a0, 0x88($s2)
/* 18A3DC 8025BAFC AE0206D0 */ sw $v0, 0x6d0($s0)
/* 18A3E0 8025BB00 0040202D */ daddu $a0, $v0, $zero
/* 18A3E4 8025BB04 A20006CD */ sb $zero, 0x6cd($s0)
/* 18A3E8 8025BB08 8C830000 */ lw $v1, ($a0)
/* 18A3EC 8025BB0C 2402FFFF */ addiu $v0, $zero, -1
/* 18A3F0 8025BB10 10620020 */ beq $v1, $v0, .L8025BB94
/* 18A3F4 8025BB14 0080182D */ daddu $v1, $a0, $zero
/* 18A3F8 8025BB18 0040202D */ daddu $a0, $v0, $zero
.L8025BB1C:
/* 18A3FC 8025BB1C 920206CD */ lbu $v0, 0x6cd($s0)
/* 18A400 8025BB20 24420001 */ addiu $v0, $v0, 1
/* 18A404 8025BB24 A20206CD */ sb $v0, 0x6cd($s0)
/* 18A408 8025BB28 00021600 */ sll $v0, $v0, 0x18
/* 18A40C 8025BB2C 00021583 */ sra $v0, $v0, 0x16
/* 18A410 8025BB30 00431021 */ addu $v0, $v0, $v1
/* 18A414 8025BB34 8C420000 */ lw $v0, ($v0)
/* 18A418 8025BB38 10440016 */ beq $v0, $a0, .L8025BB94
/* 18A41C 8025BB3C 00000000 */ nop
/* 18A420 8025BB40 08096EC7 */ j .L8025BB1C
/* 18A424 8025BB44 00000000 */ nop
.L8025BB48:
/* 18A428 8025BB48 0C0B7A90 */ jal spr_get_npc_palettes
/* 18A42C 8025BB4C 96440088 */ lhu $a0, 0x88($s2)
/* 18A430 8025BB50 AE0206D0 */ sw $v0, 0x6d0($s0)
/* 18A434 8025BB54 0040202D */ daddu $a0, $v0, $zero
/* 18A438 8025BB58 A20006CD */ sb $zero, 0x6cd($s0)
/* 18A43C 8025BB5C 8C830000 */ lw $v1, ($a0)
/* 18A440 8025BB60 2402FFFF */ addiu $v0, $zero, -1
/* 18A444 8025BB64 1062000B */ beq $v1, $v0, .L8025BB94
/* 18A448 8025BB68 0080182D */ daddu $v1, $a0, $zero
/* 18A44C 8025BB6C 0040202D */ daddu $a0, $v0, $zero
.L8025BB70:
/* 18A450 8025BB70 920206CD */ lbu $v0, 0x6cd($s0)
/* 18A454 8025BB74 24420001 */ addiu $v0, $v0, 1
/* 18A458 8025BB78 A20206CD */ sb $v0, 0x6cd($s0)
/* 18A45C 8025BB7C 00021600 */ sll $v0, $v0, 0x18
/* 18A460 8025BB80 00021583 */ sra $v0, $v0, 0x16
/* 18A464 8025BB84 00431021 */ addu $v0, $v0, $v1
/* 18A468 8025BB88 8C420000 */ lw $v0, ($v0)
/* 18A46C 8025BB8C 1444FFF8 */ bne $v0, $a0, .L8025BB70
/* 18A470 8025BB90 00000000 */ nop
.L8025BB94:
/* 18A474 8025BB94 820306C1 */ lb $v1, 0x6c1($s0)
/* 18A478 8025BB98 24020001 */ addiu $v0, $zero, 1
/* 18A47C 8025BB9C 14620004 */ bne $v1, $v0, .L8025BBB0
/* 18A480 8025BBA0 240200FF */ addiu $v0, $zero, 0xff
/* 18A484 8025BBA4 A20006C2 */ sb $zero, 0x6c2($s0)
/* 18A488 8025BBA8 08096EEE */ j .L8025BBB8
/* 18A48C 8025BBAC A60006CA */ sh $zero, 0x6ca($s0)
.L8025BBB0:
/* 18A490 8025BBB0 A20006C2 */ sb $zero, 0x6c2($s0)
/* 18A494 8025BBB4 A60206CA */ sh $v0, 0x6ca($s0)
.L8025BBB8:
/* 18A498 8025BBB8 820206CD */ lb $v0, 0x6cd($s0)
/* 18A49C 8025BBBC 18400017 */ blez $v0, .L8025BC1C
/* 18A4A0 8025BBC0 0000202D */ daddu $a0, $zero, $zero
/* 18A4A4 8025BBC4 0200282D */ daddu $a1, $s0, $zero
.L8025BBC8:
/* 18A4A8 8025BBC8 8E0206D0 */ lw $v0, 0x6d0($s0)
/* 18A4AC 8025BBCC 00041880 */ sll $v1, $a0, 2
/* 18A4B0 8025BBD0 00621821 */ addu $v1, $v1, $v0
/* 18A4B4 8025BBD4 00041140 */ sll $v0, $a0, 5
/* 18A4B8 8025BBD8 8C6A0000 */ lw $t2, ($v1)
/* 18A4BC 8025BBDC 02024821 */ addu $t1, $s0, $v0
/* 18A4C0 8025BBE0 11400009 */ beqz $t2, .L8025BC08
/* 18A4C4 8025BBE4 ACA906D4 */ sw $t1, 0x6d4($a1)
/* 18A4C8 8025BBE8 0000582D */ daddu $t3, $zero, $zero
.L8025BBEC:
/* 18A4CC 8025BBEC 95420000 */ lhu $v0, ($t2)
/* 18A4D0 8025BBF0 254A0002 */ addiu $t2, $t2, 2
/* 18A4D4 8025BBF4 256B0001 */ addiu $t3, $t3, 1
/* 18A4D8 8025BBF8 A5220000 */ sh $v0, ($t1)
/* 18A4DC 8025BBFC 29620010 */ slti $v0, $t3, 0x10
/* 18A4E0 8025BC00 1440FFFA */ bnez $v0, .L8025BBEC
/* 18A4E4 8025BC04 25290002 */ addiu $t1, $t1, 2
.L8025BC08:
/* 18A4E8 8025BC08 820206CD */ lb $v0, 0x6cd($s0)
/* 18A4EC 8025BC0C 24840001 */ addiu $a0, $a0, 1
/* 18A4F0 8025BC10 0082102A */ slt $v0, $a0, $v0
/* 18A4F4 8025BC14 1440FFEC */ bnez $v0, .L8025BBC8
/* 18A4F8 8025BC18 24A50004 */ addiu $a1, $a1, 4
.L8025BC1C:
/* 18A4FC 8025BC1C 16600007 */ bnez $s3, .L8025BC3C
/* 18A500 8025BC20 00000000 */ nop
/* 18A504 8025BC24 96020744 */ lhu $v0, 0x744($s0)
/* 18A508 8025BC28 A6000744 */ sh $zero, 0x744($s0)
/* 18A50C 8025BC2C A6020746 */ sh $v0, 0x746($s0)
/* 18A510 8025BC30 0040182D */ daddu $v1, $v0, $zero
/* 18A514 8025BC34 A6020748 */ sh $v0, 0x748($s0)
/* 18A518 8025BC38 A603074A */ sh $v1, 0x74a($s0)
.L8025BC3C:
/* 18A51C 8025BC3C 96020744 */ lhu $v0, 0x744($s0)
/* 18A520 8025BC40 A60006CA */ sh $zero, 0x6ca($s0)
/* 18A524 8025BC44 A20006C2 */ sb $zero, 0x6c2($s0)
/* 18A528 8025BC48 A20006C1 */ sb $zero, 0x6c1($s0)
/* 18A52C 8025BC4C A60206C8 */ sh $v0, 0x6c8($s0)
.L8025BC50:
/* 18A530 8025BC50 820306C2 */ lb $v1, 0x6c2($s0)
/* 18A534 8025BC54 10600005 */ beqz $v1, .L8025BC6C
/* 18A538 8025BC58 24020001 */ addiu $v0, $zero, 1
/* 18A53C 8025BC5C 1062000E */ beq $v1, $v0, .L8025BC98
/* 18A540 8025BC60 24020002 */ addiu $v0, $zero, 2
/* 18A544 8025BC64 08096FA3 */ j .L8025BE8C
/* 18A548 8025BC68 00000000 */ nop
.L8025BC6C:
/* 18A54C 8025BC6C 16200085 */ bnez $s1, .L8025BE84
/* 18A550 8025BC70 00000000 */ nop
/* 18A554 8025BC74 860206C8 */ lh $v0, 0x6c8($s0)
/* 18A558 8025BC78 960306C8 */ lhu $v1, 0x6c8($s0)
/* 18A55C 8025BC7C 10400003 */ beqz $v0, .L8025BC8C
/* 18A560 8025BC80 2462FFFF */ addiu $v0, $v1, -1
/* 18A564 8025BC84 08096FA1 */ j .L8025BE84
/* 18A568 8025BC88 A60206C8 */ sh $v0, 0x6c8($s0)
.L8025BC8C:
/* 18A56C 8025BC8C 24020001 */ addiu $v0, $zero, 1
/* 18A570 8025BC90 A60006CA */ sh $zero, 0x6ca($s0)
/* 18A574 8025BC94 A20206C2 */ sb $v0, 0x6c2($s0)
.L8025BC98:
/* 18A578 8025BC98 16200018 */ bnez $s1, .L8025BCFC
/* 18A57C 8025BC9C 3C0651EB */ lui $a2, 0x51eb
/* 18A580 8025BCA0 86020746 */ lh $v0, 0x746($s0)
/* 18A584 8025BCA4 24036400 */ addiu $v1, $zero, 0x6400
/* 18A588 8025BCA8 14400002 */ bnez $v0, .L8025BCB4
/* 18A58C 8025BCAC 0062001A */ div $zero, $v1, $v0
/* 18A590 8025BCB0 0007000D */ break 7
.L8025BCB4:
/* 18A594 8025BCB4 2401FFFF */ addiu $at, $zero, -1
/* 18A598 8025BCB8 14410004 */ bne $v0, $at, .L8025BCCC
/* 18A59C 8025BCBC 3C018000 */ lui $at, 0x8000
/* 18A5A0 8025BCC0 14610002 */ bne $v1, $at, .L8025BCCC
/* 18A5A4 8025BCC4 00000000 */ nop
/* 18A5A8 8025BCC8 0006000D */ break 6
.L8025BCCC:
/* 18A5AC 8025BCCC 00001812 */ mflo $v1
/* 18A5B0 8025BCD0 960206CA */ lhu $v0, 0x6ca($s0)
/* 18A5B4 8025BCD4 00431021 */ addu $v0, $v0, $v1
/* 18A5B8 8025BCD8 A60206CA */ sh $v0, 0x6ca($s0)
/* 18A5BC 8025BCDC 00021400 */ sll $v0, $v0, 0x10
/* 18A5C0 8025BCE0 00021403 */ sra $v0, $v0, 0x10
/* 18A5C4 8025BCE4 2842639D */ slti $v0, $v0, 0x639d
/* 18A5C8 8025BCE8 14400005 */ bnez $v0, .L8025BD00
/* 18A5CC 8025BCEC 34C6851F */ ori $a2, $a2, 0x851f
/* 18A5D0 8025BCF0 2402639C */ addiu $v0, $zero, 0x639c
/* 18A5D4 8025BCF4 A60206CA */ sh $v0, 0x6ca($s0)
/* 18A5D8 8025BCF8 3C0651EB */ lui $a2, 0x51eb
.L8025BCFC:
/* 18A5DC 8025BCFC 34C6851F */ ori $a2, $a2, 0x851f
.L8025BD00:
/* 18A5E0 8025BD00 0200682D */ daddu $t5, $s0, $zero
/* 18A5E4 8025BD04 0000582D */ daddu $t3, $zero, $zero
/* 18A5E8 8025BD08 3C0F8080 */ lui $t7, 0x8080
/* 18A5EC 8025BD0C 35EF8081 */ ori $t7, $t7, 0x8081
/* 18A5F0 8025BD10 86020740 */ lh $v0, 0x740($s0)
/* 18A5F4 8025BD14 8E0506D0 */ lw $a1, 0x6d0($s0)
/* 18A5F8 8025BD18 960306CA */ lhu $v1, 0x6ca($s0)
/* 18A5FC 8025BD1C 00021080 */ sll $v0, $v0, 2
/* 18A600 8025BD20 00451021 */ addu $v0, $v0, $a1
/* 18A604 8025BD24 00031C00 */ sll $v1, $v1, 0x10
/* 18A608 8025BD28 00032403 */ sra $a0, $v1, 0x10
/* 18A60C 8025BD2C 8C4A0000 */ lw $t2, ($v0)
/* 18A610 8025BD30 86020742 */ lh $v0, 0x742($s0)
/* 18A614 8025BD34 00860018 */ mult $a0, $a2
/* 18A618 8025BD38 00021080 */ sll $v0, $v0, 2
/* 18A61C 8025BD3C 00451021 */ addu $v0, $v0, $a1
/* 18A620 8025BD40 8C490000 */ lw $t1, ($v0)
/* 18A624 8025BD44 00031FC3 */ sra $v1, $v1, 0x1f
/* 18A628 8025BD48 AE1006D4 */ sw $s0, 0x6d4($s0)
/* 18A62C 8025BD4C 0000C810 */ mfhi $t9
/* 18A630 8025BD50 00191143 */ sra $v0, $t9, 5
/* 18A634 8025BD54 0043C023 */ subu $t8, $v0, $v1
/* 18A638 8025BD58 330C00FF */ andi $t4, $t8, 0xff
/* 18A63C 8025BD5C 240200FF */ addiu $v0, $zero, 0xff
/* 18A640 8025BD60 004C7023 */ subu $t6, $v0, $t4
.L8025BD64:
/* 18A644 8025BD64 95430000 */ lhu $v1, ($t2)
/* 18A648 8025BD68 000312C2 */ srl $v0, $v1, 0xb
/* 18A64C 8025BD6C 004E0018 */ mult $v0, $t6
/* 18A650 8025BD70 95240000 */ lhu $a0, ($t1)
/* 18A654 8025BD74 00002812 */ mflo $a1
/* 18A658 8025BD78 000412C2 */ srl $v0, $a0, 0xb
/* 18A65C 8025BD7C 00000000 */ nop
/* 18A660 8025BD80 004C0018 */ mult $v0, $t4
/* 18A664 8025BD84 00004012 */ mflo $t0
/* 18A668 8025BD88 00A82821 */ addu $a1, $a1, $t0
/* 18A66C 8025BD8C 00000000 */ nop
/* 18A670 8025BD90 00AF0018 */ mult $a1, $t7
/* 18A674 8025BD94 00009810 */ mfhi $s3
/* 18A678 8025BD98 00031182 */ srl $v0, $v1, 6
/* 18A67C 8025BD9C 3042001F */ andi $v0, $v0, 0x1f
/* 18A680 8025BDA0 004E0018 */ mult $v0, $t6
/* 18A684 8025BDA4 00004012 */ mflo $t0
/* 18A688 8025BDA8 00041182 */ srl $v0, $a0, 6
/* 18A68C 8025BDAC 3042001F */ andi $v0, $v0, 0x1f
/* 18A690 8025BDB0 004C0018 */ mult $v0, $t4
/* 18A694 8025BDB4 00003812 */ mflo $a3
/* 18A698 8025BDB8 00031842 */ srl $v1, $v1, 1
/* 18A69C 8025BDBC 3063001F */ andi $v1, $v1, 0x1f
/* 18A6A0 8025BDC0 006E0018 */ mult $v1, $t6
/* 18A6A4 8025BDC4 00001812 */ mflo $v1
/* 18A6A8 8025BDC8 00042042 */ srl $a0, $a0, 1
/* 18A6AC 8025BDCC 3084001F */ andi $a0, $a0, 0x1f
/* 18A6B0 8025BDD0 008C0018 */ mult $a0, $t4
/* 18A6B4 8025BDD4 254A0002 */ addiu $t2, $t2, 2
/* 18A6B8 8025BDD8 91260001 */ lbu $a2, 1($t1)
/* 18A6BC 8025BDDC 25290002 */ addiu $t1, $t1, 2
/* 18A6C0 8025BDE0 0000B812 */ mflo $s7
/* 18A6C4 8025BDE4 256B0001 */ addiu $t3, $t3, 1
/* 18A6C8 8025BDE8 01072021 */ addu $a0, $t0, $a3
/* 18A6CC 8025BDEC 008F0018 */ mult $a0, $t7
/* 18A6D0 8025BDF0 30C60001 */ andi $a2, $a2, 1
/* 18A6D4 8025BDF4 02651021 */ addu $v0, $s3, $a1
/* 18A6D8 8025BDF8 000211C3 */ sra $v0, $v0, 7
/* 18A6DC 8025BDFC 00052FC3 */ sra $a1, $a1, 0x1f
/* 18A6E0 8025BE00 00004010 */ mfhi $t0
/* 18A6E4 8025BE04 00453823 */ subu $a3, $v0, $a1
/* 18A6E8 8025BE08 00771821 */ addu $v1, $v1, $s7
/* 18A6EC 8025BE0C 006F0018 */ mult $v1, $t7
/* 18A6F0 8025BE10 01041021 */ addu $v0, $t0, $a0
/* 18A6F4 8025BE14 000211C3 */ sra $v0, $v0, 7
/* 18A6F8 8025BE18 000427C3 */ sra $a0, $a0, 0x1f
/* 18A6FC 8025BE1C 00442823 */ subu $a1, $v0, $a0
/* 18A700 8025BE20 00009810 */ mfhi $s3
/* 18A704 8025BE24 02631021 */ addu $v0, $s3, $v1
/* 18A708 8025BE28 000211C3 */ sra $v0, $v0, 7
/* 18A70C 8025BE2C 00031FC3 */ sra $v1, $v1, 0x1f
/* 18A710 8025BE30 00432023 */ subu $a0, $v0, $v1
/* 18A714 8025BE34 30E300FF */ andi $v1, $a3, 0xff
/* 18A718 8025BE38 00031AC0 */ sll $v1, $v1, 0xb
/* 18A71C 8025BE3C 30A200FF */ andi $v0, $a1, 0xff
/* 18A720 8025BE40 00021180 */ sll $v0, $v0, 6
/* 18A724 8025BE44 00621825 */ or $v1, $v1, $v0
/* 18A728 8025BE48 308200FF */ andi $v0, $a0, 0xff
/* 18A72C 8025BE4C 00021040 */ sll $v0, $v0, 1
/* 18A730 8025BE50 00621825 */ or $v1, $v1, $v0
/* 18A734 8025BE54 00C33025 */ or $a2, $a2, $v1
/* 18A738 8025BE58 A5A60000 */ sh $a2, ($t5)
/* 18A73C 8025BE5C 29620010 */ slti $v0, $t3, 0x10
/* 18A740 8025BE60 1440FFC0 */ bnez $v0, .L8025BD64
/* 18A744 8025BE64 25AD0002 */ addiu $t5, $t5, 2
/* 18A748 8025BE68 330300FF */ andi $v1, $t8, 0xff
/* 18A74C 8025BE6C 240200FF */ addiu $v0, $zero, 0xff
/* 18A750 8025BE70 14620004 */ bne $v1, $v0, .L8025BE84
/* 18A754 8025BE74 24020002 */ addiu $v0, $zero, 2
/* 18A758 8025BE78 96030748 */ lhu $v1, 0x748($s0)
/* 18A75C 8025BE7C A20206C2 */ sb $v0, 0x6c2($s0)
/* 18A760 8025BE80 A60306C8 */ sh $v1, 0x6c8($s0)
.L8025BE84:
/* 18A764 8025BE84 820306C2 */ lb $v1, 0x6c2($s0)
/* 18A768 8025BE88 24020002 */ addiu $v0, $zero, 2
.L8025BE8C:
/* 18A76C 8025BE8C 10620005 */ beq $v1, $v0, .L8025BEA4
/* 18A770 8025BE90 24020003 */ addiu $v0, $zero, 3
/* 18A774 8025BE94 1062000C */ beq $v1, $v0, .L8025BEC8
/* 18A778 8025BE98 00000000 */ nop
/* 18A77C 8025BE9C 0809702D */ j .L8025C0B4
/* 18A780 8025BEA0 00000000 */ nop
.L8025BEA4:
/* 18A784 8025BEA4 16200083 */ bnez $s1, .L8025C0B4
/* 18A788 8025BEA8 00000000 */ nop
/* 18A78C 8025BEAC 860206C8 */ lh $v0, 0x6c8($s0)
/* 18A790 8025BEB0 960306C8 */ lhu $v1, 0x6c8($s0)
/* 18A794 8025BEB4 1440007E */ bnez $v0, .L8025C0B0
/* 18A798 8025BEB8 2462FFFF */ addiu $v0, $v1, -1
/* 18A79C 8025BEBC 24020003 */ addiu $v0, $zero, 3
/* 18A7A0 8025BEC0 A60006CA */ sh $zero, 0x6ca($s0)
/* 18A7A4 8025BEC4 A20206C2 */ sb $v0, 0x6c2($s0)
.L8025BEC8:
/* 18A7A8 8025BEC8 16200018 */ bnez $s1, .L8025BF2C
/* 18A7AC 8025BECC 3C0651EB */ lui $a2, 0x51eb
/* 18A7B0 8025BED0 8602074A */ lh $v0, 0x74a($s0)
/* 18A7B4 8025BED4 24036400 */ addiu $v1, $zero, 0x6400
/* 18A7B8 8025BED8 14400002 */ bnez $v0, .L8025BEE4
/* 18A7BC 8025BEDC 0062001A */ div $zero, $v1, $v0
/* 18A7C0 8025BEE0 0007000D */ break 7
.L8025BEE4:
/* 18A7C4 8025BEE4 2401FFFF */ addiu $at, $zero, -1
/* 18A7C8 8025BEE8 14410004 */ bne $v0, $at, .L8025BEFC
/* 18A7CC 8025BEEC 3C018000 */ lui $at, 0x8000
/* 18A7D0 8025BEF0 14610002 */ bne $v1, $at, .L8025BEFC
/* 18A7D4 8025BEF4 00000000 */ nop
/* 18A7D8 8025BEF8 0006000D */ break 6
.L8025BEFC:
/* 18A7DC 8025BEFC 00001812 */ mflo $v1
/* 18A7E0 8025BF00 960206CA */ lhu $v0, 0x6ca($s0)
/* 18A7E4 8025BF04 00431021 */ addu $v0, $v0, $v1
/* 18A7E8 8025BF08 A60206CA */ sh $v0, 0x6ca($s0)
/* 18A7EC 8025BF0C 00021400 */ sll $v0, $v0, 0x10
/* 18A7F0 8025BF10 00021403 */ sra $v0, $v0, 0x10
/* 18A7F4 8025BF14 2842639D */ slti $v0, $v0, 0x639d
/* 18A7F8 8025BF18 14400005 */ bnez $v0, .L8025BF30
/* 18A7FC 8025BF1C 34C6851F */ ori $a2, $a2, 0x851f
/* 18A800 8025BF20 2402639C */ addiu $v0, $zero, 0x639c
/* 18A804 8025BF24 A60206CA */ sh $v0, 0x6ca($s0)
/* 18A808 8025BF28 3C0651EB */ lui $a2, 0x51eb
.L8025BF2C:
/* 18A80C 8025BF2C 34C6851F */ ori $a2, $a2, 0x851f
.L8025BF30:
/* 18A810 8025BF30 0200682D */ daddu $t5, $s0, $zero
/* 18A814 8025BF34 0000582D */ daddu $t3, $zero, $zero
/* 18A818 8025BF38 3C0F8080 */ lui $t7, 0x8080
/* 18A81C 8025BF3C 35EF8081 */ ori $t7, $t7, 0x8081
/* 18A820 8025BF40 86020742 */ lh $v0, 0x742($s0)
/* 18A824 8025BF44 8E0506D0 */ lw $a1, 0x6d0($s0)
/* 18A828 8025BF48 960306CA */ lhu $v1, 0x6ca($s0)
/* 18A82C 8025BF4C 00021080 */ sll $v0, $v0, 2
/* 18A830 8025BF50 00451021 */ addu $v0, $v0, $a1
/* 18A834 8025BF54 00031C00 */ sll $v1, $v1, 0x10
/* 18A838 8025BF58 00032403 */ sra $a0, $v1, 0x10
/* 18A83C 8025BF5C 8C4A0000 */ lw $t2, ($v0)
/* 18A840 8025BF60 86020740 */ lh $v0, 0x740($s0)
/* 18A844 8025BF64 00860018 */ mult $a0, $a2
/* 18A848 8025BF68 00021080 */ sll $v0, $v0, 2
/* 18A84C 8025BF6C 00451021 */ addu $v0, $v0, $a1
/* 18A850 8025BF70 8C490000 */ lw $t1, ($v0)
/* 18A854 8025BF74 00031FC3 */ sra $v1, $v1, 0x1f
/* 18A858 8025BF78 AE1006D4 */ sw $s0, 0x6d4($s0)
/* 18A85C 8025BF7C 0000C810 */ mfhi $t9
/* 18A860 8025BF80 00191143 */ sra $v0, $t9, 5
/* 18A864 8025BF84 0043C023 */ subu $t8, $v0, $v1
/* 18A868 8025BF88 330C00FF */ andi $t4, $t8, 0xff
/* 18A86C 8025BF8C 240200FF */ addiu $v0, $zero, 0xff
/* 18A870 8025BF90 004C7023 */ subu $t6, $v0, $t4
.L8025BF94:
/* 18A874 8025BF94 95430000 */ lhu $v1, ($t2)
/* 18A878 8025BF98 000312C2 */ srl $v0, $v1, 0xb
/* 18A87C 8025BF9C 004E0018 */ mult $v0, $t6
/* 18A880 8025BFA0 95240000 */ lhu $a0, ($t1)
/* 18A884 8025BFA4 00002812 */ mflo $a1
/* 18A888 8025BFA8 000412C2 */ srl $v0, $a0, 0xb
/* 18A88C 8025BFAC 00000000 */ nop
/* 18A890 8025BFB0 004C0018 */ mult $v0, $t4
/* 18A894 8025BFB4 00004012 */ mflo $t0
/* 18A898 8025BFB8 00A82821 */ addu $a1, $a1, $t0
/* 18A89C 8025BFBC 00000000 */ nop
/* 18A8A0 8025BFC0 00AF0018 */ mult $a1, $t7
/* 18A8A4 8025BFC4 00008810 */ mfhi $s1
/* 18A8A8 8025BFC8 00031182 */ srl $v0, $v1, 6
/* 18A8AC 8025BFCC 3042001F */ andi $v0, $v0, 0x1f
/* 18A8B0 8025BFD0 004E0018 */ mult $v0, $t6
/* 18A8B4 8025BFD4 00004012 */ mflo $t0
/* 18A8B8 8025BFD8 00041182 */ srl $v0, $a0, 6
/* 18A8BC 8025BFDC 3042001F */ andi $v0, $v0, 0x1f
/* 18A8C0 8025BFE0 004C0018 */ mult $v0, $t4
/* 18A8C4 8025BFE4 00003812 */ mflo $a3
/* 18A8C8 8025BFE8 00031842 */ srl $v1, $v1, 1
/* 18A8CC 8025BFEC 3063001F */ andi $v1, $v1, 0x1f
/* 18A8D0 8025BFF0 006E0018 */ mult $v1, $t6
/* 18A8D4 8025BFF4 00001812 */ mflo $v1
/* 18A8D8 8025BFF8 00042042 */ srl $a0, $a0, 1
/* 18A8DC 8025BFFC 3084001F */ andi $a0, $a0, 0x1f
/* 18A8E0 8025C000 008C0018 */ mult $a0, $t4
/* 18A8E4 8025C004 254A0002 */ addiu $t2, $t2, 2
/* 18A8E8 8025C008 91260001 */ lbu $a2, 1($t1)
/* 18A8EC 8025C00C 25290002 */ addiu $t1, $t1, 2
/* 18A8F0 8025C010 00009812 */ mflo $s3
/* 18A8F4 8025C014 256B0001 */ addiu $t3, $t3, 1
/* 18A8F8 8025C018 01072021 */ addu $a0, $t0, $a3
/* 18A8FC 8025C01C 008F0018 */ mult $a0, $t7
/* 18A900 8025C020 30C60001 */ andi $a2, $a2, 1
/* 18A904 8025C024 02251021 */ addu $v0, $s1, $a1
/* 18A908 8025C028 000211C3 */ sra $v0, $v0, 7
/* 18A90C 8025C02C 00052FC3 */ sra $a1, $a1, 0x1f
/* 18A910 8025C030 00004010 */ mfhi $t0
/* 18A914 8025C034 00453823 */ subu $a3, $v0, $a1
/* 18A918 8025C038 00731821 */ addu $v1, $v1, $s3
/* 18A91C 8025C03C 006F0018 */ mult $v1, $t7
/* 18A920 8025C040 01041021 */ addu $v0, $t0, $a0
/* 18A924 8025C044 000211C3 */ sra $v0, $v0, 7
/* 18A928 8025C048 000427C3 */ sra $a0, $a0, 0x1f
/* 18A92C 8025C04C 00442823 */ subu $a1, $v0, $a0
/* 18A930 8025C050 00008810 */ mfhi $s1
/* 18A934 8025C054 02231021 */ addu $v0, $s1, $v1
/* 18A938 8025C058 000211C3 */ sra $v0, $v0, 7
/* 18A93C 8025C05C 00031FC3 */ sra $v1, $v1, 0x1f
/* 18A940 8025C060 00432023 */ subu $a0, $v0, $v1
/* 18A944 8025C064 30E300FF */ andi $v1, $a3, 0xff
/* 18A948 8025C068 00031AC0 */ sll $v1, $v1, 0xb
/* 18A94C 8025C06C 30A200FF */ andi $v0, $a1, 0xff
/* 18A950 8025C070 00021180 */ sll $v0, $v0, 6
/* 18A954 8025C074 00621825 */ or $v1, $v1, $v0
/* 18A958 8025C078 308200FF */ andi $v0, $a0, 0xff
/* 18A95C 8025C07C 00021040 */ sll $v0, $v0, 1
/* 18A960 8025C080 00621825 */ or $v1, $v1, $v0
/* 18A964 8025C084 00C33025 */ or $a2, $a2, $v1
/* 18A968 8025C088 A5A60000 */ sh $a2, ($t5)
/* 18A96C 8025C08C 29620010 */ slti $v0, $t3, 0x10
/* 18A970 8025C090 1440FFC0 */ bnez $v0, .L8025BF94
/* 18A974 8025C094 25AD0002 */ addiu $t5, $t5, 2
/* 18A978 8025C098 330300FF */ andi $v1, $t8, 0xff
/* 18A97C 8025C09C 240200FF */ addiu $v0, $zero, 0xff
/* 18A980 8025C0A0 14620004 */ bne $v1, $v0, .L8025C0B4
/* 18A984 8025C0A4 00000000 */ nop
/* 18A988 8025C0A8 96020744 */ lhu $v0, 0x744($s0)
/* 18A98C 8025C0AC A20006C2 */ sb $zero, 0x6c2($s0)
.L8025C0B0:
/* 18A990 8025C0B0 A60206C8 */ sh $v0, 0x6c8($s0)
.L8025C0B4:
/* 18A994 8025C0B4 820306C2 */ lb $v1, 0x6c2($s0)
/* 18A998 8025C0B8 28620004 */ slti $v0, $v1, 4
/* 18A99C 8025C0BC 1040000D */ beqz $v0, .L8025C0F4
/* 18A9A0 8025C0C0 00000000 */ nop
/* 18A9A4 8025C0C4 0460000B */ bltz $v1, .L8025C0F4
/* 18A9A8 8025C0C8 00000000 */ nop
/* 18A9AC 8025C0CC 16800006 */ bnez $s4, .L8025C0E8
/* 18A9B0 8025C0D0 0240202D */ daddu $a0, $s2, $zero
/* 18A9B4 8025C0D4 02A0282D */ daddu $a1, $s5, $zero
/* 18A9B8 8025C0D8 0C096657 */ jal func_8025995C
/* 18A9BC 8025C0DC 02C0302D */ daddu $a2, $s6, $zero
/* 18A9C0 8025C0E0 0809703D */ j .L8025C0F4
/* 18A9C4 8025C0E4 00000000 */ nop
.L8025C0E8:
/* 18A9C8 8025C0E8 02A0282D */ daddu $a1, $s5, $zero
/* 18A9CC 8025C0EC 0C0965B0 */ jal func_802596C0
/* 18A9D0 8025C0F0 02C0302D */ daddu $a2, $s6, $zero
.L8025C0F4:
/* 18A9D4 8025C0F4 8FBF0030 */ lw $ra, 0x30($sp)
/* 18A9D8 8025C0F8 8FB7002C */ lw $s7, 0x2c($sp)
/* 18A9DC 8025C0FC 8FB60028 */ lw $s6, 0x28($sp)
/* 18A9E0 8025C100 8FB50024 */ lw $s5, 0x24($sp)
/* 18A9E4 8025C104 8FB40020 */ lw $s4, 0x20($sp)
/* 18A9E8 8025C108 8FB3001C */ lw $s3, 0x1c($sp)
/* 18A9EC 8025C10C 8FB20018 */ lw $s2, 0x18($sp)
/* 18A9F0 8025C110 8FB10014 */ lw $s1, 0x14($sp)
/* 18A9F4 8025C114 8FB00010 */ lw $s0, 0x10($sp)
/* 18A9F8 8025C118 03E00008 */ jr $ra
/* 18A9FC 8025C11C 27BD0038 */ addiu $sp, $sp, 0x38

View File

@ -1,497 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_8025C120
/* 18AA00 8025C120 27BDFFC0 */ addiu $sp, $sp, -0x40
/* 18AA04 8025C124 AFB40028 */ sw $s4, 0x28($sp)
/* 18AA08 8025C128 0080A02D */ daddu $s4, $a0, $zero
/* 18AA0C 8025C12C AFB30024 */ sw $s3, 0x24($sp)
/* 18AA10 8025C130 00A0982D */ daddu $s3, $a1, $zero
/* 18AA14 8025C134 AFB5002C */ sw $s5, 0x2c($sp)
/* 18AA18 8025C138 00C0A82D */ daddu $s5, $a2, $zero
/* 18AA1C 8025C13C AFBF0038 */ sw $ra, 0x38($sp)
/* 18AA20 8025C140 AFB70034 */ sw $s7, 0x34($sp)
/* 18AA24 8025C144 AFB60030 */ sw $s6, 0x30($sp)
/* 18AA28 8025C148 AFB20020 */ sw $s2, 0x20($sp)
/* 18AA2C 8025C14C AFB1001C */ sw $s1, 0x1c($sp)
/* 18AA30 8025C150 AFB00018 */ sw $s0, 0x18($sp)
/* 18AA34 8025C154 8E7000C0 */ lw $s0, 0xc0($s3)
/* 18AA38 8025C158 820206C1 */ lb $v0, 0x6c1($s0)
/* 18AA3C 8025C15C 8FB20050 */ lw $s2, 0x50($sp)
/* 18AA40 8025C160 10400055 */ beqz $v0, .L8025C2B8
/* 18AA44 8025C164 00E0B02D */ daddu $s6, $a3, $zero
/* 18AA48 8025C168 16800016 */ bnez $s4, .L8025C1C4
/* 18AA4C 8025C16C 00000000 */ nop
/* 18AA50 8025C170 0C0B7830 */ jal spr_get_player_palettes
/* 18AA54 8025C174 96640088 */ lhu $a0, 0x88($s3)
/* 18AA58 8025C178 AE0206D0 */ sw $v0, 0x6d0($s0)
/* 18AA5C 8025C17C 0040202D */ daddu $a0, $v0, $zero
/* 18AA60 8025C180 A20006CD */ sb $zero, 0x6cd($s0)
/* 18AA64 8025C184 8C830000 */ lw $v1, ($a0)
/* 18AA68 8025C188 2402FFFF */ addiu $v0, $zero, -1
/* 18AA6C 8025C18C 10620023 */ beq $v1, $v0, .L8025C21C
/* 18AA70 8025C190 0080182D */ daddu $v1, $a0, $zero
/* 18AA74 8025C194 0040202D */ daddu $a0, $v0, $zero
.L8025C198:
/* 18AA78 8025C198 920206CD */ lbu $v0, 0x6cd($s0)
/* 18AA7C 8025C19C 24420001 */ addiu $v0, $v0, 1
/* 18AA80 8025C1A0 A20206CD */ sb $v0, 0x6cd($s0)
/* 18AA84 8025C1A4 00021600 */ sll $v0, $v0, 0x18
/* 18AA88 8025C1A8 00021583 */ sra $v0, $v0, 0x16
/* 18AA8C 8025C1AC 00431021 */ addu $v0, $v0, $v1
/* 18AA90 8025C1B0 8C420000 */ lw $v0, ($v0)
/* 18AA94 8025C1B4 10440019 */ beq $v0, $a0, .L8025C21C
/* 18AA98 8025C1B8 00000000 */ nop
/* 18AA9C 8025C1BC 08097066 */ j .L8025C198
/* 18AAA0 8025C1C0 00000000 */ nop
.L8025C1C4:
/* 18AAA4 8025C1C4 0C0B7A90 */ jal spr_get_npc_palettes
/* 18AAA8 8025C1C8 96640088 */ lhu $a0, 0x88($s3)
/* 18AAAC 8025C1CC AE0206D0 */ sw $v0, 0x6d0($s0)
/* 18AAB0 8025C1D0 0040202D */ daddu $a0, $v0, $zero
/* 18AAB4 8025C1D4 A20006CD */ sb $zero, 0x6cd($s0)
/* 18AAB8 8025C1D8 8C830000 */ lw $v1, ($a0)
/* 18AABC 8025C1DC 2402FFFF */ addiu $v0, $zero, -1
/* 18AAC0 8025C1E0 1062000B */ beq $v1, $v0, .L8025C210
/* 18AAC4 8025C1E4 0080182D */ daddu $v1, $a0, $zero
/* 18AAC8 8025C1E8 0040202D */ daddu $a0, $v0, $zero
.L8025C1EC:
/* 18AACC 8025C1EC 920206CD */ lbu $v0, 0x6cd($s0)
/* 18AAD0 8025C1F0 24420001 */ addiu $v0, $v0, 1
/* 18AAD4 8025C1F4 A20206CD */ sb $v0, 0x6cd($s0)
/* 18AAD8 8025C1F8 00021600 */ sll $v0, $v0, 0x18
/* 18AADC 8025C1FC 00021583 */ sra $v0, $v0, 0x16
/* 18AAE0 8025C200 00431021 */ addu $v0, $v0, $v1
/* 18AAE4 8025C204 8C420000 */ lw $v0, ($v0)
/* 18AAE8 8025C208 1444FFF8 */ bne $v0, $a0, .L8025C1EC
/* 18AAEC 8025C20C 00000000 */ nop
.L8025C210:
/* 18AAF0 8025C210 0C0B7A9B */ jal spr_get_npc_color_variations
/* 18AAF4 8025C214 96640088 */ lhu $a0, 0x88($s3)
/* 18AAF8 8025C218 A20206CC */ sb $v0, 0x6cc($s0)
.L8025C21C:
/* 18AAFC 8025C21C 820306C1 */ lb $v1, 0x6c1($s0)
/* 18AB00 8025C220 24020001 */ addiu $v0, $zero, 1
/* 18AB04 8025C224 14620004 */ bne $v1, $v0, .L8025C238
/* 18AB08 8025C228 240200FF */ addiu $v0, $zero, 0xff
/* 18AB0C 8025C22C A20006C2 */ sb $zero, 0x6c2($s0)
/* 18AB10 8025C230 08097090 */ j .L8025C240
/* 18AB14 8025C234 A60006CA */ sh $zero, 0x6ca($s0)
.L8025C238:
/* 18AB18 8025C238 A20006C2 */ sb $zero, 0x6c2($s0)
/* 18AB1C 8025C23C A60206CA */ sh $v0, 0x6ca($s0)
.L8025C240:
/* 18AB20 8025C240 820206CD */ lb $v0, 0x6cd($s0)
/* 18AB24 8025C244 18400017 */ blez $v0, .L8025C2A4
/* 18AB28 8025C248 0000602D */ daddu $t4, $zero, $zero
/* 18AB2C 8025C24C 0200202D */ daddu $a0, $s0, $zero
.L8025C250:
/* 18AB30 8025C250 8E0206D0 */ lw $v0, 0x6d0($s0)
/* 18AB34 8025C254 000C1880 */ sll $v1, $t4, 2
/* 18AB38 8025C258 00621821 */ addu $v1, $v1, $v0
/* 18AB3C 8025C25C 000C1140 */ sll $v0, $t4, 5
/* 18AB40 8025C260 8C6B0000 */ lw $t3, ($v1)
/* 18AB44 8025C264 02024821 */ addu $t1, $s0, $v0
/* 18AB48 8025C268 11600009 */ beqz $t3, .L8025C290
/* 18AB4C 8025C26C AC8906D4 */ sw $t1, 0x6d4($a0)
/* 18AB50 8025C270 0000502D */ daddu $t2, $zero, $zero
.L8025C274:
/* 18AB54 8025C274 95620000 */ lhu $v0, ($t3)
/* 18AB58 8025C278 256B0002 */ addiu $t3, $t3, 2
/* 18AB5C 8025C27C 254A0001 */ addiu $t2, $t2, 1
/* 18AB60 8025C280 A5220000 */ sh $v0, ($t1)
/* 18AB64 8025C284 29420010 */ slti $v0, $t2, 0x10
/* 18AB68 8025C288 1440FFFA */ bnez $v0, .L8025C274
/* 18AB6C 8025C28C 25290002 */ addiu $t1, $t1, 2
.L8025C290:
/* 18AB70 8025C290 820206CD */ lb $v0, 0x6cd($s0)
/* 18AB74 8025C294 258C0001 */ addiu $t4, $t4, 1
/* 18AB78 8025C298 0182102A */ slt $v0, $t4, $v0
/* 18AB7C 8025C29C 1440FFEC */ bnez $v0, .L8025C250
/* 18AB80 8025C2A0 24840004 */ addiu $a0, $a0, 4
.L8025C2A4:
/* 18AB84 8025C2A4 96020744 */ lhu $v0, 0x744($s0)
/* 18AB88 8025C2A8 A60006CA */ sh $zero, 0x6ca($s0)
/* 18AB8C 8025C2AC A20006C2 */ sb $zero, 0x6c2($s0)
/* 18AB90 8025C2B0 A20006C1 */ sb $zero, 0x6c1($s0)
/* 18AB94 8025C2B4 A60206C8 */ sh $v0, 0x6c8($s0)
.L8025C2B8:
/* 18AB98 8025C2B8 820306C2 */ lb $v1, 0x6c2($s0)
/* 18AB9C 8025C2BC 10600005 */ beqz $v1, .L8025C2D4
/* 18ABA0 8025C2C0 24020001 */ addiu $v0, $zero, 1
/* 18ABA4 8025C2C4 1062000E */ beq $v1, $v0, .L8025C300
/* 18ABA8 8025C2C8 24020002 */ addiu $v0, $zero, 2
/* 18ABAC 8025C2CC 08097156 */ j .L8025C558
/* 18ABB0 8025C2D0 00000000 */ nop
.L8025C2D4:
/* 18ABB4 8025C2D4 1640009E */ bnez $s2, .L8025C550
/* 18ABB8 8025C2D8 00000000 */ nop
/* 18ABBC 8025C2DC 860206C8 */ lh $v0, 0x6c8($s0)
/* 18ABC0 8025C2E0 960306C8 */ lhu $v1, 0x6c8($s0)
/* 18ABC4 8025C2E4 10400003 */ beqz $v0, .L8025C2F4
/* 18ABC8 8025C2E8 2462FFFF */ addiu $v0, $v1, -1
/* 18ABCC 8025C2EC 08097154 */ j .L8025C550
/* 18ABD0 8025C2F0 A60206C8 */ sh $v0, 0x6c8($s0)
.L8025C2F4:
/* 18ABD4 8025C2F4 24020001 */ addiu $v0, $zero, 1
/* 18ABD8 8025C2F8 A60006CA */ sh $zero, 0x6ca($s0)
/* 18ABDC 8025C2FC A20206C2 */ sb $v0, 0x6c2($s0)
.L8025C300:
/* 18ABE0 8025C300 16400018 */ bnez $s2, .L8025C364
/* 18ABE4 8025C304 3C0451EB */ lui $a0, 0x51eb
/* 18ABE8 8025C308 86020746 */ lh $v0, 0x746($s0)
/* 18ABEC 8025C30C 24036400 */ addiu $v1, $zero, 0x6400
/* 18ABF0 8025C310 14400002 */ bnez $v0, .L8025C31C
/* 18ABF4 8025C314 0062001A */ div $zero, $v1, $v0
/* 18ABF8 8025C318 0007000D */ break 7
.L8025C31C:
/* 18ABFC 8025C31C 2401FFFF */ addiu $at, $zero, -1
/* 18AC00 8025C320 14410004 */ bne $v0, $at, .L8025C334
/* 18AC04 8025C324 3C018000 */ lui $at, 0x8000
/* 18AC08 8025C328 14610002 */ bne $v1, $at, .L8025C334
/* 18AC0C 8025C32C 00000000 */ nop
/* 18AC10 8025C330 0006000D */ break 6
.L8025C334:
/* 18AC14 8025C334 00001812 */ mflo $v1
/* 18AC18 8025C338 960206CA */ lhu $v0, 0x6ca($s0)
/* 18AC1C 8025C33C 00431021 */ addu $v0, $v0, $v1
/* 18AC20 8025C340 A60206CA */ sh $v0, 0x6ca($s0)
/* 18AC24 8025C344 00021400 */ sll $v0, $v0, 0x10
/* 18AC28 8025C348 00021403 */ sra $v0, $v0, 0x10
/* 18AC2C 8025C34C 2842639D */ slti $v0, $v0, 0x639d
/* 18AC30 8025C350 14400005 */ bnez $v0, .L8025C368
/* 18AC34 8025C354 3484851F */ ori $a0, $a0, 0x851f
/* 18AC38 8025C358 2402639C */ addiu $v0, $zero, 0x639c
/* 18AC3C 8025C35C A60206CA */ sh $v0, 0x6ca($s0)
/* 18AC40 8025C360 3C0451EB */ lui $a0, 0x51eb
.L8025C364:
/* 18AC44 8025C364 3484851F */ ori $a0, $a0, 0x851f
.L8025C368:
/* 18AC48 8025C368 960306CA */ lhu $v1, 0x6ca($s0)
/* 18AC4C 8025C36C 00031C00 */ sll $v1, $v1, 0x10
/* 18AC50 8025C370 00031403 */ sra $v0, $v1, 0x10
/* 18AC54 8025C374 00440018 */ mult $v0, $a0
/* 18AC58 8025C378 0000602D */ daddu $t4, $zero, $zero
/* 18AC5C 8025C37C 920506CC */ lbu $a1, 0x6cc($s0)
/* 18AC60 8025C380 00031FC3 */ sra $v1, $v1, 0x1f
/* 18AC64 8025C384 820206CC */ lb $v0, 0x6cc($s0)
/* 18AC68 8025C388 0000B810 */ mfhi $s7
/* 18AC6C 8025C38C 00172143 */ sra $a0, $s7, 5
/* 18AC70 8025C390 18400068 */ blez $v0, .L8025C534
/* 18AC74 8025C394 00838823 */ subu $s1, $a0, $v1
/* 18AC78 8025C398 322E00FF */ andi $t6, $s1, 0xff
/* 18AC7C 8025C39C 240200FF */ addiu $v0, $zero, 0xff
/* 18AC80 8025C3A0 004EC023 */ subu $t8, $v0, $t6
/* 18AC84 8025C3A4 3C0F8080 */ lui $t7, 0x8080
/* 18AC88 8025C3A8 35EF8081 */ ori $t7, $t7, 0x8081
/* 18AC8C 8025C3AC 0200C82D */ daddu $t9, $s0, $zero
.L8025C3B0:
/* 18AC90 8025C3B0 00052600 */ sll $a0, $a1, 0x18
/* 18AC94 8025C3B4 86020740 */ lh $v0, 0x740($s0)
/* 18AC98 8025C3B8 00042603 */ sra $a0, $a0, 0x18
/* 18AC9C 8025C3BC 00440018 */ mult $v0, $a0
/* 18ACA0 8025C3C0 86030742 */ lh $v1, 0x742($s0)
/* 18ACA4 8025C3C4 000C1140 */ sll $v0, $t4, 5
/* 18ACA8 8025C3C8 0000B812 */ mflo $s7
/* 18ACAC 8025C3CC 02026821 */ addu $t5, $s0, $v0
/* 18ACB0 8025C3D0 02EC1021 */ addu $v0, $s7, $t4
/* 18ACB4 8025C3D4 00640018 */ mult $v1, $a0
/* 18ACB8 8025C3D8 8E0306D0 */ lw $v1, 0x6d0($s0)
/* 18ACBC 8025C3DC 00021080 */ sll $v0, $v0, 2
/* 18ACC0 8025C3E0 00431021 */ addu $v0, $v0, $v1
/* 18ACC4 8025C3E4 8C4B0000 */ lw $t3, ($v0)
/* 18ACC8 8025C3E8 0000B812 */ mflo $s7
/* 18ACCC 8025C3EC 02EC1021 */ addu $v0, $s7, $t4
/* 18ACD0 8025C3F0 00021080 */ sll $v0, $v0, 2
/* 18ACD4 8025C3F4 00431021 */ addu $v0, $v0, $v1
/* 18ACD8 8025C3F8 8C490000 */ lw $t1, ($v0)
/* 18ACDC 8025C3FC 0000502D */ daddu $t2, $zero, $zero
/* 18ACE0 8025C400 AF2D06D4 */ sw $t5, 0x6d4($t9)
.L8025C404:
/* 18ACE4 8025C404 95630000 */ lhu $v1, ($t3)
/* 18ACE8 8025C408 000312C2 */ srl $v0, $v1, 0xb
/* 18ACEC 8025C40C 00580018 */ mult $v0, $t8
/* 18ACF0 8025C410 95240000 */ lhu $a0, ($t1)
/* 18ACF4 8025C414 00002812 */ mflo $a1
/* 18ACF8 8025C418 000412C2 */ srl $v0, $a0, 0xb
/* 18ACFC 8025C41C 00000000 */ nop
/* 18AD00 8025C420 004E0018 */ mult $v0, $t6
/* 18AD04 8025C424 00004012 */ mflo $t0
/* 18AD08 8025C428 00A82821 */ addu $a1, $a1, $t0
/* 18AD0C 8025C42C 00000000 */ nop
/* 18AD10 8025C430 00AF0018 */ mult $a1, $t7
/* 18AD14 8025C434 0000B810 */ mfhi $s7
/* 18AD18 8025C438 00031182 */ srl $v0, $v1, 6
/* 18AD1C 8025C43C 3042001F */ andi $v0, $v0, 0x1f
/* 18AD20 8025C440 00580018 */ mult $v0, $t8
/* 18AD24 8025C444 00004012 */ mflo $t0
/* 18AD28 8025C448 00041182 */ srl $v0, $a0, 6
/* 18AD2C 8025C44C 3042001F */ andi $v0, $v0, 0x1f
/* 18AD30 8025C450 004E0018 */ mult $v0, $t6
/* 18AD34 8025C454 00003812 */ mflo $a3
/* 18AD38 8025C458 00031842 */ srl $v1, $v1, 1
/* 18AD3C 8025C45C 3063001F */ andi $v1, $v1, 0x1f
/* 18AD40 8025C460 00780018 */ mult $v1, $t8
/* 18AD44 8025C464 256B0002 */ addiu $t3, $t3, 2
/* 18AD48 8025C468 254A0001 */ addiu $t2, $t2, 1
/* 18AD4C 8025C46C 00042042 */ srl $a0, $a0, 1
/* 18AD50 8025C470 00001812 */ mflo $v1
/* 18AD54 8025C474 3084001F */ andi $a0, $a0, 0x1f
/* 18AD58 8025C478 AFB70010 */ sw $s7, 0x10($sp)
/* 18AD5C 8025C47C 008E0018 */ mult $a0, $t6
/* 18AD60 8025C480 91260001 */ lbu $a2, 1($t1)
/* 18AD64 8025C484 25290002 */ addiu $t1, $t1, 2
/* 18AD68 8025C488 30C60001 */ andi $a2, $a2, 1
/* 18AD6C 8025C48C 01072021 */ addu $a0, $t0, $a3
/* 18AD70 8025C490 0000B812 */ mflo $s7
/* 18AD74 8025C494 AFB70014 */ sw $s7, 0x14($sp)
/* 18AD78 8025C498 8FB70010 */ lw $s7, 0x10($sp)
/* 18AD7C 8025C49C 008F0018 */ mult $a0, $t7
/* 18AD80 8025C4A0 02E51021 */ addu $v0, $s7, $a1
/* 18AD84 8025C4A4 000211C3 */ sra $v0, $v0, 7
/* 18AD88 8025C4A8 00052FC3 */ sra $a1, $a1, 0x1f
/* 18AD8C 8025C4AC 8FB70014 */ lw $s7, 0x14($sp)
/* 18AD90 8025C4B0 00004010 */ mfhi $t0
/* 18AD94 8025C4B4 00453823 */ subu $a3, $v0, $a1
/* 18AD98 8025C4B8 00771821 */ addu $v1, $v1, $s7
/* 18AD9C 8025C4BC 006F0018 */ mult $v1, $t7
/* 18ADA0 8025C4C0 01041021 */ addu $v0, $t0, $a0
/* 18ADA4 8025C4C4 000211C3 */ sra $v0, $v0, 7
/* 18ADA8 8025C4C8 000427C3 */ sra $a0, $a0, 0x1f
/* 18ADAC 8025C4CC 00442823 */ subu $a1, $v0, $a0
/* 18ADB0 8025C4D0 0000B810 */ mfhi $s7
/* 18ADB4 8025C4D4 AFB70010 */ sw $s7, 0x10($sp)
/* 18ADB8 8025C4D8 02E31021 */ addu $v0, $s7, $v1
/* 18ADBC 8025C4DC 000211C3 */ sra $v0, $v0, 7
/* 18ADC0 8025C4E0 00031FC3 */ sra $v1, $v1, 0x1f
/* 18ADC4 8025C4E4 00432023 */ subu $a0, $v0, $v1
/* 18ADC8 8025C4E8 30E300FF */ andi $v1, $a3, 0xff
/* 18ADCC 8025C4EC 00031AC0 */ sll $v1, $v1, 0xb
/* 18ADD0 8025C4F0 30A200FF */ andi $v0, $a1, 0xff
/* 18ADD4 8025C4F4 00021180 */ sll $v0, $v0, 6
/* 18ADD8 8025C4F8 00621825 */ or $v1, $v1, $v0
/* 18ADDC 8025C4FC 308200FF */ andi $v0, $a0, 0xff
/* 18ADE0 8025C500 00021040 */ sll $v0, $v0, 1
/* 18ADE4 8025C504 00621825 */ or $v1, $v1, $v0
/* 18ADE8 8025C508 00C33025 */ or $a2, $a2, $v1
/* 18ADEC 8025C50C A5A60000 */ sh $a2, ($t5)
/* 18ADF0 8025C510 29420010 */ slti $v0, $t2, 0x10
/* 18ADF4 8025C514 1440FFBB */ bnez $v0, .L8025C404
/* 18ADF8 8025C518 25AD0002 */ addiu $t5, $t5, 2
/* 18ADFC 8025C51C 258C0001 */ addiu $t4, $t4, 1
/* 18AE00 8025C520 820206CC */ lb $v0, 0x6cc($s0)
/* 18AE04 8025C524 920506CC */ lbu $a1, 0x6cc($s0)
/* 18AE08 8025C528 0182102A */ slt $v0, $t4, $v0
/* 18AE0C 8025C52C 1440FFA0 */ bnez $v0, .L8025C3B0
/* 18AE10 8025C530 27390004 */ addiu $t9, $t9, 4
.L8025C534:
/* 18AE14 8025C534 322300FF */ andi $v1, $s1, 0xff
/* 18AE18 8025C538 240200FF */ addiu $v0, $zero, 0xff
/* 18AE1C 8025C53C 14620004 */ bne $v1, $v0, .L8025C550
/* 18AE20 8025C540 24020002 */ addiu $v0, $zero, 2
/* 18AE24 8025C544 96030748 */ lhu $v1, 0x748($s0)
/* 18AE28 8025C548 A20206C2 */ sb $v0, 0x6c2($s0)
/* 18AE2C 8025C54C A60306C8 */ sh $v1, 0x6c8($s0)
.L8025C550:
/* 18AE30 8025C550 820306C2 */ lb $v1, 0x6c2($s0)
/* 18AE34 8025C554 24020002 */ addiu $v0, $zero, 2
.L8025C558:
/* 18AE38 8025C558 10620005 */ beq $v1, $v0, .L8025C570
/* 18AE3C 8025C55C 24020003 */ addiu $v0, $zero, 3
/* 18AE40 8025C560 1062000C */ beq $v1, $v0, .L8025C594
/* 18AE44 8025C564 00000000 */ nop
/* 18AE48 8025C568 080971F5 */ j .L8025C7D4
/* 18AE4C 8025C56C 00000000 */ nop
.L8025C570:
/* 18AE50 8025C570 16400098 */ bnez $s2, .L8025C7D4
/* 18AE54 8025C574 00000000 */ nop
/* 18AE58 8025C578 860206C8 */ lh $v0, 0x6c8($s0)
/* 18AE5C 8025C57C 960306C8 */ lhu $v1, 0x6c8($s0)
/* 18AE60 8025C580 14400093 */ bnez $v0, .L8025C7D0
/* 18AE64 8025C584 2462FFFF */ addiu $v0, $v1, -1
/* 18AE68 8025C588 24020003 */ addiu $v0, $zero, 3
/* 18AE6C 8025C58C A60006CA */ sh $zero, 0x6ca($s0)
/* 18AE70 8025C590 A20206C2 */ sb $v0, 0x6c2($s0)
.L8025C594:
/* 18AE74 8025C594 16400018 */ bnez $s2, .L8025C5F8
/* 18AE78 8025C598 3C0451EB */ lui $a0, 0x51eb
/* 18AE7C 8025C59C 8602074A */ lh $v0, 0x74a($s0)
/* 18AE80 8025C5A0 24036400 */ addiu $v1, $zero, 0x6400
/* 18AE84 8025C5A4 14400002 */ bnez $v0, .L8025C5B0
/* 18AE88 8025C5A8 0062001A */ div $zero, $v1, $v0
/* 18AE8C 8025C5AC 0007000D */ break 7
.L8025C5B0:
/* 18AE90 8025C5B0 2401FFFF */ addiu $at, $zero, -1
/* 18AE94 8025C5B4 14410004 */ bne $v0, $at, .L8025C5C8
/* 18AE98 8025C5B8 3C018000 */ lui $at, 0x8000
/* 18AE9C 8025C5BC 14610002 */ bne $v1, $at, .L8025C5C8
/* 18AEA0 8025C5C0 00000000 */ nop
/* 18AEA4 8025C5C4 0006000D */ break 6
.L8025C5C8:
/* 18AEA8 8025C5C8 00001812 */ mflo $v1
/* 18AEAC 8025C5CC 960206CA */ lhu $v0, 0x6ca($s0)
/* 18AEB0 8025C5D0 00431021 */ addu $v0, $v0, $v1
/* 18AEB4 8025C5D4 A60206CA */ sh $v0, 0x6ca($s0)
/* 18AEB8 8025C5D8 00021400 */ sll $v0, $v0, 0x10
/* 18AEBC 8025C5DC 00021403 */ sra $v0, $v0, 0x10
/* 18AEC0 8025C5E0 2842639D */ slti $v0, $v0, 0x639d
/* 18AEC4 8025C5E4 14400005 */ bnez $v0, .L8025C5FC
/* 18AEC8 8025C5E8 3484851F */ ori $a0, $a0, 0x851f
/* 18AECC 8025C5EC 2402639C */ addiu $v0, $zero, 0x639c
/* 18AED0 8025C5F0 A60206CA */ sh $v0, 0x6ca($s0)
/* 18AED4 8025C5F4 3C0451EB */ lui $a0, 0x51eb
.L8025C5F8:
/* 18AED8 8025C5F8 3484851F */ ori $a0, $a0, 0x851f
.L8025C5FC:
/* 18AEDC 8025C5FC 960306CA */ lhu $v1, 0x6ca($s0)
/* 18AEE0 8025C600 00031C00 */ sll $v1, $v1, 0x10
/* 18AEE4 8025C604 00031403 */ sra $v0, $v1, 0x10
/* 18AEE8 8025C608 00440018 */ mult $v0, $a0
/* 18AEEC 8025C60C 0000602D */ daddu $t4, $zero, $zero
/* 18AEF0 8025C610 920506CC */ lbu $a1, 0x6cc($s0)
/* 18AEF4 8025C614 00031FC3 */ sra $v1, $v1, 0x1f
/* 18AEF8 8025C618 820206CC */ lb $v0, 0x6cc($s0)
/* 18AEFC 8025C61C 0000B810 */ mfhi $s7
/* 18AF00 8025C620 00172143 */ sra $a0, $s7, 5
/* 18AF04 8025C624 18400064 */ blez $v0, .L8025C7B8
/* 18AF08 8025C628 00838823 */ subu $s1, $a0, $v1
/* 18AF0C 8025C62C 322E00FF */ andi $t6, $s1, 0xff
/* 18AF10 8025C630 240200FF */ addiu $v0, $zero, 0xff
/* 18AF14 8025C634 004EC023 */ subu $t8, $v0, $t6
/* 18AF18 8025C638 3C0F8080 */ lui $t7, 0x8080
/* 18AF1C 8025C63C 35EF8081 */ ori $t7, $t7, 0x8081
/* 18AF20 8025C640 0200C82D */ daddu $t9, $s0, $zero
.L8025C644:
/* 18AF24 8025C644 00052600 */ sll $a0, $a1, 0x18
/* 18AF28 8025C648 86020740 */ lh $v0, 0x740($s0)
/* 18AF2C 8025C64C 00042603 */ sra $a0, $a0, 0x18
/* 18AF30 8025C650 00440018 */ mult $v0, $a0
/* 18AF34 8025C654 86030742 */ lh $v1, 0x742($s0)
/* 18AF38 8025C658 000C1140 */ sll $v0, $t4, 5
/* 18AF3C 8025C65C 0000B812 */ mflo $s7
/* 18AF40 8025C660 02026821 */ addu $t5, $s0, $v0
/* 18AF44 8025C664 02EC1021 */ addu $v0, $s7, $t4
/* 18AF48 8025C668 00640018 */ mult $v1, $a0
/* 18AF4C 8025C66C 8E0306D0 */ lw $v1, 0x6d0($s0)
/* 18AF50 8025C670 00021080 */ sll $v0, $v0, 2
/* 18AF54 8025C674 00431021 */ addu $v0, $v0, $v1
/* 18AF58 8025C678 8C4B0000 */ lw $t3, ($v0)
/* 18AF5C 8025C67C 0000B812 */ mflo $s7
/* 18AF60 8025C680 02EC1021 */ addu $v0, $s7, $t4
/* 18AF64 8025C684 00021080 */ sll $v0, $v0, 2
/* 18AF68 8025C688 00431021 */ addu $v0, $v0, $v1
/* 18AF6C 8025C68C 8C490000 */ lw $t1, ($v0)
/* 18AF70 8025C690 0000502D */ daddu $t2, $zero, $zero
/* 18AF74 8025C694 AF2D06D4 */ sw $t5, 0x6d4($t9)
.L8025C698:
/* 18AF78 8025C698 95630000 */ lhu $v1, ($t3)
/* 18AF7C 8025C69C 000312C2 */ srl $v0, $v1, 0xb
/* 18AF80 8025C6A0 00580018 */ mult $v0, $t8
/* 18AF84 8025C6A4 95240000 */ lhu $a0, ($t1)
/* 18AF88 8025C6A8 00002812 */ mflo $a1
/* 18AF8C 8025C6AC 000412C2 */ srl $v0, $a0, 0xb
/* 18AF90 8025C6B0 00000000 */ nop
/* 18AF94 8025C6B4 004E0018 */ mult $v0, $t6
/* 18AF98 8025C6B8 00004012 */ mflo $t0
/* 18AF9C 8025C6BC 00A82821 */ addu $a1, $a1, $t0
/* 18AFA0 8025C6C0 00000000 */ nop
/* 18AFA4 8025C6C4 00AF0018 */ mult $a1, $t7
/* 18AFA8 8025C6C8 00009010 */ mfhi $s2
/* 18AFAC 8025C6CC 00031182 */ srl $v0, $v1, 6
/* 18AFB0 8025C6D0 3042001F */ andi $v0, $v0, 0x1f
/* 18AFB4 8025C6D4 00580018 */ mult $v0, $t8
/* 18AFB8 8025C6D8 00004012 */ mflo $t0
/* 18AFBC 8025C6DC 00041182 */ srl $v0, $a0, 6
/* 18AFC0 8025C6E0 3042001F */ andi $v0, $v0, 0x1f
/* 18AFC4 8025C6E4 004E0018 */ mult $v0, $t6
/* 18AFC8 8025C6E8 00003812 */ mflo $a3
/* 18AFCC 8025C6EC 00031842 */ srl $v1, $v1, 1
/* 18AFD0 8025C6F0 3063001F */ andi $v1, $v1, 0x1f
/* 18AFD4 8025C6F4 00780018 */ mult $v1, $t8
/* 18AFD8 8025C6F8 00001812 */ mflo $v1
/* 18AFDC 8025C6FC 00042042 */ srl $a0, $a0, 1
/* 18AFE0 8025C700 3084001F */ andi $a0, $a0, 0x1f
/* 18AFE4 8025C704 008E0018 */ mult $a0, $t6
/* 18AFE8 8025C708 256B0002 */ addiu $t3, $t3, 2
/* 18AFEC 8025C70C 91260001 */ lbu $a2, 1($t1)
/* 18AFF0 8025C710 25290002 */ addiu $t1, $t1, 2
/* 18AFF4 8025C714 254A0001 */ addiu $t2, $t2, 1
/* 18AFF8 8025C718 0000B812 */ mflo $s7
/* 18AFFC 8025C71C 30C60001 */ andi $a2, $a2, 1
/* 18B000 8025C720 01072021 */ addu $a0, $t0, $a3
/* 18B004 8025C724 008F0018 */ mult $a0, $t7
/* 18B008 8025C728 02451021 */ addu $v0, $s2, $a1
/* 18B00C 8025C72C 000211C3 */ sra $v0, $v0, 7
/* 18B010 8025C730 00052FC3 */ sra $a1, $a1, 0x1f
/* 18B014 8025C734 00453823 */ subu $a3, $v0, $a1
/* 18B018 8025C738 00004010 */ mfhi $t0
/* 18B01C 8025C73C AFB70014 */ sw $s7, 0x14($sp)
/* 18B020 8025C740 00771821 */ addu $v1, $v1, $s7
/* 18B024 8025C744 006F0018 */ mult $v1, $t7
/* 18B028 8025C748 01041021 */ addu $v0, $t0, $a0
/* 18B02C 8025C74C 000211C3 */ sra $v0, $v0, 7
/* 18B030 8025C750 000427C3 */ sra $a0, $a0, 0x1f
/* 18B034 8025C754 00442823 */ subu $a1, $v0, $a0
/* 18B038 8025C758 00009010 */ mfhi $s2
/* 18B03C 8025C75C 02431021 */ addu $v0, $s2, $v1
/* 18B040 8025C760 000211C3 */ sra $v0, $v0, 7
/* 18B044 8025C764 00031FC3 */ sra $v1, $v1, 0x1f
/* 18B048 8025C768 00432023 */ subu $a0, $v0, $v1
/* 18B04C 8025C76C 30E300FF */ andi $v1, $a3, 0xff
/* 18B050 8025C770 00031AC0 */ sll $v1, $v1, 0xb
/* 18B054 8025C774 30A200FF */ andi $v0, $a1, 0xff
/* 18B058 8025C778 00021180 */ sll $v0, $v0, 6
/* 18B05C 8025C77C 00621825 */ or $v1, $v1, $v0
/* 18B060 8025C780 308200FF */ andi $v0, $a0, 0xff
/* 18B064 8025C784 00021040 */ sll $v0, $v0, 1
/* 18B068 8025C788 00621825 */ or $v1, $v1, $v0
/* 18B06C 8025C78C 00C33025 */ or $a2, $a2, $v1
/* 18B070 8025C790 A5A60000 */ sh $a2, ($t5)
/* 18B074 8025C794 29420010 */ slti $v0, $t2, 0x10
/* 18B078 8025C798 1440FFBF */ bnez $v0, .L8025C698
/* 18B07C 8025C79C 25AD0002 */ addiu $t5, $t5, 2
/* 18B080 8025C7A0 258C0001 */ addiu $t4, $t4, 1
/* 18B084 8025C7A4 820206CC */ lb $v0, 0x6cc($s0)
/* 18B088 8025C7A8 920506CC */ lbu $a1, 0x6cc($s0)
/* 18B08C 8025C7AC 0182102A */ slt $v0, $t4, $v0
/* 18B090 8025C7B0 1440FFA4 */ bnez $v0, .L8025C644
/* 18B094 8025C7B4 27390004 */ addiu $t9, $t9, 4
.L8025C7B8:
/* 18B098 8025C7B8 322300FF */ andi $v1, $s1, 0xff
/* 18B09C 8025C7BC 240200FF */ addiu $v0, $zero, 0xff
/* 18B0A0 8025C7C0 14620004 */ bne $v1, $v0, .L8025C7D4
/* 18B0A4 8025C7C4 00000000 */ nop
/* 18B0A8 8025C7C8 96020744 */ lhu $v0, 0x744($s0)
/* 18B0AC 8025C7CC A20006C2 */ sb $zero, 0x6c2($s0)
.L8025C7D0:
/* 18B0B0 8025C7D0 A60206C8 */ sh $v0, 0x6c8($s0)
.L8025C7D4:
/* 18B0B4 8025C7D4 820306C2 */ lb $v1, 0x6c2($s0)
/* 18B0B8 8025C7D8 28620004 */ slti $v0, $v1, 4
/* 18B0BC 8025C7DC 1040000D */ beqz $v0, .L8025C814
/* 18B0C0 8025C7E0 00000000 */ nop
/* 18B0C4 8025C7E4 0460000B */ bltz $v1, .L8025C814
/* 18B0C8 8025C7E8 00000000 */ nop
/* 18B0CC 8025C7EC 16800006 */ bnez $s4, .L8025C808
/* 18B0D0 8025C7F0 0260202D */ daddu $a0, $s3, $zero
/* 18B0D4 8025C7F4 02A0282D */ daddu $a1, $s5, $zero
/* 18B0D8 8025C7F8 0C096657 */ jal func_8025995C
/* 18B0DC 8025C7FC 02C0302D */ daddu $a2, $s6, $zero
/* 18B0E0 8025C800 08097205 */ j .L8025C814
/* 18B0E4 8025C804 00000000 */ nop
.L8025C808:
/* 18B0E8 8025C808 02A0282D */ daddu $a1, $s5, $zero
/* 18B0EC 8025C80C 0C0965B0 */ jal func_802596C0
/* 18B0F0 8025C810 02C0302D */ daddu $a2, $s6, $zero
.L8025C814:
/* 18B0F4 8025C814 8FBF0038 */ lw $ra, 0x38($sp)
/* 18B0F8 8025C818 8FB70034 */ lw $s7, 0x34($sp)
/* 18B0FC 8025C81C 8FB60030 */ lw $s6, 0x30($sp)
/* 18B100 8025C820 8FB5002C */ lw $s5, 0x2c($sp)
/* 18B104 8025C824 8FB40028 */ lw $s4, 0x28($sp)
/* 18B108 8025C828 8FB30024 */ lw $s3, 0x24($sp)
/* 18B10C 8025C82C 8FB20020 */ lw $s2, 0x20($sp)
/* 18B110 8025C830 8FB1001C */ lw $s1, 0x1c($sp)
/* 18B114 8025C834 8FB00018 */ lw $s0, 0x18($sp)
/* 18B118 8025C838 03E00008 */ jr $ra
/* 18B11C 8025C83C 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,11 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E011A3A0
/* 4045C0 E011A3A0 27BDFFE8 */ addiu $sp, $sp, -0x18
/* 4045C4 E011A3A4 AFBF0010 */ sw $ra, 0x10($sp)
/* 4045C8 E011A3A8 0C0469C0 */ jal func_E011A700
/* 4045CC E011A3AC 00000000 */ nop
/* 4045D0 E011A3B0 8FBF0010 */ lw $ra, 0x10($sp)
/* 4045D4 E011A3B4 03E00008 */ jr $ra
/* 4045D8 E011A3B8 27BD0018 */ addiu $sp, $sp, 0x18

View File

@ -1,179 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_E011A48C
/* 4046AC E011A48C 3C03800A */ lui $v1, %hi(gMasterGfxPos)
/* 4046B0 E011A490 2463A66C */ addiu $v1, $v1, %lo(gMasterGfxPos)
/* 4046B4 E011A494 44872000 */ mtc1 $a3, $f4
/* 4046B8 E011A498 8C670000 */ lw $a3, ($v1)
/* 4046BC E011A49C 24E20008 */ addiu $v0, $a3, 8
/* 4046C0 E011A4A0 AC620000 */ sw $v0, ($v1)
/* 4046C4 E011A4A4 24820020 */ addiu $v0, $a0, 0x20
/* 4046C8 E011A4A8 00021480 */ sll $v0, $v0, 0x12
/* 4046CC E011A4AC 00021403 */ sra $v0, $v0, 0x10
/* 4046D0 E011A4B0 18400005 */ blez $v0, .LE011A4C8
/* 4046D4 E011A4B4 30420FFF */ andi $v0, $v0, 0xfff
/* 4046D8 E011A4B8 00021300 */ sll $v0, $v0, 0xc
/* 4046DC E011A4BC 3C03E400 */ lui $v1, 0xe400
/* 4046E0 E011A4C0 08046933 */ j .LE011A4CC
/* 4046E4 E011A4C4 00431825 */ or $v1, $v0, $v1
.LE011A4C8:
/* 4046E8 E011A4C8 3C03E400 */ lui $v1, 0xe400
.LE011A4CC:
/* 4046EC E011A4CC 24A20020 */ addiu $v0, $a1, 0x20
/* 4046F0 E011A4D0 00021480 */ sll $v0, $v0, 0x12
/* 4046F4 E011A4D4 00021403 */ sra $v0, $v0, 0x10
/* 4046F8 E011A4D8 18400004 */ blez $v0, .LE011A4EC
/* 4046FC E011A4DC ACE30000 */ sw $v1, ($a3)
/* 404700 E011A4E0 30420FFF */ andi $v0, $v0, 0xfff
/* 404704 E011A4E4 00621025 */ or $v0, $v1, $v0
/* 404708 E011A4E8 ACE20000 */ sw $v0, ($a3)
.LE011A4EC:
/* 40470C E011A4EC 30C20007 */ andi $v0, $a2, 7
/* 404710 E011A4F0 00021E00 */ sll $v1, $v0, 0x18
/* 404714 E011A4F4 00041480 */ sll $v0, $a0, 0x12
/* 404718 E011A4F8 00023403 */ sra $a2, $v0, 0x10
/* 40471C E011A4FC 18C00003 */ blez $a2, .LE011A50C
/* 404720 E011A500 30C20FFF */ andi $v0, $a2, 0xfff
/* 404724 E011A504 00021300 */ sll $v0, $v0, 0xc
/* 404728 E011A508 00621825 */ or $v1, $v1, $v0
.LE011A50C:
/* 40472C E011A50C 00051480 */ sll $v0, $a1, 0x12
/* 404730 E011A510 00021403 */ sra $v0, $v0, 0x10
/* 404734 E011A514 18400004 */ blez $v0, .LE011A528
/* 404738 E011A518 ACE30004 */ sw $v1, 4($a3)
/* 40473C E011A51C 30420FFF */ andi $v0, $v0, 0xfff
/* 404740 E011A520 00621025 */ or $v0, $v1, $v0
/* 404744 E011A524 ACE20004 */ sw $v0, 4($a3)
.LE011A528:
/* 404748 E011A528 3C03800A */ lui $v1, %hi(gMasterGfxPos)
/* 40474C E011A52C 2463A66C */ addiu $v1, $v1, %lo(gMasterGfxPos)
/* 404750 E011A530 8C620000 */ lw $v0, ($v1)
/* 404754 E011A534 0040202D */ daddu $a0, $v0, $zero
/* 404758 E011A538 24420008 */ addiu $v0, $v0, 8
/* 40475C E011A53C AC620000 */ sw $v0, ($v1)
/* 404760 E011A540 3C02E100 */ lui $v0, 0xe100
/* 404764 E011A544 AC820000 */ sw $v0, ($a0)
/* 404768 E011A548 04C10015 */ bgez $a2, .LE011A5A0
/* 40476C E011A54C 24840004 */ addiu $a0, $a0, 4
/* 404770 E011A550 4600218D */ trunc.w.s $f6, $f4
/* 404774 E011A554 44023000 */ mfc1 $v0, $f6
/* 404778 E011A558 00000000 */ nop
/* 40477C E011A55C 00021400 */ sll $v0, $v0, 0x10
/* 404780 E011A560 00021403 */ sra $v0, $v0, 0x10
/* 404784 E011A564 04410007 */ bgez $v0, .LE011A584
/* 404788 E011A568 00C20018 */ mult $a2, $v0
/* 40478C E011A56C 00004012 */ mflo $t0
/* 404790 E011A570 000811C3 */ sra $v0, $t0, 7
/* 404794 E011A574 04410008 */ bgez $v0, .LE011A598
/* 404798 E011A578 00021023 */ negu $v0, $v0
/* 40479C E011A57C 08046965 */ j .LE011A594
/* 4047A0 E011A580 0000102D */ daddu $v0, $zero, $zero
.LE011A584:
/* 4047A4 E011A584 00004012 */ mflo $t0
/* 4047A8 E011A588 000811C3 */ sra $v0, $t0, 7
/* 4047AC E011A58C 5C400001 */ bgtzl $v0, .LE011A594
/* 4047B0 E011A590 0000102D */ daddu $v0, $zero, $zero
.LE011A594:
/* 4047B4 E011A594 00021023 */ negu $v0, $v0
.LE011A598:
/* 4047B8 E011A598 08046969 */ j .LE011A5A4
/* 4047BC E011A59C 00023400 */ sll $a2, $v0, 0x10
.LE011A5A0:
/* 4047C0 E011A5A0 0000302D */ daddu $a2, $zero, $zero
.LE011A5A4:
/* 4047C4 E011A5A4 00051080 */ sll $v0, $a1, 2
/* 4047C8 E011A5A8 0441001E */ bgez $v0, .LE011A624
/* 4047CC E011A5AC 34C20400 */ ori $v0, $a2, 0x400
/* 4047D0 E011A5B0 46002007 */ neg.s $f0, $f4
/* 4047D4 E011A5B4 4600018D */ trunc.w.s $f6, $f0
/* 4047D8 E011A5B8 44023000 */ mfc1 $v0, $f6
/* 4047DC E011A5BC 00000000 */ nop
/* 4047E0 E011A5C0 00021400 */ sll $v0, $v0, 0x10
/* 4047E4 E011A5C4 00021C03 */ sra $v1, $v0, 0x10
/* 4047E8 E011A5C8 0461000C */ bgez $v1, .LE011A5FC
/* 4047EC E011A5CC 00051480 */ sll $v0, $a1, 0x12
/* 4047F0 E011A5D0 00021403 */ sra $v0, $v0, 0x10
/* 4047F4 E011A5D4 00430018 */ mult $v0, $v1
/* 4047F8 E011A5D8 00004012 */ mflo $t0
/* 4047FC E011A5DC 000819C3 */ sra $v1, $t0, 7
/* 404800 E011A5E0 04620001 */ bltzl $v1, .LE011A5E8
/* 404804 E011A5E4 0000182D */ daddu $v1, $zero, $zero
.LE011A5E8:
/* 404808 E011A5E8 24020400 */ addiu $v0, $zero, 0x400
/* 40480C E011A5EC 00431023 */ subu $v0, $v0, $v1
/* 404810 E011A5F0 3042FFFF */ andi $v0, $v0, 0xffff
/* 404814 E011A5F4 08046989 */ j .LE011A624
/* 404818 E011A5F8 00C21025 */ or $v0, $a2, $v0
.LE011A5FC:
/* 40481C E011A5FC 00021403 */ sra $v0, $v0, 0x10
/* 404820 E011A600 00430018 */ mult $v0, $v1
/* 404824 E011A604 00004012 */ mflo $t0
/* 404828 E011A608 000819C3 */ sra $v1, $t0, 7
/* 40482C E011A60C 5C600001 */ bgtzl $v1, .LE011A614
/* 404830 E011A610 0000182D */ daddu $v1, $zero, $zero
.LE011A614:
/* 404834 E011A614 24020400 */ addiu $v0, $zero, 0x400
/* 404838 E011A618 00431023 */ subu $v0, $v0, $v1
/* 40483C E011A61C 3042FFFF */ andi $v0, $v0, 0xffff
/* 404840 E011A620 00C21025 */ or $v0, $a2, $v0
.LE011A624:
/* 404844 E011A624 AC820000 */ sw $v0, ($a0)
/* 404848 E011A628 3C03800A */ lui $v1, %hi(gMasterGfxPos)
/* 40484C E011A62C 2463A66C */ addiu $v1, $v1, %lo(gMasterGfxPos)
/* 404850 E011A630 8C620000 */ lw $v0, ($v1)
/* 404854 E011A634 3C014F00 */ lui $at, 0x4f00
/* 404858 E011A638 44810000 */ mtc1 $at, $f0
/* 40485C E011A63C 0040202D */ daddu $a0, $v0, $zero
/* 404860 E011A640 24420008 */ addiu $v0, $v0, 8
/* 404864 E011A644 AC620000 */ sw $v0, ($v1)
/* 404868 E011A648 3C02F100 */ lui $v0, 0xf100
/* 40486C E011A64C AC820000 */ sw $v0, ($a0)
/* 404870 E011A650 4604003E */ c.le.s $f0, $f4
/* 404874 E011A654 00000000 */ nop
/* 404878 E011A658 45010005 */ bc1t .LE011A670
/* 40487C E011A65C 24840004 */ addiu $a0, $a0, 4
/* 404880 E011A660 4600218D */ trunc.w.s $f6, $f4
/* 404884 E011A664 44033000 */ mfc1 $v1, $f6
/* 404888 E011A668 080469A2 */ j .LE011A688
/* 40488C E011A66C 00000000 */ nop
.LE011A670:
/* 404890 E011A670 46002001 */ sub.s $f0, $f4, $f0
/* 404894 E011A674 3C028000 */ lui $v0, 0x8000
/* 404898 E011A678 4600018D */ trunc.w.s $f6, $f0
/* 40489C E011A67C 44033000 */ mfc1 $v1, $f6
/* 4048A0 E011A680 00000000 */ nop
/* 4048A4 E011A684 00621825 */ or $v1, $v1, $v0
.LE011A688:
/* 4048A8 E011A688 3C014F00 */ lui $at, 0x4f00
/* 4048AC E011A68C 44811000 */ mtc1 $at, $f2
/* 4048B0 E011A690 46002007 */ neg.s $f0, $f4
/* 4048B4 E011A694 4600103E */ c.le.s $f2, $f0
/* 4048B8 E011A698 00000000 */ nop
/* 4048BC E011A69C 45010005 */ bc1t .LE011A6B4
/* 4048C0 E011A6A0 00033400 */ sll $a2, $v1, 0x10
/* 4048C4 E011A6A4 4600018D */ trunc.w.s $f6, $f0
/* 4048C8 E011A6A8 44073000 */ mfc1 $a3, $f6
/* 4048CC E011A6AC 080469B3 */ j .LE011A6CC
/* 4048D0 E011A6B0 00000000 */ nop
.LE011A6B4:
/* 4048D4 E011A6B4 46020001 */ sub.s $f0, $f0, $f2
/* 4048D8 E011A6B8 3C028000 */ lui $v0, 0x8000
/* 4048DC E011A6BC 4600018D */ trunc.w.s $f6, $f0
/* 4048E0 E011A6C0 44073000 */ mfc1 $a3, $f6
/* 4048E4 E011A6C4 00000000 */ nop
/* 4048E8 E011A6C8 00E23825 */ or $a3, $a3, $v0
.LE011A6CC:
/* 4048EC E011A6CC 3C05800A */ lui $a1, %hi(gMasterGfxPos)
/* 4048F0 E011A6D0 24A5A66C */ addiu $a1, $a1, %lo(gMasterGfxPos)
/* 4048F4 E011A6D4 30E2FFFF */ andi $v0, $a3, 0xffff
/* 4048F8 E011A6D8 8CA30000 */ lw $v1, ($a1)
/* 4048FC E011A6DC 00C21025 */ or $v0, $a2, $v0
/* 404900 E011A6E0 AC820000 */ sw $v0, ($a0)
/* 404904 E011A6E4 3C02E700 */ lui $v0, 0xe700
/* 404908 E011A6E8 0060202D */ daddu $a0, $v1, $zero
/* 40490C E011A6EC 24630008 */ addiu $v1, $v1, 8
/* 404910 E011A6F0 ACA30000 */ sw $v1, ($a1)
/* 404914 E011A6F4 AC820000 */ sw $v0, ($a0)
/* 404918 E011A6F8 03E00008 */ jr $ra
/* 40491C E011A6FC AC800004 */ sw $zero, 4($a0)

View File

@ -1,73 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel partner_buff_main
/* 404220 E011A000 27BDFFC8 */ addiu $sp, $sp, -0x38
/* 404224 E011A004 AFB1002C */ sw $s1, 0x2c($sp)
/* 404228 E011A008 0080882D */ daddu $s1, $a0, $zero
/* 40422C E011A00C 27A40010 */ addiu $a0, $sp, 0x10
/* 404230 E011A010 AFB20030 */ sw $s2, 0x30($sp)
/* 404234 E011A014 8FB2004C */ lw $s2, 0x4c($sp)
/* 404238 E011A018 3C02E012 */ lui $v0, %hi(partner_buff_init)
/* 40423C E011A01C 2442A0FC */ addiu $v0, $v0, %lo(partner_buff_init)
/* 404240 E011A020 AFA20018 */ sw $v0, 0x18($sp)
/* 404244 E011A024 3C02E012 */ lui $v0, %hi(partner_buff_update)
/* 404248 E011A028 2442A104 */ addiu $v0, $v0, %lo(partner_buff_update)
/* 40424C E011A02C AFA2001C */ sw $v0, 0x1c($sp)
/* 404250 E011A030 3C02E012 */ lui $v0, %hi(partner_buff_render)
/* 404254 E011A034 2442A398 */ addiu $v0, $v0, %lo(partner_buff_render)
/* 404258 E011A038 AFA20020 */ sw $v0, 0x20($sp)
/* 40425C E011A03C 3C02E012 */ lui $v0, %hi(func_E011A3A0)
/* 404260 E011A040 2442A3A0 */ addiu $v0, $v0, %lo(func_E011A3A0)
/* 404264 E011A044 AFA20024 */ sw $v0, 0x24($sp)
/* 404268 E011A048 2402007F */ addiu $v0, $zero, 0x7f
/* 40426C E011A04C AFBF0034 */ sw $ra, 0x34($sp)
/* 404270 E011A050 AFB00028 */ sw $s0, 0x28($sp)
/* 404274 E011A054 AFA00010 */ sw $zero, 0x10($sp)
/* 404278 E011A058 0C080124 */ jal shim_create_effect_instance
/* 40427C E011A05C AFA20014 */ sw $v0, 0x14($sp)
/* 404280 E011A060 2404002C */ addiu $a0, $zero, 0x2c
/* 404284 E011A064 24030001 */ addiu $v1, $zero, 1
/* 404288 E011A068 0040802D */ daddu $s0, $v0, $zero
/* 40428C E011A06C 0C08012C */ jal shim_general_heap_malloc
/* 404290 E011A070 AE030008 */ sw $v1, 8($s0)
/* 404294 E011A074 0040282D */ daddu $a1, $v0, $zero
/* 404298 E011A078 14A00003 */ bnez $a1, .LE011A088
/* 40429C E011A07C AE02000C */ sw $v0, 0xc($s0)
.LE011A080:
/* 4042A0 E011A080 08046820 */ j .LE011A080
/* 4042A4 E011A084 00000000 */ nop
.LE011A088:
/* 4042A8 E011A088 A4B10000 */ sh $s1, ($a1)
/* 4042AC E011A08C 1E400004 */ bgtz $s2, .LE011A0A0
/* 4042B0 E011A090 ACA00008 */ sw $zero, 8($a1)
/* 4042B4 E011A094 240203E8 */ addiu $v0, $zero, 0x3e8
/* 4042B8 E011A098 08046829 */ j .LE011A0A4
/* 4042BC E011A09C ACA20004 */ sw $v0, 4($a1)
.LE011A0A0:
/* 4042C0 E011A0A0 ACB20004 */ sw $s2, 4($a1)
.LE011A0A4:
/* 4042C4 E011A0A4 0000202D */ daddu $a0, $zero, $zero
/* 4042C8 E011A0A8 00A0182D */ daddu $v1, $a1, $zero
.LE011A0AC:
/* 4042CC E011A0AC A460000C */ sh $zero, 0xc($v1)
/* 4042D0 E011A0B0 A460000E */ sh $zero, 0xe($v1)
/* 4042D4 E011A0B4 A4600010 */ sh $zero, 0x10($v1)
/* 4042D8 E011A0B8 A4600012 */ sh $zero, 0x12($v1)
/* 4042DC E011A0BC A4600014 */ sh $zero, 0x14($v1)
/* 4042E0 E011A0C0 24840001 */ addiu $a0, $a0, 1
/* 4042E4 E011A0C4 28820003 */ slti $v0, $a0, 3
/* 4042E8 E011A0C8 1440FFF8 */ bnez $v0, .LE011A0AC
/* 4042EC E011A0CC 2463000A */ addiu $v1, $v1, 0xa
/* 4042F0 E011A0D0 24020001 */ addiu $v0, $zero, 1
/* 4042F4 E011A0D4 16220002 */ bne $s1, $v0, .LE011A0E0
/* 4042F8 E011A0D8 A4A00002 */ sh $zero, 2($a1)
/* 4042FC E011A0DC A4B10002 */ sh $s1, 2($a1)
.LE011A0E0:
/* 404300 E011A0E0 0200102D */ daddu $v0, $s0, $zero
/* 404304 E011A0E4 8FBF0034 */ lw $ra, 0x34($sp)
/* 404308 E011A0E8 8FB20030 */ lw $s2, 0x30($sp)
/* 40430C E011A0EC 8FB1002C */ lw $s1, 0x2c($sp)
/* 404310 E011A0F0 8FB00028 */ lw $s0, 0x28($sp)
/* 404314 E011A0F4 03E00008 */ jr $ra
/* 404318 E011A0F8 27BD0038 */ addiu $sp, $sp, 0x38

View File

@ -1,197 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.section .rodata
dlabel jtbl_E011AC70
.word LE011A214_404434, LE011A280_4044A0, LE011A2C4_4044E4, LE011A304_404524, LE011A324_404544, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A28C_4044AC, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A2D0_4044F0, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A360_404580, LE011A334_404554, 0, 0, 0
.section .text
glabel partner_buff_update
/* 404324 E011A104 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 404328 E011A108 AFBF002C */ sw $ra, 0x2c($sp)
/* 40432C E011A10C AFB60028 */ sw $s6, 0x28($sp)
/* 404330 E011A110 AFB50024 */ sw $s5, 0x24($sp)
/* 404334 E011A114 AFB40020 */ sw $s4, 0x20($sp)
/* 404338 E011A118 AFB3001C */ sw $s3, 0x1c($sp)
/* 40433C E011A11C AFB20018 */ sw $s2, 0x18($sp)
/* 404340 E011A120 AFB10014 */ sw $s1, 0x14($sp)
/* 404344 E011A124 AFB00010 */ sw $s0, 0x10($sp)
/* 404348 E011A128 8C830000 */ lw $v1, ($a0)
/* 40434C E011A12C 8C91000C */ lw $s1, 0xc($a0)
/* 404350 E011A130 30620010 */ andi $v0, $v1, 0x10
/* 404354 E011A134 86360000 */ lh $s6, ($s1)
/* 404358 E011A138 10400005 */ beqz $v0, .LE011A150
/* 40435C E011A13C 2402FFEF */ addiu $v0, $zero, -0x11
/* 404360 E011A140 00621024 */ and $v0, $v1, $v0
/* 404364 E011A144 AC820000 */ sw $v0, ($a0)
/* 404368 E011A148 24020010 */ addiu $v0, $zero, 0x10
/* 40436C E011A14C AE220004 */ sw $v0, 4($s1)
.LE011A150:
/* 404370 E011A150 8E230004 */ lw $v1, 4($s1)
/* 404374 E011A154 286203E8 */ slti $v0, $v1, 0x3e8
/* 404378 E011A158 10400002 */ beqz $v0, .LE011A164
/* 40437C E011A15C 2462FFFF */ addiu $v0, $v1, -1
/* 404380 E011A160 AE220004 */ sw $v0, 4($s1)
.LE011A164:
/* 404384 E011A164 8E220008 */ lw $v0, 8($s1)
/* 404388 E011A168 8E230004 */ lw $v1, 4($s1)
/* 40438C E011A16C 24450001 */ addiu $a1, $v0, 1
/* 404390 E011A170 04610005 */ bgez $v1, .LE011A188
/* 404394 E011A174 AE250008 */ sw $a1, 8($s1)
/* 404398 E011A178 0C080128 */ jal shim_remove_effect
/* 40439C E011A17C 00000000 */ nop
/* 4043A0 E011A180 080468DC */ j .LE011A370
/* 4043A4 E011A184 00000000 */ nop
.LE011A188:
/* 4043A8 E011A188 3C028888 */ lui $v0, 0x8888
/* 4043AC E011A18C 34428889 */ ori $v0, $v0, 0x8889
/* 4043B0 E011A190 00A20018 */ mult $a1, $v0
/* 4043B4 E011A194 0000982D */ daddu $s3, $zero, $zero
/* 4043B8 E011A198 24140001 */ addiu $s4, $zero, 1
/* 4043BC E011A19C 2412000C */ addiu $s2, $zero, 0xc
/* 4043C0 E011A1A0 000517C3 */ sra $v0, $a1, 0x1f
/* 4043C4 E011A1A4 00003010 */ mfhi $a2
/* 4043C8 E011A1A8 00C51821 */ addu $v1, $a2, $a1
/* 4043CC E011A1AC 00031903 */ sra $v1, $v1, 4
/* 4043D0 E011A1B0 00621823 */ subu $v1, $v1, $v0
/* 4043D4 E011A1B4 00031100 */ sll $v0, $v1, 4
/* 4043D8 E011A1B8 00431023 */ subu $v0, $v0, $v1
/* 4043DC E011A1BC 02821004 */ sllv $v0, $v0, $s4
/* 4043E0 E011A1C0 00A2A823 */ subu $s5, $a1, $v0
.LE011A1C4:
/* 4043E4 E011A1C4 02328021 */ addu $s0, $s1, $s2
/* 4043E8 E011A1C8 86020004 */ lh $v0, 4($s0)
/* 4043EC E011A1CC 04420001 */ bltzl $v0, .LE011A1D4
/* 4043F0 E011A1D0 A6000004 */ sh $zero, 4($s0)
.LE011A1D4:
/* 4043F4 E011A1D4 16D40006 */ bne $s6, $s4, .LE011A1F0
/* 4043F8 E011A1D8 00000000 */ nop
/* 4043FC E011A1DC 16A00004 */ bnez $s5, .LE011A1F0
/* 404400 E011A1E0 00000000 */ nop
/* 404404 E011A1E4 0C080138 */ jal shim_rand_int
/* 404408 E011A1E8 24040004 */ addiu $a0, $zero, 4
/* 40440C E011A1EC A6020004 */ sh $v0, 4($s0)
.LE011A1F0:
/* 404410 E011A1F0 86030006 */ lh $v1, 6($s0)
/* 404414 E011A1F4 2C620029 */ sltiu $v0, $v1, 0x29
/* 404418 E011A1F8 10400059 */ beqz $v0, LE011A360_404580
/* 40441C E011A1FC 00031080 */ sll $v0, $v1, 2
/* 404420 E011A200 3C01E012 */ lui $at, %hi(jtbl_E011AC70)
/* 404424 E011A204 00220821 */ addu $at, $at, $v0
/* 404428 E011A208 8C22AC70 */ lw $v0, %lo(jtbl_E011AC70)($at)
/* 40442C E011A20C 00400008 */ jr $v0
/* 404430 E011A210 00000000 */ nop
dlabel LE011A214_404434
/* 404434 E011A214 86030000 */ lh $v1, ($s0)
/* 404438 E011A218 240200FF */ addiu $v0, $zero, 0xff
/* 40443C E011A21C 14620011 */ bne $v1, $v0, .LE011A264
/* 404440 E011A220 00000000 */ nop
/* 404444 E011A224 86040004 */ lh $a0, 4($s0)
/* 404448 E011A228 86030002 */ lh $v1, 2($s0)
/* 40444C E011A22C 0083102A */ slt $v0, $a0, $v1
/* 404450 E011A230 10400003 */ beqz $v0, .LE011A240
/* 404454 E011A234 0064102A */ slt $v0, $v1, $a0
/* 404458 E011A238 080468D8 */ j LE011A360_404580
/* 40445C E011A23C A6140006 */ sh $s4, 6($s0)
.LE011A240:
/* 404460 E011A240 10400003 */ beqz $v0, .LE011A250
/* 404464 E011A244 24020002 */ addiu $v0, $zero, 2
/* 404468 E011A248 080468D8 */ j LE011A360_404580
/* 40446C E011A24C A6020006 */ sh $v0, 6($s0)
.LE011A250:
/* 404470 E011A250 54600044 */ bnel $v1, $zero, .LE011A364
/* 404474 E011A254 26730001 */ addiu $s3, $s3, 1
/* 404478 E011A258 24020003 */ addiu $v0, $zero, 3
/* 40447C E011A25C 080468D8 */ j LE011A360_404580
/* 404480 E011A260 A6020006 */ sh $v0, 6($s0)
.LE011A264:
/* 404484 E011A264 5460003F */ bnel $v1, $zero, .LE011A364
/* 404488 E011A268 26730001 */ addiu $s3, $s3, 1
/* 40448C E011A26C 86020004 */ lh $v0, 4($s0)
/* 404490 E011A270 1840003B */ blez $v0, LE011A360_404580
/* 404494 E011A274 24020004 */ addiu $v0, $zero, 4
/* 404498 E011A278 080468D8 */ j LE011A360_404580
/* 40449C E011A27C A6020006 */ sh $v0, 6($s0)
dlabel LE011A280_4044A0
/* 4044A0 E011A280 2402000A */ addiu $v0, $zero, 0xa
/* 4044A4 E011A284 A6000008 */ sh $zero, 8($s0)
/* 4044A8 E011A288 A6020006 */ sh $v0, 6($s0)
dlabel LE011A28C_4044AC
/* 4044AC E011A28C 96020008 */ lhu $v0, 8($s0)
/* 4044B0 E011A290 24420001 */ addiu $v0, $v0, 1
/* 4044B4 E011A294 A6020008 */ sh $v0, 8($s0)
/* 4044B8 E011A298 00021400 */ sll $v0, $v0, 0x10
/* 4044BC E011A29C 00021403 */ sra $v0, $v0, 0x10
/* 4044C0 E011A2A0 2842000B */ slti $v0, $v0, 0xb
/* 4044C4 E011A2A4 5440002F */ bnel $v0, $zero, .LE011A364
/* 4044C8 E011A2A8 26730001 */ addiu $s3, $s3, 1
/* 4044CC E011A2AC 96020002 */ lhu $v0, 2($s0)
/* 4044D0 E011A2B0 A6000008 */ sh $zero, 8($s0)
/* 4044D4 E011A2B4 A6000006 */ sh $zero, 6($s0)
/* 4044D8 E011A2B8 2442FFFF */ addiu $v0, $v0, -1
/* 4044DC E011A2BC 080468D8 */ j LE011A360_404580
/* 4044E0 E011A2C0 A6020002 */ sh $v0, 2($s0)
dlabel LE011A2C4_4044E4
/* 4044E4 E011A2C4 24020014 */ addiu $v0, $zero, 0x14
/* 4044E8 E011A2C8 A6000008 */ sh $zero, 8($s0)
/* 4044EC E011A2CC A6020006 */ sh $v0, 6($s0)
dlabel LE011A2D0_4044F0
/* 4044F0 E011A2D0 96020008 */ lhu $v0, 8($s0)
/* 4044F4 E011A2D4 24420001 */ addiu $v0, $v0, 1
/* 4044F8 E011A2D8 A6020008 */ sh $v0, 8($s0)
/* 4044FC E011A2DC 00021400 */ sll $v0, $v0, 0x10
/* 404500 E011A2E0 00021403 */ sra $v0, $v0, 0x10
/* 404504 E011A2E4 2842000B */ slti $v0, $v0, 0xb
/* 404508 E011A2E8 5440001E */ bnel $v0, $zero, .LE011A364
/* 40450C E011A2EC 26730001 */ addiu $s3, $s3, 1
/* 404510 E011A2F0 96020004 */ lhu $v0, 4($s0)
/* 404514 E011A2F4 A6000008 */ sh $zero, 8($s0)
/* 404518 E011A2F8 A6000006 */ sh $zero, 6($s0)
/* 40451C E011A2FC 080468D8 */ j LE011A360_404580
/* 404520 E011A300 A6020002 */ sh $v0, 2($s0)
dlabel LE011A304_404524
/* 404524 E011A304 96020000 */ lhu $v0, ($s0)
/* 404528 E011A308 2442FFE0 */ addiu $v0, $v0, -0x20
/* 40452C E011A30C A6020000 */ sh $v0, ($s0)
/* 404530 E011A310 00021400 */ sll $v0, $v0, 0x10
/* 404534 E011A314 04430013 */ bgezl $v0, .LE011A364
/* 404538 E011A318 26730001 */ addiu $s3, $s3, 1
/* 40453C E011A31C 080468D7 */ j .LE011A35C
/* 404540 E011A320 A6000000 */ sh $zero, ($s0)
dlabel LE011A324_404544
/* 404544 E011A324 96030004 */ lhu $v1, 4($s0)
/* 404548 E011A328 24020028 */ addiu $v0, $zero, 0x28
/* 40454C E011A32C A6020006 */ sh $v0, 6($s0)
/* 404550 E011A330 A6030002 */ sh $v1, 2($s0)
dlabel LE011A334_404554
/* 404554 E011A334 96020000 */ lhu $v0, ($s0)
/* 404558 E011A338 24420040 */ addiu $v0, $v0, 0x40
/* 40455C E011A33C A6020000 */ sh $v0, ($s0)
/* 404560 E011A340 00021400 */ sll $v0, $v0, 0x10
/* 404564 E011A344 00021403 */ sra $v0, $v0, 0x10
/* 404568 E011A348 28420100 */ slti $v0, $v0, 0x100
/* 40456C E011A34C 54400005 */ bnel $v0, $zero, .LE011A364
/* 404570 E011A350 26730001 */ addiu $s3, $s3, 1
/* 404574 E011A354 240200FF */ addiu $v0, $zero, 0xff
/* 404578 E011A358 A6020000 */ sh $v0, ($s0)
.LE011A35C:
/* 40457C E011A35C A6000006 */ sh $zero, 6($s0)
dlabel LE011A360_404580
/* 404580 E011A360 26730001 */ addiu $s3, $s3, 1
.LE011A364:
/* 404584 E011A364 2A620003 */ slti $v0, $s3, 3
/* 404588 E011A368 1440FF96 */ bnez $v0, .LE011A1C4
/* 40458C E011A36C 2652000A */ addiu $s2, $s2, 0xa
.LE011A370:
/* 404590 E011A370 8FBF002C */ lw $ra, 0x2c($sp)
/* 404594 E011A374 8FB60028 */ lw $s6, 0x28($sp)
/* 404598 E011A378 8FB50024 */ lw $s5, 0x24($sp)
/* 40459C E011A37C 8FB40020 */ lw $s4, 0x20($sp)
/* 4045A0 E011A380 8FB3001C */ lw $s3, 0x1c($sp)
/* 4045A4 E011A384 8FB20018 */ lw $s2, 0x18($sp)
/* 4045A8 E011A388 8FB10014 */ lw $s1, 0x14($sp)
/* 4045AC E011A38C 8FB00010 */ lw $s0, 0x10($sp)
/* 4045B0 E011A390 03E00008 */ jr $ra
/* 4045B4 E011A394 27BD0030 */ addiu $sp, $sp, 0x30

View File

@ -6580,11 +6580,11 @@ AddBattleCamZoom = 0x8024ECAC; // type:func rom:0x17D58C
func_8024ECF8 = 0x8024ECF8; // type:func rom:0x17D5D8
FreezeBattleCam = 0x8024ED78; // type:func rom:0x17D658
func_8024EDA4 = 0x8024EDA4; // type:func rom:0x17D684
func_8024EDC0 = 0x8024EDC0; // type:func rom:0x17D6A0
func_8024EDEC = 0x8024EDEC; // type:func rom:0x17D6CC
func_8024EE48 = 0x8024EE48; // type:func rom:0x17D728
func_8024EEA8 = 0x8024EEA8; // type:func rom:0x17D788
btl_draw_popup_messages = 0x8024EF08; // type:func rom:0x17D7E8
btl_popup_messages_init = 0x8024EDC0; // type:func rom:0x17D6A0
btl_popup_messages_delete = 0x8024EDEC; // type:func rom:0x17D6CC
btl_popup_messages_update = 0x8024EE48; // type:func rom:0x17D728
btl_popup_messages_draw_world_geometry = 0x8024EEA8; // type:func rom:0x17D788
btl_popup_messages_draw_ui = 0x8024EF08; // type:func rom:0x17D7E8
btl_create_popup = 0x8024EF68; // type:func rom:0x17D848
free_popup = 0x8024EFA4; // type:func rom:0x17D884
func_8024EFE0 = 0x8024EFE0; // type:func rom:0x17D8C0
@ -6662,25 +6662,25 @@ func_80254950 = 0x80254950; // type:func rom:0x183230
func_802549A0 = 0x802549A0; // type:func rom:0x183280
func_802549C0 = 0x802549C0; // type:func rom:0x1832A0
func_802549F4 = 0x802549F4; // type:func rom:0x1832D4
func_80254C50 = 0x80254C50; // type:func rom:0x183530
appendGfx_player_actor_blur = 0x80254C50; // type:func rom:0x183530
func_802550BC = 0x802550BC; // type:func rom:0x18399C
func_802552EC = 0x802552EC; // type:func rom:0x183BCC
func_8025593C = 0x8025593C; // type:func rom:0x18421C
func_8025595C = 0x8025595C; // type:func rom:0x18423C
appendGfx_enemy_actor_blur = 0x8025595C; // type:func rom:0x18423C
func_8025597C = 0x8025597C; // type:func rom:0x18425C
func_8025599C = 0x8025599C; // type:func rom:0x18427C
appendGfx_partner_actor_blur = 0x8025599C; // type:func rom:0x18427C
update_actor_shadow = 0x802559BC; // type:func rom:0x18429C
update_enemy_shadows = 0x80255F5C; // type:func rom:0x18483C
update_hero_shadows = 0x80255FAC; // type:func rom:0x18488C
func_80255FD8 = 0x80255FD8; // type:func rom:0x1848B8
func_80255FE0 = 0x80255FE0; // type:func rom:0x1848C0
appendGfx_npc_actor = 0x80255FE0; // type:func rom:0x1848C0
func_802571F0 = 0x802571F0; // type:func rom:0x185AD0
func_80257B28 = 0x80257B28; // type:func rom:0x186408
func_80257B48 = 0x80257B48; // type:func rom:0x186428
func_80257B68 = 0x80257B68; // type:func rom:0x186448
appendGfx_enemy_actor = 0x80257B28; // type:func rom:0x186408
appendGfx_partner_actor = 0x80257B48; // type:func rom:0x186428
appendGfx_enemy_actor_decorations = 0x80257B68; // type:func rom:0x186448
func_80257B88 = 0x80257B88; // type:func rom:0x186468
update_player_actor_shadow = 0x80257BAC; // type:func rom:0x18648C
func_80257DA4 = 0x80257DA4; // type:func rom:0x186684
appendGfx_player_actor = 0x80257DA4; // type:func rom:0x186684
func_80258E14 = 0x80258E14; // type:func rom:0x1876F4
func_802591EC = 0x802591EC; // type:func rom:0x187ACC
func_80259494 = 0x80259494; // type:func rom:0x187D74