summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGriffinR <griffin.g.richards@gmail.com>2020-09-01 13:31:39 -0400
committerGitHub <noreply@github.com>2020-09-01 13:31:39 -0400
commit83806d0f95f9298bfa6d8775f5ea79a8204cc910 (patch)
tree1af34f57c2a11723c5a99a5638a7c6ae0376721a
parent4ac1b3fec52d4f09dd3b4d36c2d6d941b4e89343 (diff)
parent26ac9c5faf74fe9ea3a14f5c87ede78d077db118 (diff)
Merge pull request #353 from PokeCodec/MatchFirered
Match (Most of) Firered
-rw-r--r--asm/crt0.s76
-rw-r--r--asm/libagbsyscall.s28
-rw-r--r--berry_fix/asm/loader.s2
-rw-r--r--berry_fix/payload/asm/libagbsyscall.s12
-rw-r--r--include/list_menu.h4
-rw-r--r--include/quest_log.h2
-rw-r--r--src/battle_script_commands.c276
-rw-r--r--src/help_message.c115
-rw-r--r--src/link_rfu_3.c84
-rw-r--r--src/list_menu.c4
-rw-r--r--src/m4a.c2
-rw-r--r--src/menu.c24
-rw-r--r--src/pokedex_screen.c518
-rw-r--r--src/water.c765
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
+