From 26ac9c5faf74fe9ea3a14f5c87ede78d077db118 Mon Sep 17 00:00:00 2001 From: PokeCodec Date: Fri, 14 Aug 2020 22:02:49 -0400 Subject: [PATCH] Match Most of Remaining Functions --- asm/crt0.s | 76 +-- asm/libagbsyscall.s | 28 +- berry_fix/asm/loader.s | 2 +- berry_fix/payload/asm/libagbsyscall.s | 12 +- include/list_menu.h | 4 +- include/quest_log.h | 2 +- src/battle_script_commands.c | 276 +--------- src/help_message.c | 115 +--- src/link_rfu_3.c | 84 +-- src/list_menu.c | 4 +- src/m4a.c | 2 +- src/menu.c | 24 +- src/pokedex_screen.c | 518 ++++++----------- src/water.c | 765 +++----------------------- 14 files changed, 348 insertions(+), 1564 deletions(-) diff --git a/asm/crt0.s b/asm/crt0.s index 8530a76f5..0d891141e 100644 --- a/asm/crt0.s +++ b/asm/crt0.s @@ -122,10 +122,10 @@ CartIdent: .align 2, 0 .global start_vector start_vector: - mov r0, PSR_IRQ_MODE + mov r0, #PSR_IRQ_MODE msr cpsr_cf, r0 ldr sp, sp_irq - mov r0, PSR_SYS_MODE + mov r0, #PSR_SYS_MODE msr cpsr_cf, r0 ldr sp, sp_usr ldr r1, =INTR_VECTOR @@ -146,76 +146,76 @@ sp_irq: .word IWRAM_END - 0x60 .align 2, 0 .global intr_main intr_main: - mov r3, REG_BASE - add r3, r3, 0x200 - ldr r2, [r3, OFFSET_REG_IE - 0x200] - ldrh r1, [r3, OFFSET_REG_IME - 0x200] + mov r3, #REG_BASE + add r3, r3, #OFFSET_REG_IE + ldr r2, [r3] + ldrh r1, [r3, #REG_IME - REG_IE] mrs r0, spsr stmdb sp!, {r0-r3,lr} - mov r0, 0 - strh r0, [r3, OFFSET_REG_IME - 0x200] - and r1, r2, r2, lsr 16 - mov r12, 0 - ands r0, r1, INTR_FLAG_VCOUNT + mov r0, #0 + strh r0, [r3, #REG_IME - REG_IE] + and r1, r2, r2, lsr #16 + mov r12, #0 + ands r0, r1, #INTR_FLAG_VCOUNT bne jump_intr add r12, r12, 0x4 mov r0, 0x1 - strh r0, [r3, OFFSET_REG_IME - 0x200] - ands r0, r1, INTR_FLAG_SERIAL + strh r0, [r3, #REG_IME - REG_IE] + ands r0, r1, #INTR_FLAG_SERIAL bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_TIMER3 + ands r0, r1, #INTR_FLAG_TIMER3 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_HBLANK + ands r0, r1, #INTR_FLAG_HBLANK bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_VBLANK + ands r0, r1, #INTR_FLAG_VBLANK bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_TIMER0 + ands r0, r1, #INTR_FLAG_TIMER0 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_TIMER1 + ands r0, r1, #INTR_FLAG_TIMER1 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_TIMER2 + ands r0, r1, #INTR_FLAG_TIMER2 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_DMA0 + ands r0, r1, #INTR_FLAG_DMA0 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_DMA1 + ands r0, r1, #INTR_FLAG_DMA1 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_DMA2 + ands r0, r1, #INTR_FLAG_DMA2 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_DMA3 + ands r0, r1, #INTR_FLAG_DMA3 bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_KEYPAD + ands r0, r1, #INTR_FLAG_KEYPAD bne jump_intr add r12, r12, 0x4 - ands r0, r1, INTR_FLAG_GAMEPAK - strbne r0, [r3, OFFSET_REG_SOUNDCNT_X - 0x200] + ands r0, r1, #INTR_FLAG_GAMEPAK + strbne r0, [r3, #REG_SOUNDCNT_X - REG_IE] loop: bne loop @ spin jump_intr: - strh r0, [r3, OFFSET_REG_IF - 0x200] + strh r0, [r3, #REG_IF - REG_IE] bic r2, r2, r0 ldr r0, =gSTWIStatus ldr r0, [r0] ldrb r0, [r0, 0xA] - mov r1, INTR_FLAG_TIMER0 - mov r0, r1, lsl r0 - orr r0, r0, INTR_FLAG_GAMEPAK - orr r1, r0, INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK + mov r1, #INTR_FLAG_TIMER0 + lsl r0, r1, r0 + orr r0, r0, #INTR_FLAG_GAMEPAK + orr r1, r0, #INTR_FLAG_SERIAL | INTR_FLAG_TIMER3 | INTR_FLAG_VCOUNT | INTR_FLAG_HBLANK and r1, r1, r2 - strh r1, [r3, OFFSET_REG_IE - 0x200] + strh r1, [r3, #0] mrs r3, cpsr - bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK - orr r3, r3, PSR_SYS_MODE + bic r3, r3, #PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, #PSR_SYS_MODE msr cpsr_cf, r3 ldr r1, =gIntrTable add r1, r1, r12 @@ -226,12 +226,12 @@ jump_intr: intr_return: ldmia sp!, {lr} mrs r3, cpsr - bic r3, r3, PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK - orr r3, r3, PSR_I_BIT | PSR_IRQ_MODE + bic r3, r3, #PSR_I_BIT | PSR_F_BIT | PSR_MODE_MASK + orr r3, r3, #PSR_I_BIT | PSR_IRQ_MODE msr cpsr_cf, r3 ldmia sp!, {r0-r3,lr} - strh r2, [r3, OFFSET_REG_IE - 0x200] - strh r1, [r3, OFFSET_REG_IME - 0x200] + strh r2, [r3, #0] + strh r1, [r3, #REG_IME - REG_IE] msr spsr_cf, r0 bx lr diff --git a/asm/libagbsyscall.s b/asm/libagbsyscall.s index 898861fe2..360a43e67 100644 --- a/asm/libagbsyscall.s +++ b/asm/libagbsyscall.s @@ -7,62 +7,62 @@ thumb_func_start ArcTan2 ArcTan2: @ 81E3B58 - swi 0xA + svc 0xA bx lr thumb_func_end ArcTan2 thumb_func_start BgAffineSet BgAffineSet: @ 81E3B5C - swi 0xE + svc 0xE bx lr thumb_func_end BgAffineSet thumb_func_start CpuFastSet CpuFastSet: @ 81E3B60 - swi 0xC + svc 0xC bx lr thumb_func_end CpuFastSet thumb_func_start CpuSet CpuSet: @ 81E3B64 - swi 0xB + svc 0xB bx lr thumb_func_end CpuSet thumb_func_start Div Div: @ 81E3B68 - swi 0x6 + svc 0x6 bx lr thumb_func_end Div thumb_func_start LZ77UnCompVram LZ77UnCompVram: @ 81E3B6C - swi 0x12 + svc 0x12 bx lr thumb_func_end LZ77UnCompVram thumb_func_start LZ77UnCompWram LZ77UnCompWram: @ 81E3B70 - swi 0x11 + svc 0x11 bx lr thumb_func_end LZ77UnCompWram thumb_func_start MultiBoot MultiBoot: @ 81E3B74 movs r1, 0x1 - swi 0x25 + svc 0x25 bx lr thumb_func_end MultiBoot thumb_func_start ObjAffineSet ObjAffineSet: @ 81E3B7C - swi 0xF + svc 0xF bx lr thumb_func_end ObjAffineSet thumb_func_start RegisterRamReset RegisterRamReset: @ 81E3B80 - swi 0x1 + svc 0x1 bx lr thumb_func_end RegisterRamReset @@ -73,21 +73,21 @@ SoftReset: @ 81E3B84 strb r2, [r3] ldr r1, =0x03007f00 @ User Stack mov sp, r1 - swi 0x1 - swi 0 + svc 0x1 + svc 0 .pool thumb_func_end SoftReset thumb_func_start Sqrt Sqrt: @ 81E3B9C - swi 0x8 + svc 0x8 bx lr thumb_func_end Sqrt thumb_func_start VBlankIntrWait VBlankIntrWait: @ 81E3BA0 movs r2, 0 - swi 0x5 + svc 0x5 bx lr thumb_func_end VBlankIntrWait diff --git a/berry_fix/asm/loader.s b/berry_fix/asm/loader.s index 39e0b768a..0c0135bda 100644 --- a/berry_fix/asm/loader.s +++ b/berry_fix/asm/loader.s @@ -109,7 +109,7 @@ _1a0: strh r1, [r0, 0xa] @ SIOMLT_SEND ldr r0, =_data_2f0 ldr r1, =gCode - swi 0x11 << 16 + svc 0x11 << 16 ldr lr, =gCode bx lr .pool diff --git a/berry_fix/payload/asm/libagbsyscall.s b/berry_fix/payload/asm/libagbsyscall.s index ea8ef3e89..9548e80d2 100644 --- a/berry_fix/payload/asm/libagbsyscall.s +++ b/berry_fix/payload/asm/libagbsyscall.s @@ -7,39 +7,39 @@ thumb_func_start CpuSet CpuSet: @ 81E3B64 - swi 0xB + svc 0xB bx lr thumb_func_end CpuSet thumb_func_start Div Div: @ 81E3B68 - swi 0x6 + svc 0x6 bx lr thumb_func_end Div thumb_func_start Mod Mod: - swi 0x6 + svc 0x6 adds r0, r1, 0 bx lr thumb_func_end Mod thumb_func_start LZ77UnCompVram LZ77UnCompVram: @ 81E3B6C - swi 0x12 + svc 0x12 bx lr thumb_func_end LZ77UnCompVram thumb_func_start RegisterRamReset RegisterRamReset: @ 81E3B80 - swi 0x1 + svc 0x1 bx lr thumb_func_end RegisterRamReset thumb_func_start VBlankIntrWait VBlankIntrWait: @ 81E3BA0 movs r2, 0 - swi 0x5 + svc 0x5 bx lr thumb_func_end VBlankIntrWait diff --git a/include/list_menu.h b/include/list_menu.h index 237805f38..24c614e39 100644 --- a/include/list_menu.h +++ b/include/list_menu.h @@ -23,7 +23,7 @@ enum struct ListMenuItem { const u8 *label; - s32 index; + u32 index; }; struct ListMenu; @@ -72,7 +72,7 @@ struct ListMenuWindowRect extern struct ListMenuTemplate gMultiuseListMenuTemplate; -s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); +u32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum); u8 ListMenuInit(const struct ListMenuTemplate *listMenuTemplate, u16 cursorPos, u16 itemsAbove); u8 ListMenuInitInRect(const struct ListMenuTemplate *listMenuTemplate, const struct ListMenuWindowRect *rect, u16 cursorPos, u16 itemsAbove); s32 ListMenu_ProcessInput(u8 listTaskId); diff --git a/include/quest_log.h b/include/quest_log.h index adf43de95..9c50f5f6e 100644 --- a/include/quest_log.h +++ b/include/quest_log.h @@ -25,7 +25,7 @@ struct UnkStruct_203B044 extern u8 gQuestLogState; extern u8 gQuestLogPlaybackState; -extern const u16 gUnknown_84566A8[]; +extern const u8 gUnknown_84566A8[]; extern struct FieldInput gQuestLogFieldInput; extern struct UnkStruct_203B044 gUnknown_203B044; extern u16 *gUnknown_203AE04; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dd82a4aab..a56163180 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -5155,20 +5155,19 @@ static void atk5C_hitanimation(void) } } -#ifdef NONMATCHING static void atk5D_getmoneyreward(void) { u32 i = 0; - u32 lastMonLevel = 0; - u32 moneyReward = 0; - u32 value; + u32 moneyReward; + u8 lastMonLevel = 0; + + const struct TrainerMonItemCustomMoves *party4; //This needs to be out here - // The whole function is using wrong registers. if (gBattleOutcome == B_OUTCOME_WON) { if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) { - moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier; + moneyReward = gBattleResources->secretBase->party.levels[0] * 20 * gBattleStruct->moneyMultiplier; } else { @@ -5176,45 +5175,40 @@ static void atk5D_getmoneyreward(void) { case 0: { - const struct TrainerMonNoItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemDefaultMoves; + const struct TrainerMonNoItemDefaultMoves *party1 = gTrainers[gTrainerBattleOpponent_A].party.NoItemDefaultMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party1[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; case F_TRAINER_PARTY_CUSTOM_MOVESET: { - const struct TrainerMonNoItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.NoItemCustomMoves; + const struct TrainerMonNoItemCustomMoves *party2 = gTrainers[gTrainerBattleOpponent_A].party.NoItemCustomMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party2[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; case F_TRAINER_PARTY_HELD_ITEM: { - const struct TrainerMonItemDefaultMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemDefaultMoves; + const struct TrainerMonItemDefaultMoves *party3 = gTrainers[gTrainerBattleOpponent_A].party.ItemDefaultMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party3[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; - case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM: + case (F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM): { - const struct TrainerMonItemCustomMoves *party = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves; + party4 = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves; - lastMonLevel = party[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; + lastMonLevel = party4[gTrainers[gTrainerBattleOpponent_A].partySize - 1].lvl; } break; } - for (; gTrainerMoneyTable[i].classId != 0xFF; ++i) + for (; gTrainerMoneyTable[i].classId != 0xFF; i++) { if (gTrainerMoneyTable[i].classId == gTrainers[gTrainerBattleOpponent_A].trainerClass) break; } - moneyReward = 4 * lastMonLevel; - moneyReward *= gBattleStruct->moneyMultiplier; - value = gTrainerMoneyTable[i].value; - if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - moneyReward *= (value << 1); - else - moneyReward *= value; + party4 = gTrainers[gTrainerBattleOpponent_A].party.ItemCustomMoves; // Needed to Match. Has no effect. + moneyReward = 4 * lastMonLevel * gBattleStruct->moneyMultiplier * (gBattleTypeFlags & BATTLE_TYPE_DOUBLE ? 2 : 1) * gTrainerMoneyTable[i].value; } AddMoney(&gSaveBlock1Ptr->money, moneyReward); } @@ -5228,242 +5222,6 @@ static void atk5D_getmoneyreward(void) else gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } -#else -NAKED -static void atk5D_getmoneyreward(void) -{ - asm_unified("\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - movs r6, 0\n\ - movs r5, 0\n\ - ldr r0, _080258F0 @ =gBattleOutcome\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x1\n\ - beq _080258C0\n\ - b _080259FA\n\ - _080258C0:\n\ - ldr r0, _080258F4 @ =gTrainerBattleOpponent_A\n\ - ldrh r2, [r0]\n\ - movs r1, 0x80\n\ - lsls r1, 3\n\ - cmp r2, r1\n\ - bne _08025904\n\ - ldr r0, _080258F8 @ =gBattleResources\n\ - ldr r0, [r0]\n\ - ldr r0, [r0]\n\ - adds r0, 0x94\n\ - ldrb r2, [r0]\n\ - ldr r0, _080258FC @ =gBattleStruct\n\ - ldr r0, [r0]\n\ - adds r0, 0x4A\n\ - ldrb r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r4, r2, 0\n\ - muls r4, r0\n\ - ldr r0, _08025900 @ =gSaveBlock1Ptr\n\ - mov r8, r0\n\ - b _080259E8\n\ - .align 2, 0\n\ - _080258F0: .4byte gBattleOutcome\n\ - _080258F4: .4byte gTrainerBattleOpponent_A\n\ - _080258F8: .4byte gBattleResources\n\ - _080258FC: .4byte gBattleStruct\n\ - _08025900: .4byte gSaveBlock1Ptr\n\ - _08025904:\n\ - ldr r2, _08025920 @ =gTrainers\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r3, r0, 3\n\ - adds r4, r3, r2\n\ - ldrb r1, [r4]\n\ - cmp r1, 0x1\n\ - beq _0802595A\n\ - cmp r1, 0x1\n\ - bgt _08025924\n\ - cmp r1, 0\n\ - beq _0802592E\n\ - b _08025970\n\ - .align 2, 0\n\ - _08025920: .4byte gTrainers\n\ - _08025924:\n\ - cmp r1, 0x2\n\ - beq _08025944\n\ - cmp r1, 0x3\n\ - beq _0802595A\n\ - b _08025970\n\ - _0802592E:\n\ - adds r0, r2, 0\n\ - adds r0, 0x24\n\ - adds r0, r3, r0\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - subs r0, 0x8\n\ - b _0802596E\n\ - _08025944:\n\ - adds r0, r2, 0\n\ - adds r0, 0x24\n\ - adds r0, r3, r0\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - subs r0, 0x8\n\ - b _0802596E\n\ - _0802595A:\n\ - adds r0, r2, 0\n\ - adds r0, 0x24\n\ - adds r0, r3, r0\n\ - ldr r1, [r0]\n\ - adds r0, r4, 0\n\ - adds r0, 0x20\n\ - ldrb r0, [r0]\n\ - lsls r0, 4\n\ - adds r0, r1\n\ - subs r0, 0x10\n\ - _0802596E:\n\ - ldrb r5, [r0, 0x2]\n\ - _08025970:\n\ - ldr r0, _080259CC @ =gTrainerMoneyTable\n\ - lsls r1, r6, 2\n\ - adds r3, r1, r0\n\ - ldrb r1, [r3]\n\ - ldr r7, _080259D0 @ =gBattleStruct\n\ - mov r12, r0\n\ - lsls r4, r5, 2\n\ - ldr r5, _080259D4 @ =gBattleTypeFlags\n\ - ldr r0, _080259D8 @ =gSaveBlock1Ptr\n\ - mov r8, r0\n\ - cmp r1, 0xFF\n\ - beq _080259AA\n\ - ldr r2, _080259DC @ =gTrainers\n\ - ldr r0, _080259E0 @ =gTrainerBattleOpponent_A\n\ - ldrh r1, [r0]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r2\n\ - ldrb r2, [r0, 0x1]\n\ - adds r1, r3, 0\n\ - _0802599A:\n\ - ldrb r0, [r1]\n\ - cmp r0, r2\n\ - beq _080259AA\n\ - adds r1, 0x4\n\ - adds r6, 0x1\n\ - ldrb r0, [r1]\n\ - cmp r0, 0xFF\n\ - bne _0802599A\n\ - _080259AA:\n\ - ldr r0, [r7]\n\ - adds r0, 0x4A\n\ - ldrb r0, [r0]\n\ - adds r3, r4, 0\n\ - muls r3, r0\n\ - lsls r0, r6, 2\n\ - add r0, r12\n\ - ldrb r2, [r0, 0x1]\n\ - ldr r0, [r5]\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080259E4\n\ - lsls r0, r2, 1\n\ - adds r4, r3, 0\n\ - muls r4, r0\n\ - b _080259E8\n\ - .align 2, 0\n\ - _080259CC: .4byte gTrainerMoneyTable\n\ - _080259D0: .4byte gBattleStruct\n\ - _080259D4: .4byte gBattleTypeFlags\n\ - _080259D8: .4byte gSaveBlock1Ptr\n\ - _080259DC: .4byte gTrainers\n\ - _080259E0: .4byte gTrainerBattleOpponent_A\n\ - _080259E4:\n\ - adds r4, r3, 0\n\ - muls r4, r2\n\ - _080259E8:\n\ - mov r1, r8\n\ - ldr r0, [r1]\n\ - movs r1, 0xA4\n\ - lsls r1, 2\n\ - adds r0, r1\n\ - adds r1, r4, 0\n\ - bl AddMoney\n\ - b _08025A00\n\ - _080259FA:\n\ - bl ComputeWhiteOutMoneyLoss\n\ - adds r4, r0, 0\n\ - _08025A00:\n\ - ldr r1, _08025A40 @ =gBattleTextBuff1\n\ - movs r0, 0xFD\n\ - strb r0, [r1]\n\ - movs r0, 0x1\n\ - strb r0, [r1, 0x1]\n\ - movs r0, 0x4\n\ - strb r0, [r1, 0x2]\n\ - movs r0, 0x5\n\ - strb r0, [r1, 0x3]\n\ - strb r4, [r1, 0x4]\n\ - movs r0, 0xFF\n\ - lsls r0, 8\n\ - ands r0, r4\n\ - lsrs r0, 8\n\ - strb r0, [r1, 0x5]\n\ - movs r0, 0xFF\n\ - lsls r0, 16\n\ - ands r0, r4\n\ - lsrs r0, 16\n\ - strb r0, [r1, 0x6]\n\ - lsrs r0, r4, 24\n\ - strb r0, [r1, 0x7]\n\ - movs r0, 0xFF\n\ - strb r0, [r1, 0x8]\n\ - cmp r4, 0\n\ - beq _08025A48\n\ - ldr r1, _08025A44 @ =gBattlescriptCurrInstr\n\ - ldr r0, [r1]\n\ - adds r0, 0x5\n\ - str r0, [r1]\n\ - b _08025A62\n\ - .align 2, 0\n\ - _08025A40: .4byte gBattleTextBuff1\n\ - _08025A44: .4byte gBattlescriptCurrInstr\n\ - _08025A48:\n\ - ldr r3, _08025A6C @ =gBattlescriptCurrInstr\n\ - ldr r2, [r3]\n\ - ldrb r1, [r2, 0x1]\n\ - ldrb r0, [r2, 0x2]\n\ - lsls r0, 8\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x3]\n\ - lsls r0, 16\n\ - orrs r1, r0\n\ - ldrb r0, [r2, 0x4]\n\ - lsls r0, 24\n\ - orrs r1, r0\n\ - str r1, [r3]\n\ - _08025A62:\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ - _08025A6C: .4byte gBattlescriptCurrInstr\n\ - "); -} -#endif static void atk5E(void) { diff --git a/src/help_message.c b/src/help_message.c index 1438f5fef..82a10a5ab 100644 --- a/src/help_message.c +++ b/src/help_message.c @@ -5,7 +5,7 @@ static EWRAM_DATA u8 sHelpMessageWindowId = 0; -const u16 gUnknown_84566A8[] = INCBIN_U16("graphics/unknown/unknown_84566a8.bin"); +const u8 gUnknown_84566A8[] = INCBIN_U8("graphics/unknown/unknown_84566a8.bin"); static const struct WindowTemplate sHelpMessageWindowTemplate = { .bg = 0, @@ -47,15 +47,19 @@ void DestroyHelpMessageWindow(u8 a0) } } -#ifdef NONMATCHING void sub_8112F18(u8 windowId) { - u8 width = GetWindowAttribute(windowId, WINDOW_WIDTH); - u8 height = GetWindowAttribute(windowId, WINDOW_HEIGHT); - u8 *buffer = Alloc(32 * width * height); + const u8* ptr = gUnknown_84566A8; + u8* buffer; u8 i, j; + u8 width, height; u8 k; + width = (u8)GetWindowAttribute(windowId, WINDOW_WIDTH); + height = (u8)GetWindowAttribute(windowId, WINDOW_HEIGHT); + + buffer = (u8 *)Alloc(32 * width * height); + if (buffer != NULL) { for (i = 0; i < height; i++) @@ -69,8 +73,8 @@ void sub_8112F18(u8 windowId) else k = 5; CpuCopy32( - (void *)gUnknown_84566A8 + 32 * k, // operand swap on "add" instruction - buffer + 32 * (i * width + j), + &ptr[k * 0x20], + &buffer[(i * width + j) * 0x20], 32 ); } @@ -79,103 +83,6 @@ void sub_8112F18(u8 windowId) Free(buffer); } } -#else -NAKED -void sub_8112F18(u8 windowId) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r10\n" - "\tmov r6, r9\n" - "\tmov r5, r8\n" - "\tpush {r5-r7}\n" - "\tsub sp, 0x8\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tmov r10, r0\n" - "\tmovs r1, 0x3\n" - "\tbl GetWindowAttribute\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tmov r0, r10\n" - "\tmovs r1, 0x4\n" - "\tbl GetWindowAttribute\n" - "\tlsls r0, 24\n" - "\tlsrs r7, r0, 24\n" - "\tlsls r0, r7, 5\n" - "\tmuls r0, r6\n" - "\tbl Alloc\n" - "\tmov r8, r0\n" - "\tcmp r0, 0\n" - "\tbeq _08112FB8\n" - "\tmovs r5, 0\n" - "\tadds r0, r6, 0\n" - "\tmuls r0, r7\n" - "\tstr r0, [sp]\n" - "\tcmp r5, r7\n" - "\tbcs _08112FA2\n" - "_08112F5A:\n" - "\tmovs r4, 0\n" - "\tadds r1, r5, 0x1\n" - "\tmov r9, r1\n" - "\tcmp r4, r6\n" - "\tbcs _08112F98\n" - "\tsubs r3, r7, 0x1\n" - "_08112F66:\n" - "\tmovs r0, 0\n" - "\tcmp r5, 0\n" - "\tbeq _08112F74\n" - "\tmovs r0, 0x5\n" - "\tcmp r5, r3\n" - "\tbne _08112F74\n" - "\tmovs r0, 0xE\n" - "_08112F74:\n" - "\tlsls r0, 5\n" - "\tldr r1, _08112FC8 @ =gUnknown_84566A8\n" - "\tadds r0, r1, r0\n" - "\tadds r1, r5, 0\n" - "\tmuls r1, r6\n" - "\tadds r1, r4\n" - "\tlsls r1, 5\n" - "\tadd r1, r8\n" - "\tldr r2, _08112FCC @ =0x04000008\n" - "\tstr r3, [sp, 0x4]\n" - "\tbl CpuSet\n" - "\tadds r0, r4, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r3, [sp, 0x4]\n" - "\tcmp r4, r6\n" - "\tbcc _08112F66\n" - "_08112F98:\n" - "\tmov r1, r9\n" - "\tlsls r0, r1, 24\n" - "\tlsrs r5, r0, 24\n" - "\tcmp r5, r7\n" - "\tbcc _08112F5A\n" - "_08112FA2:\n" - "\tldr r0, [sp]\n" - "\tlsls r2, r0, 21\n" - "\tlsrs r2, 16\n" - "\tmov r0, r10\n" - "\tmov r1, r8\n" - "\tmovs r3, 0\n" - "\tbl CopyToWindowPixelBuffer\n" - "\tmov r0, r8\n" - "\tbl Free\n" - "_08112FB8:\n" - "\tadd sp, 0x8\n" - "\tpop {r3-r5}\n" - "\tmov r8, r3\n" - "\tmov r9, r4\n" - "\tmov r10, r5\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0\n" - "\t.align 2, 0\n" - "_08112FC8: .4byte gUnknown_84566A8\n" - "_08112FCC: .4byte 0x04000008"); -} -#endif static void sub_8112FD0(void) { diff --git a/src/link_rfu_3.c b/src/link_rfu_3.c index 8d34bc4e8..81528c6c3 100644 --- a/src/link_rfu_3.c +++ b/src/link_rfu_3.c @@ -499,7 +499,6 @@ static void ASCIIToPkmnStr(u8 *q1, const u8 *q2) q1[i] = EOS; } -#ifdef NONMATCHING static u8 GetConnectedChildStrength(u8 maxFlags) { u8 flagCount = 0; @@ -508,98 +507,31 @@ static u8 GetConnectedChildStrength(u8 maxFlags) if (gRfuLinkStatus->parentChild == MODE_PARENT) { - for (i = 0; i < 4; flags >>= 1, i++) + for (i = 0; i < 4; i++) { if (flags & 1) { if (maxFlags == flagCount + 1) + { return gRfuLinkStatus->strength[i]; + break; // This break is needed to match + } flagCount++; } + flags >>= 1; } - return 0; } else { - for (i = 0; i < 4; flags >>= 1, i++) + for (i = 0; i < 4; i++) { if (flags & 1) return gRfuLinkStatus->strength[i]; + flags >>= 1; } - return 0; } + return 0; } -#else -NAKED -static u8 GetConnectedChildStrength(u8 maxFlags) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tlsls r0, 24\n" - "\tlsrs r5, r0, 24\n" - "\tmovs r6, 0\n" - "\tldr r0, _080FCB04 @ =gRfuLinkStatus\n" - "\tldr r4, [r0]\n" - "\tldrb r2, [r4, 0x2]\n" - "\tldrb r1, [r4]\n" - "\tadds r7, r0, 0\n" - "\tcmp r1, 0x1\n" - "\tbne _080FCB32\n" - "\tmovs r3, 0\n" - "\tands r1, r2\n" - "\tcmp r1, 0\n" - "\tbeq _080FCB0E\n" - "\tcmp r5, 0x1\n" - "\tbne _080FCB08\n" - "\tldrb r0, [r4, 0xA]\n" - "\tb _080FCB4C\n" - "\t.align 2, 0\n" - "_080FCB04: .4byte gRfuLinkStatus\n" - "_080FCB08:\n" - "\tadds r0, r6, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "_080FCB0E:\n" - "\tlsrs r2, 1\n" - "\tadds r0, r3, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0x3\n" - "\tbhi _080FCB4A\n" - "\tmovs r0, 0x1\n" - "\tands r0, r2\n" - "\tcmp r0, 0\n" - "\tbeq _080FCB0E\n" - "\tadds r0, r6, 0x1\n" - "\tcmp r5, r0\n" - "\tbne _080FCB08\n" - "_080FCB28:\n" - "\tldr r0, [r7]\n" - "\tadds r0, 0xA\n" - "\tadds r0, r3\n" - "\tldrb r0, [r0]\n" - "\tb _080FCB4C\n" - "_080FCB32:\n" - "\tmovs r3, 0\n" - "\tmovs r1, 0x1\n" - "_080FCB36:\n" - "\tadds r0, r2, 0\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbne _080FCB28\n" - "\tlsrs r2, 1\n" - "\tadds r0, r3, 0x1\n" - "\tlsls r0, 24\n" - "\tlsrs r3, r0, 24\n" - "\tcmp r3, 0x3\n" - "\tbls _080FCB36\n" - "_080FCB4A:\n" - "\tmovs r0, 0\n" - "_080FCB4C:\n" - "\tpop {r4-r7}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif void InitHostRFUtgtGname(struct GFtgtGname *data, u8 activity, bool32 started, s32 child_sprite_genders) { diff --git a/src/list_menu.c b/src/list_menu.c index b794953de..5d3cb037f 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -36,7 +36,7 @@ struct UnkIndicatorsStruct struct MysteryGiftLinkMenuStruct { - s32 currItemId; + u32 currItemId; u8 state; u8 windowId; u8 listTaskId; @@ -104,7 +104,7 @@ static void ListMenuDummyTask(u8 taskId) { } -s32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum) +u32 DoMysteryGiftListMenu(const struct WindowTemplate *windowTemplate, const struct ListMenuTemplate *listMenuTemplate, u8 arg2, u16 tileNum, u16 palNum) { switch (sMysteryGiftLinkMenu.state) { diff --git a/src/m4a.c b/src/m4a.c index 284863247..6f2118f31 100644 --- a/src/m4a.c +++ b/src/m4a.c @@ -314,7 +314,7 @@ void MPlayExtender(struct CgbChannel *cgbChans) void MusicPlayerJumpTableCopy(void) { - asm("swi 0x2A"); + asm("svc 0x2A"); } void ClearChain(void *x) diff --git a/src/menu.c b/src/menu.c index 9b7abe642..a245f0743 100644 --- a/src/menu.c +++ b/src/menu.c @@ -347,17 +347,17 @@ s8 Menu_ProcessInput(void) PlaySE(SE_SELECT); return sMenu.cursorPos; } - else if (JOY_NEW(B_BUTTON)) + if (JOY_NEW(B_BUTTON)) { return MENU_B_PRESSED; } - else if (JOY_NEW(DPAD_UP)) + if (JOY_NEW(DPAD_UP)) { PlaySE(SE_SELECT); Menu_MoveCursor(-1); return MENU_NOTHING_CHOSEN; } - else if (JOY_NEW(DPAD_DOWN)) + if (JOY_NEW(DPAD_DOWN)) { PlaySE(SE_SELECT); Menu_MoveCursor(1); @@ -376,17 +376,17 @@ s8 Menu_ProcessInputNoWrapAround(void) PlaySE(SE_SELECT); return sMenu.cursorPos; } - else if (JOY_NEW(B_BUTTON)) + if (JOY_NEW(B_BUTTON)) { return MENU_B_PRESSED; } - else if (JOY_NEW(DPAD_UP)) + if (JOY_NEW(DPAD_UP)) { if (oldPos != Menu_MoveCursorNoWrapAround(-1)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } - else if (JOY_NEW(DPAD_DOWN)) + if (JOY_NEW(DPAD_DOWN)) { if (oldPos != Menu_MoveCursorNoWrapAround(1)) PlaySE(SE_SELECT); @@ -403,17 +403,17 @@ s8 Menu_ProcessInput_other(void) PlaySE(SE_SELECT); return sMenu.cursorPos; } - else if (JOY_NEW(B_BUTTON)) + if (JOY_NEW(B_BUTTON)) { return MENU_B_PRESSED; } - else if (JOY_REPT(DPAD_ANY) == DPAD_UP) + if (JOY_REPT(DPAD_ANY) == DPAD_UP) { PlaySE(SE_SELECT); Menu_MoveCursor(-1); return MENU_NOTHING_CHOSEN; } - else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN) + if (JOY_REPT(DPAD_ANY) == DPAD_DOWN) { PlaySE(SE_SELECT); Menu_MoveCursor(1); @@ -432,17 +432,17 @@ s8 Menu_ProcessInputNoWrapAround_other(void) PlaySE(SE_SELECT); return sMenu.cursorPos; } - else if (JOY_NEW(B_BUTTON)) + if (JOY_NEW(B_BUTTON)) { return MENU_B_PRESSED; } - else if (JOY_REPT(DPAD_ANY) == DPAD_UP) + if (JOY_REPT(DPAD_ANY) == DPAD_UP) { if (oldPos != Menu_MoveCursorNoWrapAround(-1)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } - else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN) + if (JOY_REPT(DPAD_ANY) == DPAD_DOWN) { if (oldPos != Menu_MoveCursorNoWrapAround(1)) PlaySE(SE_SELECT); diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 8b13e5dc8..a36108425 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -22,9 +22,7 @@ struct PokedexScreenData { u8 field_00; u8 field_01; - u8 field_02; - u8 field_03; - u8 field_04; + u8 field_02[4]; u32 field_08; u32 field_0C; u16 field_10; @@ -33,9 +31,9 @@ struct PokedexScreenData u8 field_15; u8 field_16; u8 field_17; - u16 field_18[0x4]; - u8 field_20[0x4]; - u8 field_24[0x4]; + u16 field_18[4]; + u8 field_20[4]; + u8 field_24[4]; u8 field_28; u8 field_29; u8 field_2A; @@ -77,32 +75,32 @@ struct PokedexScreenWindowGfx EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL; -void sub_810287C(u8 taskId); -void sub_8102C28(void); -void sub_8102F80(u8 taskId); -void sub_810317C(void); -void sub_8103238(u8 taskId); -void sub_810345C(void); -u16 sub_8103518(u8 a0); -void sub_8103924(const struct ListMenuTemplate * a0, u8 a1); -u8 sub_81039F0(void); -void sub_8103988(u8 a0); -void sub_8103AC8(u8 taskId); -u8 sub_8104234(void); -int sub_8104284(void); -void sub_81042EC(u8 taskId); -bool32 sub_8104664(u8 a0); +static void sub_810287C(u8 taskId); +static void sub_8102C28(void); +static void sub_8102F80(u8 taskId); +static void sub_810317C(void); +static void sub_8103238(u8 taskId); +static void sub_810345C(void); +static u16 sub_8103518(u8 a0); +static void sub_8103924(const struct ListMenuTemplate * a0, u8 a1); +static u8 sub_81039F0(void); +static void sub_8103988(u8 a0); +static void sub_8103AC8(u8 taskId); +static u8 sub_8104234(void); +static int sub_8104284(void); +static void sub_81042EC(u8 taskId); +static bool32 sub_8104664(u8 a0); void sub_81047B0(u8 *windowId_p); void sub_81047C8(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx); -void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx); +static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx); void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y); -u16 sub_8104BBC(u8 caseId, bool8 whichDex); +static u16 sub_8104BBC(u8 caseId, bool8 whichDex); void sub_8104C2C(const u8 *src); void sub_8104E90(void); bool8 sub_8104F0C(bool8 a0); void sub_8105058(u8 a0); void sub_8105178(u8 a0, u8 a1, u8 a2); -bool8 sub_81052D0(u8 a0); +static bool8 sub_81052D0(u8 a0); void sub_8105594(u8 a0, u8 a1); void sub_8105E1C(u8 a0); void sub_8106014(void); @@ -119,9 +117,9 @@ void sub_8106E78(const u8 *a0, s32 a1); #include "data/pokemon_graphics/footprint_table.h" -const u32 gUnknown_8440124[] = INCBIN_U32("graphics/pokedex/unk_8440124.bin.lz"); -const u32 gUnknown_8440274[] = INCBIN_U32("graphics/pokedex/unk_8440274.4bpp.lz"); -const u32 gUnknown_84403AC[] = INCBIN_U32("graphics/pokedex/unk_84403AC.4bpp.lz"); +const u8 gUnknown_8440124[] = INCBIN_U8("graphics/pokedex/unk_8440124.bin.lz"); +const u8 gUnknown_8440274[] = INCBIN_U8("graphics/pokedex/unk_8440274.4bpp.lz"); +const u8 gUnknown_84403AC[] = INCBIN_U8("graphics/pokedex/unk_84403AC.4bpp.lz"); const u16 gUnknown_84404C8[] = INCBIN_U16("graphics/pokedex/unk_84404C8.gbapal"); const u16 gUnknown_84406C8[] = { @@ -242,21 +240,21 @@ void sub_810250C(void) ScanlineEffect_Stop(); ResetBgsAndClearDma3BusyFlags(TRUE); InitBgsFromTemplates(0, gUnknown_8451EBC, NELEMS(gUnknown_8451EBC)); - SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE)); - SetBgTilemapBuffer(2, Alloc(BG_SCREEN_SIZE)); - SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE)); - SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(3, (u16*)Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(2, (u16*)Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(1, (u16*)Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(0, (u16*)Alloc(BG_SCREEN_SIZE)); if (natDex) - DecompressAndLoadBgGfxUsingHeap(3, gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0); else - DecompressAndLoadBgGfxUsingHeap(3, gUnknown_8440274, BG_SCREEN_SIZE, 0, 0); + DecompressAndLoadBgGfxUsingHeap(3, (void*)gUnknown_8440274, BG_SCREEN_SIZE, 0, 0); InitWindows(gUnknown_8451ECC); DeactivateAllTextPrinters(); m4aSoundVSyncOn(); SetVBlankCallback(sub_81024C0); EnableInterrupts(INTR_FLAG_VBLANK); taskId = CreateTask(sub_810287C, 0); - gUnknown_203ACF0 = Alloc(sizeof(*gUnknown_203ACF0)); + gUnknown_203ACF0 = Alloc(sizeof(struct PokedexScreenData)); *gUnknown_203ACF0 = gUnknown_8451EE4; gUnknown_203ACF0->field_00 = taskId; gUnknown_203ACF0->field_44 = Alloc(NATIONAL_DEX_COUNT * sizeof(struct ListMenuItem)); @@ -336,7 +334,7 @@ void sub_8102858(void) } } -void sub_810287C(u8 taskId) +static void sub_810287C(u8 taskId) { int i; switch (gUnknown_203ACF0->field_01) @@ -474,7 +472,7 @@ void sub_810287C(u8 taskId) } } -void sub_8102C28(void) +static void sub_8102C28(void) { struct ListMenuTemplate listMenuTemplate; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); @@ -541,15 +539,15 @@ void sub_8102EC0(s32 itemIndex, bool8 onInit, struct ListMenu *list) CopyWindowToVram(gUnknown_203ACF0->field_15, COPYWIN_GFX); } -void sub_8102F48(u8 windowId, s32 itemId, u8 y) +void sub_8102F48(u8 windowId, u32 itemId, u8 y) { - if (itemId < 0 || itemId > 8 || gUnknown_203ACF0->field_08 & (1 << itemId)) + if (itemId > 8 || gUnknown_203ACF0->field_08 & (1 << itemId)) ListMenuOverrideSetColors(1, 0, 3); else ListMenuOverrideSetColors(10, 0, 11); } -void sub_8102F80(u8 taskId) +static void sub_8102F80(u8 taskId) { switch (gUnknown_203ACF0->field_01) { @@ -616,7 +614,7 @@ void sub_8102F80(u8 taskId) } } -void sub_810317C(void) +static void sub_810317C(void) { struct ListMenuTemplate template; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); @@ -635,7 +633,7 @@ void sub_810317C(void) CopyWindowToVram(1, COPYWIN_GFX); } -void sub_8103238(u8 taskId) +static void sub_8103238(u8 taskId) { switch (gUnknown_203ACF0->field_01) { @@ -702,7 +700,7 @@ void sub_8103238(u8 taskId) } } -void sub_810345C(void) +static void sub_810345C(void) { struct ListMenuTemplate template; FillBgTilemapBufferRect(3, 0x00E, 0, 0, 30, 20, 0x00); @@ -721,7 +719,7 @@ void sub_810345C(void) CopyWindowToVram(1, COPYWIN_GFX); } -u16 sub_8103518(u8 a0) +static u16 sub_8103518(u8 a0) { s32 max_n = IsNationalPokedexEnabled() ? NATIONAL_DEX_COUNT : KANTO_DEX_COUNT; u16 ndex_num; @@ -841,7 +839,7 @@ u16 sub_8103518(u8 a0) return ret; } -void sub_8103924(const struct ListMenuTemplate * template, u8 a1) +static void sub_8103924(const struct ListMenuTemplate * template, u8 a1) { switch (a1) { @@ -861,7 +859,7 @@ void sub_8103924(const struct ListMenuTemplate * template, u8 a1) } } -void sub_8103988(u8 a0) +static void sub_8103988(u8 a0) { switch (a0) { @@ -881,7 +879,7 @@ void sub_8103988(u8 a0) } } -u8 sub_81039F0(void) +static u8 sub_81039F0(void) { struct ScrollArrowsTemplate template = gUnknown_84521B4; if (gUnknown_203ACF0->field_48 > gUnknown_8452174.maxShowed) @@ -916,7 +914,7 @@ void sub_8103A40(u8 windowId, s32 itemId, u8 y) } } -void sub_8103AC8(u8 taskId) +static void sub_8103AC8(u8 taskId) { int r4; u8 *ptr; @@ -977,68 +975,66 @@ void sub_8103AC8(u8 taskId) RemoveScrollIndicatorArrowPair(gUnknown_203ACF0->field_60); ListMenuRemoveCursorObject(gUnknown_203ACF0->field_61, 0); gUnknown_203ACF0->field_01 = 12; + break; } - else + if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT)) { - if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_LEFT)) + if (gUnknown_203ACF0->field_2D != 0) { - if (gUnknown_203ACF0->field_2D != 0) - { - gUnknown_203ACF0->field_2D--; - PlaySE(SE_SELECT); - break; - } - else - r4 = 1; + gUnknown_203ACF0->field_2D--; + PlaySE(SE_SELECT); + break; } - if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_RIGHT)) + else + r4 = 1; + } + if (!JOY_HELD(R_BUTTON) && JOY_REPT(DPAD_RIGHT)) + { + if (gUnknown_203ACF0->field_2D < gUnknown_203ACF0->field_2C - 1) + { + gUnknown_203ACF0->field_2D++; + PlaySE(SE_SELECT); + break; + } + else + r4 = 2; + } + if (r4 == 0) + r4 = sub_8104284(); + switch (r4) + { + case 0: + break; + case 1: + while (gUnknown_203ACF0->field_2B > gUnknown_203ACF0->field_29) { - if (gUnknown_203ACF0->field_2D < gUnknown_203ACF0->field_2C - 1) + gUnknown_203ACF0->field_2B--; + if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) { - gUnknown_203ACF0->field_2D++; - PlaySE(SE_SELECT); + gUnknown_203ACF0->field_01 = 8; break; } - else - r4 = 2; } - if (r4 == 0) - r4 = sub_8104284(); - switch (r4) + if (gUnknown_203ACF0->field_01 != 8) + gUnknown_203ACF0->field_01 = 6; + break; + case 2: + while (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_2A - 1) { - case 0: - break; - case 1: - while (gUnknown_203ACF0->field_2B > gUnknown_203ACF0->field_29) + gUnknown_203ACF0->field_2B++; + if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) { - gUnknown_203ACF0->field_2B--; - if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) - { - gUnknown_203ACF0->field_01 = 8; - break; - } - } - if (gUnknown_203ACF0->field_01 != 8) - gUnknown_203ACF0->field_01 = 6; - break; - case 2: - while (gUnknown_203ACF0->field_2B < gUnknown_203ACF0->field_2A - 1) - { - gUnknown_203ACF0->field_2B++; - if (sub_8106838(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B)) - { - gUnknown_203ACF0->field_01 = 10; - break; - } + gUnknown_203ACF0->field_01 = 10; + break; } - if (gUnknown_203ACF0->field_01 != 10) - gUnknown_203ACF0->field_01 = 6; - break; } - if (JOY_NEW(B_BUTTON)) - { + if (gUnknown_203ACF0->field_01 != 10) gUnknown_203ACF0->field_01 = 6; - } + break; + } + if (JOY_NEW(B_BUTTON)) + { + gUnknown_203ACF0->field_01 = 6; } break; case 6: @@ -1054,7 +1050,7 @@ void sub_8103AC8(u8 taskId) sub_8105058(0xFF); ListMenuUpdateCursorObject(gUnknown_203ACF0->field_61, 0, 0xA0, 0); gUnknown_203ACF0->field_2E = 0; - gUnknown_203ACF0->field_02 = 0; + gUnknown_203ACF0->field_02[0] = 0; gUnknown_203ACF0->field_01++; break; case 9: @@ -1085,23 +1081,23 @@ void sub_8103AC8(u8 taskId) gUnknown_203ACF0->field_01 = 15; break; case 15: - gUnknown_203ACF0->field_02 = 0; - gUnknown_203ACF0->field_03 = 0; + gUnknown_203ACF0->field_02[0] = 0; + gUnknown_203ACF0->field_02[1] = 0; gUnknown_203ACF0->field_01++; // fallthrough case 16: - if (gUnknown_203ACF0->field_03 < 6) + if (gUnknown_203ACF0->field_02[1] < 6) { - if (!gUnknown_203ACF0->field_02) + if (gUnknown_203ACF0->field_02[0]) { - gUnknown_203ACF0->field_02--; + sub_8105594(0, gUnknown_203ACF0->field_02[1]); + CopyBgTilemapBufferToVram(0); + gUnknown_203ACF0->field_02[0] = 4; + gUnknown_203ACF0->field_02[1]++; } else { - sub_8105594(0, gUnknown_203ACF0->field_03); - CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02 = 4; - gUnknown_203ACF0->field_03++; + gUnknown_203ACF0->field_02[0]--; } } else @@ -1112,7 +1108,7 @@ void sub_8103AC8(u8 taskId) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); PlayCry2(gUnknown_203ACF0->field_5A, 0, 125, 10); - gUnknown_203ACF0->field_02 = 0; + gUnknown_203ACF0->field_02[0] = 0; gUnknown_203ACF0->field_01 = 17; } break; @@ -1143,23 +1139,23 @@ void sub_8103AC8(u8 taskId) gUnknown_203ACF0->field_01 = 19; break; case 19: - gUnknown_203ACF0->field_02 = 0; - gUnknown_203ACF0->field_03 = 6; + gUnknown_203ACF0->field_02[0] = 0; + gUnknown_203ACF0->field_02[1] = 6; gUnknown_203ACF0->field_01++; // fallthrough case 20: - if (gUnknown_203ACF0->field_03) + if (gUnknown_203ACF0->field_02[1]) { - if (gUnknown_203ACF0->field_02) + if (gUnknown_203ACF0->field_02[0]) { - gUnknown_203ACF0->field_03--; + gUnknown_203ACF0->field_02[1]--; FillBgTilemapBufferRect_Palette0(0, 0x000, 0, 2, 30, 16); - sub_8105594(0, gUnknown_203ACF0->field_03); + sub_8105594(0, gUnknown_203ACF0->field_02[1]); CopyBgTilemapBufferToVram(0); - gUnknown_203ACF0->field_02 = 1; + gUnknown_203ACF0->field_02[0] = 1; } else - gUnknown_203ACF0->field_02--; + gUnknown_203ACF0->field_02[0]--; } else { @@ -1224,7 +1220,7 @@ void sub_8103AC8(u8 taskId) } } -u8 sub_8104234(void) +static u8 sub_8104234(void) { struct ScrollArrowsTemplate template = gUnknown_84524B4; template.fullyUpThreshold = gUnknown_203ACF0->field_29; @@ -1233,7 +1229,7 @@ u8 sub_8104234(void) return AddScrollIndicatorArrowPair(&template, &gUnknown_203ACF0->field_62); } -int sub_8104284(void) +static int sub_8104284(void) { switch (gSaveBlock2Ptr->optionsButtonMode) { @@ -1252,13 +1248,13 @@ int sub_8104284(void) return 2; else return 0; - default: case OPTIONS_BUTTON_MODE_HELP: + default: return 0; } } -void sub_81042EC(u8 taskId) +static void sub_81042EC(u8 taskId) { switch (gUnknown_203ACF0->field_01) { @@ -1384,18 +1380,15 @@ void sub_81042EC(u8 taskId) } } -#ifdef NONMATCHING -// HOLY HECK THIS FUNCTION NotLikeThis -bool32 sub_8104664(u8 a0) +static bool32 sub_8104664(u8 a0) { - u16 *r12; - u16 *r6; int r3; + u16 *r6, *r12; switch (gUnknown_203ACF0->field_42) { - case 0: default: + case 0: r12 = &gUnknown_203ACF0->field_36; r6 = &gUnknown_203ACF0->field_34; break; @@ -1411,32 +1404,49 @@ bool32 sub_8104664(u8 a0) r6 = &gUnknown_203ACF0->field_3C; break; } + r3 = *r12 + *r6; if (a0) { if (r3 == 0) return FALSE; - while (--r3 >= 0) + + r3--; + while (r3 >= 0) //Should be while (--r3 >= 0) without the r3-- in the body or before the while at all, but this is needed to match. { - if ((((u32)gUnknown_203ACF0->field_44[r3].index) >> 16) & 1) + if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1) + { break; + } + r3--; } + if (r3 < 0) + { return FALSE; + } } else { if (r3 == gUnknown_203ACF0->field_48 - 1) + { return FALSE; - while (++r3 < gUnknown_203ACF0->field_48) + } + + r3++; + while (r3 < gUnknown_203ACF0->field_48) //Should be while (++r3 < gUnknown_203ACF0->field_48) without the r3++ in the body or before the while at all, but this is needed to match. { - if ((((u32)gUnknown_203ACF0->field_44[r3].index) >> 16) & 1) + if ((gUnknown_203ACF0->field_44[r3].index >> 16) & 1) break; + r3++; } if (r3 >= gUnknown_203ACF0->field_48) + { return FALSE; + } } gUnknown_203ACF0->field_30 = gUnknown_203ACF0->field_44[r3].index; + if (gUnknown_203ACF0->field_48 > 9) { if (r3 < 4) @@ -1444,10 +1454,10 @@ bool32 sub_8104664(u8 a0) *r12 = 0; *r6 = r3; } - else if (r3 >= gUnknown_203ACF0->field_48 - 4) + else if (r3 >= (gUnknown_203ACF0->field_48 - 4)) { - *r12 = gUnknown_203ACF0->field_48 - 9; - *r6 = r3 + 9 - gUnknown_203ACF0->field_48; + *r12 = (gUnknown_203ACF0->field_48 - 9); + *r6 = r3 + 9 - (gUnknown_203ACF0->field_48); } else { @@ -1457,201 +1467,11 @@ bool32 sub_8104664(u8 a0) } else { - *r12 = 0; - *r6 = r3; - } - return TRUE; + *r12 = 0; + *r6 = r3; + } + return TRUE; } -#else -NAKED -bool32 sub_8104664(u8 a0) -{ - asm_unified("\tpush {r4-r7,lr}\n" - "\tmov r7, r8\n" - "\tpush {r7}\n" - "\tlsls r0, 24\n" - "\tlsrs r4, r0, 24\n" - "\tldr r0, _08104684 @ =gUnknown_203ACF0\n" - "\tldr r3, [r0]\n" - "\tadds r2, r3, 0\n" - "\tadds r2, 0x42\n" - "\tldrb r2, [r2]\n" - "\tmov r8, r0\n" - "\tcmp r2, 0x4\n" - "\tbgt _08104688\n" - "\tcmp r2, 0x1\n" - "\tbge _0810469C\n" - "\tb _0810468C\n" - "\t.align 2, 0\n" - "_08104684: .4byte gUnknown_203ACF0\n" - "_08104688:\n" - "\tcmp r2, 0x5\n" - "\tbeq _081046A8\n" - "_0810468C:\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tmovs r2, 0x36\n" - "\tadds r2, r0\n" - "\tmov r12, r2\n" - "\tadds r6, r0, 0\n" - "\tadds r6, 0x34\n" - "\tb _081046B2\n" - "_0810469C:\n" - "\tmovs r0, 0x3A\n" - "\tadds r0, r3\n" - "\tmov r12, r0\n" - "\tadds r6, r3, 0\n" - "\tadds r6, 0x38\n" - "\tb _081046B2\n" - "_081046A8:\n" - "\tmovs r1, 0x3E\n" - "\tadds r1, r3\n" - "\tmov r12, r1\n" - "\tadds r6, r3, 0\n" - "\tadds r6, 0x3C\n" - "_081046B2:\n" - "\tmov r2, r12\n" - "\tldrh r1, [r2]\n" - "\tldrh r0, [r6]\n" - "\tadds r3, r1, r0\n" - "\tcmp r4, 0\n" - "\tbeq _08104700\n" - "\tcmp r3, 0\n" - "\tbeq _0810474C\n" - "\tsubs r3, 0x1\n" - "\tcmp r3, 0\n" - "\tblt _0810474C\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tldr r0, [r0, 0x44]\n" - "\tlsls r2, r3, 3\n" - "\tadds r0, r2, r0\n" - "\tldrh r0, [r0, 0x6]\n" - "\tmovs r1, 0x1\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbne _081046FA\n" - "\tmov r5, r8\n" - "\tmovs r4, 0x1\n" - "\tadds r1, r2, 0\n" - "_081046E2:\n" - "\tsubs r1, 0x8\n" - "\tsubs r3, 0x1\n" - "\tcmp r3, 0\n" - "\tblt _0810474C\n" - "\tldr r0, [r5]\n" - "\tldr r0, [r0, 0x44]\n" - "\tadds r0, r1, r0\n" - "\tldrh r0, [r0, 0x6]\n" - "\tands r0, r4\n" - "\tadds r2, r1, 0\n" - "\tcmp r0, 0\n" - "\tbeq _081046E2\n" - "_081046FA:\n" - "\tcmp r3, 0\n" - "\tbge _08104750\n" - "\tb _0810474C\n" - "_08104700:\n" - "\tmov r2, r8\n" - "\tldr r5, [r2]\n" - "\tadds r0, r5, 0\n" - "\tadds r0, 0x48\n" - "\tldrh r4, [r0]\n" - "\tsubs r0, r4, 0x1\n" - "\tcmp r3, r0\n" - "\tbeq _0810474C\n" - "\tadds r3, 0x1\n" - "\tcmp r3, r4\n" - "\tbge _0810474C\n" - "\tldr r0, [r5, 0x44]\n" - "\tlsls r2, r3, 3\n" - "\tadds r0, r2, r0\n" - "\tldrh r0, [r0, 0x6]\n" - "\tmovs r1, 0x1\n" - "\tands r0, r1\n" - "\tcmp r0, 0\n" - "\tbne _08104740\n" - "\tadds r1, r2, 0\n" - "\tmovs r7, 0x1\n" - "_0810472A:\n" - "\tadds r1, 0x8\n" - "\tadds r3, 0x1\n" - "\tcmp r3, r4\n" - "\tbge _0810474C\n" - "\tldr r0, [r5, 0x44]\n" - "\tadds r0, r1, r0\n" - "\tldrh r0, [r0, 0x6]\n" - "\tands r0, r7\n" - "\tadds r2, r1, 0\n" - "\tcmp r0, 0\n" - "\tbeq _0810472A\n" - "_08104740:\n" - "\tmov r1, r8\n" - "\tldr r0, [r1]\n" - "\tadds r0, 0x48\n" - "\tldrh r0, [r0]\n" - "\tcmp r3, r0\n" - "\tblt _08104750\n" - "_0810474C:\n" - "\tmovs r0, 0\n" - "\tb _081047A6\n" - "_08104750:\n" - "\tmov r0, r8\n" - "\tldr r1, [r0]\n" - "\tldr r0, [r1, 0x44]\n" - "\tadds r0, r2, r0\n" - "\tldr r0, [r0, 0x4]\n" - "\tstr r0, [r1, 0x30]\n" - "\tadds r1, 0x48\n" - "\tldrh r0, [r1]\n" - "\tcmp r0, 0x9\n" - "\tbls _0810479C\n" - "\tcmp r3, 0x3\n" - "\tbgt _08104770\n" - "\tmovs r0, 0\n" - "\tmov r1, r12\n" - "\tstrh r0, [r1]\n" - "\tb _081047A2\n" - "_08104770:\n" - "\tldrh r1, [r1]\n" - "\tsubs r0, r1, 0x4\n" - "\tcmp r3, r0\n" - "\tblt _08104790\n" - "\tsubs r0, 0x5\n" - "\tmov r2, r12\n" - "\tstrh r0, [r2]\n" - "\tadds r1, r3, 0\n" - "\tadds r1, 0x9\n" - "\tmov r2, r8\n" - "\tldr r0, [r2]\n" - "\tadds r0, 0x48\n" - "\tldrh r0, [r0]\n" - "\tsubs r1, r0\n" - "\tstrh r1, [r6]\n" - "\tb _081047A4\n" - "_08104790:\n" - "\tsubs r0, r3, 0x4\n" - "\tmov r1, r12\n" - "\tstrh r0, [r1]\n" - "\tmovs r0, 0x4\n" - "\tstrh r0, [r6]\n" - "\tb _081047A4\n" - "_0810479C:\n" - "\tmovs r0, 0\n" - "\tmov r2, r12\n" - "\tstrh r0, [r2]\n" - "_081047A2:\n" - "\tstrh r3, [r6]\n" - "_081047A4:\n" - "\tmovs r0, 0x1\n" - "_081047A6:\n" - "\tpop {r3}\n" - "\tmov r8, r3\n" - "\tpop {r4-r7}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif //NONMATCHING void sub_81047B0(u8 *windowId_p) { @@ -1706,7 +1526,7 @@ void sub_8104880(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) sub_81047C8(windowId, fontId, buff, x, y, colorIdx); } -void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) +static void sub_810491C(u8 windowId, u8 fontId, u16 num, u8 x, u8 y, u8 colorIdx) { u8 buff[4]; int i; @@ -1794,7 +1614,7 @@ s8 sub_8104AB0(u16 nationalDexNo, u8 caseId, bool8 indexIsSpecies) return retVal; } -u16 sub_8104BBC(u8 caseId, bool8 whichDex) +static u16 sub_8104BBC(u8 caseId, bool8 whichDex) { u16 count = 0; u16 i; @@ -2024,28 +1844,28 @@ bool8 sub_81051F0(u8 a0) return FALSE; } -bool8 sub_81052D0(u8 a0) +static bool8 sub_81052D0(u8 a0) { u16 r4; if (IsNationalPokedexEnabled()) r4 = gUnknown_84406E0[7]; else r4 = gUnknown_84404C8[7]; - switch (gUnknown_203ACF0->field_02) + switch (gUnknown_203ACF0->field_02[0]) { case 0: gUnknown_203ACF0->field_5C = Alloc(3 * BG_SCREEN_SIZE); if (a0) - gUnknown_203ACF0->field_02 = 6; + gUnknown_203ACF0->field_02[0] = 6; else - gUnknown_203ACF0->field_02 = 2; + gUnknown_203ACF0->field_02[0] = 2; break; case 1: Free(gUnknown_203ACF0->field_5C); return TRUE; case 2: BeginNormalPaletteFade(0x00007FFF, 0, 0, 16, r4); - gUnknown_203ACF0->field_02++; + gUnknown_203ACF0->field_02[0]++; break; case 3: FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20); @@ -2054,7 +1874,7 @@ bool8 sub_81052D0(u8 a0) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - gUnknown_203ACF0->field_02++; + gUnknown_203ACF0->field_02[0]++; break; case 4: BeginNormalPaletteFade(0x00007FFF, 0, 0, 0, r4); @@ -2065,40 +1885,42 @@ bool8 sub_81052D0(u8 a0) FillBgTilemapBufferRect_Palette0(3, 0x00C, 0, 0, 30, 20); FillBgTilemapBufferRect_Palette0(2, 0x000, 0, 0, 32, 20); FillBgTilemapBufferRect_Palette0(1, 0x000, 0, 0, 32, 20); - gUnknown_203ACF0->field_03 = 0; - gUnknown_203ACF0->field_02++; + + gUnknown_203ACF0->field_02[1] = 0; + gUnknown_203ACF0->field_02[0]++; PlaySE(SE_BALL_TRAY_ENTER); break; case 5: - if (gUnknown_203ACF0->field_03 < 10) + if (gUnknown_203ACF0->field_02[1] < 10) { - sub_81051F0(gUnknown_203ACF0->field_03); - gUnknown_203ACF0->field_03++; + sub_81051F0(gUnknown_203ACF0->field_02[1]); + gUnknown_203ACF0->field_02[1]++; } else { - gUnknown_203ACF0->field_02 = 1; + gUnknown_203ACF0->field_02[0] = 1; } break; case 6: CpuFastCopy(GetBgTilemapBuffer(3), &gUnknown_203ACF0->field_5C[0 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); CpuFastCopy(GetBgTilemapBuffer(2), &gUnknown_203ACF0->field_5C[1 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); CpuFastCopy(GetBgTilemapBuffer(1), &gUnknown_203ACF0->field_5C[2 * BG_SCREEN_SIZE / 2], BG_SCREEN_SIZE); - gUnknown_203ACF0->field_03 = 9; - gUnknown_203ACF0->field_02++; + + gUnknown_203ACF0->field_02[1] = 9; + gUnknown_203ACF0->field_02[0]++; PlaySE(SE_BALL_TRAY_ENTER); break; case 7: - if (gUnknown_203ACF0->field_03 != 0) + if (gUnknown_203ACF0->field_02[1] != 0) { - sub_81051F0(gUnknown_203ACF0->field_03); - gUnknown_203ACF0->field_03--; + sub_81051F0(gUnknown_203ACF0->field_02[1]); + gUnknown_203ACF0->field_02[1]--; } else { - sub_81051F0(gUnknown_203ACF0->field_02); + sub_81051F0(gUnknown_203ACF0->field_02[0]); BeginNormalPaletteFade(0x00007FFF, 0, 16, 16, r4); - gUnknown_203ACF0->field_02++; + gUnknown_203ACF0->field_02[0]++; } break; case 8: @@ -2107,12 +1929,12 @@ bool8 sub_81052D0(u8 a0) CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(2); CopyBgTilemapBufferToVram(3); - gUnknown_203ACF0->field_02++; + gUnknown_203ACF0->field_02[0]++; break; case 9: gPaletteFade.bufferTransferDisabled = FALSE; BeginNormalPaletteFade(0x00007FFF, 0, 16, 0, r4); - gUnknown_203ACF0->field_02 = 1; + gUnknown_203ACF0->field_02[0] = 1; break; } return FALSE; diff --git a/src/water.c b/src/water.c index 8614f6600..f8dd29bd0 100644 --- a/src/water.c +++ b/src/water.c @@ -53,7 +53,7 @@ static void CreateWaterSpoutLaunchDroplets(struct Task*, u8); static void CreateWaterSpoutRainDroplet(struct Task*, u8); static void AnimTask_WaterSport_Step(u8); static void CreateWaterSportDroplet(struct Task*); -static void CreateWaterPulseRingBubbles(struct Sprite*, int, int); +static void CreateWaterPulseRingBubbles(struct Sprite*, s32, s32); // Both unused? Comment copied from pokeemerald static const u8 gUnknown_83E44F4[] = INCBIN_U8("graphics/battle_anims/unk_83E4874.4bpp"); @@ -626,99 +626,24 @@ void AnimTask_RotateAuroraRingColors(u8 taskId) gTasks[taskId].data[2] = IndexOfSpritePaletteTag(ANIM_TAG_RAINBOW_RINGS) * 16 + 256; gTasks[taskId].func = AnimTask_RotateAuroraRingColors_Step; } - -#ifdef NONMATCHING static void AnimTask_RotateAuroraRingColors_Step(u8 taskId) { int i; u16 palIndex; - u16 *palPtr1; - u16 *palPtr2; - u16 rgbBuffer; if (++gTasks[taskId].data[10] == 3) { + u16 tempPlt; gTasks[taskId].data[10] = 0; palIndex = gTasks[taskId].data[2] + 1; - palPtr1 = &gPlttBufferFaded[palIndex]; - rgbBuffer = *palPtr1; - palPtr2 = &palPtr1[1]; - for (i = 0; i < 7; i++) - palPtr1[i] = palPtr2[i]; - gPlttBufferFaded[palIndex + 7] = rgbBuffer; + tempPlt = gPlttBufferFaded[palIndex]; + for (i = 1; i < 8; i++) + gPlttBufferFaded[palIndex + i - 1] = gPlttBufferFaded[palIndex + i]; + gPlttBufferFaded[palIndex + 7] = tempPlt; } if (++gTasks[taskId].data[11] == gTasks[taskId].data[0]) DestroyAnimVisualTask(taskId); } -#else -NAKED -static void AnimTask_RotateAuroraRingColors_Step(u8 taskId) -{ - asm_unified("push {r4-r7,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - ldr r1, =gTasks\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - adds r2, r0, r1\n\ - ldrh r0, [r2, 0x1C]\n\ - adds r0, 0x1\n\ - strh r0, [r2, 0x1C]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - mov r12, r1\n\ - cmp r0, 0x3\n\ - bne _081075BE\n\ - movs r0, 0\n\ - strh r0, [r2, 0x1C]\n\ - ldrh r0, [r2, 0xC]\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - ldr r1, =gPlttBufferFaded\n\ - lsls r0, r5, 1\n\ - adds r0, r1\n\ - ldrh r6, [r0]\n\ - adds r7, r1, 0\n\ - adds r3, r0, 0x2\n\ - movs r1, 0x6\n\ - adds r2, r0, 0\n\ -_081075A8:\n\ - ldrh r0, [r3]\n\ - strh r0, [r2]\n\ - adds r3, 0x2\n\ - adds r2, 0x2\n\ - subs r1, 0x1\n\ - cmp r1, 0\n\ - bge _081075A8\n\ - adds r0, r5, 0x7\n\ - lsls r0, 1\n\ - adds r0, r7\n\ - strh r6, [r0]\n\ -_081075BE:\n\ - lsls r0, r4, 2\n\ - adds r0, r4\n\ - lsls r0, 3\n\ - add r0, r12\n\ - ldrh r1, [r0, 0x1E]\n\ - adds r1, 0x1\n\ - strh r1, [r0, 0x1E]\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - movs r2, 0x8\n\ - ldrsh r0, [r0, r2]\n\ - cmp r1, r0\n\ - bne _081075DE\n\ - adds r0, r4, 0\n\ - bl DestroyAnimVisualTask\n\ -_081075DE:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n"); -} -#endif // For animating undulating beam attacks (e.g. Flamethrower, Hydro Pump, Signal Beam) static void AnimToTargetInSinWave(struct Sprite *sprite) @@ -870,15 +795,18 @@ static void AnimSmallBubblePair_Step(struct Sprite *sprite) sprite->pos2.x = Sin(sprite->data[0], 4); sprite->data[1] += 48; sprite->pos2.y = -(sprite->data[1] >> 8); - if (--sprite->data[7] == -1) + if (sprite->data[7]-- == 0) DestroyAnimSprite(sprite); } -#ifdef NONMATCHING void AnimTask_CreateSurfWave(u8 taskId) { struct BattleAnimBgData animBg; u8 taskId2; + u16 *x, *y; //These pointers are needed to match + + x = &gBattle_BG1_X; + y = &gBattle_BG1_Y; SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(0, 16)); @@ -911,30 +839,30 @@ void AnimTask_CreateSurfWave(u8 taskId) gTasks[taskId2].data[2] = 0x1000; if (IsContest()) { - gBattle_BG1_X = -80; - gBattle_BG1_Y = -48; + *x = -80; + *y = -48; gTasks[taskId].data[0] = 2; gTasks[taskId].data[1] = 1; gTasks[taskId2].data[3] = 0; } else if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT) { - gBattle_BG1_X = -224; - gBattle_BG1_Y = 256; + *x = -224; + *y = 256; gTasks[taskId].data[0] = 2; gTasks[taskId].data[1] = -1; gTasks[taskId2].data[3] = 1; } else { - gBattle_BG1_X = 0; - gBattle_BG1_Y = -48; + *x = 0; + *y = -48; gTasks[taskId].data[0] = -2; gTasks[taskId].data[1] = 1; gTasks[taskId2].data[3] = 0; } - SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); - SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, *x); + SetGpuReg(REG_OFFSET_BG1VOFS, *y); if (gTasks[taskId2].data[3] == 0) { gTasks[taskId2].data[4] = 48; @@ -948,250 +876,16 @@ void AnimTask_CreateSurfWave(u8 taskId) gTasks[taskId].data[6] = 1; gTasks[taskId].func = AnimTask_CreateSurfWave_Step1; } -#else -NAKED -void AnimTask_CreateSurfWave(u8 taskId) -{ - asm_unified("push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x10\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r10, r0\n\ - ldr r1, =0x00003f42\n\ - movs r0, 0x50\n\ - bl SetGpuReg\n\ - movs r1, 0x80\n\ - lsls r1, 5\n\ - movs r0, 0x52\n\ - bl SetGpuReg\n\ - movs r0, 0x1\n\ - movs r1, 0x4\n\ - movs r2, 0x1\n\ - bl SetAnimBgAttribute\n\ - movs r0, 0x1\n\ - movs r1, 0\n\ - movs r2, 0x1\n\ - bl SetAnimBgAttribute\n\ - mov r0, sp\n\ - bl sub_80752A0\n\ - bl IsContest\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _081079E0\n\ - movs r0, 0x1\n\ - movs r1, 0x3\n\ - movs r2, 0x1\n\ - bl SetAnimBgAttribute\n\ - ldr r0, =gBattleAnimAttacker\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _081079D0\n\ - mov r0, sp\n\ - ldrb r0, [r0, 0x9]\n\ - ldr r1, =gBattleAnimBgTilemap_SurfOpponent\n\ - bl AnimLoadCompressedBgTilemap\n\ - b _081079EA\n\ - .pool\n\ -_081079D0:\n\ - mov r0, sp\n\ - ldrb r0, [r0, 0x9]\n\ - ldr r1, =gBattleAnimBgTilemap_SurfPlayer\n\ - bl AnimLoadCompressedBgTilemap\n\ - b _081079EA\n\ - .pool\n\ -_081079E0:\n\ - ldr r0, =gBattleAnimBgTilemap_SurfContest\n\ - ldr r1, [sp, 0x4]\n\ - bl LZDecompressVram\n\ - mov r0, sp\n\ - ldrb r0, [r0, 0x8]\n\ - ldr r1, [sp, 0x4]\n\ - movs r2, 0\n\ - movs r3, 0x1\n\ - bl sub_80730C0\n\ -_081079EA:\n\ - mov r0, sp\n\ - ldrb r0, [r0, 0x9]\n\ - ldr r1, =gBattleAnimBgImage_Surf\n\ - mov r2, sp\n\ - ldrh r2, [r2, 0xA]\n\ - bl AnimLoadCompressedBgGfx\n\ - ldr r0, =gBattleAnimArgs\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - bne _08107A24\n\ - ldr r0, =gBattleAnimBgPalette_Surf\n\ - mov r1, sp\n\ - ldrb r1, [r1, 0x8]\n\ - lsls r1, 4\n\ - movs r2, 0x20\n\ - bl LoadCompressedPalette\n\ - b _08107A32\n\ - .pool\n\ -_08107A24:\n\ - ldr r0, =gBattleAnimBgPalette_MuddyWater\n\ - mov r1, sp\n\ - ldrb r1, [r1, 0x8]\n\ - lsls r1, 4\n\ - movs r2, 0x20\n\ - bl LoadCompressedPalette\n\ -_08107A32:\n\ - ldr r0, =AnimTask_SurfWaveScanlineEffect\n\ - ldr r4, =gTasks\n\ - mov r2, r10\n\ - lsls r5, r2, 2\n\ - adds r1, r5, r2\n\ - lsls r1, 3\n\ - adds r6, r1, r4\n\ - ldrb r1, [r6, 0x7]\n\ - adds r1, 0x1\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - bl CreateTask\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - movs r0, 0\n\ - mov r9, r0\n\ - mov r1, r8\n\ - strh r1, [r6, 0x26]\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r7, r0, r4\n\ - mov r0, r9\n\ - strh r0, [r7, 0x8]\n\ - movs r0, 0x80\n\ - lsls r0, 5\n\ - strh r0, [r7, 0xA]\n\ - strh r0, [r7, 0xC]\n\ - bl IsContest\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0\n\ - beq _08107AB4\n\ - ldr r1, =0x0000ffb0\n\ - adds r0, r1, 0\n\ - ldr r2, =gBattle_BG1_X\n\ - strh r0, [r2]\n\ - adds r1, 0x20\n\ - adds r0, r1, 0\n\ - ldr r2, =gBattle_BG1_Y\n\ - strh r0, [r2]\n\ - movs r0, 0x2\n\ - strh r0, [r6, 0x8]\n\ - movs r0, 0x1\n\ - strh r0, [r6, 0xA]\n\ - mov r0, r9\n\ - strh r0, [r7, 0xE]\n\ - b _08107B0E\n\ - .pool\n\ -_08107AB4:\n\ - ldr r0, =gBattleAnimAttacker\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSide\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0x1\n\ - bne _08107AF8\n\ - ldr r2, =0x0000ff20\n\ - adds r0, r2, 0\n\ - ldr r2, =gBattle_BG1_X\n\ - strh r0, [r2]\n\ - movs r2, 0x80\n\ - lsls r2, 1\n\ - adds r0, r2, 0\n\ - ldr r2, =gBattle_BG1_Y\n\ - strh r0, [r2]\n\ - movs r0, 0x2\n\ - strh r0, [r6, 0x8]\n\ - ldr r0, =0x0000ffff\n\ - strh r0, [r6, 0xA]\n\ - strh r1, [r7, 0xE]\n\ - b _08107B0E\n\ - .pool\n\ -_08107AF8:\n\ - ldr r0, =gBattle_BG1_X\n\ - strh r4, [r0]\n\ - ldr r1, =0x0000ffd0\n\ - adds r0, r1, 0\n\ - ldr r2, =gBattle_BG1_Y\n\ - strh r0, [r2]\n\ - ldr r0, =0x0000fffe\n\ - strh r0, [r6, 0x8]\n\ - movs r0, 0x1\n\ - strh r0, [r6, 0xA]\n\ - strh r4, [r7, 0xE]\n\ -_08107B0E:\n\ - ldr r0, =gBattle_BG1_X\n\ - ldrh r1, [r0]\n\ - movs r0, 0x14\n\ - bl SetGpuReg\n\ - ldr r2, =gBattle_BG1_Y\n\ - ldrh r1, [r2]\n\ - movs r0, 0x16\n\ - bl SetGpuReg\n\ - ldr r1, =gTasks\n\ - mov r2, r8\n\ - lsls r0, r2, 2\n\ - add r0, r8\n\ - lsls r0, 3\n\ - adds r1, r0, r1\n\ - movs r2, 0xE\n\ - ldrsh r0, [r1, r2]\n\ - cmp r0, 0\n\ - bne _08107B54\n\ - movs r0, 0x30\n\ - strh r0, [r1, 0x10]\n\ - movs r0, 0x70\n\ - b _08107B58\n\ - .pool\n\ -_08107B54:\n\ - movs r0, 0\n\ - strh r0, [r1, 0x10]\n\ -_08107B58:\n\ - strh r0, [r1, 0x12]\n\ - ldr r1, =gTasks\n\ - mov r2, r10\n\ - adds r0, r5, r2\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - movs r1, 0x1\n\ - strh r1, [r0, 0x14]\n\ - ldr r1, =AnimTask_CreateSurfWave_Step1\n\ - str r1, [r0]\n\ - add sp, 0x10\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n"); -} -#endif -#ifdef NONMATCHING static void AnimTask_CreateSurfWave_Step1(u8 taskId) { - struct BattleAnimBgData animBg; - u8 i; u16 rgbBuffer; - u16 *BGptrX = &gBattle_BG1_X; - u16 *BGptrY = &gBattle_BG1_Y; - s16 unkUse; - u32 palOffset; - u16 palNum; + u8 i; + u16 *BGptrX, *BGptrY; + struct BattleAnimBgData animBg; + + BGptrX = &gBattle_BG1_X; + BGptrY = &gBattle_BG1_Y; *BGptrX += gTasks[taskId].data[0]; *BGptrY += gTasks[taskId].data[1]; @@ -1199,29 +893,26 @@ static void AnimTask_CreateSurfWave_Step1(u8 taskId) gTasks[taskId].data[2] += gTasks[taskId].data[1]; if (++gTasks[taskId].data[5] == 4) { - rgbBuffer = gPlttBufferFaded[animBg.paletteId * 16 + 7]; - for (i = 6; i != 0; i--) + rgbBuffer = gPlttBufferFaded[16 * animBg.paletteId + 7]; + for (i = 6; i != 0; i--) // i > 0 generates the exact same code in this context { - palNum = animBg.paletteId * 16; - palOffset = 1 + i; - gPlttBufferFaded[palNum + palOffset] = gPlttBufferFaded[palNum + palOffset - 1]; + gPlttBufferFaded[16 * animBg.paletteId + 1 + i] = gPlttBufferFaded[16 * animBg.paletteId + 1 + i - 1]; // 1 + i - 1 is needed to match for some bizarre reason } - gPlttBufferFaded[animBg.paletteId * 16 + 1] = rgbBuffer; + gPlttBufferFaded[16 * animBg.paletteId + 1] = rgbBuffer; gTasks[taskId].data[5] = 0; } if (++gTasks[taskId].data[6] > 1) { gTasks[taskId].data[6] = 0; - unkUse = ++gTasks[taskId].data[3]; - if (unkUse <= 13) + if (++gTasks[taskId].data[3] < 14) { - gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256); + gTasks[gTasks[taskId].data[15]].data[1] = (s16)((gTasks[taskId].data[3]) | ((16 - gTasks[taskId].data[3]) << 8)); gTasks[taskId].data[4]++; } if (gTasks[taskId].data[3] > 54) { - unkUse = --gTasks[taskId].data[4]; - gTasks[gTasks[taskId].data[15]].data[1] = unkUse | ((16 - unkUse) * 256); + gTasks[taskId].data[4]--; + gTasks[gTasks[taskId].data[15]].data[1] = (s16)((gTasks[taskId].data[4]) | ((16 - gTasks[taskId].data[4]) << 8)); } } if (!(gTasks[gTasks[taskId].data[15]].data[1] & 0x1F)) @@ -1230,167 +921,6 @@ static void AnimTask_CreateSurfWave_Step1(u8 taskId) gTasks[taskId].func = AnimTask_CreateSurfWave_Step2; } } -#else -NAKED -static void AnimTask_CreateSurfWave_Step1(u8 taskId) -{ - asm_unified("push {r4-r7,lr}\n\ - sub sp, 0x10\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - ldr r1, =gBattle_BG1_X\n\ - ldr r2, =gBattle_BG1_Y\n\ - ldr r0, =gTasks\n\ - lsls r4, r5, 2\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x8]\n\ - ldrh r3, [r1]\n\ - adds r0, r3\n\ - strh r0, [r1]\n\ - ldrh r0, [r4, 0xA]\n\ - ldrh r1, [r2]\n\ - adds r0, r1\n\ - strh r0, [r2]\n\ - mov r0, sp\n\ - bl sub_80752A0\n\ - ldrh r0, [r4, 0xA]\n\ - ldrh r3, [r4, 0xC]\n\ - adds r0, r3\n\ - strh r0, [r4, 0xC]\n\ - ldrh r0, [r4, 0x12]\n\ - adds r0, 0x1\n\ - strh r0, [r4, 0x12]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - cmp r0, 0x4\n\ - bne _08107C18\n\ - ldr r1, =gPlttBufferFaded\n\ - mov r0, sp\n\ - ldrb r0, [r0, 0x8]\n\ - lsls r0, 4\n\ - adds r0, 0x7\n\ - lsls r0, 1\n\ - adds r0, r1\n\ - ldrh r6, [r0]\n\ - movs r2, 0x6\n\ - adds r7, r1, 0\n\ - adds r3, r7, 0\n\ - mov r4, sp\n\ -_08107BDE:\n\ - ldrb r0, [r4, 0x8]\n\ - lsls r0, 4\n\ - adds r1, r2, 0x1\n\ - adds r0, r1\n\ - lsls r1, r0, 1\n\ - adds r1, r3\n\ - subs r0, 0x1\n\ - lsls r0, 1\n\ - adds r0, r3\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ - subs r0, r2, 0x1\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - cmp r2, 0\n\ - bne _08107BDE\n\ - mov r0, sp\n\ - ldrb r0, [r0, 0x8]\n\ - lsls r0, 4\n\ - adds r0, 0x1\n\ - lsls r0, 1\n\ - adds r0, r7\n\ - strh r6, [r0]\n\ - ldr r1, =gTasks\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - strh r2, [r0, 0x12]\n\ -_08107C18:\n\ - ldr r1, =gTasks\n\ - lsls r2, r5, 2\n\ - adds r0, r2, r5\n\ - lsls r0, 3\n\ - adds r3, r0, r1\n\ - ldrh r0, [r3, 0x14]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x14]\n\ - lsls r0, 16\n\ - asrs r0, 16\n\ - adds r4, r1, 0\n\ - adds r6, r2, 0\n\ - cmp r0, 0x1\n\ - ble _08107C86\n\ - movs r0, 0\n\ - strh r0, [r3, 0x14]\n\ - ldrh r0, [r3, 0xE]\n\ - adds r2, r0, 0x1\n\ - strh r2, [r3, 0xE]\n\ - lsls r0, r2, 16\n\ - asrs r0, 16\n\ - cmp r0, 0xD\n\ - bgt _08107C62\n\ - movs r1, 0x26\n\ - ldrsh r0, [r3, r1]\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r1, r4\n\ - movs r0, 0x10\n\ - subs r0, r2\n\ - lsls r0, 8\n\ - orrs r2, r0\n\ - strh r2, [r1, 0xA]\n\ - ldrh r0, [r3, 0x10]\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x10]\n\ -_08107C62:\n\ - movs r1, 0xE\n\ - ldrsh r0, [r3, r1]\n\ - cmp r0, 0x36\n\ - ble _08107C86\n\ - ldrh r2, [r3, 0x10]\n\ - subs r2, 0x1\n\ - strh r2, [r3, 0x10]\n\ - movs r1, 0x26\n\ - ldrsh r0, [r3, r1]\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - adds r1, r4\n\ - movs r0, 0x10\n\ - subs r0, r2\n\ - lsls r0, 8\n\ - orrs r2, r0\n\ - strh r2, [r1, 0xA]\n\ -_08107C86:\n\ - adds r0, r6, r5\n\ - lsls r0, 3\n\ - adds r2, r0, r4\n\ - movs r3, 0x26\n\ - ldrsh r1, [r2, r3]\n\ - lsls r0, r1, 2\n\ - adds r0, r1\n\ - lsls r0, 3\n\ - adds r0, r4\n\ - ldrh r0, [r0, 0xA]\n\ - movs r3, 0x1F\n\ - ands r3, r0\n\ - cmp r3, 0\n\ - bne _08107CA8\n\ - strh r3, [r2, 0x8]\n\ - ldr r0, =AnimTask_CreateSurfWave_Step2\n\ - str r0, [r2]\n\ -_08107CA8:\n\ - add sp, 0x10\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .pool\n"); -} -#endif static void AnimTask_CreateSurfWave_Step2(u8 taskId) { @@ -2014,216 +1544,51 @@ static void AnimWaterPulseRing_Step(struct Sprite *sprite) sprite->data[0]++; } -#ifdef NONMATCHING -static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yDiff) +static void CreateWaterPulseRingBubbles(struct Sprite *sprite, s32 xDiff, s32 yDiff) { - s16 something = sprite->data[0] / 2; - s16 combinedX = sprite->pos1.x + sprite->pos2.x; - s16 combinedY = sprite->pos1.y + sprite->pos2.y; - s16 randomSomethingY = yDiff + (Random() % 10) - 5; - s16 randomSomethingX = -xDiff + (Random() % 10) - 5; - s16 i; + s16 combinedX, combinedY; + s16 i, something; + s16 unusedVar = 1; //unusedVar is needed to match + s16 somethingRandomX, somethingRandomY; u8 spriteId; - for (i = 0; i <= 0; i++) + something = sprite->data[0] / 2; + combinedX = sprite->pos1.x + sprite->pos2.x; + combinedY = sprite->pos1.y + sprite->pos2.y; + if (yDiff < 0) + unusedVar *= -1; //Needed to Match + somethingRandomY = yDiff + (Random() % 10) - 5; + somethingRandomX = -xDiff + (Random() % 10) - 5; + + for (i = 0; i < 1; i++) { spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY + something, 130); gSprites[spriteId].data[0] = 20; - gSprites[spriteId].data[1] = randomSomethingY; + gSprites[spriteId].data[1] = somethingRandomY; gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; - if (randomSomethingX < 0) - gSprites[spriteId].data[2] = -randomSomethingX; + if (somethingRandomX < 0) + { + gSprites[spriteId].data[2] = -somethingRandomX; + } else - gSprites[spriteId].data[2] = randomSomethingX; + { + gSprites[spriteId].data[2] = somethingRandomX; + } } - for (i = 0; i <= 0; i++) + for (i = 0; i < 1; i++) { spriteId = CreateSprite(&gWaterPulseRingBubbleSpriteTemplate, combinedX, combinedY - something, 130); gSprites[spriteId].data[0] = 20; - gSprites[spriteId].data[1] = randomSomethingY; + gSprites[spriteId].data[1] = somethingRandomY; gSprites[spriteId].subpriority = GetBattlerSpriteSubpriority(gBattleAnimAttacker) - 1; - if (randomSomethingX > 0) - gSprites[spriteId].data[2] = -randomSomethingX; + if (somethingRandomX > 0) + { + gSprites[spriteId].data[2] = -somethingRandomX; + } else - gSprites[spriteId].data[2] = randomSomethingX; + { + gSprites[spriteId].data[2] = somethingRandomX; + } } } -#else -NAKED -static void CreateWaterPulseRingBubbles(struct Sprite *sprite, int xDiff, int yDiff) -{ - asm_unified("push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x18\n\ - adds r4, r1, 0\n\ - adds r5, r2, 0\n\ - movs r2, 0x2E\n\ - ldrsh r1, [r0, r2]\n\ - lsrs r2, r1, 31\n\ - adds r1, r2\n\ - lsls r1, 15\n\ - lsrs r1, 16\n\ - str r1, [sp]\n\ - ldrh r1, [r0, 0x24]\n\ - ldrh r3, [r0, 0x20]\n\ - adds r1, r3\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - mov r8, r1\n\ - ldrh r1, [r0, 0x26]\n\ - ldrh r0, [r0, 0x22]\n\ - adds r1, r0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - mov r10, r1\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r0, r5, r0\n\ - subs r0, 0x5\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - bl Random\n\ - negs r4, r4\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0xA\n\ - bl __umodsi3\n\ - adds r4, r0\n\ - subs r4, 0x5\n\ - lsls r4, 16\n\ - lsrs r7, r4, 16\n\ - movs r6, 0\n\ - mov r0, r8\n\ - lsls r0, 16\n\ - mov r8, r0\n\ - mov r1, r10\n\ - lsls r1, 16\n\ - str r1, [sp, 0xC]\n\ - ldr r2, [sp]\n\ - lsls r2, 16\n\ - str r2, [sp, 0x10]\n\ - asrs r1, 16\n\ - lsls r0, r7, 16\n\ - asrs r5, r0, 16\n\ - str r0, [sp, 0x14]\n\ - negs r3, r5\n\ - str r3, [sp, 0x4]\n\ - asrs r0, r2, 16\n\ - adds r1, r0\n\ - lsls r1, 16\n\ - mov r10, r1\n\ -_08108DE2:\n\ - ldr r0, =gWaterPulseRingBubbleSpriteTemplate\n\ - mov r2, r8\n\ - asrs r1, r2, 16\n\ - mov r3, r10\n\ - asrs r2, r3, 16\n\ - movs r3, 0x82\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - ldr r1, =gSprites\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r4, r0, r1\n\ - movs r0, 0x14\n\ - strh r0, [r4, 0x2E]\n\ - mov r0, r9\n\ - strh r0, [r4, 0x30]\n\ - ldr r0, =gBattleAnimAttacker\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSpriteSubpriority\n\ - subs r0, 0x1\n\ - adds r1, r4, 0\n\ - adds r1, 0x43\n\ - strb r0, [r1]\n\ - cmp r5, 0\n\ - bge _08108E30\n\ - mov r1, sp\n\ - ldrh r1, [r1, 0x4]\n\ - strh r1, [r4, 0x32]\n\ - b _08108E32\n\ - .pool\n\ -_08108E30:\n\ - strh r7, [r4, 0x32]\n\ -_08108E32:\n\ - lsls r0, r6, 16\n\ - movs r2, 0x80\n\ - lsls r2, 9\n\ - adds r0, r2\n\ - lsrs r6, r0, 16\n\ - cmp r0, 0\n\ - ble _08108DE2\n\ - movs r6, 0\n\ - ldr r3, [sp, 0xC]\n\ - asrs r1, r3, 16\n\ - ldr r0, [sp, 0x14]\n\ - asrs r5, r0, 16\n\ - negs r2, r5\n\ - str r2, [sp, 0x8]\n\ - ldr r3, [sp, 0x10]\n\ - asrs r0, r3, 16\n\ - subs r1, r0\n\ - lsls r1, 16\n\ - mov r10, r1\n\ -_08108E58:\n\ - ldr r0, =gWaterPulseRingBubbleSpriteTemplate\n\ - mov r2, r8\n\ - asrs r1, r2, 16\n\ - mov r3, r10\n\ - asrs r2, r3, 16\n\ - movs r3, 0x82\n\ - bl CreateSprite\n\ - lsls r0, 24\n\ - lsrs r2, r0, 24\n\ - ldr r1, =gSprites\n\ - lsls r0, r2, 4\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r4, r0, r1\n\ - movs r0, 0x14\n\ - strh r0, [r4, 0x2E]\n\ - mov r0, r9\n\ - strh r0, [r4, 0x30]\n\ - ldr r0, =gBattleAnimAttacker\n\ - ldrb r0, [r0]\n\ - bl GetBattlerSpriteSubpriority\n\ - subs r0, 0x1\n\ - adds r1, r4, 0\n\ - adds r1, 0x43\n\ - strb r0, [r1]\n\ - cmp r5, 0\n\ - ble _08108EA8\n\ - mov r1, sp\n\ - ldrh r1, [r1, 0x8]\n\ - strh r1, [r4, 0x32]\n\ - b _08108EAA\n\ - .pool\n\ -_08108EA8:\n\ - strh r7, [r4, 0x32]\n\ -_08108EAA:\n\ - lsls r0, r6, 16\n\ - movs r2, 0x80\n\ - lsls r2, 9\n\ - adds r0, r2\n\ - lsrs r6, r0, 16\n\ - cmp r0, 0\n\ - ble _08108E58\n\ - add sp, 0x18\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n"); -} -#endif +