From 165b7cb375376cbb35c646e6f4cc12d0a6bec86b Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 9 May 2017 11:45:13 -0500 Subject: start decompiling --- asm/battle_2.s | 375 --------------------------------------------------------- ld_script.txt | 1 + src/battle_2.c | 211 ++++++++++++++++++++++++++++++++ 3 files changed, 212 insertions(+), 375 deletions(-) create mode 100644 src/battle_2.c diff --git a/asm/battle_2.s b/asm/battle_2.s index 004d1eadf..eba0c2c9b 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,381 +6,6 @@ .text - thumb_func_start sub_800E7C4 -sub_800E7C4: @ 800E7C4 - push {lr} - ldr r0, _0800E7E4 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800E7F0 - bl sub_800B858 - ldr r0, _0800E7E8 @ =sub_800F104 - bl SetMainCallback2 - ldr r1, _0800E7EC @ =gUnknown_02024D1E - movs r0, 0 - strb r0, [r1] - b _0800E7F4 - .align 2, 0 -_0800E7E4: .4byte gBattleTypeFlags -_0800E7E8: .4byte sub_800F104 -_0800E7EC: .4byte gUnknown_02024D1E -_0800E7F0: - bl sub_800E7F8 -_0800E7F4: - pop {r0} - bx r0 - thumb_func_end sub_800E7C4 - - thumb_func_start sub_800E7F8 -sub_800E7F8: @ 800E7F8 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r4, 0 - str r4, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _0800E90C @ =0x05006000 - mov r0, sp - bl CpuSet - ldr r0, _0800E910 @ =REG_MOSAIC - strh r4, [r0] - subs r0, 0xC - movs r2, 0xF0 - strh r2, [r0] - adds r0, 0x4 - ldr r3, _0800E914 @ =0x00005051 - adds r1, r3, 0 - strh r1, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r0, _0800E918 @ =gUnknown_030042C4 - strh r2, [r0] - ldr r0, _0800E91C @ =gUnknown_03004240 - strh r1, [r0] - bl dp12_8087EA4 - ldr r0, _0800E920 @ =gUnknown_03004DE0 - movs r3, 0xF0 - movs r5, 0xF0 - lsls r5, 3 - adds r2, r0, r5 - movs r1, 0x4F -_0800E84A: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _0800E84A - movs r1, 0x50 - ldr r4, _0800E924 @ =gUnknown_081F9674 - ldr r0, _0800E920 @ =gUnknown_03004DE0 - ldr r3, _0800E928 @ =0x0000ff10 - movs r5, 0x82 - lsls r5, 4 - adds r2, r0, r5 - adds r0, 0xA0 -_0800E868: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _0800E868 - ldr r0, [r4] - ldr r1, [r4, 0x4] - ldr r2, [r4, 0x8] - bl sub_80895F8 - ldr r4, _0800E92C @ =gWindowConfig_81E6C58 - adds r0, r4, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _0800E930 @ =gUnknown_030042A4 - movs r1, 0 - strh r1, [r0] - ldr r0, _0800E934 @ =gUnknown_030042A0 - strh r1, [r0] - ldr r0, _0800E938 @ =gUnknown_030042C0 - strh r1, [r0] - ldr r0, _0800E93C @ =gUnknown_030041B4 - strh r1, [r0] - ldr r0, _0800E940 @ =gUnknown_03004288 - strh r1, [r0] - ldr r0, _0800E944 @ =gUnknown_03004280 - strh r1, [r0] - ldr r0, _0800E948 @ =gUnknown_030041B0 - strh r1, [r0] - ldr r0, _0800E94C @ =gUnknown_030041B8 - strh r1, [r0] - bl GetBattleTerrain - ldr r1, _0800E950 @ =gBattleTerrain - strb r0, [r1] - ldr r0, _0800E954 @ =gUnknown_03004210 - adds r1, r4, 0 - bl InitWindowFromConfig - ldr r0, _0800E958 @ =gUnknown_030041D0 - ldr r1, _0800E95C @ =gWindowConfig_81E71D0 - bl InitWindowFromConfig - ldr r0, _0800E960 @ =gUnknown_03004250 - ldr r1, _0800E964 @ =gWindowConfig_81E71EC - bl InitWindowFromConfig - bl sub_800D6D4 - bl sub_800DAB8 - bl ResetSpriteData - bl ResetTasks - bl sub_800E23C - bl FreeAllSpritePalettes - ldr r1, _0800E968 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _0800E96C @ =sub_800FCFC - bl SetVBlankCallback - bl setup_poochyena_battle - ldr r0, _0800E970 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800E978 - ldr r0, _0800E974 @ =sub_800F298 - bl SetMainCallback2 - b _0800E97E - .align 2, 0 -_0800E90C: .4byte 0x05006000 -_0800E910: .4byte REG_MOSAIC -_0800E914: .4byte 0x00005051 -_0800E918: .4byte gUnknown_030042C4 -_0800E91C: .4byte gUnknown_03004240 -_0800E920: .4byte gUnknown_03004DE0 -_0800E924: .4byte gUnknown_081F9674 -_0800E928: .4byte 0x0000ff10 -_0800E92C: .4byte gWindowConfig_81E6C58 -_0800E930: .4byte gUnknown_030042A4 -_0800E934: .4byte gUnknown_030042A0 -_0800E938: .4byte gUnknown_030042C0 -_0800E93C: .4byte gUnknown_030041B4 -_0800E940: .4byte gUnknown_03004288 -_0800E944: .4byte gUnknown_03004280 -_0800E948: .4byte gUnknown_030041B0 -_0800E94C: .4byte gUnknown_030041B8 -_0800E950: .4byte gBattleTerrain -_0800E954: .4byte gUnknown_03004210 -_0800E958: .4byte gUnknown_030041D0 -_0800E95C: .4byte gWindowConfig_81E71D0 -_0800E960: .4byte gUnknown_03004250 -_0800E964: .4byte gWindowConfig_81E71EC -_0800E968: .4byte gReservedSpritePaletteCount -_0800E96C: .4byte sub_800FCFC -_0800E970: .4byte gBattleTypeFlags -_0800E974: .4byte sub_800F298 -_0800E978: - ldr r0, _0800E9CC @ =sub_800EC9C - bl SetMainCallback2 -_0800E97E: - ldr r0, _0800E9D0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0800E998 - ldr r0, _0800E9D4 @ =gEnemyParty - ldr r1, _0800E9D8 @ =gTrainerBattleOpponent - ldrh r1, [r1] - bl sub_800F8E8 - bl SetWildMonHeldItem -_0800E998: - ldr r0, _0800E9DC @ =gMain - ldr r1, _0800E9E0 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r4, _0800E9E4 @ =gPlayerParty - movs r3, 0xFA - lsls r3, 1 - adds r5, r4, r3 -_0800E9AE: - adds r0, r4, 0 - movs r1, 0x3 - bl AdjustFriendship - adds r4, 0x64 - cmp r4, r5 - ble _0800E9AE - movs r1, 0 - ldr r0, _0800E9E8 @ =gUnknown_02024D1E - strb r1, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800E9CC: .4byte sub_800EC9C -_0800E9D0: .4byte gBattleTypeFlags -_0800E9D4: .4byte gEnemyParty -_0800E9D8: .4byte gTrainerBattleOpponent -_0800E9DC: .4byte gMain -_0800E9E0: .4byte 0x0000043d -_0800E9E4: .4byte gPlayerParty -_0800E9E8: .4byte gUnknown_02024D1E - thumb_func_end sub_800E7F8 - - thumb_func_start sub_800E9EC -sub_800E9EC: @ 800E9EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - mov r9, r6 - movs r0, 0xCE - lsls r0, 1 - mov r10, r0 - mov r8, r6 -_0800EA02: - movs r0, 0x64 - mov r4, r9 - muls r4, r0 - ldr r0, _0800EAA4 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _0800EA7E - cmp r5, r10 - beq _0800EA4A - cmp r7, 0 - beq _0800EA4A - cmp r1, 0 - bne _0800EA4A - movs r0, 0x1 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_0800EA4A: - cmp r5, 0 - beq _0800EA7E - cmp r7, 0 - beq _0800EA66 - cmp r5, r10 - beq _0800EA5A - cmp r1, 0 - beq _0800EA66 -_0800EA5A: - movs r0, 0x2 - mov r1, r8 - lsls r0, r1 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_0800EA66: - cmp r5, 0 - beq _0800EA7E - cmp r5, r10 - beq _0800EA7E - cmp r7, 0 - bne _0800EA7E - movs r0, 0x3 - mov r2, r8 - lsls r0, r2 - orrs r6, r0 - lsls r0, r6, 16 - lsrs r6, r0, 16 -_0800EA7E: - movs r0, 0x2 - add r8, r0 - movs r1, 0x1 - add r9, r1 - mov r2, r9 - cmp r2, 0x5 - ble _0800EA02 - ldr r1, _0800EAA8 @ =0x02000000 - strb r6, [r1, 0x2] - lsrs r0, r6, 8 - strb r0, [r1, 0x3] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800EAA4: .4byte gPlayerParty -_0800EAA8: .4byte 0x02000000 - thumb_func_end sub_800E9EC - - thumb_func_start sub_800EAAC -sub_800EAAC: @ 800EAAC - push {r4-r6,lr} - ldr r4, _0800EAF4 @ =0x02000004 - movs r2, 0 - ldr r6, _0800EAF8 @ =gSaveBlock1 - ldr r0, _0800EAFC @ =0x00003160 - adds r3, r6, r0 -_0800EAB8: - adds r0, r4, r2 - adds r1, r2, r3 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x6 - ble _0800EAB8 - movs r2, 0 - adds r3, r4, 0 - adds r3, 0x8 - ldr r5, _0800EB00 @ =gSaveBlock1 + 0x3676 -_0800EACE: - adds r0, r3, r2 - adds r1, r2, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x11 - ble _0800EACE - ldr r1, _0800EB04 @ =0x00003688 - adds r0, r6, r1 - ldrb r0, [r0] - strb r0, [r4, 0x7] - adds r1, 0x1 - adds r0, r6, r1 - ldrb r0, [r0] - strb r0, [r4, 0x1A] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0800EAF4: .4byte 0x02000004 -_0800EAF8: .4byte gSaveBlock1 -_0800EAFC: .4byte 0x00003160 -_0800EB00: .4byte gSaveBlock1 + 0x3676 -_0800EB04: .4byte 0x00003688 - thumb_func_end sub_800EAAC - thumb_func_start sub_800EB08 sub_800EB08: @ 800EB08 push {r4-r7,lr} diff --git a/ld_script.txt b/ld_script.txt index f8da86fba..d43c8886b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -51,6 +51,7 @@ SECTIONS { asm/battle_1.o(.text); src/rom_800D42C.o(.text); asm/battle_1.o(.text_800DC24); + src/battle_2.o(.text); asm/battle_2.o(.text); asm/battle_3.o(.text); asm/battle_4.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c new file mode 100644 index 000000000..81317c477 --- /dev/null +++ b/src/battle_2.c @@ -0,0 +1,211 @@ +#include "global.h" +#include "battle.h" +#include "main.h" +#include "text.h" +#include "palette.h" +#include "sprite.h" +#include "task.h" +#include "pokemon.h" +#include "species.h" + +struct UnknownStruct5 +{ + u32 unk0; + u32 unk4; + u32 unk8; +}; + +struct UnknownStruct6 +{ + u16 unk0[0xA0]; + u8 fillerA0[0x640]; + u16 unk780[0xA0]; +}; + +struct UnknownStruct7 +{ + u8 filler0[2]; + u8 unk2; + u8 unk3; +}; + +struct UnknownStruct8 +{ + u8 unk0[7]; + u8 unk7; + u8 unk8[18]; + u8 unk1A; +}; + +extern const struct UnknownStruct5 gUnknown_081F9674; + +extern u8 ewram[]; +#define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) +#define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) +extern u8 gUnknown_02024D1E; +extern u16 gUnknown_030041B0; +extern u16 gUnknown_030041B4; +extern u16 gUnknown_030041B8; +extern struct Window gUnknown_030041D0; +extern struct Window gUnknown_03004210; +extern struct Window gUnknown_03004250; +extern u16 gUnknown_03004240; +extern u16 gUnknown_03004280; +extern u16 gUnknown_03004288; +extern u16 gUnknown_030042A0; +extern u16 gUnknown_030042A4; +extern u16 gUnknown_030042C0; +extern u16 gUnknown_030042C4; +extern struct UnknownStruct6 gUnknown_03004DE0; +//extern u16 gUnknown_03004DE0[][0xA0]; +extern u16 gBattleTypeFlags; +extern u8 gBattleTerrain; +extern u8 gReservedSpritePaletteCount; +extern u16 gTrainerBattleOpponent; + +extern void sub_800B858(void); +extern void dp12_8087EA4(void); +extern void sub_80895F8(); +extern u8 GetBattleTerrain(); +extern void sub_800D6D4(); +extern void sub_800DAB8(); +extern void sub_800E23C(); +extern void setup_poochyena_battle(); +extern void SetWildMonHeldItem(void); +extern void AdjustFriendship(struct Pokemon *, u8); + + +void sub_800E7F8(void); +void sub_800EC9C(void); +void sub_800F104(void); +void sub_800F298(void); +void sub_800F8E8(); +void sub_800FCFC(void); + +void sub_800E7C4(void) +{ + if (gBattleTypeFlags & BATTLE_TYPE_40) + { + sub_800B858(); + SetMainCallback2(sub_800F104); + gUnknown_02024D1E = 0; + } + else + { + sub_800E7F8(); + } +} + +void sub_800E7F8(void) +{ + s32 i; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + + REG_MOSAIC = 0; + REG_WIN0H = 0xF0; + REG_WIN0V = 0x5051; + REG_WININ = 0; + REG_WINOUT = 0; + gUnknown_030042C4 = 0xF0; + gUnknown_03004240 = 0x5051; + dp12_8087EA4(); + + for (i = 0; i < 80; i++) + { + gUnknown_03004DE0.unk0[i] = 0xF0; + gUnknown_03004DE0.unk780[i] = 0xF0; + } + for (i = 80; i < 160; i++) + { + asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter + gUnknown_03004DE0.unk0[i] = 0xFF10; + gUnknown_03004DE0.unk780[i] = 0xFF10; + } + sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + gBattleTerrain = GetBattleTerrain(); + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); + InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); + sub_800D6D4(); + sub_800DAB8(); + ResetSpriteData(); + ResetTasks(); + sub_800E23C(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + SetVBlankCallback(sub_800FCFC); + setup_poochyena_battle(); + if (gBattleTypeFlags & BATTLE_TYPE_40) + SetMainCallback2(sub_800F298); + else + SetMainCallback2(sub_800EC9C); + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + sub_800F8E8(gEnemyParty, gTrainerBattleOpponent); + SetWildMonHeldItem(); + } + gMain.inBattle = TRUE; + for (i = 0; i < 6; i++) + AdjustFriendship(&gPlayerParty[i], 3); + gUnknown_02024D1E = 0; +} + +void sub_800E9EC(void) +{ + u16 r6 = 0; + u16 species; + u16 hp; + u32 status; + s32 i; + + for (i = 0; i < 6; i++) + { + species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); + hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + + if (species == 0) + continue; + if (species != SPECIES_EGG && hp != 0 && status == 0) + r6 |= 1 << i * 2; + + if (species == 0) + continue; + if (hp != 0 && (species == SPECIES_EGG || status != 0)) + r6 |= 2 << i * 2; + + if (species == 0) + continue; + if (species != SPECIES_EGG && hp == 0) + r6 |= 3 << i * 2; + } + ewram0.unk2 = r6; + ewram0.unk3 = r6 >> 8; +} + +void sub_800EAAC(void) +{ + s32 i; + struct UnknownStruct8 *_ewram4 = &ewram4; + + for (i = 0; i < 7; i++) + _ewram4->unk0[i] = gSaveBlock1.enigmaBerry.berry.name[i]; + for (i = 0; i < 18; i++) + _ewram4->unk8[i] = gSaveBlock1.enigmaBerry.itemEffect[i]; + _ewram4->unk7 = gSaveBlock1.enigmaBerry.holdEffect; + _ewram4->unk1A = gSaveBlock1.enigmaBerry.holdEffectParam; +} -- cgit v1.2.3 From b2218c7d2ba5a2a2b9ff1258dfb454479241c3b6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 May 2017 00:54:02 -0500 Subject: tired. finish later --- asm/battle_2.s | 203 ------------------------------------------------- include/global.berry.h | 8 +- src/battle_2.c | 121 ++++++++++++++++++++++++++++- 3 files changed, 124 insertions(+), 208 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index eba0c2c9b..322c1f9a1 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,209 +6,6 @@ .text - thumb_func_start sub_800EB08 -sub_800EB08: @ 800EB08 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r0, _0800EB84 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0800EBA4 - movs r3, 0 - ldr r5, _0800EB88 @ =gEnigmaBerries - ldr r0, _0800EB8C @ =gSaveBlock1 - mov r12, r0 - adds r7, r5, 0 - ldr r6, _0800EB90 @ =0x00003160 - add r6, r12 - adds r4, r5, 0 - adds r4, 0x38 -_0800EB30: - adds r1, r3, r7 - adds r2, r3, r6 - ldrb r0, [r2] - strb r0, [r1] - adds r1, r3, r4 - ldrb r0, [r2] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0x6 - ble _0800EB30 - movs r3, 0 - ldr r4, _0800EB94 @ =gUnknown_02024DF8 - ldr r7, _0800EB98 @ =gSaveBlock1 + 0x3676 - adds r6, r4, 0 - adds r6, 0x38 -_0800EB4E: - adds r1, r3, r4 - adds r2, r3, r7 - ldrb r0, [r2] - strb r0, [r1] - adds r1, r3, r6 - ldrb r0, [r2] - strb r0, [r1] - adds r3, 0x1 - cmp r3, 0x11 - ble _0800EB4E - ldr r1, _0800EB9C @ =0x00003688 - add r1, r12 - ldrb r0, [r1] - strb r0, [r5, 0x7] - ldrb r0, [r1] - adds r1, r5, 0 - adds r1, 0x3F - strb r0, [r1] - ldr r1, _0800EBA0 @ =0x00003689 - add r1, r12 - ldrb r0, [r1] - strb r0, [r5, 0x1A] - ldrb r1, [r1] - adds r0, r5, 0 - adds r0, 0x52 - strb r1, [r0] - b _0800EC28 - .align 2, 0 -_0800EB84: .4byte gBattleTypeFlags -_0800EB88: .4byte gEnigmaBerries -_0800EB8C: .4byte gSaveBlock1 -_0800EB90: .4byte 0x00003160 -_0800EB94: .4byte gUnknown_02024DF8 -_0800EB98: .4byte gSaveBlock1 + 0x3676 -_0800EB9C: .4byte 0x00003688 -_0800EBA0: .4byte 0x00003689 -_0800EBA4: - movs r0, 0x40 - ands r0, r1 - movs r1, 0x2 - mov r8, r1 - cmp r0, 0 - beq _0800EBB4 - movs r0, 0x4 - mov r8, r0 -_0800EBB4: - movs r3, 0 - cmp r3, r8 - bge _0800EC28 - ldr r1, _0800EC38 @ =gEnigmaBerries - mov r12, r1 - ldr r0, _0800EC3C @ =gBlockRecvBuffer + 0x4 - mov r10, r0 - movs r1, 0x8 - add r1, r12 - mov r9, r1 -_0800EBC8: - lsls r0, r3, 8 - mov r1, r10 - adds r5, r0, r1 - lsls r0, r3, 3 - subs r0, r3 - lsls r0, 2 - ldr r1, _0800EC40 @ =gLinkPlayers - adds r0, r1 - ldrb r4, [r0, 0x18] - movs r2, 0 - adds r7, r3, 0x1 - lsls r1, r4, 3 - subs r0, r1, r4 - adds r6, r1, 0 - lsls r0, 2 - mov r1, r12 - adds r3, r0, r1 -_0800EBEA: - adds r0, r5, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x6 - ble _0800EBEA - movs r2, 0 - subs r0, r6, r4 - lsls r0, 2 - mov r1, r9 - adds r3, r0, r1 - adds r1, r5, 0 - adds r1, 0x8 -_0800EC06: - adds r0, r1, r2 - ldrb r0, [r0] - strb r0, [r3] - adds r3, 0x1 - adds r2, 0x1 - cmp r2, 0x11 - ble _0800EC06 - subs r0, r6, r4 - lsls r0, 2 - add r0, r12 - ldrb r1, [r5, 0x7] - strb r1, [r0, 0x7] - ldrb r1, [r5, 0x1A] - strb r1, [r0, 0x1A] - adds r3, r7, 0 - cmp r3, r8 - blt _0800EBC8 -_0800EC28: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800EC38: .4byte gEnigmaBerries -_0800EC3C: .4byte gBlockRecvBuffer + 0x4 -_0800EC40: .4byte gLinkPlayers - thumb_func_end sub_800EB08 - - thumb_func_start shedinja_something -shedinja_something: @ 800EC44 - push {r4,r5,lr} - sub sp, 0x10 - adds r4, r0, 0 - add r5, sp, 0xC - movs r0, 0x1 - strb r0, [r5] - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r1, _0800EC94 @ =0x0000012f - cmp r0, r1 - bne _0800EC8C - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - ldrb r1, [r5] - cmp r0, r1 - beq _0800EC8C - adds r0, r4, 0 - movs r1, 0x2 - mov r2, sp - bl GetMonData - ldr r1, _0800EC98 @ =gUnknown_081F96C8 - mov r0, sp - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _0800EC8C - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r5, 0 - bl SetMonData -_0800EC8C: - add sp, 0x10 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800EC94: .4byte 0x0000012f -_0800EC98: .4byte gUnknown_081F96C8 - thumb_func_end shedinja_something - thumb_func_start sub_800EC9C sub_800EC9C: @ 800EC9C push {r4-r7,lr} diff --git a/include/global.berry.h b/include/global.berry.h index b7938868d..3f835f075 100644 --- a/include/global.berry.h +++ b/include/global.berry.h @@ -34,10 +34,10 @@ struct EnigmaBerry struct BattleEnigmaBerry { - u8 name[7]; - u8 holdEffect; - u8 itemEffect[18]; - u8 holdEffectParam; + /*0x00*/ u8 name[7]; + /*0x07*/ u8 holdEffect; + /*0x08*/ u8 itemEffect[18]; + /*0x1A*/ u8 holdEffectParam; }; struct BerryTree diff --git a/src/battle_2.c b/src/battle_2.c index 81317c477..d15e10f2f 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -7,6 +7,7 @@ #include "task.h" #include "pokemon.h" #include "species.h" +#include "link.h" struct UnknownStruct5 { @@ -24,7 +25,8 @@ struct UnknownStruct6 struct UnknownStruct7 { - u8 filler0[2]; + u8 unk0; + u8 unk1; u8 unk2; u8 unk3; }; @@ -38,6 +40,7 @@ struct UnknownStruct8 }; extern const struct UnknownStruct5 gUnknown_081F9674; +extern const u8 gUnknown_081F96C8[]; extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) @@ -62,6 +65,8 @@ extern u16 gBattleTypeFlags; extern u8 gBattleTerrain; extern u8 gReservedSpritePaletteCount; extern u16 gTrainerBattleOpponent; +extern struct BattleEnigmaBerry gEnigmaBerries[]; +extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern void sub_800B858(void); extern void dp12_8087EA4(void); @@ -209,3 +214,117 @@ void sub_800EAAC(void) _ewram4->unk7 = gSaveBlock1.enigmaBerry.holdEffect; _ewram4->unk1A = gSaveBlock1.enigmaBerry.holdEffectParam; } + +void sub_800EB08(void) +{ + s32 i; + s32 j; + + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) + { + for (i = 0; i < 7; i++) + { + gEnigmaBerries[0].name[i] = gSaveBlock1.enigmaBerry.berry.name[i]; + gEnigmaBerries[2].name[i] = gSaveBlock1.enigmaBerry.berry.name[i]; + } + for (i = 0; i < 18; i++) + { + gEnigmaBerries[0].itemEffect[i] = gSaveBlock1.enigmaBerry.itemEffect[i]; + gEnigmaBerries[2].itemEffect[i] = gSaveBlock1.enigmaBerry.itemEffect[i]; + } + gEnigmaBerries[0].holdEffect = gSaveBlock1.enigmaBerry.holdEffect; + gEnigmaBerries[2].holdEffect = gSaveBlock1.enigmaBerry.holdEffect; + gEnigmaBerries[0].holdEffectParam = gSaveBlock1.enigmaBerry.holdEffectParam; + gEnigmaBerries[2].holdEffectParam = gSaveBlock1.enigmaBerry.holdEffectParam; + } + else + { + s32 r8; + struct BattleEnigmaBerry *src; + u8 r4; + + if (gBattleTypeFlags & BATTLE_TYPE_40) + r8 = 4; + else + r8 = 2; + for (i = 0; i < r8; i++) + { + src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); + r4 = gLinkPlayers[i].lp_field_18; + + for (j = 0; j < 7; j++) + gEnigmaBerries[r4].name[j] = src->name[j]; + for (j = 0; j < 18; j++) + gEnigmaBerries[r4].itemEffect[j] = src->itemEffect[j]; + gEnigmaBerries[r4].holdEffect = src->holdEffect; + gEnigmaBerries[r4].holdEffectParam = src->holdEffectParam; + } + } +} + +void shedinja_something(struct Pokemon *pkmn) +{ + u8 nickname[POKEMON_NAME_LENGTH + 1]; + u8 language = 1; + + if (GetMonData(pkmn, MON_DATA_SPECIES) == SPECIES_SHEDINJA + && GetMonData(pkmn, MON_DATA_LANGUAGE) != language) + { + GetMonData(pkmn, MON_DATA_NICKNAME, nickname); + if (StringCompareWithoutExtCtrlCodes(nickname, gUnknown_081F96C8) == 0) + SetMonData(pkmn, MON_DATA_LANGUAGE, &language); + } +} + +void sub_800EC9C(void) +{ + u8 r4; + u8 r5; + + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + r4 = GetMultiplayerId(); + ewram[0x160CB] = r4; + r5 = r4 ^ 1; + switch (gUnknown_02024D1E) + { + case 0: + //_0800ED0C + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + { + ewram0.unk0 = 1; + ewram0.unk1 = 1; + sub_800E9EC(); + sub_800EAAC(); + SendBlock(bitmask_all_link_players_but_self(), &ewram0, 32); + gUnknown_02024D1E = 1; + } + } + //_0800ED64 + else + { + gBattleTypeFlags |= BATTLE_TYPE_WILD; + gUnknown_02024D1E = 8; + sub_800EB08(); + } + break; + case 1: + //_0800ED7C + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + if (gBlockRecvBuffer[0][0] == 0x100) + { + if (r4 == 0) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + } + //_0800EDBC + } + break; + } +} \ No newline at end of file -- cgit v1.2.3 From e78f49f1efc2eadb674d00c00ffc9a4018b3cdbd Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 May 2017 16:47:08 -0500 Subject: decompile some more --- asm/battle_2.s | 701 --------------------------------------------------------- src/battle_2.c | 321 +++++++++++++++++++++----- 2 files changed, 270 insertions(+), 752 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 322c1f9a1..300c53114 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,707 +6,6 @@ .text - thumb_func_start sub_800EC9C -sub_800EC9C: @ 800EC9C - push {r4-r7,lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl GetMultiplayerId - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0800ECD4 @ =0x02000000 - ldr r1, _0800ECD8 @ =0x000160cb - adds r0, r1 - strb r4, [r0] - movs r0, 0x1 - adds r5, r4, 0 - eors r5, r0 - ldr r0, _0800ECDC @ =gUnknown_02024D1E - ldrb r0, [r0] - cmp r0, 0x9 - bls _0800ECCA - b _0800F008 -_0800ECCA: - lsls r0, 2 - ldr r1, _0800ECE0 @ =_0800ECE4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800ECD4: .4byte 0x02000000 -_0800ECD8: .4byte 0x000160cb -_0800ECDC: .4byte gUnknown_02024D1E -_0800ECE0: .4byte _0800ECE4 - .align 2, 0 -_0800ECE4: - .4byte _0800ED0C - .4byte _0800ED7C - .4byte _0800EE88 - .4byte _0800EEAC - .4byte _0800EED8 - .4byte _0800EEFC - .4byte _0800EF28 - .4byte _0800EF48 - .4byte _0800EFB4 - .4byte _0800EFCC -_0800ED0C: - ldr r2, _0800ED54 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0800ED64 - ldr r0, _0800ED58 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0800ED22 - b _0800F008 -_0800ED22: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0800ED2E - b _0800F008 -_0800ED2E: - ldr r4, _0800ED5C @ =0x02000000 - movs r5, 0x1 - strb r5, [r4] - strb r5, [r4, 0x1] - bl sub_800E9EC - bl sub_800EAAC - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - movs r2, 0x20 - bl SendBlock - ldr r0, _0800ED60 @ =gUnknown_02024D1E - strb r5, [r0] - b _0800F008 - .align 2, 0 -_0800ED54: .4byte gBattleTypeFlags -_0800ED58: .4byte gReceivedRemoteLinkPlayers -_0800ED5C: .4byte 0x02000000 -_0800ED60: .4byte gUnknown_02024D1E -_0800ED64: - movs r0, 0x4 - orrs r0, r1 - strh r0, [r2] - ldr r1, _0800ED78 @ =gUnknown_02024D1E - movs r0, 0x8 - strb r0, [r1] - bl sub_800EB08 - b _0800F008 - .align 2, 0 -_0800ED78: .4byte gUnknown_02024D1E -_0800ED7C: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0800ED8A - b _0800F008 -_0800ED8A: - bl ResetBlockReceivedFlags - movs r3, 0 - ldr r0, _0800EDA8 @ =gBlockRecvBuffer - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bne _0800EDBC - cmp r4, 0 - bne _0800EDB0 - ldr r0, _0800EDAC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0xC - b _0800EDB6 - .align 2, 0 -_0800EDA8: .4byte gBlockRecvBuffer -_0800EDAC: .4byte gBattleTypeFlags -_0800EDB0: - ldr r0, _0800EDE0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0x8 -_0800EDB6: - orrs r1, r2 - strh r1, [r0] - adds r3, 0x1 -_0800EDBC: - lsls r7, r5, 8 - cmp r3, 0 - bne _0800EE38 - ldr r0, _0800EDE4 @ =gBlockRecvBuffer - movs r1, 0x80 - lsls r1, 1 - adds r2, r0, r1 - ldrh r1, [r0] - adds r6, r0, 0 - ldrh r2, [r2] - cmp r1, r2 - bne _0800EDF4 - cmp r4, 0 - bne _0800EDE8 - ldr r0, _0800EDE0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0xC - b _0800EDEE - .align 2, 0 -_0800EDE0: .4byte gBattleTypeFlags -_0800EDE4: .4byte gBlockRecvBuffer -_0800EDE8: - ldr r0, _0800EE04 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0x8 -_0800EDEE: - orrs r1, r2 - strh r1, [r0] - adds r3, 0x1 -_0800EDF4: - lsls r7, r5, 8 - cmp r3, 0 - bne _0800EE38 - ldrh r1, [r6] - ldr r0, _0800EE08 @ =0x00000101 - ldr r2, _0800EE04 @ =gBattleTypeFlags - b _0800EE1A - .align 2, 0 -_0800EE04: .4byte gBattleTypeFlags -_0800EE08: .4byte 0x00000101 -_0800EE0C: - adds r3, 0x1 - cmp r3, 0x1 - bgt _0800EE22 - lsls r0, r3, 8 - adds r0, r6 - ldrh r1, [r0] - ldr r0, _0800EE2C @ =0x00000101 -_0800EE1A: - cmp r1, r0 - bls _0800EE0C - cmp r3, r4 - beq _0800EE0C -_0800EE22: - cmp r3, 0x2 - bne _0800EE30 - ldrh r0, [r2] - movs r1, 0xC - b _0800EE34 - .align 2, 0 -_0800EE2C: .4byte 0x00000101 -_0800EE30: - ldrh r0, [r2] - movs r1, 0x8 -_0800EE34: - orrs r0, r1 - strh r0, [r2] -_0800EE38: - bl sub_800EB08 - ldr r0, _0800EE78 @ =sub_800DE30 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EE7C @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r1 - movs r1, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r2, 0xA] - movs r0, 0x5A - strh r0, [r2, 0xC] - strh r1, [r2, 0x12] - ldr r0, _0800EE80 @ =0x02000000 - ldrb r1, [r0, 0x2] - ldrb r0, [r0, 0x3] - lsls r0, 8 - orrs r1, r0 - strh r1, [r2, 0xE] - ldr r0, _0800EE84 @ =gBlockRecvBuffer - adds r0, 0x2 - adds r0, r7, r0 - ldrh r0, [r0] - strh r0, [r2, 0x10] - b _0800EF96 - .align 2, 0 -_0800EE78: .4byte sub_800DE30 -_0800EE7C: .4byte gTasks -_0800EE80: .4byte 0x02000000 -_0800EE84: .4byte gBlockRecvBuffer -_0800EE88: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0800EE94 - b _0800F008 -_0800EE94: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EEA8 @ =gPlayerParty - movs r2, 0xC8 - bl SendBlock - b _0800EF96 - .align 2, 0 -_0800EEA8: .4byte gPlayerParty -_0800EEAC: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0800EEBA - b _0800F008 -_0800EEBA: - bl ResetBlockReceivedFlags - ldr r0, _0800EED0 @ =gEnemyParty - lsls r1, r5, 8 - ldr r2, _0800EED4 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl memcpy - b _0800EF96 - .align 2, 0 -_0800EED0: .4byte gEnemyParty -_0800EED4: .4byte gBlockRecvBuffer -_0800EED8: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0800EEE4 - b _0800F008 -_0800EEE4: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EEF8 @ =gPlayerParty + 2 * 0x64 - movs r2, 0xC8 - bl SendBlock - b _0800EF96 - .align 2, 0 -_0800EEF8: .4byte gPlayerParty + 2 * 0x64 -_0800EEFC: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - beq _0800EF0A - b _0800F008 -_0800EF0A: - bl ResetBlockReceivedFlags - ldr r0, _0800EF20 @ =gEnemyParty + 2 * 0x64 - lsls r1, r5, 8 - ldr r2, _0800EF24 @ =gBlockRecvBuffer - adds r1, r2 - movs r2, 0xC8 - bl memcpy - b _0800EF96 - .align 2, 0 -_0800EF20: .4byte gEnemyParty + 2 * 0x64 -_0800EF24: .4byte gBlockRecvBuffer -_0800EF28: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - beq _0800F008 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800EF44 @ =gPlayerParty + 4 * 0x64 - movs r2, 0xC8 - bl SendBlock - b _0800EF96 - .align 2, 0 -_0800EF44: .4byte gPlayerParty + 4 * 0x64 -_0800EF48: - bl GetBlockReceivedStatus - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x3 - bne _0800F008 - bl ResetBlockReceivedFlags - ldr r4, _0800EFA0 @ =gEnemyParty + 4 * 0x64 - lsls r1, r5, 8 - ldr r0, _0800EFA4 @ =gBlockRecvBuffer - adds r1, r0 - adds r0, r4, 0 - movs r2, 0xC8 - bl memcpy - ldr r1, _0800EFA8 @ =0xfffffe70 - adds r0, r4, r1 - bl shedinja_something - ldr r1, _0800EFAC @ =0xfffffed4 - adds r0, r4, r1 - bl shedinja_something - adds r0, r4, 0 - subs r0, 0xC8 - bl shedinja_something - adds r0, r4, 0 - subs r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something -_0800EF96: - ldr r1, _0800EFB0 @ =gUnknown_02024D1E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0800F008 - .align 2, 0 -_0800EFA0: .4byte gEnemyParty + 4 * 0x64 -_0800EFA4: .4byte gBlockRecvBuffer -_0800EFA8: .4byte 0xfffffe70 -_0800EFAC: .4byte 0xfffffed4 -_0800EFB0: .4byte gUnknown_02024D1E -_0800EFB4: - bl sub_800B950 - ldr r0, _0800EFC8 @ =gUnknown_02024D1E - ldrb r1, [r0] - adds r1, 0x1 - movs r2, 0 - strb r1, [r0] - strb r2, [r0, 0x1] - strb r2, [r0, 0x2] - b _0800F008 - .align 2, 0 -_0800EFC8: .4byte gUnknown_02024D1E -_0800EFCC: - ldr r0, _0800F010 @ =gUnknown_02024D1F - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _0800F008 - ldr r2, _0800F014 @ =gUnknown_030042D0 - ldr r1, _0800F018 @ =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, _0800F01C @ =sub_8010824 - str r0, [r1] - ldr r0, _0800F020 @ =sub_800F808 - bl SetMainCallback2 - ldr r3, _0800F024 @ =gBattleTypeFlags - ldrh r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0800F008 - ldr r1, _0800F028 @ =gTrainerBattleOpponent - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x20 - orrs r0, r2 - strh r0, [r3] -_0800F008: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F010: .4byte gUnknown_02024D1F -_0800F014: .4byte gUnknown_030042D0 -_0800F018: .4byte gMain -_0800F01C: .4byte sub_8010824 -_0800F020: .4byte sub_800F808 -_0800F024: .4byte gBattleTypeFlags -_0800F028: .4byte gTrainerBattleOpponent - thumb_func_end sub_800EC9C - - thumb_func_start sub_800F02C -sub_800F02C: @ 800F02C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - mov r8, r0 - ldr r7, _0800F0F8 @ =gUnknown_02023A04 - mov r10, r7 -_0800F03E: - mov r1, r8 - lsls r6, r1, 5 - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r0, _0800F0FC @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - movs r1, 0x4 - negs r1, r1 - add r1, r10 - mov r9, r1 - adds r5, r6, r1 - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - strh r0, [r5, 0x2] - adds r0, r4, 0 - movs r1, 0x2 - adds r2, r7, 0 - bl GetMonData - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - strb r0, [r5, 0xF] - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5, 0x10] - adds r0, r4, 0 - movs r1, 0x3A - bl GetMonData - strh r0, [r5, 0x12] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - mov r1, r10 - adds r1, 0x10 - adds r6, r1 - str r0, [r6] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - str r0, [r7, 0x14] - adds r0, r4, 0 - bl GetMonGender - strb r0, [r5, 0x1C] - adds r0, r7, 0 - bl StripExtCtrlCodes - adds r0, r4, 0 - movs r1, 0x3 - bl GetMonData - strb r0, [r5, 0x1D] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0800F0D4 - adds r0, r7, 0 - movs r1, 0 - bl PadNameString -_0800F0D4: - adds r7, 0x20 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x2 - ble _0800F03E - ldr r0, _0800F100 @ =0x02000000 - mov r1, r9 - movs r2, 0x60 - bl memcpy - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F0F8: .4byte gUnknown_02023A04 -_0800F0FC: .4byte gPlayerParty -_0800F100: .4byte 0x02000000 - thumb_func_end sub_800F02C - - thumb_func_start sub_800F104 -sub_800F104: @ 800F104 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _0800F148 @ =0x02000000 - ldr r1, _0800F14C @ =0x000160cb - adds r0, r4, r1 - strb r6, [r0] - ldr r2, _0800F150 @ =0x000160c4 - adds r2, r4 - mov r9, r2 - ldr r0, _0800F154 @ =0x000160c2 - adds r0, r4 - mov r8, r0 - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r5, _0800F158 @ =gUnknown_02024D1E - ldrb r0, [r5] - cmp r0, 0x1 - beq _0800F1A0 - cmp r0, 0x1 - bgt _0800F15C - cmp r0, 0 - beq _0800F168 - b _0800F27A - .align 2, 0 -_0800F148: .4byte 0x02000000 -_0800F14C: .4byte 0x000160cb -_0800F150: .4byte 0x000160c4 -_0800F154: .4byte 0x000160c2 -_0800F158: .4byte gUnknown_02024D1E -_0800F15C: - cmp r0, 0x2 - beq _0800F240 - cmp r0, 0x3 - bne _0800F166 - b _0800F25C -_0800F166: - b _0800F27A -_0800F168: - ldr r0, _0800F19C @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0800F172 - b _0800F27A -_0800F172: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0800F17E - b _0800F27A -_0800F17E: - bl sub_800F02C - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - movs r2, 0x60 - bl SendBlock - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _0800F27A - .align 2, 0 -_0800F19C: .4byte gReceivedRemoteLinkPlayers -_0800F1A0: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - bne _0800F27A - bl ResetBlockReceivedFlags - movs r4, 0 - lsls r0, r6, 3 - subs r0, r6 - lsls r5, r0, 2 - movs r7, 0 -_0800F1BA: - cmp r4, r6 - beq _0800F1FA - ldr r2, _0800F1DC @ =gLinkPlayers - adds r0, r7, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0800F1E0 - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800F1EC - b _0800F1FA - .align 2, 0 -_0800F1DC: .4byte gLinkPlayers -_0800F1E0: - adds r0, r5, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800F1FA -_0800F1EC: - lsls r1, r4, 8 - ldr r0, _0800F228 @ =gBlockRecvBuffer - adds r1, r0 - ldr r0, _0800F22C @ =gUnknown_02023A00 - movs r2, 0x60 - bl memcpy -_0800F1FA: - adds r7, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _0800F1BA - ldr r1, _0800F230 @ =gUnknown_02024D1E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _0800F234 @ =gMain - ldr r0, [r1, 0x8] - mov r2, r9 - str r0, [r2] - ldr r0, _0800F238 @ =gBattleTypeFlags - ldrh r0, [r0] - mov r2, r8 - strh r0, [r2] - ldr r0, _0800F23C @ =sub_800F104 - str r0, [r1, 0x8] - movs r0, 0x5 - movs r1, 0 - bl OpenPartyMenu - b _0800F27A - .align 2, 0 -_0800F228: .4byte gBlockRecvBuffer -_0800F22C: .4byte gUnknown_02023A00 -_0800F230: .4byte gUnknown_02024D1E -_0800F234: .4byte gMain -_0800F238: .4byte gBattleTypeFlags -_0800F23C: .4byte sub_800F104 -_0800F240: - ldr r0, _0800F258 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0800F27A - movs r0, 0x3 - strb r0, [r5] - bl sub_800832C - b _0800F27A - .align 2, 0 -_0800F258: .4byte gPaletteFade -_0800F25C: - ldr r0, _0800F288 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0800F27A - ldr r1, _0800F28C @ =gBattleTypeFlags - mov r2, r8 - ldrh r0, [r2] - strh r0, [r1] - ldr r1, _0800F290 @ =gMain - mov r2, r9 - ldr r0, [r2] - str r0, [r1, 0x8] - ldr r0, _0800F294 @ =sub_800E7F8 - bl SetMainCallback2 -_0800F27A: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F288: .4byte gReceivedRemoteLinkPlayers -_0800F28C: .4byte gBattleTypeFlags -_0800F290: .4byte gMain -_0800F294: .4byte sub_800E7F8 - thumb_func_end sub_800F104 - thumb_func_start sub_800F298 sub_800F298: @ 800F298 push {r4-r7,lr} diff --git a/src/battle_2.c b/src/battle_2.c index d15e10f2f..17de219ce 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -8,6 +8,7 @@ #include "pokemon.h" #include "species.h" #include "link.h" +#include "name_string_util.h" struct UnknownStruct5 { @@ -39,13 +40,31 @@ struct UnknownStruct8 u8 unk1A; }; +struct UnknownPokemonStruct2 +{ + /*0x00*/ u16 species; + /*0x02*/ u16 heldItem; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 level; + /*0x10*/ u16 hp; + /*0x12*/ u16 maxhp; + /*0x14*/ u32 status; + /*0x18*/ u32 personality; + /*0x1C*/ u8 gender; + /*0x1D*/ u8 language; +}; + extern const struct UnknownStruct5 gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) -extern u8 gUnknown_02024D1E; +#define ewram160CB (ewram[0x160CB]) + +extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; +extern u8 gUnknown_02024D1E[]; +extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is. extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B4; extern u16 gUnknown_030041B8; @@ -59,8 +78,9 @@ extern u16 gUnknown_030042A0; extern u16 gUnknown_030042A4; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; +extern MainCallback gUnknown_030042D0; extern struct UnknownStruct6 gUnknown_03004DE0; -//extern u16 gUnknown_03004DE0[][0xA0]; +//extern u16 gUnknown_03004DE0[][0xA0]; // possibly? extern u16 gBattleTypeFlags; extern u8 gBattleTerrain; extern u8 gReservedSpritePaletteCount; @@ -78,14 +98,19 @@ extern void sub_800E23C(); extern void setup_poochyena_battle(); extern void SetWildMonHeldItem(void); extern void AdjustFriendship(struct Pokemon *, u8); - +extern void sub_800DE30(u8); +extern void sub_800B950(void); +extern u8 battle_load_something(); +extern void OpenPartyMenu(); void sub_800E7F8(void); void sub_800EC9C(void); void sub_800F104(void); void sub_800F298(void); +void sub_800F808(void); void sub_800F8E8(); void sub_800FCFC(void); +void sub_8010824(void); void sub_800E7C4(void) { @@ -93,7 +118,7 @@ void sub_800E7C4(void) { sub_800B858(); SetMainCallback2(sub_800F104); - gUnknown_02024D1E = 0; + gUnknown_02024D1E[0] = 0; } else { @@ -104,7 +129,7 @@ void sub_800E7C4(void) void sub_800E7F8(void) { s32 i; - + SetHBlankCallback(NULL); SetVBlankCallback(NULL); @@ -118,7 +143,7 @@ void sub_800E7F8(void) gUnknown_030042C4 = 0xF0; gUnknown_03004240 = 0x5051; dp12_8087EA4(); - + for (i = 0; i < 80; i++) { gUnknown_03004DE0.unk0[i] = 0xF0; @@ -128,7 +153,7 @@ void sub_800E7F8(void) { asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter gUnknown_03004DE0.unk0[i] = 0xFF10; - gUnknown_03004DE0.unk780[i] = 0xFF10; + gUnknown_03004DE0.unk780[i] = 0xFF10; } sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8); SetUpWindowConfig(&gWindowConfig_81E6C58); @@ -166,7 +191,7 @@ void sub_800E7F8(void) gMain.inBattle = TRUE; for (i = 0; i < 6; i++) AdjustFriendship(&gPlayerParty[i], 3); - gUnknown_02024D1E = 0; + gUnknown_02024D1E[0] = 0; } void sub_800E9EC(void) @@ -176,23 +201,23 @@ void sub_800E9EC(void) u16 hp; u32 status; s32 i; - + for (i = 0; i < 6; i++) { species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); - + if (species == 0) continue; if (species != SPECIES_EGG && hp != 0 && status == 0) r6 |= 1 << i * 2; - + if (species == 0) continue; if (hp != 0 && (species == SPECIES_EGG || status != 0)) r6 |= 2 << i * 2; - + if (species == 0) continue; if (species != SPECIES_EGG && hp == 0) @@ -206,7 +231,7 @@ void sub_800EAAC(void) { s32 i; struct UnknownStruct8 *_ewram4 = &ewram4; - + for (i = 0; i < 7; i++) _ewram4->unk0[i] = gSaveBlock1.enigmaBerry.berry.name[i]; for (i = 0; i < 18; i++) @@ -219,7 +244,7 @@ void sub_800EB08(void) { s32 i; s32 j; - + if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) { for (i = 0; i < 7; i++) @@ -242,7 +267,7 @@ void sub_800EB08(void) s32 r8; struct BattleEnigmaBerry *src; u8 r4; - + if (gBattleTypeFlags & BATTLE_TYPE_40) r8 = 4; else @@ -251,7 +276,7 @@ void sub_800EB08(void) { src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); r4 = gLinkPlayers[i].lp_field_18; - + for (j = 0; j < 7; j++) gEnigmaBerries[r4].name[j] = src->name[j]; for (j = 0; j < 18; j++) @@ -266,7 +291,7 @@ void shedinja_something(struct Pokemon *pkmn) { u8 nickname[POKEMON_NAME_LENGTH + 1]; u8 language = 1; - + if (GetMonData(pkmn, MON_DATA_SPECIES) == SPECIES_SHEDINJA && GetMonData(pkmn, MON_DATA_LANGUAGE) != language) { @@ -278,53 +303,247 @@ void shedinja_something(struct Pokemon *pkmn) void sub_800EC9C(void) { - u8 r4; - u8 r5; - + u8 playerId; + u8 enemyId; + RunTasks(); AnimateSprites(); BuildOamBuffer(); - r4 = GetMultiplayerId(); - ewram[0x160CB] = r4; - r5 = r4 ^ 1; - switch (gUnknown_02024D1E) + playerId = GetMultiplayerId(); + ewram160CB = playerId; + enemyId = playerId ^ 1; + + switch (gUnknown_02024D1E[0]) { - case 0: - //_0800ED0C - if (gBattleTypeFlags & BATTLE_TYPE_LINK) + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) { - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) - { - ewram0.unk0 = 1; - ewram0.unk1 = 1; - sub_800E9EC(); - sub_800EAAC(); - SendBlock(bitmask_all_link_players_but_self(), &ewram0, 32); - gUnknown_02024D1E = 1; - } + ewram0.unk0 = 1; + ewram0.unk1 = 1; + sub_800E9EC(); + sub_800EAAC(); + SendBlock(bitmask_all_link_players_but_self(), &ewram0, 32); + gUnknown_02024D1E[0] = 1; } - //_0800ED64 - else + } + else + { + gBattleTypeFlags |= BATTLE_TYPE_WILD; + gUnknown_02024D1E[0] = 8; + sub_800EB08(); + } + break; + case 1: + if ((GetBlockReceivedStatus() & 3) == 3) + { + s32 r3; + u8 taskId; + + ResetBlockReceivedFlags(); + r3 = 0; + if (gBlockRecvBuffer[0][0] == 0x100) { - gBattleTypeFlags |= BATTLE_TYPE_WILD; - gUnknown_02024D1E = 8; - sub_800EB08(); + if (playerId == 0) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + r3++; } - break; - case 1: - //_0800ED7C - if ((GetBlockReceivedStatus() & 3) == 3) + if (r3 == 0) { - ResetBlockReceivedFlags(); - if (gBlockRecvBuffer[0][0] == 0x100) + if (gBlockRecvBuffer[0][0] == gBlockRecvBuffer[1][0]) { - if (r4 == 0) + if (playerId == 0) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + r3++; + } + if (r3 == 0) + { + while (r3 < 2) + { + if (gBlockRecvBuffer[r3][0] > 0x0101 && r3 != playerId) + break; + r3++; + } + if (r3 == 2) gBattleTypeFlags |= 12; else gBattleTypeFlags |= 8; } - //_0800EDBC } - break; + sub_800EB08(); + taskId = CreateTask(sub_800DE30, 0); + gTasks[taskId].data[1] = 0x10E; + gTasks[taskId].data[2] = 0x5A; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[3] = ewram0.unk2 | (ewram0.unk3 << 8); + gTasks[taskId].data[4] = gBlockRecvBuffer[enemyId][1]; + gUnknown_02024D1E[0]++; + } + break; + case 2: + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(*gPlayerParty) * 2); + gUnknown_02024D1E[0]++; + } + break; + case 3: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty, gBlockRecvBuffer[enemyId], sizeof(*gEnemyParty) * 2); + gUnknown_02024D1E[0]++; + } + break; + case 4: + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(*gPlayerParty) * 2); + gUnknown_02024D1E[0]++; + } + break; + case 5: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty + 2, gBlockRecvBuffer[enemyId], sizeof(*gEnemyParty) * 2); + gUnknown_02024D1E[0]++; + } + break; + case 6: + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(*gPlayerParty) * 2); + gUnknown_02024D1E[0]++; + } + break; + case 7: + if ((GetBlockReceivedStatus() & 3) == 3) + { + ResetBlockReceivedFlags(); + memcpy(gEnemyParty + 4, gBlockRecvBuffer[enemyId], sizeof(*gEnemyParty) * 2); + shedinja_something(&gEnemyParty[0]); + shedinja_something(&gEnemyParty[1]); + shedinja_something(&gEnemyParty[2]); + shedinja_something(&gEnemyParty[3]); + shedinja_something(&gEnemyParty[4]); + shedinja_something(&gEnemyParty[5]); + gUnknown_02024D1E[0]++; + } + break; + case 8: + sub_800B950(); + gUnknown_02024D1E[0]++; + gUnknown_02024D1E[1] = 0; + gUnknown_02024D1E[2] = 0; + break; + case 9: + if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) + { + gUnknown_030042D0 = gMain.callback1; + gMain.callback1 = sub_8010824; + SetMainCallback2(sub_800F808); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTrainerBattleOpponent = 0x800; + gBattleTypeFlags |= BATTLE_TYPE_20; + } + } + break; } -} \ No newline at end of file +} + +void sub_800F02C(void) +{ + s32 i; + + for (i = 0; i < 3; i++) + { + u8 *nickname = gUnknown_02023A00[i].nickname; + + gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); + gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); + GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nickname); + gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL); + gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); + gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); + gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[i]); + StripExtCtrlCodes(nickname); + gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE); + if (gUnknown_02023A00[i].language != 1) + PadNameString(nickname, 0); + } + memcpy(ewram, gUnknown_02023A00, 0x60); +} + +void sub_800F104(void) +{ + u8 playerId; + MainCallback *pSavedCallback; + u16 *pSavedBattleTypeFlags; + + playerId = GetMultiplayerId(); + ewram160CB = playerId; + // Seriously, Game Freak? + pSavedCallback = (MainCallback *)(ewram + 0x160C4); + pSavedBattleTypeFlags = (u16 *)(ewram + 0x160C2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + + switch (gUnknown_02024D1E[0]) + { + case 0: + if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + { + sub_800F02C(); + SendBlock(bitmask_all_link_players_but_self(), ewram, 0x60); + gUnknown_02024D1E[0]++; + } + break; + case 1: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + s32 i; + + ResetBlockReceivedFlags(); + for (i = 0; i < 4; i++) + { + if (i != playerId) + { + if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) + || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) + memcpy(gUnknown_02023A00, gBlockRecvBuffer[i], 0x60); + } + } + gUnknown_02024D1E[0]++; + *pSavedCallback = gMain.savedCallback; + *pSavedBattleTypeFlags = gBattleTypeFlags; + gMain.savedCallback = sub_800F104; + OpenPartyMenu(5, 0); + } + break; + case 2: + if (!gPaletteFade.active) + { + gUnknown_02024D1E[0] = 3; + sub_800832C(); + } + break; + case 3: + if (gReceivedRemoteLinkPlayers == 0) + { + gBattleTypeFlags = *pSavedBattleTypeFlags; + gMain.savedCallback = *pSavedCallback; + SetMainCallback2(sub_800E7F8); + } + break; + } +} -- cgit v1.2.3 From 72c958444f0cf3d3dfb2b5be797d7946e25cb38a Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 May 2017 16:56:25 -0500 Subject: BATTLE_TYPE_40 -> BATTLE_TYPE_MULTI --- src/battle_2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/battle_2.c b/src/battle_2.c index 17de219ce..f623b3da2 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -114,7 +114,7 @@ void sub_8010824(void); void sub_800E7C4(void) { - if (gBattleTypeFlags & BATTLE_TYPE_40) + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { sub_800B858(); SetMainCallback2(sub_800F104); @@ -179,7 +179,7 @@ void sub_800E7F8(void) gReservedSpritePaletteCount = 4; SetVBlankCallback(sub_800FCFC); setup_poochyena_battle(); - if (gBattleTypeFlags & BATTLE_TYPE_40) + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) SetMainCallback2(sub_800F298); else SetMainCallback2(sub_800EC9C); @@ -268,7 +268,7 @@ void sub_800EB08(void) struct BattleEnigmaBerry *src; u8 r4; - if (gBattleTypeFlags & BATTLE_TYPE_40) + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) r8 = 4; else r8 = 2; -- cgit v1.2.3 From 39cbc4280c7a828c6f458a411a3c41748edb0695 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 May 2017 21:31:28 -0500 Subject: decompile sub_800F298 --- asm/battle_2.s | 690 --------------------------------------------------------- src/battle_2.c | 297 +++++++++++++++++++++++-- 2 files changed, 283 insertions(+), 704 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 300c53114..22ede0c37 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,696 +6,6 @@ .text - thumb_func_start sub_800F298 -sub_800F298: @ 800F298 - push {r4-r7,lr} - mov r7, r8 - push {r7} - bl GetMultiplayerId - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0800F2D0 @ =0x02000000 - ldr r1, _0800F2D4 @ =0x000160cb - adds r0, r1 - strb r6, [r0] - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _0800F2D8 @ =gUnknown_02024D1E - ldrb r0, [r0] - cmp r0, 0x7 - bls _0800F2C4 - b _0800F7E0 -_0800F2C4: - lsls r0, 2 - ldr r1, _0800F2DC @ =_0800F2E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0800F2D0: .4byte 0x02000000 -_0800F2D4: .4byte 0x000160cb -_0800F2D8: .4byte gUnknown_02024D1E -_0800F2DC: .4byte _0800F2E0 - .align 2, 0 -_0800F2E0: - .4byte _0800F300 - .4byte _0800F340 - .4byte _0800F4DE - .4byte _0800F504 - .4byte _0800F5F8 - .4byte _0800F61C - .4byte _0800F78C - .4byte _0800F7A4 -_0800F300: - ldr r0, _0800F338 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _0800F30A - b _0800F7E0 -_0800F30A: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0800F316 - b _0800F7E0 -_0800F316: - ldr r4, _0800F33C @ =0x02000000 - movs r0, 0x1 - strb r0, [r4] - strb r0, [r4, 0x1] - bl sub_800E9EC - bl sub_800EAAC - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - movs r2, 0x20 - bl SendBlock - b _0800F770 - .align 2, 0 -_0800F338: .4byte gReceivedRemoteLinkPlayers -_0800F33C: .4byte 0x02000000 -_0800F340: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _0800F34E - b _0800F7E0 -_0800F34E: - bl ResetBlockReceivedFlags - movs r4, 0 - ldr r0, _0800F36C @ =gBlockRecvBuffer - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bne _0800F380 - cmp r6, 0 - bne _0800F374 - ldr r0, _0800F370 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0xC - b _0800F37A - .align 2, 0 -_0800F36C: .4byte gBlockRecvBuffer -_0800F370: .4byte gBattleTypeFlags -_0800F374: - ldr r0, _0800F3B0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0x8 -_0800F37A: - orrs r1, r2 - strh r1, [r0] - adds r4, 0x1 -_0800F380: - cmp r4, 0 - bne _0800F41C - movs r2, 0 - ldr r1, _0800F3B4 @ =gBlockRecvBuffer - adds r5, r1, 0 - movs r3, 0x80 - lsls r3, 1 -_0800F38E: - adds r1, r3 - adds r2, 0x1 - cmp r2, 0x3 - bgt _0800F39E - ldrh r0, [r5] - ldrh r7, [r1] - cmp r0, r7 - beq _0800F38E -_0800F39E: - cmp r2, 0x4 - bne _0800F3C4 - cmp r6, 0 - bne _0800F3B8 - ldr r0, _0800F3B0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0xC - b _0800F3BE - .align 2, 0 -_0800F3B0: .4byte gBattleTypeFlags -_0800F3B4: .4byte gBlockRecvBuffer -_0800F3B8: - ldr r0, _0800F408 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r2, 0x8 -_0800F3BE: - orrs r1, r2 - strh r1, [r0] - adds r4, 0x1 -_0800F3C4: - cmp r4, 0 - bne _0800F41C - ldr r0, _0800F40C @ =gBlockRecvBuffer - ldrh r2, [r0] - ldr r1, _0800F410 @ =0x00000101 - adds r3, r0, 0 - ldr r5, _0800F408 @ =gBattleTypeFlags - cmp r2, r1 - beq _0800F3F6 -_0800F3D6: - lsls r0, r4, 8 - adds r0, r3 - ldrh r0, [r0] - ldr r1, _0800F410 @ =0x00000101 - cmp r0, r1 - bls _0800F3E6 - cmp r4, r6 - bne _0800F3FE -_0800F3E6: - adds r4, 0x1 - cmp r4, 0x3 - bgt _0800F3FE - lsls r0, r4, 8 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r1 - bne _0800F3D6 -_0800F3F6: - cmp r4, r6 - beq _0800F3D6 - cmp r4, r6 - bge _0800F3D6 -_0800F3FE: - cmp r4, 0x4 - bne _0800F414 - ldrh r0, [r5] - movs r1, 0xC - b _0800F418 - .align 2, 0 -_0800F408: .4byte gBattleTypeFlags -_0800F40C: .4byte gBlockRecvBuffer -_0800F410: .4byte 0x00000101 -_0800F414: - ldrh r0, [r5] - movs r1, 0x8 -_0800F418: - orrs r0, r1 - strh r0, [r5] -_0800F41C: - bl sub_800EB08 - ldr r0, _0800F474 @ =0x0201d000 - ldr r1, _0800F478 @ =gPlayerParty - movs r2, 0x96 - lsls r2, 1 - bl memcpy - ldr r0, _0800F47C @ =sub_800DE30 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0800F480 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - movs r0, 0x87 - lsls r0, 1 - strh r0, [r1, 0xA] - movs r0, 0x5A - strh r0, [r1, 0xC] - strh r2, [r1, 0x12] - strh r2, [r1, 0xE] - strh r2, [r1, 0x10] - adds r2, r1, 0 - ldr r0, _0800F484 @ =gBlockRecvBuffer - adds r3, r0, 0x2 - ldr r6, _0800F488 @ =gLinkPlayers - movs r5, 0x3F - movs r7, 0x80 - lsls r7, 1 - movs r4, 0x3 -_0800F464: - ldrh r0, [r6, 0x18] - cmp r0, 0x1 - beq _0800F49E - cmp r0, 0x1 - bgt _0800F48C - cmp r0, 0 - beq _0800F496 - b _0800F4C4 - .align 2, 0 -_0800F474: .4byte 0x0201d000 -_0800F478: .4byte gPlayerParty -_0800F47C: .4byte sub_800DE30 -_0800F480: .4byte gTasks -_0800F484: .4byte gBlockRecvBuffer -_0800F488: .4byte gLinkPlayers -_0800F48C: - cmp r0, 0x2 - beq _0800F4A6 - cmp r0, 0x3 - beq _0800F4B6 - b _0800F4C4 -_0800F496: - ldrh r0, [r3] - adds r1, r5, 0 - ands r1, r0 - b _0800F4AE -_0800F49E: - ldrh r0, [r3] - adds r1, r5, 0 - ands r1, r0 - b _0800F4BE -_0800F4A6: - ldrh r0, [r3] - adds r1, r5, 0 - ands r1, r0 - lsls r1, 6 -_0800F4AE: - ldrh r0, [r2, 0xE] - orrs r1, r0 - strh r1, [r2, 0xE] - b _0800F4C4 -_0800F4B6: - ldrh r0, [r3] - adds r1, r5, 0 - ands r1, r0 - lsls r1, 6 -_0800F4BE: - ldrh r0, [r2, 0x10] - orrs r1, r0 - strh r1, [r2, 0x10] -_0800F4C4: - adds r3, r7 - adds r6, 0x1C - subs r4, 0x1 - cmp r4, 0 - bge _0800F464 - bl ZeroPlayerPartyMons - bl ZeroEnemyPartyMons - ldr r1, _0800F4FC @ =gUnknown_02024D1E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_0800F4DE: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0800F4EA - b _0800F7E0 -_0800F4EA: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800F500 @ =0x0201d000 - movs r2, 0xC8 - bl SendBlock - b _0800F770 - .align 2, 0 -_0800F4FC: .4byte gUnknown_02024D1E -_0800F500: .4byte 0x0201d000 -_0800F504: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _0800F512 - b _0800F7E0 -_0800F512: - bl ResetBlockReceivedFlags - movs r4, 0 - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - mov r8, r0 - ldr r5, _0800F53C @ =gBlockRecvBuffer - movs r7, 0 -_0800F524: - cmp r4, r6 - bne _0800F558 - ldr r0, _0800F540 @ =gLinkPlayers - adds r0, r7, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0800F544 - cmp r0, 0x1 - bge _0800F550 - cmp r0, 0 - beq _0800F548 - b _0800F5E2 - .align 2, 0 -_0800F53C: .4byte gBlockRecvBuffer -_0800F540: .4byte gLinkPlayers -_0800F544: - cmp r0, 0x3 - bne _0800F5E2 -_0800F548: - ldr r0, _0800F54C @ =gPlayerParty - b _0800F5C8 - .align 2, 0 -_0800F54C: .4byte gPlayerParty -_0800F550: - ldr r0, _0800F554 @ =gPlayerParty + 3 * 0x64 - b _0800F5C8 - .align 2, 0 -_0800F554: .4byte gPlayerParty + 3 * 0x64 -_0800F558: - ldr r2, _0800F578 @ =gLinkPlayers - adds r0, r7, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0800F57C - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800F58A - b _0800F5B0 - .align 2, 0 -_0800F578: .4byte gLinkPlayers -_0800F57C: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800F5B0 -_0800F58A: - adds r0, r7, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _0800F59C - cmp r2, 0x1 - bge _0800F5A8 - cmp r2, 0 - beq _0800F5A0 - b _0800F5E2 -_0800F59C: - cmp r2, 0x3 - bne _0800F5E2 -_0800F5A0: - ldr r0, _0800F5A4 @ =gPlayerParty - b _0800F5C8 - .align 2, 0 -_0800F5A4: .4byte gPlayerParty -_0800F5A8: - ldr r0, _0800F5AC @ =gPlayerParty + 3 * 0x64 - b _0800F5C8 - .align 2, 0 -_0800F5AC: .4byte gPlayerParty + 3 * 0x64 -_0800F5B0: - adds r0, r7, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _0800F5C2 - cmp r2, 0x1 - bge _0800F5D8 - cmp r2, 0 - beq _0800F5C6 - b _0800F5E2 -_0800F5C2: - cmp r2, 0x3 - bne _0800F5E2 -_0800F5C6: - ldr r0, _0800F5D4 @ =gEnemyParty -_0800F5C8: - adds r1, r5, 0 - movs r2, 0xC8 - bl memcpy - b _0800F5E2 - .align 2, 0 -_0800F5D4: .4byte gEnemyParty -_0800F5D8: - ldr r0, _0800F5F4 @ =gEnemyParty + 3 * 0x64 - adds r1, r5, 0 - movs r2, 0xC8 - bl memcpy -_0800F5E2: - movs r0, 0x80 - lsls r0, 1 - adds r5, r0 - adds r7, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _0800F524 - b _0800F770 - .align 2, 0 -_0800F5F4: .4byte gEnemyParty + 3 * 0x64 -_0800F5F8: - bl sub_8007ECC - lsls r0, 24 - cmp r0, 0 - bne _0800F604 - b _0800F7E0 -_0800F604: - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0800F618 @ =0x0201d0c8 - movs r2, 0x64 - bl SendBlock - b _0800F770 - .align 2, 0 -_0800F618: .4byte 0x0201d0c8 -_0800F61C: - bl GetBlockReceivedStatus - movs r1, 0xF - ands r1, r0 - cmp r1, 0xF - beq _0800F62A - b _0800F7E0 -_0800F62A: - bl ResetBlockReceivedFlags - movs r4, 0 - lsls r0, r6, 3 - subs r0, r6 - lsls r0, 2 - mov r8, r0 - ldr r5, _0800F654 @ =gBlockRecvBuffer - movs r7, 0 -_0800F63C: - cmp r4, r6 - bne _0800F670 - ldr r0, _0800F658 @ =gLinkPlayers - adds r0, r7, r0 - ldrh r0, [r0, 0x18] - cmp r0, 0x2 - bgt _0800F65C - cmp r0, 0x1 - bge _0800F668 - cmp r0, 0 - beq _0800F660 - b _0800F6FA - .align 2, 0 -_0800F654: .4byte gBlockRecvBuffer -_0800F658: .4byte gLinkPlayers -_0800F65C: - cmp r0, 0x3 - bne _0800F6FA -_0800F660: - ldr r0, _0800F664 @ =gPlayerParty + 2 * 0x64 - b _0800F6E0 - .align 2, 0 -_0800F664: .4byte gPlayerParty + 2 * 0x64 -_0800F668: - ldr r0, _0800F66C @ =gPlayerParty + 5 * 0x64 - b _0800F6E0 - .align 2, 0 -_0800F66C: .4byte gPlayerParty + 5 * 0x64 -_0800F670: - ldr r2, _0800F690 @ =gLinkPlayers - adds r0, r7, r2 - ldrh r1, [r0, 0x18] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0800F694 - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800F6A2 - b _0800F6C8 - .align 2, 0 -_0800F690: .4byte gLinkPlayers -_0800F694: - mov r1, r8 - adds r0, r1, r2 - ldrh r1, [r0, 0x18] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0800F6C8 -_0800F6A2: - adds r0, r7, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _0800F6B4 - cmp r2, 0x1 - bge _0800F6C0 - cmp r2, 0 - beq _0800F6B8 - b _0800F6FA -_0800F6B4: - cmp r2, 0x3 - bne _0800F6FA -_0800F6B8: - ldr r0, _0800F6BC @ =gPlayerParty + 2 * 0x64 - b _0800F6E0 - .align 2, 0 -_0800F6BC: .4byte gPlayerParty + 2 * 0x64 -_0800F6C0: - ldr r0, _0800F6C4 @ =gPlayerParty + 5 * 0x64 - b _0800F6E0 - .align 2, 0 -_0800F6C4: .4byte gPlayerParty + 5 * 0x64 -_0800F6C8: - adds r0, r7, r2 - ldrh r2, [r0, 0x18] - cmp r2, 0x2 - bgt _0800F6DA - cmp r2, 0x1 - bge _0800F6F0 - cmp r2, 0 - beq _0800F6DE - b _0800F6FA -_0800F6DA: - cmp r2, 0x3 - bne _0800F6FA -_0800F6DE: - ldr r0, _0800F6EC @ =gEnemyParty + 2 * 0x64 -_0800F6E0: - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - b _0800F6FA - .align 2, 0 -_0800F6EC: .4byte gEnemyParty + 2 * 0x64 -_0800F6F0: - ldr r0, _0800F77C @ =gEnemyParty + 5 * 0x64 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy -_0800F6FA: - movs r0, 0x80 - lsls r0, 1 - adds r5, r0 - adds r7, 0x1C - adds r4, 0x1 - cmp r4, 0x3 - ble _0800F63C - ldr r4, _0800F780 @ =gPlayerParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - movs r7, 0xC8 - lsls r7, 1 - adds r0, r4, r7 - bl shedinja_something - movs r1, 0xFA - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - ldr r4, _0800F784 @ =gEnemyParty - adds r0, r4, 0 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0x64 - bl shedinja_something - adds r0, r4, 0 - adds r0, 0xC8 - bl shedinja_something - subs r7, 0x64 - adds r0, r4, r7 - bl shedinja_something - movs r1, 0xC8 - lsls r1, 1 - adds r0, r4, r1 - bl shedinja_something - adds r7, 0xC8 - adds r0, r4, r7 - bl shedinja_something -_0800F770: - ldr r1, _0800F788 @ =gUnknown_02024D1E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0800F7E0 - .align 2, 0 -_0800F77C: .4byte gEnemyParty + 5 * 0x64 -_0800F780: .4byte gPlayerParty -_0800F784: .4byte gEnemyParty -_0800F788: .4byte gUnknown_02024D1E -_0800F78C: - bl sub_800B950 - ldr r0, _0800F7A0 @ =gUnknown_02024D1E - ldrb r1, [r0] - adds r1, 0x1 - movs r2, 0 - strb r1, [r0] - strb r2, [r0, 0x1] - strb r2, [r0, 0x2] - b _0800F7E0 - .align 2, 0 -_0800F7A0: .4byte gUnknown_02024D1E -_0800F7A4: - ldr r0, _0800F7EC @ =gUnknown_02024D1F - adds r1, r0, 0x1 - bl battle_load_something - lsls r0, 24 - cmp r0, 0 - beq _0800F7E0 - ldr r2, _0800F7F0 @ =gUnknown_030042D0 - ldr r1, _0800F7F4 @ =gMain - ldr r0, [r1] - str r0, [r2] - ldr r0, _0800F7F8 @ =sub_8010824 - str r0, [r1] - ldr r0, _0800F7FC @ =sub_800F808 - bl SetMainCallback2 - ldr r3, _0800F800 @ =gBattleTypeFlags - ldrh r2, [r3] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0800F7E0 - ldr r1, _0800F804 @ =gTrainerBattleOpponent - movs r4, 0x80 - lsls r4, 4 - adds r0, r4, 0 - strh r0, [r1] - movs r0, 0x20 - orrs r0, r2 - strh r0, [r3] -_0800F7E0: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800F7EC: .4byte gUnknown_02024D1F -_0800F7F0: .4byte gUnknown_030042D0 -_0800F7F4: .4byte gMain -_0800F7F8: .4byte sub_8010824 -_0800F7FC: .4byte sub_800F808 -_0800F800: .4byte gBattleTypeFlags -_0800F804: .4byte gTrainerBattleOpponent - thumb_func_end sub_800F298 - thumb_func_start sub_800F808 sub_800F808: @ 800F808 push {lr} diff --git a/src/battle_2.c b/src/battle_2.c index f623b3da2..019d463fd 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -61,6 +61,7 @@ extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) #define ewram160CB (ewram[0x160CB]) +#define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000)) extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; extern u8 gUnknown_02024D1E[]; @@ -264,15 +265,15 @@ void sub_800EB08(void) } else { - s32 r8; + s32 numPlayers; struct BattleEnigmaBerry *src; u8 r4; if (gBattleTypeFlags & BATTLE_TYPE_MULTI) - r8 = 4; + numPlayers = 4; else - r8 = 2; - for (i = 0; i < r8; i++) + numPlayers = 2; + for (i = 0; i < numPlayers; i++) { src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); r4 = gLinkPlayers[i].lp_field_18; @@ -338,20 +339,20 @@ void sub_800EC9C(void) case 1: if ((GetBlockReceivedStatus() & 3) == 3) { - s32 r3; + s32 id; u8 taskId; ResetBlockReceivedFlags(); - r3 = 0; + id = 0; if (gBlockRecvBuffer[0][0] == 0x100) { if (playerId == 0) gBattleTypeFlags |= 12; else gBattleTypeFlags |= 8; - r3++; + id++; } - if (r3 == 0) + if (id == 0) { if (gBlockRecvBuffer[0][0] == gBlockRecvBuffer[1][0]) { @@ -359,17 +360,17 @@ void sub_800EC9C(void) gBattleTypeFlags |= 12; else gBattleTypeFlags |= 8; - r3++; + id++; } - if (r3 == 0) + if (id == 0) { - while (r3 < 2) + while (id < 2) { - if (gBlockRecvBuffer[r3][0] > 0x0101 && r3 != playerId) + if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId) break; - r3++; + id++; } - if (r3 == 2) + if (id == 2) gBattleTypeFlags |= 12; else gBattleTypeFlags |= 8; @@ -547,3 +548,271 @@ void sub_800F104(void) break; } } + +void sub_800F298(void) +{ + u8 playerId; + s32 id; + + playerId = GetMultiplayerId(); + ewram160CB = playerId; + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + switch (gUnknown_02024D1E[0]) + { + case 0: + if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + { + ewram0.unk0 = 1; + ewram0.unk1 = 1; + sub_800E9EC(); + sub_800EAAC(); + SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20); + gUnknown_02024D1E[0]++; + } + break; + case 1: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + u8 taskId; + + ResetBlockReceivedFlags(); + id = 0; + if (gBlockRecvBuffer[0][0] == 0x100) + { + if (playerId == 0) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + id++; + } + if (id == 0) + { + s32 i; + + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0]) + break; + } + if (i == MAX_LINK_PLAYERS) + { + if (playerId == 0) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + id++; + } + if (id == 0) + { + while (id < MAX_LINK_PLAYERS) + { + if (gBlockRecvBuffer[id][0] == 0x0101 && id != playerId) + if (id < playerId) + break; + if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId) + break; + id++; + } + if (id == MAX_LINK_PLAYERS) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + } + } + sub_800EB08(); + memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3); + taskId = CreateTask(sub_800DE30, 0); + gTasks[taskId].data[1] = 0x10E; + gTasks[taskId].data[2] = 0x5A; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 1: + gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 2: + gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; + case 3: + gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; + } + } + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + gUnknown_02024D1E[0]++; + goto step_2; + } + break; + case 2: + step_2: + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2); + gUnknown_02024D1E[0]++; + } + break; + case 3: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + if (id == playerId) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + else + { + if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) + || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + else + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + } + } + } + } + gUnknown_02024D1E[0]++; + } + break; + case 4: + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon)); + gUnknown_02024D1E[0]++; + } + break; + case 5: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + if (id == playerId) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + else + { + if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) + || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + else + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + } + } + + shedinja_something(&gPlayerParty[0]); + shedinja_something(&gPlayerParty[1]); + shedinja_something(&gPlayerParty[2]); + shedinja_something(&gPlayerParty[3]); + shedinja_something(&gPlayerParty[4]); + shedinja_something(&gPlayerParty[5]); + + shedinja_something(&gEnemyParty[0]); + shedinja_something(&gEnemyParty[1]); + shedinja_something(&gEnemyParty[2]); + shedinja_something(&gEnemyParty[3]); + shedinja_something(&gEnemyParty[4]); + shedinja_something(&gEnemyParty[5]); + + gUnknown_02024D1E[0]++; + } + break; + case 6: + sub_800B950(); + gUnknown_02024D1E[0]++; + gUnknown_02024D1E[1] = 0; + gUnknown_02024D1E[2] = 0; + break; + case 7: + if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) + { + gUnknown_030042D0 = gMain.callback1; + gMain.callback1 = sub_8010824; + SetMainCallback2(sub_800F808); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTrainerBattleOpponent = 0x800; + gBattleTypeFlags |= BATTLE_TYPE_20; + } + } + break; + } +} -- cgit v1.2.3 From 00716b43945e530c5b58322c778c2c25d238e950 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 10 May 2017 22:12:56 -0500 Subject: decompile more --- asm/battle_2.s | 121 --------------------------------------------------------- src/battle_2.c | 61 +++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 121 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 22ede0c37..f21399d8c 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,127 +6,6 @@ .text - thumb_func_start sub_800F808 -sub_800F808: @ 800F808 - push {lr} - bl AnimateSprites - bl BuildOamBuffer - ldr r0, _0800F824 @ =gUnknown_03004210 - bl sub_800374C - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - .align 2, 0 -_0800F824: .4byte gUnknown_03004210 - thumb_func_end sub_800F808 - - thumb_func_start sub_800F828 -sub_800F828: @ 800F828 - movs r1, 0 - strh r1, [r0, 0x2E] - ldr r1, _0800F834 @ =sub_800F838 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_0800F834: .4byte sub_800F838 - thumb_func_end sub_800F828 - - thumb_func_start sub_800F838 -sub_800F838: @ 800F838 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r5, _0800F850 @ =0x02000000 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0x1 - beq _0800F86C - cmp r1, 0x1 - bgt _0800F854 - cmp r1, 0 - beq _0800F85A - b _0800F8DC - .align 2, 0 -_0800F850: .4byte 0x02000000 -_0800F854: - cmp r1, 0x2 - beq _0800F8C8 - b _0800F8DC -_0800F85A: - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - strh r1, [r3, 0x30] - ldr r0, _0800F8C4 @ =0x00000281 - strh r0, [r3, 0x32] - strh r1, [r3, 0x34] - movs r0, 0x1 - strh r0, [r3, 0x36] -_0800F86C: - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _0800F8DC - movs r0, 0x2 - strh r0, [r3, 0x36] - movs r4, 0x30 - ldrsh r2, [r3, r4] - movs r0, 0x34 - ldrsh r1, [r3, r0] - lsls r1, 5 - adds r2, r1 - movs r4, 0x32 - ldrsh r0, [r3, r4] - subs r0, r1 - movs r4, 0x3D - lsls r0, 1 - adds r0, r5 - lsls r2, 1 - adds r2, r5 - movs r1, 0x1C -_0800F89A: - strh r4, [r2] - strh r4, [r0] - adds r0, 0x4 - adds r2, 0x4 - subs r1, 0x2 - cmp r1, 0 - bge _0800F89A - ldrh r0, [r3, 0x34] - adds r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x15 - bne _0800F8DC - ldrh r0, [r3, 0x2E] - adds r0, 0x1 - strh r0, [r3, 0x2E] - movs r0, 0x20 - strh r0, [r3, 0x30] - b _0800F8DC - .align 2, 0 -_0800F8C4: .4byte 0x00000281 -_0800F8C8: - ldrh r0, [r3, 0x30] - subs r0, 0x1 - strh r0, [r3, 0x30] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x14 - bne _0800F8DC - ldr r0, _0800F8E4 @ =sub_800E7C4 - bl SetMainCallback2 -_0800F8DC: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800F8E4: .4byte sub_800E7C4 - thumb_func_end sub_800F838 - thumb_func_start sub_800F8E8 sub_800F8E8: @ 800F8E8 push {r4-r7,lr} diff --git a/src/battle_2.c b/src/battle_2.c index 019d463fd..9a7011e35 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -109,6 +109,7 @@ void sub_800EC9C(void); void sub_800F104(void); void sub_800F298(void); void sub_800F808(void); +void sub_800F838(struct Sprite *); void sub_800F8E8(); void sub_800FCFC(void); void sub_8010824(void); @@ -816,3 +817,63 @@ void sub_800F298(void) break; } } + +void sub_800F808(void) +{ + AnimateSprites(); + BuildOamBuffer(); + sub_800374C(&gUnknown_03004210); + UpdatePaletteFade(); + RunTasks(); +} + +void sub_800F828(struct Sprite *sprite) +{ + sprite->data0 = 0; + sprite->callback = sub_800F838; +} + +void sub_800F838(struct Sprite *sprite) +{ + u16 *arr = (u16 *)ewram; + + switch (sprite->data0) + { + case 0: + sprite->data0++; + sprite->data1 = 0; + sprite->data2 = 0x281; + sprite->data3 = 0; + sprite->data4 = 1; + // fall through + case 1: + sprite->data4--; + if (sprite->data4 == 0) + { + s32 i; + s32 r2; + s32 r0; + + sprite->data4 = 2; + r2 = sprite->data1 + sprite->data3 * 32; + r0 = sprite->data2 - sprite->data3 * 32; + for (i = 0; i < 29; i += 2) + { + arr[r2 + i] = 0x3D; + arr[r0 + i] = 0x3D; + } + sprite->data3++; + if (sprite->data3 == 21) + { + sprite->data0++; + sprite->data1 = 32; + } + } + break; + case 2: + sprite->data1--; + if (sprite->data1 == 20) + SetMainCallback2(sub_800E7C4); + break; + } +} \ No newline at end of file -- cgit v1.2.3 From e584ecba5a96f19bdcd8b2767a952429b102178a Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 11 May 2017 00:03:43 -0500 Subject: decompile CreateNPCTrainerParty --- asm/battle_2.s | 512 --------------------------------------------------------- src/battle_2.c | 108 +++++++++++- 2 files changed, 103 insertions(+), 517 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index f21399d8c..f1c865a49 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,518 +6,6 @@ .text - thumb_func_start sub_800F8E8 -sub_800F8E8: @ 800F8E8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r0, [sp, 0x10] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x14] - movs r0, 0 - mov r9, r0 - movs r0, 0x80 - lsls r0, 3 - cmp r1, r0 - bne _0800F90C - movs r0, 0 - b _0800FCB4 -_0800F90C: - ldr r0, _0800F93C @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r0, _0800F940 @ =0x00000908 - ands r0, r1 - ldr r1, [sp, 0x14] - lsls r1, 2 - str r1, [sp, 0x20] - cmp r0, 0x8 - beq _0800F920 - b _0800FCA4 -_0800F920: - bl ZeroEnemyPartyMons - movs r2, 0 - str r2, [sp, 0x18] - ldr r2, _0800F944 @ =gTrainers - ldr r1, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r0, 3 - adds r0, r2 - adds r0, 0x20 - ldr r4, [sp, 0x18] - b _0800FC86 - .align 2, 0 -_0800F93C: .4byte gBattleTypeFlags -_0800F940: .4byte 0x00000908 -_0800F944: .4byte gTrainers -_0800F948: - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r0, 3 - adds r1, r0, r2 - ldrb r0, [r1, 0x18] - cmp r0, 0x1 - bne _0800F95C - movs r4, 0x80 - mov r10, r4 - b _0800F96E -_0800F95C: - ldrb r1, [r1, 0x2] - movs r0, 0x80 - ands r0, r1 - movs r1, 0x88 - mov r10, r1 - cmp r0, 0 - beq _0800F96E - movs r2, 0x78 - mov r10, r2 -_0800F96E: - movs r6, 0 - ldr r0, _0800F9C4 @ =gTrainers - ldr r2, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r1, r2, r3 - lsls r1, 3 - adds r3, r0, 0x4 - adds r1, r3 - ldrb r1, [r1] - adds r4, r0, 0 - ldr r0, [sp, 0x18] - adds r0, 0x1 - str r0, [sp, 0x1C] - cmp r1, 0xFF - beq _0800F9A6 -_0800F98C: - ldr r0, [sp, 0x14] - adds r1, r2, r0 - lsls r1, 3 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0800F98C -_0800F9A6: - adds r2, r4, 0 - ldr r1, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r1, r0, 3 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0800FA5C - cmp r0, 0x1 - bgt _0800F9C8 - cmp r0, 0 - beq _0800F9D6 - b _0800FC74 - .align 2, 0 -_0800F9C4: .4byte gTrainers -_0800F9C8: - cmp r0, 0x2 - bne _0800F9CE - b _0800FB1C -_0800F9CE: - cmp r0, 0x3 - bne _0800F9D4 - b _0800FBB0 -_0800F9D4: - b _0800FC74 -_0800F9D6: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r0, [sp, 0x18] - lsls r2, r0, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _0800FA58 @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _0800FA18 - adds r3, r1, 0 - movs r7, 0xB -_0800F9FC: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0800F9FC -_0800FA18: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r4, r5, r4 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r1, 0x64 - adds r0, r3, 0 - muls r0, r1 - ldr r2, [sp, 0x10] - adds r0, r2, r0 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r3, 0x1 - str r3, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r3, 0x2 - str r3, [sp, 0x8] - movs r3, 0 - str r3, [sp, 0xC] - adds r3, r6, 0 - bl CreateMon - b _0800FC74 - .align 2, 0 -_0800FA58: .4byte gSpeciesNames -_0800FA5C: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _0800FB14 @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _0800FA9E - adds r3, r1, 0 - movs r4, 0xB -_0800FA82: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0800FA82 -_0800FA9E: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r4, r3, r7 - ldrh r1, [r4] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r5, r0, 0 - muls r5, r1 - ldr r2, [sp, 0x10] - adds r5, r2, r5 - ldrh r1, [r4, 0x4] - ldrb r2, [r4, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r5, 0 - adds r3, r6, 0 - bl CreateMon - movs r6, 0 - mov r0, r8 - adds r0, 0x6 - adds r4, r7, r0 -_0800FAE8: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, _0800FB18 @ =gBattleMoves + 0x4 @ PP offset - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0800FAE8 - b _0800FC74 - .align 2, 0 -_0800FB14: .4byte gSpeciesNames -_0800FB18: .4byte gBattleMoves + 0x4 @ PP offset -_0800FB1C: - adds r0, r2, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r4, [r0] - movs r6, 0 - ldr r0, [sp, 0x18] - lsls r2, r0, 3 - adds r0, r2, r4 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _0800FBAC @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - adds r5, r2, 0 - cmp r0, 0xFF - beq _0800FB5E - adds r3, r1, 0 - movs r7, 0xB -_0800FB42: - adds r0, r2, r4 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r7 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0800FB42 -_0800FB5E: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - adds r5, r4 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - movs r0, 0x64 - adds r4, r3, 0 - muls r4, r0 - ldr r1, [sp, 0x10] - adds r4, r1, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - b _0800FC74 - .align 2, 0 -_0800FBAC: .4byte gSpeciesNames -_0800FBB0: - adds r0, r4, 0 - adds r0, 0x24 - adds r0, r1, r0 - ldr r7, [r0] - movs r6, 0 - ldr r4, [sp, 0x18] - lsls r2, r4, 4 - adds r0, r2, r7 - ldrh r1, [r0, 0x4] - movs r0, 0xB - muls r0, r1 - ldr r1, _0800FCC4 @ =gSpeciesNames - adds r0, r1 - ldrb r0, [r0] - mov r8, r2 - cmp r0, 0xFF - beq _0800FBF2 - adds r3, r1, 0 - movs r4, 0xB -_0800FBD6: - adds r0, r2, r7 - ldrh r0, [r0, 0x4] - adds r1, r0, 0 - muls r1, r4 - adds r0, r6, r1 - adds r0, r3 - ldrb r0, [r0] - add r9, r0 - adds r6, 0x1 - adds r1, r6, r1 - adds r1, r3 - ldrb r0, [r1] - cmp r0, 0xFF - bne _0800FBD6 -_0800FBF2: - mov r2, r9 - lsls r0, r2, 8 - add r10, r0 - mov r3, r8 - adds r5, r3, r7 - ldrh r1, [r5] - lsls r0, r1, 5 - subs r0, r1 - movs r1, 0xFF - bl __divsi3 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x18] - movs r1, 0x64 - adds r4, r0, 0 - muls r4, r1 - ldr r2, [sp, 0x10] - adds r4, r2, r4 - ldrh r1, [r5, 0x4] - ldrb r2, [r5, 0x2] - movs r0, 0x1 - str r0, [sp] - mov r3, r10 - str r3, [sp, 0x4] - movs r0, 0x2 - str r0, [sp, 0x8] - movs r0, 0 - str r0, [sp, 0xC] - adds r0, r4, 0 - adds r3, r6, 0 - bl CreateMon - adds r5, 0x6 - adds r0, r4, 0 - movs r1, 0xC - adds r2, r5, 0 - bl SetMonData - movs r6, 0 - adds r5, r4, 0 - mov r0, r8 - adds r0, 0x8 - adds r4, r7, r0 -_0800FC4A: - adds r1, r6, 0 - adds r1, 0xD - adds r0, r5, 0 - adds r2, r4, 0 - bl SetMonData - adds r1, r6, 0 - adds r1, 0x11 - ldrh r0, [r4] - lsls r2, r0, 1 - adds r2, r0 - lsls r2, 2 - ldr r0, _0800FCC8 @ =gBattleMoves + 0x4 @ PP offset - adds r2, r0 - adds r0, r5, 0 - bl SetMonData - adds r4, 0x2 - adds r6, 0x1 - cmp r6, 0x3 - ble _0800FC4A -_0800FC74: - ldr r4, [sp, 0x1C] - str r4, [sp, 0x18] - ldr r2, _0800FCCC @ =gTrainers - ldr r1, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r1, r3 - lsls r0, 3 - adds r0, r2 - adds r0, 0x20 -_0800FC86: - ldrb r0, [r0] - cmp r4, r0 - bge _0800FC8E - b _0800F948 -_0800FC8E: - ldr r2, _0800FCD0 @ =gBattleTypeFlags - ldr r1, _0800FCCC @ =gTrainers - ldr r4, [sp, 0x20] - ldr r3, [sp, 0x14] - adds r0, r4, r3 - lsls r0, 3 - adds r0, r1 - ldrb r0, [r0, 0x18] - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r2] -_0800FCA4: - ldr r0, _0800FCCC @ =gTrainers - ldr r4, [sp, 0x20] - ldr r2, [sp, 0x14] - adds r1, r4, r2 - lsls r1, 3 - adds r1, r0 - adds r1, 0x20 - ldrb r0, [r1] -_0800FCB4: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0800FCC4: .4byte gSpeciesNames -_0800FCC8: .4byte gBattleMoves + 0x4 @ PP offset -_0800FCCC: .4byte gTrainers -_0800FCD0: .4byte gBattleTypeFlags - thumb_func_end sub_800F8E8 - thumb_func_start sub_800FCD4 sub_800FCD4: @ 800FCD4 push {lr} diff --git a/src/battle_2.c b/src/battle_2.c index 9a7011e35..a9f0fd57a 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -9,6 +9,7 @@ #include "species.h" #include "link.h" #include "name_string_util.h" +#include "battle_setup.h" struct UnknownStruct5 { @@ -56,6 +57,9 @@ struct UnknownPokemonStruct2 extern const struct UnknownStruct5 gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; +extern const struct Trainer gTrainers[]; +extern const u8 gSpeciesNames[][11]; +extern const struct BattleMove gBattleMoves[]; extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) @@ -83,7 +87,7 @@ extern MainCallback gUnknown_030042D0; extern struct UnknownStruct6 gUnknown_03004DE0; //extern u16 gUnknown_03004DE0[][0xA0]; // possibly? extern u16 gBattleTypeFlags; -extern u8 gBattleTerrain; +extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of GetBattleTerrain. extern u8 gReservedSpritePaletteCount; extern u16 gTrainerBattleOpponent; extern struct BattleEnigmaBerry gEnigmaBerries[]; @@ -92,7 +96,6 @@ extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern void sub_800B858(void); extern void dp12_8087EA4(void); extern void sub_80895F8(); -extern u8 GetBattleTerrain(); extern void sub_800D6D4(); extern void sub_800DAB8(); extern void sub_800E23C(); @@ -110,7 +113,7 @@ void sub_800F104(void); void sub_800F298(void); void sub_800F808(void); void sub_800F838(struct Sprite *); -void sub_800F8E8(); +u8 CreateNPCTrainerParty(struct Pokemon *, u16); void sub_800FCFC(void); void sub_8010824(void); @@ -187,7 +190,7 @@ void sub_800E7F8(void) SetMainCallback2(sub_800EC9C); if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) { - sub_800F8E8(gEnemyParty, gTrainerBattleOpponent); + CreateNPCTrainerParty(gEnemyParty, gTrainerBattleOpponent); SetWildMonHeldItem(); } gMain.inBattle = TRUE; @@ -853,7 +856,7 @@ void sub_800F838(struct Sprite *sprite) s32 i; s32 r2; s32 r0; - + sprite->data4 = 2; r2 = sprite->data1 + sprite->data3 * 32; r0 = sprite->data2 - sprite->data3 * 32; @@ -876,4 +879,99 @@ void sub_800F838(struct Sprite *sprite) SetMainCallback2(sub_800E7C4); break; } +} + +u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) +{ + u32 nameHash = 0; + s32 i; + + if (trainerNum == 0x400) + return 0; + + if ((gBattleTypeFlags & 0x908) == 8) + { + ZeroEnemyPartyMons(); + for (i = 0; i < gTrainers[trainerNum].partySize; i++) + { + u32 personalityValue; + s32 j; + u8 fixedIV; + + if (gTrainers[trainerNum].doubleBattle == TRUE) + personalityValue = 0x80; + else if (gTrainers[trainerNum].encounterMusic_gender & 0x80) + personalityValue = 0x78; + else + personalityValue = 0x88; + + for (j = 0; gTrainers[trainerNum].trainerName[j] != 0xFF; j++) + nameHash += gTrainers[trainerNum].trainerName[j]; + + switch (gTrainers[trainerNum].partyFlags) + { + case 0: + { + struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + break; + } + case 1: + { + struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + + for (j = 0; j < 4; j++) + { + SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + break; + } + case 2: + { + struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + + SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem); + break; + } + case 3: + { + struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + + SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem); + for (j = 0; j < 4; j++) + { + SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + break; + } + } + } + gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; + } + return gTrainers[trainerNum].partySize; } \ No newline at end of file -- cgit v1.2.3 From 7997e4a6435cfc227127dab28450acfc5ad729c3 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 11 May 2017 20:39:37 -0500 Subject: decompile some more --- src/battle_2.c | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 134 insertions(+), 1 deletion(-) diff --git a/src/battle_2.c b/src/battle_2.c index a9f0fd57a..e012ab456 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -974,4 +974,137 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; } return gTrainers[trainerNum].partySize; -} \ No newline at end of file +} + +void sub_800FCD4(void) +{ + if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F ) + REG_BG0CNT = 0x9800; +} + +void sub_800FCFC(void) +{ + Random(); // unused return value + REG_BG0HOFS = gUnknown_030042A4; + REG_BG0VOFS = gUnknown_030042A0; + REG_BG1HOFS = gUnknown_030042C0; + REG_BG1VOFS = gUnknown_030041B4; + REG_BG2HOFS = gUnknown_03004288; + REG_BG2VOFS = gUnknown_03004280; + REG_BG3HOFS = gUnknown_030041B0; + REG_BG3VOFS = gUnknown_030041B8; + REG_WIN0H = gUnknown_030042C4; + REG_WIN0V = gUnknown_03004240; + REG_WIN1H = gUnknown_03004200; + REG_WIN1V = gUnknown_03004244; + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + sub_8089668(); +} + +void nullsub_36(struct Sprite *sprite) +{ +} + +void sub_800FDB0(struct Sprite *sprite) +{ + if (sprite->data0 != 0) + sprite->pos1.x = sprite->data1 + ((sprite->data2 & 0xFF00) >> 8); + else + sprite->pos1.x = sprite->data1 - ((sprite->data2 & 0xFF00) >> 8); + sprite->data2 += 0x180; + if (sprite->affineAnimEnded) + { + FreeSpriteTilesByTag(0x2710); + FreeSpritePaletteByTag(0x2710); + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } +} + +void sub_800FE20(struct Sprite *sprite) +{ + StartSpriteAffineAnim(sprite, 1); + sprite->callback = sub_800FDB0; + PlaySE(SE_BT_START); +} + +void sub_800FE40(u8 a) +{ + struct Pokemon *sp4 = NULL; + struct Pokemon *sp8 = NULL; + u8 r2 = ewram160CB; + u32 r7; + s32 i; + + + if (gBattleTypeFlags & 0x40) + { + switch (gLinkPlayers[r2].lp_field_18) + { + case 1: + case 3: + sp4 = gEnemyParty; + sp8 = gPlayerParty; + goto foo; + case 0: + case 2: + sp4 = gPlayerParty; + sp8 = gEnemyParty; + break; + } + } + else + { + sp4 = gPlayerParty; + sp8 = gEnemyParty; + } + //_0800FEBC + r7 = 0; + for (i = 0; i < 6; i++) + { + u16 r5 = GetMonData(&sp4[i], MON_DATA_SPECIES2); + u16 r6 = GetMonData(&sp4[i], MON_DATA_HP); + u32 r1 = GetMonData(&sp4[i], MON_DATA_STATUS); + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 != 0 && r1 == 0) + r7 |= 1 << i * 2; + + if (r5 == 0) + continue; + if (r6 != 0 && (r5 == SPECIES_EGG || r1 != 0)) + r7 |= 2 << i * 2; + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 == 0) + r7 |= 3 << i * 2; + } + gTasks[a].data[3] = r7; + r7 = 0; + for (i = 0; i < 6; i++) //_0800FF6A + { + u16 r5 = GetMonData(&sp8[i], MON_DATA_SPECIES2); + u16 r6 = GetMonData(&sp8[i], MON_DATA_HP); + u32 r1 = GetMonData(&sp8[i], MON_DATA_STATUS); + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 != 0 && r1 == 0) + r7 |= 1 << i * 2; + + if (r5 == 0) + continue; + if (r6 != 0 && (r5 == SPECIES_EGG || r1 != 0)) + r7 |= 2 << i * 2; + + if (r5 == 0) + continue; + if (r5 != SPECIES_EGG && r6 == 0) + r7 |= 3 << i * 2; + } + gTasks[a].data[4] = r7; +} -- cgit v1.2.3 From 46048394acb7f6441a362c41cc16b7d7d31ba210 Mon Sep 17 00:00:00 2001 From: Cameron Date: Thu, 11 May 2017 21:51:54 -0500 Subject: add LDFLAGS variable to tools makefiles --- tools/aif2pcm/Makefile | 2 +- tools/bin2c/Makefile | 2 +- tools/gbagfx/Makefile | 2 +- tools/mid2agb/Makefile | 2 +- tools/preproc/Makefile | 2 +- tools/ramscrgen/Makefile | 2 +- tools/rsfont/Makefile | 2 +- tools/scaninc/Makefile | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/aif2pcm/Makefile b/tools/aif2pcm/Makefile index ec6343b12..7e7e116b2 100644 --- a/tools/aif2pcm/Makefile +++ b/tools/aif2pcm/Makefile @@ -9,7 +9,7 @@ SRCS = main.c extended.c .PHONY: clean aif2pcm: $(SRCS) - $(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS) + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) clean: $(RM) aif2pcm aif2pcm.exe diff --git a/tools/bin2c/Makefile b/tools/bin2c/Makefile index eee19af22..715668eba 100644 --- a/tools/bin2c/Makefile +++ b/tools/bin2c/Makefile @@ -7,7 +7,7 @@ CFLAGS = -Wall -Wextra -std=c11 -O2 SRCS = bin2c.c bin2c: $(SRCS) - $(CC) $(CFLAGS) $(SRCS) -o $@ + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) clean: $(RM) bin2c bin2c.exe diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile index de4ea5c42..8ab033403 100644 --- a/tools/gbagfx/Makefile +++ b/tools/gbagfx/Makefile @@ -9,7 +9,7 @@ SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c .PHONY: clean gbagfx: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h rl.h util.h font.h - $(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS) + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) clean: $(RM) gbagfx gbagfx.exe diff --git a/tools/mid2agb/Makefile b/tools/mid2agb/Makefile index 3215169d3..029432022 100644 --- a/tools/mid2agb/Makefile +++ b/tools/mid2agb/Makefile @@ -9,7 +9,7 @@ HEADERS := agb.h error.h main.h midi.h tables.h .PHONY: clean mid2agb: $(SRCS) $(HEADERS) - $(CXX) $(CXXFLAGS) $(SRCS) -o $@ + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) clean: $(RM) mid2agb mid2agb.exe diff --git a/tools/preproc/Makefile b/tools/preproc/Makefile index 2d577c79f..e5321afbd 100644 --- a/tools/preproc/Makefile +++ b/tools/preproc/Makefile @@ -11,7 +11,7 @@ HEADERS := asm_file.h c_file.h char_util.h charmap.h preproc.h string_parser.h \ .PHONY: clean preproc: $(SRCS) $(HEADERS) - $(CXX) $(CXXFLAGS) $(SRCS) -o $@ + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) clean: $(RM) preproc preproc.exe diff --git a/tools/ramscrgen/Makefile b/tools/ramscrgen/Makefile index e18ae99f2..ef05a2d76 100644 --- a/tools/ramscrgen/Makefile +++ b/tools/ramscrgen/Makefile @@ -9,7 +9,7 @@ HEADERS := ramscrgen.h sym_file.h elf.h char_util.h .PHONY: clean ramscrgen: $(SRCS) $(HEADERS) - $(CXX) $(CXXFLAGS) $(SRCS) -o $@ + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) clean: $(RM) ramscrgen ramscrgen.exe diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile index d2a88c46d..2bb57da97 100644 --- a/tools/rsfont/Makefile +++ b/tools/rsfont/Makefile @@ -9,7 +9,7 @@ SRCS = main.c convert_png.c util.c font.c .PHONY: clean rsfont: $(SRCS) convert_png.h gfx.h global.h util.h font.h - $(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS) + $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS) clean: $(RM) rsfont rsfont.exe diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile index 71c4389ef..093b06032 100644 --- a/tools/scaninc/Makefile +++ b/tools/scaninc/Makefile @@ -9,7 +9,7 @@ HEADERS := scaninc.h asm_file.h c_file.h .PHONY: clean scaninc: $(SRCS) $(HEADERS) - $(CXX) $(CXXFLAGS) $(SRCS) -o $@ + $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS) clean: $(RM) scaninc scaninc.exe -- cgit v1.2.3 From 543820c7264ad7f2cc206602e88f2172735bbcd3 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 11 May 2017 21:57:48 -0500 Subject: strip debugging symbols from tools --- tools/aif2pcm/Makefile | 2 +- tools/bin2c/Makefile | 2 +- tools/gbagfx/Makefile | 2 +- tools/mid2agb/Makefile | 2 +- tools/preproc/Makefile | 2 +- tools/ramscrgen/Makefile | 2 +- tools/rsfont/Makefile | 2 +- tools/scaninc/Makefile | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tools/aif2pcm/Makefile b/tools/aif2pcm/Makefile index 7e7e116b2..611c0e2df 100644 --- a/tools/aif2pcm/Makefile +++ b/tools/aif2pcm/Makefile @@ -1,6 +1,6 @@ CC = gcc -CFLAGS = -Wall -Wextra -Wno-switch -std=c11 -O2 +CFLAGS = -Wall -Wextra -Wno-switch -std=c11 -O2 -s LIBS = -lm diff --git a/tools/bin2c/Makefile b/tools/bin2c/Makefile index 715668eba..bd5f60490 100644 --- a/tools/bin2c/Makefile +++ b/tools/bin2c/Makefile @@ -1,6 +1,6 @@ CC = gcc -CFLAGS = -Wall -Wextra -std=c11 -O2 +CFLAGS = -Wall -Wextra -std=c11 -O2 -s .PHONY: clean diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile index 8ab033403..9a5dee1cc 100644 --- a/tools/gbagfx/Makefile +++ b/tools/gbagfx/Makefile @@ -1,6 +1,6 @@ CC = gcc -CFLAGS = -Wall -Wextra -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK +CFLAGS = -Wall -Wextra -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK LIBS = -lpng -lz diff --git a/tools/mid2agb/Makefile b/tools/mid2agb/Makefile index 029432022..accd81882 100644 --- a/tools/mid2agb/Makefile +++ b/tools/mid2agb/Makefile @@ -1,6 +1,6 @@ CXX := g++ -CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch +CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp diff --git a/tools/preproc/Makefile b/tools/preproc/Makefile index e5321afbd..1f4c58e21 100644 --- a/tools/preproc/Makefile +++ b/tools/preproc/Makefile @@ -1,6 +1,6 @@ CXX := g++ -CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch +CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch SRCS := asm_file.cpp c_file.cpp charmap.cpp preproc.cpp string_parser.cpp \ utf8.cpp diff --git a/tools/ramscrgen/Makefile b/tools/ramscrgen/Makefile index ef05a2d76..6c4ca28b6 100644 --- a/tools/ramscrgen/Makefile +++ b/tools/ramscrgen/Makefile @@ -1,6 +1,6 @@ CXX := g++ -CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch +CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch SRCS := main.cpp sym_file.cpp elf.cpp diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile index 2bb57da97..544954bfc 100644 --- a/tools/rsfont/Makefile +++ b/tools/rsfont/Makefile @@ -1,6 +1,6 @@ CC = gcc -CFLAGS = -Wall -Wextra -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK +CFLAGS = -Wall -Wextra -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK LIBS = -lpng -lz diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile index 093b06032..d33dee6d2 100644 --- a/tools/scaninc/Makefile +++ b/tools/scaninc/Makefile @@ -1,6 +1,6 @@ CXX = g++ -CXXFLAGS = -Wall -std=c++11 -O2 +CXXFLAGS = -Wall -std=c++11 -O2 -s SRCS = scaninc.cpp c_file.cpp asm_file.cpp -- cgit v1.2.3 From 87e049d371cf17d020c5157c43143a30d1f7a96a Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 12 May 2017 18:16:30 +0200 Subject: Decompile more credits functions --- src/credits.c | 649 +++++++++++++++++++++++++++------------------------------- 1 file changed, 302 insertions(+), 347 deletions(-) diff --git a/src/credits.c b/src/credits.c index 01af78bce..68056c9ac 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,12 +1,17 @@ #include "global.h" #include "asm.h" #include "decompress.h" +#include "event_data.h" #include "m4a.h" #include "main.h" #include "menu.h" #include "palette.h" +#include "pokedex.h" +#include "rng.h" #include "songs.h" #include "sound.h" +#include "species.h" +#include "starter_choose.h" #include "trig.h" asm(".set REG_BASE, 0x4000000"); @@ -104,7 +109,7 @@ enum TDA_TASK_B_ID = 15, // Appears to be responsible for text - TDB_0 = 0, + TDB_0 = 0, TDB_TASK_A_ID = 1, TDB_CURRENT_PAGE = 2, TDB_3 = 3, @@ -126,14 +131,17 @@ enum TDE_TASK_A_ID = 2, }; +#define POKEMON_TILE_COUNT 68 + struct Unk201C000 { - u16 unk0[8]; - u8 pad_10[0x78]; + u16 unk0[POKEMON_TILE_COUNT]; u16 unk88; u16 unk8A; u16 unk8C; u16 unk8E; + u16 unk90[386]; + u16 unk394; }; struct CreditsEntry @@ -227,10 +235,10 @@ static void task_d_8144514(u8 taskIdD); static bool8 sub_8144ECC(u8 data, u8 taskIdA); static void sub_81450AC(u8 taskIdA); void sub_8145128(u16, u16, u16); -static void sub_81452D0(u16 arg0, u16 arg1); +static void sub_81452D0(u16 arg0, u16 palette); static void spritecb_player_8145378(struct Sprite *sprite); static void spritecb_rival_8145420(struct Sprite *sprite); -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3); +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position); void sub_81458DC(void); static void vblank_8143948(void) @@ -666,8 +674,7 @@ static void task_b_81441B8(u8 taskIdB) for (i = 0; i < 5; i++) { - sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, - 9 + i * 2, 240); + sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240); } gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1; @@ -816,8 +823,6 @@ static u8 sub_8144454(u8 page, u8 taskIdA) return FALSE; } -#define UNK_DEFINE_44 (0x44) - static void task_d_8144514(u8 taskIdD) { struct Unk201C000 *r6 = &ewram1c000; @@ -834,7 +839,7 @@ static void task_d_8144514(u8 taskIdD) gTasks[taskIdD].data[TDD_STATE]++; break; case 2: - if (r6->unk88 == UNK_DEFINE_44 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) + if (r6->unk88 == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68) break; r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A); if (r6->unk8C < r6->unk8E - 1) @@ -1205,6 +1210,50 @@ static void sub_81450AC(u8 taskIdA) gUnknown_0203935C = 1; } +#ifdef NONMATCHING +// Sets up the tilemap for 'misc/end_copyright.png' +void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { + u16 i; + u16 baseTile; + u16 offset0, offset1, offset2, offset3, offset4; + + LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *) (VRAM + arg0)); + LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal)); + + baseTile = (arg2 / 16) << 12; + + offset0 = baseTile + 1; + for (i = 0; i < 32 * 32; i++) + { + ((u16 *) (VRAM + arg1))[i] = baseTile + 1; + } + + offset1 = offset0 + 1; + offset2 = offset1 + 21; + offset3 = offset2 + 20; + offset4 = offset3 + 23; + + for (i = 0; i < 21; i++) + { + ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = offset1 + i; + } + + for (i = 0; i < 20; i++) + { + ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = offset2 + i; + } + + for (i = 0; i < 23; i++) + { + ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = offset3 + i; + } + + for (i = 0; i < 12; i++) + { + ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = offset4 + i; + } +} +#else __attribute__((naked)) void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { @@ -1319,6 +1368,7 @@ _08145200: .4byte 0x060002c8\n\ _08145204: .4byte 0x06000348\n\ .syntax divided\n"); } +#endif u16 sub_8145208(u8 arg0) { @@ -1332,106 +1382,45 @@ u16 sub_8145208(u8 arg0) if (arg0 & (1 << 7)) { - out |= 0x800; + out |= 1 << 11; } if (arg0 & (1 << 6)) { - out |= 0x400; + out |= 1 << 10; } return out; } -__attribute__((naked)) -void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - str r0, [sp]\n\ - ldr r0, [sp, 0x2C]\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - mov r10, r1\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - str r2, [sp, 0x4]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - str r3, [sp, 0x8]\n\ - lsls r0, 16\n\ - lsrs r0, 20\n\ - lsls r0, 28\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - movs r5, 0\n\ -_0814527A:\n\ - movs r4, 0\n\ - lsls r7, r5, 1\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1, r5\n\ - adds r2, r5, 0x1\n\ - mov r8, r2\n\ - lsls r0, 6\n\ - ldr r1, [sp, 0x8]\n\ - adds r6, r0, r1\n\ -_0814528C:\n\ - adds r0, r7, r5\n\ - adds r0, r4\n\ - ldr r2, [sp]\n\ - adds r0, r2, r0\n\ - ldrb r0, [r0]\n\ - bl sub_8145208\n\ - mov r2, r10\n\ - adds r1, r2, r4\n\ - lsls r1, 1\n\ - adds r1, r6\n\ - movs r2, 0xC0\n\ - lsls r2, 19\n\ - adds r1, r2\n\ - add r0, r9\n\ - strh r0, [r1]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - cmp r4, 0x2\n\ - bls _0814528C\n\ - mov r1, r8\n\ - lsls r0, r1, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x4\n\ - bls _0814527A\n\ - add sp, 0xC\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\ - .syntax divided\n"); +void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) { + u8 y, x; + + const u16 tileOffset = (palette / 16) << 12; + + for (y = 0; y < 5; y++) + { + for (x = 0; x < 3; x++) + { + ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]); + } + } } -static void sub_81452D0(u16 arg0, u16 arg1) +static void sub_81452D0(u16 arg0, u16 palette) { - u16 i; - u16 foo = arg1 / 16; - u16 bar = foo * 4096; - - for (i = 0; i < 0x400; i++) - ((u16 *)(VRAM + arg0))[i] = bar + 1; - - sub_814524C(&gUnknown_0840B83C, 3, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B84B, 7, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B85A, 11, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B85A, 16, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B869, 20, 7, arg0, arg1); - sub_814524C(&gUnknown_0840B878, 24, 7, arg0, arg1); + u16 pos; + u16 baseTile = (palette / 16) << 12; + + for (pos = 0; pos < 32 * 32; pos++) + ((u16 *) (VRAM + arg0))[pos] = baseTile + 1; + + sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette); + sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette); + sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette); + sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette); + sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette); + sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette); } static void spritecb_player_8145378(struct Sprite *sprite) @@ -1538,248 +1527,117 @@ static void spritecb_rival_8145420(struct Sprite *sprite) } } -__attribute__((naked)) -void spritecb_81454E0(struct Sprite *sprite) -{ - asm(".syntax unified\n\ - push {r4,r5,lr}\n\ - sub sp, 0x4\n\ - adds r5, r0, 0\n\ - ldr r0, _081454F8 @ =gUnknown_0203935C\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - cmp r0, 0\n\ - beq _081454FC\n\ - adds r0, r5, 0\n\ - bl DestroySprite\n\ - b _081456A6\n\ - .align 2, 0\n\ -_081454F8: .4byte gUnknown_0203935C\n\ -_081454FC:\n\ - ldrh r0, [r5, 0x3C]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x3C]\n\ - movs r2, 0x2E\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0xA\n\ - bhi _08145544\n\ - lsls r0, 2\n\ - ldr r1, _08145514 @ =_08145518\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ -_08145514: .4byte _08145518\n\ - .align 2, 0\n\ -_08145518:\n\ - .4byte _08145544\n\ - .4byte _0814559E\n\ - .4byte _08145620\n\ - .4byte _08145660\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145544\n\ - .4byte _08145696\n\ -_08145544:\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0x4\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x1\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x30\n\ - ldrsh r1, [r5, r0]\n\ - movs r0, 0x1F\n\ - ands r1, r0\n\ - lsls r1, 1\n\ - ldrb r2, [r5, 0x3]\n\ - movs r0, 0x3F\n\ - negs r0, r0\n\ - ands r0, r2\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x3]\n\ - movs r0, 0x10\n\ - strh r0, [r5, 0x32]\n\ - ldrh r4, [r5, 0x30]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r0, 0x80\n\ - lsls r0, 9\n\ - movs r1, 0x10\n\ - bl __divsi3\n\ - adds r1, r0, 0\n\ - str r1, [sp]\n\ - adds r0, r4, 0\n\ - movs r2, 0\n\ - movs r3, 0\n\ - bl SetOamMatrix\n\ - adds r2, r5, 0\n\ - adds r2, 0x3E\n\ - ldrb r1, [r2]\n\ - movs r0, 0x5\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ -_0814559E:\n\ - ldrh r1, [r5, 0x32]\n\ - movs r2, 0x32\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0xFF\n\ - bgt _081455D4\n\ - adds r0, r1, 0\n\ - adds r0, 0x8\n\ - strh r0, [r5, 0x32]\n\ - ldrh r4, [r5, 0x30]\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - movs r0, 0x32\n\ - ldrsh r1, [r5, r0]\n\ - movs r0, 0x80\n\ - lsls r0, 9\n\ - bl __divsi3\n\ - adds r1, r0, 0\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - str r1, [sp]\n\ - adds r0, r4, 0\n\ - movs r2, 0\n\ - movs r3, 0\n\ - bl SetOamMatrix\n\ - b _081455DA\n\ -_081455D4:\n\ - ldrh r0, [r5, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ -_081455DA:\n\ - movs r2, 0x30\n\ - ldrsh r1, [r5, r2]\n\ - cmp r1, 0x2\n\ - beq _081456A6\n\ - cmp r1, 0x2\n\ - bgt _081455EC\n\ - cmp r1, 0x1\n\ - beq _081455F2\n\ - b _081456A6\n\ -_081455EC:\n\ - cmp r1, 0x3\n\ - beq _0814560A\n\ - b _081456A6\n\ -_081455F2:\n\ - ldrh r1, [r5, 0x3C]\n\ - movs r0, 0x3\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _08145602\n\ - ldrh r0, [r5, 0x22]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x22]\n\ -_08145602:\n\ - ldrh r0, [r5, 0x20]\n\ - subs r0, 0x2\n\ - strh r0, [r5, 0x20]\n\ - b _081456A6\n\ -_0814560A:\n\ - ldrh r0, [r5, 0x3C]\n\ - ands r1, r0\n\ - cmp r1, 0\n\ - bne _08145618\n\ - ldrh r0, [r5, 0x22]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x22]\n\ -_08145618:\n\ - ldrh r0, [r5, 0x20]\n\ - adds r0, 0x2\n\ - strh r0, [r5, 0x20]\n\ - b _081456A6\n\ -_08145620:\n\ - ldrh r1, [r5, 0x34]\n\ - movs r2, 0x34\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _08145630\n\ - subs r0, r1, 0x1\n\ - strh r0, [r5, 0x34]\n\ - b _081456A6\n\ -_08145630:\n\ - ldr r1, _0814565C @ =REG_BLDCNT\n\ - movs r2, 0xF4\n\ - lsls r2, 4\n\ - adds r0, r2, 0\n\ - strh r0, [r1]\n\ - adds r1, 0x2\n\ - movs r0, 0x10\n\ - strh r0, [r1]\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0xD\n\ - negs r0, r0\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ - movs r0, 0x10\n\ - strh r0, [r5, 0x34]\n\ - ldrh r0, [r5, 0x2E]\n\ - adds r0, 0x1\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ - .align 2, 0\n\ -_0814565C: .4byte REG_BLDCNT\n\ -_08145660:\n\ - ldrh r1, [r5, 0x34]\n\ - movs r2, 0x34\n\ - ldrsh r0, [r5, r2]\n\ - cmp r0, 0\n\ - beq _08145684\n\ - subs r1, 0x1\n\ - strh r1, [r5, 0x34]\n\ - ldr r3, _08145680 @ =REG_BLDALPHA\n\ - movs r0, 0x34\n\ - ldrsh r2, [r5, r0]\n\ - movs r0, 0x10\n\ - subs r0, r2\n\ - lsls r0, 8\n\ - adds r1, r0\n\ - strh r1, [r3]\n\ - b _081456A6\n\ - .align 2, 0\n\ -_08145680: .4byte REG_BLDALPHA\n\ -_08145684:\n\ - adds r2, r5, 0\n\ - adds r2, 0x3E\n\ - ldrb r0, [r2]\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r2]\n\ - movs r0, 0xA\n\ - strh r0, [r5, 0x2E]\n\ - b _081456A6\n\ -_08145696:\n\ - ldr r0, _081456B0 @ =REG_BLDCNT\n\ - movs r1, 0\n\ - strh r1, [r0]\n\ - adds r0, 0x2\n\ - strh r1, [r0]\n\ - adds r0, r5, 0\n\ - bl DestroySprite\n\ -_081456A6:\n\ - add sp, 0x4\n\ - pop {r4,r5}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_081456B0: .4byte REG_BLDCNT\n\ - .syntax divided\n"); +void spritecb_81454E0(struct Sprite *sprite) { + if (gUnknown_0203935C) + { + DestroySprite(sprite); + return; + } + + sprite->data7 += 1; + switch (sprite->data0) + { + case 0: + default: + sprite->oam.affineMode = 1; + sprite->oam.matrixNum = sprite->data1; + sprite->data2 = 16; + SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2); + sprite->invisible = FALSE; + sprite->data0 = 1; + break; + + case 1: + if (sprite->data2 < 256) + { + sprite->data2 += 8; + SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2); + } + else + { + sprite->data0 += 1; + } + switch (sprite->data1) + { + case 1: + if ((sprite->data7 & 3) == 0) + { + sprite->pos1.y += 1; + } + sprite->pos1.x -= 2; + break; + case 2: + break; + case 3: + if ((sprite->data7 & 3) == 0) + { + sprite->pos1.y += 1; + } + sprite->pos1.x += 2; + break; + } + break; + + case 2: + if (sprite->data3 != 0) + { + sprite->data3 -= 1; + } + else + { + REG_BLDCNT = 0xF40; + REG_BLDALPHA = 0x10; + sprite->oam.objMode = 1; + sprite->data3 = 16; + sprite->data0 += 1; + } + break; + + case 3: + if (sprite->data3 != 0) + { + int data3; + vu16 *reg; + + sprite->data3 -= 1; + + reg = ®_BLDALPHA; + data3 = 16 - sprite->data3; + *reg = (data3 << 8) + sprite->data3; + } + else + { + sprite->invisible = TRUE; + sprite->data0 = 10; + } + break; + + case 10: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + DestroySprite(sprite); + break; + + } } #ifdef NONMATCHING -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) +/* +extern struct SpriteFrameImage *gUnknown_0840B69C[]; +extern const union AmimCmd *const gSpriteAnimTable_81E7C64[]; +extern struct SpriteTemplate gUnknown_0840B6B8; + +void sub_8143648(u16 paletteTag, u8 arg1) { + gUnknown_02024E8C = gUnknown_0840B6B8; + gUnknown_02024E8C.paletteTag = paletteTag; + gUnknown_02024E8C.images = gUnknown_0840B69C[arg1]; + gUnknown_02024E8C.anims = (const union AnimCmd *const *) gSpriteAnimTable_81E7C64; +} +*/ + +void sub_8143648(u16 paletteTag, u8 arg1); + +u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position) { u32 species; u32 personality; @@ -1787,19 +1645,22 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) u8 spriteId; u8 spriteId2; + // FIXME: For some reason r0 is copied to r6 before. species = NationalPokedexNumToSpecies(nationalNum); + + switch (species) { - case SPECIES_UNOWN: - personality = gSaveBlock2.pokedex.unownPersonality; + default: + personality = 0; break; case SPECIES_SPINDA: personality = gSaveBlock2.pokedex.spindaPersonality; break; - default: - personality = 0; + case SPECIES_UNOWN: + personality = gSaveBlock2.pokedex.unownPersonality; break; } @@ -1808,27 +1669,27 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, 0x2000000, - gUnknown_0840B5A0[arg3], + gUnknown_0840B5A0[position], species, personality, 1 ); palette = species_and_otid_get_pal(species, 0, 0xFFFF); - LoadCompressedPalette(palette, 0x100 + (arg3 * 16), 0x20); - sub_8143648(arg3, arg3); + LoadCompressedPalette(palette, 0x100 + (position * 16), 0x20); + sub_8143648(position, position); spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0); - gSprites[spriteId].oam.paletteNum = arg3; + gSprites[spriteId].oam.paletteNum = position; gSprites[spriteId].oam.priority = 1; - gSprites[spriteId].data1 = arg3 + 1; + gSprites[spriteId].data1 = position + 1; gSprites[spriteId].invisible = TRUE; gSprites[spriteId].callback = spritecb_81454E0; spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1); gSprites[spriteId2].data0 = spriteId; - StartSpriteAnimIfDifferent(&gSprites[spriteId2], arg3); + StartSpriteAnimIfDifferent(&gSprites[spriteId2], position); return spriteId; } @@ -2015,6 +1876,99 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data0].pos1.y; } +#ifdef NONMATCHING +void sub_81458DC(void) { + u16 dexNum, seenTypesCount, count, i2; + + struct Unk201C000 *unk201C000 = &ewram1c000; + + const u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); + + dexNum = 1; + seenTypesCount = 0; + for (; dexNum < 386; dexNum++) + { + if (sub_8090D90(dexNum, 1)) + { + unk201C000->unk90[seenTypesCount] = dexNum; + seenTypesCount += 1; + } + } + + count = seenTypesCount; + while (count < 386) + { + unk201C000->unk90[count] = 0; + count += 1; + } + + unk201C000->unk394 = seenTypesCount; + if (unk201C000->unk394 < POKEMON_TILE_COUNT) + { + unk201C000->unk8E = unk201C000->unk394; + } + else + { + unk201C000->unk8E = POKEMON_TILE_COUNT; + } + + for (i2 = 0; i2 < POKEMON_TILE_COUNT;) + { + const u16 r2 = Random() % unk201C000->unk394; + unk201C000->unk0[i2] = unk201C000->unk90[r2]; + i2 += 1; + + unk201C000->unk90[r2] = 0; + unk201C000->unk394 -= 1; + + if (r2 != unk201C000->unk394) + { + unk201C000->unk90[r2] = unk201C000->unk90[unk201C000->unk394]; + unk201C000->unk90[unk201C000->unk394] = 0; + } + + if (unk201C000->unk394 == 0) + { + break; + } + } + + if (unk201C000->unk8E < POKEMON_TILE_COUNT) + { + u16 i; + u16 page; + for (i = unk201C000->unk8E; i < POKEMON_TILE_COUNT; i++) + { + unk201C000->unk0[i] = unk201C000->unk0[page]; + page += 1; + + if (page == unk201C000->unk8E) + { + page = 0; + } + } + } + else + { + u16 starterIndex; + for (starterIndex = 0; starterIndex < POKEMON_TILE_COUNT; starterIndex++) + { + if (unk201C000->unk0[starterIndex] == starter) + { + break; + } + } + + if (starterIndex < unk201C000->unk8E) + { + unk201C000->unk0[starterIndex] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; + } + } + + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; + unk201C000->unk8E = POKEMON_TILE_COUNT; +} +#else __attribute__((naked)) void sub_81458DC(void) { @@ -2235,3 +2189,4 @@ _08145A62:\n\ bx r0\n\ .syntax divided\n"); } +#endif -- cgit v1.2.3 From c58711656537134c4fbd2feacd244a269b311cf5 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 12 May 2017 18:21:23 +0200 Subject: Use constants for task C data --- src/credits.c | 68 +++++++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/credits.c b/src/credits.c index 68056c9ac..085cf986c 100644 --- a/src/credits.c +++ b/src/credits.c @@ -871,83 +871,83 @@ static void task_d_8144514(u8 taskIdD) void task_c_8144664(u8 taskIdC) { - switch (gTasks[taskIdC].data[0]) + switch (gTasks[taskIdC].data[TDC_0]) { case 0: - gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[5]++; + gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); + gTasks[taskIdC].data[TDC_5]++; break; case 1: if (gUnknown_0203935A != 0) { - gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12); - gTasks[taskIdC].data[5]++; + gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12); + gTasks[taskIdC].data[TDC_5]++; } else { - gSprites[gTasks[taskIdC].data[2]].data0 = 2; - gTasks[taskIdC].data[5] = 0; - gTasks[taskIdC].data[0]++; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 2; + gTasks[taskIdC].data[TDC_5] = 0; + gTasks[taskIdC].data[TDC_0]++; } break; case 2: - if (gTasks[taskIdC].data[5] < 64) + if (gTasks[taskIdC].data[TDC_5] < 64) { - gTasks[taskIdC].data[5]++; - gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20); + gTasks[taskIdC].data[TDC_5]++; + gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); } else { - gTasks[taskIdC].data[0]++; + gTasks[taskIdC].data[TDC_0]++; } break; case 3: - gSprites[gTasks[taskIdC].data[2]].data0 = 3; - gSprites[gTasks[taskIdC].data[3]].data0 = 1; - gTasks[taskIdC].data[4] = 120; - gTasks[taskIdC].data[0]++; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 3; + gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 1; + gTasks[taskIdC].data[TDC_4] = 120; + gTasks[taskIdC].data[TDC_0]++; break; case 4: - if (gTasks[taskIdC].data[4] != 0) + if (gTasks[taskIdC].data[TDC_4] != 0) { - gTasks[taskIdC].data[4]--; + gTasks[taskIdC].data[TDC_4]--; } else { - gTasks[taskIdC].data[5] = 64; - gTasks[taskIdC].data[0]++; + gTasks[taskIdC].data[TDC_5] = 64; + gTasks[taskIdC].data[TDC_0]++; } break; case 5: - if (gTasks[taskIdC].data[5] > 0) + if (gTasks[taskIdC].data[TDC_5] > 0) { - gTasks[taskIdC].data[5]--; - gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20); + gTasks[taskIdC].data[TDC_5]--; + gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20); } else { - gSprites[gTasks[taskIdC].data[2]].data0 = 1; - gTasks[taskIdC].data[0]++; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 1; + gTasks[taskIdC].data[TDC_0]++; } break; case 6: - gTasks[taskIdC].data[0] = 50; + gTasks[taskIdC].data[TDC_0] = 50; break; case 10: - gSprites[gTasks[taskIdC].data[3]].data0 = 2; - gTasks[taskIdC].data[0] = 50; + gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 2; + gTasks[taskIdC].data[TDC_0] = 50; break; case 20: - gSprites[gTasks[taskIdC].data[2]].data0 = 4; - gTasks[taskIdC].data[0] = 50; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 4; + gTasks[taskIdC].data[TDC_0] = 50; break; case 30: - gSprites[gTasks[taskIdC].data[2]].data0 = 5; - gSprites[gTasks[taskIdC].data[3]].data0 = 3; - gTasks[taskIdC].data[0] = 50; + gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 5; + gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 3; + gTasks[taskIdC].data[TDC_0] = 50; break; case 50: - gTasks[taskIdC].data[0] = 0; + gTasks[taskIdC].data[TDC_0] = 0; break; } } -- cgit v1.2.3 From 443ffffc5f5dd9d83dc60f93590139ae4f27bad2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sat, 13 May 2017 17:14:02 -0500 Subject: decompile more functions --- asm/battle_2.s | 1401 ----------------------------------------------------- src/battle_2.c | 462 ++++++++++++++++-- src/rom_8077ABC.c | 1 - 3 files changed, 432 insertions(+), 1432 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index f1c865a49..ecb1d0b59 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,1407 +6,6 @@ .text - thumb_func_start sub_800FCD4 -sub_800FCD4: @ 800FCD4 - push {lr} - ldr r0, _0800FCF4 @ =REG_VCOUNT - ldrh r0, [r0] - subs r0, 0x6F - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x30 - bhi _0800FCEE - ldr r1, _0800FCF8 @ =REG_BG0CNT - movs r2, 0x98 - lsls r2, 8 - adds r0, r2, 0 - strh r0, [r1] -_0800FCEE: - pop {r0} - bx r0 - .align 2, 0 -_0800FCF4: .4byte REG_VCOUNT -_0800FCF8: .4byte REG_BG0CNT - thumb_func_end sub_800FCD4 - - thumb_func_start sub_800FCFC -sub_800FCFC: @ 800FCFC - push {lr} - bl Random - ldr r1, _0800FD78 @ =REG_BG0HOFS - ldr r0, _0800FD7C @ =gUnknown_030042A4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800FD80 @ =gUnknown_030042A0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800FD84 @ =gUnknown_030042C0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800FD88 @ =gUnknown_030041B4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800FD8C @ =gUnknown_03004288 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800FD90 @ =gUnknown_03004280 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800FD94 @ =gUnknown_030041B0 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x2 - ldr r0, _0800FD98 @ =gUnknown_030041B8 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x22 - ldr r0, _0800FD9C @ =gUnknown_030042C4 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x4 - ldr r0, _0800FDA0 @ =gUnknown_03004240 - ldrh r0, [r0] - strh r0, [r1] - subs r1, 0x2 - ldr r0, _0800FDA4 @ =gUnknown_03004200 - ldrh r0, [r0] - strh r0, [r1] - adds r1, 0x4 - ldr r0, _0800FDA8 @ =gUnknown_03004244 - ldrh r0, [r0] - strh r0, [r1] - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - bl sub_8089668 - pop {r0} - bx r0 - .align 2, 0 -_0800FD78: .4byte REG_BG0HOFS -_0800FD7C: .4byte gUnknown_030042A4 -_0800FD80: .4byte gUnknown_030042A0 -_0800FD84: .4byte gUnknown_030042C0 -_0800FD88: .4byte gUnknown_030041B4 -_0800FD8C: .4byte gUnknown_03004288 -_0800FD90: .4byte gUnknown_03004280 -_0800FD94: .4byte gUnknown_030041B0 -_0800FD98: .4byte gUnknown_030041B8 -_0800FD9C: .4byte gUnknown_030042C4 -_0800FDA0: .4byte gUnknown_03004240 -_0800FDA4: .4byte gUnknown_03004200 -_0800FDA8: .4byte gUnknown_03004244 - thumb_func_end sub_800FCFC - - thumb_func_start nullsub_36 -nullsub_36: @ 800FDAC - bx lr - thumb_func_end nullsub_36 - - thumb_func_start sub_800FDB0 -sub_800FDB0: @ 800FDB0 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0800FDD0 - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - lsrs r0, 8 - ldrh r1, [r5, 0x30] - adds r0, r1 - strh r0, [r5, 0x20] - b _0800FDE2 -_0800FDD0: - movs r1, 0x32 - ldrsh r0, [r5, r1] - movs r1, 0xFF - lsls r1, 8 - ands r0, r1 - asrs r0, 8 - ldrh r1, [r5, 0x30] - subs r1, r0 - strh r1, [r5, 0x20] -_0800FDE2: - movs r1, 0xC0 - lsls r1, 1 - adds r0, r1, 0 - ldrh r1, [r5, 0x32] - adds r0, r1 - strh r0, [r5, 0x32] - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _0800FE16 - ldr r4, _0800FE1C @ =0x00002710 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - adds r0, r5, 0 - bl FreeSpriteOamMatrix - adds r0, r5, 0 - bl DestroySprite -_0800FE16: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0800FE1C: .4byte 0x00002710 - thumb_func_end sub_800FDB0 - - thumb_func_start sub_800FE20 -sub_800FE20: @ 800FE20 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - ldr r0, _0800FE3C @ =sub_800FDB0 - str r0, [r4, 0x1C] - movs r0, 0x68 - bl PlaySE - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800FE3C: .4byte sub_800FDB0 - thumb_func_end sub_800FE20 - - thumb_func_start sub_800FE40 -sub_800FE40: @ 800FE40 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - movs r1, 0 - str r1, [sp, 0x8] - ldr r0, _0800FE88 @ =0x02000000 - ldr r2, _0800FE8C @ =0x000160cb - adds r0, r2 - ldrb r2, [r0] - ldr r0, _0800FE90 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800FEB4 - ldr r1, _0800FE94 @ =gLinkPlayers - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrh r0, [r0, 0x18] - cmp r0, 0x1 - beq _0800FEA0 - cmp r0, 0x1 - bgt _0800FE98 - cmp r0, 0 - beq _0800FEB4 - b _0800FEBC - .align 2, 0 -_0800FE88: .4byte 0x02000000 -_0800FE8C: .4byte 0x000160cb -_0800FE90: .4byte gBattleTypeFlags -_0800FE94: .4byte gLinkPlayers -_0800FE98: - cmp r0, 0x2 - beq _0800FEB4 - cmp r0, 0x3 - bne _0800FEBC -_0800FEA0: - ldr r1, _0800FEAC @ =gEnemyParty - str r1, [sp, 0x4] - ldr r2, _0800FEB0 @ =gPlayerParty - str r2, [sp, 0x8] - b _0800FEBC - .align 2, 0 -_0800FEAC: .4byte gEnemyParty -_0800FEB0: .4byte gPlayerParty -_0800FEB4: - ldr r3, _08010008 @ =gPlayerParty - str r3, [sp, 0x4] - ldr r0, _0801000C @ =gEnemyParty - str r0, [sp, 0x8] -_0800FEBC: - movs r7, 0 - movs r1, 0 - mov r8, r1 - ldr r2, [sp] - lsls r2, 2 - str r2, [sp, 0xC] - movs r3, 0xCE - lsls r3, 1 - mov r10, r3 - mov r9, r1 -_0800FED0: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r0, [sp, 0x4] - adds r4, r0, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _0800FF40 - cmp r5, r10 - beq _0800FF14 - cmp r6, 0 - beq _0800FF14 - cmp r1, 0 - bne _0800FF14 - movs r0, 0x1 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_0800FF14: - cmp r5, 0 - beq _0800FF40 - cmp r6, 0 - beq _0800FF2C - cmp r5, r10 - beq _0800FF24 - cmp r1, 0 - beq _0800FF2C -_0800FF24: - movs r0, 0x2 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_0800FF2C: - cmp r5, 0 - beq _0800FF40 - cmp r5, r10 - beq _0800FF40 - cmp r6, 0 - bne _0800FF40 - movs r0, 0x3 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_0800FF40: - movs r2, 0x2 - add r9, r2 - movs r3, 0x1 - add r8, r3 - mov r0, r8 - cmp r0, 0x5 - ble _0800FED0 - ldr r1, _08010010 @ =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0xE] - movs r7, 0 - movs r0, 0 - mov r8, r0 - movs r1, 0xCE - lsls r1, 1 - mov r10, r1 - mov r9, r0 -_0800FF6A: - movs r0, 0x64 - mov r4, r8 - muls r4, r0 - ldr r2, [sp, 0x8] - adds r4, r2, r4 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData - adds r1, r0, 0 - cmp r5, 0 - beq _0800FFDA - cmp r5, r10 - beq _0800FFAE - cmp r6, 0 - beq _0800FFAE - cmp r1, 0 - bne _0800FFAE - movs r0, 0x1 - mov r3, r9 - lsls r0, r3 - orrs r7, r0 -_0800FFAE: - cmp r5, 0 - beq _0800FFDA - cmp r6, 0 - beq _0800FFC6 - cmp r5, r10 - beq _0800FFBE - cmp r1, 0 - beq _0800FFC6 -_0800FFBE: - movs r0, 0x2 - mov r1, r9 - lsls r0, r1 - orrs r7, r0 -_0800FFC6: - cmp r5, 0 - beq _0800FFDA - cmp r5, r10 - beq _0800FFDA - cmp r6, 0 - bne _0800FFDA - movs r0, 0x3 - mov r2, r9 - lsls r0, r2 - orrs r7, r0 -_0800FFDA: - movs r3, 0x2 - add r9, r3 - movs r0, 0x1 - add r8, r0 - mov r1, r8 - cmp r1, 0x5 - ble _0800FF6A - ldr r1, _08010010 @ =gTasks - ldr r2, [sp, 0xC] - ldr r3, [sp] - adds r0, r2, r3 - lsls r0, 3 - adds r0, r1 - strh r7, [r0, 0x10] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010008: .4byte gPlayerParty -_0801000C: .4byte gEnemyParty -_08010010: .4byte gTasks - thumb_func_end sub_800FE40 - - thumb_func_start c2_8011A1C -c2_8011A1C: @ 8010014 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0 - bl SetHBlankCallback - movs r0, 0 - bl SetVBlankCallback - movs r4, 0 - str r4, [sp] - movs r1, 0xC0 - lsls r1, 19 - ldr r2, _08010144 @ =0x05006000 - mov r0, sp - bl CpuSet - ldr r0, _08010148 @ =REG_MOSAIC - strh r4, [r0] - subs r0, 0xC - movs r2, 0xF0 - strh r2, [r0] - adds r0, 0x4 - ldr r3, _0801014C @ =0x00005051 - adds r1, r3, 0 - strh r1, [r0] - adds r0, 0x4 - strh r4, [r0] - adds r0, 0x2 - strh r4, [r0] - ldr r0, _08010150 @ =gUnknown_030042C4 - strh r2, [r0] - ldr r0, _08010154 @ =gUnknown_03004240 - strh r1, [r0] - bl dp12_8087EA4 - ldr r0, _08010158 @ =gUnknown_03004DE0 - movs r3, 0xF0 - movs r4, 0xF0 - lsls r4, 3 - adds r2, r0, r4 - movs r1, 0x4F -_08010066: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - subs r1, 0x1 - cmp r1, 0 - bge _08010066 - movs r1, 0x50 - ldr r5, _0801015C @ =gWindowConfig_81E6C58 - ldr r0, _08010158 @ =gUnknown_03004DE0 - ldr r3, _08010160 @ =0x0000ff10 - movs r4, 0x82 - lsls r4, 4 - adds r2, r0, r4 - adds r0, 0xA0 -_08010084: - strh r3, [r0] - strh r3, [r2] - adds r2, 0x2 - adds r0, 0x2 - adds r1, 0x1 - cmp r1, 0x9F - ble _08010084 - adds r0, r5, 0 - bl SetUpWindowConfig - bl ResetPaletteFade - ldr r0, _08010164 @ =gUnknown_030042A4 - movs r4, 0 - strh r4, [r0] - ldr r0, _08010168 @ =gUnknown_030042A0 - strh r4, [r0] - ldr r0, _0801016C @ =gUnknown_030042C0 - strh r4, [r0] - ldr r0, _08010170 @ =gUnknown_030041B4 - strh r4, [r0] - ldr r0, _08010174 @ =gUnknown_03004288 - strh r4, [r0] - ldr r0, _08010178 @ =gUnknown_03004280 - strh r4, [r0] - ldr r0, _0801017C @ =gUnknown_030041B0 - strh r4, [r0] - ldr r0, _08010180 @ =gUnknown_030041B8 - strh r4, [r0] - ldr r0, _08010184 @ =gUnknown_03004210 - adds r1, r5, 0 - bl InitWindowFromConfig - ldr r0, _08010188 @ =gUnknown_030041D0 - ldr r1, _0801018C @ =gWindowConfig_81E71D0 - bl InitWindowFromConfig - ldr r0, _08010190 @ =gUnknown_03004250 - ldr r1, _08010194 @ =gWindowConfig_81E71EC - bl InitWindowFromConfig - bl sub_800D6D4 - ldr r0, _08010198 @ =gUnknown_08D004E0 - movs r1, 0 - movs r2, 0x40 - bl LoadCompressedPalette - bl sub_800D74C - bl ResetSpriteData - bl ResetTasks - bl sub_800E23C - ldr r1, _0801019C @ =REG_WINOUT - movs r0, 0x37 - strh r0, [r1] - bl FreeAllSpritePalettes - ldr r1, _080101A0 @ =gReservedSpritePaletteCount - movs r0, 0x4 - strb r0, [r1] - ldr r0, _080101A4 @ =sub_800FCFC - bl SetVBlankCallback - ldr r0, _080101A8 @ =sub_800DE30 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080101AC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0x87 - lsls r2, 1 - strh r2, [r1, 0xA] - movs r2, 0x5A - strh r2, [r1, 0xC] - movs r2, 0x1 - strh r2, [r1, 0x12] - bl sub_800FE40 - ldr r0, _080101B0 @ =sub_80101B8 - bl SetMainCallback2 - ldr r0, _080101B4 @ =gUnknown_02024D1E - strb r4, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010144: .4byte 0x05006000 -_08010148: .4byte REG_MOSAIC -_0801014C: .4byte 0x00005051 -_08010150: .4byte gUnknown_030042C4 -_08010154: .4byte gUnknown_03004240 -_08010158: .4byte gUnknown_03004DE0 -_0801015C: .4byte gWindowConfig_81E6C58 -_08010160: .4byte 0x0000ff10 -_08010164: .4byte gUnknown_030042A4 -_08010168: .4byte gUnknown_030042A0 -_0801016C: .4byte gUnknown_030042C0 -_08010170: .4byte gUnknown_030041B4 -_08010174: .4byte gUnknown_03004288 -_08010178: .4byte gUnknown_03004280 -_0801017C: .4byte gUnknown_030041B0 -_08010180: .4byte gUnknown_030041B8 -_08010184: .4byte gUnknown_03004210 -_08010188: .4byte gUnknown_030041D0 -_0801018C: .4byte gWindowConfig_81E71D0 -_08010190: .4byte gUnknown_03004250 -_08010194: .4byte gWindowConfig_81E71EC -_08010198: .4byte gUnknown_08D004E0 -_0801019C: .4byte REG_WINOUT -_080101A0: .4byte gReservedSpritePaletteCount -_080101A4: .4byte sub_800FCFC -_080101A8: .4byte sub_800DE30 -_080101AC: .4byte gTasks -_080101B0: .4byte sub_80101B8 -_080101B4: .4byte gUnknown_02024D1E - thumb_func_end c2_8011A1C - - thumb_func_start sub_80101B8 -sub_80101B8: @ 80101B8 - push {lr} - bl c2_081284E0 - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - bl RunTasks - pop {r0} - bx r0 - thumb_func_end sub_80101B8 - - thumb_func_start c2_081284E0 -c2_081284E0: @ 80101D4 - push {r4,lr} - sub sp, 0x4 - ldr r4, _080101EC @ =gUnknown_02024D1E - ldrb r0, [r4] - cmp r0, 0x1 - beq _080101FC - cmp r0, 0x1 - bgt _080101F0 - cmp r0, 0 - beq _080101F6 - b _08010236 - .align 2, 0 -_080101EC: .4byte gUnknown_02024D1E -_080101F0: - cmp r0, 0x2 - beq _08010222 - b _08010236 -_080101F6: - movs r0, 0xFF - strb r0, [r4, 0x1] - b _0801021A -_080101FC: - ldrb r0, [r4, 0x1] - subs r0, 0x1 - strb r0, [r4, 0x1] - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08010236 - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade -_0801021A: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08010236 -_08010222: - ldr r0, _08010240 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08010236 - ldr r0, _08010244 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 -_08010236: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010240: .4byte gPaletteFade -_08010244: .4byte gMain - thumb_func_end c2_081284E0 - - thumb_func_start oac_poke_opponent -oac_poke_opponent: @ 8010248 - push {lr} - sub sp, 0x4 - ldr r1, _08010270 @ =sub_8010278 - str r1, [r0, 0x1C] - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, _08010274 @ =0x00003def - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0xA - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_08010270: .4byte sub_8010278 -_08010274: .4byte 0x00003def - thumb_func_end oac_poke_opponent - - thumb_func_start sub_8010278 -sub_8010278: @ 8010278 - push {lr} - adds r2, r0, 0 - ldr r0, _080102A4 @ =gUnknown_02024DE8 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080102A0 - ldrh r0, [r2, 0x24] - adds r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080102A0 - ldr r0, _080102A8 @ =sub_80102AC - str r0, [r2, 0x1C] - ldrh r0, [r2, 0x32] - movs r1, 0x19 - bl PlayCry1 -_080102A0: - pop {r0} - bx r0 - .align 2, 0 -_080102A4: .4byte gUnknown_02024DE8 -_080102A8: .4byte sub_80102AC - thumb_func_end sub_8010278 - - thumb_func_start sub_80102AC -sub_80102AC: @ 80102AC - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080102F4 - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl sub_804777C - ldr r1, _080102FC @ =gUnknown_03004340 - movs r2, 0x2E - ldrsh r0, [r4, r2] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DFC - ldr r0, _08010300 @ =nullsub_37 - str r0, [r4, 0x1C] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnimIfDifferent - movs r0, 0x80 - lsls r0, 10 - ldr r1, _08010304 @ =0x00003def - str r1, [sp] - movs r1, 0 - movs r2, 0xA - movs r3, 0 - bl BeginNormalPaletteFade -_080102F4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080102FC: .4byte gUnknown_03004340 -_08010300: .4byte nullsub_37 -_08010304: .4byte 0x00003def - thumb_func_end sub_80102AC - - thumb_func_start nullsub_37 -nullsub_37: @ 8010308 - bx lr - thumb_func_end nullsub_37 - - thumb_func_start unref_sub_801030C -unref_sub_801030C: @ 801030C - movs r1, 0x6 - strh r1, [r0, 0x34] - movs r1, 0x1 - strh r1, [r0, 0x36] - ldr r1, _0801031C @ =sub_8010320 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_0801031C: .4byte sub_8010320 - thumb_func_end unref_sub_801030C - - thumb_func_start sub_8010320 -sub_8010320: @ 8010320 - push {r4,lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x36] - subs r0, 0x1 - strh r0, [r3, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08010374 - movs r0, 0x8 - strh r0, [r3, 0x36] - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r4, 0x5 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - bne _08010374 - ldrb r1, [r1] - adds r0, r4, 0 - ands r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r0, _0801037C @ =nullsub_37 - str r0, [r3, 0x1C] - ldr r0, _08010380 @ =gUnknown_03004284 - str r2, [r0] -_08010374: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0801037C: .4byte nullsub_37 -_08010380: .4byte gUnknown_03004284 - thumb_func_end sub_8010320 - - thumb_func_start sub_8010384 -sub_8010384: @ 8010384 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r0 - ldrh r0, [r0, 0x2E] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, r6, 2 - ldr r0, _080103A4 @ =0x02017800 - adds r1, r0 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _080103A8 - adds r4, r0, 0 - b _080103AC - .align 2, 0 -_080103A4: .4byte 0x02017800 -_080103A8: - mov r0, r9 - ldrh r4, [r0, 0x32] -_080103AC: - ldr r1, _08010414 @ =gUnknown_02024A6A - lsls r0, r6, 1 - adds r5, r0, r1 - ldrh r0, [r5] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r7, _08010418 @ =gEnemyParty - adds r0, r7 - movs r1, 0 - bl GetMonData - cmp r4, SPECIES_UNOWN - bne _08010430 - ldrh r0, [r5] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r7 - movs r1, 0 - bl GetMonData - adds r2, r0, 0 - movs r0, 0xC0 - lsls r0, 18 - ands r0, r2 - lsrs r0, 18 - movs r1, 0xC0 - lsls r1, 10 - ands r1, r2 - lsrs r1, 12 - orrs r0, r1 - movs r1, 0xC0 - lsls r1, 2 - ands r1, r2 - lsrs r1, 6 - orrs r0, r1 - movs r1, 0x3 - ands r1, r2 - orrs r0, r1 - movs r1, 0x1C - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0801041C - movs r0, SPECIES_UNOWN - b _08010426 - .align 2, 0 -_08010414: .4byte gUnknown_02024A6A -_08010418: .4byte gEnemyParty -_0801041C: - movs r1, 0xCE - lsls r1, 1 - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 -_08010426: - ldr r1, _0801042C @ =gMonFrontPicCoords - lsls r0, 2 - b _08010468 - .align 2, 0 -_0801042C: .4byte gMonFrontPicCoords -_08010430: - ldr r0, _08010448 @ =SPECIES_CASTFORM - cmp r4, r0 @ Check if pokemon species is Castform - bne _08010454 - ldr r0, _0801044C @ =gUnknownCastformCoords_0837F598 - ldr r1, _08010450 @ =gBattleMonForms - adds r1, r6, r1 - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x1] - b _0801046C - .align 2, 0 -_08010448: .4byte SPECIES_CASTFORM -_0801044C: .4byte gUnknownCastformCoords_0837F598 -_08010450: .4byte gBattleMonForms -_08010454: - movs r0, 0xCE - lsls r0, 1 - cmp r4, r0 - bls _08010464 - ldr r0, _08010460 @ =gMonFrontPicCoords - b _0801046A - .align 2, 0 -_08010460: .4byte gMonFrontPicCoords -_08010464: - ldr r1, _0801048C @ =gMonFrontPicCoords - lsls r0, r4, 2 -_08010468: - adds r0, r1 -_0801046A: - ldrb r0, [r0, 0x1] -_0801046C: - lsrs r1, r0, 3 - movs r0, 0x8 - subs r0, r1 - mov r1, r9 - strh r0, [r1, 0x34] - movs r0, 0x1 - strh r0, [r1, 0x36] - ldr r0, _08010490 @ =sub_8010494 - str r0, [r1, 0x1C] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801048C: .4byte gMonFrontPicCoords -_08010490: .4byte sub_8010494 - thumb_func_end sub_8010384 - - thumb_func_start sub_8010494 -sub_8010494: @ 8010494 - push {r4,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x36] - subs r0, 0x1 - strh r0, [r4, 0x36] - lsls r0, 16 - cmp r0, 0 - bne _08010510 - movs r0, 0x2 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x26] - adds r0, 0x8 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - subs r0, 0x1 - strh r0, [r4, 0x34] - lsls r0, 16 - cmp r0, 0 - bge _080104C8 - adds r0, r4, 0 - bl FreeSpriteOamMatrix - adds r0, r4, 0 - bl DestroySprite - b _08010510 -_080104C8: - ldrh r0, [r4, 0x2E] - lsls r0, 24 - lsrs r0, 24 - bl battle_get_per_side_status - ldr r1, _08010518 @ =gUnknown_081FAF4C - lsls r0, 24 - lsrs r0, 22 - adds r0, r1 - ldr r2, _0801051C @ =gBattleMonForms - movs r3, 0x2E - ldrsh r1, [r4, r3] - adds r1, r2 - ldrb r1, [r1] - lsls r1, 11 - ldr r2, [r0] - adds r2, r1 - movs r1, 0x34 - ldrsh r0, [r4, r1] - lsls r0, 8 - adds r2, r0 - movs r1, 0 - movs r0, 0xFF -_080104F6: - strb r1, [r2] - adds r2, 0x1 - subs r0, 0x1 - cmp r0, 0 - bge _080104F6 - ldr r0, _0801051C @ =gBattleMonForms - movs r2, 0x2E - ldrsh r1, [r4, r2] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - bl StartSpriteAnim -_08010510: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08010518: .4byte gUnknown_081FAF4C -_0801051C: .4byte gBattleMonForms - thumb_func_end sub_8010494 - - thumb_func_start sub_8010520 -sub_8010520: @ 8010520 - movs r1, 0x8 - strh r1, [r0, 0x34] - adds r1, r0, 0 - adds r1, 0x3E - ldrb r1, [r1] - lsls r1, 29 - lsrs r1, 31 - strh r1, [r0, 0x36] - ldr r1, _08010538 @ =sub_801053C - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_08010538: .4byte sub_801053C - thumb_func_end sub_8010520 - - thumb_func_start sub_801053C -sub_801053C: @ 801053C - push {lr} - adds r3, r0, 0 - ldrh r0, [r3, 0x34] - subs r0, 0x1 - strh r0, [r3, 0x34] - lsls r0, 16 - cmp r0, 0 - bne _0801056E - movs r0, 0x3E - adds r0, r3 - mov r12, r0 - ldrb r2, [r0] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - movs r0, 0x8 - strh r0, [r3, 0x34] -_0801056E: - pop {r0} - bx r0 - thumb_func_end sub_801053C - - thumb_func_start sub_8010574 -sub_8010574: @ 8010574 - movs r1, 0x3E - adds r1, r0 - mov r12, r1 - movs r1, 0x1 - ldrh r2, [r0, 0x36] - ands r2, r1 - lsls r2, 2 - mov r1, r12 - ldrb r3, [r1] - movs r1, 0x5 - negs r1, r1 - ands r1, r3 - orrs r1, r2 - mov r2, r12 - strb r1, [r2] - movs r1, 0 - strh r1, [r0, 0x36] - ldr r1, _0801059C @ =nullsub_37 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_0801059C: .4byte nullsub_37 - thumb_func_end sub_8010574 - - thumb_func_start sub_80105A0 -sub_80105A0: @ 80105A0 - ldr r1, _080105A8 @ =oac_poke_ally_ - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080105A8: .4byte oac_poke_ally_ - thumb_func_end sub_80105A0 - - thumb_func_start oac_poke_ally_ -oac_poke_ally_: @ 80105AC - push {lr} - adds r2, r0, 0 - ldr r0, _080105D4 @ =gUnknown_02024DE8 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080105D0 - ldrh r0, [r2, 0x24] - subs r0, 0x2 - strh r0, [r2, 0x24] - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - bne _080105D0 - ldr r0, _080105D8 @ =nullsub_86 - str r0, [r2, 0x1C] - strh r1, [r2, 0x30] -_080105D0: - pop {r0} - bx r0 - .align 2, 0 -_080105D4: .4byte gUnknown_02024DE8 -_080105D8: .4byte nullsub_86 - thumb_func_end oac_poke_ally_ - - thumb_func_start sub_80105DC -sub_80105DC: @ 80105DC - ldr r1, _080105E4 @ =nullsub_86 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_080105E4: .4byte nullsub_86 - thumb_func_end sub_80105DC - - thumb_func_start nullsub_86 -nullsub_86: @ 80105E8 - bx lr - thumb_func_end nullsub_86 - - thumb_func_start sub_80105EC -sub_80105EC: @ 80105EC - push {lr} - adds r2, r0, 0 - ldr r0, _08010610 @ =gUnknown_02024DE8 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0801060C - ldrh r0, [r2, 0x30] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - ldrh r0, [r2, 0x32] - ldrh r1, [r2, 0x26] - adds r0, r1 - strh r0, [r2, 0x26] -_0801060C: - pop {r0} - bx r0 - .align 2, 0 -_08010610: .4byte gUnknown_02024DE8 - thumb_func_end sub_80105EC - - thumb_func_start dp11b_obj_instanciate -dp11b_obj_instanciate: @ 8010614 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r10, r3 - cmp r1, 0 - beq _0801064C - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - ldr r1, _08010648 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - b _0801065A - .align 2, 0 -_08010648: .4byte 0x02017810 -_0801064C: - lsls r2, r4, 1 - adds r0, r2, r4 - lsls r0, 2 - ldr r1, _08010698 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 -_0801065A: - ands r0, r1 - adds r6, r2, 0 - cmp r0, 0 - bne _080106FA - ldr r0, _0801069C @ =objc_dp11b_pingpong - bl CreateInvisibleSpriteWithCallback - lsls r0, 24 - lsrs r5, r0, 24 - mov r0, r8 - cmp r0, 0x1 - bne _080106A8 - ldr r0, _080106A0 @ =gUnknown_03004340 - adds r0, r4, r0 - ldrb r7, [r0] - adds r0, r6, r4 - lsls r0, 2 - ldr r1, _08010698 @ =0x02017810 - adds r0, r1 - strb r5, [r0, 0x2] - ldrb r1, [r0] - movs r2, 0x2 - orrs r1, r2 - strb r1, [r0] - ldr r2, _080106A4 @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0x80 - b _080106CC - .align 2, 0 -_08010698: .4byte 0x02017810 -_0801069C: .4byte objc_dp11b_pingpong -_080106A0: .4byte gUnknown_03004340 -_080106A4: .4byte gSprites -_080106A8: - ldr r0, _08010708 @ =gUnknown_02024BE0 - adds r0, r4, r0 - ldrb r7, [r0] - adds r0, r6, r4 - lsls r0, 2 - ldr r1, _0801070C @ =0x02017810 - adds r0, r1 - strb r5, [r0, 0x3] - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - ldr r2, _08010710 @ =gSprites - lsls r3, r5, 4 - adds r0, r3, r5 - lsls r0, 2 - adds r0, r2 - movs r1, 0xC0 -_080106CC: - strh r1, [r0, 0x2E] - adds r4, r2, 0 - adds r1, r3, r5 - lsls r1, 2 - adds r1, r4 - mov r2, r9 - lsls r0, r2, 24 - asrs r0, 24 - movs r2, 0 - strh r0, [r1, 0x30] - mov r3, r10 - lsls r0, r3, 24 - asrs r0, 24 - strh r0, [r1, 0x32] - strh r7, [r1, 0x34] - mov r0, r8 - strh r0, [r1, 0x36] - lsls r0, r7, 4 - adds r0, r7 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x24] - strh r2, [r0, 0x26] -_080106FA: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010708: .4byte gUnknown_02024BE0 -_0801070C: .4byte 0x02017810 -_08010710: .4byte gSprites - thumb_func_end dp11b_obj_instanciate - - thumb_func_start dp11b_obj_free -dp11b_obj_free: @ 8010714 - push {r4,r5,lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x1 - bne _0801075C - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _08010754 @ =0x02017810 - adds r5, r0, r1 - ldrb r1, [r5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080107A0 - ldr r2, _08010758 @ =gSprites - ldrb r1, [r5, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldrb r1, [r5] - movs r0, 0x3 - negs r0, r0 - b _0801078C - .align 2, 0 -_08010754: .4byte 0x02017810 -_08010758: .4byte gSprites -_0801075C: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _080107A8 @ =0x02017810 - adds r5, r0, r1 - ldrb r1, [r5] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080107A0 - ldr r2, _080107AC @ =gSprites - ldrb r1, [r5, 0x3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x34] - lsls r1, 24 - lsrs r4, r1, 24 - bl DestroySprite - ldrb r1, [r5] - movs r0, 0x5 - negs r0, r0 -_0801078C: - ands r0, r1 - strb r0, [r5] - ldr r0, _080107AC @ =gSprites - lsls r1, r4, 4 - adds r1, r4 - lsls r1, 2 - adds r1, r0 - movs r0, 0 - strh r0, [r1, 0x24] - strh r0, [r1, 0x26] -_080107A0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080107A8: .4byte 0x02017810 -_080107AC: .4byte gSprites - thumb_func_end dp11b_obj_free - thumb_func_start objc_dp11b_pingpong objc_dp11b_pingpong: @ 80107B0 push {r4,r5,lr} diff --git a/src/battle_2.c b/src/battle_2.c index e012ab456..f2c0e8bc4 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1,4 +1,5 @@ #include "global.h" +#include "asm.h" #include "battle.h" #include "main.h" #include "text.h" @@ -10,6 +11,14 @@ #include "link.h" #include "name_string_util.h" #include "battle_setup.h" +#include "rng.h" +#include "sound.h" +#include "songs.h" + +struct MonCoords +{ + u8 x, y; +}; struct UnknownStruct5 { @@ -55,35 +64,65 @@ struct UnknownPokemonStruct2 /*0x1D*/ u8 language; }; +struct UnknownStruct9 +{ + u8 unk0; + u16 unk2; +}; + +struct UnknownStruct10 +{ + u8 unk0_0:1; + u8 unk0_1:1; + u8 unk0_2:1; + u8 filler1[1]; + u8 unk2; + u8 unk3; + u8 filler4[8]; +}; + extern const struct UnknownStruct5 gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; +extern void *const gUnknown_081FAF4C[]; +extern const u16 gUnknown_08D004E0[]; extern const struct Trainer gTrainers[]; extern const u8 gSpeciesNames[][11]; extern const struct BattleMove gBattleMoves[]; +extern const struct MonCoords gMonFrontPicCoords[]; +extern const struct MonCoords gCastformFrontSpriteCoords[]; extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) #define ewram160CB (ewram[0x160CB]) +#define ewram17800 ((struct UnknownStruct9 *)(ewram + 0x17800)) +#define ewram17810 ((struct UnknownStruct10 *)(ewram + 0x17810)) #define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000)) extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; +extern u16 gUnknown_02024A6A[]; +extern u8 gUnknown_02024BE0[]; extern u8 gUnknown_02024D1E[]; extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is. +extern u16 gUnknown_02024DE8; extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B4; extern u16 gUnknown_030041B8; extern struct Window gUnknown_030041D0; +extern u16 gUnknown_03004200; extern struct Window gUnknown_03004210; +extern u16 gUnknown_03004244; extern struct Window gUnknown_03004250; extern u16 gUnknown_03004240; extern u16 gUnknown_03004280; +extern u32 gUnknown_03004284; extern u16 gUnknown_03004288; extern u16 gUnknown_030042A0; extern u16 gUnknown_030042A4; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern MainCallback gUnknown_030042D0; +extern u8 gUnknown_03004340[]; extern struct UnknownStruct6 gUnknown_03004DE0; //extern u16 gUnknown_03004DE0[][0xA0]; // possibly? extern u16 gBattleTypeFlags; @@ -92,6 +131,7 @@ extern u8 gReservedSpritePaletteCount; extern u16 gTrainerBattleOpponent; extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; +extern u8 gBattleMonForms[]; extern void sub_800B858(void); extern void dp12_8087EA4(void); @@ -106,6 +146,11 @@ extern void sub_800DE30(u8); extern void sub_800B950(void); extern u8 battle_load_something(); extern void OpenPartyMenu(); +extern void sub_8089668(); +extern void sub_800D74C(); +extern void sub_804777C(u8); +extern void sub_8043DFC(); +extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); void sub_800E7F8(void); void sub_800EC9C(void); @@ -116,6 +161,17 @@ void sub_800F838(struct Sprite *); u8 CreateNPCTrainerParty(struct Pokemon *, u16); void sub_800FCFC(void); void sub_8010824(void); +void sub_80101B8(void); +void c2_081284E0(void); +void sub_8010278(struct Sprite *); +void sub_80102AC(struct Sprite *); +void nullsub_37(struct Sprite *); +void sub_8010320(struct Sprite *); +void sub_8010494(struct Sprite *); +void sub_801053C(struct Sprite *); +void oac_poke_ally_(struct Sprite *); +void nullsub_86(struct Sprite *); +void objc_dp11b_pingpong(struct Sprite *); void sub_800E7C4(void) { @@ -1030,7 +1086,7 @@ void sub_800FE20(struct Sprite *sprite) PlaySE(SE_BT_START); } -void sub_800FE40(u8 a) +void sub_800FE40(u8 taskId) { struct Pokemon *sp4 = NULL; struct Pokemon *sp8 = NULL; @@ -1038,21 +1094,20 @@ void sub_800FE40(u8 a) u32 r7; s32 i; - - if (gBattleTypeFlags & 0x40) + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { switch (gLinkPlayers[r2].lp_field_18) { - case 1: - case 3: - sp4 = gEnemyParty; - sp8 = gPlayerParty; - goto foo; case 0: case 2: sp4 = gPlayerParty; sp8 = gEnemyParty; break; + case 1: + case 3: + sp4 = gEnemyParty; + sp8 = gPlayerParty; + break; } } else @@ -1060,51 +1115,398 @@ void sub_800FE40(u8 a) sp4 = gPlayerParty; sp8 = gEnemyParty; } - //_0800FEBC + r7 = 0; for (i = 0; i < 6; i++) { - u16 r5 = GetMonData(&sp4[i], MON_DATA_SPECIES2); - u16 r6 = GetMonData(&sp4[i], MON_DATA_HP); - u32 r1 = GetMonData(&sp4[i], MON_DATA_STATUS); + u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2); + u16 hp = GetMonData(&sp4[i], MON_DATA_HP); + u32 status = GetMonData(&sp4[i], MON_DATA_STATUS); - if (r5 == 0) + if (species == 0) continue; - if (r5 != SPECIES_EGG && r6 != 0 && r1 == 0) + if (species != SPECIES_EGG && hp != 0 && status == 0) r7 |= 1 << i * 2; - if (r5 == 0) + if (species == 0) continue; - if (r6 != 0 && (r5 == SPECIES_EGG || r1 != 0)) + if (hp != 0 && (species == SPECIES_EGG || status != 0)) r7 |= 2 << i * 2; - if (r5 == 0) + if (species == 0) continue; - if (r5 != SPECIES_EGG && r6 == 0) + if (species != SPECIES_EGG && hp == 0) r7 |= 3 << i * 2; } - gTasks[a].data[3] = r7; + gTasks[taskId].data[3] = r7; + r7 = 0; - for (i = 0; i < 6; i++) //_0800FF6A + for (i = 0; i < 6; i++) { - u16 r5 = GetMonData(&sp8[i], MON_DATA_SPECIES2); - u16 r6 = GetMonData(&sp8[i], MON_DATA_HP); - u32 r1 = GetMonData(&sp8[i], MON_DATA_STATUS); + u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2); + u16 hp = GetMonData(&sp8[i], MON_DATA_HP); + u32 status = GetMonData(&sp8[i], MON_DATA_STATUS); - if (r5 == 0) + if (species == 0) continue; - if (r5 != SPECIES_EGG && r6 != 0 && r1 == 0) + if (species != SPECIES_EGG && hp != 0 && status == 0) r7 |= 1 << i * 2; - if (r5 == 0) + if (species == 0) continue; - if (r6 != 0 && (r5 == SPECIES_EGG || r1 != 0)) + if (hp != 0 && (species == SPECIES_EGG || status != 0)) r7 |= 2 << i * 2; - if (r5 == 0) + if (species == 0) continue; - if (r5 != SPECIES_EGG && r6 == 0) + if (species != SPECIES_EGG && hp == 0) r7 |= 3 << i * 2; } - gTasks[a].data[4] = r7; + gTasks[taskId].data[4] = r7; +} + +void c2_8011A1C(void) +{ + s32 i; + u8 taskId; + + SetHBlankCallback(NULL); + SetVBlankCallback(NULL); + CpuFill32(0, (void *)VRAM, VRAM_SIZE); + REG_MOSAIC = 0; + REG_WIN0H = 0xF0; + REG_WIN0V = 0x5051; + REG_WININ = 0; + REG_WINOUT = 0; + gUnknown_030042C4 = 0xF0; + gUnknown_03004240 = 0x5051; + dp12_8087EA4(); + + for (i = 0; i < 80; i++) + { + gUnknown_03004DE0.unk0[i] = 0xF0; + gUnknown_03004DE0.unk780[i] = 0xF0; + } + for (i = 80; i < 160; i++) + { + asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter + gUnknown_03004DE0.unk0[i] = 0xFF10; + gUnknown_03004DE0.unk780[i] = 0xFF10; + } + SetUpWindowConfig(&gWindowConfig_81E6C58); + ResetPaletteFade(); + gUnknown_030042A4 = 0; + gUnknown_030042A0 = 0; + gUnknown_030042C0 = 0; + gUnknown_030041B4 = 0; + gUnknown_03004288 = 0; + gUnknown_03004280 = 0; + gUnknown_030041B0 = 0; + gUnknown_030041B8 = 0; + + InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58); + InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0); + InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC); + sub_800D6D4(); + LoadCompressedPalette(gUnknown_08D004E0, 0, 64); + sub_800D74C(); + ResetSpriteData(); + ResetTasks(); + sub_800E23C(); + REG_WINOUT = 0x37; + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 4; + SetVBlankCallback(sub_800FCFC); + taskId = CreateTask(sub_800DE30, 0); + gTasks[taskId].data[1] = 0x10E; + gTasks[taskId].data[2] = 0x5A; + gTasks[taskId].data[5] = 1; + sub_800FE40(taskId); + SetMainCallback2(sub_80101B8); + gUnknown_02024D1E[0] = 0; +} + +void sub_80101B8(void) +{ + c2_081284E0(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + RunTasks(); +} + +void c2_081284E0(void) +{ + switch (gUnknown_02024D1E[0]) + { + case 0: + gUnknown_02024D1E[1] = 0xFF; + gUnknown_02024D1E[0]++; + break; + case 1: + gUnknown_02024D1E[1]--; + if (gUnknown_02024D1E[1] == 0) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gUnknown_02024D1E[0]++; + } + break; + case 2: + if (!gPaletteFade.active) + SetMainCallback2(gMain.savedCallback); + break; + } +} + +void oac_poke_opponent(struct Sprite *sprite) +{ + sprite->callback = sub_8010278; + StartSpriteAnimIfDifferent(sprite, 0); + BeginNormalPaletteFade(0x00020000, 0, 10, 10, 0x3DEF); +} + +void sub_8010278(struct Sprite *sprite) +{ + if ((gUnknown_02024DE8 & 1) == 0) + { + sprite->pos2.x += 2; + if (sprite->pos2.x == 0) + { + sprite->callback = sub_80102AC; + PlayCry1(sprite->data2, 25); + } + } +} + +void sub_80102AC(struct Sprite *sprite) +{ + if (sprite->animEnded) + { + sub_804777C(sprite->data0); + sub_8043DFC(gUnknown_03004340[sprite->data0]); + sprite->callback = nullsub_37; + StartSpriteAnimIfDifferent(sprite, 0); + BeginNormalPaletteFade(0x00020000, 0, 10, 0, 0x3DEF); + } +} + +void nullsub_37(struct Sprite *sprite) +{ +} + +void unref_sub_801030C(struct Sprite *sprite) +{ + sprite->data3 = 6; + sprite->data4 = 1; + sprite->callback = sub_8010320; +} + +void sub_8010320(struct Sprite *sprite) +{ + sprite->data4--; + if (sprite->data4 == 0) + { + sprite->data4 = 8; + sprite->invisible ^= 1; + sprite->data3--; + if (sprite->data3 == 0) + { + sprite->invisible = FALSE; + sprite->callback = nullsub_37; + gUnknown_03004284 = 0; + } + } +} + +void sub_8010384(struct Sprite *sprite) +{ + u8 r6 = sprite->data0; + u16 species; + u8 yOffset; + + if (ewram17800[r6].unk2 != 0) + species = ewram17800[r6].unk2; + else + species = sprite->data2; + + GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); // Unused return value + + if (species == SPECIES_UNOWN) + { + u32 personalityValue = GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); + u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C); + u16 unownSpecies; + + if (unownForm == 0) + unownSpecies = SPECIES_UNOWN; // Use the A Unown form + else + unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters + + yOffset = gMonFrontPicCoords[unownSpecies].y; + } + else if (species == SPECIES_CASTFORM) + { + yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y; + } + else if (species > NUM_SPECIES) + { + yOffset = gMonFrontPicCoords[SPECIES_NONE].y; + } + else + { + yOffset = gMonFrontPicCoords[species].y; + } + + sprite->data3 = 8 - yOffset / 8; + sprite->data4 = 1; + sprite->callback = sub_8010494; +} + +void sub_8010494(struct Sprite *sprite) +{ + s32 i; + + sprite->data4--; + if (sprite->data4 == 0) + { + sprite->data4 = 2; + sprite->pos2.y += 8; + sprite->data3--; + if (sprite->data3 < 0) + { + FreeSpriteOamMatrix(sprite); + DestroySprite(sprite); + } + else + { + u8 *dst = (u8 *)gUnknown_081FAF4C[battle_get_per_side_status(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8); + + for (i = 0; i < 0x100; i++) + *(dst++) = 0; + StartSpriteAnim(sprite, gBattleMonForms[sprite->data0]); + } + } +} + +void sub_8010520(struct Sprite *sprite) +{ + sprite->data3 = 8; + sprite->data4 = sprite->invisible; + sprite->callback = sub_801053C; +} + +void sub_801053C(struct Sprite *sprite) +{ + sprite->data3--; + if (sprite->data3 == 0) + { + sprite->invisible ^= 1; + sprite->data3 = 8; + } +} + +void sub_8010574(struct Sprite *sprite) +{ + sprite->invisible = sprite->data4; + sprite->data4 = FALSE; + sprite->callback = nullsub_37; +} + +void sub_80105A0(struct Sprite *sprite) +{ + sprite->callback = oac_poke_ally_; +} + +void oac_poke_ally_(struct Sprite *sprite) +{ + if ((gUnknown_02024DE8 & 1) == 0) + { + sprite->pos2.x -= 2; + if (sprite->pos2.x == 0) + { + sprite->callback = nullsub_86; + sprite->data1 = 0; + } + } +} + +void sub_80105DC(struct Sprite *sprite) +{ + sprite->callback = nullsub_86; +} + +void nullsub_86(struct Sprite *sprite) +{ +} + +void sub_80105EC(struct Sprite *sprite) +{ + if ((gUnknown_02024DE8 & 1) == 0) + { + sprite->pos2.x += sprite->data1; + sprite->pos2.y += sprite->data2; + } +} + +void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d) +{ + u8 spriteId; + u8 r7; + + if (b) + { + if (ewram17810[a].unk0_1) + return; + } + else + { + if (ewram17810[a].unk0_2) + return; + } + + spriteId = CreateInvisibleSpriteWithCallback(objc_dp11b_pingpong); + if (b == TRUE) + { + r7 = gUnknown_03004340[a]; + ewram17810[a].unk2 = spriteId; + ewram17810[a].unk0_1 = 1; + gSprites[spriteId].data0 = 0x80; + } + else + { + r7 = gUnknown_02024BE0[a]; + ewram17810[a].unk3 = spriteId; + ewram17810[a].unk0_2 = 1; + gSprites[spriteId].data0 = 0xC0; + } + gSprites[spriteId].data1 = c; + gSprites[spriteId].data2 = d; + gSprites[spriteId].data3 = r7; + gSprites[spriteId].data4 = b; + gSprites[r7].pos2.x = 0; + gSprites[r7].pos2.y = 0; +} + +void dp11b_obj_free(u8 a, u8 b) +{ + u8 r4; + + if (b == TRUE) + { + if (!ewram17810[a].unk0_1) + return; + r4 = gSprites[ewram17810[a].unk2].data3; + DestroySprite(&gSprites[ewram17810[a].unk2]); + ewram17810[a].unk0_1 = 0; + } + else + { + if (!ewram17810[a].unk0_2) + return; + r4 = gSprites[ewram17810[a].unk3].data3; + DestroySprite(&gSprites[ewram17810[a].unk3]); + ewram17810[a].unk0_2 = 0; + } + gSprites[r4].pos2.x = 0; + gSprites[r4].pos2.y = 0; } diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index b216bbe97..437c62400 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -20,7 +20,6 @@ #define NUM_BATTLE_SLOTS 4 #define gBattleMonPartyPositions gUnknown_02024A6A -#define gCastformFrontSpriteCoords gUnknownCastformCoords_0837F598 #define gCastformElevations gUnknownCastformData_0837F5A8 #define gCastformBackSpriteYCoords gUnknown_0837F5AC #define gTransformPersonalities gUnknown_02024E70 -- cgit v1.2.3 From 28fa9b294fb6c6c078462ad2878a40875c5807e2 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Sun, 14 May 2017 11:14:54 -0500 Subject: formatting --- src/battle_2.c | 644 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 322 insertions(+), 322 deletions(-) diff --git a/src/battle_2.c b/src/battle_2.c index f2c0e8bc4..3e147e0c7 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -621,25 +621,42 @@ void sub_800F298(void) BuildOamBuffer(); switch (gUnknown_02024D1E[0]) { - case 0: - if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + case 0: + if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) + { + ewram0.unk0 = 1; + ewram0.unk1 = 1; + sub_800E9EC(); + sub_800EAAC(); + SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20); + gUnknown_02024D1E[0]++; + } + break; + case 1: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + u8 taskId; + + ResetBlockReceivedFlags(); + id = 0; + if (gBlockRecvBuffer[0][0] == 0x100) { - ewram0.unk0 = 1; - ewram0.unk1 = 1; - sub_800E9EC(); - sub_800EAAC(); - SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20); - gUnknown_02024D1E[0]++; + if (playerId == 0) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + id++; } - break; - case 1: - if ((GetBlockReceivedStatus() & 0xF) == 0xF) + if (id == 0) { - u8 taskId; + s32 i; - ResetBlockReceivedFlags(); - id = 0; - if (gBlockRecvBuffer[0][0] == 0x100) + for (i = 0; i < MAX_LINK_PLAYERS; i++) + { + if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0]) + break; + } + if (i == MAX_LINK_PLAYERS) { if (playerId == 0) gBattleTypeFlags |= 12; @@ -649,231 +666,214 @@ void sub_800F298(void) } if (id == 0) { - s32 i; - - for (i = 0; i < MAX_LINK_PLAYERS; i++) + while (id < MAX_LINK_PLAYERS) { - if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0]) + if (gBlockRecvBuffer[id][0] == 0x0101 && id != playerId) + if (id < playerId) + break; + if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId) break; - } - if (i == MAX_LINK_PLAYERS) - { - if (playerId == 0) - gBattleTypeFlags |= 12; - else - gBattleTypeFlags |= 8; id++; } - if (id == 0) - { - while (id < MAX_LINK_PLAYERS) - { - if (gBlockRecvBuffer[id][0] == 0x0101 && id != playerId) - if (id < playerId) - break; - if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId) - break; - id++; - } - if (id == MAX_LINK_PLAYERS) - gBattleTypeFlags |= 12; - else - gBattleTypeFlags |= 8; - } + if (id == MAX_LINK_PLAYERS) + gBattleTypeFlags |= 12; + else + gBattleTypeFlags |= 8; + } + } + sub_800EB08(); + memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3); + taskId = CreateTask(sub_800DE30, 0); + gTasks[taskId].data[1] = 0x10E; + gTasks[taskId].data[2] = 0x5A; + gTasks[taskId].data[5] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 1: + gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F; + break; + case 2: + gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; + case 3: + gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; + break; } - sub_800EB08(); - memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3); - taskId = CreateTask(sub_800DE30, 0); - gTasks[taskId].data[1] = 0x10E; - gTasks[taskId].data[2] = 0x5A; - gTasks[taskId].data[5] = 0; - gTasks[taskId].data[3] = 0; - gTasks[taskId].data[4] = 0; - for (id = 0; id < MAX_LINK_PLAYERS; id++) + } + ZeroPlayerPartyMons(); + ZeroEnemyPartyMons(); + gUnknown_02024D1E[0]++; + goto step_2; + } + break; + case 2: + step_2: + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2); + gUnknown_02024D1E[0]++; + } + break; + case 3: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; id++) + { + if (id == playerId) { switch (gLinkPlayers[id].lp_field_18) { - case 0: - gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F; - break; - case 1: - gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F; - break; - case 2: - gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; - break; - case 3: - gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6; - break; + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; } } - ZeroPlayerPartyMons(); - ZeroEnemyPartyMons(); - gUnknown_02024D1E[0]++; - goto step_2; - } - break; - case 2: - step_2: - if (sub_8007ECC()) - { - SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2); - gUnknown_02024D1E[0]++; - } - break; - case 3: - if ((GetBlockReceivedStatus() & 0xF) == 0xF) - { - ResetBlockReceivedFlags(); - for (id = 0; id < MAX_LINK_PLAYERS; id++) + else { - if (id == playerId) + if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) + || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) { switch (gLinkPlayers[id].lp_field_18) { - case 0: - case 3: - memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); - break; - case 1: - case 2: - memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); - break; + case 0: + case 3: + memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; } } else { - if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) - || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) - { - switch (gLinkPlayers[id].lp_field_18) - { - case 0: - case 3: - memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); - break; - case 1: - case 2: - memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); - break; - } - } - else + switch (gLinkPlayers[id].lp_field_18) { - switch (gLinkPlayers[id].lp_field_18) - { - case 0: - case 3: - memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); - break; - case 1: - case 2: - memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); - break; - } + case 0: + case 3: + memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; + case 1: + case 2: + memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2); + break; } } } - gUnknown_02024D1E[0]++; - } - break; - case 4: - if (sub_8007ECC()) - { - SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon)); - gUnknown_02024D1E[0]++; } - break; - case 5: - if ((GetBlockReceivedStatus() & 0xF) == 0xF) + gUnknown_02024D1E[0]++; + } + break; + case 4: + if (sub_8007ECC()) + { + SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon)); + gUnknown_02024D1E[0]++; + } + break; + case 5: + if ((GetBlockReceivedStatus() & 0xF) == 0xF) + { + ResetBlockReceivedFlags(); + for (id = 0; id < MAX_LINK_PLAYERS; id++) { - ResetBlockReceivedFlags(); - for (id = 0; id < MAX_LINK_PLAYERS; id++) + if (id == playerId) { - if (id == playerId) + switch (gLinkPlayers[id].lp_field_18) + { + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + } + } + else + { + if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) + || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) { switch (gLinkPlayers[id].lp_field_18) { - case 0: - case 3: - memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); - break; - case 1: - case 2: - memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); - break; + case 0: + case 3: + memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; } } else { - if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1)) - || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1))) - { - switch (gLinkPlayers[id].lp_field_18) - { - case 0: - case 3: - memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); - break; - case 1: - case 2: - memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); - break; - } - } - else + switch (gLinkPlayers[id].lp_field_18) { - switch (gLinkPlayers[id].lp_field_18) - { - case 0: - case 3: - memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); - break; - case 1: - case 2: - memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); - break; - } + case 0: + case 3: + memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; + case 1: + case 2: + memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon)); + break; } } } - - shedinja_something(&gPlayerParty[0]); - shedinja_something(&gPlayerParty[1]); - shedinja_something(&gPlayerParty[2]); - shedinja_something(&gPlayerParty[3]); - shedinja_something(&gPlayerParty[4]); - shedinja_something(&gPlayerParty[5]); - - shedinja_something(&gEnemyParty[0]); - shedinja_something(&gEnemyParty[1]); - shedinja_something(&gEnemyParty[2]); - shedinja_something(&gEnemyParty[3]); - shedinja_something(&gEnemyParty[4]); - shedinja_something(&gEnemyParty[5]); - - gUnknown_02024D1E[0]++; } - break; - case 6: - sub_800B950(); + + shedinja_something(&gPlayerParty[0]); + shedinja_something(&gPlayerParty[1]); + shedinja_something(&gPlayerParty[2]); + shedinja_something(&gPlayerParty[3]); + shedinja_something(&gPlayerParty[4]); + shedinja_something(&gPlayerParty[5]); + + shedinja_something(&gEnemyParty[0]); + shedinja_something(&gEnemyParty[1]); + shedinja_something(&gEnemyParty[2]); + shedinja_something(&gEnemyParty[3]); + shedinja_something(&gEnemyParty[4]); + shedinja_something(&gEnemyParty[5]); + gUnknown_02024D1E[0]++; - gUnknown_02024D1E[1] = 0; - gUnknown_02024D1E[2] = 0; - break; - case 7: - if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) + } + break; + case 6: + sub_800B950(); + gUnknown_02024D1E[0]++; + gUnknown_02024D1E[1] = 0; + gUnknown_02024D1E[2] = 0; + break; + case 7: + if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) + { + gUnknown_030042D0 = gMain.callback1; + gMain.callback1 = sub_8010824; + SetMainCallback2(sub_800F808); + if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - gUnknown_030042D0 = gMain.callback1; - gMain.callback1 = sub_8010824; - SetMainCallback2(sub_800F808); - if (gBattleTypeFlags & BATTLE_TYPE_LINK) - { - gTrainerBattleOpponent = 0x800; - gBattleTypeFlags |= BATTLE_TYPE_20; - } + gTrainerBattleOpponent = 0x800; + gBattleTypeFlags |= BATTLE_TYPE_20; } - break; + } + break; } } @@ -898,42 +898,42 @@ void sub_800F838(struct Sprite *sprite) switch (sprite->data0) { - case 0: - sprite->data0++; - sprite->data1 = 0; - sprite->data2 = 0x281; - sprite->data3 = 0; - sprite->data4 = 1; - // fall through - case 1: - sprite->data4--; - if (sprite->data4 == 0) - { - s32 i; - s32 r2; - s32 r0; + case 0: + sprite->data0++; + sprite->data1 = 0; + sprite->data2 = 0x281; + sprite->data3 = 0; + sprite->data4 = 1; + // fall through + case 1: + sprite->data4--; + if (sprite->data4 == 0) + { + s32 i; + s32 r2; + s32 r0; - sprite->data4 = 2; - r2 = sprite->data1 + sprite->data3 * 32; - r0 = sprite->data2 - sprite->data3 * 32; - for (i = 0; i < 29; i += 2) - { - arr[r2 + i] = 0x3D; - arr[r0 + i] = 0x3D; - } - sprite->data3++; - if (sprite->data3 == 21) - { - sprite->data0++; - sprite->data1 = 32; - } + sprite->data4 = 2; + r2 = sprite->data1 + sprite->data3 * 32; + r0 = sprite->data2 - sprite->data3 * 32; + for (i = 0; i < 29; i += 2) + { + arr[r2 + i] = 0x3D; + arr[r0 + i] = 0x3D; } - break; - case 2: - sprite->data1--; - if (sprite->data1 == 20) - SetMainCallback2(sub_800E7C4); - break; + sprite->data3++; + if (sprite->data3 == 21) + { + sprite->data0++; + sprite->data1 = 32; + } + } + break; + case 2: + sprite->data1--; + if (sprite->data1 == 20) + SetMainCallback2(sub_800E7C4); + break; } } @@ -966,65 +966,65 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) switch (gTrainers[trainerNum].partyFlags) { - case 0: - { - struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party; - - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; - CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); - break; - } - case 1: - { - struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party; + case 0: + { + struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party; + + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + break; + } + case 1: + { + struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party; - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; - CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); - for (j = 0; j < 4; j++) - { - SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]); - SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); - } - break; - } - case 2: + for (j = 0; j < 4; j++) { - struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party; + SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); + } + break; + } + case 2: + { + struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party; - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; - CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); - SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem); - break; - } - case 3: - { - struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party; + SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem); + break; + } + case 3: + { + struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party; - for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) - nameHash += gSpeciesNames[partyData[i].species][j]; - personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; - CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); + for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++) + nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; + fixedIV = partyData[i].iv * 31 / 255; + CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0); - SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem); - for (j = 0; j < 4; j++) - { - SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]); - SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); - } - break; + SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem); + for (j = 0; j < 4; j++) + { + SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]); + SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); } + break; + } } } gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; @@ -1093,7 +1093,7 @@ void sub_800FE40(u8 taskId) u8 r2 = ewram160CB; u32 r7; s32 i; - + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { switch (gLinkPlayers[r2].lp_field_18) @@ -1122,41 +1122,41 @@ void sub_800FE40(u8 taskId) u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2); u16 hp = GetMonData(&sp4[i], MON_DATA_HP); u32 status = GetMonData(&sp4[i], MON_DATA_STATUS); - + if (species == 0) continue; if (species != SPECIES_EGG && hp != 0 && status == 0) r7 |= 1 << i * 2; - + if (species == 0) continue; if (hp != 0 && (species == SPECIES_EGG || status != 0)) r7 |= 2 << i * 2; - + if (species == 0) continue; if (species != SPECIES_EGG && hp == 0) r7 |= 3 << i * 2; } gTasks[taskId].data[3] = r7; - + r7 = 0; for (i = 0; i < 6; i++) { u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2); u16 hp = GetMonData(&sp8[i], MON_DATA_HP); u32 status = GetMonData(&sp8[i], MON_DATA_STATUS); - + if (species == 0) continue; if (species != SPECIES_EGG && hp != 0 && status == 0) r7 |= 1 << i * 2; - + if (species == 0) continue; if (hp != 0 && (species == SPECIES_EGG || status != 0)) r7 |= 2 << i * 2; - + if (species == 0) continue; if (species != SPECIES_EGG && hp == 0) @@ -1169,7 +1169,7 @@ void c2_8011A1C(void) { s32 i; u8 taskId; - + SetHBlankCallback(NULL); SetVBlankCallback(NULL); CpuFill32(0, (void *)VRAM, VRAM_SIZE); @@ -1181,7 +1181,7 @@ void c2_8011A1C(void) gUnknown_030042C4 = 0xF0; gUnknown_03004240 = 0x5051; dp12_8087EA4(); - + for (i = 0; i < 80; i++) { gUnknown_03004DE0.unk0[i] = 0xF0; @@ -1239,22 +1239,22 @@ void c2_081284E0(void) { switch (gUnknown_02024D1E[0]) { - case 0: - gUnknown_02024D1E[1] = 0xFF; + case 0: + gUnknown_02024D1E[1] = 0xFF; + gUnknown_02024D1E[0]++; + break; + case 1: + gUnknown_02024D1E[1]--; + if (gUnknown_02024D1E[1] == 0) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); gUnknown_02024D1E[0]++; - break; - case 1: - gUnknown_02024D1E[1]--; - if (gUnknown_02024D1E[1] == 0) - { - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gUnknown_02024D1E[0]++; - } - break; - case 2: - if (!gPaletteFade.active) - SetMainCallback2(gMain.savedCallback); - break; + } + break; + case 2: + if (!gPaletteFade.active) + SetMainCallback2(gMain.savedCallback); + break; } } @@ -1323,32 +1323,32 @@ void sub_8010384(struct Sprite *sprite) u8 r6 = sprite->data0; u16 species; u8 yOffset; - + if (ewram17800[r6].unk2 != 0) species = ewram17800[r6].unk2; else species = sprite->data2; - + GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); // Unused return value - + if (species == SPECIES_UNOWN) { u32 personalityValue = GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C); u16 unownSpecies; - + if (unownForm == 0) unownSpecies = SPECIES_UNOWN; // Use the A Unown form else unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters - + yOffset = gMonFrontPicCoords[unownSpecies].y; } else if (species == SPECIES_CASTFORM) { yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y; } - else if (species > NUM_SPECIES) + else if (species > NUM_SPECIES) { yOffset = gMonFrontPicCoords[SPECIES_NONE].y; } @@ -1356,7 +1356,7 @@ void sub_8010384(struct Sprite *sprite) { yOffset = gMonFrontPicCoords[species].y; } - + sprite->data3 = 8 - yOffset / 8; sprite->data4 = 1; sprite->callback = sub_8010494; @@ -1365,7 +1365,7 @@ void sub_8010384(struct Sprite *sprite) void sub_8010494(struct Sprite *sprite) { s32 i; - + sprite->data4--; if (sprite->data4 == 0) { @@ -1380,7 +1380,7 @@ void sub_8010494(struct Sprite *sprite) else { u8 *dst = (u8 *)gUnknown_081FAF4C[battle_get_per_side_status(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8); - + for (i = 0; i < 0x100; i++) *(dst++) = 0; StartSpriteAnim(sprite, gBattleMonForms[sprite->data0]); @@ -1452,7 +1452,7 @@ void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d) { u8 spriteId; u8 r7; - + if (b) { if (ewram17810[a].unk0_1) @@ -1463,7 +1463,7 @@ void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d) if (ewram17810[a].unk0_2) return; } - + spriteId = CreateInvisibleSpriteWithCallback(objc_dp11b_pingpong); if (b == TRUE) { @@ -1490,7 +1490,7 @@ void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d) void dp11b_obj_free(u8 a, u8 b) { u8 r4; - + if (b == TRUE) { if (!ewram17810[a].unk0_1) -- cgit v1.2.3 From fe5f0749278b7f6fb18d39ac2aab6db1de822625 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 00:35:20 -0400 Subject: Disassemble a function called by the secret base clearing routine --- asm/secret_base.s | 125 --------------------- data/scripts/maps/SlateportCity.inc | 8 +- .../maps/SlateportCity_OceanicMuseum_1F.inc | 8 +- include/global.h | 1 + ld_script.txt | 1 + src/secret_base_80bb4ac.c | 32 ++++++ 6 files changed, 42 insertions(+), 133 deletions(-) create mode 100755 src/secret_base_80bb4ac.c diff --git a/asm/secret_base.s b/asm/secret_base.s index 81225ba4b..607e1644f 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,131 +6,6 @@ .text - thumb_func_start sub_80BB4AC -sub_80BB4AC: @ 80BB4AC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - movs r0, 0 - strb r0, [r3] - movs r2, 0 - adds r4, r3, 0x2 - movs r5, 0xFF -_080BB4C4: - adds r0, r4, r2 - ldrb r1, [r0] - orrs r1, r5 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x6 - bls _080BB4C4 - movs r2, 0 - adds r5, r3, 0 - adds r5, 0x12 - adds r6, r3, 0 - adds r6, 0x22 - adds r7, r3, 0 - adds r7, 0x4C - adds r0, r3, 0 - adds r0, 0x34 - str r0, [sp] - adds r1, r3, 0 - adds r1, 0x9A - str r1, [sp, 0x4] - movs r0, 0x7C - adds r0, r3 - mov r10, r0 - movs r1, 0x88 - adds r1, r3 - mov r9, r1 - movs r0, 0x94 - adds r0, r3 - mov r8, r0 - adds r1, r3, 0 - adds r1, 0x9 - movs r4, 0 -_080BB508: - adds r0, r1, r2 - strb r4, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x3 - bls _080BB508 - movs r0, 0 - movs r1, 0 - strh r1, [r3, 0xE] - strb r0, [r3, 0x10] - strb r0, [r3, 0x11] - movs r0, 0 - strb r0, [r3, 0x1] - movs r2, 0 - adds r4, r5, 0 - adds r3, r6, 0 -_080BB52A: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r3, r2 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _080BB52A - movs r2, 0 - mov r12, r7 - movs r5, 0 -_080BB542: - movs r1, 0 - adds r7, r2, 0x1 - lsls r4, r2, 2 - lsls r6, r2, 1 - adds r3, r4, 0 -_080BB54C: - adds r0, r3, r1 - lsls r0, 1 - add r0, r12 - strh r5, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080BB54C - ldr r1, [sp] - adds r0, r1, r4 - str r5, [r0] - ldr r1, [sp, 0x4] - adds r0, r1, r2 - strb r5, [r0] - mov r1, r10 - adds r0, r1, r6 - strh r5, [r0] - mov r1, r9 - adds r0, r1, r6 - strh r5, [r0] - mov r1, r8 - adds r0, r1, r2 - strb r5, [r0] - lsls r0, r7, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080BB542 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB4AC - thumb_func_start ResetSecretBase ResetSecretBase: @ 80BB594 push {lr} diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc index 19f9af2eb..6125c4871 100644 --- a/data/scripts/maps/SlateportCity.inc +++ b/data/scripts/maps/SlateportCity.inc @@ -4,11 +4,11 @@ SlateportCity_MapScripts:: @ 814BA36 SlateportCity_MapScript1_14BA3C:: @ 814BA3C .ifdef SAPPHIRE - setvar 0x4010, 118 - setvar 0x4011, 117 + setvar 0x4010, MAP_OBJ_GFX_AQUA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_AQUA_MEMBER_M .else - setvar 0x4010, 120 - setvar 0x4011, 119 + setvar 0x4010, MAP_OBJ_GFX_MAGMA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_MAGMA_MEMBER_M .endif setvar 0x40aa, 0 call SlateportCity_EventScript_14BA5C diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc index 0bfeb4f5a..e84f8ccc6 100644 --- a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc +++ b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc @@ -4,11 +4,11 @@ SlateportCity_OceanicMuseum_1F_MapScripts:: @ 8155ACA SlateportCity_OceanicMuseum_1F_MapScript1_155AD0:: @ 8155AD0 .ifdef SAPPHIRE - setvar 0x4010, 118 - setvar 0x4011, 117 + setvar 0x4010, MAP_OBJ_GFX_AQUA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_AQUA_MEMBER_M .else - setvar 0x4010, 120 - setvar 0x4011, 119 + setvar 0x4010, MAP_OBJ_GFX_MAGMA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_MAGMA_MEMBER_M .endif end diff --git a/include/global.h b/include/global.h index 4cbbef5cc..e106e2b6f 100644 --- a/include/global.h +++ b/include/global.h @@ -98,6 +98,7 @@ struct SecretBaseRecord u8 sbr_field_1_0:4; u8 gender:1; u8 sbr_field_1_5:1; + u8 sbr_field_1_6:2; u8 sbr_field_2[7]; // 0xFF bytes? u8 trainerId[4]; // byte 0 is used for determining trainer class u16 sbr_field_e; diff --git a/ld_script.txt b/ld_script.txt index 0cc6ef0f0..99b19b5e0 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -174,6 +174,7 @@ SECTIONS { src/record_mixing.o(.text); asm/record_mixing.o(.text); asm/sound_check_menu.o(.text); + src/secret_base_80bb4ac.o(.text); asm/secret_base.o(.text); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c new file mode 100755 index 000000000..f3f3641fc --- /dev/null +++ b/src/secret_base_80bb4ac.c @@ -0,0 +1,32 @@ +#include "global.h" + +void sub_80BB4AC(struct SecretBaseRecord *record) { + u16 i; + u16 j; + record->sbr_field_0 = 0; + for (i=0; i<7; i++) + record->sbr_field_2[i] = 0xff; + for (i=0; i<4; i++) + record->trainerId[i] = 0x00; + record->sbr_field_e = 0; + record->sbr_field_10 = 0; + record->sbr_field_11 = 0; + record->sbr_field_1_0 = 0; + record->gender = 0; + record->sbr_field_1_5 = 0; + record->sbr_field_1_6 = 0; + for (i=0; i<16; i++) { + record->decorations[i] = 0; + record->sbr_field_22[i] = 0; + } + for (i=0; i<6; i++) { + for (j=0; j<4; j++) { + record->partyMoves[i * 4 + j] = 0; + } + record->partyPersonality[i] = 0; + record->partyEVs[i] = 0; + record->partySpecies[i] = 0; + record->partyHeldItems[i] = 0; + record->partyLevels[i] = 0; + } +} -- cgit v1.2.3 From a6840f01f49737c7db2487c252ddf0b1de16db7f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 01:19:07 -0400 Subject: More secret base functions decompiled --- asm/secret_base.s | 36 ----------------------- src/secret_base_80bb4ac.c | 75 +++++++++++++++++++++++++++++------------------ 2 files changed, 46 insertions(+), 65 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 607e1644f..cd82ff213 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,42 +6,6 @@ .text - thumb_func_start ResetSecretBase -ResetSecretBase: @ 80BB594 - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 5 - ldr r1, _080BB5B0 @ =gSaveBlock1 + 0x1A08 - adds r0, r1 - bl sub_80BB4AC - pop {r0} - bx r0 - .align 2, 0 -_080BB5B0: .4byte gSaveBlock1 + 0x1A08 - thumb_func_end ResetSecretBase - - thumb_func_start ResetSecretBases -ResetSecretBases: @ 80BB5B4 - push {r4,lr} - movs r4, 0 -_080BB5B8: - lsls r0, r4, 24 - lsrs r0, 24 - bl ResetSecretBase - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x13 - bls _080BB5B8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end ResetSecretBases - thumb_func_start sub_80BB5D0 sub_80BB5D0: @ 80BB5D0 ldr r0, _080BB5DC @ =gUnknown_020387DC diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index f3f3641fc..cc629d05a 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,32 +1,49 @@ #include "global.h" -void sub_80BB4AC(struct SecretBaseRecord *record) { - u16 i; - u16 j; - record->sbr_field_0 = 0; - for (i=0; i<7; i++) - record->sbr_field_2[i] = 0xff; - for (i=0; i<4; i++) - record->trainerId[i] = 0x00; - record->sbr_field_e = 0; - record->sbr_field_10 = 0; - record->sbr_field_11 = 0; - record->sbr_field_1_0 = 0; - record->gender = 0; - record->sbr_field_1_5 = 0; - record->sbr_field_1_6 = 0; - for (i=0; i<16; i++) { - record->decorations[i] = 0; - record->sbr_field_22[i] = 0; - } - for (i=0; i<6; i++) { - for (j=0; j<4; j++) { - record->partyMoves[i * 4 + j] = 0; - } - record->partyPersonality[i] = 0; - record->partyEVs[i] = 0; - record->partySpecies[i] = 0; - record->partyHeldItems[i] = 0; - record->partyLevels[i] = 0; - } +extern int gUnknown_020387DC; +extern int gSpecialVar_0x8004; + +void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac + u16 i; + u16 j; + record->sbr_field_0 = 0; + for (i=0; i<7; i++) + record->sbr_field_2[i] = 0xff; + for (i=0; i<4; i++) + record->trainerId[i] = 0x00; + record->sbr_field_e = 0; + record->sbr_field_10 = 0; + record->sbr_field_11 = 0; + record->sbr_field_1_0 = 0; + record->gender = 0; + record->sbr_field_1_5 = 0; + record->sbr_field_1_6 = 0; + for (i=0; i<16; i++) { + record->decorations[i] = 0; + record->sbr_field_22[i] = 0; + } + for (i=0; i<6; i++) { + for (j=0; j<4; j++) { + record->partyMoves[i * 4 + j] = 0; + } + record->partyPersonality[i] = 0; + record->partyEVs[i] = 0; + record->partySpecies[i] = 0; + record->partyHeldItems[i] = 0; + record->partyLevels[i] = 0; + } +} + +void ResetSecretBase(u8 idx) { // 80bb594 + sub_80BB4AC(&(gSaveBlock1.secretBases[idx])); } + +void ResetSecretBases(void) { // 080bb5b4 + u16 i; + for (i=0; i<20; i++) + ResetSecretBase(i); +} + +// void sub_80BB5D0(void) { // 080bb5d0 + // gUnknown_020387DC = gSpecialVar_0x8004; +// } -- cgit v1.2.3 From 234bd7da7eff396223d61493014e3556cbb611b7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 08:34:52 -0400 Subject: Fixed nonmatching function in secret base --- asm/secret_base.s | 12 ------------ src/secret_base_80bb4ac.c | 10 +++++----- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index cd82ff213..eb578f85e 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,18 +6,6 @@ .text - thumb_func_start sub_80BB5D0 -sub_80BB5D0: @ 80BB5D0 - ldr r0, _080BB5DC @ =gUnknown_020387DC - ldr r1, _080BB5E0 @ =gSpecialVar_0x8004 - ldrh r1, [r1] - strb r1, [r0] - bx lr - .align 2, 0 -_080BB5DC: .4byte gUnknown_020387DC -_080BB5E0: .4byte gSpecialVar_0x8004 - thumb_func_end sub_80BB5D0 - thumb_func_start sub_80BB5E4 sub_80BB5E4: @ 80BB5E4 push {r4,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index cc629d05a..406bef40a 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,7 +1,7 @@ #include "global.h" -extern int gUnknown_020387DC; -extern int gSpecialVar_0x8004; +extern u8 gUnknown_020387DC; +extern u16 gSpecialVar_0x8004; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac u16 i; @@ -44,6 +44,6 @@ void ResetSecretBases(void) { // 080bb5b4 ResetSecretBase(i); } -// void sub_80BB5D0(void) { // 080bb5d0 - // gUnknown_020387DC = gSpecialVar_0x8004; -// } +void sub_80BB5D0(void) { // 080bb5d0 + gUnknown_020387DC = gSpecialVar_0x8004; +} -- cgit v1.2.3 From a3169debddc9bc8168ae79f96178a7f68732da13 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 08:49:50 -0400 Subject: Sync changes (not matching) --- asm/secret_base.s | 46 ---------------------------------------------- src/secret_base_80bb4ac.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 46 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index eb578f85e..6685bc826 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,52 +6,6 @@ .text - thumb_func_start sub_80BB5E4 -sub_80BB5E4: @ 80BB5E4 - push {r4,lr} - ldr r0, _080BB5F4 @ =gScriptResult - movs r1, 0 - strh r1, [r0] - movs r3, 0 - adds r4, r0, 0 - b _080BB5FE - .align 2, 0 -_080BB5F4: .4byte gScriptResult -_080BB5F8: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 -_080BB5FE: - cmp r3, 0x13 - bhi _080BB626 - ldr r2, _080BB62C @ =gUnknown_020387DC - ldr r1, _080BB630 @ =gSaveBlock1 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 5 - adds r0, r1 - ldr r1, _080BB634 @ =0x00001a08 - adds r0, r1 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _080BB5F8 - movs r0, 0x1 - strh r0, [r4] - ldr r0, _080BB638 @ =0x00004054 - adds r1, r3, 0 - bl VarSet -_080BB626: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BB62C: .4byte gUnknown_020387DC -_080BB630: .4byte gSaveBlock1 -_080BB634: .4byte 0x00001a08 -_080BB638: .4byte 0x00004054 - thumb_func_end sub_80BB5E4 - thumb_func_start sub_80BB63C sub_80BB63C: @ 80BB63C push {lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 406bef40a..9bf6d216a 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,7 +1,10 @@ #include "global.h" +#include "event_data.h" +#include "vars.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; +extern u16 gScriptResult; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac u16 i; @@ -47,3 +50,15 @@ void ResetSecretBases(void) { // 080bb5b4 void sub_80BB5D0(void) { // 080bb5d0 gUnknown_020387DC = gSpecialVar_0x8004; } + +void sub_80BB5E4(void) { // 80bb5e4 + u16 idx; + gScriptResult = 0; + for (idx=0; idx<20; idx++) { + if (gUnknown_020387DC == gSaveBlock1.secretBases[idx].sbr_field_0) { + gScriptResult = 1; + VarSet(0x4054, idx); + return; + } + } +} -- cgit v1.2.3 From a804adbf16a8d59477e19b3204c1f1ae6175f59f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 10:38:22 -0400 Subject: Get sub_80BB5E4 matching --- .gitignore | 1 - asm/secret_base.s | 73 ----------------------------------------------- src/secret_base_80bb4ac.c | 21 ++++++++++++++ 3 files changed, 21 insertions(+), 74 deletions(-) diff --git a/.gitignore b/.gitignore index 78af8c737..13752b437 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ *.bat sound/**/*.bin src/*.s -tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map diff --git a/asm/secret_base.s b/asm/secret_base.s index eb578f85e..48b70d1c5 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,79 +6,6 @@ .text - thumb_func_start sub_80BB5E4 -sub_80BB5E4: @ 80BB5E4 - push {r4,lr} - ldr r0, _080BB5F4 @ =gScriptResult - movs r1, 0 - strh r1, [r0] - movs r3, 0 - adds r4, r0, 0 - b _080BB5FE - .align 2, 0 -_080BB5F4: .4byte gScriptResult -_080BB5F8: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 -_080BB5FE: - cmp r3, 0x13 - bhi _080BB626 - ldr r2, _080BB62C @ =gUnknown_020387DC - ldr r1, _080BB630 @ =gSaveBlock1 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 5 - adds r0, r1 - ldr r1, _080BB634 @ =0x00001a08 - adds r0, r1 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _080BB5F8 - movs r0, 0x1 - strh r0, [r4] - ldr r0, _080BB638 @ =0x00004054 - adds r1, r3, 0 - bl VarSet -_080BB626: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BB62C: .4byte gUnknown_020387DC -_080BB630: .4byte gSaveBlock1 -_080BB634: .4byte 0x00001a08 -_080BB638: .4byte 0x00004054 - thumb_func_end sub_80BB5E4 - - thumb_func_start sub_80BB63C -sub_80BB63C: @ 80BB63C - push {lr} - ldr r0, _080BB654 @ =gSaveBlock1 - ldr r1, _080BB658 @ =0x00001a08 - adds r0, r1 - ldrb r1, [r0] - cmp r1, 0 - beq _080BB660 - ldr r1, _080BB65C @ =gScriptResult - movs r0, 0x1 - strh r0, [r1] - b _080BB664 - .align 2, 0 -_080BB654: .4byte gSaveBlock1 -_080BB658: .4byte 0x00001a08 -_080BB65C: .4byte gScriptResult -_080BB660: - ldr r0, _080BB668 @ =gScriptResult - strh r1, [r0] -_080BB664: - pop {r0} - bx r0 - .align 2, 0 -_080BB668: .4byte gScriptResult - thumb_func_end sub_80BB63C - thumb_func_start sub_80BB66C sub_80BB66C: @ 80BB66C push {r4,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 406bef40a..a73a197cc 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,7 +1,9 @@ #include "global.h" +#include "event_data.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; +extern u16 gScriptResult; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac u16 i; @@ -47,3 +49,22 @@ void ResetSecretBases(void) { // 080bb5b4 void sub_80BB5D0(void) { // 080bb5d0 gUnknown_020387DC = gSpecialVar_0x8004; } + +void sub_80BB5E4(void) { // 80bb5e4 + u16 idx; + gScriptResult = 0; + for (idx=0; idx<20; idx++) { + if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) + continue; + gScriptResult = 1; + VarSet(0x4054, idx); + break; + } +} + +void sub_80BB63C(void) { // 80bb63c + if (gSaveBlock1.secretBases[0].sbr_field_0) + gScriptResult = 1; + else + gScriptResult = 0; +} -- cgit v1.2.3 From e093a13a4b0e72f9f150d98bf0df8dab981316c2 Mon Sep 17 00:00:00 2001 From: Cameron Hall Date: Sun, 14 May 2017 18:34:49 +0200 Subject: Remove last NONMATCHINGs in credits.c --- include/asm.inc.h | 3 + include/pokemon.h | 1 + src/credits.c | 638 ++++-------------------------------------------------- src/intro.c | 1 - 4 files changed, 48 insertions(+), 595 deletions(-) diff --git a/include/asm.inc.h b/include/asm.inc.h index 0c111a991..b3b2a58d3 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -422,6 +422,9 @@ void sub_8134AC0(void *); // src/player_pc.o void NewGameInitPCItems(void); +// asm/hall_of_fame.o +void sub_8143648(u16 paletteTag, u8 arg1); + // src/diploma.o void sub_8145D88(void); diff --git a/include/pokemon.h b/include/pokemon.h index ae02de8ca..15a028d6e 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -462,4 +462,5 @@ void MonRestorePP(struct Pokemon *); u8 *sub_803F378(u16 itemId); +u16 NationalPokedexNumToSpecies(u16 nationalNum); #endif // GUARD_POKEMON_H diff --git a/src/credits.c b/src/credits.c index 085cf986c..ca5553c2e 100644 --- a/src/credits.c +++ b/src/credits.c @@ -20,8 +20,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52"); asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); -u32 NationalPokedexNumToSpecies(u16 nationalNum); - struct MonCoords { u8 x, y; @@ -109,7 +107,7 @@ enum TDA_TASK_B_ID = 15, // Appears to be responsible for text - TDB_0 = 0, + TDB_0 = 0, TDB_TASK_A_ID = 1, TDB_CURRENT_PAGE = 2, TDB_3 = 3, @@ -234,12 +232,12 @@ static u8 sub_8144454(u8 page, u8 taskIdA); static void task_d_8144514(u8 taskIdD); static bool8 sub_8144ECC(u8 data, u8 taskIdA); static void sub_81450AC(u8 taskIdA); -void sub_8145128(u16, u16, u16); +static void sub_8145128(u16, u16, u16); static void sub_81452D0(u16 arg0, u16 palette); static void spritecb_player_8145378(struct Sprite *sprite); static void spritecb_rival_8145420(struct Sprite *sprite); -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position); -void sub_81458DC(void); +static u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position); +static void sub_81458DC(void); static void vblank_8143948(void) { @@ -1210,165 +1208,40 @@ static void sub_81450AC(u8 taskIdA) gUnknown_0203935C = 1; } -#ifdef NONMATCHING -// Sets up the tilemap for 'misc/end_copyright.png' -void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { - u16 i; +static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) { u16 baseTile; - u16 offset0, offset1, offset2, offset3, offset4; + u16 i; LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *) (VRAM + arg0)); LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal)); baseTile = (arg2 / 16) << 12; - offset0 = baseTile + 1; for (i = 0; i < 32 * 32; i++) { ((u16 *) (VRAM + arg1))[i] = baseTile + 1; } - offset1 = offset0 + 1; - offset2 = offset1 + 21; - offset3 = offset2 + 20; - offset4 = offset3 + 23; - for (i = 0; i < 21; i++) { - ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = offset1 + i; + ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = i + 2 + baseTile; } for (i = 0; i < 20; i++) { - ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = offset2 + i; + ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = i + 23 + baseTile; } for (i = 0; i < 23; i++) { - ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = offset3 + i; + ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = i + 43 + baseTile; } for (i = 0; i < 12; i++) { - ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = offset4 + i; + ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile; } } -#else -__attribute__((naked)) -void sub_8145128(u16 arg0, u16 arg1, u16 arg2) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r3, r0, 0\n\ - adds r4, r2, 0\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - lsls r1, 16\n\ - lsrs r7, r1, 16\n\ - lsls r4, 16\n\ - lsrs r5, r4, 16\n\ - ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\ - movs r6, 0xC0\n\ - lsls r6, 19\n\ - adds r3, r6\n\ - adds r1, r3, 0\n\ - bl LZ77UnCompVram\n\ - ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\ - adds r1, r5, 0\n\ - movs r2, 0x20\n\ - bl LoadPalette\n\ - lsrs r4, 20\n\ - lsls r4, 28\n\ - lsrs r4, 16\n\ - movs r2, 0\n\ - adds r1, r4, 0x1\n\ - ldr r3, _081451F4 @ =0x000003ff\n\ -_0814515E:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r6\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, r3\n\ - bls _0814515E\n\ - movs r2, 0\n\ - adds r0, r4, 0x2\n\ - adds r6, r4, 0\n\ - adds r6, 0x17\n\ - movs r1, 0x2B\n\ - adds r1, r4\n\ - mov r12, r1\n\ - adds r4, 0x42\n\ - ldr r5, _081451F8 @ =0x060001c8\n\ - adds r3, r0, 0\n\ -_08145184:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x14\n\ - bls _08145184\n\ - movs r2, 0\n\ - ldr r5, _081451FC @ =0x06000248\n\ - adds r3, r6, 0\n\ -_0814519E:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x13\n\ - bls _0814519E\n\ - movs r2, 0\n\ - ldr r5, _08145200 @ =0x060002c8\n\ - mov r3, r12\n\ -_081451B8:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r5\n\ - adds r1, r2, r3\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x16\n\ - bls _081451B8\n\ - movs r2, 0\n\ - ldr r3, _08145204 @ =0x06000348\n\ -_081451D0:\n\ - lsls r0, r2, 1\n\ - adds r0, r7\n\ - adds r0, r3\n\ - adds r1, r2, r4\n\ - strh r1, [r0]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0xB\n\ - bls _081451D0\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\ -_081451F0: .4byte gIntroCopyright_Pal\n\ -_081451F4: .4byte 0x000003ff\n\ -_081451F8: .4byte 0x060001c8\n\ -_081451FC: .4byte 0x06000248\n\ -_08145200: .4byte 0x060002c8\n\ -_08145204: .4byte 0x06000348\n\ - .syntax divided\n"); -} -#endif u16 sub_8145208(u8 arg0) { @@ -1621,33 +1494,14 @@ void spritecb_81454E0(struct Sprite *sprite) { } } -#ifdef NONMATCHING -/* -extern struct SpriteFrameImage *gUnknown_0840B69C[]; -extern const union AmimCmd *const gSpriteAnimTable_81E7C64[]; -extern struct SpriteTemplate gUnknown_0840B6B8; - -void sub_8143648(u16 paletteTag, u8 arg1) { - gUnknown_02024E8C = gUnknown_0840B6B8; - gUnknown_02024E8C.paletteTag = paletteTag; - gUnknown_02024E8C.images = gUnknown_0840B69C[arg1]; - gUnknown_02024E8C.anims = (const union AnimCmd *const *) gSpriteAnimTable_81E7C64; -} -*/ - -void sub_8143648(u16 paletteTag, u8 arg1); - -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position) +static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) { - u32 species; u32 personality; void *palette; u8 spriteId; u8 spriteId2; - // FIXME: For some reason r0 is copied to r6 before. - species = NationalPokedexNumToSpecies(nationalNum); - + species = NationalPokedexNumToSpecies(species); switch (species) { @@ -1693,172 +1547,6 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position) return spriteId; } -#else -__attribute__((naked)) -u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - mov r10, r1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - str r2, [sp, 0x10]\n\ - lsls r3, 16\n\ - lsrs r3, 16\n\ - mov r9, r3\n\ - adds r0, r6, 0\n\ - bl NationalPokedexNumToSpecies\n\ - adds r6, r0, 0\n\ - cmp r6, 0xC9\n\ - beq _081456F8\n\ - movs r0, 0x9A\n\ - lsls r0, 1\n\ - cmp r6, r0\n\ - beq _081456EE\n\ - movs r7, 0\n\ - b _081456FC\n\ -_081456EE:\n\ - ldr r0, _081456F4 @ =gSaveBlock2\n\ - ldr r7, [r0, 0x20]\n\ - b _081456FC\n\ - .align 2, 0\n\ -_081456F4: .4byte gSaveBlock2\n\ -_081456F8:\n\ - ldr r0, _081457E8 @ =gSaveBlock2\n\ - ldr r7, [r0, 0x1C]\n\ -_081456FC:\n\ - lsls r0, r6, 3\n\ - ldr r1, _081457EC @ =gMonFrontPicTable\n\ - adds r0, r1\n\ - ldr r1, _081457F0 @ =gMonFrontPicCoords\n\ - lsls r2, r6, 2\n\ - adds r2, r1\n\ - ldrb r1, [r2]\n\ - ldrb r2, [r2, 0x1]\n\ - movs r3, 0x80\n\ - lsls r3, 18\n\ - ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\ - mov r8, r4\n\ - mov r5, r9\n\ - lsls r4, r5, 2\n\ - add r4, r8\n\ - ldr r4, [r4]\n\ - str r4, [sp]\n\ - str r6, [sp, 0x4]\n\ - str r7, [sp, 0x8]\n\ - movs r4, 0x1\n\ - str r4, [sp, 0xC]\n\ - bl LoadSpecialPokePic\n\ - ldr r2, _081457F8 @ =0x0000ffff\n\ - adds r0, r6, 0\n\ - movs r1, 0\n\ - bl species_and_otid_get_pal\n\ - lsls r5, 4\n\ - mov r8, r5\n\ - movs r1, 0x80\n\ - lsls r1, 1\n\ - add r1, r8\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - movs r2, 0x20\n\ - bl LoadCompressedPalette\n\ - mov r7, r9\n\ - lsls r6, r7, 24\n\ - lsrs r6, 24\n\ - mov r0, r9\n\ - adds r1, r6, 0\n\ - bl sub_8143648\n\ - ldr r0, _081457FC @ =gUnknown_02024E8C\n\ - mov r2, r10\n\ - lsls r1, r2, 16\n\ - asrs r1, 16\n\ - ldr r3, [sp, 0x10]\n\ - lsls r2, r3, 16\n\ - asrs r2, 16\n\ - movs r3, 0\n\ - bl CreateSprite\n\ - adds r4, r0, 0\n\ - lsls r4, 24\n\ - lsrs r4, 24\n\ - ldr r5, _08145800 @ =gSprites\n\ - lsls r2, r4, 4\n\ - adds r2, r4\n\ - lsls r2, 2\n\ - adds r3, r2, r5\n\ - ldrb r1, [r3, 0x5]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - mov r7, r8\n\ - orrs r0, r7\n\ - movs r1, 0xD\n\ - negs r1, r1\n\ - ands r0, r1\n\ - movs r1, 0x4\n\ - orrs r0, r1\n\ - strb r0, [r3, 0x5]\n\ - mov r0, r9\n\ - adds r0, 0x1\n\ - strh r0, [r3, 0x30]\n\ - movs r0, 0x3E\n\ - adds r0, r3\n\ - mov r8, r0\n\ - ldrb r0, [r0]\n\ - orrs r0, r1\n\ - mov r1, r8\n\ - strb r0, [r1]\n\ - adds r0, r5, 0\n\ - adds r0, 0x1C\n\ - adds r2, r0\n\ - ldr r0, _08145804 @ =spritecb_81454E0\n\ - str r0, [r2]\n\ - ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\ - movs r2, 0x20\n\ - ldrsh r1, [r3, r2]\n\ - movs r7, 0x22\n\ - ldrsh r2, [r3, r7]\n\ - movs r3, 0x1\n\ - bl CreateSprite\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - lsls r0, r1, 4\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r5\n\ - strh r4, [r0, 0x2E]\n\ - adds r1, r6, 0\n\ - bl StartSpriteAnimIfDifferent\n\ - adds r0, r4, 0\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ -_081457E8: .4byte gSaveBlock2\n\ -_081457EC: .4byte gMonFrontPicTable\n\ -_081457F0: .4byte gMonFrontPicCoords\n\ -_081457F4: .4byte gUnknown_0840B5A0\n\ -_081457F8: .4byte 0x0000ffff\n\ -_081457FC: .4byte gUnknown_02024E8C\n\ -_08145800: .4byte gSprites\n\ -_08145804: .4byte spritecb_81454E0\n\ -_08145808: .4byte gSpriteTemplate_840CAEC\n\ - .syntax divided\n"); -} -#endif void spritecb_814580C(struct Sprite *sprite) { @@ -1876,317 +1564,79 @@ void spritecb_814580C(struct Sprite *sprite) sprite->pos1.y = gSprites[sprite->data0].pos1.y; } -#ifdef NONMATCHING -void sub_81458DC(void) { - u16 dexNum, seenTypesCount, count, i2; - +static void sub_81458DC(void) { struct Unk201C000 *unk201C000 = &ewram1c000; + u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); + u16 seenTypesCount; + u16 page; + u16 dexNum; + u16 j; - const u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE))); - - dexNum = 1; - seenTypesCount = 0; - for (; dexNum < 386; dexNum++) + for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++) { if (sub_8090D90(dexNum, 1)) { unk201C000->unk90[seenTypesCount] = dexNum; - seenTypesCount += 1; + seenTypesCount++; } } - count = seenTypesCount; - while (count < 386) + for (dexNum = seenTypesCount; dexNum < 386; dexNum++) { - unk201C000->unk90[count] = 0; - count += 1; + unk201C000->unk90[dexNum] = 0; } unk201C000->unk394 = seenTypesCount; if (unk201C000->unk394 < POKEMON_TILE_COUNT) { - unk201C000->unk8E = unk201C000->unk394; + unk201C000->unk8E = seenTypesCount; } else { unk201C000->unk8E = POKEMON_TILE_COUNT; } - for (i2 = 0; i2 < POKEMON_TILE_COUNT;) + j = 0; + do { - const u16 r2 = Random() % unk201C000->unk394; - unk201C000->unk0[i2] = unk201C000->unk90[r2]; - i2 += 1; + page = Random() % unk201C000->unk394; + unk201C000->unk0[j] = unk201C000->unk90[page]; - unk201C000->unk90[r2] = 0; - unk201C000->unk394 -= 1; - - if (r2 != unk201C000->unk394) + j++; + unk201C000->unk90[page] = 0; + unk201C000->unk394--; + if (page != unk201C000->unk394) { - unk201C000->unk90[r2] = unk201C000->unk90[unk201C000->unk394]; + unk201C000->unk90[page] = unk201C000->unk90[unk201C000->unk394]; unk201C000->unk90[unk201C000->unk394] = 0; } - - if (unk201C000->unk394 == 0) - { - break; - } } + while (unk201C000->unk394 != 0 && j < POKEMON_TILE_COUNT); if (unk201C000->unk8E < POKEMON_TILE_COUNT) { - u16 i; - u16 page; - for (i = unk201C000->unk8E; i < POKEMON_TILE_COUNT; i++) + for (j = unk201C000->unk8E, page = 0; j < POKEMON_TILE_COUNT; j++) { - unk201C000->unk0[i] = unk201C000->unk0[page]; - page += 1; + unk201C000->unk0[j] = unk201C000->unk0[page]; + page++; if (page == unk201C000->unk8E) - { page = 0; - } } + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } else { - u16 starterIndex; - for (starterIndex = 0; starterIndex < POKEMON_TILE_COUNT; starterIndex++) - { - if (unk201C000->unk0[starterIndex] == starter) - { - break; - } - } - if (starterIndex < unk201C000->unk8E) + for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++); + + if (dexNum < unk201C000->unk8E - 1) { - unk201C000->unk0[starterIndex] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; + unk201C000->unk0[dexNum] = unk201C000->unk0[POKEMON_TILE_COUNT - 1]; + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } + else + unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; } - - unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter; unk201C000->unk8E = POKEMON_TILE_COUNT; } -#else -__attribute__((naked)) -void sub_81458DC(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - ldr r7, _0814597C @ =0x0201c000\n\ - ldr r0, _08145980 @ =0x00004023\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl GetStarterPokemon\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl SpeciesToNationalPokedexNum\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r10, r0\n\ - movs r4, 0x1\n\ - movs r5, 0\n\ - ldr r0, _08145984 @ =0x00000181\n\ - mov r8, r0\n\ -_0814590E:\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl sub_8090D90\n\ - lsls r0, 24\n\ - adds r6, r7, 0\n\ - adds r6, 0x90\n\ - cmp r0, 0\n\ - beq _0814592C\n\ - lsls r0, r5, 1\n\ - adds r0, r6, r0\n\ - strh r4, [r0]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ -_0814592C:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, r8\n\ - bls _0814590E\n\ - adds r4, r5, 0\n\ - ldr r0, _08145984 @ =0x00000181\n\ - lsls r1, r4, 16\n\ - mov r9, r1\n\ - movs r2, 0x8E\n\ - adds r2, r7\n\ - mov r8, r2\n\ - adds r1, r7, 0\n\ - adds r1, 0x86\n\ - str r1, [sp]\n\ - cmp r4, r0\n\ - bhi _08145964\n\ - adds r1, r6, 0\n\ - movs r3, 0\n\ - adds r2, r0, 0\n\ -_08145954:\n\ - lsls r0, r4, 1\n\ - adds r0, r1, r0\n\ - strh r3, [r0]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, r2\n\ - bls _08145954\n\ -_08145964:\n\ - movs r2, 0xE5\n\ - lsls r2, 2\n\ - adds r0, r7, r2\n\ - strh r5, [r0]\n\ - mov r1, r9\n\ - lsrs r0, r1, 16\n\ - cmp r0, 0x43\n\ - bhi _08145988\n\ - mov r2, r8\n\ - strh r5, [r2]\n\ - b _0814598E\n\ - .align 2, 0\n\ -_0814597C: .4byte 0x0201c000\n\ -_08145980: .4byte 0x00004023\n\ -_08145984: .4byte 0x00000181\n\ -_08145988:\n\ - movs r0, 0x44\n\ - mov r1, r8\n\ - strh r0, [r1]\n\ -_0814598E:\n\ - movs r5, 0\n\ - movs r2, 0xE5\n\ - lsls r2, 2\n\ - adds r4, r7, r2\n\ - mov r9, r5\n\ - b _0814599E\n\ -_0814599A:\n\ - cmp r5, 0x43\n\ - bhi _081459EE\n\ -_0814599E:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - ldrh r1, [r4]\n\ - bl __umodsi3\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - lsls r1, r5, 1\n\ - adds r1, r7, r1\n\ - lsls r0, r2, 1\n\ - adds r3, r6, r0\n\ - ldrh r0, [r3]\n\ - strh r0, [r1]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - mov r0, r9\n\ - strh r0, [r3]\n\ - ldrh r0, [r4]\n\ - subs r0, 0x1\n\ - strh r0, [r4]\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r2, r0\n\ - beq _081459E8\n\ - ldrh r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6, r0\n\ - ldrh r0, [r0]\n\ - strh r0, [r3]\n\ - ldrh r0, [r4]\n\ - lsls r0, 1\n\ - adds r0, r6, r0\n\ - mov r1, r9\n\ - strh r1, [r0]\n\ -_081459E8:\n\ - ldrh r0, [r4]\n\ - cmp r0, 0\n\ - bne _0814599A\n\ -_081459EE:\n\ - mov r2, r8\n\ - ldrh r0, [r2]\n\ - cmp r0, 0x43\n\ - bhi _08145A26\n\ - adds r5, r0, 0\n\ - movs r2, 0\n\ - cmp r5, 0x43\n\ - bhi _08145A5C\n\ - mov r3, r8\n\ -_08145A00:\n\ - lsls r1, r5, 1\n\ - adds r1, r7, r1\n\ - lsls r0, r2, 1\n\ - adds r0, r7, r0\n\ - ldrh r0, [r0]\n\ - strh r0, [r1]\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - ldrh r0, [r3]\n\ - cmp r2, r0\n\ - bne _08145A1A\n\ - movs r2, 0\n\ -_08145A1A:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x43\n\ - bls _08145A00\n\ - b _08145A5C\n\ -_08145A26:\n\ - movs r4, 0\n\ - ldrh r0, [r7]\n\ - cmp r0, r10\n\ - beq _08145A42\n\ -_08145A2E:\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r0, r4, 1\n\ - adds r0, r7, r0\n\ - ldrh r0, [r0]\n\ - cmp r0, r10\n\ - beq _08145A42\n\ - cmp r4, 0x43\n\ - bls _08145A2E\n\ -_08145A42:\n\ - mov r1, r8\n\ - ldrh r0, [r1]\n\ - subs r0, 0x1\n\ - cmp r4, r0\n\ - bge _08145A5C\n\ - lsls r0, r4, 1\n\ - adds r0, r7, r0\n\ - ldr r2, [sp]\n\ - ldrh r1, [r2]\n\ - strh r1, [r0]\n\ - mov r0, r10\n\ - strh r0, [r2]\n\ - b _08145A62\n\ -_08145A5C:\n\ - mov r2, r10\n\ - ldr r1, [sp]\n\ - strh r2, [r1]\n\ -_08145A62:\n\ - movs r0, 0x44\n\ - mov r1, r8\n\ - strh r0, [r1]\n\ - add sp, 0x4\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\ - .syntax divided\n"); -} -#endif diff --git a/src/intro.c b/src/intro.c index ea6edba3d..2a62892ba 100644 --- a/src/intro.c +++ b/src/intro.c @@ -19,7 +19,6 @@ #include "trig.h" extern void *species_and_otid_get_pal(/*TODO: arg types*/); -extern void sub_8143648(int, u8); extern void sub_8143680(int, u8); struct MonCoords -- cgit v1.2.3 From d2675d65b05920d2ef6401e2747d3daf9a537bae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 14:14:09 -0400 Subject: More decomp in secret base (non-matching sub_80BB66C) --- asm/secret_base.s | 140 ---------------------------------------------- src/secret_base_80bb4ac.c | 36 ++++++++++++ 2 files changed, 36 insertions(+), 140 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 48b70d1c5..c0d7a0974 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,146 +6,6 @@ .text - thumb_func_start sub_80BB66C -sub_80BB66C: @ 80BB66C - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - adds r1, r0, 0 - ldr r2, _080BB6A4 @ =0x00000fff - adds r0, r2, 0 - ands r1, r0 - adds r0, r1, 0 - subs r0, 0x90 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6A8 - movs r0, 0x1 - b _080BB702 - .align 2, 0 -_080BB6A4: .4byte 0x00000fff -_080BB6A8: - adds r0, r1, 0 - subs r0, 0x92 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6B8 - movs r0, 0x2 - b _080BB702 -_080BB6B8: - adds r0, r1, 0 - subs r0, 0x9A - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6C8 - movs r0, 0x3 - b _080BB702 -_080BB6C8: - adds r0, r1, 0 - subs r0, 0x94 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6D8 - movs r0, 0x4 - b _080BB702 -_080BB6D8: - adds r0, r1, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080BB6EC - cmp r1, 0x9C - beq _080BB6EC - cmp r1, 0x9D - bne _080BB6F0 -_080BB6EC: - movs r0, 0x5 - b _080BB702 -_080BB6F0: - adds r0, r1, 0 - subs r0, 0x98 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080BB700 - movs r0, 0 - b _080BB702 -_080BB700: - movs r0, 0x6 -_080BB702: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BB66C - - thumb_func_start sub_80BB70C -sub_80BB70C: @ 80BB70C - push {r4,lr} - ldr r4, _080BB720 @ =gSpecialVar_0x8007 - bl sub_80BB66C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BB720: .4byte gSpecialVar_0x8007 - thumb_func_end sub_80BB70C - - thumb_func_start unref_sub_80BB724 -unref_sub_80BB724: @ 80BB724 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - movs r2, 0 - ldr r6, _080BB748 @ =0x00000fff - lsrs r3, r1, 24 - ldr r5, _080BB74C @ =0x000001ff -_080BB732: - lsls r0, r2, 1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r6, 0 - ands r0, r1 - cmp r0, r3 - bne _080BB750 - lsls r0, r2, 16 - asrs r0, 16 - b _080BB75E - .align 2, 0 -_080BB748: .4byte 0x00000fff -_080BB74C: .4byte 0x000001ff -_080BB750: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r5 - bls _080BB732 - movs r0, 0x1 - negs r0, r0 -_080BB75E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end unref_sub_80BB724 - thumb_func_start sub_80BB764 sub_80BB764: @ 80BB764 push {r4-r7,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index a73a197cc..8955441eb 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,8 +1,11 @@ #include "global.h" #include "event_data.h" +#include "asm.h" +#include "field_player_avatar.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8007; extern u16 gScriptResult; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac @@ -68,3 +71,36 @@ void sub_80BB63C(void) { // 80bb63c else gScriptResult = 0; } + +u8 sub_80BB66C(void) { // 80bb66c + s16 x, y; + u16 v0; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF; + if (v0 == 0x90 || v0 == 0x91) + return 1; + else if (v0 == 0x92 || v0 == 0x93) + return 2; + else if (v0 == 0x9a || v0 == 0x9b) + return 3; + else if (v0 == 0x94 || v0 == 0x95) + return 4; + else if (v0 == 0x96 || v0 == 0x97 || v0 == 0x9c || v0 == 0x9d) + return 5; + else if (v0 == 0x98 || v0 == 0x99) + return 6; + return 0; +} + +void sub_80BB70C(void) { // 80bb70c + gSpecialVar_0x8007 = sub_80BB66C(); +} + +s16 unref_sub_80BB724(u16 *a0, u8 a1) { + u16 v2; + for (v2=0; v2<0x200; v2++) { + if ((a0[v2] & 0xFFF) == a1) + return (s16)v2; + } + return -1; +} -- cgit v1.2.3 From 272c08df68a278ad5eeb447bab6bfc23a1f34f01 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 14:49:00 -0400 Subject: Decompile another function in secret bases; switch nonmatching sub_80BB66C behind NONMATCHING --- asm/secret_base.s | 40 --------------------- src/secret_base.c | 8 +++++ src/secret_base_80bb4ac.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 100 insertions(+), 40 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index c0d7a0974..3d4305b38 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -1317,46 +1317,6 @@ _080BC18A: .section .text_80BC1D0 - thumb_func_start GetSecretBaseMapName -GetSecretBaseMapName: @ 80BC1D0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - ldr r6, _080BC214 @ =gUnknown_020387DC - ldr r5, _080BC218 @ =gSaveBlock1 - ldr r4, _080BC21C @ =0x00004054 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, r5 - ldr r0, _080BC220 @ =0x00001a08 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r6] - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl sub_80BC190 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080BC214: .4byte gUnknown_020387DC -_080BC218: .4byte gSaveBlock1 -_080BC21C: .4byte 0x00004054 -_080BC220: .4byte 0x00001a08 - thumb_func_end GetSecretBaseMapName - thumb_func_start sub_80BC224 sub_80BC224: @ 80BC224 push {r4,r5,lr} diff --git a/src/secret_base.c b/src/secret_base.c index 572dfaa1d..9955fd242 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2,6 +2,9 @@ #include "string_util.h" #include "strings.h" #include "text.h" +#include "event_data.h" + +extern u8 gUnknown_020387DC; u8 sub_80BB8A8(void *); @@ -16,3 +19,8 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { return StringAppend(dest, gOtherText_PlayersBase); } + +u8 *GetSecretBaseMapName(u8 *dest) { + gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(0x4054)].sbr_field_0; + return sub_80BC190(dest, VarGet(0x4054)); +} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 8955441eb..ebd93f008 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -72,6 +72,7 @@ void sub_80BB63C(void) { // 80bb63c gScriptResult = 0; } +#ifdef NONMATCHING u8 sub_80BB66C(void) { // 80bb66c s16 x, y; u16 v0; @@ -91,6 +92,97 @@ u8 sub_80BB66C(void) { // 80bb66c return 6; return 0; } +#else +__attribute__((naked)) +u8 sub_80BB66C(void) { + asm(".syntax unified\n\ + push {r4,lr}\n\ + sub sp, 0x4\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl GetXYCoordsOneStepInFrontOfPlayer\n\ + mov r0, sp\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + movs r2, 0\n\ + ldrsh r1, [r4, r2]\n\ + bl MapGridGetMetatileBehaviorAt\n\ + adds r1, r0, 0\n\ + ldr r2, _080BB6A4 @ =0x00000fff\n\ + adds r0, r2, 0\n\ + ands r1, r0\n\ + adds r0, r1, 0\n\ + subs r0, 0x90\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6A8\n\ + movs r0, 0x1\n\ + b _080BB702\n\ + .align 2, 0\n\ + _080BB6A4: .4byte 0x00000fff\n\ + _080BB6A8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x92\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6B8\n\ + movs r0, 0x2\n\ + b _080BB702\n\ + _080BB6B8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x9A\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6C8\n\ + movs r0, 0x3\n\ + b _080BB702\n\ + _080BB6C8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x94\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bhi _080BB6D8\n\ + movs r0, 0x4\n\ + b _080BB702\n\ + _080BB6D8:\n\ + adds r0, r1, 0\n\ + subs r0, 0x96\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bls _080BB6EC\n\ + cmp r1, 0x9C\n\ + beq _080BB6EC\n\ + cmp r1, 0x9D\n\ + bne _080BB6F0\n\ + _080BB6EC:\n\ + movs r0, 0x5\n\ + b _080BB702\n\ + _080BB6F0:\n\ + adds r0, r1, 0\n\ + subs r0, 0x98\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bls _080BB700\n\ + movs r0, 0\n\ + b _080BB702\n\ + _080BB700:\n\ + movs r0, 0x6\n\ + _080BB702:\n\ + add sp, 0x4\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .syntax divided\n"); +} +#endif void sub_80BB70C(void) { // 80bb70c gSpecialVar_0x8007 = sub_80BB66C(); -- cgit v1.2.3 From 9d64a66a79a1b2ebfd2eccd5cf062e6f577073b8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 15:33:32 -0400 Subject: sub_80BC224 --- asm/secret_base.s | 33 --------------------------------- src/secret_base.c | 8 ++++++++ 2 files changed, 8 insertions(+), 33 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 3d4305b38..b6684b9fe 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -1316,39 +1316,6 @@ _080BC18A: thumb_func_end sub_80BC14C .section .text_80BC1D0 - - thumb_func_start sub_80BC224 -sub_80BC224: @ 80BC224 - push {r4,r5,lr} - ldr r0, _080BC25C @ =0x00004054 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 5 - ldr r0, _080BC260 @ =gSaveBlock1 + 0x1A0A - adds r4, r0 - ldr r5, _080BC264 @ =gStringVar1 - adds r0, r4, 0 - bl sub_80BB8A8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl StringCopyN - movs r1, 0xFF - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC25C: .4byte 0x00004054 -_080BC260: .4byte gSaveBlock1 + 0x1A0A -_080BC264: .4byte gStringVar1 - thumb_func_end sub_80BC224 - thumb_func_start sub_80BC268 sub_80BC268: @ 80BC268 push {lr} diff --git a/src/secret_base.c b/src/secret_base.c index 9955fd242..63c08d629 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -24,3 +24,11 @@ u8 *GetSecretBaseMapName(u8 *dest) { gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(0x4054)].sbr_field_0; return sub_80BC190(dest, VarGet(0x4054)); } + +void sub_80BC224(void) { + u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(0x4054)].sbr_field_2; + u8 *var1 = gStringVar1; + u8 var2 = sub_80BB8A8(var0); + u8 *var3 = StringCopyN(var1, var0, var2); + *var3 = EOS; +} -- cgit v1.2.3 From d8ca3a6b9dbe429d87b78ee5bf6e02f430b74d5a Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 15 May 2017 17:09:20 -0400 Subject: Trailing whitespace --- src/secret_base_80bb4ac.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index ebd93f008..cdf609cbc 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -57,7 +57,7 @@ void sub_80BB5E4(void) { // 80bb5e4 u16 idx; gScriptResult = 0; for (idx=0; idx<20; idx++) { - if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) + if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) continue; gScriptResult = 1; VarSet(0x4054, idx); -- cgit v1.2.3 From fc799578a0aa261e1a807c74efbf30c82a6e3f15 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 18:46:11 -0400 Subject: sub_80BB66C matches, thanks revo --- src/secret_base_80bb4ac.c | 94 +---------------------------------------------- 1 file changed, 1 insertion(+), 93 deletions(-) diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index cdf609cbc..12cf72560 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -72,10 +72,9 @@ void sub_80BB63C(void) { // 80bb63c gScriptResult = 0; } -#ifdef NONMATCHING u8 sub_80BB66C(void) { // 80bb66c s16 x, y; - u16 v0; + s16 v0; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF; if (v0 == 0x90 || v0 == 0x91) @@ -92,97 +91,6 @@ u8 sub_80BB66C(void) { // 80bb66c return 6; return 0; } -#else -__attribute__((naked)) -u8 sub_80BB66C(void) { - asm(".syntax unified\n\ - push {r4,lr}\n\ - sub sp, 0x4\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl GetXYCoordsOneStepInFrontOfPlayer\n\ - mov r0, sp\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - movs r2, 0\n\ - ldrsh r1, [r4, r2]\n\ - bl MapGridGetMetatileBehaviorAt\n\ - adds r1, r0, 0\n\ - ldr r2, _080BB6A4 @ =0x00000fff\n\ - adds r0, r2, 0\n\ - ands r1, r0\n\ - adds r0, r1, 0\n\ - subs r0, 0x90\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _080BB6A8\n\ - movs r0, 0x1\n\ - b _080BB702\n\ - .align 2, 0\n\ - _080BB6A4: .4byte 0x00000fff\n\ - _080BB6A8:\n\ - adds r0, r1, 0\n\ - subs r0, 0x92\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _080BB6B8\n\ - movs r0, 0x2\n\ - b _080BB702\n\ - _080BB6B8:\n\ - adds r0, r1, 0\n\ - subs r0, 0x9A\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _080BB6C8\n\ - movs r0, 0x3\n\ - b _080BB702\n\ - _080BB6C8:\n\ - adds r0, r1, 0\n\ - subs r0, 0x94\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bhi _080BB6D8\n\ - movs r0, 0x4\n\ - b _080BB702\n\ - _080BB6D8:\n\ - adds r0, r1, 0\n\ - subs r0, 0x96\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bls _080BB6EC\n\ - cmp r1, 0x9C\n\ - beq _080BB6EC\n\ - cmp r1, 0x9D\n\ - bne _080BB6F0\n\ - _080BB6EC:\n\ - movs r0, 0x5\n\ - b _080BB702\n\ - _080BB6F0:\n\ - adds r0, r1, 0\n\ - subs r0, 0x98\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bls _080BB700\n\ - movs r0, 0\n\ - b _080BB702\n\ - _080BB700:\n\ - movs r0, 0x6\n\ - _080BB702:\n\ - add sp, 0x4\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .syntax divided\n"); -} -#endif void sub_80BB70C(void) { // 80bb70c gSpecialVar_0x8007 = sub_80BB66C(); -- cgit v1.2.3 From d091a292b1159f3cd798c7c259e75c6fe6e27460 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 15 May 2017 21:39:34 -0400 Subject: First pass at sub_80BB764 (not matching) --- asm/secret_base.s | 87 +----------------------------------- include/vars.h | 4 +- ld_script.txt | 2 +- src/secret_base.c | 7 +-- src/secret_base_80bb4ac.c | 110 +++++++++++++++++++++++++++++++++++++++++++++- 5 files changed, 118 insertions(+), 92 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index b6684b9fe..d740882ec 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -4,92 +4,7 @@ .syntax unified - .text - - thumb_func_start sub_80BB764 -sub_80BB764: @ 80BB764 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r9, r0 - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - movs r0, 0 - mov r12, r0 - ldr r1, _080BB7C8 @ =gMapHeader - ldr r0, [r1] - ldr r3, [r0, 0x4] - cmp r12, r3 - bge _080BB7EE - ldr r0, [r0] - str r0, [sp, 0x4] - str r3, [sp] -_080BB78E: - movs r2, 0 - mov r1, r12 - lsls r7, r1, 16 - ldr r0, [sp, 0x4] - cmp r2, r0 - bge _080BB7DC - ldr r0, _080BB7C8 @ =gMapHeader - ldr r1, [r0] - asrs r0, r7, 16 - ldr r4, [r1] - adds r6, r0, 0 - muls r6, r4 - ldr r5, [r1, 0xC] -_080BB7A8: - lsls r0, r2, 16 - asrs r3, r0, 16 - adds r0, r6, r3 - lsls r0, 1 - adds r0, r5 - ldrh r1, [r0] - ldr r0, _080BB7CC @ =0x000003ff - ands r0, r1 - cmp r0, r8 - bne _080BB7D0 - mov r1, r9 - strh r2, [r1] - mov r1, r12 - mov r0, r10 - strh r1, [r0] - b _080BB7EE - .align 2, 0 -_080BB7C8: .4byte gMapHeader -_080BB7CC: .4byte 0x000003ff -_080BB7D0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, r4 - blt _080BB7A8 -_080BB7DC: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r1, r0, 16 - mov r12, r1 - asrs r0, 16 - ldr r1, [sp] - cmp r0, r1 - blt _080BB78E -_080BB7EE: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB764 + .section .text_b thumb_func_start sub_80BB800 sub_80BB800: @ 80BB800 diff --git a/include/vars.h b/include/vars.h index 55df0a5e3..07c96482e 100644 --- a/include/vars.h +++ b/include/vars.h @@ -26,6 +26,8 @@ #define VAR_BARBOACH_SIZE_RECORD 0x404F -#define VAR_PORTHOLE 0x40B4 +#define VAR_0x4054 0x4054 + +#define VAR_PORTHOLE 0x40B4 #endif // GUARD_VARS_H diff --git a/ld_script.txt b/ld_script.txt index 99b19b5e0..a7fe92237 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -175,7 +175,7 @@ SECTIONS { asm/record_mixing.o(.text); asm/sound_check_menu.o(.text); src/secret_base_80bb4ac.o(.text); - asm/secret_base.o(.text); + asm/secret_base.o(.text_b); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); asm/tv.o(.text); diff --git a/src/secret_base.c b/src/secret_base.c index 63c08d629..013715f56 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -3,6 +3,7 @@ #include "strings.h" #include "text.h" #include "event_data.h" +#include "vars.h" extern u8 gUnknown_020387DC; @@ -21,12 +22,12 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { } u8 *GetSecretBaseMapName(u8 *dest) { - gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(0x4054)].sbr_field_0; - return sub_80BC190(dest, VarGet(0x4054)); + gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_0; + return sub_80BC190(dest, VarGet(VAR_0x4054)); } void sub_80BC224(void) { - u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(0x4054)].sbr_field_2; + u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_0x4054)].sbr_field_2; u8 *var1 = gStringVar1; u8 var2 = sub_80BB8A8(var0); u8 *var3 = StringCopyN(var1, var0, var2); diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 12cf72560..5a07e8b65 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,6 +1,7 @@ #include "global.h" #include "event_data.h" #include "asm.h" +#include "vars.h" #include "field_player_avatar.h" extern u8 gUnknown_020387DC; @@ -60,7 +61,7 @@ void sub_80BB5E4(void) { // 80bb5e4 if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) continue; gScriptResult = 1; - VarSet(0x4054, idx); + VarSet(VAR_0x4054, idx); break; } } @@ -104,3 +105,110 @@ s16 unref_sub_80BB724(u16 *a0, u8 a1) { } return -1; } + +#ifdef NONMATCHING +void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { + s16 height = gMapHeader.mapData->height; + s16 width = gMapHeader.mapData->width; + s16 x; + s16 y; + u16 *row; + for (y=0; ymap[y * width]); + for (x=0; x Date: Mon, 15 May 2017 22:29:34 -0400 Subject: Get sub_80BB764 matching --- src/secret_base_80bb4ac.c | 112 ++++++---------------------------------------- 1 file changed, 14 insertions(+), 98 deletions(-) diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 5a07e8b65..7e64a7083 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -106,17 +106,11 @@ s16 unref_sub_80BB724(u16 *a0, u8 a1) { return -1; } -#ifdef NONMATCHING void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { - s16 height = gMapHeader.mapData->height; - s16 width = gMapHeader.mapData->width; - s16 x; - s16 y; - u16 *row; - for (y=0; ymap[y * width]); - for (x=0; xheight; y++) { + for (x=0; xwidth; x++) { + if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) { *arg1 = x; *arg2 = y; return; @@ -124,91 +118,13 @@ void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { } } } -#else -__attribute__((naked)) -void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x8\n\ - mov r9, r0\n\ - mov r10, r1\n\ - lsls r2, 16\n\ - lsrs r2, 16\n\ - mov r8, r2\n\ - movs r0, 0\n\ - mov r12, r0\n\ - ldr r1, _080BB7C8 @ =gMapHeader\n\ - ldr r0, [r1]\n\ - ldr r3, [r0, 0x4]\n\ - cmp r12, r3\n\ - bge _080BB7EE\n\ - ldr r0, [r0]\n\ - str r0, [sp, 0x4]\n\ - str r3, [sp]\n\ - _080BB78E:\n\ - movs r2, 0\n\ - mov r1, r12\n\ - lsls r7, r1, 16\n\ - ldr r0, [sp, 0x4]\n\ - cmp r2, r0\n\ - bge _080BB7DC\n\ - ldr r0, _080BB7C8 @ =gMapHeader\n\ - ldr r1, [r0]\n\ - asrs r0, r7, 16\n\ - ldr r4, [r1]\n\ - adds r6, r0, 0\n\ - muls r6, r4\n\ - ldr r5, [r1, 0xC]\n\ - _080BB7A8:\n\ - lsls r0, r2, 16\n\ - asrs r3, r0, 16\n\ - adds r0, r6, r3\n\ - lsls r0, 1\n\ - adds r0, r5\n\ - ldrh r1, [r0]\n\ - ldr r0, _080BB7CC @ =0x000003ff\n\ - ands r0, r1\n\ - cmp r0, r8\n\ - bne _080BB7D0\n\ - mov r1, r9\n\ - strh r2, [r1]\n\ - mov r1, r12\n\ - mov r0, r10\n\ - strh r1, [r0]\n\ - b _080BB7EE\n\ - .align 2, 0\n\ - _080BB7C8: .4byte gMapHeader\n\ - _080BB7CC: .4byte 0x000003ff\n\ - _080BB7D0:\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - asrs r0, 16\n\ - cmp r0, r4\n\ - blt _080BB7A8\n\ - _080BB7DC:\n\ - movs r1, 0x80\n\ - lsls r1, 9\n\ - adds r0, r7, r1\n\ - lsrs r1, r0, 16\n\ - mov r12, r1\n\ - asrs r0, 16\n\ - ldr r1, [sp]\n\ - cmp r0, r1\n\ - blt _080BB78E\n\ - _080BB7EE:\n\ - add sp, 0x8\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\ - .syntax divided\n"); -} -#endif + +// void sub_80BB800(void) { + // s16 x, y; + // u16 v0, v1; + // GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + // v1 = MapGridGetMetatileIdAt(x, y); + // for (v0=0; v0<7; v0++) { + // if (gUnknown_083D1358[v0] == v1) + // } +// } -- cgit v1.2.3 From 65b86af74a82cf741caa497c695865504a2cbe49 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 08:51:50 -0400 Subject: An attempt was made to decompile sub_80BB800 --- asm/secret_base.s | 90 --------------------------------- src/secret_base_80bb4ac.c | 125 ++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 116 insertions(+), 99 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index d740882ec..47627711a 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,96 +6,6 @@ .section .text_b - thumb_func_start sub_80BB800 -sub_80BB800: @ 80BB800 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileIdAt - movs r5, 0 - mov r12, r4 - lsls r0, 16 - asrs r3, r0, 16 - ldr r1, _080BB84C @ =gUnknown_083D1358 - mov r8, r1 - adds r7, r0, 0 - mov r4, sp - mov r6, r12 -_080BB834: - ldr r0, _080BB84C @ =gUnknown_083D1358 - lsls r1, r5, 2 - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r3 - bne _080BB850 - movs r3, 0 - ldrsh r0, [r4, r3] - movs r5, 0 - ldrsh r1, [r6, r5] - ldrh r3, [r2, 0x2] - b _080BB878 - .align 2, 0 -_080BB84C: .4byte gUnknown_083D1358 -_080BB850: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x6 - bls _080BB834 - movs r5, 0 - mov r4, sp - mov r6, r12 -_080BB860: - lsls r0, r5, 2 - mov r1, r8 - adds r3, r0, r1 - ldrh r1, [r3, 0x2] - asrs r0, r7, 16 - cmp r1, r0 - bne _080BB892 - movs r2, 0 - ldrsh r0, [r4, r2] - movs r5, 0 - ldrsh r1, [r6, r5] - ldrh r3, [r3] -_080BB878: - movs r5, 0xC0 - lsls r5, 4 - adds r2, r5, 0 - orrs r2, r3 - bl MapGridSetMetatileIdAt - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0 - ldrsh r1, [r6, r2] - bl CurrentMapDrawMetatileAt - b _080BB89C -_080BB892: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x6 - bls _080BB860 -_080BB89C: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB800 - thumb_func_start sub_80BB8A8 sub_80BB8A8: @ 80BB8A8 push {lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 7e64a7083..e936df7fa 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -3,11 +3,13 @@ #include "asm.h" #include "vars.h" #include "field_player_avatar.h" +#include "field_camera.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8007; extern u16 gScriptResult; +extern u16 gUnknown_083D1358[16]; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac u16 i; @@ -119,12 +121,117 @@ void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { } } -// void sub_80BB800(void) { - // s16 x, y; - // u16 v0, v1; - // GetXYCoordsOneStepInFrontOfPlayer(&x, &y); - // v1 = MapGridGetMetatileIdAt(x, y); - // for (v0=0; v0<7; v0++) { - // if (gUnknown_083D1358[v0] == v1) - // } -// } +#ifdef NONMATCHING +void sub_80BB800(void) { + s16 x, y; + u16 v0, v1; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + v1 = MapGridGetMetatileIdAt(x, y); + for (v0=0; v0<7; v0++) { + if (gUnknown_083D1358[v0] == v1) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[v0 + 1] | 0x300); + CurrentMapDrawMetatileAt(x, y); + break; + } + } + for (v0=0; v0<7; v0++) { + if (gUnknown_083D1358[v0 + 1] == v1) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[v0] | 0x300); + CurrentMapDrawMetatileAt(x, y); + break; + } + } +} +#else +__attribute__((naked)) +void sub_80BB800(void) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x4\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl GetXYCoordsOneStepInFrontOfPlayer\n\ + mov r0, sp\n\ + movs r1, 0\n\ + ldrsh r0, [r0, r1]\n\ + movs r2, 0\n\ + ldrsh r1, [r4, r2]\n\ + bl MapGridGetMetatileIdAt\n\ + movs r5, 0\n\ + mov r12, r4\n\ + lsls r0, 16\n\ + asrs r3, r0, 16\n\ + ldr r1, _080BB84C @ =gUnknown_083D1358\n\ + mov r8, r1\n\ + adds r7, r0, 0\n\ + mov r4, sp\n\ + mov r6, r12\n\ +_080BB834:\n\ + ldr r0, _080BB84C @ =gUnknown_083D1358\n\ + lsls r1, r5, 2\n\ + adds r2, r1, r0\n\ + ldrh r0, [r2]\n\ + cmp r0, r3\n\ + bne _080BB850\n\ + movs r3, 0\n\ + ldrsh r0, [r4, r3]\n\ + movs r5, 0\n\ + ldrsh r1, [r6, r5]\n\ + ldrh r3, [r2, 0x2]\n\ + b _080BB878\n\ + .align 2, 0\n\ +_080BB84C: .4byte gUnknown_083D1358\n\ +_080BB850:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x6\n\ + bls _080BB834\n\ + movs r5, 0\n\ + mov r4, sp\n\ + mov r6, r12\n\ +_080BB860:\n\ + lsls r0, r5, 2\n\ + mov r1, r8\n\ + adds r3, r0, r1\n\ + ldrh r1, [r3, 0x2]\n\ + asrs r0, r7, 16\n\ + cmp r1, r0\n\ + bne _080BB892\n\ + movs r2, 0\n\ + ldrsh r0, [r4, r2]\n\ + movs r5, 0\n\ + ldrsh r1, [r6, r5]\n\ + ldrh r3, [r3]\n\ +_080BB878:\n\ + movs r5, 0xC0\n\ + lsls r5, 4\n\ + adds r2, r5, 0\n\ + orrs r2, r3\n\ + bl MapGridSetMetatileIdAt\n\ + movs r1, 0\n\ + ldrsh r0, [r4, r1]\n\ + movs r2, 0\n\ + ldrsh r1, [r6, r2]\n\ + bl CurrentMapDrawMetatileAt\n\ + b _080BB89C\n\ +_080BB892:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + cmp r5, 0x6\n\ + bls _080BB860\n\ +_080BB89C:\n\ + add sp, 0x4\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif -- cgit v1.2.3 From ee8b239921d1cf3d9ddba1a18acaa812f2a30b6b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 09:24:27 -0400 Subject: More work on secret base --- asm/secret_base.s | 76 ------------------------------------------------------- src/secret_base.c | 22 +++++++++++++--- 2 files changed, 19 insertions(+), 79 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index b6684b9fe..834a63350 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -1316,82 +1316,6 @@ _080BC18A: thumb_func_end sub_80BC14C .section .text_80BC1D0 - thumb_func_start sub_80BC268 -sub_80BC268: @ 80BC268 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BC288 @ =gSaveBlock1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, r2 - ldr r0, _080BC28C @ =0x00001a09 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 6 - cmp r0, 0 - bne _080BC290 - movs r0, 0 - b _080BC292 - .align 2, 0 -_080BC288: .4byte gSaveBlock1 -_080BC28C: .4byte 0x00001a09 -_080BC290: - movs r0, 0x1 -_080BC292: - pop {r1} - bx r1 - thumb_func_end sub_80BC268 - - thumb_func_start sub_80BC298 -sub_80BC298: @ 80BC298 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1A - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1B - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1C - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1D - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1E - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1F - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80BC298 thumb_func_start sub_80BC300 sub_80BC300: @ 80BC300 diff --git a/src/secret_base.c b/src/secret_base.c index 63c08d629..ccedcfe0c 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -8,7 +8,7 @@ extern u8 gUnknown_020387DC; u8 sub_80BB8A8(void *); -u8 *sub_80BC190(u8 *dest, u8 arg1) { +u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190 u8 local1; u8 *str; @@ -20,15 +20,31 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { return StringAppend(dest, gOtherText_PlayersBase); } -u8 *GetSecretBaseMapName(u8 *dest) { +u8 *GetSecretBaseMapName(u8 *dest) { // 80bc1d0 gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(0x4054)].sbr_field_0; return sub_80BC190(dest, VarGet(0x4054)); } -void sub_80BC224(void) { +void sub_80BC224(void) { // 80bc224 u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(0x4054)].sbr_field_2; u8 *var1 = gStringVar1; u8 var2 = sub_80BB8A8(var0); u8 *var3 = StringCopyN(var1, var0, var2); *var3 = EOS; } + +u8 sub_80BC268(u8 foo) { // 80bc268 + if (gSaveBlock1.secretBases[foo].sbr_field_1_6) + return 1; + return 0; +} + +u8 sub_80BC298(struct Pokemon *mon) { // 80bc298 + u16 evsum = GetMonData(mon, MON_DATA_HP_EV); + evsum += GetMonData(mon, MON_DATA_ATK_EV); + evsum += GetMonData(mon, MON_DATA_DEF_EV); + evsum += GetMonData(mon, MON_DATA_SPD_EV); + evsum += GetMonData(mon, MON_DATA_SPATK_EV); + evsum += GetMonData(mon, MON_DATA_SPDEF_EV); + return (u8)(evsum / 6); +} -- cgit v1.2.3 From 75fc92d23ed51310bcb05979e665390aa3557736 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 09:45:11 -0400 Subject: Fix sub_80BB800 --- src/secret_base_80bb4ac.c | 120 ++++++---------------------------------------- 1 file changed, 15 insertions(+), 105 deletions(-) diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index e936df7fa..1f52158b7 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -9,7 +9,10 @@ extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8007; extern u16 gScriptResult; -extern u16 gUnknown_083D1358[16]; +extern struct { + u16 unk_083D1358_0; + u16 unk_083D1358_1; +} gUnknown_083D1358[7]; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac u16 i; @@ -121,117 +124,24 @@ void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { } } -#ifdef NONMATCHING void sub_80BB800(void) { s16 x, y; - u16 v0, v1; + s16 tile_id; + u16 idx; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); - v1 = MapGridGetMetatileIdAt(x, y); - for (v0=0; v0<7; v0++) { - if (gUnknown_083D1358[v0] == v1) { - MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[v0 + 1] | 0x300); + tile_id = MapGridGetMetatileIdAt(x, y); + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); CurrentMapDrawMetatileAt(x, y); - break; + return; } } - for (v0=0; v0<7; v0++) { - if (gUnknown_083D1358[v0 + 1] == v1) { - MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[v0] | 0x300); + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00); CurrentMapDrawMetatileAt(x, y); - break; + return; } } } -#else -__attribute__((naked)) -void sub_80BB800(void) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0x4\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl GetXYCoordsOneStepInFrontOfPlayer\n\ - mov r0, sp\n\ - movs r1, 0\n\ - ldrsh r0, [r0, r1]\n\ - movs r2, 0\n\ - ldrsh r1, [r4, r2]\n\ - bl MapGridGetMetatileIdAt\n\ - movs r5, 0\n\ - mov r12, r4\n\ - lsls r0, 16\n\ - asrs r3, r0, 16\n\ - ldr r1, _080BB84C @ =gUnknown_083D1358\n\ - mov r8, r1\n\ - adds r7, r0, 0\n\ - mov r4, sp\n\ - mov r6, r12\n\ -_080BB834:\n\ - ldr r0, _080BB84C @ =gUnknown_083D1358\n\ - lsls r1, r5, 2\n\ - adds r2, r1, r0\n\ - ldrh r0, [r2]\n\ - cmp r0, r3\n\ - bne _080BB850\n\ - movs r3, 0\n\ - ldrsh r0, [r4, r3]\n\ - movs r5, 0\n\ - ldrsh r1, [r6, r5]\n\ - ldrh r3, [r2, 0x2]\n\ - b _080BB878\n\ - .align 2, 0\n\ -_080BB84C: .4byte gUnknown_083D1358\n\ -_080BB850:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x6\n\ - bls _080BB834\n\ - movs r5, 0\n\ - mov r4, sp\n\ - mov r6, r12\n\ -_080BB860:\n\ - lsls r0, r5, 2\n\ - mov r1, r8\n\ - adds r3, r0, r1\n\ - ldrh r1, [r3, 0x2]\n\ - asrs r0, r7, 16\n\ - cmp r1, r0\n\ - bne _080BB892\n\ - movs r2, 0\n\ - ldrsh r0, [r4, r2]\n\ - movs r5, 0\n\ - ldrsh r1, [r6, r5]\n\ - ldrh r3, [r3]\n\ -_080BB878:\n\ - movs r5, 0xC0\n\ - lsls r5, 4\n\ - adds r2, r5, 0\n\ - orrs r2, r3\n\ - bl MapGridSetMetatileIdAt\n\ - movs r1, 0\n\ - ldrsh r0, [r4, r1]\n\ - movs r2, 0\n\ - ldrsh r1, [r6, r2]\n\ - bl CurrentMapDrawMetatileAt\n\ - b _080BB89C\n\ -_080BB892:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - cmp r5, 0x6\n\ - bls _080BB860\n\ -_080BB89C:\n\ - add sp, 0x4\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif -- cgit v1.2.3 From 5bafebc240661f93c2451df000e0991d56943a0b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 09:56:02 -0400 Subject: sub_80BB8A8 --- asm/secret_base.s | 24 ------------------------ src/secret_base_80bb4ac.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index d3f8f7d86..33d23502d 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,30 +6,6 @@ .section .text_b - thumb_func_start sub_80BB8A8 -sub_80BB8A8: @ 80BB8A8 - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080BB8AE: - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080BB8BA - adds r0, r1, 0 - b _080BB8C6 -_080BB8BA: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x6 - bls _080BB8AE - movs r0, 0x7 -_080BB8C6: - pop {r1} - bx r1 - thumb_func_end sub_80BB8A8 - thumb_func_start sub_80BB8CC sub_80BB8CC: @ 80BB8CC push {r4-r6,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 1f52158b7..2842add3c 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -2,6 +2,7 @@ #include "event_data.h" #include "asm.h" #include "vars.h" +#include "text.h" #include "field_player_avatar.h" #include "field_camera.h" @@ -145,3 +146,12 @@ void sub_80BB800(void) { } } } + +u8 sub_80BB8A8(u8 *arg1) { + u8 idx; + for (idx=0; idx<7; idx++) { + if (arg1[idx] == EOS) + return idx; + } + return 7; +} -- cgit v1.2.3 From 5fcc114d06a59a1bf4503a746d18caf6a88a67db Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 10:18:14 -0400 Subject: sub_80BB8CC --- asm/secret_base.s | 72 ----------------------------------------------- src/secret_base_80bb4ac.c | 18 +++++++++++- 2 files changed, 17 insertions(+), 73 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 33d23502d..6be32732e 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,78 +6,6 @@ .section .text_b - thumb_func_start sub_80BB8CC -sub_80BB8CC: @ 80BB8CC - push {r4-r6,lr} - ldr r2, _080BB948 @ =gSaveBlock1 - ldr r0, _080BB94C @ =gUnknown_020387DC - ldrb r1, [r0] - ldr r3, _080BB950 @ =0x00001a08 - adds r0, r2, r3 - strb r1, [r0] - movs r3, 0 - ldr r0, _080BB954 @ =0x00001a11 - adds r2, r0 - ldr r4, _080BB958 @ =gSaveBlock2 + 0xA -_080BB8E2: - adds r1, r3, r2 - adds r0, r3, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080BB8E2 - ldr r0, _080BB95C @ =0x00004054 - movs r1, 0 - bl VarSet - ldr r6, _080BB960 @ =gSaveBlock2 - adds r0, r6, 0 - bl sub_80BB8A8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080BB964 @ =gSaveBlock1 + 0x1A0A - adds r0, r5, 0 - movs r1, 0xFF - movs r2, 0x7 - bl memset - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl StringCopyN - ldrb r0, [r6, 0x8] - subs r5, 0x1 - movs r1, 0x1 - ands r1, r0 - lsls r1, 4 - ldrb r2, [r5] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - ldr r0, _080BB968 @ =0x00004026 - ldr r1, _080BB96C @ =gMapHeader - ldrb r1, [r1, 0x14] - bl VarSet - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB948: .4byte gSaveBlock1 -_080BB94C: .4byte gUnknown_020387DC -_080BB950: .4byte 0x00001a08 -_080BB954: .4byte 0x00001a11 -_080BB958: .4byte gSaveBlock2 + 0xA -_080BB95C: .4byte 0x00004054 -_080BB960: .4byte gSaveBlock2 -_080BB964: .4byte gSaveBlock1 + 0x1A0A -_080BB968: .4byte 0x00004026 -_080BB96C: .4byte gMapHeader - thumb_func_end sub_80BB8CC - thumb_func_start sub_80BB970 sub_80BB970: @ 80BB970 push {r4-r7,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 2842add3c..9dcd74781 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -5,12 +5,13 @@ #include "text.h" #include "field_player_avatar.h" #include "field_camera.h" +#include "string_util.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8007; extern u16 gScriptResult; -extern struct { +extern const struct { u16 unk_083D1358_0; u16 unk_083D1358_1; } gUnknown_083D1358[7]; @@ -155,3 +156,18 @@ u8 sub_80BB8A8(u8 *arg1) { } return 7; } + +void sub_80BB8CC(void) { + u8 nameLength; + u16 idx; + gSaveBlock1.secretBases[0].sbr_field_0 = gUnknown_020387DC; + for (idx=0; idx<4; idx++) { + gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx]; + } + VarSet(VAR_0x4054, 0); + nameLength = sub_80BB8A8(gSaveBlock2.playerName); + memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7); + StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength); + gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; + VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); +} -- cgit v1.2.3 From f9893ea59564835ebf8560b40928e19bfbdcc39d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 12:09:11 -0400 Subject: Nonmatching sub_80BB970 --- asm/secret_base.s | 87 ----------------------------------- src/secret_base_80bb4ac.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 87 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 6be32732e..5e8792e45 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,93 +6,6 @@ .section .text_b - thumb_func_start sub_80BB970 -sub_80BB970: @ 80BB970 - push {r4-r7,lr} - adds r5, r0, 0 - movs r2, 0 - b _080BBA06 -_080BB978: - ldr r0, [r5, 0x10] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x5] - adds r7, r2, 0x1 - cmp r0, 0x8 - bne _080BBA02 - movs r2, 0 - ldr r4, _080BB9E0 @ =gSaveBlock1 - adds r6, r1, 0 -_080BB990: - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 5 - adds r0, r4 - ldr r1, _080BB9E4 @ =0x00001a08 - adds r0, r1 - ldrb r1, [r0] - ldr r0, [r3, 0x8] - cmp r1, r0 - bne _080BB9F8 - ldrh r0, [r3] - adds r0, 0x7 - ldrh r1, [r3, 0x2] - adds r1, 0x7 - bl MapGridGetMetatileIdAt - movs r3, 0 - lsls r0, 16 - asrs r4, r0, 16 -_080BB9B6: - ldr r0, _080BB9E8 @ =gUnknown_083D1358 - lsls r1, r3, 2 - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r4 - bne _080BB9EC - ldr r1, [r5, 0x10] - adds r1, r6, r1 - ldrh r0, [r1] - adds r0, 0x7 - ldrh r1, [r1, 0x2] - adds r1, 0x7 - ldrh r3, [r2, 0x2] - movs r4, 0xC0 - lsls r4, 4 - adds r2, r4, 0 - orrs r2, r3 - bl MapGridSetMetatileIdAt - b _080BBA02 - .align 2, 0 -_080BB9E0: .4byte gSaveBlock1 -_080BB9E4: .4byte 0x00001a08 -_080BB9E8: .4byte gUnknown_083D1358 -_080BB9EC: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x6 - bls _080BB9B6 - b _080BBA02 -_080BB9F8: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x13 - bls _080BB990 -_080BBA02: - lsls r0, r7, 16 - lsrs r2, r0, 16 -_080BBA06: - ldrb r0, [r5, 0x3] - cmp r2, r0 - bcc _080BB978 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB970 - thumb_func_start sub_80BBA14 sub_80BBA14: @ 80BBA14 push {lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 9dcd74781..14ceb5d84 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -171,3 +171,115 @@ void sub_80BB8CC(void) { gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); } + +#ifdef NONMATCHING +void sub_80BB970(struct MapEvents *events) { + u16 bgevidx, idx, jdx; + s16 tile_id; + for (bgevidx=0; bgevidxbgEventCount; bgevidx++) { + if (events->bgEvents[bgevidx].kind == 8) { + for (jdx=0; jdx<20; jdx++) { + if (gSaveBlock1.secretBases[jdx].sbr_field_0 == events->bgEvents[bgevidx].bgUnion.secretBaseId) { + tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + MapGridSetMetatileIdAt((events->bgEvents[bgevidx].x + 7), (events->bgEvents[bgevidx].y + 7), gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); + break; + } + } + } + break; + } + } + } +} +#else +__attribute__((naked)) +void sub_80BB970(struct MapEvents *events) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + adds r5, r0, 0\n\ + movs r2, 0\n\ + b _080BBA06\n\ + _080BB978:\n\ + ldr r0, [r5, 0x10]\n\ + lsls r1, r2, 1\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r3, r1, r0\n\ + ldrb r0, [r3, 0x5]\n\ + adds r7, r2, 0x1\n\ + cmp r0, 0x8\n\ + bne _080BBA02\n\ + movs r2, 0\n\ + ldr r4, _080BB9E0 @ =gSaveBlock1\n\ + adds r6, r1, 0\n\ + _080BB990:\n\ + lsls r0, r2, 2\n\ + adds r0, r2\n\ + lsls r0, 5\n\ + adds r0, r4\n\ + ldr r1, _080BB9E4 @ =0x00001a08\n\ + adds r0, r1\n\ + ldrb r1, [r0]\n\ + ldr r0, [r3, 0x8]\n\ + cmp r1, r0\n\ + bne _080BB9F8\n\ + ldrh r0, [r3]\n\ + adds r0, 0x7\n\ + ldrh r1, [r3, 0x2]\n\ + adds r1, 0x7\n\ + bl MapGridGetMetatileIdAt\n\ + movs r3, 0\n\ + lsls r0, 16\n\ + asrs r4, r0, 16\n\ + _080BB9B6:\n\ + ldr r0, _080BB9E8 @ =gUnknown_083D1358\n\ + lsls r1, r3, 2\n\ + adds r2, r1, r0\n\ + ldrh r0, [r2]\n\ + cmp r0, r4\n\ + bne _080BB9EC\n\ + ldr r1, [r5, 0x10]\n\ + adds r1, r6, r1\n\ + ldrh r0, [r1]\n\ + adds r0, 0x7\n\ + ldrh r1, [r1, 0x2]\n\ + adds r1, 0x7\n\ + ldrh r3, [r2, 0x2]\n\ + movs r4, 0xC0\n\ + lsls r4, 4\n\ + adds r2, r4, 0\n\ + orrs r2, r3\n\ + bl MapGridSetMetatileIdAt\n\ + b _080BBA02\n\ + .align 2, 0\n\ + _080BB9E0: .4byte gSaveBlock1\n\ + _080BB9E4: .4byte 0x00001a08\n\ + _080BB9E8: .4byte gUnknown_083D1358\n\ + _080BB9EC:\n\ + adds r0, r3, 0x1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0x6\n\ + bls _080BB9B6\n\ + b _080BBA02\n\ + _080BB9F8:\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x13\n\ + bls _080BB990\n\ + _080BBA02:\n\ + lsls r0, r7, 16\n\ + lsrs r2, r0, 16\n\ + _080BBA06:\n\ + ldrb r0, [r5, 0x3]\n\ + cmp r2, r0\n\ + bcc _080BB978\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .syntax divided\n"); +} +#endif -- cgit v1.2.3 From 0c82a4aaab1bff5f4893c2e116a5a68112edc36a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 13:40:50 -0400 Subject: get sub_80BB970 matching --- include/global.fieldmap.h | 4 +- src/secret_base_80bb4ac.c | 95 +---------------------------------------------- 2 files changed, 4 insertions(+), 95 deletions(-) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 508d7e4ed..0b72bbec5 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -104,7 +104,7 @@ struct CoordEvent struct BgEvent { - s16 x, y; + u16 x, y; u8 unk4; u8 kind; // 0x2 padding for the union beginning. @@ -119,7 +119,7 @@ struct BgEvent } hiddenItem; // secret base type - u16 secretBaseId; + u32 secretBaseId; } bgUnion; }; diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 14ceb5d84..f618b1bba 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -172,7 +172,6 @@ void sub_80BB8CC(void) { VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); } -#ifdef NONMATCHING void sub_80BB970(struct MapEvents *events) { u16 bgevidx, idx, jdx; s16 tile_id; @@ -183,103 +182,13 @@ void sub_80BB970(struct MapEvents *events) { tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); for (idx=0; idx<7; idx++) { if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { - MapGridSetMetatileIdAt((events->bgEvents[bgevidx].x + 7), (events->bgEvents[bgevidx].y + 7), gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); + MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); break; } } + break; } - break; } } } } -#else -__attribute__((naked)) -void sub_80BB970(struct MapEvents *events) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - adds r5, r0, 0\n\ - movs r2, 0\n\ - b _080BBA06\n\ - _080BB978:\n\ - ldr r0, [r5, 0x10]\n\ - lsls r1, r2, 1\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r3, r1, r0\n\ - ldrb r0, [r3, 0x5]\n\ - adds r7, r2, 0x1\n\ - cmp r0, 0x8\n\ - bne _080BBA02\n\ - movs r2, 0\n\ - ldr r4, _080BB9E0 @ =gSaveBlock1\n\ - adds r6, r1, 0\n\ - _080BB990:\n\ - lsls r0, r2, 2\n\ - adds r0, r2\n\ - lsls r0, 5\n\ - adds r0, r4\n\ - ldr r1, _080BB9E4 @ =0x00001a08\n\ - adds r0, r1\n\ - ldrb r1, [r0]\n\ - ldr r0, [r3, 0x8]\n\ - cmp r1, r0\n\ - bne _080BB9F8\n\ - ldrh r0, [r3]\n\ - adds r0, 0x7\n\ - ldrh r1, [r3, 0x2]\n\ - adds r1, 0x7\n\ - bl MapGridGetMetatileIdAt\n\ - movs r3, 0\n\ - lsls r0, 16\n\ - asrs r4, r0, 16\n\ - _080BB9B6:\n\ - ldr r0, _080BB9E8 @ =gUnknown_083D1358\n\ - lsls r1, r3, 2\n\ - adds r2, r1, r0\n\ - ldrh r0, [r2]\n\ - cmp r0, r4\n\ - bne _080BB9EC\n\ - ldr r1, [r5, 0x10]\n\ - adds r1, r6, r1\n\ - ldrh r0, [r1]\n\ - adds r0, 0x7\n\ - ldrh r1, [r1, 0x2]\n\ - adds r1, 0x7\n\ - ldrh r3, [r2, 0x2]\n\ - movs r4, 0xC0\n\ - lsls r4, 4\n\ - adds r2, r4, 0\n\ - orrs r2, r3\n\ - bl MapGridSetMetatileIdAt\n\ - b _080BBA02\n\ - .align 2, 0\n\ - _080BB9E0: .4byte gSaveBlock1\n\ - _080BB9E4: .4byte 0x00001a08\n\ - _080BB9E8: .4byte gUnknown_083D1358\n\ - _080BB9EC:\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x6\n\ - bls _080BB9B6\n\ - b _080BBA02\n\ - _080BB9F8:\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x13\n\ - bls _080BB990\n\ - _080BBA02:\n\ - lsls r0, r7, 16\n\ - lsrs r2, r0, 16\n\ - _080BBA06:\n\ - ldrb r0, [r5, 0x3]\n\ - cmp r2, r0\n\ - bcc _080BB978\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .syntax divided\n"); -} -#endif -- cgit v1.2.3 From 63a0ce6c0e99c667379b40b3d2fa76b8f6badca9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 14:00:23 -0400 Subject: sub_80BBA14 --- asm/secret_base.s | 27 --------------------------- src/secret_base_80bb4ac.c | 9 +++++++++ 2 files changed, 9 insertions(+), 27 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 5e8792e45..fbc30dbf9 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,33 +6,6 @@ .section .text_b - thumb_func_start sub_80BBA14 -sub_80BBA14: @ 80BBA14 - push {lr} - ldr r0, _080BBA40 @ =gUnknown_020387DC - ldrb r0, [r0] - movs r1, 0xA - bl __udivsi3 - ldr r2, _080BBA44 @ =gUnknown_083D1374 - lsls r0, 26 - asrs r0, 24 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - adds r0, 0x1 - adds r0, r2 - movs r2, 0 - ldrsb r2, [r0, r2] - movs r0, 0x19 - bl warp1_set_2 - pop {r0} - bx r0 - .align 2, 0 -_080BBA40: .4byte gUnknown_020387DC -_080BBA44: .4byte gUnknown_083D1374 - thumb_func_end sub_80BBA14 - thumb_func_start sub_80BBA48 sub_80BBA48: @ 80BBA48 push {r4,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index f618b1bba..c83af2bfc 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -1,11 +1,13 @@ #include "global.h" #include "event_data.h" +#include "rom4.h" #include "asm.h" #include "vars.h" #include "text.h" #include "field_player_avatar.h" #include "field_camera.h" #include "string_util.h" +#include "map_constants.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; @@ -15,6 +17,8 @@ extern const struct { u16 unk_083D1358_0; u16 unk_083D1358_1; } gUnknown_083D1358[7]; +extern const u8 gUnknown_083D1374[48]; + void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac u16 i; @@ -192,3 +196,8 @@ void sub_80BB970(struct MapEvents *events) { } } } + +void sub_80BBA14(void) { + s8 idx = 4 * (gUnknown_020387DC / 10); + warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); +} -- cgit v1.2.3 From 5c434e133dafd2705bb0ecb012b141d3bbcc863a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 14:22:59 -0400 Subject: sub_80BBA48 --- asm/secret_base.s | 81 ----------------------------------------------- src/secret_base_80bb4ac.c | 27 ++++++++++++++++ 2 files changed, 27 insertions(+), 81 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index fbc30dbf9..cb6a2024d 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,87 +6,6 @@ .section .text_b - thumb_func_start sub_80BBA48 -sub_80BBA48: @ 80BBA48 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080BBA6C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0x1 - beq _080BBA7C - cmp r0, 0x1 - bgt _080BBA70 - cmp r0, 0 - beq _080BBA76 - b _080BBAD0 - .align 2, 0 -_080BBA6C: .4byte gTasks -_080BBA70: - cmp r0, 0x2 - beq _080BBA94 - b _080BBAD0 -_080BBA76: - movs r0, 0x1 - strh r0, [r2, 0x8] - b _080BBAD0 -_080BBA7C: - ldr r0, _080BBA90 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BBAD0 - movs r0, 0x2 - strh r0, [r2, 0x8] - b _080BBAD0 - .align 2, 0 -_080BBA90: .4byte gPaletteFade -_080BBA94: - ldr r0, _080BBAD8 @ =0x00004054 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080BBADC @ =gSaveBlock1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, r2 - ldr r0, _080BBAE0 @ =0x00001a18 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0xFE - bhi _080BBAB6 - adds r0, 0x1 - strb r0, [r1] -_080BBAB6: - bl sub_80BBA14 - bl warp_in - ldr r0, _080BBAE4 @ =gUnknown_0300485C - ldr r1, _080BBAE8 @ =sub_8080990 - str r1, [r0] - ldr r0, _080BBAEC @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_080BBAD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BBAD8: .4byte 0x00004054 -_080BBADC: .4byte gSaveBlock1 -_080BBAE0: .4byte 0x00001a18 -_080BBAE4: .4byte gUnknown_0300485C -_080BBAE8: .4byte sub_8080990 -_080BBAEC: .4byte CB2_LoadMap - thumb_func_end sub_80BBA48 - thumb_func_start sub_80BBAF0 sub_80BBAF0: @ 80BBAF0 push {lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index c83af2bfc..21fcbe9b5 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -8,6 +8,8 @@ #include "field_camera.h" #include "string_util.h" #include "map_constants.h" +#include "task.h" +#include "palette.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; @@ -18,6 +20,7 @@ extern const struct { u16 unk_083D1358_1; } gUnknown_083D1358[7]; extern const u8 gUnknown_083D1374[48]; +extern void *gUnknown_0300485C; void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac @@ -201,3 +204,27 @@ void sub_80BBA14(void) { s8 idx = 4 * (gUnknown_020387DC / 10); warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); } + +void sub_80BBA48(u8 taskid) { + u16 curbaseid; + switch (gTasks[taskid].data[0]) { + case 0: + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + curbaseid = VarGet(VAR_0x4054); + if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) + gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; + sub_80BBA14(); + warp_in(); + gUnknown_0300485C = sub_8080990; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + break; + } +} -- cgit v1.2.3 From 3ad46a01cbdb6b538a365a999e79d178b499b7c7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 14:26:53 -0400 Subject: sub_80BBAF0 --- asm/secret_base.s | 25 ------------------------- src/secret_base_80bb4ac.c | 7 +++++++ 2 files changed, 7 insertions(+), 25 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index cb6a2024d..cf2ce3968 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,31 +6,6 @@ .section .text_b - thumb_func_start sub_80BBAF0 -sub_80BBAF0: @ 80BBAF0 - push {lr} - ldr r0, _080BBB1C @ =sub_80BBA48 - movs r1, 0 - bl CreateTask - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080BBB20 @ =gSaveBlock1 - movs r1, 0x4 - ldrsb r1, [r0, r1] - movs r2, 0x5 - ldrsb r2, [r0, r2] - movs r3, 0x1 - negs r3, r3 - movs r0, 0 - bl saved_warp2_set - pop {r0} - bx r0 - .align 2, 0 -_080BBB1C: .4byte sub_80BBA48 -_080BBB20: .4byte gSaveBlock1 - thumb_func_end sub_80BBAF0 - thumb_func_start sub_80BBB24 sub_80BBB24: @ 80BBB24 push {lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 21fcbe9b5..f1237681c 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -10,6 +10,7 @@ #include "map_constants.h" #include "task.h" #include "palette.h" +#include "field_weather.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; @@ -228,3 +229,9 @@ void sub_80BBA48(u8 taskid) { break; } } + +void sub_80BBAF0(void) { + CreateTask(sub_80BBA48, 0); + fade_screen(1, 0); + saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); +} -- cgit v1.2.3 From 59023fb934d7f7e193cae719ec1f587ad7eaa93e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 14:34:12 -0400 Subject: sub_80BBB24 --- asm/secret_base.s | 24 ------------------------ include/vars.h | 2 ++ src/secret_base_80bb4ac.c | 6 ++++++ 3 files changed, 8 insertions(+), 24 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index cf2ce3968..88a4cb311 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,30 +6,6 @@ .section .text_b - thumb_func_start sub_80BBB24 -sub_80BBB24: @ 80BBB24 - push {lr} - ldr r0, _080BBB40 @ =gMapHeader - ldrb r0, [r0, 0x17] - cmp r0, 0x9 - bne _080BBB48 - ldr r0, _080BBB44 @ =0x00004097 - bl VarGet - lsls r0, 16 - cmp r0, 0 - bne _080BBB48 - movs r0, 0 - b _080BBB4A - .align 2, 0 -_080BBB40: .4byte gMapHeader -_080BBB44: .4byte 0x00004097 -_080BBB48: - movs r0, 0x1 -_080BBB4A: - pop {r1} - bx r1 - thumb_func_end sub_80BBB24 - thumb_func_start sub_80BBB50 sub_80BBB50: @ 80BBB50 push {r4,lr} diff --git a/include/vars.h b/include/vars.h index 07c96482e..6a23695fb 100644 --- a/include/vars.h +++ b/include/vars.h @@ -28,6 +28,8 @@ #define VAR_0x4054 0x4054 +#define VAR_0x4097 0x4097 + #define VAR_PORTHOLE 0x40B4 #endif // GUARD_VARS_H diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index f1237681c..b5790ef4d 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -235,3 +235,9 @@ void sub_80BBAF0(void) { fade_screen(1, 0); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); } + +u8 sub_80BBB24(void) { + if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) + return 0; + return 1; +} -- cgit v1.2.3 From 81c06ecc1412f96d8da5a4597c96a814d4613620 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 14:41:54 -0400 Subject: sub_80BBB50 --- asm/secret_base.s | 31 ------------------------------- src/secret_base_80bb4ac.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 31 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 88a4cb311..89197e2d3 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,37 +6,6 @@ .section .text_b - thumb_func_start sub_80BBB50 -sub_80BBB50: @ 80BBB50 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080BBB88 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BBB8C @ =gMapObjects - adds r0, r1 - movs r1, 0x2 - bl FieldObjectTurn - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BBB80 - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_080BBB80: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BBB88: .4byte gPlayerAvatar -_080BBB8C: .4byte gMapObjects - thumb_func_end sub_80BBB50 - thumb_func_start sub_80BBB90 sub_80BBB90: @ 80BBB90 push {r4,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index b5790ef4d..617b35202 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -2,6 +2,7 @@ #include "event_data.h" #include "rom4.h" #include "asm.h" +#include "script.h" #include "vars.h" #include "text.h" #include "field_player_avatar.h" @@ -22,6 +23,7 @@ extern const struct { } gUnknown_083D1358[7]; extern const u8 gUnknown_083D1374[48]; extern void *gUnknown_0300485C; +extern u8 sub_807D770(void); void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac @@ -241,3 +243,11 @@ u8 sub_80BBB24(void) { return 0; return 1; } + +void sub_80BBB50(u8 taskid) { + FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); + if (sub_807D770() == 1) { + EnableBothScriptContexts(); + DestroyTask(taskid); + } +} -- cgit v1.2.3 From a45651fc21bfc74e5bdc80a85b9c46d2164d4e2f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 14:47:18 -0400 Subject: sub_80BBB90 --- asm/secret_base.s | 43 ------------------------------------------- src/secret_base_80bb4ac.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 43 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 89197e2d3..105cb4d12 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,49 +6,6 @@ .section .text_b - thumb_func_start sub_80BBB90 -sub_80BBB90: @ 80BBB90 - push {r4,lr} - sub sp, 0x4 - bl ScriptContext2_Enable - bl HideMapNamePopup - mov r4, sp - adds r4, 0x2 - movs r2, 0x88 - lsls r2, 2 - mov r0, sp - adds r1, r4, 0 - bl sub_80BB764 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, 0x7 - movs r2, 0 - ldrsh r1, [r4, r2] - adds r1, 0x7 - movs r2, 0xE2 - lsls r2, 4 - bl MapGridSetMetatileIdAt - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, 0x7 - movs r2, 0 - ldrsh r1, [r4, r2] - adds r1, 0x7 - bl CurrentMapDrawMetatileAt - bl pal_fill_black - ldr r0, _080BBBE8 @ =sub_80BBB50 - movs r1, 0 - bl CreateTask - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BBBE8: .4byte sub_80BBB50 - thumb_func_end sub_80BBB90 - thumb_func_start sub_80BBBEC sub_80BBBEC: @ 80BBBEC push {r4-r6,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 617b35202..f01b2ebcb 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -251,3 +251,14 @@ void sub_80BBB50(u8 taskid) { DestroyTask(taskid); } } + +void sub_80BBB90(void) { + s16 x, y; + ScriptContext2_Enable(); + HideMapNamePopup(); + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe20); + CurrentMapDrawMetatileAt(x + 7, y + 7); + pal_fill_black(); + CreateTask(sub_80BBB50, 0); +} -- cgit v1.2.3 From e36852b36e79c6041059a41daec9b572f7156f7d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 15:10:41 -0400 Subject: CurrentMapIsSecretBase --- asm/secret_base.s | 110 ---------------------------------------------- src/secret_base_80bb4ac.c | 32 ++++++++++++-- 2 files changed, 28 insertions(+), 114 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 105cb4d12..913f6915a 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,116 +6,6 @@ .section .text_b - thumb_func_start sub_80BBBEC -sub_80BBBEC: @ 80BBBEC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080BBC5C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BBC52 - ldr r0, _080BBC60 @ =gUnknown_020387DC - ldrb r0, [r0] - movs r1, 0xA - bl __udivsi3 - ldr r1, _080BBC64 @ =gSaveBlock1 - movs r5, 0x4 - ldrsb r5, [r1, r5] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - ldr r4, _080BBC68 @ =gUnknown_083D1374 - lsls r0, 26 - asrs r0, 24 - adds r3, r0, 0x2 - adds r3, r4 - ldrb r3, [r3] - lsls r3, 24 - asrs r3, 24 - adds r0, 0x3 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - adds r0, r5, 0 - bl warp1_set - bl warp_in - ldr r1, _080BBC6C @ =gUnknown_0300485C - ldr r0, _080BBC70 @ =sub_80BBB90 - str r0, [r1] - ldr r0, _080BBC74 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r6, 0 - bl DestroyTask -_080BBC52: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BBC5C: .4byte gPaletteFade -_080BBC60: .4byte gUnknown_020387DC -_080BBC64: .4byte gSaveBlock1 -_080BBC68: .4byte gUnknown_083D1374 -_080BBC6C: .4byte gUnknown_0300485C -_080BBC70: .4byte sub_80BBB90 -_080BBC74: .4byte CB2_LoadMap - thumb_func_end sub_80BBBEC - - thumb_func_start sub_80BBC78 -sub_80BBC78: @ 80BBC78 - push {lr} - ldr r0, _080BBCA0 @ =sub_80BBBEC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BBCA4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - movs r0, 0x1 - movs r1, 0 - bl fade_screen - pop {r0} - bx r0 - .align 2, 0 -_080BBCA0: .4byte sub_80BBBEC -_080BBCA4: .4byte gTasks - thumb_func_end sub_80BBC78 - - thumb_func_start CurrentMapIsSecretBase -CurrentMapIsSecretBase: @ 80BBCA8 - push {lr} - ldr r1, _080BBCC0 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x19 - bne _080BBCC4 - ldrb r0, [r1, 0x5] - cmp r0, 0x17 - bhi _080BBCC4 - movs r0, 0x1 - b _080BBCC6 - .align 2, 0 -_080BBCC0: .4byte gSaveBlock1 -_080BBCC4: - movs r0, 0 -_080BBCC6: - pop {r1} - bx r1 - thumb_func_end CurrentMapIsSecretBase - thumb_func_start sub_80BBCCC sub_80BBCCC: @ 80BBCCC push {r4-r7,lr} diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index f01b2ebcb..990da5727 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -21,7 +21,7 @@ extern const struct { u16 unk_083D1358_0; u16 unk_083D1358_1; } gUnknown_083D1358[7]; -extern const u8 gUnknown_083D1374[48]; +extern const u8 gUnknown_083D1374[4 * 16]; extern void *gUnknown_0300485C; extern u8 sub_807D770(void); @@ -238,10 +238,10 @@ void sub_80BBAF0(void) { saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); } -u8 sub_80BBB24(void) { +bool8 sub_80BBB24(void) { if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) - return 0; - return 1; + return FALSE; + return TRUE; } void sub_80BBB50(u8 taskid) { @@ -262,3 +262,27 @@ void sub_80BBB90(void) { pal_fill_black(); CreateTask(sub_80BBB50, 0); } + +void sub_80BBBEC(u8 taskid) { + s8 idx; + if (!gPaletteFade.active) { + idx = 4 * (gUnknown_020387DC / 10); + warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); + warp_in(); + gUnknown_0300485C = sub_80BBB90; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + } +} + +void sub_80BBC78(void) { + u8 taskid = CreateTask(sub_80BBBEC, 0); + gTasks[taskid].data[0] = 0; + fade_screen(1, 0); +} + +bool8 CurrentMapIsSecretBase(void) { + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4) + return TRUE; + return FALSE; +} -- cgit v1.2.3 From ca26346cff5ca1448896a499072255100cedeb66 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 17:08:11 -0400 Subject: sub_80BBCCC (almost matching) --- asm/secret_base.s | 123 ------------------------- include/decoration.h | 19 ++-- include/global.h | 36 ++++---- include/vars.h | 1 + src/secret_base_80bb4ac.c | 222 +++++++++++++++++++++++++++++++++++++++++----- 5 files changed, 228 insertions(+), 173 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 913f6915a..006f8c4a9 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,129 +6,6 @@ .section .text_b - thumb_func_start sub_80BBCCC -sub_80BBCCC: @ 80BBCCC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - bl CurrentMapIsSecretBase - lsls r0, 24 - cmp r0, 0 - beq _080BBDBC - ldr r0, _080BBD70 @ =0x00004054 - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - movs r1, 0 - mov r0, sp - strh r1, [r0] - ldr r6, _080BBD74 @ =gSaveBlock1 - mov r4, sp - ldr r0, _080BBD78 @ =0x00001a2a - adds r7, r6, r0 -_080BBCFC: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 5 - ldrh r1, [r4] - adds r2, r0, r1 - ldr r1, _080BBD7C @ =0x00001a1a - adds r0, r6, r1 - adds r1, r2, r0 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bhi _080BBD3A - ldr r0, _080BBD80 @ =gDecorations - ldrb r3, [r1] - lsls r1, r3, 5 - adds r1, r0 - ldrb r0, [r1, 0x11] - cmp r0, 0x4 - beq _080BBD3A - adds r0, r2, r7 - ldrb r2, [r0] - lsrs r0, r2, 4 - adds r0, 0x7 - movs r1, 0xF - ands r1, r2 - adds r1, 0x7 - adds r2, r3, 0 - bl sub_80FF394 -_080BBD3A: - ldrh r0, [r4] - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - strh r0, [r4] - cmp r0, 0xF - bls _080BBCFC - cmp r5, 0 - beq _080BBD88 - mov r4, sp - adds r4, 0x2 - movs r2, 0x88 - lsls r2, 2 - mov r0, sp - adds r1, r4, 0 - bl sub_80BB764 - mov r0, sp - ldrh r0, [r0] - adds r0, 0x7 - ldrh r1, [r4] - adds r1, 0x7 - ldr r2, _080BBD84 @ =0x00000e21 - bl MapGridSetMetatileIdAt - b _080BBDBC - .align 2, 0 -_080BBD70: .4byte 0x00004054 -_080BBD74: .4byte gSaveBlock1 -_080BBD78: .4byte 0x00001a2a -_080BBD7C: .4byte 0x00001a1a -_080BBD80: .4byte gDecorations -_080BBD84: .4byte 0x00000e21 -_080BBD88: - mov r0, r8 - cmp r0, 0x1 - bne _080BBDBC - ldr r0, _080BBDC8 @ =0x00004089 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _080BBDBC - mov r4, sp - adds r4, 0x2 - movs r2, 0x88 - lsls r2, 2 - mov r0, sp - adds r1, r4, 0 - bl sub_80BB764 - mov r0, sp - ldrh r0, [r0] - adds r0, 0x7 - ldrh r1, [r4] - adds r1, 0x7 - ldr r2, _080BBDCC @ =0x00000e0a - bl MapGridSetMetatileIdAt -_080BBDBC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BBDC8: .4byte 0x00004089 -_080BBDCC: .4byte 0x00000e0a - thumb_func_end sub_80BBCCC - thumb_func_start sub_80BBDD0 sub_80BBDD0: @ 80BBDD0 push {r4-r7,lr} diff --git a/include/decoration.h b/include/decoration.h index 4bad93d1f..4f24d451d 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -3,14 +3,17 @@ struct Decoration { - u8 id; - u8 name[16]; - u8 decor_field_11; - u8 decor_field_12; - u8 decor_field_13; - u16 price; - u8 *description; - void *tiles; + /*0x00*/ u8 id; + /*0x01*/ u8 name[16]; + /*0x11*/ u8 decor_field_11; + /*0x12*/ u8 decor_field_12; + /*0x13*/ u8 decor_field_13; + /*0x14*/ u16 price; + /*0x16*/ u8 *description; + /*0x1A*/ void *tiles; }; +extern struct Decoration gDecorations[0x77]; +extern void sub_80FF394(u16 unkr0, u16 unkr1, u16 unkr2); + #endif // GUARD_DECORATION_H diff --git a/include/global.h b/include/global.h index e106e2b6f..28d7b1c96 100644 --- a/include/global.h +++ b/include/global.h @@ -94,24 +94,24 @@ struct UCoords16 struct SecretBaseRecord { - u8 sbr_field_0; // ID? - u8 sbr_field_1_0:4; - u8 gender:1; - u8 sbr_field_1_5:1; - u8 sbr_field_1_6:2; - u8 sbr_field_2[7]; // 0xFF bytes? - u8 trainerId[4]; // byte 0 is used for determining trainer class - u16 sbr_field_e; - u8 sbr_field_10; - u8 sbr_field_11; - u8 decorations[16]; - u8 sbr_field_22[16]; - u32 partyPersonality[6]; - u16 partyMoves[6 * 4]; - u16 partySpecies[6]; - u16 partyHeldItems[6]; - u8 partyLevels[6]; - u8 partyEVs[6]; + /*0x1A08*/ u8 sbr_field_0; // ID? + /*0x1A09*/ u8 sbr_field_1_0:4; + /*0x1A09*/ u8 gender:1; + /*0x1A09*/ u8 sbr_field_1_5:1; + /*0x1A09*/ u8 sbr_field_1_6:2; + /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes? + /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class + /*0x1A16*/ u16 sbr_field_e; + /*0x1A18*/ u8 sbr_field_10; + /*0x1A19*/ u8 sbr_field_11; + /*0x1A1A*/ u8 decorations[16]; + /*0x1A2A*/ u8 sbr_field_22[16]; + /*0x1A3A*/ u32 partyPersonality[6]; + /*0x1A52*/ u16 partyMoves[6 * 4]; + /*0x1A6A*/ u16 partySpecies[6]; + /*0x1A76*/ u16 partyHeldItems[6]; + /*0x1A82*/ u8 partyLevels[6]; + /*0x1A88*/ u8 partyEVs[6]; }; #include "game_stat.h" diff --git a/include/vars.h b/include/vars.h index 6a23695fb..c2bddeedc 100644 --- a/include/vars.h +++ b/include/vars.h @@ -28,6 +28,7 @@ #define VAR_0x4054 0x4054 +#define VAR_0x4089 0x4089 #define VAR_0x4097 0x4097 #define VAR_PORTHOLE 0x40B4 diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 990da5727..a0fbb1212 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -11,13 +11,15 @@ #include "map_constants.h" #include "task.h" #include "palette.h" +#include "decoration.h" #include "field_weather.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8007; extern u16 gScriptResult; -extern const struct { +extern const struct +{ u16 unk_083D1358_0; u16 unk_083D1358_1; } gUnknown_083D1358[7]; @@ -26,7 +28,8 @@ extern void *gUnknown_0300485C; extern u8 sub_807D770(void); -void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac +void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac +{ u16 i; u16 j; record->sbr_field_0 = 0; @@ -57,21 +60,25 @@ void sub_80BB4AC(struct SecretBaseRecord *record) { // 080bb4ac } } -void ResetSecretBase(u8 idx) { // 80bb594 +void ResetSecretBase(u8 idx) // 80bb594 +{ sub_80BB4AC(&(gSaveBlock1.secretBases[idx])); } -void ResetSecretBases(void) { // 080bb5b4 +void ResetSecretBases(void) // 080bb5b4 +{ u16 i; for (i=0; i<20; i++) ResetSecretBase(i); } -void sub_80BB5D0(void) { // 080bb5d0 +void sub_80BB5D0(void) // 080bb5d0 +{ gUnknown_020387DC = gSpecialVar_0x8004; } -void sub_80BB5E4(void) { // 80bb5e4 +void sub_80BB5E4(void) // 80bb5e4 +{ u16 idx; gScriptResult = 0; for (idx=0; idx<20; idx++) { @@ -83,14 +90,16 @@ void sub_80BB5E4(void) { // 80bb5e4 } } -void sub_80BB63C(void) { // 80bb63c +void sub_80BB63C(void) // 80bb63c +{ if (gSaveBlock1.secretBases[0].sbr_field_0) gScriptResult = 1; else gScriptResult = 0; } -u8 sub_80BB66C(void) { // 80bb66c +u8 sub_80BB66C(void) // 80bb66c +{ s16 x, y; s16 v0; GetXYCoordsOneStepInFrontOfPlayer(&x, &y); @@ -110,11 +119,13 @@ u8 sub_80BB66C(void) { // 80bb66c return 0; } -void sub_80BB70C(void) { // 80bb70c +void sub_80BB70C(void) // 80bb70c +{ gSpecialVar_0x8007 = sub_80BB66C(); } -s16 unref_sub_80BB724(u16 *a0, u8 a1) { +s16 unref_sub_80BB724(u16 *a0, u8 a1) +{ u16 v2; for (v2=0; v2<0x200; v2++) { if ((a0[v2] & 0xFFF) == a1) @@ -123,7 +134,8 @@ s16 unref_sub_80BB724(u16 *a0, u8 a1) { return -1; } -void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { +void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) +{ s16 x, y; for (y=0; yheight; y++) { for (x=0; xwidth; x++) { @@ -136,7 +148,8 @@ void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) { } } -void sub_80BB800(void) { +void sub_80BB800(void) +{ s16 x, y; s16 tile_id; u16 idx; @@ -158,7 +171,8 @@ void sub_80BB800(void) { } } -u8 sub_80BB8A8(u8 *arg1) { +u8 sub_80BB8A8(u8 *arg1) +{ u8 idx; for (idx=0; idx<7; idx++) { if (arg1[idx] == EOS) @@ -167,7 +181,8 @@ u8 sub_80BB8A8(u8 *arg1) { return 7; } -void sub_80BB8CC(void) { +void sub_80BB8CC(void) +{ u8 nameLength; u16 idx; gSaveBlock1.secretBases[0].sbr_field_0 = gUnknown_020387DC; @@ -182,7 +197,8 @@ void sub_80BB8CC(void) { VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); } -void sub_80BB970(struct MapEvents *events) { +void sub_80BB970(struct MapEvents *events) +{ u16 bgevidx, idx, jdx; s16 tile_id; for (bgevidx=0; bgevidxbgEventCount; bgevidx++) { @@ -203,12 +219,14 @@ void sub_80BB970(struct MapEvents *events) { } } -void sub_80BBA14(void) { +void sub_80BBA14(void) +{ s8 idx = 4 * (gUnknown_020387DC / 10); warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); } -void sub_80BBA48(u8 taskid) { +void sub_80BBA48(u8 taskid) +{ u16 curbaseid; switch (gTasks[taskid].data[0]) { case 0: @@ -232,19 +250,22 @@ void sub_80BBA48(u8 taskid) { } } -void sub_80BBAF0(void) { +void sub_80BBAF0(void) +{ CreateTask(sub_80BBA48, 0); fade_screen(1, 0); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); } -bool8 sub_80BBB24(void) { +bool8 sub_80BBB24(void) +{ if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) return FALSE; return TRUE; } -void sub_80BBB50(u8 taskid) { +void sub_80BBB50(u8 taskid) +{ FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); if (sub_807D770() == 1) { EnableBothScriptContexts(); @@ -252,7 +273,8 @@ void sub_80BBB50(u8 taskid) { } } -void sub_80BBB90(void) { +void sub_80BBB90(void) +{ s16 x, y; ScriptContext2_Enable(); HideMapNamePopup(); @@ -263,7 +285,8 @@ void sub_80BBB90(void) { CreateTask(sub_80BBB50, 0); } -void sub_80BBBEC(u8 taskid) { +void sub_80BBBEC(u8 taskid) +{ s8 idx; if (!gPaletteFade.active) { idx = 4 * (gUnknown_020387DC / 10); @@ -275,14 +298,165 @@ void sub_80BBBEC(u8 taskid) { } } -void sub_80BBC78(void) { +void sub_80BBC78(void) +{ u8 taskid = CreateTask(sub_80BBBEC, 0); gTasks[taskid].data[0] = 0; fade_screen(1, 0); } -bool8 CurrentMapIsSecretBase(void) { +bool8 CurrentMapIsSecretBase(void) +{ if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4) return TRUE; return FALSE; } + +#ifdef NONMATCHING +void sub_80BBCCC(u8 flagIn) +{ + u16 curBaseId; + u16 x, y; + if (CurrentMapIsSecretBase()) { + curBaseId = VarGet(VAR_0x4054); + for (x=0; x<16; x++) { + if ((u8)(gSaveBlock1.secretBases[curBaseId].decorations[x] - 1) <= 0x77 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].decor_field_11 != 4) { + sub_80FF394((gSaveBlock1.secretBases[0].sbr_field_22[x] >> 4) + 7, (gSaveBlock1.secretBases[0].sbr_field_22[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); + } + } + if (curBaseId != 0) { + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21); + } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) { + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a); + } + } +} +#else +__attribute__((naked)) +void sub_80BBCCC(u8 flagIn) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080BBDBC\n\ + ldr r0, _080BBD70 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + movs r1, 0\n\ + mov r0, sp\n\ + strh r1, [r0]\n\ + ldr r6, _080BBD74 @ =gSaveBlock1\n\ + mov r4, sp\n\ + ldr r0, _080BBD78 @ =0x00001a2a\n\ + adds r7, r6, r0\n\ +_080BBCFC:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 5\n\ + ldrh r1, [r4]\n\ + adds r2, r0, r1\n\ + ldr r1, _080BBD7C @ =0x00001a1a\n\ + adds r0, r6, r1\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x77\n\ + bhi _080BBD3A\n\ + ldr r0, _080BBD80 @ =gDecorations\n\ + ldrb r3, [r1]\n\ + lsls r1, r3, 5\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBD3A\n\ + adds r0, r2, r7\n\ + ldrb r2, [r0]\n\ + lsrs r0, r2, 4\n\ + adds r0, 0x7\n\ + movs r1, 0xF\n\ + ands r1, r2\n\ + adds r1, 0x7\n\ + adds r2, r3, 0\n\ + bl sub_80FF394\n\ +_080BBD3A:\n\ + ldrh r0, [r4]\n\ + adds r0, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + strh r0, [r4]\n\ + cmp r0, 0xF\n\ + bls _080BBCFC\n\ + cmp r5, 0\n\ + beq _080BBD88\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBD84 @ =0x00000e21\n\ + bl MapGridSetMetatileIdAt\n\ + b _080BBDBC\n\ + .align 2, 0\n\ +_080BBD70: .4byte 0x00004054\n\ +_080BBD74: .4byte gSaveBlock1\n\ +_080BBD78: .4byte 0x00001a2a\n\ +_080BBD7C: .4byte 0x00001a1a\n\ +_080BBD80: .4byte gDecorations\n\ +_080BBD84: .4byte 0x00000e21\n\ +_080BBD88:\n\ + mov r0, r8\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + ldr r0, _080BBDC8 @ =0x00004089\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBDCC @ =0x00000e0a\n\ + bl MapGridSetMetatileIdAt\n\ +_080BBDBC:\n\ + add sp, 0x4\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BBDC8: .4byte 0x00004089\n\ +_080BBDCC: .4byte 0x00000e0a\n\ +.syntax divided\n"); +} +#endif -- cgit v1.2.3 From 32e8ab9c6f5630af90ead24967086185050e7060 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 16 May 2017 16:14:04 -0500 Subject: decompile sub_8010874 --- asm/battle_2.s | 463 --------------------------------------------------------- src/battle_2.c | 227 ++++++++++++++++++++++++++++ 2 files changed, 227 insertions(+), 463 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index ecb1d0b59..765653b88 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,469 +6,6 @@ .text - thumb_func_start objc_dp11b_pingpong -objc_dp11b_pingpong: @ 80107B0 - push {r4,r5,lr} - adds r4, r0, 0 - ldrh r0, [r4, 0x34] - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - bne _080107C8 - movs r2, 0x2E - ldrsh r0, [r4, r2] - b _080107CC -_080107C8: - movs r1, 0x2E - ldrsh r0, [r4, r1] -_080107CC: - movs r2, 0x32 - ldrsh r1, [r4, r2] - bl Sin - ldr r2, _080107F8 @ =gSprites - lsls r1, r5, 4 - adds r1, r5 - lsls r1, 2 - adds r1, r2 - ldrh r2, [r4, 0x32] - adds r0, r2 - strh r0, [r1, 0x26] - ldrh r0, [r4, 0x30] - ldrh r1, [r4, 0x2E] - adds r0, r1 - movs r1, 0xFF - ands r0, r1 - strh r0, [r4, 0x2E] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080107F8: .4byte gSprites - thumb_func_end objc_dp11b_pingpong - - thumb_func_start nullsub_41 -nullsub_41: @ 80107FC - bx lr - thumb_func_end nullsub_41 - - thumb_func_start sub_8010800 -sub_8010800: @ 8010800 - push {lr} - bl sub_8010874 - ldr r1, _08010818 @ =gUnknown_02024D1E - movs r0, 0 - strb r0, [r1, 0x1] - ldr r1, _0801081C @ =gUnknown_030042D4 - ldr r0, _08010820 @ =bc_8012FAC - str r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08010818: .4byte gUnknown_02024D1E -_0801081C: .4byte gUnknown_030042D4 -_08010820: .4byte bc_8012FAC - thumb_func_end sub_8010800 - - thumb_func_start sub_8010824 -sub_8010824: @ 8010824 - push {r4,r5,lr} - ldr r0, _08010864 @ =gUnknown_030042D4 - ldr r0, [r0] - bl _call_via_r0 - ldr r1, _08010868 @ =gUnknown_02024A60 - movs r0, 0 - strb r0, [r1] - ldr r0, _0801086C @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r0, 0 - beq _0801085E - ldr r5, _08010870 @ =gUnknown_03004330 - adds r4, r1, 0 -_08010840: - ldrb r0, [r4] - lsls r0, 2 - adds r0, r5 - ldr r0, [r0] - bl _call_via_r0 - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _0801086C @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08010840 -_0801085E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08010864: .4byte gUnknown_030042D4 -_08010868: .4byte gUnknown_02024A60 -_0801086C: .4byte gUnknown_02024A68 -_08010870: .4byte gUnknown_03004330 - thumb_func_end sub_8010824 - - thumb_func_start sub_8010874 -sub_8010874: @ 8010874 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0 - bl sub_801365C - bl sub_801377C - movs r2, 0 - movs r3, 0 - ldr r0, _08010AC8 @ =gUnknown_02024C4C - mov r10, r0 - ldr r1, _08010ACC @ =gUnknown_02024C44 - mov r9, r1 - ldr r4, _08010AD0 @ =gUnknown_02024C3C - mov r8, r4 - ldr r0, _08010AD4 @ =gUnknown_02024C34 - mov r12, r0 - ldr r4, _08010AD8 @ =gUnknown_02024CA8 - movs r5, 0 - ldr r7, _08010ADC @ =gUnknown_02024C2C - ldr r6, _08010AE0 @ =gUnknown_02024C54 -_080108A4: - ldr r0, _08010AE4 @ =gUnknown_02024C98 - adds r0, r5, r0 - str r3, [r0] - movs r1, 0 -_080108AC: - adds r0, r4, r1 - strb r3, [r0] - adds r1, 0x1 - cmp r1, 0x1B - bls _080108AC - movs r0, 0x2 - strb r0, [r4, 0x16] - ldr r1, _08010AE8 @ =gUnknown_02024C70 - adds r0, r2, r1 - strb r3, [r0] - mov r0, r12 - strh r3, [r0] - mov r1, r8 - strh r3, [r1] - mov r0, r9 - strh r3, [r0] - mov r1, r10 - strh r3, [r1] - ldr r0, _08010AEC @ =gUnknown_02024C5C - adds r1, r2, r0 - movs r0, 0xFF - strb r0, [r1] - strh r3, [r6] - strh r3, [r7] - ldr r1, _08010AF0 @ =0x02017100 - adds r0, r5, r1 - str r3, [r0] - movs r0, 0x2 - add r10, r0 - add r9, r0 - add r8, r0 - add r12, r0 - adds r4, 0x1C - adds r5, 0x4 - adds r7, 0x2 - adds r6, 0x2 - adds r2, 0x1 - cmp r2, 0x3 - ble _080108A4 - movs r5, 0 - ldr r3, _08010AF4 @ =gUnknown_02024C80 - ldr r4, _08010AF8 @ =gUnknown_02024C7A - movs r2, 0x1 -_08010902: - strh r5, [r4] - movs r1, 0 -_08010906: - adds r0, r3, r1 - strb r5, [r0] - adds r1, 0x1 - cmp r1, 0xB - bls _08010906 - adds r3, 0xC - adds r4, 0x2 - subs r2, 0x1 - cmp r2, 0 - bge _08010902 - movs r1, 0 - ldr r2, _08010AFC @ =gPlayerMonIndex - strb r1, [r2] - ldr r3, _08010B00 @ =gEnemyMonIndex - strb r1, [r3] - ldr r4, _08010B04 @ =gBattleWeather - strh r1, [r4] - ldr r1, _08010B08 @ =gUnknown_02024DBC - movs r2, 0 - movs r3, 0 -_0801092E: - adds r0, r1, r2 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x2B - bls _0801092E - movs r0, 0 - ldr r1, _08010B0C @ =gUnknown_02024C6C - str r0, [r1] - ldr r2, _08010B10 @ =gBattleTypeFlags - ldrh r1, [r2] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0801095C - ldr r3, _08010B14 @ =gSaveBlock2 - ldrb r1, [r3, 0x15] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _0801095C - movs r0, 0x80 - ldr r4, _08010B0C @ =gUnknown_02024C6C - str r0, [r4] -_0801095C: - ldr r1, _08010B14 @ =gSaveBlock2 - ldrb r0, [r1, 0x15] - lsls r0, 30 - lsrs r0, 31 - ldr r3, _08010B18 @ =0x02000000 - ldr r4, _08010B1C @ =0x00016084 - adds r2, r3, r4 - movs r1, 0 - strb r0, [r2] - ldr r0, _08010B20 @ =gUnknown_02024C0E - strb r1, [r0] - ldr r2, _08010B24 @ =gUnknown_02024D26 - strb r1, [r2] - ldr r3, _08010B28 @ =gUnknown_02024A64 - str r1, [r3] - movs r2, 0 - ldr r4, _08010B2C @ =gUnknown_02024D1A - strh r1, [r4] - ldr r1, _08010B18 @ =0x02000000 - ldr r3, _08010B30 @ =0x00017130 - adds r0, r1, r3 - strb r2, [r0] - ldr r4, _08010B34 @ =0x00017160 - adds r0, r1, r4 - strb r2, [r0] - ldr r1, _08010B38 @ =gUnknown_02024D1E - movs r2, 0 - adds r0, r1, 0x7 -_08010994: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08010994 - movs r5, 0 - ldr r0, _08010B3C @ =gUnknown_02024D18 - strh r5, [r0] - movs r0, 0 - ldr r1, _08010B40 @ =gBattleMoveDamage - str r0, [r1] - ldr r2, _08010B44 @ =gUnknown_02024DE8 - strh r0, [r2] - ldr r4, _08010B18 @ =0x02000000 - ldr r3, _08010B48 @ =0x00016002 - adds r0, r4, r3 - strb r5, [r0] - ldr r1, _08010B4C @ =0x000160a1 - adds r0, r4, r1 - strb r5, [r0] - ldr r2, _08010B50 @ =gUnknown_03004324 - strb r5, [r2] - ldr r3, _08010B54 @ =gUnknown_02024C0C - strb r5, [r3] - subs r1, 0x29 - adds r0, r4, r1 - strb r5, [r0] - ldr r2, _08010B58 @ =0x00016086 - adds r0, r4, r2 - strb r5, [r0] - ldr r3, _08010B5C @ =0x00016087 - adds r0, r4, r3 - strb r5, [r0] - ldr r0, _08010B60 @ =gEnemyParty - movs r1, 0xB - bl GetMonData - ldr r2, _08010B64 @ =gBaseStats - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r1, [r1, 0x8] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08010B68 @ =0x000004fb - bl __divsi3 - ldr r2, _08010B6C @ =0x00016089 - adds r1, r4, r2 - strb r0, [r1] - ldr r3, _08010B70 @ =0x00016088 - adds r1, r4, r3 - movs r0, 0x3 - strb r0, [r1] - ldr r1, _08010B74 @ =0x0001601b - adds r0, r4, r1 - strb r5, [r0] - subs r2, 0x33 - adds r1, r4, r2 - movs r0, 0x1 - strb r0, [r1] - movs r2, 0 - movs r1, 0 -_08010A12: - ldr r3, _08010B78 @ =0x000160ac - adds r0, r2, r3 - adds r0, r4 - strb r1, [r0] - adds r3, 0x20 - adds r0, r2, r3 - adds r0, r4 - strb r1, [r0] - adds r3, 0x1C - adds r0, r2, r3 - adds r0, r4 - strb r1, [r0] - adds r3, 0x8 - adds r0, r2, r3 - adds r0, r4 - strb r1, [r0] - adds r3, 0x10 - adds r0, r2, r3 - adds r0, r4 - strb r1, [r0] - adds r3, 0x8 - adds r0, r2, r3 - adds r0, r4 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _08010A12 - ldr r4, _08010B18 @ =0x02000000 - ldr r1, _08010B7C @ =0x000160c8 - adds r0, r4, r1 - movs r2, 0 - movs r1, 0x6 - strb r1, [r0] - subs r3, 0x3F - adds r0, r4, r3 - strb r1, [r0] - ldr r1, _08010B80 @ =0x00016113 - adds r0, r4, r1 - strb r2, [r0] - ldr r3, _08010B84 @ =gUnknown_030042E0 - movs r1, 0 - movs r2, 0xA - adds r0, r3, 0 - adds r0, 0x40 -_08010A6A: - strb r1, [r0] - subs r0, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _08010A6A - movs r1, 0 - strb r1, [r3, 0x13] - strb r1, [r3] - strb r1, [r3, 0x1] - strb r1, [r3, 0x2] - strb r1, [r3, 0x3] - strb r1, [r3, 0x4] - ldrb r2, [r3, 0x5] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - movs r2, 0x3 - negs r2, r2 - ands r0, r2 - strb r0, [r3, 0x5] - strh r1, [r3, 0x20] - strh r1, [r3, 0x22] - strh r1, [r3, 0x24] - strh r1, [r3, 0x6] - strh r1, [r3, 0x26] - strh r1, [r3, 0x28] - movs r2, 0 - adds r5, r3, 0 - adds r5, 0x8 - movs r4, 0 - adds r1, r3, 0 - adds r1, 0x14 -_08010AAA: - adds r0, r2, r5 - strb r4, [r0] - strb r4, [r1] - strb r4, [r1, 0x16] - adds r1, 0x1 - adds r2, 0x1 - cmp r2, 0x9 - ble _08010AAA - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010AC8: .4byte gUnknown_02024C4C -_08010ACC: .4byte gUnknown_02024C44 -_08010AD0: .4byte gUnknown_02024C3C -_08010AD4: .4byte gUnknown_02024C34 -_08010AD8: .4byte gUnknown_02024CA8 -_08010ADC: .4byte gUnknown_02024C2C -_08010AE0: .4byte gUnknown_02024C54 -_08010AE4: .4byte gUnknown_02024C98 -_08010AE8: .4byte gUnknown_02024C70 -_08010AEC: .4byte gUnknown_02024C5C -_08010AF0: .4byte 0x02017100 -_08010AF4: .4byte gUnknown_02024C80 -_08010AF8: .4byte gUnknown_02024C7A -_08010AFC: .4byte gPlayerMonIndex -_08010B00: .4byte gEnemyMonIndex -_08010B04: .4byte gBattleWeather -_08010B08: .4byte gUnknown_02024DBC -_08010B0C: .4byte gUnknown_02024C6C -_08010B10: .4byte gBattleTypeFlags -_08010B14: .4byte gSaveBlock2 -_08010B18: .4byte 0x02000000 -_08010B1C: .4byte 0x00016084 -_08010B20: .4byte gUnknown_02024C0E -_08010B24: .4byte gUnknown_02024D26 -_08010B28: .4byte gUnknown_02024A64 -_08010B2C: .4byte gUnknown_02024D1A -_08010B30: .4byte 0x00017130 -_08010B34: .4byte 0x00017160 -_08010B38: .4byte gUnknown_02024D1E -_08010B3C: .4byte gUnknown_02024D18 -_08010B40: .4byte gBattleMoveDamage -_08010B44: .4byte gUnknown_02024DE8 -_08010B48: .4byte 0x00016002 -_08010B4C: .4byte 0x000160a1 -_08010B50: .4byte gUnknown_03004324 -_08010B54: .4byte gUnknown_02024C0C -_08010B58: .4byte 0x00016086 -_08010B5C: .4byte 0x00016087 -_08010B60: .4byte gEnemyParty -_08010B64: .4byte gBaseStats -_08010B68: .4byte 0x000004fb -_08010B6C: .4byte 0x00016089 -_08010B70: .4byte 0x00016088 -_08010B74: .4byte 0x0001601b -_08010B78: .4byte 0x000160ac -_08010B7C: .4byte 0x000160c8 -_08010B80: .4byte 0x00016113 -_08010B84: .4byte gUnknown_030042E0 - thumb_func_end sub_8010874 - thumb_func_start sub_8010B88 sub_8010B88: @ 8010B88 push {r4-r7,lr} diff --git a/src/battle_2.c b/src/battle_2.c index 3e147e0c7..90ccb88ab 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -14,6 +14,7 @@ #include "rng.h" #include "sound.h" #include "songs.h" +#include "trig.h" struct MonCoords { @@ -81,6 +82,31 @@ struct UnknownStruct10 u8 filler4[8]; }; +struct UnknownStruct11 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5_0:1; + u8 unk5_1:1; + u16 unk6; + u8 unk8[10]; + u8 unk12; + u8 unk13; + u8 unk14[10]; + u8 filler1E[2]; + u16 unk20; + u16 unk22; + u16 unk24; + u16 unk26; + u16 unk28; + u8 unk2A[10]; + u8 filler34[2]; + u8 unk36[10]; +}; + extern const struct UnknownStruct5 gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; extern void *const gUnknown_081FAF4C[]; @@ -90,20 +116,65 @@ extern const u8 gSpeciesNames[][11]; extern const struct BattleMove gBattleMoves[]; extern const struct MonCoords gMonFrontPicCoords[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; +extern const struct BaseStats gBaseStats[]; extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) +#define ewram16002 (ewram[0x16002]) +#define ewram1601B (ewram[0x1601B]) +#define ewram16056 (ewram[0x16056]) +#define ewram16078 (ewram[0x16078]) +#define ewram16084 (ewram[0x16084]) +#define ewram16086 (ewram[0x16086]) +#define ewram16087 (ewram[0x16087]) +#define ewram16088 (ewram[0x16088]) +#define ewram16089 (ewram[0x16089]) +#define ewram160A1 (ewram[0x160A1]) +#define ewram160AC ((u8 *)(ewram + 0x160AC)) +#define ewram160C8 (ewram[0x160C8]) +#define ewram160C9 (ewram[0x160C9]) #define ewram160CB (ewram[0x160CB]) +#define ewram160CC ((u8 *)(ewram + 0x160CC)) +#define ewram160E8 ((u8 *)(ewram + 0x160E8)) +#define ewram160F0 ((u8 *)(ewram + 0x160F0)) +#define ewram16100 ((u8 *)(ewram + 0x16100)) +#define ewram16108 ((u8 *)(ewram + 0x16108)) +#define ewram16113 (ewram[0x16113]) +#define ewram17100 ((u32 *)(ewram + 0x17100)) +#define ewram17130 (ewram[0x17130]) +#define ewram17160 (ewram[0x17160]) #define ewram17800 ((struct UnknownStruct9 *)(ewram + 0x17800)) #define ewram17810 ((struct UnknownStruct10 *)(ewram + 0x17810)) #define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000)) extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; +extern u8 gUnknown_02024A60; +extern u32 gUnknown_02024A64; +extern u8 gUnknown_02024A68; extern u16 gUnknown_02024A6A[]; extern u8 gUnknown_02024BE0[]; +extern u8 gUnknown_02024C0C; +extern u8 gUnknown_02024C0E; +extern u16 gUnknown_02024C2C[]; +extern u16 gUnknown_02024C34[]; +extern u16 gUnknown_02024C3C[]; +extern u16 gUnknown_02024C44[]; +extern u16 gUnknown_02024C4C[]; +extern u16 gUnknown_02024C54[]; +extern u8 gUnknown_02024C5C[]; +extern u32 gUnknown_02024C6C; +extern u8 gUnknown_02024C70[]; +extern u16 gUnknown_02024C7A[]; +extern u8 gUnknown_02024C80[][12]; +extern u32 gUnknown_02024C98[]; +//extern u8 gUnknown_02024CA8[][0x1C]; +extern u16 gUnknown_02024D18; +extern u16 gUnknown_02024D1A; extern u8 gUnknown_02024D1E[]; extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is. +extern u8 gUnknown_02024D26; +extern u8 gUnknown_02024DBC[]; extern u16 gUnknown_02024DE8; extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B4; @@ -122,6 +193,10 @@ extern u16 gUnknown_030042A4; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern MainCallback gUnknown_030042D0; +extern void (*gUnknown_030042D4)(void); +extern struct UnknownStruct11 gUnknown_030042E0; +extern u8 gUnknown_03004324; +extern void (*gUnknown_03004330[])(void); extern u8 gUnknown_03004340[]; extern struct UnknownStruct6 gUnknown_03004DE0; //extern u16 gUnknown_03004DE0[][0xA0]; // possibly? @@ -132,6 +207,10 @@ extern u16 gTrainerBattleOpponent; extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u8 gBattleMonForms[]; +extern u8 gPlayerMonIndex; +extern u8 gEnemyMonIndex; +extern u16 gBattleWeather; +extern u32 gBattleMoveDamage; extern void sub_800B858(void); extern void dp12_8087EA4(void); @@ -172,6 +251,10 @@ void sub_801053C(struct Sprite *); void oac_poke_ally_(struct Sprite *); void nullsub_86(struct Sprite *); void objc_dp11b_pingpong(struct Sprite *); +void sub_8010874(void); +void bc_8012FAC(void); +void sub_801365C(u8); +void sub_801377C(void); void sub_800E7C4(void) { @@ -1510,3 +1593,147 @@ void dp11b_obj_free(u8 a, u8 b) gSprites[r4].pos2.x = 0; gSprites[r4].pos2.y = 0; } + +void objc_dp11b_pingpong(struct Sprite *sprite) +{ + u8 spriteId = sprite->data3; + s32 var; + + if (sprite->data4 == 1) + var = sprite->data0; + else + var = sprite->data0; + + gSprites[spriteId].pos2.y = Sin(var, sprite->data2) + sprite->data2; + sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF; +} + +void nullsub_41(void) +{ +} + +void sub_8010800(void) +{ + sub_8010874(); + gUnknown_02024D1E[1] = 0; + gUnknown_030042D4 = bc_8012FAC; +} + +void sub_8010824(void) +{ + gUnknown_030042D4(); + gUnknown_02024A60 = 0; + + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + gUnknown_03004330[gUnknown_02024A60](); +} + +void sub_8010874(void) +{ + s32 i; + s32 j; + u8 *r4; + + sub_801365C(0); + sub_801377C(); + + for (i = 0; i < 4; i++) + { + gUnknown_02024C98[i] = 0; + + r4 = (u8 *)&gUnknown_02024CA8[i]; + for (j = 0; j < (u32)0x1C; j++) + r4[j] = 0; + + gUnknown_02024CA8[i].unk16 = 2; + gUnknown_02024C70[i] = 0; + gUnknown_02024C34[i] = 0; + gUnknown_02024C3C[i] = 0; + gUnknown_02024C44[i] = 0; + gUnknown_02024C4C[i] = 0; + gUnknown_02024C5C[i] = 0xFF; + gUnknown_02024C54[i] = 0; + gUnknown_02024C2C[i] = 0; + ewram17100[i] = 0; + } + + for (i = 0; i < 2; i++) + { + gUnknown_02024C7A[i] = 0; + + r4 = (u8 *)&gUnknown_02024C80[i]; + for (j = 0; j < (u32)12; j++) + r4[j] = 0; + } + + gPlayerMonIndex = 0; + gEnemyMonIndex = 0; + gBattleWeather = 0; + + r4 = (u8 *)&gUnknown_02024DBC; + for (i = 0; i < (u32)0x2C; i++) + r4[i] = 0; + + gUnknown_02024C6C = 0; + if ((gBattleTypeFlags & 2) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE) + gUnknown_02024C6C = 0x80; + ewram16084 = gSaveBlock2.optionsBattleStyle; + gUnknown_02024C0E = 0; + gUnknown_02024D26 = 0; + gUnknown_02024A64 = 0; + gUnknown_02024D1A = 0; + ewram17130 = 0; + ewram17160 = 0; + for (i = 0; i < 8; i++) + gUnknown_02024D1E[i] = 0; + gUnknown_02024D18 = 0; + gBattleMoveDamage = 0; + gUnknown_02024DE8 = 0; + ewram16002 = 0; + ewram160A1 = 0; + gUnknown_03004324 = 0; + gUnknown_02024C0C = 0; + ewram16078 = 0; + ewram16086 = 0; + ewram16087 = 0; + ewram16089 = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275; + ewram16088 = 3; + ewram1601B = 0; + ewram16056 = 1; + + for (i = 0; i < 8; i++) + { + ewram[i + 0x160AC] = 0; + ewram[i + 0x160CC] = 0; + ewram[i + 0x160E8] = 0; + ewram[i + 0x160F0] = 0; + ewram[i + 0x16100] = 0; + ewram[i + 0x16108] = 0; + } + + ewram160C8 = 6; + ewram160C9 = 6; + ewram16113 = 0; + for (i = 0; i < 11; i++) + gUnknown_030042E0.unk36[i] = 0; + gUnknown_030042E0.unk13 = 0; + gUnknown_030042E0.unk0 = 0; + gUnknown_030042E0.unk1 = 0; + gUnknown_030042E0.unk2 = 0; + gUnknown_030042E0.unk3 = 0; + gUnknown_030042E0.unk4 = 0; + gUnknown_030042E0.unk5_0 = 0; + gUnknown_030042E0.unk5_1 = 0; + gUnknown_030042E0.unk20 = 0; + gUnknown_030042E0.unk22 = 0; + gUnknown_030042E0.unk24 = 0; + gUnknown_030042E0.unk6 = 0; + gUnknown_030042E0.unk26 = 0; + gUnknown_030042E0.unk28 = 0; + for (i = 0; i < 10; i++) + { + gUnknown_030042E0.unk8[i] = 0; + gUnknown_030042E0.unk14[i] = 0; + gUnknown_030042E0.unk2A[i] = 0; + } +} -- cgit v1.2.3 From 06c4263d5ad36dfaba1ae640fd9229ac5e58cf4c Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 16 May 2017 16:14:45 -0500 Subject: whitespace --- src/battle_2.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/battle_2.c b/src/battle_2.c index 90ccb88ab..6176574e6 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1598,12 +1598,12 @@ void objc_dp11b_pingpong(struct Sprite *sprite) { u8 spriteId = sprite->data3; s32 var; - + if (sprite->data4 == 1) var = sprite->data0; else var = sprite->data0; - + gSprites[spriteId].pos2.y = Sin(var, sprite->data2) + sprite->data2; sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF; } @@ -1623,7 +1623,7 @@ void sub_8010824(void) { gUnknown_030042D4(); gUnknown_02024A60 = 0; - + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) gUnknown_03004330[gUnknown_02024A60](); } @@ -1633,18 +1633,18 @@ void sub_8010874(void) s32 i; s32 j; u8 *r4; - + sub_801365C(0); sub_801377C(); - + for (i = 0; i < 4; i++) { gUnknown_02024C98[i] = 0; - + r4 = (u8 *)&gUnknown_02024CA8[i]; for (j = 0; j < (u32)0x1C; j++) r4[j] = 0; - + gUnknown_02024CA8[i].unk16 = 2; gUnknown_02024C70[i] = 0; gUnknown_02024C34[i] = 0; @@ -1656,24 +1656,24 @@ void sub_8010874(void) gUnknown_02024C2C[i] = 0; ewram17100[i] = 0; } - + for (i = 0; i < 2; i++) - { + { gUnknown_02024C7A[i] = 0; - + r4 = (u8 *)&gUnknown_02024C80[i]; for (j = 0; j < (u32)12; j++) r4[j] = 0; } - + gPlayerMonIndex = 0; gEnemyMonIndex = 0; gBattleWeather = 0; - + r4 = (u8 *)&gUnknown_02024DBC; for (i = 0; i < (u32)0x2C; i++) r4[i] = 0; - + gUnknown_02024C6C = 0; if ((gBattleTypeFlags & 2) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE) gUnknown_02024C6C = 0x80; @@ -1700,7 +1700,7 @@ void sub_8010874(void) ewram16088 = 3; ewram1601B = 0; ewram16056 = 1; - + for (i = 0; i < 8; i++) { ewram[i + 0x160AC] = 0; @@ -1710,7 +1710,7 @@ void sub_8010874(void) ewram[i + 0x16100] = 0; ewram[i + 0x16108] = 0; } - + ewram160C8 = 6; ewram160C9 = 6; ewram16113 = 0; -- cgit v1.2.3 From 40c81240b45b43e5f904bcd0b6b91c69b1f70e3c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 19:49:00 -0400 Subject: sub_80BBDD0 (nonmatching) --- asm/secret_base.s | 228 ------------------------------------- include/decoration.h | 4 +- include/global.h | 2 +- src/secret_base_80bb4ac.c | 284 +++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 285 insertions(+), 233 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 006f8c4a9..e36ee9791 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,234 +6,6 @@ .section .text_b - thumb_func_start sub_80BBDD0 -sub_80BBDD0: @ 80BBDD0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r0, _080BBE00 @ =0x00004054 - bl VarGet - lsls r0, 16 - lsrs r4, r0, 16 - bl CurrentMapIsSecretBase - lsls r0, 24 - cmp r0, 0 - bne _080BBE08 - ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688 - str r0, [sp, 0x4] - adds r0, 0xC - str r0, [sp, 0x8] - movs r1, 0xC - str r1, [sp, 0xC] - b _080BBE1E - .align 2, 0 -_080BBE00: .4byte 0x00004054 -_080BBE04: .4byte gSaveBlock1 + 0x2688 -_080BBE08: - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 5 - ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A - adds r2, r1, r0 - str r2, [sp, 0x4] - adds r0, 0x10 - adds r1, r0 - str r1, [sp, 0x8] - movs r3, 0x10 - str r3, [sp, 0xC] -_080BBE1E: - movs r6, 0 - ldr r4, [sp, 0xC] - cmp r6, r4 - bcc _080BBE28 - b _080BBF6C -_080BBE28: - ldr r5, _080BBF80 @ =gSaveBlock1 - mov r10, r5 -_080BBE2C: - ldr r1, [sp, 0x4] - adds r0, r1, r6 - ldrb r1, [r0] - mov r9, r0 - adds r2, r6, 0x1 - str r2, [sp, 0x10] - cmp r1, 0 - bne _080BBE3E - b _080BBF5E -_080BBE3E: - ldrb r0, [r0] - lsls r0, 5 - ldr r3, _080BBF84 @ =gDecorations - adds r0, r3 - ldrb r0, [r0, 0x11] - cmp r0, 0x4 - beq _080BBE4E - b _080BBF5E -_080BBE4E: - movs r5, 0 - ldr r0, _080BBF88 @ =gMapHeader - ldr r2, [r0, 0x4] - ldrb r3, [r2] - mov r8, r0 - cmp r5, r3 - bcs _080BBE8E - ldr r0, [r2, 0x4] - ldrh r1, [r0, 0x14] - ldr r4, _080BBF8C @ =gSpecialVar_0x8004 - ldrh r0, [r4] - adds r0, 0xAE - adds r7, r4, 0 - cmp r1, r0 - beq _080BBE8E - adds r4, r2, 0 - adds r2, r3, 0 -_080BBE70: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r2 - bcs _080BBE8E - ldr r1, [r4, 0x4] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x14] - ldrh r0, [r7] - adds r0, 0xAE - cmp r1, r0 - bne _080BBE70 -_080BBE8E: - mov r1, r8 - ldr r0, [r1, 0x4] - ldrb r0, [r0] - cmp r5, r0 - beq _080BBF5E - ldr r7, _080BBF90 @ =gSpecialVar_0x8006 - ldr r2, [sp, 0x8] - adds r1, r2, r6 - ldrb r0, [r1] - lsrs r0, 4 - strh r0, [r7] - ldr r6, _080BBF94 @ =gSpecialVar_0x8007 - ldrb r1, [r1] - movs r0, 0xF - ands r0, r1 - strh r0, [r6] - ldrh r0, [r7] - adds r0, 0x7 - ldrh r1, [r6] - adds r1, 0x7 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80572D8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BBEDA - adds r0, r4, 0 - bl sub_80572EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BBF5E -_080BBEDA: - mov r3, r8 - ldr r0, [r3, 0x4] - ldr r1, [r0, 0x4] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 3 - adds r1, r4, r1 - ldr r5, _080BBF98 @ =0x00003f20 - adds r0, r5, 0 - ldrb r1, [r1, 0x1] - adds r0, r1 - ldr r1, _080BBF9C @ =gScriptResult - strh r0, [r1] - ldrh r0, [r1] - mov r2, r9 - ldrb r1, [r2] - lsls r1, 5 - ldr r3, _080BBFA0 @ =gDecorations + 0x1C - adds r1, r3 - ldr r1, [r1] - ldrh r1, [r1] - bl VarSet - mov r5, r8 - ldr r0, [r5, 0x4] - ldr r0, [r0, 0x4] - adds r4, r0 - ldrb r0, [r4] - ldr r1, _080BBF9C @ =gScriptResult - strh r0, [r1] - ldr r2, _080BBF8C @ =gSpecialVar_0x8004 - ldrh r0, [r2] - adds r0, 0xAE - lsls r0, 16 - lsrs r0, 16 - bl FlagReset - ldr r3, _080BBF9C @ =gScriptResult - ldrb r0, [r3] - mov r4, r10 - ldrb r1, [r4, 0x5] - ldrb r2, [r4, 0x4] - bl show_sprite - ldr r5, _080BBF9C @ =gScriptResult - ldrb r0, [r5] - ldrb r1, [r4, 0x5] - ldrb r2, [r4, 0x4] - movs r4, 0 - ldrsh r3, [r7, r4] - movs r5, 0 - ldrsh r4, [r6, r5] - str r4, [sp] - bl sub_805C0F8 - ldr r1, _080BBF9C @ =gScriptResult - ldrb r0, [r1] - mov r2, r10 - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl sub_805C78C - ldr r3, _080BBF8C @ =gSpecialVar_0x8004 - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] -_080BBF5E: - ldr r4, [sp, 0x10] - lsls r0, r4, 24 - lsrs r6, r0, 24 - ldr r5, [sp, 0xC] - cmp r6, r5 - bcs _080BBF6C - b _080BBE2C -_080BBF6C: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BBF7C: .4byte gSaveBlock1 + 0x1A1A -_080BBF80: .4byte gSaveBlock1 -_080BBF84: .4byte gDecorations -_080BBF88: .4byte gMapHeader -_080BBF8C: .4byte gSpecialVar_0x8004 -_080BBF90: .4byte gSpecialVar_0x8006 -_080BBF94: .4byte gSpecialVar_0x8007 -_080BBF98: .4byte 0x00003f20 -_080BBF9C: .4byte gScriptResult -_080BBFA0: .4byte gDecorations + 0x1C - thumb_func_end sub_80BBDD0 - thumb_func_start sub_80BBFA4 sub_80BBFA4: @ 80BBFA4 push {r4,r5,lr} diff --git a/include/decoration.h b/include/decoration.h index 4f24d451d..d041a8007 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -9,8 +9,8 @@ struct Decoration /*0x12*/ u8 decor_field_12; /*0x13*/ u8 decor_field_13; /*0x14*/ u16 price; - /*0x16*/ u8 *description; - /*0x1A*/ void *tiles; + /*0x18*/ u8 *description; + /*0x1c*/ u16 *tiles; }; extern struct Decoration gDecorations[0x77]; diff --git a/include/global.h b/include/global.h index 28d7b1c96..c8b07cf69 100644 --- a/include/global.h +++ b/include/global.h @@ -105,7 +105,7 @@ struct SecretBaseRecord /*0x1A18*/ u8 sbr_field_10; /*0x1A19*/ u8 sbr_field_11; /*0x1A1A*/ u8 decorations[16]; - /*0x1A2A*/ u8 sbr_field_22[16]; + /*0x1A2A*/ u8 decorationPos[16]; /*0x1A3A*/ u32 partyPersonality[6]; /*0x1A52*/ u16 partyMoves[6 * 4]; /*0x1A6A*/ u16 partySpecies[6]; diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index a0fbb1212..2c0b7a388 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -13,9 +13,12 @@ #include "palette.h" #include "decoration.h" #include "field_weather.h" +#include "metatile_behavior.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; extern u16 gSpecialVar_0x8007; extern u16 gScriptResult; extern const struct @@ -46,7 +49,7 @@ void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac record->sbr_field_1_6 = 0; for (i=0; i<16; i++) { record->decorations[i] = 0; - record->sbr_field_22[i] = 0; + record->decorationPos[i] = 0; } for (i=0; i<6; i++) { for (j=0; j<4; j++) { @@ -321,7 +324,7 @@ void sub_80BBCCC(u8 flagIn) curBaseId = VarGet(VAR_0x4054); for (x=0; x<16; x++) { if ((u8)(gSaveBlock1.secretBases[curBaseId].decorations[x] - 1) <= 0x77 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].decor_field_11 != 4) { - sub_80FF394((gSaveBlock1.secretBases[0].sbr_field_22[x] >> 4) + 7, (gSaveBlock1.secretBases[0].sbr_field_22[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); + sub_80FF394((gSaveBlock1.secretBases[0].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[0].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); } } if (curBaseId != 0) { @@ -333,6 +336,52 @@ void sub_80BBCCC(u8 flagIn) } } } + +void sub_80BBDD0(void) +{ + u8 *roomdecor; + u8 *roomdecorpos; + u8 ndecor; + u8 decidx; + u8 objid = 0; + u8 metatile; + u16 curBase = VarGet(VAR_0x4054); + if (!CurrentMapIsSecretBase()) { + roomdecor = gSaveBlock1.playerRoomDecor; + roomdecorpos = gSaveBlock1.playerRoomDecorPos; + ndecor = 12; + } else { + roomdecor = gSaveBlock1.secretBases[curBase].decorations; + roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos; + ndecor = 16; + } + for (decidx=0; decidxmapObjectCount; objid++) { + if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) + break; + } + if (objid != gMapHeader.events->mapObjectCount) { + gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; + gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; + metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); + if (sub_80572D8(metatile) == 1 || sub_80572EC(metatile) == 1) { + gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20; + VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); + gScriptResult = gMapHeader.events->mapObjects[objid].localId; + FlagReset(gSpecialVar_0x8004 + 0xAE); + show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + gSpecialVar_0x8004 ++; + } + } + } +} + #else __attribute__((naked)) void sub_80BBCCC(u8 flagIn) @@ -459,4 +508,235 @@ _080BBDC8: .4byte 0x00004089\n\ _080BBDCC: .4byte 0x00000e0a\n\ .syntax divided\n"); } + +__attribute__((naked)) +void sub_80BBDD0(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + ldr r0, _080BBE00 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080BBE08\n\ + ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\ + str r0, [sp, 0x4]\n\ + adds r0, 0xC\n\ + str r0, [sp, 0x8]\n\ + movs r1, 0xC\n\ + str r1, [sp, 0xC]\n\ + b _080BBE1E\n\ + .align 2, 0\n\ +_080BBE00: .4byte 0x00004054\n\ +_080BBE04: .4byte gSaveBlock1 + 0x2688\n\ +_080BBE08:\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 5\n\ + ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\ + adds r2, r1, r0\n\ + str r2, [sp, 0x4]\n\ + adds r0, 0x10\n\ + adds r1, r0\n\ + str r1, [sp, 0x8]\n\ + movs r3, 0x10\n\ + str r3, [sp, 0xC]\n\ +_080BBE1E:\n\ + movs r6, 0\n\ + ldr r4, [sp, 0xC]\n\ + cmp r6, r4\n\ + bcc _080BBE28\n\ + b _080BBF6C\n\ +_080BBE28:\n\ + ldr r5, _080BBF80 @ =gSaveBlock1\n\ + mov r10, r5\n\ +_080BBE2C:\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1, r6\n\ + ldrb r1, [r0]\n\ + mov r9, r0\n\ + adds r2, r6, 0x1\n\ + str r2, [sp, 0x10]\n\ + cmp r1, 0\n\ + bne _080BBE3E\n\ + b _080BBF5E\n\ +_080BBE3E:\n\ + ldrb r0, [r0]\n\ + lsls r0, 5\n\ + ldr r3, _080BBF84 @ =gDecorations\n\ + adds r0, r3\n\ + ldrb r0, [r0, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBE4E\n\ + b _080BBF5E\n\ +_080BBE4E:\n\ + movs r5, 0\n\ + ldr r0, _080BBF88 @ =gMapHeader\n\ + ldr r2, [r0, 0x4]\n\ + ldrb r3, [r2]\n\ + mov r8, r0\n\ + cmp r5, r3\n\ + bcs _080BBE8E\n\ + ldr r0, [r2, 0x4]\n\ + ldrh r1, [r0, 0x14]\n\ + ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r4]\n\ + adds r0, 0xAE\n\ + adds r7, r4, 0\n\ + cmp r1, r0\n\ + beq _080BBE8E\n\ + adds r4, r2, 0\n\ + adds r2, r3, 0\n\ +_080BBE70:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, r2\n\ + bcs _080BBE8E\n\ + ldr r1, [r4, 0x4]\n\ + lsls r0, r5, 1\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrh r1, [r0, 0x14]\n\ + ldrh r0, [r7]\n\ + adds r0, 0xAE\n\ + cmp r1, r0\n\ + bne _080BBE70\n\ +_080BBE8E:\n\ + mov r1, r8\n\ + ldr r0, [r1, 0x4]\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + beq _080BBF5E\n\ + ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\ + ldr r2, [sp, 0x8]\n\ + adds r1, r2, r6\n\ + ldrb r0, [r1]\n\ + lsrs r0, 4\n\ + strh r0, [r7]\n\ + ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + strh r0, [r6]\n\ + ldrh r0, [r7]\n\ + adds r0, 0x7\n\ + ldrh r1, [r6]\n\ + adds r1, 0x7\n\ + bl MapGridGetMetatileBehaviorAt\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + adds r0, r4, 0\n\ + bl sub_80572D8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BBEDA\n\ + adds r0, r4, 0\n\ + bl sub_80572EC\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080BBF5E\n\ +_080BBEDA:\n\ + mov r3, r8\n\ + ldr r0, [r3, 0x4]\n\ + ldr r1, [r0, 0x4]\n\ + lsls r4, r5, 1\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r1, r4, r1\n\ + ldr r5, _080BBF98 @ =0x00003f20\n\ + adds r0, r5, 0\n\ + ldrb r1, [r1, 0x1]\n\ + adds r0, r1\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldrh r0, [r1]\n\ + mov r2, r9\n\ + ldrb r1, [r2]\n\ + lsls r1, 5\n\ + ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\ + adds r1, r3\n\ + ldr r1, [r1]\n\ + ldrh r1, [r1]\n\ + bl VarSet\n\ + mov r5, r8\n\ + ldr r0, [r5, 0x4]\n\ + ldr r0, [r0, 0x4]\n\ + adds r4, r0\n\ + ldrb r0, [r4]\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r2]\n\ + adds r0, 0xAE\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl FlagReset\n\ + ldr r3, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r3]\n\ + mov r4, r10\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + bl show_sprite\n\ + ldr r5, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + movs r4, 0\n\ + ldrsh r3, [r7, r4]\n\ + movs r5, 0\n\ + ldrsh r4, [r6, r5]\n\ + str r4, [sp]\n\ + bl sub_805C0F8\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r1]\n\ + mov r2, r10\n\ + ldrb r1, [r2, 0x5]\n\ + ldrb r2, [r2, 0x4]\n\ + bl sub_805C78C\n\ + ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r3]\n\ + adds r0, 0x1\n\ + strh r0, [r3]\n\ +_080BBF5E:\n\ + ldr r4, [sp, 0x10]\n\ + lsls r0, r4, 24\n\ + lsrs r6, r0, 24\n\ + ldr r5, [sp, 0xC]\n\ + cmp r6, r5\n\ + bcs _080BBF6C\n\ + b _080BBE2C\n\ +_080BBF6C:\n\ + add sp, 0x14\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\ + .align 2, 0\n\ +_080BBF7C: .4byte gSaveBlock1 + 0x1A1A\n\ +_080BBF80: .4byte gSaveBlock1\n\ +_080BBF84: .4byte gDecorations\n\ +_080BBF88: .4byte gMapHeader\n\ +_080BBF8C: .4byte gSpecialVar_0x8004\n\ +_080BBF90: .4byte gSpecialVar_0x8006\n\ +_080BBF94: .4byte gSpecialVar_0x8007\n\ +_080BBF98: .4byte 0x00003f20\n\ +_080BBF9C: .4byte gScriptResult\n\ +_080BBFA0: .4byte gDecorations + 0x1C\n\ +.syntax divided\n"); +} #endif -- cgit v1.2.3 From b9e8a5f766eb549ffbe0d70ad99396a0e41fde16 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 20:23:55 -0400 Subject: sub_80BBFA4 and sub_80BBFD8 --- asm/secret_base.s | 78 ----------------------------------------------- include/vars.h | 1 + src/secret_base_80bb4ac.c | 19 ++++++++++++ 3 files changed, 20 insertions(+), 78 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index e36ee9791..a42f1d75b 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,84 +6,6 @@ .section .text_b - thumb_func_start sub_80BBFA4 -sub_80BBFA4: @ 80BBFA4 - push {r4,r5,lr} - ldr r0, _080BBFCC @ =0x00004054 - bl VarGet - ldr r5, _080BBFD0 @ =0x0000401f - ldr r4, _080BBFD4 @ =gUnknown_083D13EC - lsls r0, 24 - lsrs r0, 24 - bl sub_80BCCA4 - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r1, [r0] - adds r0, r5, 0 - bl VarSet - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BBFCC: .4byte 0x00004054 -_080BBFD0: .4byte 0x0000401f -_080BBFD4: .4byte gUnknown_083D13EC - thumb_func_end sub_80BBFA4 - - thumb_func_start sub_80BBFD8 -sub_80BBFD8: @ 80BBFD8 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r3, 0 - ldrb r0, [r4, 0x3] - cmp r3, r0 - bge _080BC030 - ldr r6, _080BC01C @ =gUnknown_020387DC -_080BBFE8: - lsls r3, 16 - asrs r1, r3, 16 - ldr r2, [r4, 0x10] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x5] - cmp r0, 0x8 - bne _080BC020 - movs r0, 0 - ldrsh r1, [r5, r0] - ldrh r0, [r2] - adds r0, 0x7 - cmp r1, r0 - bne _080BC020 - movs r0, 0x2 - ldrsh r1, [r5, r0] - ldrh r0, [r2, 0x2] - adds r0, 0x7 - cmp r1, r0 - bne _080BC020 - ldr r0, [r2, 0x8] - strb r0, [r6] - b _080BC030 - .align 2, 0 -_080BC01C: .4byte gUnknown_020387DC -_080BC020: - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r3, r0, 16 - asrs r0, 16 - ldrb r1, [r4, 0x3] - cmp r0, r1 - blt _080BBFE8 -_080BC030: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BBFD8 - thumb_func_start sub_80BC038 sub_80BC038: @ 80BC038 push {lr} diff --git a/include/vars.h b/include/vars.h index c2bddeedc..9a90a9468 100644 --- a/include/vars.h +++ b/include/vars.h @@ -1,6 +1,7 @@ #ifndef GUARD_VARS_H #define GUARD_VARS_H +#define VAR_0x401F 0x401F #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 #define VAR_ICE_STEP_COUNT 0x4022 diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c index 2c0b7a388..4989ec40f 100755 --- a/src/secret_base_80bb4ac.c +++ b/src/secret_base_80bb4ac.c @@ -29,6 +29,8 @@ extern const struct extern const u8 gUnknown_083D1374[4 * 16]; extern void *gUnknown_0300485C; extern u8 sub_807D770(void); +extern u8 gUnknown_083D13EC[12]; +extern u8 sub_80BCCA4(u8); void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac @@ -740,3 +742,20 @@ _080BBFA0: .4byte gDecorations + 0x1C\n\ .syntax divided\n"); } #endif + +void sub_80BBFA4(void) +{ + int curBase = VarGet(VAR_0x4054); + VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); +} + +void sub_80BBFD8(s16 *position, struct MapEvents *events) +{ + s16 bgevtidx; + for (bgevtidx=0; bgevtidxbgEventCount; bgevtidx++) { + if (events->bgEvents[bgevtidx].kind == 8 && position[0] == events->bgEvents[bgevtidx].x + 7 && position[1] == events->bgEvents[bgevtidx].y + 7) { + gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId; + break; + } + } +} -- cgit v1.2.3 From 4d342bcd670ae4f4ff0b24184bceb8369b974c61 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 20:52:26 -0400 Subject: Merge secret base source files --- asm/secret_base.s | 183 ----------- ld_script.txt | 2 - src/secret_base.c | 818 +++++++++++++++++++++++++++++++++++++++++++++- src/secret_base_80bb4ac.c | 761 ------------------------------------------ 4 files changed, 817 insertions(+), 947 deletions(-) delete mode 100755 src/secret_base_80bb4ac.c diff --git a/asm/secret_base.s b/asm/secret_base.s index a42f1d75b..56f9ef3d4 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -4,189 +4,6 @@ .syntax unified - .section .text_b - - thumb_func_start sub_80BC038 -sub_80BC038: @ 80BC038 - push {lr} - bl sub_80BBFD8 - bl sub_80BB5E4 - ldr r0, _080BC04C @ =gUnknown_081A2E14 - bl ScriptContext1_SetupScript - pop {r0} - bx r0 - .align 2, 0 -_080BC04C: .4byte gUnknown_081A2E14 - thumb_func_end sub_80BC038 - - thumb_func_start sub_80BC050 -sub_80BC050: @ 80BC050 - push {lr} - bl sub_80BB5D0 - bl sub_80BB5E4 - ldr r0, _080BC068 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - beq _080BC06C - movs r0, 0x1 - b _080BC06E - .align 2, 0 -_080BC068: .4byte gScriptResult -_080BC06C: - movs r0, 0 -_080BC06E: - pop {r1} - bx r1 - thumb_func_end sub_80BC050 - - thumb_func_start sub_80BC074 -sub_80BC074: @ 80BC074 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080BC098 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080BC0AC - cmp r0, 0x1 - bgt _080BC09C - cmp r0, 0 - beq _080BC0A2 - b _080BC0E4 - .align 2, 0 -_080BC098: .4byte gTasks -_080BC09C: - cmp r0, 0x2 - beq _080BC0C4 - b _080BC0E4 -_080BC0A2: - bl ScriptContext2_Enable - movs r0, 0x1 - strh r0, [r4, 0x8] - b _080BC0E4 -_080BC0AC: - ldr r0, _080BC0C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BC0E4 - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080BC0E4 - .align 2, 0 -_080BC0C0: .4byte gPaletteFade -_080BC0C4: - movs r0, 0x7E - bl copy_saved_warp2_bank_and_enter_x_to_warp1 - bl warp_in - ldr r0, _080BC0EC @ =gUnknown_0300485C - ldr r1, _080BC0F0 @ =mapldr_default - str r1, [r0] - ldr r0, _080BC0F4 @ =CB2_LoadMap - bl SetMainCallback2 - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_080BC0E4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC0EC: .4byte gUnknown_0300485C -_080BC0F0: .4byte mapldr_default -_080BC0F4: .4byte CB2_LoadMap - thumb_func_end sub_80BC074 - - thumb_func_start sub_80BC0F8 -sub_80BC0F8: @ 80BC0F8 - push {lr} - ldr r0, _080BC110 @ =sub_80BC074 - movs r1, 0 - bl CreateTask - movs r0, 0x1 - movs r1, 0 - bl fade_screen - pop {r0} - bx r0 - .align 2, 0 -_080BC110: .4byte sub_80BC074 - thumb_func_end sub_80BC0F8 - - thumb_func_start sub_80BC114 -sub_80BC114: @ 80BC114 - push {lr} - ldr r0, _080BC12C @ =gSaveBlock1 - ldr r1, _080BC130 @ =0x00001a08 - adds r0, r1 - ldr r1, _080BC134 @ =gUnknown_020387DC - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _080BC13C - ldr r1, _080BC138 @ =gScriptResult - movs r0, 0x1 - b _080BC140 - .align 2, 0 -_080BC12C: .4byte gSaveBlock1 -_080BC130: .4byte 0x00001a08 -_080BC134: .4byte gUnknown_020387DC -_080BC138: .4byte gScriptResult -_080BC13C: - ldr r1, _080BC148 @ =gScriptResult - movs r0, 0 -_080BC140: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080BC148: .4byte gScriptResult - thumb_func_end sub_80BC114 - - thumb_func_start sub_80BC14C -sub_80BC14C: @ 80BC14C - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r5, _080BC174 @ =gSaveBlock1 - ldr r4, _080BC178 @ =0x00001a08 -_080BC158: - lsls r0, r2, 16 - asrs r1, r0, 16 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 5 - adds r0, r5 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r3 - bne _080BC17C - lsls r0, r2, 24 - lsrs r0, 24 - b _080BC18A - .align 2, 0 -_080BC174: .4byte gSaveBlock1 -_080BC178: .4byte 0x00001a08 -_080BC17C: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080BC158 - movs r0, 0 -_080BC18A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80BC14C - .section .text_80BC1D0 thumb_func_start sub_80BC300 diff --git a/ld_script.txt b/ld_script.txt index a7fe92237..13c9b25ae 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -174,8 +174,6 @@ SECTIONS { src/record_mixing.o(.text); asm/record_mixing.o(.text); asm/sound_check_menu.o(.text); - src/secret_base_80bb4ac.o(.text); - asm/secret_base.o(.text_b); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); asm/tv.o(.text); diff --git a/src/secret_base.c b/src/secret_base.c index be1bfb026..4fd6bf30a 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -4,10 +4,826 @@ #include "text.h" #include "event_data.h" #include "vars.h" +#include "rom4.h" +#include "asm.h" +#include "script.h" +#include "field_player_avatar.h" +#include "field_camera.h" +#include "map_constants.h" +#include "task.h" +#include "palette.h" +#include "decoration.h" +#include "field_weather.h" +#include "metatile_behavior.h" extern u8 gUnknown_020387DC; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; +extern u16 gSpecialVar_0x8007; +extern u16 gScriptResult; +extern const struct +{ + u16 unk_083D1358_0; + u16 unk_083D1358_1; +} gUnknown_083D1358[7]; +extern const u8 gUnknown_083D1374[4 * 16]; +extern void *gUnknown_0300485C; +extern u8 sub_807D770(void); +extern u8 gUnknown_083D13EC[12]; +extern u8 sub_80BCCA4(u8); +extern u8 gUnknown_081A2E14[]; + + +void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac +{ + u16 i; + u16 j; + record->sbr_field_0 = 0; + for (i=0; i<7; i++) + record->sbr_field_2[i] = 0xff; + for (i=0; i<4; i++) + record->trainerId[i] = 0x00; + record->sbr_field_e = 0; + record->sbr_field_10 = 0; + record->sbr_field_11 = 0; + record->sbr_field_1_0 = 0; + record->gender = 0; + record->sbr_field_1_5 = 0; + record->sbr_field_1_6 = 0; + for (i=0; i<16; i++) { + record->decorations[i] = 0; + record->decorationPos[i] = 0; + } + for (i=0; i<6; i++) { + for (j=0; j<4; j++) { + record->partyMoves[i * 4 + j] = 0; + } + record->partyPersonality[i] = 0; + record->partyEVs[i] = 0; + record->partySpecies[i] = 0; + record->partyHeldItems[i] = 0; + record->partyLevels[i] = 0; + } +} + +void ResetSecretBase(u8 idx) // 80bb594 +{ + sub_80BB4AC(&(gSaveBlock1.secretBases[idx])); +} + +void ResetSecretBases(void) // 080bb5b4 +{ + u16 i; + for (i=0; i<20; i++) + ResetSecretBase(i); +} + +void sub_80BB5D0(void) // 080bb5d0 +{ + gUnknown_020387DC = gSpecialVar_0x8004; +} + +void sub_80BB5E4(void) // 80bb5e4 +{ + u16 idx; + gScriptResult = 0; + for (idx=0; idx<20; idx++) { + if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) + continue; + gScriptResult = 1; + VarSet(VAR_0x4054, idx); + break; + } +} + +void sub_80BB63C(void) // 80bb63c +{ + if (gSaveBlock1.secretBases[0].sbr_field_0) + gScriptResult = 1; + else + gScriptResult = 0; +} + +u8 sub_80BB66C(void) // 80bb66c +{ + s16 x, y; + s16 v0; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF; + if (v0 == 0x90 || v0 == 0x91) + return 1; + else if (v0 == 0x92 || v0 == 0x93) + return 2; + else if (v0 == 0x9a || v0 == 0x9b) + return 3; + else if (v0 == 0x94 || v0 == 0x95) + return 4; + else if (v0 == 0x96 || v0 == 0x97 || v0 == 0x9c || v0 == 0x9d) + return 5; + else if (v0 == 0x98 || v0 == 0x99) + return 6; + return 0; +} + +void sub_80BB70C(void) // 80bb70c +{ + gSpecialVar_0x8007 = sub_80BB66C(); +} + +s16 unref_sub_80BB724(u16 *a0, u8 a1) +{ + u16 v2; + for (v2=0; v2<0x200; v2++) { + if ((a0[v2] & 0xFFF) == a1) + return (s16)v2; + } + return -1; +} + +void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) +{ + s16 x, y; + for (y=0; yheight; y++) { + for (x=0; xwidth; x++) { + if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) { + *arg1 = x; + *arg2 = y; + return; + } + } + } +} + +void sub_80BB800(void) +{ + s16 x, y; + s16 tile_id; + u16 idx; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + tile_id = MapGridGetMetatileIdAt(x, y); + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); + CurrentMapDrawMetatileAt(x, y); + return; + } + } + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00); + CurrentMapDrawMetatileAt(x, y); + return; + } + } +} + +u8 sub_80BB8A8(u8 *arg1) +{ + u8 idx; + for (idx=0; idx<7; idx++) { + if (arg1[idx] == EOS) + return idx; + } + return 7; +} + +void sub_80BB8CC(void) +{ + u8 nameLength; + u16 idx; + gSaveBlock1.secretBases[0].sbr_field_0 = gUnknown_020387DC; + for (idx=0; idx<4; idx++) { + gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx]; + } + VarSet(VAR_0x4054, 0); + nameLength = sub_80BB8A8(gSaveBlock2.playerName); + memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7); + StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength); + gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; + VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); +} + +void sub_80BB970(struct MapEvents *events) +{ + u16 bgevidx, idx, jdx; + s16 tile_id; + for (bgevidx=0; bgevidxbgEventCount; bgevidx++) { + if (events->bgEvents[bgevidx].kind == 8) { + for (jdx=0; jdx<20; jdx++) { + if (gSaveBlock1.secretBases[jdx].sbr_field_0 == events->bgEvents[bgevidx].bgUnion.secretBaseId) { + tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); + break; + } + } + break; + } + } + } + } +} + +void sub_80BBA14(void) +{ + s8 idx = 4 * (gUnknown_020387DC / 10); + warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); +} + +void sub_80BBA48(u8 taskid) +{ + u16 curbaseid; + switch (gTasks[taskid].data[0]) { + case 0: + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + curbaseid = VarGet(VAR_0x4054); + if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) + gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; + sub_80BBA14(); + warp_in(); + gUnknown_0300485C = sub_8080990; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + break; + } +} + +void sub_80BBAF0(void) +{ + CreateTask(sub_80BBA48, 0); + fade_screen(1, 0); + saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); +} + +bool8 sub_80BBB24(void) +{ + if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) + return FALSE; + return TRUE; +} + +void sub_80BBB50(u8 taskid) +{ + FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); + if (sub_807D770() == 1) { + EnableBothScriptContexts(); + DestroyTask(taskid); + } +} + +void sub_80BBB90(void) +{ + s16 x, y; + ScriptContext2_Enable(); + HideMapNamePopup(); + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe20); + CurrentMapDrawMetatileAt(x + 7, y + 7); + pal_fill_black(); + CreateTask(sub_80BBB50, 0); +} + +void sub_80BBBEC(u8 taskid) +{ + s8 idx; + if (!gPaletteFade.active) { + idx = 4 * (gUnknown_020387DC / 10); + warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); + warp_in(); + gUnknown_0300485C = sub_80BBB90; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + } +} + +void sub_80BBC78(void) +{ + u8 taskid = CreateTask(sub_80BBBEC, 0); + gTasks[taskid].data[0] = 0; + fade_screen(1, 0); +} + +bool8 CurrentMapIsSecretBase(void) +{ + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4) + return TRUE; + return FALSE; +} + +#ifdef NONMATCHING +void sub_80BBCCC(u8 flagIn) +{ + u16 curBaseId; + u16 x, y; + if (CurrentMapIsSecretBase()) { + curBaseId = VarGet(VAR_0x4054); + for (x=0; x<16; x++) { + if ((u8)(gSaveBlock1.secretBases[curBaseId].decorations[x] - 1) <= 0x77 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].decor_field_11 != 4) { + sub_80FF394((gSaveBlock1.secretBases[0].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[0].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); + } + } + if (curBaseId != 0) { + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21); + } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) { + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a); + } + } +} + +void sub_80BBDD0(void) +{ + u8 *roomdecor; + u8 *roomdecorpos; + u8 ndecor; + u8 decidx; + u8 objid = 0; + u8 metatile; + u16 curBase = VarGet(VAR_0x4054); + if (!CurrentMapIsSecretBase()) { + roomdecor = gSaveBlock1.playerRoomDecor; + roomdecorpos = gSaveBlock1.playerRoomDecorPos; + ndecor = 12; + } else { + roomdecor = gSaveBlock1.secretBases[curBase].decorations; + roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos; + ndecor = 16; + } + for (decidx=0; decidxmapObjectCount; objid++) { + if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) + break; + } + if (objid != gMapHeader.events->mapObjectCount) { + gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; + gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; + metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); + if (sub_80572D8(metatile) == 1 || sub_80572EC(metatile) == 1) { + gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20; + VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); + gScriptResult = gMapHeader.events->mapObjects[objid].localId; + FlagReset(gSpecialVar_0x8004 + 0xAE); + show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + gSpecialVar_0x8004 ++; + } + } + } +} + +#else +__attribute__((naked)) +void sub_80BBCCC(u8 flagIn) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080BBDBC\n\ + ldr r0, _080BBD70 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + movs r1, 0\n\ + mov r0, sp\n\ + strh r1, [r0]\n\ + ldr r6, _080BBD74 @ =gSaveBlock1\n\ + mov r4, sp\n\ + ldr r0, _080BBD78 @ =0x00001a2a\n\ + adds r7, r6, r0\n\ +_080BBCFC:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 5\n\ + ldrh r1, [r4]\n\ + adds r2, r0, r1\n\ + ldr r1, _080BBD7C @ =0x00001a1a\n\ + adds r0, r6, r1\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x77\n\ + bhi _080BBD3A\n\ + ldr r0, _080BBD80 @ =gDecorations\n\ + ldrb r3, [r1]\n\ + lsls r1, r3, 5\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBD3A\n\ + adds r0, r2, r7\n\ + ldrb r2, [r0]\n\ + lsrs r0, r2, 4\n\ + adds r0, 0x7\n\ + movs r1, 0xF\n\ + ands r1, r2\n\ + adds r1, 0x7\n\ + adds r2, r3, 0\n\ + bl sub_80FF394\n\ +_080BBD3A:\n\ + ldrh r0, [r4]\n\ + adds r0, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + strh r0, [r4]\n\ + cmp r0, 0xF\n\ + bls _080BBCFC\n\ + cmp r5, 0\n\ + beq _080BBD88\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBD84 @ =0x00000e21\n\ + bl MapGridSetMetatileIdAt\n\ + b _080BBDBC\n\ + .align 2, 0\n\ +_080BBD70: .4byte 0x00004054\n\ +_080BBD74: .4byte gSaveBlock1\n\ +_080BBD78: .4byte 0x00001a2a\n\ +_080BBD7C: .4byte 0x00001a1a\n\ +_080BBD80: .4byte gDecorations\n\ +_080BBD84: .4byte 0x00000e21\n\ +_080BBD88:\n\ + mov r0, r8\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + ldr r0, _080BBDC8 @ =0x00004089\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBDCC @ =0x00000e0a\n\ + bl MapGridSetMetatileIdAt\n\ +_080BBDBC:\n\ + add sp, 0x4\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BBDC8: .4byte 0x00004089\n\ +_080BBDCC: .4byte 0x00000e0a\n\ +.syntax divided\n"); +} + +__attribute__((naked)) +void sub_80BBDD0(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + ldr r0, _080BBE00 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080BBE08\n\ + ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\ + str r0, [sp, 0x4]\n\ + adds r0, 0xC\n\ + str r0, [sp, 0x8]\n\ + movs r1, 0xC\n\ + str r1, [sp, 0xC]\n\ + b _080BBE1E\n\ + .align 2, 0\n\ +_080BBE00: .4byte 0x00004054\n\ +_080BBE04: .4byte gSaveBlock1 + 0x2688\n\ +_080BBE08:\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 5\n\ + ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\ + adds r2, r1, r0\n\ + str r2, [sp, 0x4]\n\ + adds r0, 0x10\n\ + adds r1, r0\n\ + str r1, [sp, 0x8]\n\ + movs r3, 0x10\n\ + str r3, [sp, 0xC]\n\ +_080BBE1E:\n\ + movs r6, 0\n\ + ldr r4, [sp, 0xC]\n\ + cmp r6, r4\n\ + bcc _080BBE28\n\ + b _080BBF6C\n\ +_080BBE28:\n\ + ldr r5, _080BBF80 @ =gSaveBlock1\n\ + mov r10, r5\n\ +_080BBE2C:\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1, r6\n\ + ldrb r1, [r0]\n\ + mov r9, r0\n\ + adds r2, r6, 0x1\n\ + str r2, [sp, 0x10]\n\ + cmp r1, 0\n\ + bne _080BBE3E\n\ + b _080BBF5E\n\ +_080BBE3E:\n\ + ldrb r0, [r0]\n\ + lsls r0, 5\n\ + ldr r3, _080BBF84 @ =gDecorations\n\ + adds r0, r3\n\ + ldrb r0, [r0, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBE4E\n\ + b _080BBF5E\n\ +_080BBE4E:\n\ + movs r5, 0\n\ + ldr r0, _080BBF88 @ =gMapHeader\n\ + ldr r2, [r0, 0x4]\n\ + ldrb r3, [r2]\n\ + mov r8, r0\n\ + cmp r5, r3\n\ + bcs _080BBE8E\n\ + ldr r0, [r2, 0x4]\n\ + ldrh r1, [r0, 0x14]\n\ + ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r4]\n\ + adds r0, 0xAE\n\ + adds r7, r4, 0\n\ + cmp r1, r0\n\ + beq _080BBE8E\n\ + adds r4, r2, 0\n\ + adds r2, r3, 0\n\ +_080BBE70:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, r2\n\ + bcs _080BBE8E\n\ + ldr r1, [r4, 0x4]\n\ + lsls r0, r5, 1\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrh r1, [r0, 0x14]\n\ + ldrh r0, [r7]\n\ + adds r0, 0xAE\n\ + cmp r1, r0\n\ + bne _080BBE70\n\ +_080BBE8E:\n\ + mov r1, r8\n\ + ldr r0, [r1, 0x4]\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + beq _080BBF5E\n\ + ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\ + ldr r2, [sp, 0x8]\n\ + adds r1, r2, r6\n\ + ldrb r0, [r1]\n\ + lsrs r0, 4\n\ + strh r0, [r7]\n\ + ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + strh r0, [r6]\n\ + ldrh r0, [r7]\n\ + adds r0, 0x7\n\ + ldrh r1, [r6]\n\ + adds r1, 0x7\n\ + bl MapGridGetMetatileBehaviorAt\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + adds r0, r4, 0\n\ + bl sub_80572D8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BBEDA\n\ + adds r0, r4, 0\n\ + bl sub_80572EC\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080BBF5E\n\ +_080BBEDA:\n\ + mov r3, r8\n\ + ldr r0, [r3, 0x4]\n\ + ldr r1, [r0, 0x4]\n\ + lsls r4, r5, 1\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r1, r4, r1\n\ + ldr r5, _080BBF98 @ =0x00003f20\n\ + adds r0, r5, 0\n\ + ldrb r1, [r1, 0x1]\n\ + adds r0, r1\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldrh r0, [r1]\n\ + mov r2, r9\n\ + ldrb r1, [r2]\n\ + lsls r1, 5\n\ + ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\ + adds r1, r3\n\ + ldr r1, [r1]\n\ + ldrh r1, [r1]\n\ + bl VarSet\n\ + mov r5, r8\n\ + ldr r0, [r5, 0x4]\n\ + ldr r0, [r0, 0x4]\n\ + adds r4, r0\n\ + ldrb r0, [r4]\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r2]\n\ + adds r0, 0xAE\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl FlagReset\n\ + ldr r3, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r3]\n\ + mov r4, r10\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + bl show_sprite\n\ + ldr r5, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + movs r4, 0\n\ + ldrsh r3, [r7, r4]\n\ + movs r5, 0\n\ + ldrsh r4, [r6, r5]\n\ + str r4, [sp]\n\ + bl sub_805C0F8\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r1]\n\ + mov r2, r10\n\ + ldrb r1, [r2, 0x5]\n\ + ldrb r2, [r2, 0x4]\n\ + bl sub_805C78C\n\ + ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r3]\n\ + adds r0, 0x1\n\ + strh r0, [r3]\n\ +_080BBF5E:\n\ + ldr r4, [sp, 0x10]\n\ + lsls r0, r4, 24\n\ + lsrs r6, r0, 24\n\ + ldr r5, [sp, 0xC]\n\ + cmp r6, r5\n\ + bcs _080BBF6C\n\ + b _080BBE2C\n\ +_080BBF6C:\n\ + add sp, 0x14\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\ + .align 2, 0\n\ +_080BBF7C: .4byte gSaveBlock1 + 0x1A1A\n\ +_080BBF80: .4byte gSaveBlock1\n\ +_080BBF84: .4byte gDecorations\n\ +_080BBF88: .4byte gMapHeader\n\ +_080BBF8C: .4byte gSpecialVar_0x8004\n\ +_080BBF90: .4byte gSpecialVar_0x8006\n\ +_080BBF94: .4byte gSpecialVar_0x8007\n\ +_080BBF98: .4byte 0x00003f20\n\ +_080BBF9C: .4byte gScriptResult\n\ +_080BBFA0: .4byte gDecorations + 0x1C\n\ +.syntax divided\n"); +} +#endif + +void sub_80BBFA4(void) +{ + int curBase = VarGet(VAR_0x4054); + VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); +} + +void sub_80BBFD8(s16 *position, struct MapEvents *events) +{ + s16 bgevtidx; + for (bgevtidx=0; bgevtidxbgEventCount; bgevtidx++) { + if (events->bgEvents[bgevtidx].kind == 8 && position[0] == events->bgEvents[bgevtidx].x + 7 && position[1] == events->bgEvents[bgevtidx].y + 7) { + gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId; + break; + } + } +} + +void sub_80BC038(s16 *position, struct MapEvents *events) +{ + sub_80BBFD8(position, events); + sub_80BB5E4(); + ScriptContext1_SetupScript(gUnknown_081A2E14); +} + +bool8 sub_80BC050(void) +{ + sub_80BB5D0(); + sub_80BB5E4(); + if (gScriptResult == 1) + return FALSE; + return TRUE; +} + +void sub_80BC074(u8 taskid) +{ + switch (gTasks[taskid].data[0]) { + case 0: + ScriptContext2_Enable(); + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); + warp_in(); + gUnknown_0300485C = mapldr_default; + SetMainCallback2(CB2_LoadMap); + ScriptContext2_Disable(); + DestroyTask(taskid); + break; + } +} + +void sub_80BC0F8(void) { + CreateTask(sub_80BC074, 0); + fade_screen(1, 0); +} + +void sub_80BC114(void) { + if (gSaveBlock1.secretBases[0].sbr_field_0 != gUnknown_020387DC) + gScriptResult = 1; + else + gScriptResult = 0; +} + +u8 sub_80BC14C(u8 sbid) +{ + s16 idx; + for (idx=0; idx<20; idx++) { + if (gSaveBlock1.secretBases[idx].sbr_field_0 == sbid) + return idx; + } + return 0; +} + -u8 sub_80BB8A8(void *); u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190 u8 local1; diff --git a/src/secret_base_80bb4ac.c b/src/secret_base_80bb4ac.c deleted file mode 100755 index 4989ec40f..000000000 --- a/src/secret_base_80bb4ac.c +++ /dev/null @@ -1,761 +0,0 @@ -#include "global.h" -#include "event_data.h" -#include "rom4.h" -#include "asm.h" -#include "script.h" -#include "vars.h" -#include "text.h" -#include "field_player_avatar.h" -#include "field_camera.h" -#include "string_util.h" -#include "map_constants.h" -#include "task.h" -#include "palette.h" -#include "decoration.h" -#include "field_weather.h" -#include "metatile_behavior.h" - -extern u8 gUnknown_020387DC; -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; -extern u16 gSpecialVar_0x8006; -extern u16 gSpecialVar_0x8007; -extern u16 gScriptResult; -extern const struct -{ - u16 unk_083D1358_0; - u16 unk_083D1358_1; -} gUnknown_083D1358[7]; -extern const u8 gUnknown_083D1374[4 * 16]; -extern void *gUnknown_0300485C; -extern u8 sub_807D770(void); -extern u8 gUnknown_083D13EC[12]; -extern u8 sub_80BCCA4(u8); - - -void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac -{ - u16 i; - u16 j; - record->sbr_field_0 = 0; - for (i=0; i<7; i++) - record->sbr_field_2[i] = 0xff; - for (i=0; i<4; i++) - record->trainerId[i] = 0x00; - record->sbr_field_e = 0; - record->sbr_field_10 = 0; - record->sbr_field_11 = 0; - record->sbr_field_1_0 = 0; - record->gender = 0; - record->sbr_field_1_5 = 0; - record->sbr_field_1_6 = 0; - for (i=0; i<16; i++) { - record->decorations[i] = 0; - record->decorationPos[i] = 0; - } - for (i=0; i<6; i++) { - for (j=0; j<4; j++) { - record->partyMoves[i * 4 + j] = 0; - } - record->partyPersonality[i] = 0; - record->partyEVs[i] = 0; - record->partySpecies[i] = 0; - record->partyHeldItems[i] = 0; - record->partyLevels[i] = 0; - } -} - -void ResetSecretBase(u8 idx) // 80bb594 -{ - sub_80BB4AC(&(gSaveBlock1.secretBases[idx])); -} - -void ResetSecretBases(void) // 080bb5b4 -{ - u16 i; - for (i=0; i<20; i++) - ResetSecretBase(i); -} - -void sub_80BB5D0(void) // 080bb5d0 -{ - gUnknown_020387DC = gSpecialVar_0x8004; -} - -void sub_80BB5E4(void) // 80bb5e4 -{ - u16 idx; - gScriptResult = 0; - for (idx=0; idx<20; idx++) { - if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) - continue; - gScriptResult = 1; - VarSet(VAR_0x4054, idx); - break; - } -} - -void sub_80BB63C(void) // 80bb63c -{ - if (gSaveBlock1.secretBases[0].sbr_field_0) - gScriptResult = 1; - else - gScriptResult = 0; -} - -u8 sub_80BB66C(void) // 80bb66c -{ - s16 x, y; - s16 v0; - GetXYCoordsOneStepInFrontOfPlayer(&x, &y); - v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF; - if (v0 == 0x90 || v0 == 0x91) - return 1; - else if (v0 == 0x92 || v0 == 0x93) - return 2; - else if (v0 == 0x9a || v0 == 0x9b) - return 3; - else if (v0 == 0x94 || v0 == 0x95) - return 4; - else if (v0 == 0x96 || v0 == 0x97 || v0 == 0x9c || v0 == 0x9d) - return 5; - else if (v0 == 0x98 || v0 == 0x99) - return 6; - return 0; -} - -void sub_80BB70C(void) // 80bb70c -{ - gSpecialVar_0x8007 = sub_80BB66C(); -} - -s16 unref_sub_80BB724(u16 *a0, u8 a1) -{ - u16 v2; - for (v2=0; v2<0x200; v2++) { - if ((a0[v2] & 0xFFF) == a1) - return (s16)v2; - } - return -1; -} - -void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) -{ - s16 x, y; - for (y=0; yheight; y++) { - for (x=0; xwidth; x++) { - if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) { - *arg1 = x; - *arg2 = y; - return; - } - } - } -} - -void sub_80BB800(void) -{ - s16 x, y; - s16 tile_id; - u16 idx; - GetXYCoordsOneStepInFrontOfPlayer(&x, &y); - tile_id = MapGridGetMetatileIdAt(x, y); - for (idx=0; idx<7; idx++) { - if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { - MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); - CurrentMapDrawMetatileAt(x, y); - return; - } - } - for (idx=0; idx<7; idx++) { - if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) { - MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00); - CurrentMapDrawMetatileAt(x, y); - return; - } - } -} - -u8 sub_80BB8A8(u8 *arg1) -{ - u8 idx; - for (idx=0; idx<7; idx++) { - if (arg1[idx] == EOS) - return idx; - } - return 7; -} - -void sub_80BB8CC(void) -{ - u8 nameLength; - u16 idx; - gSaveBlock1.secretBases[0].sbr_field_0 = gUnknown_020387DC; - for (idx=0; idx<4; idx++) { - gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx]; - } - VarSet(VAR_0x4054, 0); - nameLength = sub_80BB8A8(gSaveBlock2.playerName); - memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7); - StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength); - gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; - VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); -} - -void sub_80BB970(struct MapEvents *events) -{ - u16 bgevidx, idx, jdx; - s16 tile_id; - for (bgevidx=0; bgevidxbgEventCount; bgevidx++) { - if (events->bgEvents[bgevidx].kind == 8) { - for (jdx=0; jdx<20; jdx++) { - if (gSaveBlock1.secretBases[jdx].sbr_field_0 == events->bgEvents[bgevidx].bgUnion.secretBaseId) { - tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); - for (idx=0; idx<7; idx++) { - if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { - MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); - break; - } - } - break; - } - } - } - } -} - -void sub_80BBA14(void) -{ - s8 idx = 4 * (gUnknown_020387DC / 10); - warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); -} - -void sub_80BBA48(u8 taskid) -{ - u16 curbaseid; - switch (gTasks[taskid].data[0]) { - case 0: - gTasks[taskid].data[0] = 1; - break; - case 1: - if (!gPaletteFade.active) { - gTasks[taskid].data[0] = 2; - } - break; - case 2: - curbaseid = VarGet(VAR_0x4054); - if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) - gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; - sub_80BBA14(); - warp_in(); - gUnknown_0300485C = sub_8080990; - SetMainCallback2(CB2_LoadMap); - DestroyTask(taskid); - break; - } -} - -void sub_80BBAF0(void) -{ - CreateTask(sub_80BBA48, 0); - fade_screen(1, 0); - saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); -} - -bool8 sub_80BBB24(void) -{ - if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) - return FALSE; - return TRUE; -} - -void sub_80BBB50(u8 taskid) -{ - FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); - if (sub_807D770() == 1) { - EnableBothScriptContexts(); - DestroyTask(taskid); - } -} - -void sub_80BBB90(void) -{ - s16 x, y; - ScriptContext2_Enable(); - HideMapNamePopup(); - sub_80BB764(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0xe20); - CurrentMapDrawMetatileAt(x + 7, y + 7); - pal_fill_black(); - CreateTask(sub_80BBB50, 0); -} - -void sub_80BBBEC(u8 taskid) -{ - s8 idx; - if (!gPaletteFade.active) { - idx = 4 * (gUnknown_020387DC / 10); - warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); - warp_in(); - gUnknown_0300485C = sub_80BBB90; - SetMainCallback2(CB2_LoadMap); - DestroyTask(taskid); - } -} - -void sub_80BBC78(void) -{ - u8 taskid = CreateTask(sub_80BBBEC, 0); - gTasks[taskid].data[0] = 0; - fade_screen(1, 0); -} - -bool8 CurrentMapIsSecretBase(void) -{ - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4) - return TRUE; - return FALSE; -} - -#ifdef NONMATCHING -void sub_80BBCCC(u8 flagIn) -{ - u16 curBaseId; - u16 x, y; - if (CurrentMapIsSecretBase()) { - curBaseId = VarGet(VAR_0x4054); - for (x=0; x<16; x++) { - if ((u8)(gSaveBlock1.secretBases[curBaseId].decorations[x] - 1) <= 0x77 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].decor_field_11 != 4) { - sub_80FF394((gSaveBlock1.secretBases[0].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[0].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); - } - } - if (curBaseId != 0) { - sub_80BB764(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21); - } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) { - sub_80BB764(&x, &y, 0x220); - MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a); - } - } -} - -void sub_80BBDD0(void) -{ - u8 *roomdecor; - u8 *roomdecorpos; - u8 ndecor; - u8 decidx; - u8 objid = 0; - u8 metatile; - u16 curBase = VarGet(VAR_0x4054); - if (!CurrentMapIsSecretBase()) { - roomdecor = gSaveBlock1.playerRoomDecor; - roomdecorpos = gSaveBlock1.playerRoomDecorPos; - ndecor = 12; - } else { - roomdecor = gSaveBlock1.secretBases[curBase].decorations; - roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos; - ndecor = 16; - } - for (decidx=0; decidxmapObjectCount; objid++) { - if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) - break; - } - if (objid != gMapHeader.events->mapObjectCount) { - gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; - gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; - metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); - if (sub_80572D8(metatile) == 1 || sub_80572EC(metatile) == 1) { - gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20; - VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); - gScriptResult = gMapHeader.events->mapObjects[objid].localId; - FlagReset(gSpecialVar_0x8004 + 0xAE); - show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); - sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); - gSpecialVar_0x8004 ++; - } - } - } -} - -#else -__attribute__((naked)) -void sub_80BBCCC(u8 flagIn) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - bl CurrentMapIsSecretBase\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080BBDBC\n\ - ldr r0, _080BBD70 @ =0x00004054\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - movs r1, 0\n\ - mov r0, sp\n\ - strh r1, [r0]\n\ - ldr r6, _080BBD74 @ =gSaveBlock1\n\ - mov r4, sp\n\ - ldr r0, _080BBD78 @ =0x00001a2a\n\ - adds r7, r6, r0\n\ -_080BBCFC:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 5\n\ - ldrh r1, [r4]\n\ - adds r2, r0, r1\n\ - ldr r1, _080BBD7C @ =0x00001a1a\n\ - adds r0, r6, r1\n\ - adds r1, r2, r0\n\ - ldrb r0, [r1]\n\ - subs r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x77\n\ - bhi _080BBD3A\n\ - ldr r0, _080BBD80 @ =gDecorations\n\ - ldrb r3, [r1]\n\ - lsls r1, r3, 5\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x11]\n\ - cmp r0, 0x4\n\ - beq _080BBD3A\n\ - adds r0, r2, r7\n\ - ldrb r2, [r0]\n\ - lsrs r0, r2, 4\n\ - adds r0, 0x7\n\ - movs r1, 0xF\n\ - ands r1, r2\n\ - adds r1, 0x7\n\ - adds r2, r3, 0\n\ - bl sub_80FF394\n\ -_080BBD3A:\n\ - ldrh r0, [r4]\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - strh r0, [r4]\n\ - cmp r0, 0xF\n\ - bls _080BBCFC\n\ - cmp r5, 0\n\ - beq _080BBD88\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - movs r2, 0x88\n\ - lsls r2, 2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl sub_80BB764\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - adds r0, 0x7\n\ - ldrh r1, [r4]\n\ - adds r1, 0x7\n\ - ldr r2, _080BBD84 @ =0x00000e21\n\ - bl MapGridSetMetatileIdAt\n\ - b _080BBDBC\n\ - .align 2, 0\n\ -_080BBD70: .4byte 0x00004054\n\ -_080BBD74: .4byte gSaveBlock1\n\ -_080BBD78: .4byte 0x00001a2a\n\ -_080BBD7C: .4byte 0x00001a1a\n\ -_080BBD80: .4byte gDecorations\n\ -_080BBD84: .4byte 0x00000e21\n\ -_080BBD88:\n\ - mov r0, r8\n\ - cmp r0, 0x1\n\ - bne _080BBDBC\n\ - ldr r0, _080BBDC8 @ =0x00004089\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bne _080BBDBC\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - movs r2, 0x88\n\ - lsls r2, 2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl sub_80BB764\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - adds r0, 0x7\n\ - ldrh r1, [r4]\n\ - adds r1, 0x7\n\ - ldr r2, _080BBDCC @ =0x00000e0a\n\ - bl MapGridSetMetatileIdAt\n\ -_080BBDBC:\n\ - add sp, 0x4\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080BBDC8: .4byte 0x00004089\n\ -_080BBDCC: .4byte 0x00000e0a\n\ -.syntax divided\n"); -} - -__attribute__((naked)) -void sub_80BBDD0(void) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - ldr r0, _080BBE00 @ =0x00004054\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - bl CurrentMapIsSecretBase\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080BBE08\n\ - ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\ - str r0, [sp, 0x4]\n\ - adds r0, 0xC\n\ - str r0, [sp, 0x8]\n\ - movs r1, 0xC\n\ - str r1, [sp, 0xC]\n\ - b _080BBE1E\n\ - .align 2, 0\n\ -_080BBE00: .4byte 0x00004054\n\ -_080BBE04: .4byte gSaveBlock1 + 0x2688\n\ -_080BBE08:\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 5\n\ - ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\ - adds r2, r1, r0\n\ - str r2, [sp, 0x4]\n\ - adds r0, 0x10\n\ - adds r1, r0\n\ - str r1, [sp, 0x8]\n\ - movs r3, 0x10\n\ - str r3, [sp, 0xC]\n\ -_080BBE1E:\n\ - movs r6, 0\n\ - ldr r4, [sp, 0xC]\n\ - cmp r6, r4\n\ - bcc _080BBE28\n\ - b _080BBF6C\n\ -_080BBE28:\n\ - ldr r5, _080BBF80 @ =gSaveBlock1\n\ - mov r10, r5\n\ -_080BBE2C:\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1, r6\n\ - ldrb r1, [r0]\n\ - mov r9, r0\n\ - adds r2, r6, 0x1\n\ - str r2, [sp, 0x10]\n\ - cmp r1, 0\n\ - bne _080BBE3E\n\ - b _080BBF5E\n\ -_080BBE3E:\n\ - ldrb r0, [r0]\n\ - lsls r0, 5\n\ - ldr r3, _080BBF84 @ =gDecorations\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x11]\n\ - cmp r0, 0x4\n\ - beq _080BBE4E\n\ - b _080BBF5E\n\ -_080BBE4E:\n\ - movs r5, 0\n\ - ldr r0, _080BBF88 @ =gMapHeader\n\ - ldr r2, [r0, 0x4]\n\ - ldrb r3, [r2]\n\ - mov r8, r0\n\ - cmp r5, r3\n\ - bcs _080BBE8E\n\ - ldr r0, [r2, 0x4]\n\ - ldrh r1, [r0, 0x14]\n\ - ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r4]\n\ - adds r0, 0xAE\n\ - adds r7, r4, 0\n\ - cmp r1, r0\n\ - beq _080BBE8E\n\ - adds r4, r2, 0\n\ - adds r2, r3, 0\n\ -_080BBE70:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, r2\n\ - bcs _080BBE8E\n\ - ldr r1, [r4, 0x4]\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrh r1, [r0, 0x14]\n\ - ldrh r0, [r7]\n\ - adds r0, 0xAE\n\ - cmp r1, r0\n\ - bne _080BBE70\n\ -_080BBE8E:\n\ - mov r1, r8\n\ - ldr r0, [r1, 0x4]\n\ - ldrb r0, [r0]\n\ - cmp r5, r0\n\ - beq _080BBF5E\n\ - ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\ - ldr r2, [sp, 0x8]\n\ - adds r1, r2, r6\n\ - ldrb r0, [r1]\n\ - lsrs r0, 4\n\ - strh r0, [r7]\n\ - ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\ - ldrb r1, [r1]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - strh r0, [r6]\n\ - ldrh r0, [r7]\n\ - adds r0, 0x7\n\ - ldrh r1, [r6]\n\ - adds r1, 0x7\n\ - bl MapGridGetMetatileBehaviorAt\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - adds r0, r4, 0\n\ - bl sub_80572D8\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080BBEDA\n\ - adds r0, r4, 0\n\ - bl sub_80572EC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _080BBF5E\n\ -_080BBEDA:\n\ - mov r3, r8\n\ - ldr r0, [r3, 0x4]\n\ - ldr r1, [r0, 0x4]\n\ - lsls r4, r5, 1\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r1, r4, r1\n\ - ldr r5, _080BBF98 @ =0x00003f20\n\ - adds r0, r5, 0\n\ - ldrb r1, [r1, 0x1]\n\ - adds r0, r1\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - strh r0, [r1]\n\ - ldrh r0, [r1]\n\ - mov r2, r9\n\ - ldrb r1, [r2]\n\ - lsls r1, 5\n\ - ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\ - adds r1, r3\n\ - ldr r1, [r1]\n\ - ldrh r1, [r1]\n\ - bl VarSet\n\ - mov r5, r8\n\ - ldr r0, [r5, 0x4]\n\ - ldr r0, [r0, 0x4]\n\ - adds r4, r0\n\ - ldrb r0, [r4]\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - strh r0, [r1]\n\ - ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r2]\n\ - adds r0, 0xAE\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl FlagReset\n\ - ldr r3, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r3]\n\ - mov r4, r10\n\ - ldrb r1, [r4, 0x5]\n\ - ldrb r2, [r4, 0x4]\n\ - bl show_sprite\n\ - ldr r5, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r4, 0x5]\n\ - ldrb r2, [r4, 0x4]\n\ - movs r4, 0\n\ - ldrsh r3, [r7, r4]\n\ - movs r5, 0\n\ - ldrsh r4, [r6, r5]\n\ - str r4, [sp]\n\ - bl sub_805C0F8\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r1]\n\ - mov r2, r10\n\ - ldrb r1, [r2, 0x5]\n\ - ldrb r2, [r2, 0x4]\n\ - bl sub_805C78C\n\ - ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r3]\n\ - adds r0, 0x1\n\ - strh r0, [r3]\n\ -_080BBF5E:\n\ - ldr r4, [sp, 0x10]\n\ - lsls r0, r4, 24\n\ - lsrs r6, r0, 24\n\ - ldr r5, [sp, 0xC]\n\ - cmp r6, r5\n\ - bcs _080BBF6C\n\ - b _080BBE2C\n\ -_080BBF6C:\n\ - add sp, 0x14\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\ - .align 2, 0\n\ -_080BBF7C: .4byte gSaveBlock1 + 0x1A1A\n\ -_080BBF80: .4byte gSaveBlock1\n\ -_080BBF84: .4byte gDecorations\n\ -_080BBF88: .4byte gMapHeader\n\ -_080BBF8C: .4byte gSpecialVar_0x8004\n\ -_080BBF90: .4byte gSpecialVar_0x8006\n\ -_080BBF94: .4byte gSpecialVar_0x8007\n\ -_080BBF98: .4byte 0x00003f20\n\ -_080BBF9C: .4byte gScriptResult\n\ -_080BBFA0: .4byte gDecorations + 0x1C\n\ -.syntax divided\n"); -} -#endif - -void sub_80BBFA4(void) -{ - int curBase = VarGet(VAR_0x4054); - VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); -} - -void sub_80BBFD8(s16 *position, struct MapEvents *events) -{ - s16 bgevtidx; - for (bgevtidx=0; bgevtidxbgEventCount; bgevtidx++) { - if (events->bgEvents[bgevtidx].kind == 8 && position[0] == events->bgEvents[bgevtidx].x + 7 && position[1] == events->bgEvents[bgevtidx].y + 7) { - gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId; - break; - } - } -} -- cgit v1.2.3 From 651630d5dc8e2b79e522e07863f0c35965752e9b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 22:06:23 -0400 Subject: sub_80BC300 (nonmatching) --- asm/secret_base.s | 153 ------------------------------------------- include/global.h | 10 +-- src/secret_base.c | 189 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 194 insertions(+), 158 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 56f9ef3d4..17b5cb665 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,159 +6,6 @@ .section .text_80BC1D0 - thumb_func_start sub_80BC300 -sub_80BC300: @ 80BC300 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r10, r0 - movs r6, 0 - mov r9, r6 -_080BC314: - movs r4, 0 - lsls r3, r6, 2 - lsls r2, r6, 1 - ldr r7, _080BC424 @ =gPlayerParty - adds r1, r6, 0x1 - str r1, [sp] - adds r1, r3, 0 -_080BC322: - adds r0, r1, r4 - lsls r0, 1 - ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54 - adds r0, r5, r0 - mov r5, r9 - strh r5, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080BC322 - ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84 - adds r0, r1, r2 - strh r5, [r0] - ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90 - adds r0, r5, r2 - mov r1, r9 - strh r1, [r0] - ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C - adds r0, r2, r6 - mov r5, r9 - strb r5, [r0] - ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C - adds r0, r1, r3 - mov r2, r9 - str r2, [r0] - ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2 - adds r0, r3, r6 - strb r2, [r0] - movs r0, 0x64 - adds r5, r6, 0 - muls r5, r0 - adds r4, r5, r7 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080BC408 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080BC408 - movs r4, 0 - mov r0, r10 - lsls r0, 2 - mov r8, r0 - mov r1, r10 - lsls r7, r1, 1 - adds r1, 0x1 - str r1, [sp, 0x4] - ldr r2, _080BC424 @ =gPlayerParty -_080BC38E: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r5, r2 - str r2, [sp, 0x8] - bl GetMonData - mov r3, r8 - adds r1, r3, r4 - lsls r1, 1 - ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54 - adds r1, r3, r1 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r2, [sp, 0x8] - cmp r4, 0x3 - bls _080BC38E - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080BC424 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84 - adds r1, r5, r7 - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90 - adds r1, r2, r7 - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C - add r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C - add r1, r8 - str r0, [r1] - adds r0, r4, 0 - bl sub_80BC298 - ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2 - add r1, r10 - strb r0, [r1] - ldr r3, [sp, 0x4] - lsls r0, r3, 16 - lsrs r0, 16 - mov r10, r0 -_080BC408: - ldr r5, [sp] - lsls r0, r5, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080BC314 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BC424: .4byte gPlayerParty -_080BC428: .4byte gSaveBlock1 + 0x1A54 -_080BC42C: .4byte gSaveBlock1 + 0x1A84 -_080BC430: .4byte gSaveBlock1 + 0x1A90 -_080BC434: .4byte gSaveBlock1 + 0x1A9C -_080BC438: .4byte gSaveBlock1 + 0x1A3C -_080BC43C: .4byte gSaveBlock1 + 0x1AA2 - thumb_func_end sub_80BC300 - thumb_func_start sub_80BC440 sub_80BC440: @ 80BC440 push {r4,r5,lr} diff --git a/include/global.h b/include/global.h index c8b07cf69..8e6be79da 100644 --- a/include/global.h +++ b/include/global.h @@ -107,11 +107,11 @@ struct SecretBaseRecord /*0x1A1A*/ u8 decorations[16]; /*0x1A2A*/ u8 decorationPos[16]; /*0x1A3A*/ u32 partyPersonality[6]; - /*0x1A52*/ u16 partyMoves[6 * 4]; - /*0x1A6A*/ u16 partySpecies[6]; - /*0x1A76*/ u16 partyHeldItems[6]; - /*0x1A82*/ u8 partyLevels[6]; - /*0x1A88*/ u8 partyEVs[6]; + /*0x1A54*/ u16 partyMoves[6 * 4]; + /*0x1A84*/ u16 partySpecies[6]; + /*0x1A90*/ u16 partyHeldItems[6]; + /*0x1A9C*/ u8 partyLevels[6]; + /*0x1AA2*/ u8 partyEVs[6]; }; #include "game_stat.h" diff --git a/src/secret_base.c b/src/secret_base.c index 4fd6bf30a..a405ec337 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -15,6 +15,7 @@ #include "decoration.h" #include "field_weather.h" #include "metatile_behavior.h" +#include "pokemon.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; @@ -865,3 +866,191 @@ u8 sub_80BC298(struct Pokemon *mon) { // 80bc298 evsum += GetMonData(mon, MON_DATA_SPDEF_EV); return (u8)(evsum / 6); } + +#ifdef NONMATCHING +void sub_80BC300(void) +{ + u16 moveidx; + u16 sbpartyidx = 0; + int resetVal = 0; + u16 partyidx = 0; + while (partyidx < 6) { + partyidx ++; + for (moveidx=0; moveidx<4; moveidx++) { + gSaveBlock1.secretBases[0].partyMoves[(partyidx - 1) * 6 + moveidx] = resetVal; + } + gSaveBlock1.secretBases[0].partySpecies[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyHeldItems[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyLevels[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyPersonality[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyEVs[partyidx - 1] = resetVal; + if (GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_SPECIES) != 0 && !GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_IS_EGG)) { + sbpartyidx ++; + for (moveidx=0; moveidx<4; moveidx++) { + gSaveBlock1.secretBases[0].partyMoves[(sbpartyidx - 1) * 6 + moveidx] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_MOVE1 + moveidx); + } + gSaveBlock1.secretBases[0].partySpecies[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_SPECIES); + gSaveBlock1.secretBases[0].partyHeldItems[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_HELD_ITEM); + gSaveBlock1.secretBases[0].partyLevels[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_LEVEL); + gSaveBlock1.secretBases[0].partyPersonality[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_PERSONALITY); + gSaveBlock1.secretBases[0].partyEVs[sbpartyidx - 1] = sub_80BC298(&(gPlayerParty[partyidx - 1])); + } + } +} +#else +__attribute__((naked)) +void sub_80BC300(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + movs r0, 0\n\ + mov r10, r0\n\ + movs r6, 0\n\ + mov r9, r6\n\ +_080BC314:\n\ + movs r4, 0\n\ + lsls r3, r6, 2\n\ + lsls r2, r6, 1\n\ + ldr r7, _080BC424 @ =gPlayerParty\n\ + adds r1, r6, 0x1\n\ + str r1, [sp]\n\ + adds r1, r3, 0\n\ +_080BC322:\n\ + adds r0, r1, r4\n\ + lsls r0, 1\n\ + ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ + adds r0, r5, r0\n\ + mov r5, r9\n\ + strh r5, [r0]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, 0x3\n\ + bls _080BC322\n\ + ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ + adds r0, r1, r2\n\ + strh r5, [r0]\n\ + ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ + adds r0, r5, r2\n\ + mov r1, r9\n\ + strh r1, [r0]\n\ + ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ + adds r0, r2, r6\n\ + mov r5, r9\n\ + strb r5, [r0]\n\ + ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ + adds r0, r1, r3\n\ + mov r2, r9\n\ + str r2, [r0]\n\ + ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ + adds r0, r3, r6\n\ + strb r2, [r0]\n\ + movs r0, 0x64\n\ + adds r5, r6, 0\n\ + muls r5, r0\n\ + adds r4, r5, r7\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _080BC408\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _080BC408\n\ + movs r4, 0\n\ + mov r0, r10\n\ + lsls r0, 2\n\ + mov r8, r0\n\ + mov r1, r10\n\ + lsls r7, r1, 1\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x4]\n\ + ldr r2, _080BC424 @ =gPlayerParty\n\ +_080BC38E:\n\ + adds r1, r4, 0\n\ + adds r1, 0xD\n\ + adds r0, r5, r2\n\ + str r2, [sp, 0x8]\n\ + bl GetMonData\n\ + mov r3, r8\n\ + adds r1, r3, r4\n\ + lsls r1, 1\n\ + ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ + adds r1, r3, r1\n\ + strh r0, [r1]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + ldr r2, [sp, 0x8]\n\ + cmp r4, 0x3\n\ + bls _080BC38E\n\ + movs r0, 0x64\n\ + adds r4, r6, 0\n\ + muls r4, r0\n\ + ldr r0, _080BC424 @ =gPlayerParty\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ + adds r1, r5, r7\n\ + strh r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ + adds r1, r2, r7\n\ + strh r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ + add r1, r10\n\ + strb r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + bl GetMonData\n\ + ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ + add r1, r8\n\ + str r0, [r1]\n\ + adds r0, r4, 0\n\ + bl sub_80BC298\n\ + ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ + add r1, r10\n\ + strb r0, [r1]\n\ + ldr r3, [sp, 0x4]\n\ + lsls r0, r3, 16\n\ + lsrs r0, 16\n\ + mov r10, r0\n\ +_080BC408:\n\ + ldr r5, [sp]\n\ + lsls r0, r5, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x5\n\ + bls _080BC314\n\ + add sp, 0xC\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\ + .align 2, 0\n\ +_080BC424: .4byte gPlayerParty\n\ +_080BC428: .4byte gSaveBlock1 + 0x1A54\n\ +_080BC42C: .4byte gSaveBlock1 + 0x1A84\n\ +_080BC430: .4byte gSaveBlock1 + 0x1A90\n\ +_080BC434: .4byte gSaveBlock1 + 0x1A9C\n\ +_080BC438: .4byte gSaveBlock1 + 0x1A3C\n\ +_080BC43C: .4byte gSaveBlock1 + 0x1AA2\n\ +.syntax divided\n"); +} +#endif -- cgit v1.2.3 From c202c65442594b6a2a272043948c0e39d697db67 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Tue, 16 May 2017 21:09:06 -0500 Subject: more decompilation --- asm/battle_2.s | 1918 ------------------------------------------------------ include/battle.h | 27 +- src/battle_2.c | 538 +++++++++++++++ src/rom3.c | 48 +- 4 files changed, 578 insertions(+), 1953 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 765653b88..8cd1e2926 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,1924 +6,6 @@ .text - thumb_func_start sub_8010B88 -sub_8010B88: @ 8010B88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - ldr r4, _08010CEC @ =gUnknown_02024CA8 - ldr r5, _08010CF0 @ =gUnknown_02024A60 - ldrb r1, [r5] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r1, sp - adds r0, r4 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - ldr r2, _08010CF4 @ =gBattleMoves - ldr r3, _08010CF8 @ =gUnknown_02024BE6 - ldrh r1, [r3] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - mov r10, r4 - adds r7, r5, 0 - ldr r1, _08010CFC @ =gBattleMons - mov r8, r1 - ldr r2, _08010D00 @ =gUnknown_02024C98 - mov r12, r2 - cmp r0, 0x7F - beq _08010C66 - movs r5, 0 - adds r4, r7, 0 - movs r3, 0x58 - mov r2, r8 - adds r2, 0x18 - movs r1, 0x6 -_08010BDC: - ldrb r0, [r4] - muls r0, r3 - adds r0, r5, r0 - adds r0, r2 - strb r1, [r0] - adds r5, 0x1 - cmp r5, 0x7 - ble _08010BDC - movs r5, 0 - ldr r3, _08010D04 @ =gUnknown_02024A68 - ldrb r3, [r3] - cmp r5, r3 - bge _08010C52 - ldr r6, _08010D08 @ =gUnknown_02024AD0 - mov r9, r6 - ldr r3, _08010CEC @ =gUnknown_02024CA8 - ldr r4, _08010D00 @ =gUnknown_02024C98 -_08010BFE: - movs r0, 0x58 - muls r0, r5 - add r0, r9 - str r0, [sp, 0x20] - ldr r1, [r0] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _08010C24 - ldrb r0, [r3, 0x14] - ldr r2, _08010CF0 @ =gUnknown_02024A60 - ldrb r2, [r2] - cmp r0, r2 - bne _08010C24 - ldr r0, _08010D0C @ =0xfbffffff - ands r1, r0 - ldr r6, [sp, 0x20] - str r1, [r6] -_08010C24: - ldr r1, [r4] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _08010C44 - ldrb r0, [r3, 0x15] - ldr r2, _08010CF0 @ =gUnknown_02024A60 - ldrb r2, [r2] - cmp r0, r2 - bne _08010C44 - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - str r1, [r4] - movs r0, 0 - strb r0, [r3, 0x15] -_08010C44: - adds r3, 0x1C - adds r4, 0x4 - adds r5, 0x1 - ldr r6, _08010D04 @ =gUnknown_02024A68 - ldrb r6, [r6] - cmp r5, r6 - blt _08010BFE -_08010C52: - ldr r1, _08010CF8 @ =gUnknown_02024BE6 - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _08010CF4 @ =gBattleMoves - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x7F - bne _08010D18 -_08010C66: - ldrb r1, [r7] - movs r0, 0x58 - adds r2, r1, 0 - muls r2, r0 - mov r0, r8 - adds r0, 0x50 - adds r2, r0 - ldr r0, [r2] - ldr r1, _08010D10 @ =0x15100007 - ands r0, r1 - str r0, [r2] - ldrb r1, [r7] - lsls r1, 2 - add r1, r12 - ldr r0, [r1] - ldr r2, _08010D14 @ =0x0003043f - ands r0, r2 - str r0, [r1] - movs r5, 0 - ldr r3, _08010D04 @ =gUnknown_02024A68 - ldrb r3, [r3] - cmp r5, r3 - bge _08010D30 - movs r6, 0 -_08010C96: - ldrb r0, [r7] - bl battle_side_get_owner - adds r4, r0, 0 - lsls r0, r5, 24 - lsrs r0, 24 - bl battle_side_get_owner - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - beq _08010CD6 - ldr r1, _08010D00 @ =gUnknown_02024C98 - lsls r0, r5, 2 - adds r2, r0, r1 - ldr r1, [r2] - movs r0, 0x18 - ands r0, r1 - cmp r0, 0 - beq _08010CD6 - ldr r0, _08010CEC @ =gUnknown_02024CA8 - adds r0, r6, r0 - ldrb r0, [r0, 0x15] - ldrb r3, [r7] - cmp r0, r3 - bne _08010CD6 - movs r0, 0x19 - negs r0, r0 - ands r1, r0 - movs r0, 0x10 - orrs r1, r0 - str r1, [r2] -_08010CD6: - adds r6, 0x1C - adds r5, 0x1 - ldr r0, _08010D04 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r5, r0 - blt _08010C96 - ldr r6, _08010CEC @ =gUnknown_02024CA8 - mov r10, r6 - ldr r7, _08010CF0 @ =gUnknown_02024A60 - b _08010D30 - .align 2, 0 -_08010CEC: .4byte gUnknown_02024CA8 -_08010CF0: .4byte gUnknown_02024A60 -_08010CF4: .4byte gBattleMoves -_08010CF8: .4byte gUnknown_02024BE6 -_08010CFC: .4byte gBattleMons -_08010D00: .4byte gUnknown_02024C98 -_08010D04: .4byte gUnknown_02024A68 -_08010D08: .4byte gUnknown_02024AD0 -_08010D0C: .4byte 0xfbffffff -_08010D10: .4byte 0x15100007 -_08010D14: .4byte 0x0003043f -_08010D18: - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - mov r1, r8 - adds r1, 0x50 - adds r0, r1 - movs r1, 0 - str r1, [r0] - ldrb r0, [r7] - lsls r0, 2 - add r0, r12 - str r1, [r0] -_08010D30: - movs r5, 0 - ldr r6, _08010EFC @ =0x02000000 - ldr r0, _08010F00 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r5, r0 - bge _08010D92 - ldr r1, _08010F04 @ =gUnknown_02024AD0 - mov r9, r1 - ldr r2, _08010F08 @ =gBitTable - mov r8, r2 - ldr r4, _08010F0C @ =gUnknown_02024A60 - mov r12, r6 -_08010D48: - movs r0, 0x58 - muls r0, r5 - mov r1, r9 - adds r3, r0, r1 - ldrb r0, [r4] - lsls r0, 2 - add r0, r8 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r3] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _08010D68 - bics r1, r2 - str r1, [r3] -_08010D68: - ldr r1, [r3] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08010D88 - ldr r2, _08010F10 @ =0x00016020 - adds r0, r5, r2 - add r0, r12 - ldrb r0, [r0] - ldrb r2, [r4] - cmp r0, r2 - bne _08010D88 - ldr r0, _08010F14 @ =0xffff1fff - ands r1, r0 - str r1, [r3] -_08010D88: - adds r5, 0x1 - ldr r3, _08010F00 @ =gUnknown_02024A68 - ldrb r3, [r3] - cmp r5, r3 - blt _08010D48 -_08010D92: - ldrb r0, [r7] - ldr r1, _08010F18 @ =gUnknown_02024E60 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldrb r0, [r7] - ldr r2, _08010F1C @ =gUnknown_02024E64 - adds r0, r2 - strb r1, [r0] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - mov r3, r10 - adds r1, r0, r3 - movs r5, 0 - movs r2, 0 -_08010DB4: - adds r0, r1, r5 - strb r2, [r0] - adds r5, 0x1 - cmp r5, 0x1B - bls _08010DB4 - ldr r1, _08010F20 @ =gUnknown_02024BE6 - ldrh r0, [r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _08010F24 @ =gBattleMoves - adds r1, r2 - ldrb r0, [r1] - cmp r0, 0x7F - bne _08010E2C - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r10 - mov r1, sp - ldrb r1, [r1, 0xA] - strb r1, [r0, 0xA] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r10 - mov r1, sp - ldrb r1, [r1, 0x15] - strb r1, [r0, 0x15] - ldrb r0, [r7] - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - add r1, r10 - mov r0, sp - ldrb r2, [r0, 0xF] - lsls r2, 28 - movs r4, 0xF - lsrs r2, 28 - ldrb r3, [r1, 0xF] - movs r0, 0x10 - negs r0, r0 - ands r0, r3 - orrs r0, r2 - strb r0, [r1, 0xF] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r10 - mov r1, sp - ldrb r1, [r1, 0xF] - lsrs r1, 4 - lsls r1, 4 - ldrb r2, [r0, 0xF] - ands r4, r2 - orrs r4, r1 - strb r4, [r0, 0xF] -_08010E2C: - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - add r0, r10 - movs r3, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08010F28 @ =gUnknown_02024C34 - adds r0, r1 - movs r2, 0 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08010F2C @ =gUnknown_02024C3C - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08010F30 @ =gUnknown_02024C44 - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08010F34 @ =gUnknown_02024C4C - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08010F38 @ =gUnknown_02024C2C - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - ldr r1, _08010F3C @ =gUnknown_02024C5C - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _08010F40 @ =0x000160ac - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x53 - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x1 - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x1 - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x1 - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - subs r1, 0x1B - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - adds r0, r6 - strb r2, [r0] - ldr r2, _08010F44 @ =0x00017100 - adds r1, r6, r2 - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - str r3, [r0] - ldr r6, _08010F20 @ =gUnknown_02024BE6 - strh r3, [r6] - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08010EFC: .4byte 0x02000000 -_08010F00: .4byte gUnknown_02024A68 -_08010F04: .4byte gUnknown_02024AD0 -_08010F08: .4byte gBitTable -_08010F0C: .4byte gUnknown_02024A60 -_08010F10: .4byte 0x00016020 -_08010F14: .4byte 0xffff1fff -_08010F18: .4byte gUnknown_02024E60 -_08010F1C: .4byte gUnknown_02024E64 -_08010F20: .4byte gUnknown_02024BE6 -_08010F24: .4byte gBattleMoves -_08010F28: .4byte gUnknown_02024C34 -_08010F2C: .4byte gUnknown_02024C3C -_08010F30: .4byte gUnknown_02024C44 -_08010F34: .4byte gUnknown_02024C4C -_08010F38: .4byte gUnknown_02024C2C -_08010F3C: .4byte gUnknown_02024C5C -_08010F40: .4byte 0x000160ac -_08010F44: .4byte 0x00017100 - thumb_func_end sub_8010B88 - - thumb_func_start sub_8010F48 -sub_8010F48: @ 8010F48 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r4, 0 - ldr r7, _08011268 @ =gUnknown_02024A60 - ldr r0, _0801126C @ =gUnknown_02024C98 - mov r9, r0 - ldr r1, _08011270 @ =gUnknown_02024A68 - mov r8, r1 - ldr r2, _08011274 @ =0x02000000 - mov r12, r2 - ldr r6, _08011278 @ =gUnknown_02024D28 - adds r5, r7, 0 - movs r3, 0x58 - ldr r2, _0801127C @ =gBattleMons - adds r2, 0x18 - movs r1, 0x6 -_08010F70: - ldrb r0, [r5] - muls r0, r3 - adds r0, r4, r0 - adds r0, r2 - strb r1, [r0] - adds r4, 0x1 - cmp r4, 0x7 - ble _08010F70 - ldrb r1, [r7] - movs r0, 0x58 - muls r0, r1 - ldr r2, _0801127C @ =gBattleMons - adds r2, 0x50 - adds r0, r2 - movs r1, 0 - str r1, [r0] - ldrb r0, [r7] - lsls r0, 2 - add r0, r9 - str r1, [r0] - movs r4, 0 - mov r0, r8 - ldrb r0, [r0] - cmp r4, r0 - bge _08011012 - adds r3, r2, 0 - movs r5, 0 - ldr r1, _08011280 @ =gBitTable - mov r10, r1 - ldr r2, _08011274 @ =0x02000000 - mov r9, r2 -_08010FAE: - ldr r1, [r3] - movs r0, 0x80 - lsls r0, 19 - ands r0, r1 - cmp r0, 0 - beq _08010FCC - ldr r2, _08011284 @ =gUnknown_02024CA8 - adds r0, r5, r2 - ldrb r0, [r0, 0x14] - ldrb r2, [r7] - cmp r0, r2 - bne _08010FCC - ldr r0, _08011288 @ =0xfbffffff - ands r1, r0 - str r1, [r3] -_08010FCC: - ldrb r0, [r7] - lsls r0, 2 - add r0, r10 - ldr r0, [r0] - lsls r2, r0, 16 - ldr r1, [r3] - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - beq _08010FE4 - bics r1, r2 - str r1, [r3] -_08010FE4: - ldr r1, [r3] - movs r0, 0xE0 - lsls r0, 8 - ands r0, r1 - cmp r0, 0 - beq _08011004 - ldr r2, _0801128C @ =0x00016020 - adds r0, r4, r2 - add r0, r9 - ldrb r0, [r0] - ldrb r2, [r7] - cmp r0, r2 - bne _08011004 - ldr r0, _08011290 @ =0xffff1fff - ands r1, r0 - str r1, [r3] -_08011004: - adds r3, 0x58 - adds r5, 0x1C - adds r4, 0x1 - mov r0, r8 - ldrb r0, [r0] - cmp r4, r0 - blt _08010FAE -_08011012: - ldrb r0, [r7] - ldr r1, _08011294 @ =gUnknown_02024E60 - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldrb r0, [r7] - ldr r2, _08011298 @ =gUnknown_02024E64 - adds r0, r2 - strb r1, [r0] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r2, _08011284 @ =gUnknown_02024CA8 - adds r1, r0, r2 - movs r4, 0 - movs r2, 0 -_08011034: - adds r0, r1, r4 - strb r2, [r0] - adds r4, 0x1 - cmp r4, 0x1B - bls _08011034 - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x2 - negs r0, r0 - mov r9, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - mov r8, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x9 - negs r0, r0 - mov r10, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r5, 0x21 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r4, 0x41 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r2 - strb r0, [r1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1, 0x1] - mov r0, r9 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1, 0x1] - mov r0, r8 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1, 0x1] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r1, [r7] - lsls r1, 4 - adds r1, r6 - ldrb r2, [r1, 0x1] - movs r0, 0x19 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - lsls r0, 4 - adds r0, r6 - ldrb r1, [r0, 0x1] - ands r5, r1 - strb r5, [r0, 0x1] - ldrb r0, [r7] - lsls r0, 4 - adds r0, r6 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldrb r0, [r7] - lsls r0, 4 - adds r0, r6 - ldrb r1, [r0, 0x1] - ands r3, r1 - strb r3, [r0, 0x1] - ldrb r0, [r7] - lsls r0, 4 - adds r0, r6 - ldrb r1, [r0, 0x2] - mov r2, r9 - ands r2, r1 - strb r2, [r0, 0x2] - ldrb r0, [r7] - lsls r0, 4 - adds r0, r6 - ldrb r1, [r0, 0x2] - mov r2, r8 - ands r2, r1 - strb r2, [r0, 0x2] - ldrb r0, [r7] - lsls r0, 4 - adds r0, r6 - ldrb r1, [r0, 0x2] - movs r2, 0x5 - negs r2, r2 - ands r2, r1 - strb r2, [r0, 0x2] - ldrb r0, [r7] - lsls r0, 4 - adds r0, r6 - ldrb r1, [r0, 0x2] - mov r2, r10 - ands r2, r1 - strb r2, [r0, 0x2] - ldrb r1, [r7] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - ldr r1, _08011284 @ =gUnknown_02024CA8 - adds r0, r1 - movs r3, 0 - movs r1, 0x2 - strb r1, [r0, 0x16] - ldrb r0, [r7] - lsls r0, 1 - ldr r2, _0801129C @ =gUnknown_02024C34 - adds r0, r2 - movs r2, 0 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _080112A0 @ =gUnknown_02024C3C - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _080112A4 @ =gUnknown_02024C44 - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _080112A8 @ =gUnknown_02024C4C - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _080112AC @ =gUnknown_02024C2C - adds r0, r1 - strh r3, [r0] - ldrb r0, [r7] - ldr r1, _080112B0 @ =gUnknown_02024C5C - adds r0, r1 - movs r1, 0xFF - strb r1, [r0] - ldrb r0, [r7] - lsls r0, 1 - ldr r1, _080112B4 @ =0x000160e8 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - subs r1, 0x3D - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 1 - adds r1, 0x1 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x53 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x1 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x1 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldrb r0, [r7] - lsls r0, 2 - adds r1, 0x1 - adds r0, r1 - add r0, r12 - strb r2, [r0] - ldr r1, _080112B8 @ =0x00017100 - add r1, r12 - ldrb r0, [r7] - lsls r0, 2 - adds r0, r1 - str r3, [r0] - ldrb r0, [r7] - movs r3, 0x58 - adds r1, r0, 0 - muls r1, r3 - ldr r2, _0801127C @ =gBattleMons - adds r1, r2 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - ldr r2, _080112BC @ =gBaseStats - adds r0, r2 - ldrb r0, [r0, 0x6] - adds r1, 0x21 - strb r0, [r1] - ldrb r0, [r7] - adds r1, r0, 0 - muls r1, r3 - ldr r0, _0801127C @ =gBattleMons - adds r1, r0 - ldrh r2, [r1] - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - ldr r2, _080112BC @ =gBaseStats - adds r0, r2 - ldrb r0, [r0, 0x7] - adds r1, 0x22 - strb r0, [r1] - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011268: .4byte gUnknown_02024A60 -_0801126C: .4byte gUnknown_02024C98 -_08011270: .4byte gUnknown_02024A68 -_08011274: .4byte 0x02000000 -_08011278: .4byte gUnknown_02024D28 -_0801127C: .4byte gBattleMons -_08011280: .4byte gBitTable -_08011284: .4byte gUnknown_02024CA8 -_08011288: .4byte 0xfbffffff -_0801128C: .4byte 0x00016020 -_08011290: .4byte 0xffff1fff -_08011294: .4byte gUnknown_02024E60 -_08011298: .4byte gUnknown_02024E64 -_0801129C: .4byte gUnknown_02024C34 -_080112A0: .4byte gUnknown_02024C3C -_080112A4: .4byte gUnknown_02024C44 -_080112A8: .4byte gUnknown_02024C4C -_080112AC: .4byte gUnknown_02024C2C -_080112B0: .4byte gUnknown_02024C5C -_080112B4: .4byte 0x000160e8 -_080112B8: .4byte 0x00017100 -_080112BC: .4byte gBaseStats - thumb_func_end sub_8010F48 - - thumb_func_start bc_8012FAC -bc_8012FAC: @ 80112C0 - push {r4,r5,lr} - ldr r5, _080112D0 @ =gUnknown_02024D1E - ldrb r0, [r5] - cmp r0, 0 - beq _080112D4 - cmp r0, 0x1 - beq _080112F8 - b _0801132E - .align 2, 0 -_080112D0: .4byte gUnknown_02024D1E -_080112D4: - ldr r4, _080112F4 @ =gUnknown_02024A60 - ldrb r0, [r5, 0x1] - strb r0, [r4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl dp01_build_cmdbuf_x00_a_b_0 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _0801132E - .align 2, 0 -_080112F4: .4byte gUnknown_02024A60 -_080112F8: - ldr r0, _0801131C @ =gUnknown_02024A64 - ldr r2, [r0] - cmp r2, 0 - bne _0801132E - ldrb r0, [r5, 0x1] - adds r0, 0x1 - strb r0, [r5, 0x1] - ldr r1, _08011320 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _0801132C - ldr r1, _08011324 @ =gUnknown_030042D4 - ldr r0, _08011328 @ =bc_load_battlefield - str r0, [r1] - b _0801132E - .align 2, 0 -_0801131C: .4byte gUnknown_02024A64 -_08011320: .4byte gUnknown_02024A68 -_08011324: .4byte gUnknown_030042D4 -_08011328: .4byte bc_load_battlefield -_0801132C: - strb r2, [r5] -_0801132E: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end bc_8012FAC - - thumb_func_start bc_load_battlefield -bc_load_battlefield: @ 8011334 - push {r4,r5,lr} - ldr r0, _0801136C @ =gUnknown_02024A64 - ldr r5, [r0] - cmp r5, 0 - bne _08011364 - movs r0, 0 - bl battle_get_side_with_given_state - ldr r4, _08011370 @ =gUnknown_02024A60 - strb r0, [r4] - ldr r0, _08011374 @ =gBattleTerrain - ldrb r1, [r0] - movs r0, 0 - bl dp01_build_cmdbuf_x2E_a - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldr r1, _08011378 @ =gUnknown_030042D4 - ldr r0, _0801137C @ =sub_8011384 - str r0, [r1] - ldr r0, _08011380 @ =gUnknown_02024D1E - strb r5, [r0] - strb r5, [r0, 0x1] -_08011364: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0801136C: .4byte gUnknown_02024A64 -_08011370: .4byte gUnknown_02024A60 -_08011374: .4byte gBattleTerrain -_08011378: .4byte gUnknown_030042D4 -_0801137C: .4byte sub_8011384 -_08011380: .4byte gUnknown_02024D1E - thumb_func_end bc_load_battlefield - - thumb_func_start sub_8011384 -sub_8011384: @ 8011384 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _080113E0 @ =gUnknown_02024A64 - ldr r1, [r0] - cmp r1, 0 - beq _08011396 - b _080115DA -_08011396: - ldr r2, _080113E4 @ =gUnknown_02024A60 - strb r1, [r2] - ldr r0, _080113E8 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r1, r0 - bcc _080113A4 - b _080115D4 -_080113A4: - movs r7, 0x58 - ldr r0, _080113EC @ =gBattleMons - mov r9, r0 - mov r8, r2 -_080113AC: - ldr r0, _080113F0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080113F4 - ldr r4, _080113E4 @ =gUnknown_02024A60 - ldrb r0, [r4] - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _080113F4 - ldrb r0, [r4] - muls r0, r7 - mov r1, r9 - adds r3, r0, r1 - movs r2, 0 - movs r1, 0 -_080113D2: - adds r0, r3, r2 - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _080113D2 - b _080114BE - .align 2, 0 -_080113E0: .4byte gUnknown_02024A64 -_080113E4: .4byte gUnknown_02024A60 -_080113E8: .4byte gUnknown_02024A68 -_080113EC: .4byte gBattleMons -_080113F0: .4byte gBattleTypeFlags -_080113F4: - mov r2, r8 - ldrb r0, [r2] - muls r0, r7 - mov r1, r9 - adds r3, r0, r1 - movs r2, 0 - ldr r6, _08011530 @ =gBaseStats - ldr r5, _08011534 @ =gUnknown_02024260 - ldr r4, _08011538 @ =gUnknown_02024A60 -_08011406: - adds r0, r3, r2 - ldrb r1, [r4] - lsls r1, 9 - adds r1, 0x4 - adds r1, r2, r1 - adds r1, r5 - ldrb r1, [r1] - strb r1, [r0] - adds r2, 0x1 - cmp r2, 0x57 - bls _08011406 - mov r2, r8 - ldrb r0, [r2] - adds r2, r0, 0 - muls r2, r7 - add r2, r9 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x6] - adds r2, 0x21 - strb r0, [r2] - mov r1, r8 - ldrb r0, [r1] - adds r2, r0, 0 - muls r2, r7 - add r2, r9 - ldrh r1, [r2] - lsls r0, r1, 3 - subs r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0, 0x7] - adds r2, 0x22 - strb r0, [r2] - mov r2, r8 - ldrb r0, [r2] - adds r1, r0, 0 - muls r1, r7 - add r1, r9 - ldrh r0, [r1] - ldrb r1, [r1, 0x17] - lsrs r1, 7 - bl GetAbilityBySpecies - mov r2, r8 - ldrb r1, [r2] - muls r1, r7 - add r1, r9 - adds r1, 0x20 - strb r0, [r1] - ldrb r0, [r2] - bl battle_side_get_owner - lsls r0, 24 - lsrs r0, 23 - ldr r1, _0801153C @ =0x020160bc - adds r0, r1 - mov r2, r8 - ldrb r1, [r2] - muls r1, r7 - add r1, r9 - ldrh r1, [r1, 0x28] - strh r1, [r0] - movs r2, 0 - ldr r4, _08011538 @ =gUnknown_02024A60 - movs r5, 0x58 - ldr r1, _08011540 @ =gUnknown_02024A98 - adds r6, r4, 0 - movs r0, 0x18 - negs r0, r0 - adds r0, r1 - mov r12, r0 - movs r3, 0x6 -_0801149E: - ldrb r0, [r4] - muls r0, r5 - adds r0, r2, r0 - adds r0, r1 - strb r3, [r0] - adds r2, 0x1 - cmp r2, 0x7 - ble _0801149E - ldrb r0, [r6] - adds r1, r0, 0 - muls r1, r7 - mov r0, r12 - adds r0, 0x50 - adds r1, r0 - movs r0, 0 - str r0, [r1] -_080114BE: - ldr r4, _08011538 @ =gUnknown_02024A60 - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - cmp r0, 0 - bne _080114D8 - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_080114D8: - ldr r5, _08011544 @ =gBattleTypeFlags - ldrh r1, [r5] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _0801154C - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080114FE - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_080114FE: - ldrb r0, [r4] - bl battle_side_get_owner - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08011588 - ldrh r1, [r5] - ldr r2, _08011548 @ =0x00000902 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08011588 - ldrb r0, [r4] - muls r0, r7 - add r0, r9 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl sub_8090D90 - b _08011588 - .align 2, 0 -_08011530: .4byte gBaseStats -_08011534: .4byte gUnknown_02024260 -_08011538: .4byte gUnknown_02024A60 -_0801153C: .4byte 0x020160bc -_08011540: .4byte gUnknown_02024A98 -_08011544: .4byte gBattleTypeFlags -_08011548: .4byte 0x00000902 -_0801154C: - ldrb r0, [r4] - bl battle_side_get_owner - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08011588 - ldrh r1, [r5] - ldr r2, _080115E8 @ =0x00000902 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08011588 - ldrb r0, [r4] - muls r0, r7 - add r0, r9 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl sub_8090D90 - movs r0, 0 - bl dp01_build_cmdbuf_x04_4_4_4 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_08011588: - ldr r0, _080115EC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080115BE - ldr r4, _080115F0 @ =gUnknown_02024A60 - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080115B2 - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _080115BE -_080115B2: - movs r0, 0 - bl dp01_build_cmdbuf_x07_7_7_7 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_080115BE: - mov r1, r8 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, _080115F4 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcs _080115D4 - b _080113AC -_080115D4: - ldr r1, _080115F8 @ =gUnknown_030042D4 - ldr r0, _080115FC @ =bc_801333C - str r0, [r1] -_080115DA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080115E8: .4byte 0x00000902 -_080115EC: .4byte gBattleTypeFlags -_080115F0: .4byte gUnknown_02024A60 -_080115F4: .4byte gUnknown_02024A68 -_080115F8: .4byte gUnknown_030042D4 -_080115FC: .4byte bc_801333C - thumb_func_end sub_8011384 - - thumb_func_start bc_801333C -bc_801333C: @ 8011600 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - ldr r0, _08011658 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - beq _08011612 - b _0801178C -_08011612: - ldr r0, _0801165C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08011620 - b _0801172C -_08011620: - movs r7, 0 - add r0, sp, 0x4 - mov r8, r0 - mov r6, r8 - mov r5, sp -_0801162A: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08011660 @ =gEnemyParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08011650 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _08011668 -_08011650: - ldr r0, _08011664 @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0801167A - .align 2, 0 -_08011658: .4byte gUnknown_02024A64 -_0801165C: .4byte gBattleTypeFlags -_08011660: .4byte gEnemyParty -_08011664: .4byte 0x0000ffff -_08011668: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0801167A: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _0801162A - movs r0, 0x1 - bl battle_get_side_with_given_state - ldr r4, _080116D4 @ =gUnknown_02024A60 - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl dp01_build_cmdbuf_x30_TODO - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - movs r7, 0 - mov r6, r8 - mov r5, sp -_080116A6: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _080116D8 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _080116CC - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _080116E0 -_080116CC: - ldr r0, _080116DC @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _080116F2 - .align 2, 0 -_080116D4: .4byte gUnknown_02024A60 -_080116D8: .4byte gPlayerParty -_080116DC: .4byte 0x0000ffff -_080116E0: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_080116F2: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _080116A6 - movs r0, 0 - bl battle_get_side_with_given_state - ldr r4, _08011720 @ =gUnknown_02024A60 - strb r0, [r4] - movs r0, 0 - mov r1, sp - movs r2, 0x80 - bl dp01_build_cmdbuf_x30_TODO - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution - ldr r1, _08011724 @ =gUnknown_030042D4 - ldr r0, _08011728 @ =bc_battle_begin_message - b _0801178A - .align 2, 0 -_08011720: .4byte gUnknown_02024A60 -_08011724: .4byte gUnknown_030042D4 -_08011728: .4byte bc_battle_begin_message -_0801172C: - movs r7, 0 - add r6, sp, 0x4 - mov r5, sp -_08011732: - movs r0, 0x64 - adds r1, r7, 0 - muls r1, r0 - ldr r0, _08011760 @ =gPlayerParty - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - cmp r0, 0 - beq _08011758 - adds r0, r4, 0 - movs r1, 0x41 - bl GetMonData - movs r1, 0xCE - lsls r1, 1 - cmp r0, r1 - bne _08011768 -_08011758: - ldr r0, _08011764 @ =0x0000ffff - strh r0, [r5] - movs r0, 0 - b _0801177A - .align 2, 0 -_08011760: .4byte gPlayerParty -_08011764: .4byte 0x0000ffff -_08011768: - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - strh r0, [r5] - adds r0, r4, 0 - movs r1, 0x37 - bl GetMonData -_0801177A: - str r0, [r6] - adds r6, 0x8 - adds r5, 0x8 - adds r7, 0x1 - cmp r7, 0x5 - ble _08011732 - ldr r1, _08011798 @ =gUnknown_030042D4 - ldr r0, _0801179C @ =bc_8013568 -_0801178A: - str r0, [r1] -_0801178C: - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011798: .4byte gUnknown_030042D4 -_0801179C: .4byte bc_8013568 - thumb_func_end bc_801333C - - thumb_func_start bc_battle_begin_message -bc_battle_begin_message: @ 80117A0 - push {lr} - ldr r0, _080117C8 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - bne _080117C2 - movs r0, 0x1 - bl battle_get_side_with_given_state - ldr r1, _080117CC @ =gUnknown_02024A60 - strb r0, [r1] - ldrb r1, [r1] - movs r0, 0 - bl b_std_message - ldr r1, _080117D0 @ =gUnknown_030042D4 - ldr r0, _080117D4 @ =sub_8011800 - str r0, [r1] -_080117C2: - pop {r0} - bx r0 - .align 2, 0 -_080117C8: .4byte gUnknown_02024A64 -_080117CC: .4byte gUnknown_02024A60 -_080117D0: .4byte gUnknown_030042D4 -_080117D4: .4byte sub_8011800 - thumb_func_end bc_battle_begin_message - - thumb_func_start bc_8013568 -bc_8013568: @ 80117D8 - push {lr} - ldr r0, _080117F4 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - bne _080117F0 - ldr r1, _080117F8 @ =gUnknown_030042D4 - ldr r0, _080117FC @ =sub_8011970 - str r0, [r1] - movs r0, 0 - movs r1, 0 - bl b_std_message -_080117F0: - pop {r0} - bx r0 - .align 2, 0 -_080117F4: .4byte gUnknown_02024A64 -_080117F8: .4byte gUnknown_030042D4 -_080117FC: .4byte sub_8011970 - thumb_func_end bc_8013568 - - thumb_func_start sub_8011800 -sub_8011800: @ 8011800 - push {lr} - ldr r0, _08011828 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - bne _08011822 - movs r0, 0x1 - bl battle_get_side_with_given_state - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl b_std_message - ldr r1, _0801182C @ =gUnknown_030042D4 - ldr r0, _08011830 @ =sub_8011834 - str r0, [r1] -_08011822: - pop {r0} - bx r0 - .align 2, 0 -_08011828: .4byte gUnknown_02024A64 -_0801182C: .4byte gUnknown_030042D4 -_08011830: .4byte sub_8011834 - thumb_func_end sub_8011800 - - thumb_func_start sub_8011834 -sub_8011834: @ 8011834 - push {r4,lr} - ldr r0, _080118AC @ =gUnknown_02024A64 - ldr r1, [r0] - cmp r1, 0 - bne _080118A4 - ldr r2, _080118B0 @ =gUnknown_02024A60 - strb r1, [r2] - ldr r0, _080118B4 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r1, r0 - bcs _0801189E - adds r4, r2, 0 -_0801184C: - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08011866 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_08011866: - ldr r0, _080118B8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0801188C - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0801188C - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_0801188C: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _080118B4 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _0801184C -_0801189E: - ldr r1, _080118BC @ =gUnknown_030042D4 - ldr r0, _080118C0 @ =bc_801362C - str r0, [r1] -_080118A4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080118AC: .4byte gUnknown_02024A64 -_080118B0: .4byte gUnknown_02024A60 -_080118B4: .4byte gUnknown_02024A68 -_080118B8: .4byte gBattleTypeFlags -_080118BC: .4byte gUnknown_030042D4 -_080118C0: .4byte bc_801362C - thumb_func_end sub_8011834 - - thumb_func_start bc_801362C -bc_801362C: @ 80118C4 - push {r4,r5,lr} - ldr r0, _08011930 @ =gUnknown_02024A64 - ldr r1, [r0] - cmp r1, 0 - bne _0801192A - ldr r2, _08011934 @ =gUnknown_02024A60 - strb r1, [r2] - ldr r0, _08011938 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r1, r0 - bcs _08011924 - adds r4, r2, 0 - ldr r5, _0801193C @ =gBattleMons -_080118DE: - ldrb r0, [r4] - bl battle_side_get_owner - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08011912 - ldr r0, _08011940 @ =gBattleTypeFlags - ldrh r1, [r0] - ldr r2, _08011944 @ =0x00000902 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08011912 - ldrb r1, [r4] - movs r0, 0x58 - muls r0, r1 - adds r0, r5 - ldrh r0, [r0] - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x2 - bl sub_8090D90 -_08011912: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08011938 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _080118DE -_08011924: - ldr r1, _08011948 @ =gUnknown_030042D4 - ldr r0, _0801194C @ =sub_8011970 - str r0, [r1] -_0801192A: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08011930: .4byte gUnknown_02024A64 -_08011934: .4byte gUnknown_02024A60 -_08011938: .4byte gUnknown_02024A68 -_0801193C: .4byte gBattleMons -_08011940: .4byte gBattleTypeFlags -_08011944: .4byte 0x00000902 -_08011948: .4byte gUnknown_030042D4 -_0801194C: .4byte sub_8011970 - thumb_func_end bc_801362C - - thumb_func_start unref_sub_8011950 -unref_sub_8011950: @ 8011950 - push {lr} - ldr r0, _08011964 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - bne _08011960 - ldr r1, _08011968 @ =gUnknown_030042D4 - ldr r0, _0801196C @ =sub_8011970 - str r0, [r1] -_08011960: - pop {r0} - bx r0 - .align 2, 0 -_08011964: .4byte gUnknown_02024A64 -_08011968: .4byte gUnknown_030042D4 -_0801196C: .4byte sub_8011970 - thumb_func_end unref_sub_8011950 - - thumb_func_start sub_8011970 -sub_8011970: @ 8011970 - push {lr} - ldr r0, _080119A4 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - bne _0801199E - ldr r0, _080119A8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08011998 - movs r0, 0 - bl battle_get_side_with_given_state - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x1 - bl b_std_message -_08011998: - ldr r1, _080119AC @ =gUnknown_030042D4 - ldr r0, _080119B0 @ =sub_80119B4 - str r0, [r1] -_0801199E: - pop {r0} - bx r0 - .align 2, 0 -_080119A4: .4byte gUnknown_02024A64 -_080119A8: .4byte gBattleTypeFlags -_080119AC: .4byte gUnknown_030042D4 -_080119B0: .4byte sub_80119B4 - thumb_func_end sub_8011970 - - thumb_func_start sub_80119B4 -sub_80119B4: @ 80119B4 - push {r4,lr} - ldr r0, _08011A40 @ =gUnknown_02024A64 - ldr r1, [r0] - cmp r1, 0 - bne _08011A38 - ldr r2, _08011A44 @ =gUnknown_02024A60 - strb r1, [r2] - ldr r0, _08011A48 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r1, r0 - bcs _08011A1C - adds r4, r2, 0 -_080119CC: - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - cmp r0, 0 - bne _080119E4 - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_080119E4: - ldr r0, _08011A4C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08011A0A - ldrb r0, [r4] - bl battle_get_per_side_status - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08011A0A - movs r0, 0 - bl dp01_build_cmdbuf_x2F_2F_2F_2F - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_08011A0A: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08011A48 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _080119CC -_08011A1C: - ldr r1, _08011A50 @ =0x02000000 - ldr r2, _08011A54 @ =0x00016058 - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - ldr r3, _08011A58 @ =0x000160f9 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, _08011A5C @ =0x000160e6 - adds r1, r0 - strb r2, [r1] - ldr r1, _08011A60 @ =gUnknown_030042D4 - ldr r0, _08011A64 @ =sub_8011B00 - str r0, [r1] -_08011A38: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08011A40: .4byte gUnknown_02024A64 -_08011A44: .4byte gUnknown_02024A60 -_08011A48: .4byte gUnknown_02024A68 -_08011A4C: .4byte gBattleTypeFlags -_08011A50: .4byte 0x02000000 -_08011A54: .4byte 0x00016058 -_08011A58: .4byte 0x000160f9 -_08011A5C: .4byte 0x000160e6 -_08011A60: .4byte gUnknown_030042D4 -_08011A64: .4byte sub_8011B00 - thumb_func_end sub_80119B4 - - thumb_func_start unref_sub_8011A68 -unref_sub_8011A68: @ 8011A68 - push {r4,r5,lr} - ldr r0, _08011AD8 @ =gUnknown_02024A64 - ldr r1, [r0] - cmp r1, 0 - bne _08011AD2 - ldr r2, _08011ADC @ =gUnknown_02024A60 - strb r1, [r2] - ldr r0, _08011AE0 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r1, r0 - bcs _08011AB6 - adds r4, r2, 0 - ldr r5, _08011AE4 @ =gUnknown_02024A6A -_08011A82: - ldrb r0, [r4] - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _08011AA4 - ldrb r0, [r4] - lsls r0, 1 - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - bl sub_800C704 - ldrb r0, [r4] - bl dp01_battle_side_mark_buffer_for_execution -_08011AA4: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08011AE0 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08011A82 -_08011AB6: - ldr r1, _08011AE8 @ =0x02000000 - ldr r2, _08011AEC @ =0x00016058 - adds r0, r1, r2 - movs r2, 0 - strb r2, [r0] - ldr r3, _08011AF0 @ =0x000160f9 - adds r0, r1, r3 - strb r2, [r0] - ldr r0, _08011AF4 @ =0x000160e6 - adds r1, r0 - strb r2, [r1] - ldr r1, _08011AF8 @ =gUnknown_030042D4 - ldr r0, _08011AFC @ =sub_8011B00 - str r0, [r1] -_08011AD2: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08011AD8: .4byte gUnknown_02024A64 -_08011ADC: .4byte gUnknown_02024A60 -_08011AE0: .4byte gUnknown_02024A68 -_08011AE4: .4byte gUnknown_02024A6A -_08011AE8: .4byte 0x02000000 -_08011AEC: .4byte 0x00016058 -_08011AF0: .4byte 0x000160f9 -_08011AF4: .4byte 0x000160e6 -_08011AF8: .4byte gUnknown_030042D4 -_08011AFC: .4byte sub_8011B00 - thumb_func_end unref_sub_8011A68 - thumb_func_start sub_8011B00 sub_8011B00: @ 8011B00 push {r4-r7,lr} diff --git a/include/battle.h b/include/battle.h index f05c7369d..be474b59f 100644 --- a/include/battle.h +++ b/include/battle.h @@ -124,17 +124,22 @@ struct BattleStruct /* 0x2000000 */ struct UnknownStruct4 { - u8 filler0[0x3]; - u16 unk4; - u16 unk6; - u8 unk8; - u8 unk9; - u8 fillerA[0x9]; - u8 taunt:4; - u8 unkC:4; - u8 fillerD[0x2]; - u8 unk16; - u8 filler17[0x4]; + /*0x00*/ u8 filler0[0x3]; + /*0x04*/ u16 unk4; + /*0x06*/ u16 unk6; + /*0x08*/ u8 unk8; + /*0x09*/ u8 unk9; + /*0x0A*/ u8 unkA; + u8 fillerB[4]; + u8 unkF_0:4; + u8 unkF_4:4; + u8 filler10[3]; + /*0x13*/ u8 taunt:4; + /*0x13*/ u8 unkC:4; + /*0x14*/ u8 unk14; + /*0x15*/ u8 unk15; + /*0x16*/ u8 unk16; + /*0x17*/ u8 filler17[0x4]; }; extern struct UnknownStruct1 unk_2016A00; diff --git a/src/battle_2.c b/src/battle_2.c index 6176574e6..2c92bcb30 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -107,6 +107,36 @@ struct UnknownStruct11 u8 unk36[10]; }; +struct UnknownStruct12 +{ + u32 unk0; + u8 filler4[0x54]; +}; + +struct UnknownStruct13 +{ + u32 unk0_0:1; + u32 unk0_1:1; + u32 unk0_2:1; + u32 unk0_3:1; + u32 unk0_4:1; + u32 unk0_5:1; + u32 unk0_6:1; + u32 unk0_7:1; + u32 unk1_0:1; + u32 unk1_1:1; + u32 unk1_2:1; + u32 unk1_3:2; + u32 unk1_5:1; + u32 unk1_6:1; + u32 unk1_7:1; + u32 unk2_0:1; + u32 unk2_1:1; + u32 unk2_2:1; + u32 unk2_3:1; + u8 filler4[12]; +}; + extern const struct UnknownStruct5 gUnknown_081F9674; extern const u8 gUnknown_081F96C8[]; extern void *const gUnknown_081FAF4C[]; @@ -117,13 +147,16 @@ extern const struct BattleMove gBattleMoves[]; extern const struct MonCoords gMonFrontPicCoords[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; extern const struct BaseStats gBaseStats[]; +extern const u32 gBitTable[]; extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) #define ewram16002 (ewram[0x16002]) #define ewram1601B (ewram[0x1601B]) +#define ewram16020 ((u8 *)(ewram + 0x16020)) #define ewram16056 (ewram[0x16056]) +#define ewram16058 (ewram[0x16058]) #define ewram16078 (ewram[0x16078]) #define ewram16084 (ewram[0x16084]) #define ewram16086 (ewram[0x16086]) @@ -132,12 +165,15 @@ extern u8 ewram[]; #define ewram16089 (ewram[0x16089]) #define ewram160A1 (ewram[0x160A1]) #define ewram160AC ((u8 *)(ewram + 0x160AC)) +#define ewram160BC ((u16 *)(ewram + 0x160BC)) // hp #define ewram160C8 (ewram[0x160C8]) #define ewram160C9 (ewram[0x160C9]) #define ewram160CB (ewram[0x160CB]) #define ewram160CC ((u8 *)(ewram + 0x160CC)) +#define ewram160E6 (ewram[0x160E6]) #define ewram160E8 ((u8 *)(ewram + 0x160E8)) #define ewram160F0 ((u8 *)(ewram + 0x160F0)) +#define ewram160F9 (ewram[0x160F9]) #define ewram16100 ((u8 *)(ewram + 0x16100)) #define ewram16108 ((u8 *)(ewram + 0x16108)) #define ewram16113 (ewram[0x16113]) @@ -149,11 +185,14 @@ extern u8 ewram[]; #define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000)) extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; +extern u8 gUnknown_02024260[][0x200]; extern u8 gUnknown_02024A60; extern u32 gUnknown_02024A64; extern u8 gUnknown_02024A68; extern u16 gUnknown_02024A6A[]; +extern struct UnknownStruct12 gUnknown_02024AD0[]; extern u8 gUnknown_02024BE0[]; +extern u16 gUnknown_02024BE6; extern u8 gUnknown_02024C0C; extern u8 gUnknown_02024C0E; extern u16 gUnknown_02024C2C[]; @@ -174,8 +213,11 @@ extern u16 gUnknown_02024D1A; extern u8 gUnknown_02024D1E[]; extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is. extern u8 gUnknown_02024D26; +extern struct UnknownStruct13 gUnknown_02024D28[]; extern u8 gUnknown_02024DBC[]; extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E60[]; +extern u8 gUnknown_02024E64[]; extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B4; extern u16 gUnknown_030041B8; @@ -211,6 +253,7 @@ extern u8 gPlayerMonIndex; extern u8 gEnemyMonIndex; extern u16 gBattleWeather; extern u32 gBattleMoveDamage; +extern struct BattlePokemon gBattleMons[]; extern void sub_800B858(void); extern void dp12_8087EA4(void); @@ -230,6 +273,16 @@ extern void sub_800D74C(); extern void sub_804777C(u8); extern void sub_8043DFC(); extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); +extern void dp01_build_cmdbuf_x00_a_b_0(u8 a, u8 b, u8 c); +extern void dp01_build_cmdbuf_x04_4_4_4(u8 a); +extern void dp01_build_cmdbuf_x07_7_7_7(u8 a); +extern void dp01_build_cmdbuf_x2E_a(u8 a, u8 b); +extern void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a); +extern void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); +extern void dp01_battle_side_mark_buffer_for_execution(); +extern u8 sub_8090D90(); +extern void b_std_message(); +extern void sub_800C704(u8, u8, u8); void sub_800E7F8(void); void sub_800EC9C(void); @@ -253,6 +306,17 @@ void nullsub_86(struct Sprite *); void objc_dp11b_pingpong(struct Sprite *); void sub_8010874(void); void bc_8012FAC(void); +void bc_load_battlefield(void); +void sub_8011384(void); +void bc_801333C(void); +void bc_battle_begin_message(void); +void bc_8013568(void); +void sub_8011800(void); +void sub_8011834(void); +void bc_801362C(void); +void sub_8011970(void); +void sub_80119B4(void); +void sub_8011B00(void); void sub_801365C(u8); void sub_801377C(void); @@ -1737,3 +1801,477 @@ void sub_8010874(void) gUnknown_030042E0.unk2A[i] = 0; } } + +void sub_8010B88(void) +{ + struct UnknownStruct4 sp0 = gUnknown_02024CA8[gUnknown_02024A60]; + s32 i; + u8 *ptr; + u32 *ptr2; + + if (gBattleMoves[gUnknown_02024BE6].effect != 0x7F) + { + for (i = 0; i < 8; i++) + gBattleMons[gUnknown_02024A60].statStages[i] = 6; + for (i = 0; i < gUnknown_02024A68; i++) + { + struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i]; + + if ((sp20->unk0 & 0x04000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60) + sp20->unk0 &= ~0x04000000; + if ((gUnknown_02024C98[i] & 0x18) && gUnknown_02024CA8[i].unk15 == gUnknown_02024A60) + { + gUnknown_02024C98[i] &= ~0x18; + gUnknown_02024CA8[i].unk15 = 0; + } + } + } + if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F) + { + gBattleMons[gUnknown_02024A60].status2 &= 0x15100007; + gUnknown_02024C98[gUnknown_02024A60] &= 0x3043F; + + for (i = 0; i < gUnknown_02024A68; i++) + { + if (battle_side_get_owner(gUnknown_02024A60) != battle_side_get_owner(i) + && (gUnknown_02024C98[i] & 0x18) != 0 + && (gUnknown_02024CA8[i].unk15 == gUnknown_02024A60)) + { + gUnknown_02024C98[i] &= ~0x18; + gUnknown_02024C98[i] |= 0x10; + } + } + } + else + { + gBattleMons[gUnknown_02024A60].status2 = 0; + gUnknown_02024C98[gUnknown_02024A60] = 0; + } + + for (i = 0; i < gUnknown_02024A68; i++) + { + if (gUnknown_02024AD0[i].unk0 & (gBitTable[gUnknown_02024A60] << 16)) + gUnknown_02024AD0[i].unk0 &= ~(gBitTable[gUnknown_02024A60] << 16); + if ((gUnknown_02024AD0[i].unk0 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60) + gUnknown_02024AD0[i].unk0 &= ~0xE000; + } + + gUnknown_02024E60[gUnknown_02024A60] = 0; + gUnknown_02024E64[gUnknown_02024A60] = 0; + + ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60]; + for (i = 0; i < (u32)0x1C; i++) + ptr[i] = 0; + + if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F) + { + gUnknown_02024CA8[gUnknown_02024A60].unkA = sp0.unkA; + gUnknown_02024CA8[gUnknown_02024A60].unk15 = sp0.unk15; + gUnknown_02024CA8[gUnknown_02024A60].unkF_0 = sp0.unkF_0; + gUnknown_02024CA8[gUnknown_02024A60].unkF_4 = sp0.unkF_4; + } + + gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2; + gUnknown_02024C34[gUnknown_02024A60] = 0; + gUnknown_02024C3C[gUnknown_02024A60] = 0; + gUnknown_02024C44[gUnknown_02024A60] = 0; + gUnknown_02024C4C[gUnknown_02024A60] = 0; + gUnknown_02024C2C[gUnknown_02024A60] = 0; + gUnknown_02024C5C[gUnknown_02024A60] = 0xFF; + + ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0; + ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0; + ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0; + ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0; + + ptr2 = (u32 *)(ewram + 0x17100); + ptr2[gUnknown_02024A60] = 0; + + gUnknown_02024BE6 = 0; +} + +void sub_8010F48(void) +{ + s32 i; + u8 *ptr; + u32 *ptr2; + + for (i = 0; i < 8; i++) + gBattleMons[gUnknown_02024A60].statStages[i] = 6; + gBattleMons[gUnknown_02024A60].status2 = 0; + gUnknown_02024C98[gUnknown_02024A60] = 0; + for (i = 0; i < gUnknown_02024A68; i++) + { + if ((gBattleMons[i].status2 & 0x4000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60) + gBattleMons[i].status2 &= ~0x4000000; + if (gBattleMons[i].status2 & (gBitTable[gUnknown_02024A60] << 16)) + gBattleMons[i].status2 &= ~(gBitTable[gUnknown_02024A60] << 16); + if ((gBattleMons[i].status2 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60) + gBattleMons[i].status2 &= ~0xE000; + } + gUnknown_02024E60[gUnknown_02024A60] = 0; + gUnknown_02024E64[gUnknown_02024A60] = 0; + + ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60]; + for (i = 0; i < (u32)0x1C; i++) + ptr[i] = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_0 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_1 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_2 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_3 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_4 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_5 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_6 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk0_7 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk1_0 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk1_1 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk1_2 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk1_3 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk1_5 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk1_6 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk1_7 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk2_0 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk2_1 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk2_2 = 0; + gUnknown_02024D28[gUnknown_02024A60].unk2_3 = 0; + + gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2; + gUnknown_02024C34[gUnknown_02024A60] = 0; + gUnknown_02024C3C[gUnknown_02024A60] = 0; + gUnknown_02024C44[gUnknown_02024A60] = 0; + gUnknown_02024C4C[gUnknown_02024A60] = 0; + gUnknown_02024C2C[gUnknown_02024A60] = 0; + gUnknown_02024C5C[gUnknown_02024A60] = 0xFF; + + ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0; + ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0; + ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0; + ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0; + ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0; + + ptr2 = (u32 *)(ewram + 0x17100); + ptr2[gUnknown_02024A60] = 0; + + gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1; + gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2; +} + +void bc_8012FAC(void) +{ + switch (gUnknown_02024D1E[0]) + { + case 0: + gUnknown_02024A60 = gUnknown_02024D1E[1]; + dp01_build_cmdbuf_x00_a_b_0(0, 0, 0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + gUnknown_02024D1E[0]++; + break; + case 1: + if (gUnknown_02024A64 == 0) + { + gUnknown_02024D1E[1]++; + if (gUnknown_02024D1E[1] == gUnknown_02024A68) + gUnknown_030042D4 = bc_load_battlefield; + else + gUnknown_02024D1E[0] = 0; + } + break; + } +} + +void bc_load_battlefield(void) +{ + if (gUnknown_02024A64 == 0) + { + gUnknown_02024A60 = battle_get_side_with_given_state(0); + dp01_build_cmdbuf_x2E_a(0, gBattleTerrain); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + gUnknown_030042D4 = sub_8011384; + gUnknown_02024D1E[0] = 0; + gUnknown_02024D1E[1] = 0; + } +} + +void sub_8011384(void) +{ + u8 *ptr; + s32 i; + + if (gUnknown_02024A64 == 0) + { + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + { + if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) + && battle_side_get_owner(gUnknown_02024A60) == 0) + { + ptr = (u8 *)&gBattleMons[gUnknown_02024A60]; + for (i = 0; i < (u32)0x58; i++) + ptr[i] = 0; + } + else + { + u8 r0; + + ptr = (u8 *)&gBattleMons[gUnknown_02024A60]; + for (i = 0; i < (u32)0x58; i++) + ptr[i] = gUnknown_02024260[gUnknown_02024A60][4 + i]; + + gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1; + gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2; + gBattleMons[gUnknown_02024A60].ability = GetAbilityBySpecies(gBattleMons[gUnknown_02024A60].species, gBattleMons[gUnknown_02024A60].altAbility); + r0 = battle_side_get_owner(gUnknown_02024A60); + ewram160BC[r0] = gBattleMons[gUnknown_02024A60].hp; + for (i = 0; i < 8; i++) + gBattleMons[gUnknown_02024A60].statStages[i] = 6; + gBattleMons[gUnknown_02024A60].status2 = 0; + } + + if (battle_get_per_side_status(gUnknown_02024A60) == 0) + { + dp01_build_cmdbuf_x07_7_7_7(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (battle_get_per_side_status(gUnknown_02024A60) == 1) + { + dp01_build_cmdbuf_x07_7_7_7(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + if (battle_side_get_owner(gUnknown_02024A60) == 1 + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) + sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + } + else + { + if (battle_side_get_owner(gUnknown_02024A60) == 1 + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) + { + sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + dp01_build_cmdbuf_x04_4_4_4(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + } + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + if (battle_get_per_side_status(gUnknown_02024A60) == 2 + || battle_get_per_side_status(gUnknown_02024A60) == 3) + { + dp01_build_cmdbuf_x07_7_7_7(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + } + } + gUnknown_030042D4 = bc_801333C; + } +} + +void bc_801333C(void) +{ + s32 i; + + if (gUnknown_02024A64 == 0) + { + struct + { + u16 hp; + u32 status; + } sp0[6]; + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + for (i = 0; i < 6; i++) + { + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == 0 + || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + sp0[i].hp = 0xFFFF; + sp0[i].status = 0; + } + else + { + sp0[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP); + sp0[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); + } + } + gUnknown_02024A60 = battle_get_side_with_given_state(1); + dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == 0 + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + sp0[i].hp = 0xFFFF; + sp0[i].status = 0; + } + else + { + sp0[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + sp0[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + gUnknown_02024A60 = battle_get_side_with_given_state(0); + dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + + gUnknown_030042D4 = bc_battle_begin_message; + } + else + { + // The array gets set here, but nothing is ever done with it. + // Likely unfinished code. + + for (i = 0; i < 6; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == 0 + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + sp0[i].hp = 0xFFFF; + sp0[i].status = 0; + } + else + { + sp0[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + sp0[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + + gUnknown_030042D4 = bc_8013568; + } + } +} + +void bc_battle_begin_message(void) +{ + if (gUnknown_02024A64 == 0) + { + gUnknown_02024A60 = battle_get_side_with_given_state(1); + b_std_message(0, gUnknown_02024A60); + gUnknown_030042D4 = sub_8011800; + } +} + +void bc_8013568(void) +{ + if (gUnknown_02024A64 == 0) + { + gUnknown_030042D4 = sub_8011970; + b_std_message(0, 0); + } +} + +void sub_8011800(void) +{ + if (gUnknown_02024A64 == 0) + { + b_std_message(1, battle_get_side_with_given_state(1)); + gUnknown_030042D4 = sub_8011834; + } +} + +void sub_8011834(void) +{ + if (gUnknown_02024A64 == 0) + { + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + { + if (battle_get_per_side_status(gUnknown_02024A60) == 1) + { + dp01_build_cmdbuf_x2F_2F_2F_2F(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) + && battle_get_per_side_status(gUnknown_02024A60) == 3) + { + dp01_build_cmdbuf_x2F_2F_2F_2F(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + } + gUnknown_030042D4 = bc_801362C; + } +} + +void bc_801362C(void) +{ + if (gUnknown_02024A64 == 0) + { + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + { + if (battle_side_get_owner(gUnknown_02024A60) == 1 + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) + sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + } + gUnknown_030042D4 = sub_8011970; + } +} + +void unref_sub_8011950(void) +{ + if (gUnknown_02024A64 == 0) + gUnknown_030042D4 = sub_8011970; +} + +void sub_8011970(void) +{ + if (gUnknown_02024A64 == 0) + { + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) + b_std_message(1, battle_get_side_with_given_state(0)); + gUnknown_030042D4 = sub_80119B4; + } +} + +void sub_80119B4(void) +{ + if (gUnknown_02024A64 == 0) + { + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + { + if (battle_get_per_side_status(gUnknown_02024A60) == 0) + { + dp01_build_cmdbuf_x2F_2F_2F_2F(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) + && battle_get_per_side_status(gUnknown_02024A60) == 2) + { + dp01_build_cmdbuf_x2F_2F_2F_2F(0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + } + ewram16058 = 0; + ewram160F9 = 0; + ewram160E6 = 0; + gUnknown_030042D4 = sub_8011B00; + } +} + +void unref_sub_8011A68(void) +{ + if (gUnknown_02024A64 == 0) + { + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + { + if (battle_side_get_owner(gUnknown_02024A60) == 0) + { + sub_800C704(0, gUnknown_02024A6A[gUnknown_02024A60], 0); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + } + } + ewram16058 = 0; + ewram160F9 = 0; + ewram160E6 = 0; + gUnknown_030042D4 = sub_8011B00; + } +} diff --git a/src/rom3.c b/src/rom3.c index 0169128cb..ef7b9a7ed 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -582,7 +582,7 @@ void sub_800C47C(u8 taskId) } } -void dp01_build_cmdbuf_x00_a_b_0(u8 a, int b, int c) +void dp01_build_cmdbuf_x00_a_b_0(u8 a, u8 b, u8 c) { gUnknown_03004040[0] = 0; gUnknown_03004040[1] = b; @@ -591,7 +591,7 @@ void dp01_build_cmdbuf_x00_a_b_0(u8 a, int b, int c) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x01_a_b_0(u8 a, int b, int c) +void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c) { gUnknown_03004040[0] = 1; gUnknown_03004040[1] = b; @@ -600,7 +600,7 @@ void dp01_build_cmdbuf_x01_a_b_0(u8 a, int b, int c) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, int b, int c, u8 d, u8 *e) +void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, u8 b, u8 c, u8 d, u8 *e) { int i; @@ -612,7 +612,7 @@ void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, int b, int c, u8 d, u8 *e) dp01_prepare_buffer(a, gUnknown_03004040, d + 3); } -void unref_sub_800C6A4(u8 a, int b, u8 c, u8 *d) +void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d) { int i; @@ -633,7 +633,7 @@ void dp01_build_cmdbuf_x04_4_4_4(u8 a) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void sub_800C704(u8 a, int b, int c) +void sub_800C704(u8 a, u8 b, u8 c) { gUnknown_03004040[0] = 5; gUnknown_03004040[1] = b; @@ -642,7 +642,7 @@ void sub_800C704(u8 a, int b, int c) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x06_a(u8 a, int b) +void dp01_build_cmdbuf_x06_a(u8 a, u8 b) { gUnknown_03004040[0] = 6; gUnknown_03004040[1] = b; @@ -703,7 +703,7 @@ void dp01_build_cmdbuf_x0C_C_C_C(u8 a) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x0D_a(u8 a, int b) +void dp01_build_cmdbuf_x0D_a(u8 a, u8 b) { gUnknown_03004040[0] = 13; gUnknown_03004040[1] = b; @@ -721,7 +721,7 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c) dp01_prepare_buffer(a, gUnknown_03004040, b * 3 + 2); } -void dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes(u8 a, u16 b, u8 c, u16 d, int e, u8 f, u8 *g) +void dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g) { gUnknown_03004040[0] = 15; gUnknown_03004040[1] = b; @@ -1039,7 +1039,7 @@ _0800CB54: .4byte gUnknown_030041C0\n\ .syntax divided\n"); } -void dp01_build_cmdbuf_x12_a_bb(u8 a, int b, u16 c) +void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c) { gUnknown_03004040[0] = 18; gUnknown_03004040[1] = b; @@ -1048,14 +1048,14 @@ void dp01_build_cmdbuf_x12_a_bb(u8 a, int b, u16 c) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void unref_sub_800CB84(u8 a, int b) +void unref_sub_800CB84(u8 a, u8 b) { gUnknown_03004040[0] = 19; gUnknown_03004040[1] = b; dp01_prepare_buffer(a, gUnknown_03004040, 2); } -void sub_800CBA4(u8 a, int b, int c, u8 *d) +void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d) { u32 i; @@ -1078,7 +1078,7 @@ void sub_800CBE0(u8 a, u8 *b) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, int b, int c, int d, u8 *e) +void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e) { int i; @@ -1109,7 +1109,7 @@ void dp01_build_cmdbuf_x18_0_aa_health_bar_update(u8 a, s16 b) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x19_a_bb(u8 a, int b, s16 c) +void dp01_build_cmdbuf_x19_a_bb(u8 a, u8 b, s16 c) { gUnknown_03004040[0] = 25; gUnknown_03004040[1] = b; @@ -1132,7 +1132,7 @@ void dp01_build_cmdbuf_x1A_aaaa_bbbb(u8 a, u32 b, u32 c) dp01_prepare_buffer(a, gUnknown_03004040, 9); } -void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, int b, u32 c) +void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, u8 b, u32 c) { gUnknown_03004040[0] = 27; gUnknown_03004040[1] = b; @@ -1143,7 +1143,7 @@ void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, int b, u32 c) dp01_prepare_buffer(a, gUnknown_03004040, 6); } -void dp01_build_cmdbuf_x1C_a(u8 a, int b) +void dp01_build_cmdbuf_x1C_a(u8 a, u8 b) { gUnknown_03004040[0] = 28; gUnknown_03004040[1] = b; @@ -1203,7 +1203,7 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c) dp01_prepare_buffer(a, gUnknown_03004040, b + 3); } -void dp01_build_cmdbuf_x21_a_bb(u8 a, int b, u16 c) +void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c) { gUnknown_03004040[0] = 33; gUnknown_03004040[1] = b; @@ -1212,7 +1212,7 @@ void dp01_build_cmdbuf_x21_a_bb(u8 a, int b, u16 c) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, int b, u8 *c) +void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c) { int i; @@ -1250,7 +1250,7 @@ void dp01_build_cmdbuf_x25_25_25_25(u8 a) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x26_a(u8 a, int b) +void dp01_build_cmdbuf_x26_a(u8 a, u8 b) { gUnknown_03004040[0] = 38; gUnknown_03004040[1] = b; @@ -1320,7 +1320,7 @@ void dp01_build_cmdbuf_x2D_2D_2D_2D(u8 a) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x2E_a(u8 a, int b) +void dp01_build_cmdbuf_x2E_a(u8 a, u8 b) { gUnknown_03004040[0] = 46; gUnknown_03004040[1] = b; @@ -1367,7 +1367,7 @@ void dp01_build_cmdbuf_x32_32_32_32(u8 a) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x33_a_33_33(u8 a, int b) +void dp01_build_cmdbuf_x33_a_33_33(u8 a, u8 b) { gUnknown_03004040[0] = 51; gUnknown_03004040[1] = b; @@ -1376,7 +1376,7 @@ void dp01_build_cmdbuf_x33_a_33_33(u8 a, int b) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, int b, u16 c) +void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, u8 b, u16 c) { gUnknown_03004040[0] = 52; gUnknown_03004040[1] = b; @@ -1385,21 +1385,21 @@ void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, int b, u16 c) dp01_prepare_buffer(a, gUnknown_03004040, 4); } -void sub_800D1D8(u8 a, int b) +void sub_800D1D8(u8 a, u8 b) { gUnknown_03004040[0] = 53; gUnknown_03004040[1] = b; dp01_prepare_buffer(a, gUnknown_03004040, 2); } -void dp01_build_cmdbuf_x38_a(u8 a, int b) +void dp01_build_cmdbuf_x38_a(u8 a, u8 b) { gUnknown_03004040[0] = 54; gUnknown_03004040[1] = b; dp01_prepare_buffer(a, gUnknown_03004040, 2); } -void dp01_build_cmdbuf_x37_a(u8 a, int b) +void dp01_build_cmdbuf_x37_a(u8 a, u8 b) { gUnknown_03004040[0] = 55; gUnknown_03004040[1] = b; -- cgit v1.2.3 From 1114be138b080dee4e3bc9a9827b1abf2031b34f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 22:12:38 -0400 Subject: SecretBasePC_PackUp --- asm/secret_base.s | 29 ----------------------------- src/secret_base.c | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/asm/secret_base.s b/asm/secret_base.s index 17b5cb665..8f2df8396 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -6,35 +6,6 @@ .section .text_80BC1D0 - thumb_func_start sub_80BC440 -sub_80BC440: @ 80BC440 - push {r4,r5,lr} - ldr r4, _080BC45C @ =gSaveBlock1 - ldr r0, _080BC460 @ =0x00001a16 - adds r4, r0 - ldrh r5, [r4] - movs r0, 0 - bl ResetSecretBase - strh r5, [r4] - bl sub_80BC0F8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC45C: .4byte gSaveBlock1 -_080BC460: .4byte 0x00001a16 - thumb_func_end sub_80BC440 - - thumb_func_start SecretBasePC_PackUp -SecretBasePC_PackUp: @ 80BC464 - push {lr} - movs r0, 0x14 - bl IncrementGameStat - bl sub_80BC440 - pop {r0} - bx r0 - thumb_func_end SecretBasePC_PackUp - thumb_func_start sub_80BC474 sub_80BC474: @ 80BC474 push {r4-r7,lr} diff --git a/src/secret_base.c b/src/secret_base.c index a405ec337..04f14018c 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -1054,3 +1054,17 @@ _080BC43C: .4byte gSaveBlock1 + 0x1AA2\n\ .syntax divided\n"); } #endif + +void sub_80BC440(void) +{ + u16 backupValue = gSaveBlock1.secretBases[0].sbr_field_e; + ResetSecretBase(0); + gSaveBlock1.secretBases[0].sbr_field_e = backupValue; + sub_80BC0F8(); +} + +void SecretBasePC_PackUp(void) +{ + IncrementGameStat(20); + sub_80BC440(); +} -- cgit v1.2.3 From 1c6396051a016689c568a00ab89b0d15d58f87ce Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 16 May 2017 22:36:43 -0400 Subject: ClearTVShowData --- asm/tv.s | 45 --------------------------------------------- include/global.h | 1 + ld_script.txt | 3 ++- src/tv.c | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 46 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index ca2e5e410..58030eb88 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -7,51 +7,6 @@ .text - thumb_func_start ClearTVShowData -ClearTVShowData: @ 80BD7A8 - push {r4-r7,lr} - movs r3, 0 - ldr r6, _080BD7F0 @ =gSaveBlock1 - movs r4, 0 - ldr r0, _080BD7F4 @ =0x0000273a - adds r5, r6, r0 -_080BD7B4: - lsls r2, r3, 3 - adds r2, r3 - lsls r2, 2 - adds r1, r2, r6 - ldr r7, _080BD7F8 @ =0x00002738 - adds r0, r1, r7 - strb r4, [r0] - ldr r0, _080BD7FC @ =0x00002739 - adds r1, r0 - strb r4, [r1] - movs r1, 0 - adds r3, 0x1 -_080BD7CC: - adds r0, r1, r2 - adds r0, r5 - strb r4, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x21 - bls _080BD7CC - lsls r0, r3, 24 - lsrs r3, r0, 24 - cmp r3, 0x18 - bls _080BD7B4 - bl sub_80BEBF4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BD7F0: .4byte gSaveBlock1 -_080BD7F4: .4byte 0x0000273a -_080BD7F8: .4byte 0x00002738 -_080BD7FC: .4byte 0x00002739 - thumb_func_end ClearTVShowData - thumb_func_start special_0x44 special_0x44: @ 80BD800 push {r4-r7,lr} diff --git a/include/global.h b/include/global.h index 8e6be79da..4f1e189ba 100644 --- a/include/global.h +++ b/include/global.h @@ -194,6 +194,7 @@ struct EasyChatPair struct TVShowCommon { /*0x00*/ u8 var00; /*0x01*/ u8 var01; + /*0x02*/ u8 pad02[34]; }; struct TVShowFanClubLetter { diff --git a/ld_script.txt b/ld_script.txt index 13c9b25ae..fd57b31d6 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -176,8 +176,9 @@ SECTIONS { asm/sound_check_menu.o(.text); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); + src/tv.o(.text); asm/tv.o(.text); - src/tv.o(.text); + src/tv.o(.text_a); asm/tv.o(.text_80BE8EC); src/tv.o(.text_b); asm/tv.o(.text_80BF544); diff --git a/src/tv.c b/src/tv.c index c0d4bde4d..c312091e0 100644 --- a/src/tv.c +++ b/src/tv.c @@ -40,6 +40,24 @@ extern u8 gSpeciesNames[][11]; extern u8 *gTVPokemonOutbreakTextGroup[]; extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; +extern void sub_80BEBF4(void); + +void ClearTVShowData(void) +{ + u8 showidx; + u8 extradataidx; + for (showidx=0; showidx<25; showidx++) { + gSaveBlock1.tvShows[showidx].common.var00 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; + for (extradataidx=0; extradataidx<34; extradataidx++) { + gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; + } + } + sub_80BEBF4(); +} + +asm(".section .text_a"); + void sub_80BE478(void) { u16 playerNameLength; -- cgit v1.2.3 From 7801f9cd2e1471cd33e33047f049bbdc6da6e785 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 17 May 2017 01:36:12 -0500 Subject: fix up party_menu.c and decompile some more functions --- asm/party_menu.s | 515 ------------------------------------------------------- src/party_menu.c | 457 +++++++++++++++++++++++++----------------------- 2 files changed, 244 insertions(+), 728 deletions(-) diff --git a/asm/party_menu.s b/asm/party_menu.s index 534d4aaa4..bf00aa168 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -10308,521 +10308,6 @@ _08070084: .4byte 0xfffff280 .section .text_80701DC - thumb_func_start sub_80701DC -sub_80701DC: @ 80701DC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _08070280 @ =0x0201b000 - ldr r0, _08070284 @ =0x0000027e - adds r7, r6, r0 - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0x1 - bne _0807023E - movs r0, 0x80 - lsls r0, 5 - adds r4, r6, r0 - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl AddBagItem - ldrb r1, [r4, 0x5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08070288 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0807023A - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldrb r1, [r4, 0x5] - lsls r1, 1 - adds r0, r1 - ldr r1, _0807028C @ =gUnknown_083769A8 - adds r0, r1 - movs r1, 0x3 - bl task_pc_turn_off - ldr r0, _08070290 @ =0x00000261 - adds r1, r6, r0 - movs r0, 0x2 - strb r0, [r1] -_0807023A: - movs r0, 0 - strh r0, [r7] -_0807023E: - ldr r4, _08070294 @ =0x0201c000 - ldrb r0, [r4, 0x5] - adds r0, 0x1 - strb r0, [r4, 0x5] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _080702D8 - ldr r1, _08070298 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - ldr r1, _0807029C @ =0xfffff280 - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080702B0 - ldr r1, _080702A0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080702A4 @ =TaskDummy - str r1, [r0] - ldr r0, _080702A8 @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - ldr r0, _080702AC @ =sub_806FB0C - movs r1, 0x8 - bl CreateTask - b _080702C6 - .align 2, 0 -_08070280: .4byte 0x0201b000 -_08070284: .4byte 0x0000027e -_08070288: .4byte gPlayerParty -_0807028C: .4byte gUnknown_083769A8 -_08070290: .4byte 0x00000261 -_08070294: .4byte 0x0201c000 -_08070298: .4byte gUnknown_0202E8F4 -_0807029C: .4byte 0xfffff280 -_080702A0: .4byte gTasks -_080702A4: .4byte TaskDummy -_080702A8: .4byte gOtherText_WontHaveAnyEffect -_080702AC: .4byte sub_806FB0C -_080702B0: - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl RemoveBagItem - ldr r1, _080702D0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, [r4, 0x10] - str r1, [r0] -_080702C6: - ldr r1, _080702D4 @ =gLastFieldPokeMenuOpened - movs r0, 0 - strb r0, [r1] - b _080702DE - .align 2, 0 -_080702D0: .4byte gTasks -_080702D4: .4byte gLastFieldPokeMenuOpened -_080702D8: - adds r0, r5, 0 - bl sub_8070088 -_080702DE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80701DC - - thumb_func_start CreateItemUseMoveMenu -CreateItemUseMoveMenu: @ 80702E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r6, 0 - movs r0, 0x13 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r5, 0 - movs r0, 0x64 - adds r7, r4, 0 - muls r7, r0 - ldr r0, _0807036C @ =gPlayerParty - mov r8, r0 -_0807030C: - adds r1, r5, 0 - adds r1, 0xD - mov r2, r8 - adds r0, r7, r2 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xD - muls r0, r4 - ldr r1, _08070370 @ =gMoveNames - adds r0, r1 - lsls r2, r5, 25 - movs r1, 0xB0 - lsls r1, 20 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x14 - bl MenuPrint - cmp r4, 0 - beq _08070340 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08070340: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _0807030C - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x14 - movs r2, 0xB - adds r3, r6, 0 - bl InitMenu - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807036C: .4byte gPlayerParty -_08070370: .4byte gMoveNames - thumb_func_end CreateItemUseMoveMenu - - thumb_func_start Task_HandleItemUseMoveMenuInput -Task_HandleItemUseMoveMenuInput: @ 8070374 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r4, r2, 0 - ldr r0, _08070398 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0807039C - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _080703E4 - .align 2, 0 -_08070398: .4byte gMain -_0807039C: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080703B2 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _080703E4 -_080703B2: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080703CC - ldr r0, _080703C8 @ =gUnknown_08376B54 - ldr r1, [r0] - adds r0, r2, 0 - bl _call_via_r1 - b _080703E4 - .align 2, 0 -_080703C8: .4byte gUnknown_08376B54 -_080703CC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080703E4 - movs r0, 0x5 - bl PlaySE - ldr r0, _080703EC @ =gUnknown_08376B54 - ldr r1, [r0, 0x4] - adds r0, r4, 0 - bl _call_via_r1 -_080703E4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080703EC: .4byte gUnknown_08376B54 - thumb_func_end Task_HandleItemUseMoveMenuInput - - thumb_func_start DoPPRecoveryItemEffect -DoPPRecoveryItemEffect: @ 80703F0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r2 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r5, 0xAF - bne _08070410 - ldr r0, _0807040C @ =gSaveBlock1 + 0x3676 - b _0807041C - .align 2, 0 -_0807040C: .4byte gSaveBlock1 + 0x3676 -_08070410: - ldr r1, _08070464 @ =gItemEffectTable - adds r0, r5, 0 - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] -_0807041C: - mov r8, r0 - ldr r7, _08070468 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r7 - ldr r0, _0807046C @ =TaskDummy - str r0, [r1] - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - adds r1, r5, 0 - mov r2, r9 - bl sub_806E8D0 - mov r0, r8 - ldrb r1, [r0, 0x4] - movs r0, 0x10 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08070470 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r7 - strh r1, [r0, 0x1E] - adds r0, r4, 0 - bl DoRecoverPP - b _08070498 - .align 2, 0 -_08070464: .4byte gItemEffectTable -_08070468: .4byte gTasks -_0807046C: .4byte TaskDummy -_08070470: - movs r0, 0x5 - bl PlaySE - movs r0, 0xA - movs r1, 0x3 - bl sub_806D538 - ldr r0, _080704A4 @ =0x0201c000 - ldrb r0, [r0, 0x5] - bl CreateItemUseMoveMenu - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r7 - ldr r1, _080704A8 @ =Task_HandleItemUseMoveMenuInput - str r1, [r0] - ldr r1, _080704AC @ =gMain - movs r0, 0 - strh r0, [r1, 0x2E] -_08070498: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080704A4: .4byte 0x0201c000 -_080704A8: .4byte Task_HandleItemUseMoveMenuInput -_080704AC: .4byte gMain - thumb_func_end DoPPRecoveryItemEffect - - thumb_func_start ItemUseMoveMenu_HandleMoveSelection -ItemUseMoveMenu_HandleMoveSelection: @ 80704B0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8072DEC - movs r0, 0x13 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - bl GetMenuCursorPos - ldr r2, _080704EC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x1E] - adds r0, r4, 0 - bl DoRecoverPP - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080704EC: .4byte gTasks - thumb_func_end ItemUseMoveMenu_HandleMoveSelection - - thumb_func_start ItemUseMoveMenu_HandleCancel -ItemUseMoveMenu_HandleCancel: @ 80704F0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8072DEC - movs r0, 0x13 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r0, _08070528 @ =gMain - ldr r1, _0807052C @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0807053C - ldr r2, _08070530 @ =gTasks - ldr r0, _08070534 @ =0x0201c000 - ldrb r1, [r0, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _08070538 @ =SetUpBattlePokemonMenu - b _0807054C - .align 2, 0 -_08070528: .4byte gMain -_0807052C: .4byte 0x0000043d -_08070530: .4byte gTasks -_08070534: .4byte 0x0201c000 -_08070538: .4byte SetUpBattlePokemonMenu -_0807053C: - ldr r2, _08070564 @ =gTasks - ldr r0, _08070568 @ =0x0201c000 - ldrb r1, [r0, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _0807056C @ =sub_808B0C0 -_0807054C: - str r1, [r0] - movs r0, 0x3 - movs r1, 0 - bl sub_806D538 - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070564: .4byte gTasks -_08070568: .4byte 0x0201c000 -_0807056C: .4byte sub_808B0C0 - thumb_func_end ItemUseMoveMenu_HandleCancel - - thumb_func_start DoRecoverPP -DoRecoverPP: @ 8070570 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - ldr r6, _080705A8 @ =0x0201c000 - ldrb r0, [r6, 0x5] - ldrh r1, [r6, 0x6] - ldr r3, _080705AC @ =gTasks - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 3 - adds r7, r2, r3 - ldrb r2, [r7, 0x1E] - bl ExecuteTableBasedItemEffect__ - lsls r0, 24 - cmp r0, 0 - beq _080705B8 - ldr r0, _080705B0 @ =gUnknown_0202E8F4 - strb r5, [r0] - movs r0, 0x5 - bl PlaySE - ldr r0, _080705B4 @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - b _080705F8 - .align 2, 0 -_080705A8: .4byte 0x0201c000 -_080705AC: .4byte gTasks -_080705B0: .4byte gUnknown_0202E8F4 -_080705B4: .4byte gOtherText_WontHaveAnyEffect -_080705B8: - ldr r1, _0807060C @ =gUnknown_0202E8F4 - movs r0, 0x1 - strb r0, [r1] - movs r0, 0x1 - bl PlaySE - ldrh r0, [r6, 0x6] - movs r1, 0x1 - bl RemoveBagItem - ldr r0, [r6] - movs r2, 0x1E - ldrsh r1, [r7, r2] - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _08070610 @ =gStringVar1 - movs r1, 0xD - muls r1, r5 - ldr r2, _08070614 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldrh r0, [r6, 0x6] - bl GetMedicineItemEffectMessage - ldr r0, _08070618 @ =gStringVar4 - movs r1, 0x1 - bl sub_806E834 -_080705F8: - ldr r0, _0807061C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08070620 @ =sub_806FB0C - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807060C: .4byte gUnknown_0202E8F4 -_08070610: .4byte gStringVar1 -_08070614: .4byte gMoveNames -_08070618: .4byte gStringVar4 -_0807061C: .4byte gTasks -_08070620: .4byte sub_806FB0C - thumb_func_end DoRecoverPP - thumb_func_start DoPPUpItemEffect DoPPUpItemEffect: @ 8070624 push {r4,lr} diff --git a/src/party_menu.c b/src/party_menu.c index d473eae6d..b38e89376 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5,46 +5,99 @@ #include "sound.h" #include "string_util.h" #include "task.h" +#include "sprite.h" +#include "palette.h" +#include "event_data.h" +#include "main.h" #define DATA_COUNT (6) struct Unk201C000 { /*0x00*/ struct Pokemon *pokemon; - /*0x04*/ u8 var04; - /*0x05*/ u8 var05; - /*0x06*/ u16 var06; - u8 pad_08[10]; - /*0x12*/ u16 var12; + /*0x04*/ u8 unk4; + /*0x05*/ u8 unk5; + /*0x06*/ u16 unk6; + /*0x08*/ u8 pad_08[4]; + /*0x0C*/ s32 var0C; + /*0x10*/ TaskFunc unk10; }; -struct Unk201B260 +struct Unk201B000 { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - u8 pad_02[2]; - /*0x04*/ s16 var04[DATA_COUNT * 2]; - u8 pad_1C[2]; - /*0x1E*/ u16 var1E; - /*0x20*/ u16 var20; + u8 filler0[0x260]; + u8 unk260; + u8 unk261; + u8 filler262[2]; + s16 unk264[DATA_COUNT * 2]; + u8 filler27C[2]; + s16 unk27E; + s16 unk280; + u16 unk282; }; -extern struct Unk201B260 unk_201B260; -extern struct Unk201C000 unk_201C000; +struct UnknownStruct5 +{ + u8 unk0; + u8 unk1; + u16 *unk4; +}; + +extern u8 ewram[]; +#define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) +#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) + extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F6; +extern u8 gUnknown_0202E8FA; +extern u8 gLastFieldPokeMenuOpened; -extern u8 gUnknown_083769A8[][12]; +//extern const u16 gUnknown_083769A8[][6]; +//extern const u8 gUnknown_083769A8[][12]; +extern const u8 gUnknown_083769A8[]; extern u8 gUnknown_08376D1C[DATA_COUNT]; extern u8 *gUnknown_08376D04[DATA_COUNT]; +extern void (*const gUnknown_08376B54[])(u8); +extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; extern u8 gOtherText_TallPlusAndRightArrow[]; +extern u8 gOtherText_WontHaveAnyEffect[]; +extern const u8 gMoveNames[][13]; +extern u8 *const gItemEffectTable[]; + +extern bool8 IsDoubleBattle(void); +extern void AddBagItem(); +extern void RemoveBagItem(); +extern void SetUpBattlePokemonMenu(u8); +extern void sub_808B0C0(u8); -void task_pc_turn_off(u8 *u8, int i); +void task_pc_turn_off(); static void sub_806E884(u8 taskId); void sub_806F8AC(u8 taskId); +void sub_806FB0C(u8 taskId); void PartyMenuUpdateLevelOrStatus(struct Pokemon *, u8); -u8 ExecuteTableBasedItemEffect__(u8 u8, u16 u16, int i); +u8 ExecuteTableBasedItemEffect__(u8, u16, u8); void sub_80701DC(u8 taskId); +void DoRecoverPP(u8); +void sub_806D538(); +void sub_806D5A4(void); +void sub_806E8D0(); +void GetMedicineItemEffectMessage(); + +/* +void sub_806AEDC(void) +{ + const struct UnknownStruct5 *r5; + s32 i; + + AnimateSprites(); + BuildOamBuffer(); + r5 = gUnknown_08376BB4[gUnknown_0202E8FA]; + for (i = 0; i < 6; i++) + sub_800142C(r5[i].unk0 * 8, r5[i].unk1 * 8, r5[i].unk4, 0, (i << 5) | 0x200); + RunTasks(); + UpdatePaletteFade(); +} +*/ u8 sub_806E834(u8 *message, u8 arg1) { @@ -80,208 +133,194 @@ static void sub_806E884(u8 taskId) asm(".section .text_b"); -#ifdef NONMATCHING void sub_8070088(u8 taskId) { - u8 dummyTaskId; - struct Task *task2; + u8 taskId2; gTasks[taskId].func = TaskDummy; - - if (GetMonData(&gPlayerParty[unk_201C000.var04], MON_DATA_SPECIES) == 0) + if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) == 0) { gTasks[taskId].func = sub_80701DC; - return; } + else + { + s16 *taskData; + + taskId2 = CreateTask(TaskDummy, 5); + taskData = gTasks[taskId2].data; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; + taskData[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + taskData[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, 0)) + { + DestroyTask(taskId2); + gTasks[taskId].func = sub_80701DC; + } + else + { + gUnknown_0202E8F4 = 1; + MenuZeroFillWindowRect(3, 14, 26, 19); + PlaySE(SE_KAIFUKU); + PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9); + ewram1B000.unk261 = 2; + taskData[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - taskData[11]; + taskData[14] = 1; + ewram1B000.unk27E = 1; + ewram1B000.unk280 = 1; + ewram1B000.unk282 = taskData[11]; + ewram1C000.var0C = -32768; + gTasks[taskId2].func = sub_806F8AC; + } + } +} - dummyTaskId = CreateTask(TaskDummy, 5); - task2 = &gTasks[dummyTaskId]; +void sub_80701DC(u8 taskId) +{ + if (ewram1B000.unk27E == 1) + { + AddBagItem(ewram1C000.unk6, 1); + if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) != 0) + { + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 3); + ewram1B000.unk261 = 2; + } + ewram1B000.unk27E = 0; + } + ewram1C000.unk5++; + if (ewram1C000.unk5 == 6) + { + gUnknown_0202E8F4 = 0; + if (ewram1B000.unk280 == 0) + { + gTasks[taskId].func = TaskDummy; + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + CreateTask(sub_806FB0C, 8); + } + else + { + RemoveBagItem(ewram1C000.unk6, 1); + gTasks[taskId].func = ewram1C000.unk10; + } + gLastFieldPokeMenuOpened = 0; + } + else + { + sub_8070088(taskId); + } +} - task2->data[10] = GetMonData(unk_201C000.pokemon, MON_DATA_MAX_HP); - task2->data[11] = GetMonData(unk_201C000.pokemon, MON_DATA_HP); +void CreateItemUseMoveMenu(u8 partyMonIndex) +{ + u8 r6; + u8 i; - if (ExecuteTableBasedItemEffect__(unk_201C000.var05, unk_201C000.var06, 0)) + r6 = 0; + MenuDrawTextWindow(19, 10, 29, 19); + for (i = 0; i < 4; i++) { - DestroyTask(dummyTaskId); - gTasks[taskId].func = sub_80701DC; - return; + u16 move = GetMonData(&gPlayerParty[partyMonIndex], MON_DATA_MOVE1 + i); + + MenuPrint(gMoveNames[move], 20, i * 2 + 11); + if (move != 0) + r6++; } + InitMenu(0, 20, 11, r6, 0, 9); +} - gUnknown_0202E8F4 = 1; - MenuZeroFillWindowRect(3, 14, 26, 19); - PlaySE(SE_KAIFUKU); - PartyMenuUpdateLevelOrStatus(unk_201C000.pokemon, unk_201C000.var05); +void Task_HandleItemUseMoveMenuInput(u8 taskId) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + MoveMenuCursor(1); + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_08376B54[0](taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_08376B54[1](taskId); + } +} - task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle()][unk_201C000.var05], 9); - unk_201B260.var01 = 2; // u8 +void DoPPRecoveryItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + u8 *itemEffect; + u8 taskId2; - task2->data[12] = GetMonData(unk_201C000.pokemon, MON_DATA_HP) - task2->data[11]; - task2->data[14] = 1; - unk_201B260.var1E = 1; // u16 - unk_201B260.var20 = 1; // u16 + if (b == 0xAF) + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; + else + itemEffect = gItemEffectTable[b - 13]; + gTasks[taskId].func = TaskDummy; + taskId2 = CreateTask(TaskDummy, 5); + sub_806E8D0(taskId, b, c); + if (!(itemEffect[4] & 0x10)) + { + gTasks[taskId2].data[11] = 0; + DoRecoverPP(taskId2); + } + else + { + PlaySE(SE_SELECT); + sub_806D538(10, 3); + CreateItemUseMoveMenu(ewram1C000.unk5); + gTasks[taskId2].func = Task_HandleItemUseMoveMenuInput; + gMain.newKeys = 0; + } +} - unk_201C000.var12 = -0x8000; - task2->func = sub_806F8AC; +void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) +{ + sub_8072DEC(); + MenuZeroFillWindowRect(19, 10, 29, 19); + sub_806D5A4(); + gTasks[taskId].data[11] = GetMenuCursorPos(); + DoRecoverPP(taskId); } -#else -__attribute__((naked)) -void sub_8070088(void) + +void ItemUseMoveMenu_HandleCancel(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r1, _08070120 @ =gTasks\n\ - mov r10, r1\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - mov r2, r10\n\ - adds r7, r1, r2\n\ - ldr r5, _08070124 @ =TaskDummy\n\ - str r5, [r7]\n\ - ldr r4, _08070128 @ =0x0201c000\n\ - ldrb r0, [r4, 0x5]\n\ - movs r1, 0x64\n\ - mov r9, r1\n\ - mov r2, r9\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - ldr r1, _0807012C @ =gPlayerParty\n\ - mov r8, r1\n\ - add r0, r8\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _08070118\n\ - adds r0, r5, 0\n\ - movs r1, 0x5\n\ - bl CreateTask\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - str r0, [sp]\n\ - mov r0, r10\n\ - adds r0, 0x8\n\ - ldr r2, [sp]\n\ - adds r6, r2, r0\n\ - ldrb r0, [r4, 0x5]\n\ - mov r1, r9\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - add r0, r8\n\ - str r0, [r4]\n\ - movs r1, 0x3A\n\ - bl GetMonData\n\ - strh r0, [r6, 0x14]\n\ - ldr r0, [r4]\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - strh r0, [r6, 0x16]\n\ - ldrb r0, [r4, 0x5]\n\ - ldrh r1, [r4, 0x6]\n\ - movs r2, 0\n\ - bl ExecuteTableBasedItemEffect__\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08070134\n\ - adds r0, r5, 0\n\ - bl DestroyTask\n\ -_08070118:\n\ - ldr r0, _08070130 @ =sub_80701DC\n\ - str r0, [r7]\n\ - b _080701B0\n\ - .align 2, 0\n\ -_08070120: .4byte gTasks\n\ -_08070124: .4byte TaskDummy\n\ -_08070128: .4byte 0x0201c000\n\ -_0807012C: .4byte gPlayerParty\n\ -_08070130: .4byte sub_80701DC\n\ -_08070134:\n\ - ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\ - movs r0, 0x1\n\ - strb r0, [r1]\n\ - movs r0, 0x3\n\ - movs r1, 0xE\n\ - movs r2, 0x1A\n\ - movs r3, 0x13\n\ - bl MenuZeroFillWindowRect\n\ - movs r0, 0x1\n\ - bl PlaySE\n\ - ldr r0, [r4]\n\ - ldrb r1, [r4, 0x5]\n\ - bl PartyMenuUpdateLevelOrStatus\n\ - bl IsDoubleBattle\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldrb r1, [r4, 0x5]\n\ - lsls r1, 1\n\ - adds r0, r1\n\ - ldr r1, _080701C4 @ =gUnknown_083769A8\n\ - adds r0, r1\n\ - movs r1, 0x9\n\ - bl task_pc_turn_off\n\ - ldr r2, _080701C8 @ =0xfffff261\n\ - adds r1, r4, r2\n\ - movs r0, 0x2\n\ - strb r0, [r1]\n\ - ldr r0, [r4]\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - ldrh r1, [r6, 0x16]\n\ - subs r0, r1\n\ - strh r0, [r6, 0x18]\n\ - movs r0, 0x1\n\ - strh r0, [r6, 0x1C]\n\ - ldr r1, _080701CC @ =0xfffff27e\n\ - adds r0, r4, r1\n\ - movs r1, 0x1\n\ - strh r1, [r0]\n\ - ldr r2, _080701D0 @ =0xfffff280\n\ - adds r0, r4, r2\n\ - strh r1, [r0]\n\ - ldrh r1, [r6, 0x16]\n\ - adds r2, 0x2\n\ - adds r0, r4, r2\n\ - strh r1, [r0]\n\ - ldr r0, _080701D4 @ =0xffff8000\n\ - str r0, [r4, 0xC]\n\ - ldr r1, [sp]\n\ - add r1, r10\n\ - ldr r0, _080701D8 @ =sub_806F8AC\n\ - str r0, [r1]\n\ -_080701B0:\n\ - add sp, 0x4\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\ - .align 2, 0\n\ -_080701C0: .4byte gUnknown_0202E8F4\n\ -_080701C4: .4byte gUnknown_083769A8\n\ -_080701C8: .4byte 0xfffff261\n\ -_080701CC: .4byte 0xfffff27e\n\ -_080701D0: .4byte 0xfffff280\n\ -_080701D4: .4byte 0xffff8000\n\ -_080701D8: .4byte sub_806F8AC\n\ - .syntax divided\n"); + sub_8072DEC(); + MenuZeroFillWindowRect(19, 10, 29, 19); + if (gMain.inBattle) + gTasks[ewram1C000.unk4].func = SetUpBattlePokemonMenu; + else + gTasks[ewram1C000.unk4].func = sub_808B0C0; + sub_806D538(3, 0); + DestroyTask(taskId); } -#endif +void DoRecoverPP(u8 taskId) +{ + u16 r5 = 0; + + if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, gTasks[taskId].data[11])) + { + gUnknown_0202E8F4 = r5; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + } + else + { + gUnknown_0202E8F4 = 1; + PlaySE(SE_KAIFUKU); + RemoveBagItem(ewram1C000.unk6, 1); + r5 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + gTasks[taskId].data[11]); + StringCopy(gStringVar1, gMoveNames[r5]); + GetMedicineItemEffectMessage(ewram1C000.unk6); + sub_806E834(gStringVar4, 1); + } + gTasks[taskId].func = sub_806FB0C; +} asm(".section .text_c"); @@ -296,35 +335,27 @@ void sub_8070848(u8 taskId) u8 x; u8 y; u32 stat; - struct Pokemon **pokemon; - pokemon = &unk_201C000.pokemon; - asm("" ::: "r0"); - stat = GetMonData(*pokemon, gUnknown_08376D1C[i]); + stat = GetMonData(ewram1C000.pokemon, gUnknown_08376D1C[i]); - unk_201B260.var04[i + DATA_COUNT] = stat; - unk_201B260.var04[i] = stat - unk_201B260.var04[i]; + ewram1B000.unk264[i + DATA_COUNT] = stat; + ewram1B000.unk264[i] = stat - ewram1B000.unk264[i]; x = (i / 3) * 9 + 11; y = ((i % 3) << 1) + 1; MenuPrint_PixelCoords(gUnknown_08376D04[i], (x + 1) * 8, y * 8, 1); - if (i == 2) - { MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); - } else - { MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); - } - gStringVar1[0] = 0xFC; + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; gStringVar1[2] = 0x06; - ConvertIntToDecimalStringN(gStringVar1 + 3, unk_201B260.var04[i], 1, 2); + ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.unk264[i], 1, 2); MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); } -- cgit v1.2.3 From 18b3b55ad42f77ea028982ab2817371fc63631de Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 08:41:41 -0400 Subject: sub_80BE8EC --- asm/tv.s | 57 --------------------------------------------------------- src/tv.c | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 57 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 58030eb88..a67e0a77c 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,63 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BE8EC -sub_80BE8EC: @ 80BE8EC - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - ldr r1, _080BE930 @ =gSaveBlock1 - ldr r2, _080BE934 @ =0x00002afc - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _080BE94C - movs r3, 0 - adds r5, r1, 0 - ldr r7, _080BE938 @ =0x00002738 - adds r6, r5, r7 -_080BE906: - lsls r0, r3, 3 - adds r0, r3 - lsls r2, r0, 2 - adds r1, r2, r5 - ldr r7, _080BE938 @ =0x00002738 - adds r0, r1, r7 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080BE942 - adds r7, 0x1 - adds r0, r1, r7 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BE942 - adds r1, r2, r6 - ldrh r0, [r1, 0x16] - cmp r0, r4 - bcs _080BE93C - movs r0, 0 - strh r0, [r1, 0x16] - b _080BE94C - .align 2, 0 -_080BE930: .4byte gSaveBlock1 -_080BE934: .4byte 0x00002afc -_080BE938: .4byte 0x00002738 -_080BE93C: - subs r0, r4 - strh r0, [r1, 0x16] - b _080BE94C -_080BE942: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x17 - bls _080BE906 -_080BE94C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BE8EC - thumb_func_start UpdateMassOutbreakTimeLeft UpdateMassOutbreakTimeLeft: @ 80BE954 push {lr} diff --git a/src/tv.c b/src/tv.c index c312091e0..75fa427e6 100644 --- a/src/tv.c +++ b/src/tv.c @@ -282,6 +282,23 @@ void UpdateTVShowsPerDay(u16 arg0) sub_80BEA5C(arg0); } +void sub_80BE8EC(u16 arg0) { + u8 showidx; + TVShow *tvShow; + if (gSaveBlock1.outbreakPokemonSpecies == 0) { + for (showidx=0; showidx<24; showidx++) { + if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == 0x29 && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) { + tvShow = &(gSaveBlock1.tvShows[showidx]); + if (tvShow->massOutbreak.var16 < arg0) + tvShow->massOutbreak.var16 = 0; + else + tvShow->massOutbreak.var16 -= arg0; + break; + } + } + } +} + asm(".section .text_b"); u8 sub_80BF4F4(u8 arg0) -- cgit v1.2.3 From 4197080bf832660a398d294c2b38fd3f830cf6ba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 08:45:13 -0400 Subject: UpdateMassOutbreakTimeLeft --- asm/tv.s | 24 ------------------------ src/tv.c | 7 +++++++ 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index a67e0a77c..236f1115e 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,30 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start UpdateMassOutbreakTimeLeft -UpdateMassOutbreakTimeLeft: @ 80BE954 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080BE96C @ =gSaveBlock1 - ldr r3, _080BE970 @ =0x00002b0e - adds r2, r0, r3 - ldrh r0, [r2] - cmp r0, r1 - bhi _080BE974 - bl EndMassOutbreak - b _080BE978 - .align 2, 0 -_080BE96C: .4byte gSaveBlock1 -_080BE970: .4byte 0x00002b0e -_080BE974: - subs r0, r1 - strh r0, [r2] -_080BE978: - pop {r0} - bx r0 - thumb_func_end UpdateMassOutbreakTimeLeft - thumb_func_start sub_80BE97C sub_80BE97C: @ 80BE97C push {r4,lr} diff --git a/src/tv.c b/src/tv.c index 75fa427e6..604d66bee 100644 --- a/src/tv.c +++ b/src/tv.c @@ -299,6 +299,13 @@ void sub_80BE8EC(u16 arg0) { } } +void UpdateMassOutbreakTimeLeft(u16 arg0) { + if (gSaveBlock1.outbreakUnk5 <= arg0) + EndMassOutbreak(); + else + gSaveBlock1.outbreakUnk5 -= arg0; +} + asm(".section .text_b"); u8 sub_80BF4F4(u8 arg0) -- cgit v1.2.3 From b8a599de30f07d9008220f12758481ee8a8a6f3a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 09:35:20 -0400 Subject: sub_80BF55C --- asm/tv.s | 40 ---------------------------------------- src/tv.c | 22 ++++++++++++++++++++-- 2 files changed, 20 insertions(+), 42 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 236f1115e..a89f138fc 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,46 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF544 -sub_80BF544: @ 80BF544 - push {lr} - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - bl sub_80BF4F4 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80BF544 - - thumb_func_start sub_80BF55C -sub_80BF55C: @ 80BF55C - push {lr} - lsls r1, 24 - lsrs r1, 24 - lsls r2, r1, 3 - adds r2, r1 - lsls r2, 2 - adds r2, r0 - movs r0, 0 - strb r0, [r2] - strb r0, [r2, 0x1] - movs r1, 0 - adds r2, 0x2 - movs r3, 0 -_080BF576: - adds r0, r2, r1 - strb r3, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x21 - bls _080BF576 - pop {r0} - bx r0 - thumb_func_end sub_80BF55C - thumb_func_start sub_80BF588 sub_80BF588: @ 80BF588 push {r4-r7,lr} diff --git a/src/tv.c b/src/tv.c index 604d66bee..490b904ce 100644 --- a/src/tv.c +++ b/src/tv.c @@ -282,7 +282,8 @@ void UpdateTVShowsPerDay(u16 arg0) sub_80BEA5C(arg0); } -void sub_80BE8EC(u16 arg0) { +void sub_80BE8EC(u16 arg0) +{ u8 showidx; TVShow *tvShow; if (gSaveBlock1.outbreakPokemonSpecies == 0) { @@ -299,7 +300,8 @@ void sub_80BE8EC(u16 arg0) { } } -void UpdateMassOutbreakTimeLeft(u16 arg0) { +void UpdateMassOutbreakTimeLeft(u16 arg0) +{ if (gSaveBlock1.outbreakUnk5 <= arg0) EndMassOutbreak(); else @@ -324,6 +326,22 @@ u8 sub_80BF4F4(u8 arg0) return TRUE; } +u8 sub_80BF544(void) +{ + return sub_80BF4F4(GetLeadMonIndex()); +} + +void sub_80BF55C(TVShow tvShow[], u8 showidx) +{ + u8 idx; + tvShow[showidx].common.var00 = 0; + tvShow[showidx].common.var01 = 0; + for (idx=0; idx<34; idx++) { + tvShow[showidx].common.pad02[idx] = 0; + } +} + + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 33b3feeaae66283b1ccdb1a790d70dbb92873705 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 10:09:51 -0400 Subject: sub_80BF588 --- asm/tv.s | 99 ---------------------------------------------------------------- src/tv.c | 29 +++++++++++++++++++ 2 files changed, 29 insertions(+), 99 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index a89f138fc..f4b4a1444 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,105 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF588 -sub_80BF588: @ 80BF588 - push {r4-r7,lr} - adds r4, r0, 0 - movs r5, 0 -_080BF58E: - lsls r0, r5, 3 - adds r0, r5 - lsls r1, r0, 2 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080BF5D2 - adds r0, r5, 0x1 - b _080BF5CA -_080BF5A0: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _080BF5C8 - adds r1, r4 - adds r0, r3, 0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80BF55C - b _080BF5D2 -_080BF5C8: - adds r0, r2, 0x1 -_080BF5CA: - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x4 - bls _080BF5A0 -_080BF5D2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080BF58E - movs r5, 0x5 -_080BF5DE: - lsls r0, r5, 3 - adds r0, r5 - lsls r1, r0, 2 - adds r0, r1, r4 - ldrb r0, [r0] - adds r5, 0x1 - cmp r0, 0 - bne _080BF62A - lsls r0, r5, 24 - b _080BF624 -_080BF5F2: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _080BF620 - adds r1, r4 - adds r0, r3, 0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldr r0, _080BF61C @ =gSaveBlock1 + 0x2738 - adds r1, r2, 0 - bl sub_80BF55C - b _080BF62A - .align 2, 0 -_080BF61C: .4byte gSaveBlock1 + 0x2738 -_080BF620: - adds r0, r2, 0x1 - lsls r0, 24 -_080BF624: - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080BF5F2 -_080BF62A: - lsls r0, r5, 24 - lsrs r5, r0, 24 - cmp r5, 0x17 - bls _080BF5DE - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BF588 - thumb_func_start sub_80BF638 sub_80BF638: @ 80BF638 push {r4,r5,lr} diff --git a/src/tv.c b/src/tv.c index 490b904ce..8958a003c 100644 --- a/src/tv.c +++ b/src/tv.c @@ -341,6 +341,35 @@ void sub_80BF55C(TVShow tvShow[], u8 showidx) } } +void sub_80BF588(TVShow tvShow[]) +{ + u8 showidx; + u8 showidx2; + for (showidx=0; showidx<4; showidx++) { + if (tvShow[showidx].common.var00 == 0) { + for (showidx2=showidx+1; showidx2<5; showidx2++) { + if (tvShow[showidx2].common.var00 != 0) { + tvShow[showidx] = tvShow[showidx2]; + sub_80BF55C(tvShow, showidx2); + break; + } + } + } + } + for (showidx=5; showidx<24; showidx++) { + if (tvShow[showidx].common.var00 == 0) { + for (showidx2=showidx+1; showidx2<24; showidx2++) { + if (tvShow[showidx2].common.var00 != 0) { + tvShow[showidx] = tvShow[showidx2]; + sub_80BF55C(gSaveBlock1.tvShows, showidx2); + break; + } + } + } + } + +} + asm(".section .text_c"); -- cgit v1.2.3 From 5c6e190868d3caf789635ea3d7418091d0d2769e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 10:26:07 -0400 Subject: sub_80BF638 --- asm/tv.s | 31 ------------------------------- src/tv.c | 9 ++++++++- 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index f4b4a1444..18ab85d34 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,37 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF638 -sub_80BF638: @ 80BF638 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - lsrs r0, 16 - bl sub_80BF674 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _080BF66C @ =gUnknown_083D1464 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - movs r1, 0xB - muls r1, r5 - ldr r2, _080BF670 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080BF66C: .4byte gUnknown_083D1464 -_080BF670: .4byte gSpeciesNames - thumb_func_end sub_80BF638 - thumb_func_start sub_80BF674 sub_80BF674: @ 80BF674 push {r4-r6,lr} diff --git a/src/tv.c b/src/tv.c index 8958a003c..49c75004e 100644 --- a/src/tv.c +++ b/src/tv.c @@ -29,6 +29,8 @@ struct OutbreakPokemon /*0x0B*/ u8 location; }; +extern u8 *gUnknown_083D1464[3]; + extern u16 gSpecialVar_0x8004; extern u8 gSpecialVar_0x8007; extern u16 gScriptResult; @@ -367,9 +369,14 @@ void sub_80BF588(TVShow tvShow[]) } } } - } +u16 sub_80BF638(u8 arg0, u16 arg1) +{ + u16 retval = sub_80BF674(arg1); + StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]); + return retval; +} asm(".section .text_c"); -- cgit v1.2.3 From 277bc35bad136185b00bdcc7618736d989bb08b5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 11:05:59 -0400 Subject: sub_80BF674 --- asm/tv.s | 53 ----------------------------------------------------- src/tv.c | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 53 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 18ab85d34..aa8f5fe1d 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,59 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF674 -sub_80BF674: @ 80BF674 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080BF694 @ =0x0000019b - bl __umodsi3 - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, r4, 0 - b _080BF6B2 - .align 2, 0 -_080BF694: .4byte 0x0000019b -_080BF698: - cmp r4, 0x1 - bne _080BF6A4 - ldr r4, _080BF6A0 @ =0x0000019b - b _080BF6AA - .align 2, 0 -_080BF6A0: .4byte 0x0000019b -_080BF6A4: - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_080BF6AA: - cmp r4, r6 - bne _080BF6B2 - adds r4, r5, 0 - b _080BF6CE -_080BF6B2: - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl sub_8090D90 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _080BF698 - cmp r4, r5 - beq _080BF698 -_080BF6CE: - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80BF674 - thumb_func_start sub_80BF6D8 sub_80BF6D8: @ 80BF6D8 push {lr} diff --git a/src/tv.c b/src/tv.c index 49c75004e..d2773faee 100644 --- a/src/tv.c +++ b/src/tv.c @@ -6,6 +6,8 @@ #include "rng.h" #include "string_util.h" #include "text.h" +#include "species.h" +#include "pokedex.h" enum { @@ -378,6 +380,24 @@ u16 sub_80BF638(u8 arg0, u16 arg1) return retval; } +u16 sub_80BF674(u16 species) { + u16 rspecies; + u16 cspecies; + rspecies = (Random() % (NUM_SPECIES - 1)) + 1; + cspecies = rspecies; + while ((s8)sub_8090D90(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { + if (cspecies == SPECIES_BULBASAUR) + cspecies = NUM_SPECIES - 1; + else + cspecies --; + if (cspecies == rspecies) { + cspecies = species; + return cspecies; + } + } + return cspecies; +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 43f3259ee1c25aa2e1c1e7a6f62afc59a5eab7af Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 11:14:27 -0400 Subject: couple more functions in tv.text_80BF544 --- asm/tv.s | 66 ---------------------------------------------------------------- src/tv.c | 24 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 67 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index aa8f5fe1d..8058a7a29 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,72 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF6D8 -sub_80BF6D8: @ 80BF6D8 - push {lr} - ldr r0, _080BF700 @ =gSaveBlock1 + 0x2738 - bl sub_80BF720 - ldr r1, _080BF704 @ =gUnknown_03005D38 - strb r0, [r1] - ldr r2, _080BF708 @ =gSpecialVar_0x8006 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - strh r1, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080BF710 - ldr r1, _080BF70C @ =gScriptResult - movs r0, 0x1 - b _080BF714 - .align 2, 0 -_080BF700: .4byte gSaveBlock1 + 0x2738 -_080BF704: .4byte gUnknown_03005D38 -_080BF708: .4byte gSpecialVar_0x8006 -_080BF70C: .4byte gScriptResult -_080BF710: - ldr r1, _080BF71C @ =gScriptResult - movs r0, 0 -_080BF714: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080BF71C: .4byte gScriptResult - thumb_func_end sub_80BF6D8 - - thumb_func_start sub_80BF720 -sub_80BF720: @ 80BF720 - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080BF726: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080BF73A - lsls r0, r1, 24 - asrs r0, 24 - b _080BF748 -_080BF73A: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080BF726 - movs r0, 0x1 - negs r0, r0 -_080BF748: - pop {r1} - bx r1 - thumb_func_end sub_80BF720 - thumb_func_start sub_80BF74C sub_80BF74C: @ 80BF74C push {lr} diff --git a/src/tv.c b/src/tv.c index d2773faee..246b90a03 100644 --- a/src/tv.c +++ b/src/tv.c @@ -34,6 +34,7 @@ struct OutbreakPokemon extern u8 *gUnknown_083D1464[3]; extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8006; extern u8 gSpecialVar_0x8007; extern u16 gScriptResult; extern u8 gUnknown_020387E8; @@ -380,7 +381,8 @@ u16 sub_80BF638(u8 arg0, u16 arg1) return retval; } -u16 sub_80BF674(u16 species) { +u16 sub_80BF674(u16 species) +{ u16 rspecies; u16 cspecies; rspecies = (Random() % (NUM_SPECIES - 1)) + 1; @@ -398,6 +400,26 @@ u16 sub_80BF674(u16 species) { return cspecies; } +void sub_80BF6D8(void) +{ + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + gSpecialVar_0x8006 = gUnknown_03005D38.var0; + if (gUnknown_03005D38.var0 == -1) + gScriptResult = 1; + else + gScriptResult = 0; +} + +s8 sub_80BF720(TVShow tvShow[]) +{ + u8 idx; + for (idx=0; idx<5; idx++) { + if (tvShow[idx].common.var00 == 0) + return idx; + } + return -1; +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 5ee5e6b87e5cd8d67f505aa94f76dd38f10e8486 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 11:21:52 -0400 Subject: couple more functions in tv.text_80BF544; fix type declaration of sub_80BF77C --- asm/tv.s | 52 ---------------------------------------------------- include/asm.inc.h | 2 +- src/tv.c | 17 +++++++++++++++++ 3 files changed, 18 insertions(+), 53 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 8058a7a29..9b06f4a61 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,58 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF74C -sub_80BF74C: @ 80BF74C - push {lr} - adds r2, r0, 0 - movs r1, 0x5 -_080BF752: - lsls r0, r1, 24 - asrs r1, r0, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080BF768 - adds r0, r1, 0 - b _080BF778 -_080BF768: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0x17 - ble _080BF752 - movs r0, 0x1 - negs r0, r0 -_080BF778: - pop {r1} - bx r1 - thumb_func_end sub_80BF74C - - thumb_func_start sub_80BF77C -sub_80BF77C: @ 80BF77C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bls _080BF794 - movs r0, 0x1 - b _080BF796 -_080BF794: - movs r0, 0 -_080BF796: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF77C - thumb_func_start sub_80BF79C sub_80BF79C: @ 80BF79C push {r4-r6,lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index 0c111a991..e13b4668a 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -292,7 +292,7 @@ u8 sub_80BF0B8(u32); void sub_80BF478(void); u16 sub_80BF674(u16 species); s8 sub_80BF720(TVShow *); -u8 sub_80BF77C(u32); +bool8 sub_80BF77C(u16); void sub_80BFD44(void *, u32, u8); void sub_80C0514(void *, u32, u8); diff --git a/src/tv.c b/src/tv.c index 246b90a03..bea5eb98f 100644 --- a/src/tv.c +++ b/src/tv.c @@ -420,6 +420,23 @@ s8 sub_80BF720(TVShow tvShow[]) return -1; } +s8 sub_80BF74C(TVShow tvShow[]) +{ + s8 idx; + for (idx=5; idx<24; idx++) { + if (tvShow[idx].common.var00 == 0) + return idx; + } + return -1; +} + +bool8 sub_80BF77C(u16 value) +{ + if (Random() <= value) + return FALSE; + return TRUE; +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 90b3f0464ad38761caac2a7da747d3ca23a8c1ae Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 12:39:27 -0400 Subject: More work on tv --- asm/tv.s | 75 -------------------------------------------------------- include/global.h | 4 +-- src/tv.c | 26 ++++++++++++++++++++ 3 files changed, 28 insertions(+), 77 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 9b06f4a61..dab4b57eb 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,81 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF79C -sub_80BF79C: @ 80BF79C - push {r4-r6,lr} - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r4, 0x4 - ldr r6, _080BF7B8 @ =0x0000ffff - b _080BF7C2 - .align 2, 0 -_080BF7B8: .4byte 0x0000ffff -_080BF7BC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080BF7C2: - cmp r2, 0x6 - bne _080BF7C8 - movs r2, 0 -_080BF7C8: - lsls r1, r2, 1 - adds r0, r5, r1 - ldrh r0, [r0] - adds r3, r4, 0x4 - cmp r0, r6 - beq _080BF7BC - ldr r0, _080BF7E4 @ =gStringVar3 - adds r1, r3, r1 - ldrh r1, [r1] - bl sub_80EB3FC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BF7E4: .4byte gStringVar3 - thumb_func_end sub_80BF79C - - thumb_func_start sub_80BF7E8 -sub_80BF7E8: @ 80BF7E8 - push {lr} - adds r2, r0, 0 - movs r3, 0 - movs r1, 0 - ldrb r0, [r2, 0x4] - cmp r0, 0xFF - beq _080BF814 - adds r2, 0x4 -_080BF7F8: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r3, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bhi _080BF814 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080BF7F8 -_080BF814: - movs r0, 0x7 - ands r3, r0 - adds r0, r3, 0 - pop {r1} - bx r1 - thumb_func_end sub_80BF7E8 - thumb_func_start sub_80BF820 sub_80BF820: @ 80BF820 push {r4-r7,lr} diff --git a/include/global.h b/include/global.h index 4f1e189ba..f08c76bac 100644 --- a/include/global.h +++ b/include/global.h @@ -210,7 +210,7 @@ struct TVShowRecentHappenings { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 var02; - u8 pad04[12]; + /*0x04*/ u16 var04[6]; /*0x10*/ u8 var10[8]; /*0x18*/ u8 var18; u8 pad19[10]; @@ -222,7 +222,7 @@ struct TVShowFanclubOpinions { /*0x02*/ u16 var02; /*0x04*/ u8 var04A:4; u8 var04B:4; - /*0x04*/ u8 var05[8]; + /*0x05*/ u8 var05[8]; /*0x0D*/ u8 var0D; /*0x0E*/ u8 var0E; /*0x0F*/ u8 var0F; diff --git a/src/tv.c b/src/tv.c index bea5eb98f..28714a493 100644 --- a/src/tv.c +++ b/src/tv.c @@ -437,6 +437,32 @@ bool8 sub_80BF77C(u16 value) return TRUE; } +void sub_80BF79C(struct TVShowRecentHappenings *arg0) // TVShowFanClubLetter? +{ + u8 i = Random() % 6; + while (1) { + if (i == 6) + i = 0; + if (arg0->var04[i] != 0xFFFF) + break; + i ++; + } + sub_80EB3FC(gStringVar3, arg0->var04[i]); +} + +u8 sub_80BF7E8(struct TVShowFanClubLetter *arg0) // TVShowRecentHappenings? +{ + u16 flagsum = 0; + u8 i = 0; + if (arg0->pad04[0] != 0xFF) { + while (i < 11 && arg0->pad04[i] != 0xFF) { + flagsum += arg0->pad04[i]; + i++; + } + } + return flagsum & 0x7; +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 494910758471297180920a46e5afad6b4f64ba69 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 14:42:22 -0400 Subject: sub_80BF820 --- asm/tv.s | 186 --------------------------------------------------------------- src/tv.c | 50 +++++++++++++++++ 2 files changed, 50 insertions(+), 186 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index dab4b57eb..851d9752d 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,192 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF820 -sub_80BF820: @ 80BF820 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r4, [sp, 0x1C] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 16 - lsrs r4, 16 - movs r2, 0 - movs r7, 0xFF -_080BF844: - mov r1, sp - adds r0, r1, r2 - ldrb r1, [r0] - orrs r1, r7 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _080BF844 - cmp r3, 0 - bne _080BF8A6 - ldr r4, [sp, 0x20] - adds r4, 0xF - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080BF874 - mov r0, sp - adds r1, r4, r5 - b _080BF920 -_080BF874: - cmp r6, 0x1 - bne _080BF880 - mov r0, sp - subs r1, r2, r5 - adds r1, r4, r1 - b _080BF920 -_080BF880: - cmp r6, 0x2 - bne _080BF892 - mov r1, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - adds r0, r4, r0 - b _080BF950 -_080BF892: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 - adds r0, r4, r0 - b _080BF950 -_080BF8A6: - cmp r3, 0x1 - bne _080BF8F4 - ldr r4, [sp, 0x20] - adds r4, 0x4 - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080BF8C2 - mov r0, sp - adds r1, r4, r5 - b _080BF920 -_080BF8C2: - cmp r6, 0x1 - bne _080BF8CE - mov r0, sp - subs r1, r2, r5 - adds r1, r4, r1 - b _080BF920 -_080BF8CE: - cmp r6, 0x2 - bne _080BF8E0 - mov r1, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - adds r0, r4, r0 - b _080BF950 -_080BF8E0: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 - adds r0, r4, r0 - b _080BF950 -_080BF8F4: - movs r0, 0xB - muls r4, r0 - ldr r7, _080BF910 @ =gSpeciesNames - adds r0, r4, r7 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080BF914 - mov r0, sp - adds r1, r5, r4 - b _080BF91E - .align 2, 0 -_080BF910: .4byte gSpeciesNames -_080BF914: - cmp r6, 0x1 - bne _080BF926 - mov r0, sp - subs r1, r2, r5 - adds r1, r4 -_080BF91E: - adds r1, r7 -_080BF920: - ldrb r1, [r1] - strb r1, [r0] - b _080BF954 -_080BF926: - cmp r6, 0x2 - bne _080BF93A - mov r1, sp - adds r0, r5, r4 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r4, 0x1 - adds r0, r5, r0 - b _080BF94E -_080BF93A: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 - adds r0, r4 -_080BF94E: - adds r0, r7 -_080BF950: - ldrb r0, [r0] - strb r0, [r1, 0x1] -_080BF954: - ldr r0, _080BF970 @ =gUnknown_083D1464 - mov r2, r8 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - mov r1, sp - bl StringCopy - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BF970: .4byte gUnknown_083D1464 - thumb_func_end sub_80BF820 - thumb_func_start sub_80BF974 sub_80BF974: @ 80BF974 push {r4,lr} diff --git a/src/tv.c b/src/tv.c index 28714a493..960d70ca6 100644 --- a/src/tv.c +++ b/src/tv.c @@ -463,6 +463,56 @@ u8 sub_80BF7E8(struct TVShowFanClubLetter *arg0) // TVShowRecentHappenings? return flagsum & 0x7; } +void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow) +{ + u8 flags[3]; + u16 nameLength; + u8 i; + for (i=0; i<3; i++) + flags[i] = EOS; + if (arg3 == 0) { + nameLength = StringLength(tvShow->trainerName); + if (arg2 == 0) { + flags[0] = tvShow->trainerName[arg1]; + } else if (arg2 == 1) { + flags[0] = tvShow->trainerName[nameLength - arg1]; + } else if (arg2 == 2) { + flags[0] = tvShow->trainerName[arg1]; + flags[1] = tvShow->trainerName[arg1 + 1]; + } else { + flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)]; + flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)]; + } + } else if (arg3 == 1) { + nameLength = StringLength(tvShow->pokemonName); + if (arg2 == 0) { + flags[0] = tvShow->pokemonName[arg1]; + } else if (arg2 == 1) { + flags[0] = tvShow->pokemonName[nameLength - arg1]; + } else if (arg2 == 2) { + flags[0] = tvShow->pokemonName[arg1]; + flags[1] = tvShow->pokemonName[arg1 + 1]; + } else { + flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)]; + flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)]; + } + } else { + nameLength = StringLength(gSpeciesNames[arg4]); + if (arg2 == 0) { + flags[0] = gSpeciesNames[arg4][arg1]; + } else if (arg2 == 1) { + flags[0] = gSpeciesNames[arg4][nameLength - arg1]; + } else if (arg2 == 2) { + flags[0] = gSpeciesNames[arg4][arg1]; + flags[1] = gSpeciesNames[arg4][arg1 + 1]; + } else { + flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)]; + flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)]; + } + } + StringCopy(gUnknown_083D1464[arg0], flags); +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 11b0186a843b8a17193229dc0cc412ce6faa5ef8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 14:52:44 -0400 Subject: sub_80BF974, sub_80BF9B4 --- asm/tv.s | 70 ---------------------------------------------------------------- src/tv.c | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 70 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 851d9752d..9a34fb0ef 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,76 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF974 -sub_80BF974: @ 80BF974 - push {r4,lr} - movs r1, 0 - ldr r4, _080BF994 @ =gSaveBlock1 - ldr r0, _080BF998 @ =gSpecialVar_0x8004 - ldrh r2, [r0] - ldr r3, _080BF99C @ =0x00002738 -_080BF980: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _080BF9A0 - movs r0, 0x1 - b _080BF9AC - .align 2, 0 -_080BF994: .4byte gSaveBlock1 -_080BF998: .4byte gSpecialVar_0x8004 -_080BF99C: .4byte 0x00002738 -_080BF9A0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080BF980 - movs r0, 0 -_080BF9AC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF974 - - thumb_func_start sub_80BF9B4 -sub_80BF9B4: @ 80BF9B4 - push {r4,lr} - ldr r0, _080BF9E0 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BF9E4 @ =gPlayerParty - adds r0, r1 - ldr r4, _080BF9E8 @ =gStringVar1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - ldr r0, _080BF9EC @ =gStringVar3 - adds r1, r4, 0 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - beq _080BF9F0 - bl sub_80BE478 - movs r0, 0x1 - b _080BF9F2 - .align 2, 0 -_080BF9E0: .4byte gSpecialVar_0x8004 -_080BF9E4: .4byte gPlayerParty -_080BF9E8: .4byte gStringVar1 -_080BF9EC: .4byte gStringVar3 -_080BF9F0: - movs r0, 0 -_080BF9F2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF9B4 - thumb_func_start sub_80BF9F8 sub_80BF9F8: @ 80BF9F8 push {r4-r6,lr} diff --git a/src/tv.c b/src/tv.c index 960d70ca6..2b39c7a7c 100644 --- a/src/tv.c +++ b/src/tv.c @@ -513,6 +513,26 @@ void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNam StringCopy(gUnknown_083D1464[arg0], flags); } +bool8 sub_80BF974(void) +{ + u8 i; + for (i=0; i<5; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) + return TRUE; + } + return FALSE; +} + +bool8 sub_80BF9B4(void) +{ + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); + if (!StringCompareWithoutExtCtrlCodes(gStringVar3, gStringVar1)) + return FALSE; + sub_80BE478(); + return TRUE; +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 24934c7af876ebb6f35ed4773d1e1b7b499eebc5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 15:04:24 -0400 Subject: sub_80BF9F8 --- asm/tv.s | 87 ---------------------------------------------------------------- src/tv.c | 16 ++++++++++++ 2 files changed, 16 insertions(+), 87 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 9a34fb0ef..e3e565116 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,93 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BF9F8 -sub_80BF9F8: @ 80BF9F8 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - ldr r0, _080BFAA0 @ =gSpecialVar_0x8004 - mov r9, r0 - ldrh r0, [r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r6, _080BFAA4 @ =gPlayerParty - adds r0, r6 - ldr r2, _080BFAA8 @ =gStringVar3 - movs r1, 0x2 - bl GetMonData - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - ldr r1, _080BFAAC @ =gStringVar2 - mov r10, r1 - movs r1, 0x2 - mov r2, r10 - bl GetMonData - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0 - movs r2, 0 - bl GetMonData - str r0, [sp] - ldr r0, _080BFAB0 @ =c2_080CC144 - str r0, [sp, 0x4] - movs r0, 0x3 - mov r1, r10 - adds r2, r5, 0 - adds r3, r4, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BFAA0: .4byte gSpecialVar_0x8004 -_080BFAA4: .4byte gPlayerParty -_080BFAA8: .4byte gStringVar3 -_080BFAAC: .4byte gStringVar2 -_080BFAB0: .4byte c2_080CC144 - thumb_func_end sub_80BF9F8 - thumb_func_start c2_080CC144 c2_080CC144: @ 80BFAB4 push {lr} diff --git a/src/tv.c b/src/tv.c index 2b39c7a7c..ebba61ea3 100644 --- a/src/tv.c +++ b/src/tv.c @@ -8,6 +8,7 @@ #include "text.h" #include "species.h" #include "pokedex.h" +#include "naming_screen.h" enum { @@ -533,6 +534,21 @@ bool8 sub_80BF9B4(void) return TRUE; } +void c2_080CC144(void); + +void sub_80BF9F8(void) +{ + u16 spec; + u16 gender; + u32 pval; + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3); + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2); + spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0); + gender = GetMonGender(&(gPlayerParty[gSpecialVar_0x8004])); + pval = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar2, spec, gender, pval, c2_080CC144); +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From ee6893441e0fdb02ebf6269b91d3382645a5c0fe Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 15:54:31 -0400 Subject: Name Rater functions in tv.c --- asm/tv.s | 139 --------------------------------------------------------------- src/tv.c | 42 +++++++++++++++++++ 2 files changed, 42 insertions(+), 139 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index e3e565116..bd0d3540f 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,145 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start c2_080CC144 -c2_080CC144: @ 80BFAB4 - push {lr} - ldr r0, _080BFAD4 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BFAD8 @ =gPlayerParty - adds r0, r1 - ldr r2, _080BFADC @ =gStringVar2 - movs r1, 0x2 - bl SetMonData - bl c2_exit_to_overworld_1_continue_scripts_restart_music - pop {r0} - bx r0 - .align 2, 0 -_080BFAD4: .4byte gSpecialVar_0x8004 -_080BFAD8: .4byte gPlayerParty -_080BFADC: .4byte gStringVar2 - thumb_func_end c2_080CC144 - - thumb_func_start sub_80BFAE0 -sub_80BFAE0: @ 80BFAE0 - push {r4,lr} - ldr r0, _080BFB04 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BFB08 @ =gPlayerParty - adds r0, r1 - ldr r4, _080BFB0C @ =gStringVar1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFB04: .4byte gSpecialVar_0x8004 -_080BFB08: .4byte gPlayerParty -_080BFB0C: .4byte gStringVar1 - thumb_func_end sub_80BFAE0 - - thumb_func_start sub_80BFB10 -sub_80BFB10: @ 80BFB10 - push {r4,lr} - bl GetPlayerTrainerId - adds r4, r0, 0 - ldr r0, _080BFB38 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BFB3C @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - movs r2, 0 - bl GetMonData - cmp r4, r0 - bne _080BFB44 - ldr r1, _080BFB40 @ =gScriptResult - movs r0, 0 - b _080BFB48 - .align 2, 0 -_080BFB38: .4byte gSpecialVar_0x8004 -_080BFB3C: .4byte gPlayerParty -_080BFB40: .4byte gScriptResult -_080BFB44: - ldr r1, _080BFB50 @ =gScriptResult - movs r0, 0x1 -_080BFB48: - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFB50: .4byte gScriptResult - thumb_func_end sub_80BFB10 - - thumb_func_start sub_80BFB54 -sub_80BFB54: @ 80BFB54 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - cmp r1, 0 - beq _080BFB8A - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080BFB6E - movs r0, 0x2 - b _080BFB90 -_080BFB6E: - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080BFB7E - movs r0, 0x3 - b _080BFB90 -_080BFB7E: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bls _080BFB8E -_080BFB8A: - movs r0, 0 - b _080BFB90 -_080BFB8E: - movs r0, 0x4 -_080BFB90: - pop {r1} - bx r1 - thumb_func_end sub_80BFB54 - - thumb_func_start GetPlayerTrainerId -GetPlayerTrainerId: @ 80BFB94 - ldr r2, _080BFBAC @ =gSaveBlock2 - ldrb r0, [r2, 0xD] - lsls r0, 24 - ldrb r1, [r2, 0xC] - lsls r1, 16 - orrs r0, r1 - ldrb r1, [r2, 0xB] - lsls r1, 8 - orrs r0, r1 - ldrb r1, [r2, 0xA] - orrs r0, r1 - bx lr - .align 2, 0 -_080BFBAC: .4byte gSaveBlock2 - thumb_func_end GetPlayerTrainerId - thumb_func_start CheckForBigMovieOrEmergencyNewsOnTV CheckForBigMovieOrEmergencyNewsOnTV: @ 80BFBB0 push {lr} diff --git a/src/tv.c b/src/tv.c index ebba61ea3..86d17ecd2 100644 --- a/src/tv.c +++ b/src/tv.c @@ -9,6 +9,7 @@ #include "species.h" #include "pokedex.h" #include "naming_screen.h" +#include "rom4.h" enum { @@ -549,6 +550,47 @@ void sub_80BF9F8(void) DoNamingScreen(3, gStringVar2, spec, gender, pval, c2_080CC144); } +void c2_080CC144(void) +{ + SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2); + c2_exit_to_overworld_1_continue_scripts_restart_music(); +} + +void sub_80BFAE0(void) +{ + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); + StringGetEnd10(gStringVar1); +} + +u32 GetPlayerTrainerId(void); + +void sub_80BFB10(void) +{ + if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) + gScriptResult = 0; + else + gScriptResult = 1; +} + +u8 sub_80BFB54(u8 arg0) +{ + if (arg0 == 0) + return 0; + else if (arg0 > 0 && arg0 <= 20) + return 2; + else if (arg0 > 20 && arg0 <= 40) + return 3; + else if (arg0 > 40 && arg0 <= 60) + return 4; + else + return 0; +} + +u32 GetPlayerTrainerId(void) +{ + return (gSaveBlock2.playerTrainerId[3] << 24) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[0]); +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 3d9f4bb75b6df275e578f3945d998dcd916f9b58 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 16:12:01 -0400 Subject: Players house TV check function --- asm/tv.s | 53 ----------------------------------------------------- include/flags.h | 2 ++ src/tv.c | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+), 53 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index bd0d3540f..408494562 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,59 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start CheckForBigMovieOrEmergencyNewsOnTV -CheckForBigMovieOrEmergencyNewsOnTV: @ 80BFBB0 - push {lr} - ldr r1, _080BFBD0 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080BFBCC - ldr r0, _080BFBD4 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080BFBD8 - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080BFBE0 -_080BFBCC: - movs r0, 0 - b _080BFC0A - .align 2, 0 -_080BFBD0: .4byte gSaveBlock1 -_080BFBD4: .4byte gSaveBlock2 -_080BFBD8: - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080BFBCC -_080BFBE0: - ldr r0, _080BFC04 @ =0x0000085d - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BFBFE - movs r0, 0x83 - lsls r0, 4 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BFC08 -_080BFBFE: - movs r0, 0x1 - b _080BFC0A - .align 2, 0 -_080BFC04: .4byte 0x0000085d -_080BFC08: - movs r0, 0x2 -_080BFC0A: - pop {r1} - bx r1 - thumb_func_end CheckForBigMovieOrEmergencyNewsOnTV - thumb_func_start GetMomOrDadStringForTVMessage GetMomOrDadStringForTVMessage: @ 80BFC10 push {r4,lr} diff --git a/include/flags.h b/include/flags.h index 56325dea6..d2aa0c47f 100644 --- a/include/flags.h +++ b/include/flags.h @@ -51,6 +51,8 @@ #define SYS_BRAILLE_WAIT 0x851 #define SYS_BRAILLE_FLY 0x852 +#define SYS_TV_LATI 0x85D + #define SYS_SHOAL_ITEM 0x85F #define SYS_B_DASH 0x860 // got Running Shoes #define SYS_CTRL_OBJ_DELETE 0x861 diff --git a/src/tv.c b/src/tv.c index 86d17ecd2..2b31cf4d7 100644 --- a/src/tv.c +++ b/src/tv.c @@ -10,6 +10,7 @@ #include "pokedex.h" #include "naming_screen.h" #include "rom4.h" +#include "map_constants.h" enum { @@ -591,6 +592,24 @@ u32 GetPlayerTrainerId(void) return (gSaveBlock2.playerTrainerId[3] << 24) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[0]); } +u8 CheckForBigMovieOrEmergencyNewsOnTV(void) +{ + if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + return 0; + if (gSaveBlock2.playerGender == MALE) { + if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + return 0; + } else { + if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + return 0; + } + if (FlagGet(SYS_TV_LATI) == 1) + return 1; + if (FlagGet(SYS_TV_HOME) == 1) + return 2; + return 1; +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From d1936a98b2d8acb81ff31c3a0deb35892d168de4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 17:09:02 -0400 Subject: GetMomOrDadStringForTVMessage (nonmatching) --- asm/tv.s | 119 ------------------------------------------ include/vars.h | 1 + src/tv.c | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 162 insertions(+), 119 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 408494562..5af0fb284 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,125 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start GetMomOrDadStringForTVMessage -GetMomOrDadStringForTVMessage: @ 80BFC10 - push {r4,lr} - ldr r1, _080BFC40 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080BFC6C - ldr r0, _080BFC44 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080BFC54 - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _080BFC6C - ldr r0, _080BFC48 @ =gStringVar1 - ldr r1, _080BFC4C @ =gOtherText_Mom - bl StringCopy - ldr r0, _080BFC50 @ =0x00004003 - movs r1, 0x1 - bl VarSet - b _080BFC6C - .align 2, 0 -_080BFC40: .4byte gSaveBlock1 -_080BFC44: .4byte gSaveBlock2 -_080BFC48: .4byte gStringVar1 -_080BFC4C: .4byte gOtherText_Mom -_080BFC50: .4byte 0x00004003 -_080BFC54: - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080BFC6C - ldr r0, _080BFCB4 @ =gStringVar1 - ldr r1, _080BFCB8 @ =gOtherText_Mom - bl StringCopy - ldr r0, _080BFCBC @ =0x00004003 - movs r1, 0x1 - bl VarSet -_080BFC6C: - ldr r4, _080BFCBC @ =0x00004003 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _080BFCAA - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - beq _080BFCC0 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080BFCD4 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BFCC0 -_080BFCAA: - ldr r0, _080BFCB4 @ =gStringVar1 - ldr r1, _080BFCB8 @ =gOtherText_Mom - bl StringCopy - b _080BFD10 - .align 2, 0 -_080BFCB4: .4byte gStringVar1 -_080BFCB8: .4byte gOtherText_Mom -_080BFCBC: .4byte 0x00004003 -_080BFCC0: - ldr r0, _080BFCCC @ =gStringVar1 - ldr r1, _080BFCD0 @ =gOtherText_Dad - bl StringCopy - b _080BFD10 - .align 2, 0 -_080BFCCC: .4byte gStringVar1 -_080BFCD0: .4byte gOtherText_Dad -_080BFCD4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080BFD00 - ldr r0, _080BFCF8 @ =gStringVar1 - ldr r1, _080BFCFC @ =gOtherText_Mom - bl StringCopy - adds r0, r4, 0 - movs r1, 0x1 - bl VarSet - b _080BFD10 - .align 2, 0 -_080BFCF8: .4byte gStringVar1 -_080BFCFC: .4byte gOtherText_Mom -_080BFD00: - ldr r0, _080BFD18 @ =gStringVar1 - ldr r1, _080BFD1C @ =gOtherText_Dad - bl StringCopy - adds r0, r4, 0 - movs r1, 0x2 - bl VarSet -_080BFD10: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFD18: .4byte gStringVar1 -_080BFD1C: .4byte gOtherText_Dad - thumb_func_end GetMomOrDadStringForTVMessage - thumb_func_start sub_80BFD20 sub_80BFD20: @ 80BFD20 push {lr} diff --git a/include/vars.h b/include/vars.h index 9a90a9468..0322e38d3 100644 --- a/include/vars.h +++ b/include/vars.h @@ -1,6 +1,7 @@ #ifndef GUARD_VARS_H #define GUARD_VARS_H +#define VAR_0x4003 0x4003 #define VAR_0x401F 0x401F #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 diff --git a/src/tv.c b/src/tv.c index 2b31cf4d7..3d01b3ddb 100644 --- a/src/tv.c +++ b/src/tv.c @@ -11,6 +11,7 @@ #include "naming_screen.h" #include "rom4.h" #include "map_constants.h" +#include "strings.h" enum { @@ -610,6 +611,166 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void) return 1; } +#ifdef NONMATCHING +void GetMomOrDadStringForTVMessage(void) +{ + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { + if (gSaveBlock2.playerGender == MALE) { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } else { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } + } + if (VarGet(VAR_0x4003) == 1) { + StringCopy(gStringVar1, gOtherText_Mom); + } else if (VarGet(VAR_0x4003) == 2) { + StringCopy(gStringVar1, gOtherText_Dad); + } else if (VarGet(VAR_0x4003) > 2) { + if ((u16)(VarGet(VAR_0x4003) & 1) == 0) { + StringCopy(gStringVar1, gOtherText_Mom); + } else { + StringCopy(gStringVar1, gOtherText_Dad); + } + } else { + if ((u16)(Random() & 1) != 0) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } else { + StringCopy(gStringVar1, gOtherText_Dad); + VarSet(VAR_0x4003, 2); + } + } +} +#else +__attribute__((naked)) +void GetMomOrDadStringForTVMessage(void) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + ldr r1, _080BFC40 @ =gSaveBlock1\n\ + movs r0, 0x4\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x1\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC44 @ =gSaveBlock2\n\ + ldrb r0, [r0, 0x8]\n\ + cmp r0, 0\n\ + bne _080BFC54\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC48 @ =gStringVar1\n\ + ldr r1, _080BFC4C @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFC50 @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFC6C\n\ + .align 2, 0\n\ +_080BFC40: .4byte gSaveBlock1\n\ +_080BFC44: .4byte gSaveBlock2\n\ +_080BFC48: .4byte gStringVar1\n\ +_080BFC4C: .4byte gOtherText_Mom\n\ +_080BFC50: .4byte 0x00004003\n\ +_080BFC54:\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x2\n\ + bne _080BFC6C\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFCBC @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ +_080BFC6C:\n\ + ldr r4, _080BFCBC @ =0x00004003\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + beq _080BFCAA\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + beq _080BFCC0\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + bls _080BFCD4\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080BFCC0\n\ +_080BFCAA:\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCB4: .4byte gStringVar1\n\ +_080BFCB8: .4byte gOtherText_Mom\n\ +_080BFCBC: .4byte 0x00004003\n\ +_080BFCC0:\n\ + ldr r0, _080BFCCC @ =gStringVar1\n\ + ldr r1, _080BFCD0 @ =gOtherText_Dad\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCCC: .4byte gStringVar1\n\ +_080BFCD0: .4byte gOtherText_Dad\n\ +_080BFCD4:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BFD00\n\ + ldr r0, _080BFCF8 @ =gStringVar1\n\ + ldr r1, _080BFCFC @ =gOtherText_Mom\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCF8: .4byte gStringVar1\n\ +_080BFCFC: .4byte gOtherText_Mom\n\ +_080BFD00:\n\ + ldr r0, _080BFD18 @ =gStringVar1\n\ + ldr r1, _080BFD1C @ =gOtherText_Dad\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x2\n\ + bl VarSet\n\ +_080BFD10:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BFD18: .4byte gStringVar1\n\ +_080BFD1C: .4byte gOtherText_Dad\n\ +.syntax divided\n"); +} +#endif + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From dae64d9fc5f0779e13e75f65321b733d574b045b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 17:21:47 -0400 Subject: sub_80BFD20 --- asm/tv.s | 18 ------------------ include/vars.h | 2 ++ src/tv.c | 6 ++++++ 3 files changed, 8 insertions(+), 18 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 5af0fb284..54bbe2e6b 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3121,24 +3121,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BFD20 -sub_80BFD20: @ 80BFD20 - push {lr} - ldr r0, _080BFD3C @ =0x000040bc - movs r1, 0 - bl VarSet - ldr r0, _080BFD40 @ =gSaveBlock1 - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r0, 0x5 - bl RemoveFieldObjectByLocalIdAndMap - pop {r0} - bx r0 - .align 2, 0 -_080BFD3C: .4byte 0x000040bc -_080BFD40: .4byte gSaveBlock1 - thumb_func_end sub_80BFD20 - thumb_func_start sub_80BFD44 sub_80BFD44: @ 80BFD44 push {r4-r7,lr} diff --git a/include/vars.h b/include/vars.h index 0322e38d3..cb5bb3296 100644 --- a/include/vars.h +++ b/include/vars.h @@ -35,4 +35,6 @@ #define VAR_PORTHOLE 0x40B4 +#define VAR_0x40BC 0x40BC + #endif // GUARD_VARS_H diff --git a/src/tv.c b/src/tv.c index 3d01b3ddb..ec253c37d 100644 --- a/src/tv.c +++ b/src/tv.c @@ -771,6 +771,12 @@ _080BFD1C: .4byte gOtherText_Dad\n\ } #endif +void sub_80BFD20(void) +{ + VarSet(VAR_0x40BC, 0); + RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); +} + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From 14c5c79f3e3f903e3e7b34b5c0c9bb3b90e7ab75 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 17 May 2017 17:40:04 -0500 Subject: fill holes in party_menu.c and add battle_interface.h header --- asm/party_menu.s | 3110 -------------------------------------------- include/asm.inc.h | 2 +- include/battle_interface.h | 36 + include/menu.h | 2 +- include/songs.h | 4 +- ld_script.txt | 4 - src/battle_interface.c | 32 +- src/menu.c | 2 +- src/party_menu.c | 1182 ++++++++++++++++- 9 files changed, 1201 insertions(+), 3173 deletions(-) create mode 100644 include/battle_interface.h diff --git a/asm/party_menu.s b/asm/party_menu.s index bf00aa168..053d8b8b0 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -7446,3116 +7446,6 @@ PartyMenuGetPopupMenuFunc: @ 806E81C bx lr thumb_func_end PartyMenuGetPopupMenuFunc - .section .text_806E884 - - - - thumb_func_start sub_806E8D0 -sub_806E8D0: @ 806E8D0 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r4, _0806E8FC @ =0x0201c000 - str r2, [r4, 0x10] - strb r0, [r4, 0x4] - bl sub_806CA38 - strb r0, [r4, 0x5] - strh r5, [r4, 0x6] - ldrb r1, [r4, 0x5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0806E900 @ =gPlayerParty - adds r0, r1 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806E8FC: .4byte 0x0201c000 -_0806E900: .4byte gPlayerParty - thumb_func_end sub_806E8D0 - - thumb_func_start PartyMenuUpdateMonHeldItem -PartyMenuUpdateMonHeldItem: @ 806E904 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E93C - adds r0, r5, 0 - adds r1, r4, 0 - bl GiveMailToMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0806E930 - movs r0, 0x1 - b _0806E958 -_0806E930: - ldr r1, _0806E938 @ =gUnknown_0202E8F4 - movs r0, 0x2 - b _0806E940 - .align 2, 0 -_0806E938: .4byte gUnknown_0202E8F4 -_0806E93C: - ldr r1, _0806E960 @ =gUnknown_0202E8F4 - movs r0, 0x1 -_0806E940: - strb r0, [r1] - mov r0, sp - strb r4, [r0] - mov r1, sp - lsrs r0, r4, 8 - strb r0, [r1, 0x1] - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - movs r0, 0 -_0806E958: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806E960: .4byte gUnknown_0202E8F4 - thumb_func_end PartyMenuUpdateMonHeldItem - - thumb_func_start PartyMenuTryGiveMonHeldItem -PartyMenuTryGiveMonHeldItem: @ 806E964 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - mov r9, r5 - ldr r2, _0806E9D4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r6, r1, r2 - ldr r1, _0806E9D8 @ =TaskDummy - str r1, [r6] - adds r1, r5, 0 - mov r2, r8 - bl sub_806E8D0 - ldr r4, _0806E9DC @ =0x0201c000 - ldr r0, [r4] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r2, r0, 16 - adds r7, r2, 0 - ldr r1, _0806E9E0 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - ldr r0, _0806E9E4 @ =gUnknown_0202E8F8 - mov r10, r0 - movs r0, 0 - mov r1, r10 - strh r0, [r1] - cmp r2, 0 - beq _0806EA44 - adds r0, r2, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E9F0 - ldr r0, _0806E9E8 @ =gOtherText_MailMustBeRemoved - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806E9EC @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask - b _0806EA78 - .align 2, 0 -_0806E9D4: .4byte gTasks -_0806E9D8: .4byte TaskDummy -_0806E9DC: .4byte 0x0201c000 -_0806E9E0: .4byte gUnknown_0202E8F4 -_0806E9E4: .4byte gUnknown_0202E8F8 -_0806E9E8: .4byte gOtherText_MailMustBeRemoved -_0806E9EC: .4byte party_menu_link_mon_held_item_object -_0806E9F0: - ldr r0, [r4] - ldr r1, _0806EA30 @ =gStringVar1 - bl GetMonNickname - ldr r1, _0806EA34 @ =gStringVar2 - adds r0, r7, 0 - bl CopyItemName - ldr r4, _0806EA38 @ =gStringVar4 - ldr r1, _0806EA3C @ =gOtherText_AlreadyHolding - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806EA40 @ =Task_ConfirmGiveHeldItem - movs r1, 0x5 - bl CreateTask - adds r0, r5, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EA78 - mov r0, r10 - strh r7, [r0] - b _0806EA78 - .align 2, 0 -_0806EA30: .4byte gStringVar1 -_0806EA34: .4byte gStringVar2 -_0806EA38: .4byte gStringVar4 -_0806EA3C: .4byte gOtherText_AlreadyHolding -_0806EA40: .4byte Task_ConfirmGiveHeldItem -_0806EA44: - ldr r0, [r4] - adds r1, r5, 0 - bl PartyMenuUpdateMonHeldItem - adds r0, r5, 0 - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0806EA66 - mov r1, r8 - str r1, [r6] - b _0806EA78 -_0806EA66: - ldrb r0, [r4, 0x5] - mov r1, r9 - movs r2, 0x1 - bl DisplayGiveHeldItemMessage - ldr r0, _0806EA88 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask -_0806EA78: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806EA88: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonHeldItem - - thumb_func_start party_menu_link_mon_held_item_object -party_menu_link_mon_held_item_object: @ 806EA8C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0806EAC0 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806EABA - ldr r4, _0806EAC4 @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl SetHeldItemIconVisibility - ldr r2, _0806EAC8 @ =gTasks - ldrb r1, [r4, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0x10] - str r1, [r0] - adds r0, r5, 0 - bl DestroyTask -_0806EABA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EAC0: .4byte gUnknown_0202E8F6 -_0806EAC4: .4byte 0x0201c000 -_0806EAC8: .4byte gTasks - thumb_func_end party_menu_link_mon_held_item_object - - thumb_func_start PartyMenuTryGiveMonHeldItem_806EACC -PartyMenuTryGiveMonHeldItem_806EACC: @ 806EACC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806EB74 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _0806EB30 @ =0x0201c000 - ldr r0, [r4] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EB5C - ldr r0, [r4] - ldrh r1, [r4, 0x6] - bl PartyMenuUpdateMonHeldItem - ldrh r0, [r4, 0x6] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0806EB34 - ldrb r0, [r4, 0x5] - adds r1, r5, 0 - movs r2, 0x1 - bl DisplayTakeHeldItemMessage - b _0806EB9A - .align 2, 0 -_0806EB30: .4byte 0x0201c000 -_0806EB34: - ldrh r0, [r4, 0x6] - ldr r1, _0806EB50 @ =gStringVar1 - bl CopyItemName - ldr r4, _0806EB54 @ =gStringVar4 - ldr r1, _0806EB58 @ =gOtherText_TakenAndReplaced - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - b _0806EB9A - .align 2, 0 -_0806EB50: .4byte gStringVar1 -_0806EB54: .4byte gStringVar4 -_0806EB58: .4byte gOtherText_TakenAndReplaced -_0806EB5C: - ldr r0, _0806EB70 @ =gOtherText_BagFullCannotRemoveItem - movs r1, 0 - bl sub_806E834 - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl AddBagItem - b _0806EB9A - .align 2, 0 -_0806EB70: .4byte gOtherText_BagFullCannotRemoveItem -_0806EB74: - cmp r1, 0x1 - beq _0806EB80 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EBA8 -_0806EB80: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EB8E - movs r0, 0x5 - bl PlaySE -_0806EB8E: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect -_0806EB9A: - ldr r0, _0806EBB0 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EBB4 @ =party_menu_link_mon_held_item_object - str r0, [r1] -_0806EBA8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806EBB0: .4byte gTasks -_0806EBB4: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonHeldItem_806EACC - - thumb_func_start Task_ConfirmGiveHeldItem -Task_ConfirmGiveHeldItem: @ 806EBB8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806EBE4 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806EBDE - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806EBE8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EBEC @ =PartyMenuTryGiveMonHeldItem_806EACC - str r0, [r1] -_0806EBDE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EBE4: .4byte gUnknown_0202E8F6 -_0806EBE8: .4byte gTasks -_0806EBEC: .4byte PartyMenuTryGiveMonHeldItem_806EACC - thumb_func_end Task_ConfirmGiveHeldItem - - thumb_func_start DisplayGiveHeldItemMessage -DisplayGiveHeldItemMessage: @ 806EBF0 - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806EC30 @ =gPlayerParty - adds r0, r1 - ldr r1, _0806EC34 @ =gStringVar1 - bl GetMonNickname - ldr r1, _0806EC38 @ =gStringVar2 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _0806EC3C @ =gStringVar4 - ldr r1, _0806EC40 @ =gOtherText_WasGivenToHold - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806E834 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EC30: .4byte gPlayerParty -_0806EC34: .4byte gStringVar1 -_0806EC38: .4byte gStringVar2 -_0806EC3C: .4byte gStringVar4 -_0806EC40: .4byte gOtherText_WasGivenToHold - thumb_func_end DisplayGiveHeldItemMessage - - thumb_func_start PartyMenuTryGiveMonMail -PartyMenuTryGiveMonMail: @ 806EC44 - push {r4,r5,lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806ECA0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _0806ECA4 @ =TaskDummy - str r3, [r1] - movs r1, 0 - bl sub_806E8D0 - ldr r5, _0806ECA8 @ =0x0201c000 - ldr r0, [r5] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - ldr r2, _0806ECAC @ =gUnknown_0202E8F4 - movs r1, 0 - strb r1, [r2] - movs r1, 0xF8 - lsls r1, 6 - adds r2, r5, r1 - ldrb r1, [r2] - adds r1, 0x6 - ldrb r2, [r2, 0x2] - adds r1, r2 - lsls r2, r1, 3 - adds r2, r1 - lsls r2, 2 - ldr r1, _0806ECB0 @ =gSaveBlock1 + 0x2B4C - adds r4, r2, r1 - cmp r0, 0 - beq _0806ECBC - ldr r0, _0806ECB4 @ =gOtherText_PokeHoldingItemCantMail - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806ECB8 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask - b _0806ECDA - .align 2, 0 -_0806ECA0: .4byte gTasks -_0806ECA4: .4byte TaskDummy -_0806ECA8: .4byte 0x0201c000 -_0806ECAC: .4byte gUnknown_0202E8F4 -_0806ECB0: .4byte gSaveBlock1 + 0x2B4C -_0806ECB4: .4byte gOtherText_PokeHoldingItemCantMail -_0806ECB8: .4byte party_menu_link_mon_held_item_object -_0806ECBC: - ldr r0, [r5] - adds r1, r4, 0 - bl GiveMailToMon2 - adds r0, r4, 0 - bl ClearMailStruct - ldr r0, _0806ECE0 @ =gOtherText_MailTransferredMailbox - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806ECE4 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask -_0806ECDA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806ECE0: .4byte gOtherText_MailTransferredMailbox -_0806ECE4: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonMail - - thumb_func_start PartyMenuTryGiveMonHeldItem_806ECE8 -PartyMenuTryGiveMonHeldItem_806ECE8: @ 806ECE8 - push {r4-r6,lr} - sub sp, 0x4 - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806ED38 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _0806ED3C @ =TaskDummy - str r3, [r1] - movs r1, 0 - bl sub_806E8D0 - ldr r5, _0806ED40 @ =0x0201c000 - ldr r0, [r5] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, r4, 0 - cmp r4, 0 - bne _0806ED50 - ldr r4, _0806ED44 @ =gStringVar4 - ldr r1, _0806ED48 @ =gOtherText_NotHoldingAnything - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - bl sub_806E834 - ldr r0, _0806ED4C @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask - b _0806EDA2 - .align 2, 0 -_0806ED38: .4byte gTasks -_0806ED3C: .4byte TaskDummy -_0806ED40: .4byte 0x0201c000 -_0806ED44: .4byte gStringVar4 -_0806ED48: .4byte gOtherText_NotHoldingAnything -_0806ED4C: .4byte party_menu_link_mon_held_item_object -_0806ED50: - mov r0, sp - movs r1, 0 - strb r1, [r0] - strb r1, [r0, 0x1] - adds r0, r4, 0 - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806ED92 - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806ED7C - ldr r0, [r5] - bl TakeMailFromMon -_0806ED7C: - ldrb r0, [r5, 0x5] - adds r1, r6, 0 - movs r2, 0 - bl DisplayTakeHeldItemMessage - ldr r0, [r5] - movs r1, 0xC - mov r2, sp - bl SetMonData - b _0806ED9A -_0806ED92: - ldr r0, _0806EDAC @ =gOtherText_BagFullCannotRemoveItem - movs r1, 0 - bl sub_806E834 -_0806ED9A: - ldr r0, _0806EDB0 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask -_0806EDA2: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806EDAC: .4byte gOtherText_BagFullCannotRemoveItem -_0806EDB0: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonHeldItem_806ECE8 - - thumb_func_start DisplayTakeHeldItemMessage -DisplayTakeHeldItemMessage: @ 806EDB4 - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806EDF4 @ =gPlayerParty - adds r0, r1 - ldr r1, _0806EDF8 @ =gStringVar1 - bl GetMonNickname - ldr r1, _0806EDFC @ =gStringVar2 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _0806EE00 @ =gStringVar4 - ldr r1, _0806EE04 @ =gOtherText_ReceivedTheThingFrom - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806E834 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EDF4: .4byte gPlayerParty -_0806EDF8: .4byte gStringVar1 -_0806EDFC: .4byte gStringVar2 -_0806EE00: .4byte gStringVar4 -_0806EE04: .4byte gOtherText_ReceivedTheThingFrom - thumb_func_end DisplayTakeHeldItemMessage - - thumb_func_start DoTakeMail -DoTakeMail: @ 806EE08 - push {r4,lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806EE48 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _0806EE4C @ =TaskDummy - str r3, [r1] - movs r1, 0 - bl sub_806E8D0 - ldr r4, _0806EE50 @ =0x0201c000 - ldr r0, [r4] - movs r1, 0xC - bl GetMonData - strh r0, [r4, 0x6] - ldr r0, _0806EE54 @ =gOtherText_SendRemovedMailPrompt - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806EE58 @ =Task_ConfirmTakeHeldMail - movs r1, 0x5 - bl CreateTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EE48: .4byte gTasks -_0806EE4C: .4byte TaskDummy -_0806EE50: .4byte 0x0201c000 -_0806EE54: .4byte gOtherText_SendRemovedMailPrompt -_0806EE58: .4byte Task_ConfirmTakeHeldMail - thumb_func_end DoTakeMail - - thumb_func_start Task_LoseMailMessage -Task_LoseMailMessage: @ 806EE5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806EEB0 - ldr r5, _0806EE90 @ =0x0201c000 - ldrh r0, [r5, 0x6] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EE98 - ldr r0, [r5] - bl TakeMailFromMon - ldr r0, _0806EE94 @ =gOtherText_MailTaken - movs r1, 0 - bl sub_806E834 - b _0806EEA0 - .align 2, 0 -_0806EE90: .4byte 0x0201c000 -_0806EE94: .4byte gOtherText_MailTaken -_0806EE98: - ldr r0, _0806EEAC @ =gOtherText_BagFullCannotRemoveItem - movs r1, 0 - bl sub_806E834 -_0806EEA0: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - b _0806EEDE - .align 2, 0 -_0806EEAC: .4byte gOtherText_BagFullCannotRemoveItem -_0806EEB0: - cmp r1, 0x1 - beq _0806EEBC - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EEF0 -_0806EEBC: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EECA - movs r0, 0x5 - bl PlaySE -_0806EECA: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 -_0806EEDE: - bl MenuZeroFillWindowRect - ldr r0, _0806EEF8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EEFC @ =party_menu_link_mon_held_item_object - str r0, [r1] -_0806EEF0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EEF8: .4byte gTasks -_0806EEFC: .4byte party_menu_link_mon_held_item_object - thumb_func_end Task_LoseMailMessage - - thumb_func_start Task_ConfirmLoseMailMessage -Task_ConfirmLoseMailMessage: @ 806EF00 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806EF2C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806EF26 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806EF30 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EF34 @ =Task_LoseMailMessage - str r0, [r1] -_0806EF26: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EF2C: .4byte gUnknown_0202E8F6 -_0806EF30: .4byte gTasks -_0806EF34: .4byte Task_LoseMailMessage - thumb_func_end Task_ConfirmLoseMailMessage - - thumb_func_start Task_TakeHeldMail -Task_TakeHeldMail: @ 806EF38 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806EF9C - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806EF70 @ =0x0201c000 - ldr r0, [r0] - bl TakeMailFromMon2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0806EF78 - ldr r0, _0806EF74 @ =gOtherText_MailWasSent - movs r1, 0 - bl sub_806E834 - b _0806EF80 - .align 2, 0 -_0806EF70: .4byte 0x0201c000 -_0806EF74: .4byte gOtherText_MailWasSent -_0806EF78: - ldr r0, _0806EF90 @ =gOtherText_MailboxIsFull - movs r1, 0 - bl sub_806E834 -_0806EF80: - ldr r0, _0806EF94 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EF98 @ =party_menu_link_mon_held_item_object - str r0, [r1] - b _0806EFD8 - .align 2, 0 -_0806EF90: .4byte gOtherText_MailboxIsFull -_0806EF94: .4byte gTasks -_0806EF98: .4byte party_menu_link_mon_held_item_object -_0806EF9C: - cmp r1, 0x1 - beq _0806EFA8 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EFD8 -_0806EFA8: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EFB6 - movs r0, 0x5 - bl PlaySE -_0806EFB6: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806EFE0 @ =gOtherText_MailRemovedMessageLost - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806EFE4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806EFE8 @ =Task_ConfirmLoseMailMessage - str r1, [r0] -_0806EFD8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EFE0: .4byte gOtherText_MailRemovedMessageLost -_0806EFE4: .4byte gTasks -_0806EFE8: .4byte Task_ConfirmLoseMailMessage - thumb_func_end Task_TakeHeldMail - - thumb_func_start Task_ConfirmTakeHeldMail -Task_ConfirmTakeHeldMail: @ 806EFEC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F018 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F012 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806F01C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F020 @ =Task_TakeHeldMail - str r0, [r1] -_0806F012: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F018: .4byte gUnknown_0202E8F6 -_0806F01C: .4byte gTasks -_0806F020: .4byte Task_TakeHeldMail - thumb_func_end Task_ConfirmTakeHeldMail - - thumb_func_start ItemIdToBattleMoveId -ItemIdToBattleMoveId: @ 806F024 - lsls r0, 16 - ldr r1, _0806F034 @ =0xfedf0000 - adds r0, r1 - ldr r1, _0806F038 @ =gUnknown_08376504 - lsrs r0, 15 - adds r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_0806F034: .4byte 0xfedf0000 -_0806F038: .4byte gUnknown_08376504 - thumb_func_end ItemIdToBattleMoveId - - thumb_func_start pokemon_has_move -pokemon_has_move: @ 806F03C - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - movs r4, 0 -_0806F046: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - cmp r0, r5 - bne _0806F058 - movs r0, 0x1 - b _0806F064 -_0806F058: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0806F046 - movs r0, 0 -_0806F064: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end pokemon_has_move - - thumb_func_start TeachMonTMMove -TeachMonTMMove: @ 806F06C - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - movs r0, 0x5 - bl PlaySE - ldr r1, _0806F0A8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F0AC @ =TaskDummy - str r1, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_806E8D0 - ldr r0, _0806F0B0 @ =Task_TeamMonTMMove - movs r1, 0x5 - bl CreateTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F0A8: .4byte gTasks -_0806F0AC: .4byte TaskDummy -_0806F0B0: .4byte Task_TeamMonTMMove - thumb_func_end TeachMonTMMove - - thumb_func_start Task_TeamMonTMMove -Task_TeamMonTMMove: @ 806F0B4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, r6, 0 - ldr r5, _0806F114 @ =0x0201c000 - ldr r0, [r5] - ldr r1, _0806F118 @ =gStringVar1 - bl GetMonNickname - ldrh r0, [r5, 0x6] - bl ItemIdToBattleMoveId - movs r4, 0 - strh r0, [r5, 0x8] - ldr r0, _0806F11C @ =gStringVar2 - ldrh r2, [r5, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F120 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r1, _0806F124 @ =0xfffff282 - adds r0, r5, r1 - strh r4, [r0] - ldr r0, [r5] - ldrh r1, [r5, 0x8] - bl pokemon_has_move - lsls r0, 24 - cmp r0, 0 - beq _0806F138 - ldr r4, _0806F128 @ =gStringVar4 - ldr r1, _0806F12C @ =gOtherText_AlreadyKnows - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F130 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F134 @ =party_menu_link_mon_held_item_object - b _0806F1B6 - .align 2, 0 -_0806F114: .4byte 0x0201c000 -_0806F118: .4byte gStringVar1 -_0806F11C: .4byte gStringVar2 -_0806F120: .4byte gMoveNames -_0806F124: .4byte 0xfffff282 -_0806F128: .4byte gStringVar4 -_0806F12C: .4byte gOtherText_AlreadyKnows -_0806F130: .4byte gTasks -_0806F134: .4byte party_menu_link_mon_held_item_object -_0806F138: - ldr r0, [r5] - ldrb r1, [r5, 0x6] - subs r1, 0x21 - lsls r1, 24 - lsrs r1, 24 - bl CanMonLearnTMHM - cmp r0, 0 - bne _0806F17C - ldr r4, _0806F16C @ =gStringVar4 - ldr r1, _0806F170 @ =gOtherText_NotCompatible - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F174 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F178 @ =party_menu_link_mon_held_item_object - b _0806F1B6 - .align 2, 0 -_0806F16C: .4byte gStringVar4 -_0806F170: .4byte gOtherText_NotCompatible -_0806F174: .4byte gTasks -_0806F178: .4byte party_menu_link_mon_held_item_object -_0806F17C: - ldr r0, [r5] - ldrh r1, [r5, 0x8] - bl GiveMoveToMon - lsls r0, 16 - ldr r1, _0806F194 @ =0xffff0000 - cmp r0, r1 - beq _0806F198 - adds r0, r6, 0 - bl Task_TeamMonTMMove2 - b _0806F1B8 - .align 2, 0 -_0806F194: .4byte 0xffff0000 -_0806F198: - ldr r4, _0806F1C0 @ =gStringVar4 - ldr r1, _0806F1C4 @ =gOtherText_WantsToLearn - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F1C8 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F1CC @ =sub_806F358 -_0806F1B6: - str r1, [r0] -_0806F1B8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806F1C0: .4byte gStringVar4 -_0806F1C4: .4byte gOtherText_WantsToLearn -_0806F1C8: .4byte gTasks -_0806F1CC: .4byte sub_806F358 - thumb_func_end Task_TeamMonTMMove - - thumb_func_start Task_TeamMonTMMove2 -Task_TeamMonTMMove2: @ 806F1D0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0806F234 @ =gStringVar2 - ldr r5, _0806F238 @ =0x0201c000 - ldrh r2, [r5, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F23C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F240 @ =gStringVar4 - ldr r1, _0806F244 @ =gOtherText_LearnedMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, [r5] - movs r1, 0x4 - bl AdjustFriendship - ldr r1, _0806F248 @ =0xfffff282 - adds r0, r5, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0806F220 - ldrh r1, [r5, 0x6] - movs r0, 0xA9 - lsls r0, 1 - cmp r1, r0 - bhi _0806F220 - adds r0, r1, 0 - movs r1, 0x1 - bl RemoveBagItem -_0806F220: - ldr r0, _0806F24C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F250 @ =Task_TeamMonTMMove3 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F234: .4byte gStringVar2 -_0806F238: .4byte 0x0201c000 -_0806F23C: .4byte gMoveNames -_0806F240: .4byte gStringVar4 -_0806F244: .4byte gOtherText_LearnedMove -_0806F248: .4byte 0xfffff282 -_0806F24C: .4byte gTasks -_0806F250: .4byte Task_TeamMonTMMove3 - thumb_func_end Task_TeamMonTMMove2 - - thumb_func_start Task_TeamMonTMMove3 -Task_TeamMonTMMove3: @ 806F254 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F27C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F276 - ldr r0, _0806F280 @ =0x0000016f - bl PlayFanfare - ldr r1, _0806F284 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F288 @ =Task_TeamMonTMMove4 - str r1, [r0] -_0806F276: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F27C: .4byte gUnknown_0202E8F6 -_0806F280: .4byte 0x0000016f -_0806F284: .4byte gTasks -_0806F288: .4byte Task_TeamMonTMMove4 - thumb_func_end Task_TeamMonTMMove3 - - thumb_func_start Task_TeamMonTMMove4 -Task_TeamMonTMMove4: @ 806F28C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _0806F2F2 - ldr r0, _0806F2D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0806F2B2 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0806F2F2 -_0806F2B2: - ldr r4, _0806F2D4 @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl SetHeldItemIconVisibility - ldr r1, _0806F2D8 @ =0xfffff282 - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _0806F2DC - adds r0, r5, 0 - bl sub_8070C54 - b _0806F2F2 - .align 2, 0 -_0806F2D0: .4byte gMain -_0806F2D4: .4byte 0x0201c000 -_0806F2D8: .4byte 0xfffff282 -_0806F2DC: - ldr r2, _0806F2F8 @ =gTasks - ldrb r1, [r4, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0x10] - str r1, [r0] - adds r0, r6, 0 - bl DestroyTask -_0806F2F2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F2F8: .4byte gTasks - thumb_func_end Task_TeamMonTMMove4 - - thumb_func_start sub_806F2FC -sub_806F2FC: @ 806F2FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - ldr r0, _0806F32C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F34E - ldr r4, _0806F330 @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl SetHeldItemIconVisibility - ldr r1, _0806F334 @ =0xfffff282 - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _0806F338 - adds r0, r5, 0 - bl sub_8070C54 - b _0806F34E - .align 2, 0 -_0806F32C: .4byte gUnknown_0202E8F6 -_0806F330: .4byte 0x0201c000 -_0806F334: .4byte 0xfffff282 -_0806F338: - ldr r2, _0806F354 @ =gTasks - ldrb r1, [r4, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0x10] - str r1, [r0] - adds r0, r6, 0 - bl DestroyTask -_0806F34E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F354: .4byte gTasks - thumb_func_end sub_806F2FC - - thumb_func_start sub_806F358 -sub_806F358: @ 806F358 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F384 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F37E - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806F388 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F38C @ =sub_806F390 - str r0, [r1] -_0806F37E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F384: .4byte gUnknown_0202E8F6 -_0806F388: .4byte gTasks -_0806F38C: .4byte sub_806F390 - thumb_func_end sub_806F358 - - thumb_func_start sub_806F390 -sub_806F390: @ 806F390 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806F3D4 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806F3C8 @ =gOtherText_WhichMoveToForget2 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F3CC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F3D0 @ =sub_806F44C - str r1, [r0] - b _0806F3F4 - .align 2, 0 -_0806F3C8: .4byte gOtherText_WhichMoveToForget2 -_0806F3CC: .4byte gTasks -_0806F3D0: .4byte sub_806F44C -_0806F3D4: - cmp r1, 0x1 - beq _0806F3E0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F3F4 -_0806F3E0: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F3EE - movs r0, 0x5 - bl PlaySE -_0806F3EE: - adds r0, r5, 0 - bl StopTryingToTeachMove_806F614 -_0806F3F4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_806F390 - - thumb_func_start sub_806F3FC -sub_806F3FC: @ 806F3FC - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0806F438 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806F430 - ldr r0, _0806F43C @ =gPlayerParty - ldr r4, _0806F440 @ =0x0201c000 - ldrb r1, [r4, 0x5] - ldr r2, _0806F444 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0806F448 @ =sub_808B564 - ldrh r4, [r4, 0x8] - str r4, [sp] - bl sub_809D9F0 - adds r0, r5, 0 - bl DestroyTask -_0806F430: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F438: .4byte gPaletteFade -_0806F43C: .4byte gPlayerParty -_0806F440: .4byte 0x0201c000 -_0806F444: .4byte gPlayerPartyCount -_0806F448: .4byte sub_808B564 - thumb_func_end sub_806F3FC - - thumb_func_start sub_806F44C -sub_806F44C: @ 806F44C - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F484 @ =gUnknown_0202E8F6 - ldrb r1, [r0] - cmp r1, 0 - bne _0806F47A - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0806F488 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F48C @ =sub_806F3FC - str r1, [r0] -_0806F47A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F484: .4byte gUnknown_0202E8F6 -_0806F488: .4byte gTasks -_0806F48C: .4byte sub_806F3FC - thumb_func_end sub_806F44C - - thumb_func_start TaughtMove -TaughtMove: @ 806F490 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0806F50C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806F506 - ldr r1, _0806F510 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F514 @ =TaskDummy - str r1, [r0] - ldr r0, _0806F518 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0806F51C @ =sub_808B508 - adds r0, r3, 0 - bl sub_806E8D0 - bl sub_809FA30 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r5, _0806F520 @ =0x0201c000 - ldr r0, [r5] - adds r1, 0xD - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, [r5] - ldr r1, _0806F524 @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F528 @ =gStringVar2 - movs r1, 0xD - muls r1, r4 - ldr r2, _0806F52C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F530 @ =gStringVar4 - ldr r1, _0806F534 @ =gOtherText_ForgetMove123_2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806F538 @ =TMMoveUpdateMoveSlot - movs r1, 0x5 - bl CreateTask -_0806F506: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F50C: .4byte gPaletteFade -_0806F510: .4byte gTasks -_0806F514: .4byte TaskDummy -_0806F518: .4byte gScriptItemId -_0806F51C: .4byte sub_808B508 -_0806F520: .4byte 0x0201c000 -_0806F524: .4byte gStringVar1 -_0806F528: .4byte gStringVar2 -_0806F52C: .4byte gMoveNames -_0806F530: .4byte gStringVar4 -_0806F534: .4byte gOtherText_ForgetMove123_2 -_0806F538: .4byte TMMoveUpdateMoveSlot - thumb_func_end TaughtMove - - thumb_func_start TMMoveUpdateMoveSlot -TMMoveUpdateMoveSlot: @ 806F53C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0806F580 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F57A - ldr r4, _0806F584 @ =0x0201c000 - ldr r5, [r4] - bl sub_809FA30 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl RemoveMonPPBonus - ldr r5, [r4] - ldrh r4, [r4, 0x8] - bl sub_809FA30 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl SetMonMoveSlot - adds r0, r6, 0 - bl Task_TeamMonTMMove2 -_0806F57A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F580: .4byte gUnknown_0202E8F6 -_0806F584: .4byte 0x0201c000 - thumb_func_end TMMoveUpdateMoveSlot - - thumb_func_start StopTryingToTeachMove_806F588 -StopTryingToTeachMove_806F588: @ 806F588 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0806F5E8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806F5E0 - ldr r1, _0806F5EC @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F5F0 @ =TaskDummy - str r1, [r0] - ldr r0, _0806F5F4 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0806F5F8 @ =sub_808B508 - adds r0, r3, 0 - bl sub_806E8D0 - ldr r0, _0806F5FC @ =gStringVar2 - ldr r1, _0806F600 @ =0x0201c000 - ldrh r2, [r1, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F604 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F608 @ =gStringVar4 - ldr r1, _0806F60C @ =gOtherText_StopTryingTo - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806F610 @ =StopTryingToTeachMove_806F67C - movs r1, 0x5 - bl CreateTask -_0806F5E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F5E8: .4byte gPaletteFade -_0806F5EC: .4byte gTasks -_0806F5F0: .4byte TaskDummy -_0806F5F4: .4byte gScriptItemId -_0806F5F8: .4byte sub_808B508 -_0806F5FC: .4byte gStringVar2 -_0806F600: .4byte 0x0201c000 -_0806F604: .4byte gMoveNames -_0806F608: .4byte gStringVar4 -_0806F60C: .4byte gOtherText_StopTryingTo -_0806F610: .4byte StopTryingToTeachMove_806F67C - thumb_func_end StopTryingToTeachMove_806F588 - - thumb_func_start StopTryingToTeachMove_806F614 -StopTryingToTeachMove_806F614: @ 806F614 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806F660 @ =gStringVar2 - ldr r1, _0806F664 @ =0x0201c000 - ldrh r2, [r1, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F668 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F66C @ =gStringVar4 - ldr r1, _0806F670 @ =gOtherText_StopTryingTo - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F674 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F678 @ =StopTryingToTeachMove_806F67C - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F660: .4byte gStringVar2 -_0806F664: .4byte 0x0201c000 -_0806F668: .4byte gMoveNames -_0806F66C: .4byte gStringVar4 -_0806F670: .4byte gOtherText_StopTryingTo -_0806F674: .4byte gTasks -_0806F678: .4byte StopTryingToTeachMove_806F67C - thumb_func_end StopTryingToTeachMove_806F614 - - thumb_func_start StopTryingToTeachMove_806F67C -StopTryingToTeachMove_806F67C: @ 806F67C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F6A8 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F6A2 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806F6AC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F6B0 @ =StopTryingToTeachMove_806F6B4 - str r0, [r1] -_0806F6A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F6A8: .4byte gUnknown_0202E8F6 -_0806F6AC: .4byte gTasks -_0806F6B0: .4byte StopTryingToTeachMove_806F6B4 - thumb_func_end StopTryingToTeachMove_806F67C - - thumb_func_start StopTryingToTeachMove_806F6B4 -StopTryingToTeachMove_806F6B4: @ 806F6B4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806F730 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _0806F710 @ =0x0201c000 - ldr r0, [r4] - ldr r1, _0806F714 @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F718 @ =gStringVar2 - ldrh r2, [r4, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F71C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F720 @ =gStringVar4 - ldr r1, _0806F724 @ =gOtherText_DidNotLearnMove2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F728 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F72C @ =sub_806F2FC - b _0806F78E - .align 2, 0 -_0806F710: .4byte 0x0201c000 -_0806F714: .4byte gStringVar1 -_0806F718: .4byte gStringVar2 -_0806F71C: .4byte gMoveNames -_0806F720: .4byte gStringVar4 -_0806F724: .4byte gOtherText_DidNotLearnMove2 -_0806F728: .4byte gTasks -_0806F72C: .4byte sub_806F2FC -_0806F730: - cmp r1, 0x1 - beq _0806F73C - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F790 -_0806F73C: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F74A - movs r0, 0x5 - bl PlaySE -_0806F74A: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _0806F798 @ =0x0201c000 - ldr r0, [r4] - ldr r1, _0806F79C @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F7A0 @ =gStringVar2 - ldrh r2, [r4, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F7A4 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F7A8 @ =gStringVar4 - ldr r1, _0806F7AC @ =gOtherText_WantsToLearn - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F7B0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F7B4 @ =sub_806F358 -_0806F78E: - str r1, [r0] -_0806F790: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F798: .4byte 0x0201c000 -_0806F79C: .4byte gStringVar1 -_0806F7A0: .4byte gStringVar2 -_0806F7A4: .4byte gMoveNames -_0806F7A8: .4byte gStringVar4 -_0806F7AC: .4byte gOtherText_WantsToLearn -_0806F7B0: .4byte gTasks -_0806F7B4: .4byte sub_806F358 - thumb_func_end StopTryingToTeachMove_806F6B4 - - thumb_func_start IsHMMove -IsHMMove: @ 806F7B8 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldr r3, _0806F7D4 @ =gUnknown_08376504 -_0806F7C2: - adds r0, r1, 0 - adds r0, 0x32 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r2 - bne _0806F7D8 - movs r0, 0x1 - b _0806F7E4 - .align 2, 0 -_0806F7D4: .4byte gUnknown_08376504 -_0806F7D8: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x7 - bls _0806F7C2 - movs r0, 0 -_0806F7E4: - pop {r1} - bx r1 - thumb_func_end IsHMMove - - thumb_func_start sub_806F7E8 -sub_806F7E8: @ 806F7E8 - push {r4-r6,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r3, r0, 2 - adds r3, r0 - lsls r3, 3 - ldr r0, _0806F898 @ =gTasks + 0x8 - adds r3, r0 - movs r0, 0x14 - ldrsh r1, [r3, r0] - str r1, [r5] - movs r4, 0x16 - ldrsh r0, [r3, r4] - str r0, [r5, 0x4] - movs r4, 0x18 - ldrsh r0, [r3, r4] - lsls r2, 24 - asrs r2, 24 - muls r0, r2 - str r0, [r5, 0x8] - movs r0, 0x80 - lsls r0, 1 - str r0, [r5, 0x10] - ldr r6, _0806F89C @ =0x0201b000 - ldr r2, _0806F8A0 @ =0x00000282 - adds r0, r6, r2 - movs r4, 0 - ldrsh r0, [r0, r4] - bl GetHPBarLevel - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - cmp r2, 0x2 - bls _0806F83E - ldrb r0, [r5, 0xC] - movs r1, 0x20 - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r5, 0xC] -_0806F83E: - cmp r2, 0x2 - bne _0806F850 - ldrb r0, [r5, 0xC] - movs r1, 0x20 - negs r1, r1 - ands r1, r0 - movs r0, 0x5 - orrs r1, r0 - strb r1, [r5, 0xC] -_0806F850: - cmp r3, 0x1 - bhi _0806F862 - ldrb r0, [r5, 0xC] - movs r1, 0x20 - negs r1, r1 - ands r1, r0 - movs r0, 0x6 - orrs r1, r0 - strb r1, [r5, 0xC] -_0806F862: - ldr r4, _0806F8A4 @ =gUnknown_08376858 - bl IsDoubleBattle - movs r2, 0x80 - lsls r2, 5 - adds r1, r6, r2 - ldrb r2, [r1, 0x5] - lsls r2, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r2, r1 - adds r2, r4 - ldr r2, [r2] - ldr r4, _0806F8A8 @ =0x0000100c - adds r1, r6, r4 - adds r0, r5, 0 - movs r3, 0 - bl sub_80460C8 - lsls r0, 16 - asrs r0, 16 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806F898: .4byte gTasks + 0x8 -_0806F89C: .4byte 0x0201b000 -_0806F8A0: .4byte 0x00000282 -_0806F8A4: .4byte gUnknown_08376858 -_0806F8A8: .4byte 0x0000100c - thumb_func_end sub_806F7E8 - - thumb_func_start sub_806F8AC -sub_806F8AC: @ 806F8AC - push {r4-r7,lr} - sub sp, 0x18 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0x1 - negs r4, r4 - adds r0, r6, 0 - mov r1, sp - adds r2, r4, 0 - bl sub_806F7E8 - ldr r1, _0806F8F4 @ =0x0201b000 - ldr r2, _0806F8F8 @ =0x00000282 - adds r5, r1, r2 - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - cmp r0, r4 - beq _0806F8D4 - b _0806F9F0 -_0806F8D4: - movs r0, 0x80 - lsls r0, 5 - adds r1, r0 - movs r0, 0 - str r0, [r1, 0xC] - ldr r0, [sp, 0x8] - negs r3, r0 - ldr r2, [sp, 0x4] - adds r0, r3, r2 - ldr r1, [sp] - cmp r0, r1 - ble _0806F8FC - subs r1, r2 - add r0, sp, 0x14 - strh r1, [r0] - b _0806F900 - .align 2, 0 -_0806F8F4: .4byte 0x0201b000 -_0806F8F8: .4byte 0x00000282 -_0806F8FC: - add r0, sp, 0x14 - strh r3, [r0] -_0806F900: - adds r5, r0, 0 - ldr r1, _0806F940 @ =gBattleMoveDamage - ldrh r0, [r5] - negs r0, r0 - str r0, [r1] - ldr r0, _0806F944 @ =0x0201c000 - ldr r0, [r0] - ldr r1, _0806F948 @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F94C @ =gStringVar2 - ldrh r1, [r5] - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r2, _0806F950 @ =gTasks - lsls r1, r6, 2 - adds r0, r1, r6 - lsls r0, 3 - adds r0, r2 - movs r2, 0x24 - ldrsh r0, [r0, r2] - adds r7, r1, 0 - cmp r0, 0 - bne _0806F95C - ldr r0, _0806F954 @ =gStringVar4 - ldr r1, _0806F958 @ =gOtherText_HPRestoredBy - bl StringExpandPlaceholders - b _0806F964 - .align 2, 0 -_0806F940: .4byte gBattleMoveDamage -_0806F944: .4byte 0x0201c000 -_0806F948: .4byte gStringVar1 -_0806F94C: .4byte gStringVar2 -_0806F950: .4byte gTasks -_0806F954: .4byte gStringVar4 -_0806F958: .4byte gOtherText_HPRestoredBy -_0806F95C: - ldr r0, _0806F9D4 @ =gStringVar4 - ldr r1, _0806F9D8 @ =gOtherText_RegainedHealth - bl StringExpandPlaceholders -_0806F964: - ldr r4, _0806F9DC @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - bl SetMonIconAnim - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldrb r1, [r4, 0x5] - lsls r1, 1 - adds r0, r1 - ldr r1, _0806F9E0 @ =gUnknown_083769A8 - adds r0, r1 - movs r1, 0x7 - bl task_pc_turn_off - ldr r0, _0806F9E4 @ =0xfffff261 - adds r1, r4, r0 - movs r0, 0x2 - strb r0, [r1] - ldr r0, _0806F9D4 @ =gStringVar4 - movs r1, 0x1 - bl sub_806E834 - ldr r1, [sp, 0x4] - ldrh r0, [r5] - adds r0, r1 - strh r0, [r5] - ldr r0, [r4] - movs r1, 0x39 - adds r2, r5, 0 - bl SetMonData - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl RemoveBagItem - bl sub_8032638 - ldr r1, _0806F9E8 @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F9EC @ =sub_806FB44 - str r1, [r0] - b _0806FA10 - .align 2, 0 -_0806F9D4: .4byte gStringVar4 -_0806F9D8: .4byte gOtherText_RegainedHealth -_0806F9DC: .4byte 0x0201c000 -_0806F9E0: .4byte gUnknown_083769A8 -_0806F9E4: .4byte 0xfffff261 -_0806F9E8: .4byte gTasks -_0806F9EC: .4byte sub_806FB44 -_0806F9F0: - movs r2, 0x80 - lsls r2, 5 - adds r0, r1, r2 - ldrb r4, [r0, 0x5] - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r5] - ldr r3, [sp] - lsls r3, 16 - lsrs r3, 16 - adds r0, r4, 0 - bl PartyMenuDoPrintHP -_0806FA10: - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806F8AC - - thumb_func_start sub_806FA18 -sub_806FA18: @ 806FA18 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - mov r1, sp - movs r2, 0x1 - bl sub_806F7E8 - ldr r6, _0806FAC4 @ =0x0201b000 - ldr r1, _0806FAC8 @ =0x00000282 - adds r7, r6, r1 - strh r0, [r7] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0806FAE4 - movs r0, 0x1 - bl PlaySE - movs r0, 0x80 - lsls r0, 5 - adds r4, r6, r0 - movs r0, 0 - str r0, [r4, 0xC] - ldr r2, _0806FACC @ =gTasks - lsls r3, r5, 2 - adds r3, r5 - lsls r3, 3 - adds r5, r3, r2 - ldrh r0, [r5, 0x1E] - ldrh r1, [r5, 0x20] - subs r0, r1 - strh r0, [r5, 0x1E] - ldr r0, [r4] - adds r2, r3 - adds r2, 0x1E - movs r1, 0x39 - bl SetMonData - ldrb r0, [r4, 0x4] - ldr r1, _0806FAD0 @ =0xfffe6000 - adds r6, r1 - ldrb r1, [r6, 0x1] - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - bl SetMonIconAnim - ldr r2, _0806FAD4 @ =gSprites - ldrb r1, [r6, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strb r0, [r4, 0x5] - ldrb r1, [r4, 0x5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0806FAD8 @ =gPlayerParty - adds r0, r1 - str r0, [r4] - movs r1, 0x3A - bl GetMonData - strh r0, [r5, 0x1C] - ldr r0, [r4] - movs r1, 0x39 - bl GetMonData - strh r0, [r5, 0x1E] - ldr r0, _0806FADC @ =0xffff8000 - str r0, [r4, 0xC] - ldr r0, [r4, 0x10] - str r0, [r4, 0x14] - ldr r0, _0806FAE0 @ =sub_806F8AC - str r0, [r5] - ldrh r0, [r5, 0x1E] - strh r0, [r7] - b _0806FB04 - .align 2, 0 -_0806FAC4: .4byte 0x0201b000 -_0806FAC8: .4byte 0x00000282 -_0806FACC: .4byte gTasks -_0806FAD0: .4byte 0xfffe6000 -_0806FAD4: .4byte gSprites -_0806FAD8: .4byte gPlayerParty -_0806FADC: .4byte 0xffff8000 -_0806FAE0: .4byte sub_806F8AC -_0806FAE4: - movs r1, 0x80 - lsls r1, 5 - adds r0, r6, r1 - ldrb r4, [r0, 0x5] - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r7] - ldr r3, [sp] - lsls r3, 16 - lsrs r3, 16 - adds r0, r4, 0 - bl PartyMenuDoPrintHP -_0806FB04: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806FA18 - - thumb_func_start sub_806FB0C -sub_806FB0C: @ 806FB0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806FB38 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806FB32 - ldr r3, _0806FB3C @ =gTasks - ldr r2, _0806FB40 @ =0x0201c000 - ldrb r1, [r2, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r3 - ldr r1, [r2, 0x10] - str r1, [r0] - adds r0, r4, 0 - bl DestroyTask -_0806FB32: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806FB38: .4byte gUnknown_0202E8F6 -_0806FB3C: .4byte gTasks -_0806FB40: .4byte 0x0201c000 - thumb_func_end sub_806FB0C - - thumb_func_start sub_806FB44 -sub_806FB44: @ 806FB44 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806FB70 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806FB6A - ldr r3, _0806FB74 @ =gTasks - ldr r2, _0806FB78 @ =0x0201c000 - ldrb r1, [r2, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r3 - ldr r1, [r2, 0x14] - str r1, [r0] - adds r0, r4, 0 - bl DestroyTask -_0806FB6A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806FB70: .4byte gUnknown_0202E8F6 -_0806FB74: .4byte gTasks -_0806FB78: .4byte 0x0201c000 - thumb_func_end sub_806FB44 - - thumb_func_start IsHPRecoveryItem -IsHPRecoveryItem: @ 806FB7C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0806FB90 - ldr r0, _0806FB8C @ =gSaveBlock1 + 0x3676 - b _0806FB9A - .align 2, 0 -_0806FB8C: .4byte gSaveBlock1 + 0x3676 -_0806FB90: - ldr r1, _0806FBA8 @ =gItemEffectTable - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] -_0806FB9A: - ldrb r1, [r0, 0x4] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0806FBAC - movs r0, 0 - b _0806FBAE - .align 2, 0 -_0806FBA8: .4byte gItemEffectTable -_0806FBAC: - movs r0, 0x1 -_0806FBAE: - pop {r1} - bx r1 - thumb_func_end IsHPRecoveryItem - - thumb_func_start PartyMenuUpdateLevelOrStatus -PartyMenuUpdateLevelOrStatus: @ 806FBB4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PartyMenuClearLevelStatusTilemap - adds r0, r4, 0 - adds r1, r5, 0 - bl PartyMenuPrintMonLevelOrStatus - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PartyMenuUpdateLevelOrStatus - - thumb_func_start GetMedicineItemEffectMessage -GetMedicineItemEffectMessage: @ 806FBD0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x3 - cmp r0, 0x12 - bls _0806FBE6 - b _0806FD7C -_0806FBE6: - lsls r0, 2 - ldr r1, _0806FBF0 @ =_0806FBF4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806FBF0: .4byte _0806FBF4 - .align 2, 0 -_0806FBF4: - .4byte _0806FC40 - .4byte _0806FC54 - .4byte _0806FC68 - .4byte _0806FC7C - .4byte _0806FC90 - .4byte _0806FCA4 - .4byte _0806FCB8 - .4byte _0806FD7C - .4byte _0806FCCC - .4byte _0806FCF0 - .4byte _0806FCE0 - .4byte _0806FD20 - .4byte _0806FD30 - .4byte _0806FD10 - .4byte _0806FD00 - .4byte _0806FD7C - .4byte _0806FD54 - .4byte _0806FD54 - .4byte _0806FD68 -_0806FC40: - ldr r0, _0806FC4C @ =gStringVar4 - ldr r1, _0806FC50 @ =gOtherText_CuredPoisoning - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC4C: .4byte gStringVar4 -_0806FC50: .4byte gOtherText_CuredPoisoning -_0806FC54: - ldr r0, _0806FC60 @ =gStringVar4 - ldr r1, _0806FC64 @ =gOtherText_WokeUp - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC60: .4byte gStringVar4 -_0806FC64: .4byte gOtherText_WokeUp -_0806FC68: - ldr r0, _0806FC74 @ =gStringVar4 - ldr r1, _0806FC78 @ =gOtherText_BurnHealed - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC74: .4byte gStringVar4 -_0806FC78: .4byte gOtherText_BurnHealed -_0806FC7C: - ldr r0, _0806FC88 @ =gStringVar4 - ldr r1, _0806FC8C @ =gOtherText_ThawedOut - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC88: .4byte gStringVar4 -_0806FC8C: .4byte gOtherText_ThawedOut -_0806FC90: - ldr r0, _0806FC9C @ =gStringVar4 - ldr r1, _0806FCA0 @ =gOtherText_CuredParalysis - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC9C: .4byte gStringVar4 -_0806FCA0: .4byte gOtherText_CuredParalysis -_0806FCA4: - ldr r0, _0806FCB0 @ =gStringVar4 - ldr r1, _0806FCB4 @ =gOtherText_SnapConfusion - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FCB0: .4byte gStringVar4 -_0806FCB4: .4byte gOtherText_SnapConfusion -_0806FCB8: - ldr r0, _0806FCC4 @ =gStringVar4 - ldr r1, _0806FCC8 @ =gOtherText_GotOverLove - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FCC4: .4byte gStringVar4 -_0806FCC8: .4byte gOtherText_GotOverLove -_0806FCCC: - ldr r0, _0806FCD8 @ =gStringVar4 - ldr r1, _0806FCDC @ =gOtherText_BecameHealthy - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FCD8: .4byte gStringVar4 -_0806FCDC: .4byte gOtherText_BecameHealthy -_0806FCE0: - ldr r0, _0806FCE8 @ =gStringVar2 - ldr r1, _0806FCEC @ =gOtherText_Hp2 - b _0806FD34 - .align 2, 0 -_0806FCE8: .4byte gStringVar2 -_0806FCEC: .4byte gOtherText_Hp2 -_0806FCF0: - ldr r0, _0806FCF8 @ =gStringVar2 - ldr r1, _0806FCFC @ =gOtherText_Attack - b _0806FD34 - .align 2, 0 -_0806FCF8: .4byte gStringVar2 -_0806FCFC: .4byte gOtherText_Attack -_0806FD00: - ldr r0, _0806FD08 @ =gStringVar2 - ldr r1, _0806FD0C @ =gOtherText_Defense - b _0806FD34 - .align 2, 0 -_0806FD08: .4byte gStringVar2 -_0806FD0C: .4byte gOtherText_Defense -_0806FD10: - ldr r0, _0806FD18 @ =gStringVar2 - ldr r1, _0806FD1C @ =gOtherText_Speed - b _0806FD34 - .align 2, 0 -_0806FD18: .4byte gStringVar2 -_0806FD1C: .4byte gOtherText_Speed -_0806FD20: - ldr r0, _0806FD28 @ =gStringVar2 - ldr r1, _0806FD2C @ =gOtherText_SpAtk2 - b _0806FD34 - .align 2, 0 -_0806FD28: .4byte gStringVar2 -_0806FD2C: .4byte gOtherText_SpAtk2 -_0806FD30: - ldr r0, _0806FD44 @ =gStringVar2 - ldr r1, _0806FD48 @ =gOtherText_SpDef2 -_0806FD34: - bl StringCopy - ldr r0, _0806FD4C @ =gStringVar4 - ldr r1, _0806FD50 @ =gOtherText_WasRaised - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FD44: .4byte gStringVar2 -_0806FD48: .4byte gOtherText_SpDef2 -_0806FD4C: .4byte gStringVar4 -_0806FD50: .4byte gOtherText_WasRaised -_0806FD54: - ldr r0, _0806FD60 @ =gStringVar4 - ldr r1, _0806FD64 @ =gOtherText_PPIncreased - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FD60: .4byte gStringVar4 -_0806FD64: .4byte gOtherText_PPIncreased -_0806FD68: - ldr r0, _0806FD74 @ =gStringVar4 - ldr r1, _0806FD78 @ =gOtherText_PPRestored - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FD74: .4byte gStringVar4 -_0806FD78: .4byte gOtherText_PPRestored -_0806FD7C: - ldr r0, _0806FD88 @ =gStringVar4 - ldr r1, _0806FD8C @ =gOtherText_WontHaveAnyEffect - bl StringExpandPlaceholders -_0806FD84: - pop {r0} - bx r0 - .align 2, 0 -_0806FD88: .4byte gStringVar4 -_0806FD8C: .4byte gOtherText_WontHaveAnyEffect - thumb_func_end GetMedicineItemEffectMessage - - thumb_func_start IsMedicineIneffective -IsMedicineIneffective: @ 806FD90 - push {r4,lr} - adds r4, r0, 0 - lsls r0, r1, 16 - lsrs r0, 16 - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bne _0806FDBC - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r1, _0806FDB8 @ =0x0000012f - cmp r0, r1 - bne _0806FDBC - movs r0, 0x1 - b _0806FDBE - .align 2, 0 -_0806FDB8: .4byte 0x0000012f -_0806FDBC: - movs r0, 0 -_0806FDBE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsMedicineIneffective - - thumb_func_start ExecuteTableBasedItemEffect__ -ExecuteTableBasedItemEffect__: @ 806FDC4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, _0806FDF0 @ =gMain - ldr r1, _0806FDF4 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0806FDFC - movs r0, 0x64 - muls r0, r3 - ldr r1, _0806FDF8 @ =gPlayerParty - adds r0, r1 - adds r1, r5, 0 - adds r2, r3, 0 - b _0806FE16 - .align 2, 0 -_0806FDF0: .4byte gMain -_0806FDF4: .4byte 0x0000043d -_0806FDF8: .4byte gPlayerParty -_0806FDFC: - movs r0, 0x64 - adds r4, r3, 0 - muls r4, r0 - ldr r0, _0806FE28 @ =gPlayerParty - adds r4, r0 - adds r0, r3, 0 - bl sub_8094C20 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 -_0806FE16: - adds r3, r6, 0 - bl ExecuteTableBasedItemEffect_ - lsls r0, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806FE28: .4byte gPlayerParty - thumb_func_end ExecuteTableBasedItemEffect__ - - thumb_func_start UseMedicine -UseMedicine: @ 806FE2C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r4, r0, 0 - adds r5, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 16 - lsrs r6, r1, 16 - movs r0, 0 - mov r9, r0 - ldr r1, _0806FED4 @ =gTasks - mov r10, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - add r1, r10 - ldr r0, _0806FED8 @ =TaskDummy - str r0, [r1] - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_806E8D0 - ldr r5, _0806FEDC @ =0x0201c000 - ldr r0, [r5] - adds r1, r6, 0 - bl IsMedicineIneffective - lsls r0, 24 - cmp r0, 0 - bne _0806FEE0 - adds r0, r6, 0 - bl IsHPRecoveryItem - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r2, r7, 2 - mov r8, r2 - cmp r0, 0x1 - bne _0806FEC2 - ldr r0, [r5] - movs r1, 0x3A - bl GetMonData - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - mov r2, r10 - adds r4, r1, r2 - strh r0, [r4, 0x1C] - ldr r0, [r5] - movs r1, 0x39 - bl GetMonData - strh r0, [r4, 0x1E] - movs r3, 0x1C - ldrsh r1, [r4, r3] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _0806FEC2 - movs r0, 0 - mov r9, r0 - mov r1, r9 - strh r1, [r4, 0x1C] - strh r1, [r4, 0x1E] -_0806FEC2: - ldr r0, _0806FEDC @ =0x0201c000 - ldrb r0, [r0, 0x5] - adds r1, r6, 0 - movs r2, 0 - bl ExecuteTableBasedItemEffect__ - lsls r0, 24 - lsrs r0, 24 - b _0806FEE6 - .align 2, 0 -_0806FED4: .4byte gTasks -_0806FED8: .4byte TaskDummy -_0806FEDC: .4byte 0x0201c000 -_0806FEE0: - movs r0, 0x1 - lsls r2, r7, 2 - mov r8, r2 -_0806FEE6: - cmp r0, 0 - beq _0806FF14 - ldr r1, _0806FF08 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldr r0, _0806FF0C @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806FF10 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - b _08070002 - .align 2, 0 -_0806FF08: .4byte gUnknown_0202E8F4 -_0806FF0C: .4byte gOtherText_WontHaveAnyEffect -_0806FF10: .4byte gTasks -_0806FF14: - ldr r1, _0806FF30 @ =gUnknown_0202E8F4 - movs r0, 0x1 - strb r0, [r1] - adds r0, r6, 0 - bl IsBlueYellowRedFlute - lsls r0, 24 - cmp r0, 0 - bne _0806FF34 - movs r0, 0x1 - bl PlaySE - b _0806FF3A - .align 2, 0 -_0806FF30: .4byte gUnknown_0202E8F4 -_0806FF34: - movs r0, 0x75 - bl PlaySE -_0806FF3A: - ldr r4, _0806FF88 @ =0x0201c000 - ldr r0, [r4] - bl GetMonStatusAndPokerus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _0806FF4E - cmp r0, 0 - bne _0806FF56 -_0806FF4E: - ldr r0, [r4] - ldrb r1, [r4, 0x5] - bl PartyMenuUpdateLevelOrStatus -_0806FF56: - mov r0, r9 - cmp r0, 0x1 - bne _0806FFC8 - ldr r4, _0806FF88 @ =0x0201c000 - ldr r0, [r4] - movs r1, 0x39 - bl GetMonData - ldr r2, _0806FF8C @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r2, r1, r2 - ldrh r1, [r2, 0x1E] - subs r0, r1 - strh r0, [r2, 0x20] - ldr r0, _0806FF90 @ =0xffff8000 - str r0, [r4, 0xC] - movs r1, 0x1E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _0806FF94 - mov r3, r9 - strh r3, [r2, 0x24] - b _0806FF98 - .align 2, 0 -_0806FF88: .4byte 0x0201c000 -_0806FF8C: .4byte gTasks -_0806FF90: .4byte 0xffff8000 -_0806FF94: - movs r0, 0 - strh r0, [r2, 0x24] -_0806FF98: - ldr r2, _0806FFB8 @ =0x0201c000 - ldr r0, [r2, 0x10] - str r0, [r2, 0x14] - ldr r1, _0806FFBC @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806FFC0 @ =sub_806F8AC - str r1, [r0] - ldrh r0, [r0, 0x1E] - ldr r1, _0806FFC4 @ =0xfffff282 - adds r2, r1 - strh r0, [r2] - b _0807000A - .align 2, 0 -_0806FFB8: .4byte 0x0201c000 -_0806FFBC: .4byte gTasks -_0806FFC0: .4byte sub_806F8AC -_0806FFC4: .4byte 0xfffff282 -_0806FFC8: - ldr r4, _08070018 @ =0x0201c000 - ldr r0, [r4] - ldr r1, _0807001C @ =gStringVar1 - bl GetMonNickname - adds r0, r6, 0 - bl IsBlueYellowRedFlute - lsls r0, 24 - cmp r0, 0 - bne _0806FFE6 - adds r0, r6, 0 - movs r1, 0x1 - bl RemoveBagItem -_0806FFE6: - adds r0, r6, 0 - bl GetMedicineItemEffectMessage - ldrb r0, [r4, 0x5] - ldr r1, [r4] - bl TryPrintPartyMenuMonNickname - ldr r0, _08070020 @ =gStringVar4 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _08070024 @ =gTasks - mov r2, r8 - adds r0, r2, r7 -_08070002: - lsls r0, 3 - adds r0, r1 - ldr r1, _08070028 @ =sub_806FB0C - str r1, [r0] -_0807000A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070018: .4byte 0x0201c000 -_0807001C: .4byte gStringVar1 -_08070020: .4byte gStringVar4 -_08070024: .4byte gTasks -_08070028: .4byte sub_806FB0C - thumb_func_end UseMedicine - - thumb_func_start IsBlueYellowRedFlute -IsBlueYellowRedFlute: @ 807002C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x27 - beq _0807003E - cmp r0, 0x29 - beq _0807003E - cmp r0, 0x28 - bne _08070042 -_0807003E: - movs r0, 0x1 - b _08070044 -_08070042: - movs r0, 0 -_08070044: - pop {r1} - bx r1 - thumb_func_end IsBlueYellowRedFlute - - thumb_func_start sub_8070048 -sub_8070048: @ 8070048 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08070078 @ =0x0201c000 - str r2, [r3, 0x10] - movs r4, 0 - strb r0, [r3, 0x4] - movs r2, 0 - strh r1, [r3, 0x6] - strb r2, [r3, 0x5] - ldr r1, _0807007C @ =sub_80701DC - str r1, [r3, 0x14] - ldr r2, _08070080 @ =0xfffff27e - adds r1, r3, r2 - strh r4, [r1] - ldr r1, _08070084 @ =0xfffff280 - adds r3, r1 - strh r4, [r3] - bl sub_8070088 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070078: .4byte 0x0201c000 -_0807007C: .4byte sub_80701DC -_08070080: .4byte 0xfffff27e -_08070084: .4byte 0xfffff280 - thumb_func_end sub_8070048 - - .section .text_80701DC - - thumb_func_start DoPPUpItemEffect -DoPPUpItemEffect: @ 8070624 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0807066C @ =gTasks - lsls r3, r0, 2 - adds r3, r0 - lsls r3, 3 - adds r3, r4 - ldr r4, _08070670 @ =TaskDummy - str r4, [r3] - bl sub_806E8D0 - movs r0, 0x5 - bl PlaySE - movs r0, 0xB - movs r1, 0x3 - bl sub_806D538 - ldr r0, _08070674 @ =0x0201c000 - ldrb r0, [r0, 0x5] - bl CreateItemUseMoveMenu - ldr r0, _08070678 @ =Task_HandleItemUseMoveMenuInput - movs r1, 0x5 - bl CreateTask - ldr r1, _0807067C @ =gMain - movs r0, 0 - strh r0, [r1, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807066C: .4byte gTasks -_08070670: .4byte TaskDummy -_08070674: .4byte 0x0201c000 -_08070678: .4byte Task_HandleItemUseMoveMenuInput -_0807067C: .4byte gMain - thumb_func_end DoPPUpItemEffect - - thumb_func_start DoRareCandyItemEffect -DoRareCandyItemEffect: @ 8070680 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r3, _080706E0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _080706E4 @ =TaskDummy - str r3, [r1] - adds r1, r6, 0 - bl sub_806E8D0 - ldr r5, _080706E8 @ =0x0201c000 - ldr r0, [r5] - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _080706F4 - movs r4, 0 - ldr r0, _080706EC @ =0xfffff264 - adds r7, r5, r0 -_080706B2: - ldr r0, [r5] - ldr r1, _080706F0 @ =gUnknown_08376D1C - adds r1, r4, r1 - ldrb r1, [r1] - bl GetMonData - lsls r1, r4, 1 - adds r1, r7, r1 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _080706B2 - ldr r0, _080706E8 @ =0x0201c000 - ldrb r0, [r0, 0x5] - adds r1, r6, 0 - movs r2, 0 - bl ExecuteTableBasedItemEffect__ - lsls r0, 24 - lsrs r0, 24 - b _080706F6 - .align 2, 0 -_080706E0: .4byte gTasks -_080706E4: .4byte TaskDummy -_080706E8: .4byte 0x0201c000 -_080706EC: .4byte 0xfffff264 -_080706F0: .4byte gUnknown_08376D1C -_080706F4: - movs r0, 0x1 -_080706F6: - cmp r0, 0 - beq _08070724 - ldr r1, _08070718 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldr r0, _0807071C @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - ldr r0, _08070720 @ =sub_806FB0C - movs r1, 0x5 - bl CreateTask - b _0807077C - .align 2, 0 -_08070718: .4byte gUnknown_0202E8F4 -_0807071C: .4byte gOtherText_WontHaveAnyEffect -_08070720: .4byte sub_806FB0C -_08070724: - ldr r1, _08070784 @ =gUnknown_0202E8F4 - movs r0, 0x1 - strb r0, [r1] - movs r0, 0 - bl PlayFanfareByFanfareNum - ldr r4, _08070788 @ =0x0201c000 - ldrb r0, [r4, 0x5] - ldr r1, [r4] - bl sub_8070A20 - adds r0, r6, 0 - movs r1, 0x1 - bl RemoveBagItem - ldr r0, [r4] - ldr r1, _0807078C @ =gStringVar1 - bl GetMonNickname - ldr r0, [r4] - movs r1, 0x38 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08070790 @ =gStringVar2 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _08070794 @ =gStringVar4 - ldr r1, _08070798 @ =gOtherText_ElevatedTo - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0807079C @ =Task_RareCandy1 - movs r1, 0x5 - bl CreateTask -_0807077C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070784: .4byte gUnknown_0202E8F4 -_08070788: .4byte 0x0201c000 -_0807078C: .4byte gStringVar1 -_08070790: .4byte gStringVar2 -_08070794: .4byte gStringVar4 -_08070798: .4byte gOtherText_ElevatedTo -_0807079C: .4byte Task_RareCandy1 - thumb_func_end DoRareCandyItemEffect - - thumb_func_start Task_RareCandy1 -Task_RareCandy1: @ 80707A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _080707E8 - ldr r0, _080707F0 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _080707E8 - ldr r0, _080707F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080707CE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080707E8 -_080707CE: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_8070848 - ldr r0, _080707F8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080707FC @ =Task_RareCandy2 - str r0, [r1] -_080707E8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080707F0: .4byte gUnknown_0202E8F6 -_080707F4: .4byte gMain -_080707F8: .4byte gTasks -_080707FC: .4byte Task_RareCandy2 - thumb_func_end Task_RareCandy1 - - thumb_func_start Task_RareCandy2 -Task_RareCandy2: @ 8070800 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807083C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0807081A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08070834 -_0807081A: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_8070968 - ldr r0, _08070840 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08070844 @ =Task_RareCandy3 - str r0, [r1] -_08070834: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807083C: .4byte gMain -_08070840: .4byte gTasks -_08070844: .4byte Task_RareCandy3 - thumb_func_end Task_RareCandy2 - .section .text_8070968 thumb_func_start sub_8070968 diff --git a/include/asm.inc.h b/include/asm.inc.h index 0c111a991..62a8ac1cc 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -158,7 +158,7 @@ bool8 pokemon_has_move(struct Pokemon *, u16); void sub_806FA18(u8 taskId); // src/party_menu.o -void sub_806E834(); +u8 sub_806E834(const u8 *message, u8 arg1); // src/rom_8077ABC.o u8 battle_side_get_owner(u8); diff --git a/include/battle_interface.h b/include/battle_interface.h new file mode 100644 index 000000000..e85f87a30 --- /dev/null +++ b/include/battle_interface.h @@ -0,0 +1,36 @@ +#ifndef GUARD_BATTLE_INTERFACE_H +#define GUARD_BATTLE_INTERFACE_H + +struct BattleInterfaceStruct1 +{ + s32 unk0; + s32 unk4; + s32 unk8; + u32 unkC_0:5; + u32 unk10; +}; + +struct BattleInterfaceStruct2 +{ + u16 unk0; + u32 unk4; +}; + +u8 battle_make_oam_normal_battle(u8); +u8 battle_make_oam_safari_battle(void); +void sub_8043D84(u8, u8, u32, u32, u32); +void sub_8043DB0(u8); +void sub_8043DFC(u8); +void nullsub_11(); +void sub_8043EB4(u8); +void sub_8043F44(u8); +void sub_804454C(void); +u8 sub_8044804(u8, const struct BattleInterfaceStruct2 *, u8, u8); +void sub_8044CA0(u8); +void sub_8045A5C(u8, struct Pokemon *, u8); +s32 sub_8045C78(u8, u8, u8, u8); +s16 sub_80460C8(struct BattleInterfaceStruct1 *, int *, void *, int); +u8 GetScaledHPFraction(s16, s16, u8); +int GetHPBarLevel(s16, s16); + +#endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/menu.h b/include/menu.h index c3dcbc969..6a11ffdc2 100644 --- a/include/menu.h +++ b/include/menu.h @@ -49,7 +49,7 @@ void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], u8*); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); -u8 MenuPrint_PixelCoords(u8 *, u8, u16, u8); +u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); u8 sub_8072A18(u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(u8 *, u8, u16, u8, u8, u32); diff --git a/include/songs.h b/include/songs.h index 244bb9808..c465ac562 100644 --- a/include/songs.h +++ b/include/songs.h @@ -120,7 +120,7 @@ enum /*0x72*/ SE_TB_START, /*0x73*/ SE_TB_KON, /*0x74*/ SE_TB_KARA, - SE_BIDORO, + /*0x75*/ SE_BIDORO, SE_W085, SE_W085B, SE_W231, @@ -269,7 +269,7 @@ enum BGM_GIM, BGM_NAMINORI, BGM_DAN01, - BGM_FANFA1, + /*0x16F*/ BGM_FANFA1, BGM_ME_ASA, BGM_ME_BACHI, BGM_FANFA4, diff --git a/ld_script.txt b/ld_script.txt index 0cc6ef0f0..4bd488346 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -108,10 +108,6 @@ SECTIONS { asm/reset_rtc_screen.o(.text); asm/party_menu.o(.text); src/party_menu.o(.text); - asm/party_menu.o(.text_806E884); - src/party_menu.o(.text_b); - asm/party_menu.o(.text_80701DC); - src/party_menu.o(.text_c); asm/party_menu.o(.text_8070968); src/start_menu.o(.text); src/menu.o(.text); diff --git a/src/battle_interface.c b/src/battle_interface.c index 9938c4b54..ba3cba894 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -8,6 +8,7 @@ #include "songs.h" #include "battle.h" #include "palette.h" +#include "battle_interface.h" struct UnknownStruct5 { @@ -35,15 +36,6 @@ struct UnknownStruct7 u8 filler0[0x180]; }; -struct UnknownStruct9 -{ - s32 unk0; - u32 unk4; - u32 unk8; - u32 unkC_0:5; - u32 unk10; -}; - extern u8 ewram[]; #define ewram520 ((struct UnknownStruct7 *)(ewram + 0x00520)) #define ewram16088 (*(u8 *) (ewram + 0x16088)) @@ -109,9 +101,8 @@ extern void load_gfxc_health_bar(); static void sub_8043D5C(struct Sprite *); static const void *sub_8043CDC(u8); -void sub_8044210(u8, s16, u8); +static void sub_8044210(u8, s16, u8); static void draw_status_ailment_maybe(u8); -void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c); extern void sub_8045180(struct Sprite *); static void sub_8045110(struct Sprite *); static void sub_8045048(struct Sprite *); @@ -119,12 +110,11 @@ static void sub_8044F70(u8 taskId); static void sub_8044E74(u8 taskId); static void sub_8044ECC(u8 taskId); static u8 sub_80457E8(u8, u8); -s32 sub_8045C78(u8, u8, u8, u8); static int sub_8045F58(s32, s32, int, int *, u8, u16); static u8 GetScaledExpFraction(int, int, int, u8); static void sub_8045D58(u8, u8); static u8 sub_804602C(int, int, int, int *, u8 *, u8); -static void sub_8046128(struct UnknownStruct9 *a, int *b, void *c); +static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, void *c); static int do_nothing(s16 unused1, s16 unused2, int unused3) { @@ -937,7 +927,7 @@ _0804420C: .4byte 0x04000008\n\ } #endif -void sub_8044210(u8 a, s16 b, u8 c) +static void sub_8044210(u8 a, s16 b, u8 c) { u8 str[0x14]; u8 *ptr; @@ -1377,15 +1367,9 @@ void sub_804454C(void) } } -struct UnknownStruct8 -{ - u16 unk0; - u32 unk4; -}; - // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING -u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) +u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) { u8 r7; s16 x; @@ -1594,7 +1578,7 @@ u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) } #else __attribute__((naked)) -u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) +u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -3005,7 +2989,7 @@ static u8 sub_804602C(int a, int b, int c, int *d, u8 *e, u8 f) return r3; } -s16 sub_80460C8(struct UnknownStruct9 *a, int *b, void *c, int d) +s16 sub_80460C8(struct BattleInterfaceStruct1 *a, int *b, void *c, int d) { u16 r7; s16 r1; @@ -3020,7 +3004,7 @@ s16 sub_80460C8(struct UnknownStruct9 *a, int *b, void *c, int d) return r7; } -static void sub_8046128(struct UnknownStruct9 *a, int *b, void *c) +static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, void *c) { u8 sp8[6]; u16 sp10[6]; diff --git a/src/menu.c b/src/menu.c index ba98ff057..3759d22c9 100644 --- a/src/menu.c +++ b/src/menu.c @@ -598,7 +598,7 @@ s8 ProcessMenuInputNoWrap_(void) return ProcessMenuInputNoWrap(); } -u8 MenuPrint_PixelCoords(u8 *text, u8 left, u16 top, u8 a4) +u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) { return sub_8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); } diff --git a/src/party_menu.c b/src/party_menu.c index b38e89376..8eb181f46 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1,4 +1,5 @@ #include "global.h" +#include "asm.h" #include "menu.h" #include "pokemon.h" #include "songs.h" @@ -9,18 +10,17 @@ #include "palette.h" #include "event_data.h" #include "main.h" +#include "item.h" +#include "battle_interface.h" +#include "species.h" #define DATA_COUNT (6) -struct Unk201C000 +struct Unk2001000 { - /*0x00*/ struct Pokemon *pokemon; - /*0x04*/ u8 unk4; - /*0x05*/ u8 unk5; - /*0x06*/ u16 unk6; - /*0x08*/ u8 pad_08[4]; - /*0x0C*/ s32 var0C; - /*0x10*/ TaskFunc unk10; + u8 unk0; + u8 unk1; + u8 unk2; }; struct Unk201B000 @@ -33,7 +33,26 @@ struct Unk201B000 u8 filler27C[2]; s16 unk27E; s16 unk280; - u16 unk282; + s16 unk282; +}; + +struct Unk201C000 +{ + /*0x00*/ struct Pokemon *pokemon; + /*0x04*/ u8 unk4; + /*0x05*/ u8 unk5; + /*0x06*/ u16 unk6; + /*0x08*/ u16 unk8; + /*0x0A*/ u8 pad_0A[2]; + /*0x0C*/ s32 unkC; + /*0x10*/ TaskFunc unk10; + /*0x14*/ TaskFunc unk14; +}; + +struct Unk201F000 +{ + u8 filler0[0xE00]; + u8 unkE00[3]; // not sure if this is an array or struct, or how big it is }; struct UnknownStruct5 @@ -44,44 +63,143 @@ struct UnknownStruct5 }; extern u8 ewram[]; +#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000)) #define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) #define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) +#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000)) extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F6; +extern u16 gUnknown_0202E8F8; extern u8 gUnknown_0202E8FA; extern u8 gLastFieldPokeMenuOpened; +extern u8 gPlayerPartyCount; +extern u16 gScriptItemId; +extern s32 gBattleMoveDamage; //extern const u16 gUnknown_083769A8[][6]; //extern const u8 gUnknown_083769A8[][12]; +extern void *const gUnknown_08376858[][6]; extern const u8 gUnknown_083769A8[]; -extern u8 gUnknown_08376D1C[DATA_COUNT]; -extern u8 *gUnknown_08376D04[DATA_COUNT]; +extern const u8 gUnknown_08376D1C[DATA_COUNT]; +extern const u16 gUnknown_08376504[]; extern void (*const gUnknown_08376B54[])(u8); +extern const u8 *const gUnknown_08376D04[DATA_COUNT]; extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; -extern u8 gOtherText_TallPlusAndRightArrow[]; -extern u8 gOtherText_WontHaveAnyEffect[]; +extern const u8 gOtherText_TallPlusAndRightArrow[]; +extern const u8 gOtherText_WontHaveAnyEffect[]; +extern const u8 gOtherText_ElevatedTo[]; +extern const u8 gOtherText_MailMustBeRemoved[]; +extern const u8 gOtherText_AlreadyHolding[]; +extern const u8 gOtherText_TakenAndReplaced[]; +extern const u8 gOtherText_BagFullCannotRemoveItem[]; +extern const u8 gOtherText_WasGivenToHold[]; +extern const u8 gOtherText_PokeHoldingItemCantMail[]; +extern const u8 gOtherText_MailTransferredMailbox[]; +extern const u8 gOtherText_NotHoldingAnything[]; +extern const u8 gOtherText_ReceivedTheThingFrom[]; +extern const u8 gOtherText_SendRemovedMailPrompt[]; +extern const u8 gOtherText_MailTaken[]; +extern const u8 gOtherText_MailWasSent[]; +extern const u8 gOtherText_MailboxIsFull[]; +extern const u8 gOtherText_MailRemovedMessageLost[]; +extern const u8 gOtherText_WantsToLearn[]; +extern const u8 gOtherText_NotCompatible[]; +extern const u8 gOtherText_AlreadyKnows[]; +extern const u8 gOtherText_LearnedMove[]; +extern const u8 gOtherText_WhichMoveToForget2[]; +extern const u8 gOtherText_ForgetMove123_2[]; +extern const u8 gOtherText_StopTryingTo[]; +extern const u8 gOtherText_DidNotLearnMove2[]; +extern const u8 gOtherText_RegainedHealth[]; +extern const u8 gOtherText_HPRestoredBy[]; +extern const u8 gOtherText_CuredPoisoning[]; +extern const u8 gOtherText_WokeUp[]; +extern const u8 gOtherText_BurnHealed[]; +extern const u8 gOtherText_ThawedOut[]; +extern const u8 gOtherText_CuredParalysis[]; +extern const u8 gOtherText_SnapConfusion[]; +extern const u8 gOtherText_GotOverLove[]; +extern const u8 gOtherText_BecameHealthy[]; +extern const u8 gOtherText_Hp2[]; +extern const u8 gOtherText_Attack[]; +extern const u8 gOtherText_Defense[]; +extern const u8 gOtherText_Speed[]; +extern const u8 gOtherText_SpAtk2[]; +extern const u8 gOtherText_SpDef2[]; +extern const u8 gOtherText_WasRaised[]; +extern const u8 gOtherText_PPIncreased[]; +extern const u8 gOtherText_PPRestored[]; extern const u8 gMoveNames[][13]; -extern u8 *const gItemEffectTable[]; +extern const u8 *const gItemEffectTable[]; extern bool8 IsDoubleBattle(void); -extern void AddBagItem(); -extern void RemoveBagItem(); extern void SetUpBattlePokemonMenu(u8); extern void sub_808B0C0(u8); +extern u8 GiveMailToMon(struct Pokemon *, u16); +extern bool8 ItemIsMail(u16); +extern void ClearMailStruct(struct MailStruct *); +extern u8 GiveMailToMon2(struct Pokemon *, struct MailStruct *); +extern void TakeMailFromMon(struct Pokemon *); +extern u8 TakeMailFromMon2(struct Pokemon *); +extern u32 CanMonLearnTMHM(struct Pokemon *, u8); +extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); +extern void sub_808B564(); +extern u8 sub_809FA30(void); +extern void sub_808B508(u8); +extern void sub_8032638(); +extern u8 sub_8094C20(); +extern bool8 ExecuteTableBasedItemEffect_(); +extern u8 GetMonStatusAndPokerus(); +u8 sub_806CA38(u8); void task_pc_turn_off(); static void sub_806E884(u8 taskId); void sub_806F8AC(u8 taskId); void sub_806FB0C(u8 taskId); void PartyMenuUpdateLevelOrStatus(struct Pokemon *, u8); -u8 ExecuteTableBasedItemEffect__(u8, u16, u8); +bool8 ExecuteTableBasedItemEffect__(u8, u16, u8); void sub_80701DC(u8 taskId); void DoRecoverPP(u8); +void Task_RareCandy1(u8); +void Task_RareCandy2(u8); +void Task_RareCandy3(u8); void sub_806D538(); void sub_806D5A4(void); -void sub_806E8D0(); -void GetMedicineItemEffectMessage(); +void sub_806E8D0(u8 taskId, u16 b, TaskFunc c); +void GetMedicineItemEffectMessage(u16); +void sub_8070A20(); +void sub_8070848(u8 taskId); +void sub_8070968(); +void party_menu_link_mon_held_item_object(u8); +void Task_ConfirmGiveHeldItem(u8); +void DisplayGiveHeldItemMessage(u8, u16, u8); +void SetHeldItemIconVisibility(); +void DisplayTakeHeldItemMessage(u8, u16, u8); +void Task_ConfirmTakeHeldMail(u8); +void Task_TeamMonTMMove(u8); +void Task_TeamMonTMMove2(u8); +void Task_TeamMonTMMove3(u8); +void Task_TeamMonTMMove4(u8); +void sub_806F358(u8); +void sub_806F390(u8); +void sub_806F44C(u8); +void TMMoveUpdateMoveSlot(u8); +void StopTryingToTeachMove_806F614(u8); +void StopTryingToTeachMove_806F67C(u8); +void StopTryingToTeachMove_806F6B4(u8); +void sub_806FB44(u8); +void sub_8070C54(); +void SetMonIconAnim(); +u8 GetMonIconSpriteId_maybe(); +void PartyMenuDoPrintHP(u8, int, u16, u16); +void PartyMenuClearLevelStatusTilemap(); +void PartyMenuPrintMonLevelOrStatus(); +u8 GetItemEffectType(); +bool8 IsBlueYellowRedFlute(u16); +void TryPrintPartyMenuMonNickname(); +void sub_8070088(u8); + /* void sub_806AEDC(void) @@ -99,7 +217,7 @@ void sub_806AEDC(void) } */ -u8 sub_806E834(u8 *message, u8 arg1) +u8 sub_806E834(const u8 *message, u8 arg1) { u8 taskId; @@ -116,22 +234,953 @@ u8 sub_806E834(u8 *message, u8 arg1) static void sub_806E884(u8 taskId) { - if (MenuUpdateWindowText() == 0) + if (MenuUpdateWindowText()) { - return; + gUnknown_0202E8F6 = 0; + if (gTasks[taskId].data[0] == 0) + MenuZeroFillWindowRect(3, 14, 26, 19); + DestroyTask(taskId); } +} + +void sub_806E8D0(u8 taskId, u16 b, TaskFunc c) +{ + ewram1C000.unk10 = c; + ewram1C000.unk4 = taskId; + ewram1C000.unk5 = sub_806CA38(taskId); + ewram1C000.unk6 = b; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; +} - gUnknown_0202E8F6 = 0; +bool8 PartyMenuUpdateMonHeldItem(struct Pokemon *pkmn, u16 item) +{ + u8 itemData[2]; - if (gTasks[taskId].data[0] == 0) + if (ItemIsMail(item) == TRUE) { - MenuZeroFillWindowRect(3, 14, 26, 19); + if (GiveMailToMon(pkmn, item) == 0xFF) + return TRUE; + gUnknown_0202E8F4 = 2; + } + else + { + gUnknown_0202E8F4 = 1; } - DestroyTask(taskId); + itemData[0] = item; + itemData[1] = item >> 8; + SetMonData(pkmn, MON_DATA_HELD_ITEM, itemData); + return FALSE; +} + +void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c) +{ + u16 currentItem; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, newItem, c); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + gUnknown_0202E8F4 = 0; + gUnknown_0202E8F8 = 0; + if (currentItem != 0) + { + if (ItemIsMail(currentItem) == TRUE) + { + sub_806E834(gOtherText_MailMustBeRemoved, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + GetMonNickname(ewram1C000.pokemon, gStringVar1); + CopyItemName(currentItem, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyHolding); + sub_806E834(gStringVar4, 1); + CreateTask(Task_ConfirmGiveHeldItem, 5); + if (ItemIsMail(newItem) == TRUE) + gUnknown_0202E8F8 = currentItem; + } + } + else + { + PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, newItem); + RemoveBagItem(newItem, 1); + if (ItemIsMail(newItem)) + { + gTasks[taskId].func = c; + } + else + { + DisplayGiveHeldItemMessage(ewram1C000.unk5, newItem, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + } +} + +void party_menu_link_mon_held_item_object(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } +} + +void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + u16 currentItem; + + MenuZeroFillWindowRect(23, 8, 29, 13); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + RemoveBagItem(ewram1C000.unk6, 1); + if (AddBagItem(currentItem, 1) == TRUE) + { + PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, ewram1C000.unk6); + if (ItemIsMail(ewram1C000.unk6)) + { + DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 1); + } + else + { + CopyItemName(ewram1C000.unk6, gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_TakenAndReplaced); + sub_806E834(gStringVar4, 1); + } + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + AddBagItem(ewram1C000.unk6, 1); + } + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + } + gTasks[taskId].func = party_menu_link_mon_held_item_object; +} + +void Task_ConfirmGiveHeldItem(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = PartyMenuTryGiveMonHeldItem_806EACC; + } +} + +void DisplayGiveHeldItemMessage(u8 a, u16 b, u8 c) +{ + GetMonNickname(&gPlayerParty[a], gStringVar1); + CopyItemName(b, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasGivenToHold); + sub_806E834(gStringVar4, c); +} + + +// Not sure about this one for now. +/* +void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func) +{ + u16 currentItem; + struct MailStruct *r4; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + gUnknown_0202E8F4 = 0; + r4 = &gSaveBlock1.mail[ewram1F000.unkE00[0] + ewram1F000.unkE00[2]]; + if (currentItem != 0) + { + sub_806E834(gOtherText_PokeHoldingItemCantMail, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + GiveMailToMon2(ewram1C000.pokemon, r4); + ClearMailStruct(r4); + sub_806E834(gOtherText_MailTransferredMailbox, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } +} +*/ +__attribute__((naked)) +void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + adds r2, r1, 0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r3, _0806ECA0 @ =gTasks\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 3\n\ + adds r1, r3\n\ + ldr r3, _0806ECA4 @ =TaskDummy\n\ + str r3, [r1]\n\ + movs r1, 0\n\ + bl sub_806E8D0\n\ + ldr r5, _0806ECA8 @ =0x0201c000\n\ + ldr r0, [r5]\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + ldr r2, _0806ECAC @ =gUnknown_0202E8F4\n\ + movs r1, 0\n\ + strb r1, [r2]\n\ + movs r1, 0xF8\n\ + lsls r1, 6\n\ + adds r2, r5, r1\n\ + ldrb r1, [r2]\n\ + adds r1, 0x6\n\ + ldrb r2, [r2, 0x2]\n\ + adds r1, r2\n\ + lsls r2, r1, 3\n\ + adds r2, r1\n\ + lsls r2, 2\n\ + ldr r1, _0806ECB0 @ =gSaveBlock1 + 0x2B4C\n\ + adds r4, r2, r1\n\ + cmp r0, 0\n\ + beq _0806ECBC\n\ + ldr r0, _0806ECB4 @ =gOtherText_PokeHoldingItemCantMail\n\ + movs r1, 0x1\n\ + bl sub_806E834\n\ + ldr r0, _0806ECB8 @ =party_menu_link_mon_held_item_object\n\ + movs r1, 0x5\n\ + bl CreateTask\n\ + b _0806ECDA\n\ + .align 2, 0\n\ +_0806ECA0: .4byte gTasks\n\ +_0806ECA4: .4byte TaskDummy\n\ +_0806ECA8: .4byte 0x0201c000\n\ +_0806ECAC: .4byte gUnknown_0202E8F4\n\ +_0806ECB0: .4byte gSaveBlock1 + 0x2B4C\n\ +_0806ECB4: .4byte gOtherText_PokeHoldingItemCantMail\n\ +_0806ECB8: .4byte party_menu_link_mon_held_item_object\n\ +_0806ECBC:\n\ + ldr r0, [r5]\n\ + adds r1, r4, 0\n\ + bl GiveMailToMon2\n\ + adds r0, r4, 0\n\ + bl ClearMailStruct\n\ + ldr r0, _0806ECE0 @ =gOtherText_MailTransferredMailbox\n\ + movs r1, 0x1\n\ + bl sub_806E834\n\ + ldr r0, _0806ECE4 @ =party_menu_link_mon_held_item_object\n\ + movs r1, 0x5\n\ + bl CreateTask\n\ +_0806ECDA:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806ECE0: .4byte gOtherText_MailTransferredMailbox\n\ +_0806ECE4: .4byte party_menu_link_mon_held_item_object\n\ + .syntax divided\n"); +} + +void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func) +{ + u16 currentItem; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + if (currentItem == 0) + { + StringExpandPlaceholders(gStringVar4, gOtherText_NotHoldingAnything); + sub_806E834(gStringVar4, 0); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + u8 itemData[2]; + + itemData[0] = 0; + itemData[1] = 0; + if (AddBagItem(currentItem, 1) == TRUE) + { + if (ItemIsMail(currentItem) == TRUE) + TakeMailFromMon(ewram1C000.pokemon); + DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 0); + SetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM, itemData); + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + } + CreateTask(party_menu_link_mon_held_item_object, 5); + } +} + +void DisplayTakeHeldItemMessage(u8 a, u16 b, u8 c) +{ + GetMonNickname(&gPlayerParty[a], gStringVar1); + CopyItemName(b, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_ReceivedTheThingFrom); + sub_806E834(gStringVar4, c); +} + +void DoTakeMail(u8 taskId, TaskFunc func) +{ + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + ewram1C000.unk6 = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + sub_806E834(gOtherText_SendRemovedMailPrompt, 1); + CreateTask(Task_ConfirmTakeHeldMail, 5); +} + +void Task_LoseMailMessage(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + if (AddBagItem(ewram1C000.unk6, 1) == TRUE) + { + TakeMailFromMon(ewram1C000.pokemon); + sub_806E834(gOtherText_MailTaken, 0); + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + } + MenuZeroFillWindowRect(23, 8, 29, 13); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } +} + +void Task_ConfirmLoseMailMessage(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = Task_LoseMailMessage; + } +} + +void Task_TakeHeldMail(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF) + sub_806E834(gOtherText_MailWasSent, 0); + else + sub_806E834(gOtherText_MailboxIsFull, 0); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + sub_806E834(gOtherText_MailRemovedMessageLost, 1); + gTasks[taskId].func = Task_ConfirmLoseMailMessage; + } +} + +void Task_ConfirmTakeHeldMail(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = Task_TakeHeldMail; + } +} + +u16 ItemIdToBattleMoveId(u16 item) +{ + u16 moveId = item - 289; + + return gUnknown_08376504[moveId]; +} + +bool8 pokemon_has_move(struct Pokemon *pkmn, u16 move) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (GetMonData(pkmn, MON_DATA_MOVE1 + i) == move) + return TRUE; + } + return FALSE; +} + +void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func) +{ + PlaySE(SE_SELECT); + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, move, func); + CreateTask(Task_TeamMonTMMove, 5); +} + +void Task_TeamMonTMMove(u8 taskId) +{ + GetMonNickname(ewram1C000.pokemon, gStringVar1); + ewram1C000.unk8 = ItemIdToBattleMoveId(ewram1C000.unk6); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + ewram1B000.unk282 = 0; + if (pokemon_has_move(ewram1C000.pokemon, ewram1C000.unk8)) + { + StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyKnows); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) + { + StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (GiveMoveToMon(ewram1C000.pokemon, ewram1C000.unk8) != 0xFFFF) + { + Task_TeamMonTMMove2(taskId); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F358; + } + } + } +} + +void Task_TeamMonTMMove2(u8 taskId) +{ + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); + sub_806E834(gStringVar4, 1); + AdjustFriendship(ewram1C000.pokemon, 4); + if (ewram1B000.unk282 == 0 && ewram1C000.unk6 <= 0x152) + RemoveBagItem(ewram1C000.unk6, 1); + gTasks[taskId].func = Task_TeamMonTMMove3; +} + +void Task_TeamMonTMMove3(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskId].func = Task_TeamMonTMMove4; + } +} + +void Task_TeamMonTMMove4(u8 taskId) +{ + if (IsFanfareTaskInactive()) + { + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + if (ewram1B000.unk282 == 1) + { + sub_8070C54(taskId); + } + else + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } + } + } +} + +void sub_806F2FC(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + if (ewram1B000.unk282 == 1) + { + sub_8070C54(taskId); + } + else + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } + } } -asm(".section .text_b"); +void sub_806F358(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = sub_806F390; + } +} + +void sub_806F390(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + sub_806E834(gOtherText_WhichMoveToForget2, 1); + gTasks[taskId].func = sub_806F44C; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + StopTryingToTeachMove_806F614(taskId); + } +} + +void sub_806F3FC(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); + DestroyTask(taskId); + } +} + +void sub_806F44C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_806F3FC; + } +} + +void TaughtMove(u8 taskId) +{ + if (!gPaletteFade.active) + { + u8 moveIndex; + u16 r4; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, gScriptItemId, sub_808B508); + moveIndex = sub_809FA30(); + r4 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + moveIndex); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[r4]); + StringExpandPlaceholders(gStringVar4, gOtherText_ForgetMove123_2); + sub_806E834(gStringVar4, 1); + CreateTask(TMMoveUpdateMoveSlot, 5); + } +} + +void TMMoveUpdateMoveSlot(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + RemoveMonPPBonus(ewram1C000.pokemon, sub_809FA30()); + SetMonMoveSlot(ewram1C000.pokemon, ewram1C000.unk8, sub_809FA30()); + Task_TeamMonTMMove2(taskId); + } +} + +void StopTryingToTeachMove_806F588(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, gScriptItemId, sub_808B508); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); + sub_806E834(gStringVar4, 1); + CreateTask(StopTryingToTeachMove_806F67C, 5); + } +} + +void StopTryingToTeachMove_806F614(u8 taskId) +{ + MenuZeroFillWindowRect(23, 8, 29, 13); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = StopTryingToTeachMove_806F67C; +} + +void StopTryingToTeachMove_806F67C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = StopTryingToTeachMove_806F6B4; + } +} + +void StopTryingToTeachMove_806F6B4(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F2FC; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F358; + } +} + +bool8 IsHMMove(u16 move) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (gUnknown_08376504[50 + i] == move) + return TRUE; + } + return FALSE; +} + +s16 sub_806F7E8(u8 taskId, struct BattleInterfaceStruct1 *b, s8 c) +{ + s16 *taskData; + u8 hpBarLevel; + void *vramPtr; + + taskData = gTasks[taskId].data; + + b->unk0 = taskData[10]; + b->unk4 = taskData[11]; + b->unk8 = taskData[12] * c; + b->unk10 = 0x100; + hpBarLevel = GetHPBarLevel(ewram1B000.unk282, b->unk0); + if (hpBarLevel > 2) + b->unkC_0 = 4; + if (hpBarLevel == 2) + b->unkC_0 = 5; + if (hpBarLevel < 2) + b->unkC_0 = 6; + vramPtr = gUnknown_08376858[IsDoubleBattle()][ewram1C000.unk5]; + return sub_80460C8(b, &ewram1C000.unkC, vramPtr, 0); +} + +void sub_806F8AC(u8 taskId) +{ + struct BattleInterfaceStruct1 sp0; + u16 sp14; + + ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, -1); + if (ewram1B000.unk282 == -1) + { + ewram1C000.unkC = 0; + if (-sp0.unk8 + sp0.unk4 > sp0.unk0) + sp14 = sp0.unk0 - sp0.unk4; + else + sp14 = -sp0.unk8; + gBattleMoveDamage = -sp14; + GetMonNickname(ewram1C000.pokemon, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, sp14, 0, 3); + if (gTasks[taskId].data[14] == 0) + StringExpandPlaceholders(gStringVar4, gOtherText_HPRestoredBy); + else + StringExpandPlaceholders(gStringVar4, gOtherText_RegainedHealth); + SetMonIconAnim(GetMonIconSpriteId_maybe(ewram1C000.unk4, ewram1C000.unk5), ewram1C000.pokemon); + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 7); + ewram1B000.unk261 = 2; + sub_806E834(gStringVar4, 1); + sp14 += sp0.unk4; + SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&sp14); + RemoveBagItem(ewram1C000.unk6, 1); + sub_8032638(); + gTasks[taskId].func = sub_806FB44; + } + else + { + PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); + } +} + +void sub_806FA18(u8 taskId) +{ + struct BattleInterfaceStruct1 sp0; + + ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, 1); + if (ewram1B000.unk282 == -1) + { + PlaySE(SE_KAIFUKU); + ewram1C000.unkC = 0; + gTasks[taskId].data[11] -= gTasks[taskId].data[12]; + SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&gTasks[taskId].data[11]); + SetMonIconAnim(GetMonIconSpriteId_maybe(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon); + ewram1C000.unk5 = gSprites[ewram01000.unk2].data0; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; + gTasks[taskId].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + gTasks[taskId].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + ewram1C000.unkC = -32768; + ewram1C000.unk14 = ewram1C000.unk10; + gTasks[taskId].func = sub_806F8AC; + ewram1B000.unk282 = gTasks[taskId].data[11]; + } + else + { + PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); + } +} + +void sub_806FB0C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } +} + +void sub_806FB44(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk14; + DestroyTask(taskId); + } +} + +bool8 IsHPRecoveryItem(u16 item) +{ + const u8 *itemEffect; + + if (item == 0xAF) + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; + else + itemEffect = gItemEffectTable[item - 13]; + + if (itemEffect[4] & 4) + return TRUE; + else + return FALSE; +} + +void PartyMenuUpdateLevelOrStatus(struct Pokemon *pkmn, u8 b) +{ + PartyMenuClearLevelStatusTilemap(b); + PartyMenuPrintMonLevelOrStatus(b, pkmn); +} + +void GetMedicineItemEffectMessage(u16 item) +{ + switch (GetItemEffectType(item)) + { + case 3: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning); + break; + case 4: + StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp); + break; + case 5: + StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed); + break; + case 6: + StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut); + break; + case 7: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis); + break; + case 8: + StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); + break; + case 9: + StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove); + break; + case 11: + StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy); + break; + case 13: + StringCopy(gStringVar2, gOtherText_Hp2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 12: + StringCopy(gStringVar2, gOtherText_Attack); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 17: + StringCopy(gStringVar2, gOtherText_Defense); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 16: + StringCopy(gStringVar2, gOtherText_Speed); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 14: + StringCopy(gStringVar2, gOtherText_SpAtk2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 15: + StringCopy(gStringVar2, gOtherText_SpDef2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 19: + case 20: + StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased); + break; + case 21: + StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored); + break; + default: + StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect); + break; + } +} + +bool8 IsMedicineIneffective(struct Pokemon *pkmn, u16 item) +{ + if (GetItemEffectType(item) == 13 + && GetMonData(pkmn, MON_DATA_SPECIES) == SPECIES_SHEDINJA) + return TRUE; + else + return FALSE; +} + +bool8 ExecuteTableBasedItemEffect__(u8 a, u16 b, u8 c) +{ + if (gMain.inBattle) + return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, sub_8094C20(a), c); + else + return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, a, c); +} + +void UseMedicine(u8 taskId, u16 item, TaskFunc func) +{ + u8 r7; + bool8 r9 = FALSE; + bool8 r0; + + gTasks[taskId].func = TaskDummy; + r7 = CreateTask(TaskDummy, 5); + sub_806E8D0(taskId, item, func); + if (!IsMedicineIneffective(ewram1C000.pokemon, item)) + { + r9 = IsHPRecoveryItem(item); + if (r9 == TRUE) + { + gTasks[r7].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + gTasks[r7].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + if (gTasks[r7].data[10] == gTasks[r7].data[11]) + { + r9 = FALSE; + gTasks[r7].data[10] = 0; + gTasks[r7].data[11] = 0; + } + } + r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, item, 0); + } + else + { + r0 = TRUE; + } + + if (r0) + { + gUnknown_0202E8F4 = 0; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + gTasks[r7].func = sub_806FB0C; + } + else + { + u8 statusAndPkrs; + + gUnknown_0202E8F4 = 1; + if (!IsBlueYellowRedFlute(item)) + PlaySE(SE_KAIFUKU); + else + PlaySE(SE_BIDORO); + statusAndPkrs = GetMonStatusAndPokerus(ewram1C000.pokemon); + if (statusAndPkrs == 6 || statusAndPkrs == 0) + PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); + if (r9 == TRUE) + { + gTasks[r7].data[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - gTasks[r7].data[11]; + ewram1C000.unkC = -32768; + if (gTasks[r7].data[11] == 0) + gTasks[r7].data[14] = 1; + else + gTasks[r7].data[14] = 0; + ewram1C000.unk14 = ewram1C000.unk10; + gTasks[r7].func = sub_806F8AC; + ewram1B000.unk282 = gTasks[r7].data[11]; + } + else + { + GetMonNickname(ewram1C000.pokemon, gStringVar1); + if (!IsBlueYellowRedFlute(item)) + RemoveBagItem(item, 1); + GetMedicineItemEffectMessage(item); + TryPrintPartyMenuMonNickname(ewram1C000.unk5, ewram1C000.pokemon); + sub_806E834(gStringVar4, 1); + gTasks[r7].func = sub_806FB0C; + } + } +} + +bool8 IsBlueYellowRedFlute(u16 item) +{ + if (item == 0x27 + || item == 0x29 + || item == 0x28) + return TRUE; + else + return FALSE; +} + +void sub_8070048(u8 taskId, u16 item, TaskFunc func) +{ + ewram1C000.unk10 = func; + ewram1C000.unk4 = taskId; + ewram1C000.unk6 = item; + ewram1C000.unk5 = 0; + ewram1C000.unk14 = sub_80701DC; + ewram1B000.unk27E = 0; + ewram1B000.unk280 = 0; + sub_8070088(taskId); +} void sub_8070088(u8 taskId) { @@ -169,7 +1218,7 @@ void sub_8070088(u8 taskId) ewram1B000.unk27E = 1; ewram1B000.unk280 = 1; ewram1B000.unk282 = taskData[11]; - ewram1C000.var0C = -32768; + ewram1C000.unkC = -32768; gTasks[taskId2].func = sub_806F8AC; } } @@ -253,7 +1302,7 @@ void Task_HandleItemUseMoveMenuInput(u8 taskId) void DoPPRecoveryItemEffect(u8 taskId, u16 b, TaskFunc c) { - u8 *itemEffect; + const u8 *itemEffect; u8 taskId2; if (b == 0xAF) @@ -322,7 +1371,80 @@ void DoRecoverPP(u8 taskId) gTasks[taskId].func = sub_806FB0C; } -asm(".section .text_c"); +void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, b, c); + PlaySE(SE_SELECT); + sub_806D538(11, 3); + CreateItemUseMoveMenu(ewram1C000.unk5); + CreateTask(Task_HandleItemUseMoveMenuInput, 5); + gMain.newKeys = 0; +} + +void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + u8 i; + bool8 r0; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, b, c); + + if (GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL) != 100) + { + for (i = 0; i < 6; i++) + ewram1B000.unk264[i] = GetMonData(ewram1C000.pokemon, gUnknown_08376D1C[i]); + r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, b, 0); + } + else + r0 = TRUE; + + if (r0) + { + gUnknown_0202E8F4 = 0; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + CreateTask(sub_806FB0C, 5); + } + else + { + u8 level; + + gUnknown_0202E8F4 = 1; + PlayFanfareByFanfareNum(0); + sub_8070A20(ewram1C000.unk5, ewram1C000.pokemon); + RemoveBagItem(b, 1); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + level = GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL); + ConvertIntToDecimalStringN(gStringVar2, level, 0, 3); + StringExpandPlaceholders(gStringVar4, gOtherText_ElevatedTo); + sub_806E834(gStringVar4, 1); + CreateTask(Task_RareCandy1, 5); + } +} + +void Task_RareCandy1(u8 taskId) +{ + if (WaitFanfare(0) && gUnknown_0202E8F6 == 0) + { + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_8070848(taskId); + gTasks[taskId].func = Task_RareCandy2; + } + } +} + +void Task_RareCandy2(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_8070968(taskId); + gTasks[taskId].func = Task_RareCandy3; + } +} void sub_8070848(u8 taskId) { -- cgit v1.2.3 From e6d8705d3152947c609339641cb0b792a36bdfdd Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 17 May 2017 17:49:13 -0500 Subject: fix build --- src/battle_party_menu.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 820d16465..690ef99be 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -40,7 +40,6 @@ extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, con extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(u8), int); extern void sub_806E7D0(u8, const struct PartyPopupMenu *); extern u8 *sub_8040D08(); -extern void sub_806E834(); extern u8 sub_8094C20(); extern void sub_8040B8C(void); extern u8 pokemon_order_func(u8); -- cgit v1.2.3 From 16fbf5dd8a674b5df7e6ff61325fd138ca1eb212 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 19:27:35 -0400 Subject: wtf gamefreak --- asm/tv.s | 49 ------------------------------------------------- src/tv.c | 26 ++++++++++++++++++++++++++ 2 files changed, 26 insertions(+), 49 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 54bbe2e6b..6bad83371 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,55 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BE97C -sub_80BE97C: @ 80BE97C - push {r4,lr} - lsls r0, 24 - cmp r0, 0 - beq _080BE9A4 - ldr r4, _080BE9A0 @ =gUnknown_020387E2 - ldrh r0, [r4] - lsrs r0, 8 - cmp r0, 0x4 - bls _080BE992 - bl sub_80BE9D4 -_080BE992: - ldrb r0, [r4] - strh r0, [r4] - cmp r0, 0xFF - beq _080BE9C8 - adds r0, 0x1 - b _080BE9C6 - .align 2, 0 -_080BE9A0: .4byte gUnknown_020387E2 -_080BE9A4: - ldr r4, _080BE9D0 @ =gUnknown_020387E2 - ldrb r0, [r4] - cmp r0, 0x4 - bls _080BE9B0 - bl sub_80BE9D4 -_080BE9B0: - ldrh r0, [r4] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - strh r1, [r4] - lsrs r0, r1, 8 - cmp r0, 0xFF - beq _080BE9C8 - movs r2, 0x80 - lsls r2, 1 - adds r0, r1, r2 -_080BE9C6: - strh r0, [r4] -_080BE9C8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BE9D0: .4byte gUnknown_020387E2 - thumb_func_end sub_80BE97C - thumb_func_start sub_80BE9D4 sub_80BE9D4: @ 80BE9D4 push {r4,r5,lr} diff --git a/src/tv.c b/src/tv.c index ec253c37d..7d1fc1091 100644 --- a/src/tv.c +++ b/src/tv.c @@ -51,6 +51,8 @@ extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; extern void sub_80BEBF4(void); +extern u16 gUnknown_020387E2; + void ClearTVShowData(void) { u8 showidx; @@ -317,6 +319,30 @@ void UpdateMassOutbreakTimeLeft(u16 arg0) gSaveBlock1.outbreakUnk5 -= arg0; } +void sub_80BE9D4(u8); + +void sub_80BE97C(bool8 flag) +{ + u8 var0, var1; + if (flag != 0) { + var0 = gUnknown_020387E2 >> 8; + if (var0 > 4) + sub_80BE9D4(var0); + gUnknown_020387E2 &= 0xFF; + var1 = gUnknown_020387E2 & 0xFF; + if (var1 != 0xFF) + gUnknown_020387E2++; + } else { + var0 = gUnknown_020387E2 & 0xFF; + if (var0 > 4) + sub_80BE9D4(var0); + gUnknown_020387E2 &= 0xFF00; + var1 = gUnknown_020387E2 >> 8; + if (var1 != 0xFF) + gUnknown_020387E2 += 0x100; + } +} + asm(".section .text_b"); u8 sub_80BF4F4(u8 arg0) -- cgit v1.2.3 From ebea499a3f052456ece4272ae06c55eee0194cdf Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 20:51:05 -0400 Subject: sub_80BE9D4 (mostly matching) --- asm/tv.s | 59 -------------------------------------------------------- include/global.h | 12 ++++++++++++ src/tv.c | 38 +++++++++++++++++++++++++++++++++--- 3 files changed, 47 insertions(+), 62 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 6bad83371..f0a53c5c6 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,65 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BE9D4 -sub_80BE9D4: @ 80BE9D4 - push {r4,r5,lr} - ldr r5, _080BEA3C @ =gSaveBlock1 + 0x2738 - adds r0, r5, 0 - bl sub_80BF74C - ldr r4, _080BEA40 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEA36 - movs r0, 0x18 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEA36 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r5 - movs r1, 0 - movs r0, 0x18 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, _080BEA44 @ =gUnknown_020387E2 - ldrh r0, [r1] - strb r0, [r4, 0x2] - ldrh r0, [r1] - lsrs r0, 8 - strb r0, [r4, 0x3] - ldr r0, _080BEA48 @ =gUnknown_020387E0 - ldrh r0, [r0] - strh r0, [r4, 0x4] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BEA4C @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0x6] -_080BEA36: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BEA3C: .4byte gSaveBlock1 + 0x2738 -_080BEA40: .4byte gUnknown_03005D38 -_080BEA44: .4byte gUnknown_020387E2 -_080BEA48: .4byte gUnknown_020387E0 -_080BEA4C: .4byte gSaveBlock2 - thumb_func_end sub_80BE9D4 - thumb_func_start sub_80BEA50 sub_80BEA50: @ 80BEA50 ldr r1, _080BEA58 @ =gUnknown_020387E0 diff --git a/include/global.h b/include/global.h index f08c76bac..4790c4ed2 100644 --- a/include/global.h +++ b/include/global.h @@ -261,6 +261,17 @@ struct TVShowMassOutbreak { u8 pad19[11]; }; +struct TVShowUnknownTVShowType { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 var04; + /*0x06*/ u8 language; + u8 pad07[12]; + /*0x13*/ u8 playerName[8]; +}; + typedef union TVShow { struct TVShowCommon common; struct TVShowFanClubLetter fanclubLetter; @@ -268,6 +279,7 @@ typedef union TVShow { struct TVShowFanclubOpinions fanclubOpinions; struct TVShowNameRaterShow nameRaterShow; struct TVShowMassOutbreak massOutbreak; + struct TVShowUnknownTVShowType unknownTvShowType; } TVShow; struct MailStruct diff --git a/src/tv.c b/src/tv.c index 7d1fc1091..e2e3fa567 100644 --- a/src/tv.c +++ b/src/tv.c @@ -51,6 +51,7 @@ extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; extern void sub_80BEBF4(void); +extern u16 gUnknown_020387E0; extern u16 gUnknown_020387E2; void ClearTVShowData(void) @@ -67,6 +68,8 @@ void ClearTVShowData(void) sub_80BEBF4(); } +extern void sub_80BE138(TVShow *); + asm(".section .text_a"); void sub_80BE478(void) @@ -319,7 +322,7 @@ void UpdateMassOutbreakTimeLeft(u16 arg0) gSaveBlock1.outbreakUnk5 -= arg0; } -void sub_80BE9D4(u8); +void sub_80BE9D4(); void sub_80BE97C(bool8 flag) { @@ -327,7 +330,7 @@ void sub_80BE97C(bool8 flag) if (flag != 0) { var0 = gUnknown_020387E2 >> 8; if (var0 > 4) - sub_80BE9D4(var0); + sub_80BE9D4(); gUnknown_020387E2 &= 0xFF; var1 = gUnknown_020387E2 & 0xFF; if (var1 != 0xFF) @@ -335,7 +338,7 @@ void sub_80BE97C(bool8 flag) } else { var0 = gUnknown_020387E2 & 0xFF; if (var0 > 4) - sub_80BE9D4(var0); + sub_80BE9D4(); gUnknown_020387E2 &= 0xFF00; var1 = gUnknown_020387E2 >> 8; if (var1 != 0xFF) @@ -343,6 +346,35 @@ void sub_80BE97C(bool8 flag) } } +s8 sub_80BF74C(TVShow tvShows[]); +u8 sub_80BF1B4(s8); + +void sub_80BE9D4() +{ + TVShow *show; + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(24) != 1) { + show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); +#ifdef NONMATCHING + show->common.var00 = 24; + show->common.var01 = 0; +#else + asm(".syntax unified\n\ + movs r1, 0\n\ + movs r0, 24\n\ + strb r0, [r4]\n\ + strb r1, [r4, 1]\n\ + .syntax divided\n"); +#endif + show->unknownTvShowType.var02 = gUnknown_020387E2 & 0xFF; + show->unknownTvShowType.var03 = gUnknown_020387E2 >> 8; + show->unknownTvShowType.var04 = gUnknown_020387E0; + StringCopy(show->unknownTvShowType.playerName, gSaveBlock2.playerName); + sub_80BE138(show); + show->unknownTvShowType.language = GAME_LANGUAGE; + } +} + asm(".section .text_b"); u8 sub_80BF4F4(u8 arg0) -- cgit v1.2.3 From 0aabedd7514ad7831ec76c93e4e9e83e3c68809d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 17 May 2017 22:20:27 -0400 Subject: More tv fns --- asm/tv.s | 104 ------------------------------------------------------- include/global.h | 32 ++++++++++++++++- src/tv.c | 75 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 106 insertions(+), 105 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index f0a53c5c6..0537eac33 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,110 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BEA50 -sub_80BEA50: @ 80BEA50 - ldr r1, _080BEA58 @ =gUnknown_020387E0 - strh r0, [r1] - bx lr - .align 2, 0 -_080BEA58: .4byte gUnknown_020387E0 - thumb_func_end sub_80BEA50 - - thumb_func_start sub_80BEA5C -sub_80BEA5C: @ 80BEA5C - push {lr} - ldr r1, _080BEA78 @ =gSaveBlock1 + 0x2A98 - ldrb r0, [r1] - cmp r0, 0x19 - bne _080BEA84 - ldrh r0, [r1, 0x2] - cmp r0, 0x13 - bhi _080BEA80 - ldr r2, _080BEA7C @ =0xfffffca0 - adds r0, r1, r2 - movs r1, 0x18 - bl sub_80BF55C - b _080BEA84 - .align 2, 0 -_080BEA78: .4byte gSaveBlock1 + 0x2A98 -_080BEA7C: .4byte 0xfffffca0 -_080BEA80: - bl sub_80BEA88 -_080BEA84: - pop {r0} - bx r0 - thumb_func_end sub_80BEA5C - - thumb_func_start sub_80BEA88 -sub_80BEA88: @ 80BEA88 - push {r4-r7,lr} - ldr r5, _080BEB0C @ =gSaveBlock1 + 0x2A98 - ldr r0, _080BEB10 @ =0x0000ffff - bl sub_80BF77C - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _080BEB04 - ldr r0, _080BEB14 @ =0xfffffca0 - adds r7, r5, r0 - adds r0, r7, 0 - bl sub_80BF74C - ldr r4, _080BEB18 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEB04 - movs r0, 0x19 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEB04 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r7 - movs r0, 0x19 - strb r0, [r4] - strb r6, [r4, 0x1] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - movs r0, 0x5 - bl GetGameStat - ldrh r1, [r5, 0x6] - subs r0, r1 - strh r0, [r4, 0x6] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x8] - ldrb r0, [r5, 0xA] - strb r0, [r4, 0xA] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BEB1C @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0xB] -_080BEB04: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BEB0C: .4byte gSaveBlock1 + 0x2A98 -_080BEB10: .4byte 0x0000ffff -_080BEB14: .4byte 0xfffffca0 -_080BEB18: .4byte gUnknown_03005D38 -_080BEB1C: .4byte gSaveBlock2 - thumb_func_end sub_80BEA88 - thumb_func_start sub_80BEB20 sub_80BEB20: @ 80BEB20 push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index 4790c4ed2..522ec065b 100644 --- a/include/global.h +++ b/include/global.h @@ -272,6 +272,19 @@ struct TVShowUnknownTVShowType { /*0x13*/ u8 playerName[8]; }; +struct TVShowUnknownTVShowType2 { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u16 var02; + /*0x04*/ u16 var04; + /*0x06*/ u16 var06; + /*0x08*/ u16 var08; + /*0x0a*/ u8 var0a; + /*0x0b*/ u8 language; + u8 pad0c[7]; + /*0x13*/ u8 playerName[8]; +}; + typedef union TVShow { struct TVShowCommon common; struct TVShowFanClubLetter fanclubLetter; @@ -280,6 +293,7 @@ typedef union TVShow { struct TVShowNameRaterShow nameRaterShow; struct TVShowMassOutbreak massOutbreak; struct TVShowUnknownTVShowType unknownTvShowType; + struct TVShowUnknownTVShowType2 unknownTvShowType2; } TVShow; struct MailStruct @@ -339,6 +353,21 @@ typedef union SB_Struct { } SB_Struct; // size is 0x198 +struct UnknownSaveStruct2A98 { + u8 var00; + u8 var01; + u16 var02; + u16 var04; + u16 var06; + u16 var08; + u8 var0a; + u8 pad0b[25]; +}; + +struct UnknownSaveStruct2ABC { + u8 pad00[4]; +}; + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; @@ -389,7 +418,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x272C*/ u8 decorCushion[10]; /*0x2736*/ u8 padding_2736[2]; /*0x2738*/ TVShow tvShows[24]; - /*0x2A98*/ u8 filler_2A98[0x64]; + /*0x2A98*/ struct UnknownSaveStruct2A98 unknown_2A98; + /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16]; /*0x2AFC*/ u16 outbreakPokemonSpecies; /*0x2AFE*/ u8 outbreakLocationMapNum; /*0x2AFF*/ u8 outbreakLocationMapGroup; diff --git a/src/tv.c b/src/tv.c index e2e3fa567..ddfb57c45 100644 --- a/src/tv.c +++ b/src/tv.c @@ -375,6 +375,81 @@ void sub_80BE9D4() } } +void sub_80BEA50(u16 var) +{ + gUnknown_020387E0 = var; +} + +void sub_80BF55C(TVShow tvShow[], u8 showidx); +void sub_80BEA88(void); + +void sub_80BEA5C(u16 arg0) +{ + struct UnknownSaveStruct2A98 *unk_2a98; + unk_2a98 = &gSaveBlock1.unknown_2A98; + if (unk_2a98->var00 == 0x19) + { + if (unk_2a98->var02 <= 0x13) + { + sub_80BF55C(gSaveBlock1.tvShows, 0x18); + } + else + { + sub_80BEA88(); + } + } +} +void sub_80BEA88(void) +{ + struct UnknownSaveStruct2A98 *unk_2a98; + TVShow *tvShow; + u8 rval; + unk_2a98 = &gSaveBlock1.unknown_2A98; + rval = sub_80BF77C(0xFFFF); + if (rval == 0) + { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(0x19) != 1) + { + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow->unknownTvShowType2.var00 = 0x19; + tvShow->unknownTvShowType2.var01 = rval; + tvShow->unknownTvShowType2.var02 = unk_2a98->var02; + tvShow->unknownTvShowType2.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06; + tvShow->unknownTvShowType2.var04 = unk_2a98->var04; + tvShow->unknownTvShowType2.var08 = unk_2a98->var08; + tvShow->unknownTvShowType2.var0a = unk_2a98->var0a; + StringCopy(tvShow->unknownTvShowType2.playerName, gSaveBlock2.playerName); + sub_80BE138(tvShow); + tvShow->unknownTvShowType2.language = GAME_LANGUAGE; + } + } +} + +// void sub_80BEB20(void) +// { + // struct UnknownSaveStruct2ABC *unk_2abc; + // u16 rval16; + // u16 val; + // unk_2abc = &gSaveBlock1.unknown_2ABC; + // TVShow *tvShow; + // if (FlagGet(SYS_GAME_CLEAR) != 0) + // { + // gUnknown_03005D38.var0 = sub_80BEBC8(unk_2abc); + // if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) + // { + // rval16 = Random(); + // val = (rval16 % 3) + 1; + // if (sub_80BEE48(val) != 1) + // { + // tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + // unk_2abc[gUnknown_03005D38.var0][0] = val; + // to do + // } + // } + // } +// } + asm(".section .text_b"); u8 sub_80BF4F4(u8 arg0) -- cgit v1.2.3 From b7998a55038a8d3c4265dc25216084dac145b665 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 17 May 2017 22:58:52 -0500 Subject: decompile more functions --- asm/battle_2.s | 909 --------------------------------------------------------- src/battle_2.c | 244 +++++++++++++++- 2 files changed, 243 insertions(+), 910 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index 8cd1e2926..c388077af 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,915 +6,6 @@ .text - thumb_func_start sub_8011B00 -sub_8011B00: @ 8011B00 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - movs r0, 0 - mov r9, r0 - ldr r0, _08011B44 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - beq _08011B18 - b _08011D6E -_08011B18: - ldr r0, _08011B48 @ =0x02000000 - ldr r1, _08011B4C @ =0x00016058 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _08011BA2 - movs r5, 0 - ldr r1, _08011B50 @ =gUnknown_02024A68 - adds r3, r1, 0 - ldrb r2, [r1] - cmp r5, r2 - bge _08011B3E - ldr r2, _08011B54 @ =gUnknown_02024A7A -_08011B32: - adds r0, r5, r2 - strb r5, [r0] - adds r5, 0x1 - ldrb r0, [r1] - cmp r5, r0 - blt _08011B32 -_08011B3E: - movs r5, 0 - b _08011B98 - .align 2, 0 -_08011B44: .4byte gUnknown_02024A64 -_08011B48: .4byte 0x02000000 -_08011B4C: .4byte 0x00016058 -_08011B50: .4byte gUnknown_02024A68 -_08011B54: .4byte gUnknown_02024A7A -_08011B58: - adds r4, r5, 0x1 - mov r8, r4 - ldrb r1, [r1] - cmp r8, r1 - bge _08011B96 - ldr r6, _08011BC8 @ =gUnknown_02024A7A - ldr r3, _08011BCC @ =gUnknown_02024A68 - lsls r7, r5, 24 -_08011B68: - adds r0, r5, r6 - ldrb r0, [r0] - adds r1, r4, r6 - ldrb r1, [r1] - movs r2, 0x1 - str r3, [sp, 0x4] - bl b_first_side - lsls r0, 24 - ldr r3, [sp, 0x4] - cmp r0, 0 - beq _08011B8C - lsls r1, r4, 24 - lsrs r1, 24 - lsrs r0, r7, 24 - bl sub_8012FBC - ldr r3, [sp, 0x4] -_08011B8C: - adds r4, 0x1 - ldr r0, _08011BCC @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r4, r0 - blt _08011B68 -_08011B96: - mov r5, r8 -_08011B98: - adds r1, r3, 0 - ldrb r0, [r3] - subs r0, 0x1 - cmp r5, r0 - blt _08011B58 -_08011BA2: - ldr r0, _08011BD0 @ =0x02000000 - ldr r1, _08011BD4 @ =0x000160e6 - adds r4, r0, r1 - ldrb r0, [r4] - cmp r0, 0 - bne _08011BD8 - str r0, [sp] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xFF - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - beq _08011BD8 - movs r0, 0x1 - strb r0, [r4] - b _08011D6E - .align 2, 0 -_08011BC8: .4byte gUnknown_02024A7A -_08011BCC: .4byte gUnknown_02024A68 -_08011BD0: .4byte 0x02000000 -_08011BD4: .4byte 0x000160e6 -_08011BD8: - ldr r0, _08011D7C @ =0x02000000 - ldr r3, _08011D80 @ =0x00016058 - adds r2, r0, r3 - ldr r1, _08011D84 @ =gUnknown_02024A68 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - bcs _08011C28 - ldr r5, _08011D88 @ =gUnknown_02024A7A - adds r4, r2, 0 -_08011BEC: - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - str r0, [sp] - movs r2, 0 - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - beq _08011C0E - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08011C0E: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - mov r1, r9 - cmp r1, 0 - beq _08011C1C - b _08011D6E -_08011C1C: - ldr r1, _08011D84 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08011BEC -_08011C28: - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - beq _08011C42 - b _08011D6E -_08011C42: - str r0, [sp] - movs r0, 0xB - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - cmp r0, 0 - beq _08011C58 - b _08011D6E -_08011C58: - ldr r0, _08011D7C @ =0x02000000 - ldr r3, _08011D8C @ =0x000160f9 - adds r2, r0, r3 - ldr r0, _08011D84 @ =gUnknown_02024A68 - ldrb r1, [r2] - adds r3, r0, 0 - ldrb r0, [r3] - cmp r1, r0 - bcs _08011CA8 - ldr r5, _08011D88 @ =gUnknown_02024A7A - adds r4, r2, 0 -_08011C6E: - ldrb r0, [r4] - adds r0, r5 - ldrb r1, [r0] - movs r0, 0 - movs r2, 0 - str r3, [sp, 0x4] - bl sub_801A02C - lsls r0, 24 - ldr r3, [sp, 0x4] - cmp r0, 0 - beq _08011C90 - mov r0, r9 - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 -_08011C90: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - mov r1, r9 - cmp r1, 0 - bne _08011D6E - ldr r1, _08011D84 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bcc _08011C6E -_08011CA8: - ldrb r0, [r3] - cmp r0, 0 - beq _08011CB6 - adds r5, r0, 0 -_08011CB0: - subs r5, 0x1 - cmp r5, 0 - bne _08011CB0 -_08011CB6: - movs r5, 0 - ldr r0, _08011D7C @ =0x02000000 - mov r8, r5 - ldr r3, _08011D90 @ =gUnknown_02024C60 - ldr r1, _08011D94 @ =0x00016068 - adds r2, r0, r1 - movs r7, 0x6 - ldr r6, _08011D98 @ =gUnknown_02024C18 - movs r4, 0xFF -_08011CC8: - strb r7, [r2] - adds r1, r5, r6 - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - mov r0, r8 - strh r0, [r3] - adds r3, 0x2 - adds r2, 0x1 - adds r5, 0x1 - cmp r5, 0x3 - ble _08011CC8 - movs r0, 0 - bl sub_801365C - bl sub_801377C - ldr r0, _08011D7C @ =0x02000000 - ldr r1, _08011D9C @ =gUnknown_02024C0C - ldrb r1, [r1] - ldr r2, _08011DA0 @ =0x000160a6 - adds r0, r2 - strb r1, [r0] - ldr r1, _08011DA4 @ =gUnknown_030042D4 - ldr r0, _08011DA8 @ =sub_8012324 - str r0, [r1] - bl sub_80156DC - ldr r1, _08011DAC @ =gUnknown_02024D1E - movs r2, 0 - adds r0, r1, 0x7 -_08011D06: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08011D06 - movs r5, 0 - ldr r3, _08011D84 @ =gUnknown_02024A68 - ldr r2, _08011D7C @ =0x02000000 - ldr r6, _08011DB0 @ =gBattleMoveFlags - ldrb r0, [r3] - cmp r5, r0 - bge _08011D36 - ldr r0, _08011DB4 @ =gBattleMons - movs r4, 0x9 - negs r4, r4 - adds r1, r0, 0 - adds r1, 0x50 -_08011D26: - ldr r0, [r1] - ands r0, r4 - str r0, [r1] - adds r1, 0x58 - adds r5, 0x1 - ldrb r0, [r3] - cmp r5, r0 - blt _08011D26 -_08011D36: - movs r1, 0xB0 - lsls r1, 9 - adds r0, r2, r1 - movs r1, 0 - strb r1, [r0] - ldr r3, _08011DB8 @ =0x00016001 - adds r0, r2, r3 - strb r1, [r0] - ldr r3, _08011DBC @ =0x00016110 - adds r0, r2, r3 - strb r1, [r0] - adds r3, 0x1 - adds r0, r2, r3 - strb r1, [r0] - ldr r3, _08011DC0 @ =0x0001600c - adds r0, r2, r3 - strb r1, [r0] - adds r3, 0x4D - adds r0, r2, r3 - strb r1, [r0] - subs r3, 0x4B - adds r0, r2, r3 - strb r1, [r0] - strb r1, [r6] - bl Random - ldr r1, _08011DC4 @ =gUnknown_02024D1C - strh r0, [r1] -_08011D6E: - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011D7C: .4byte 0x02000000 -_08011D80: .4byte 0x00016058 -_08011D84: .4byte gUnknown_02024A68 -_08011D88: .4byte gUnknown_02024A7A -_08011D8C: .4byte 0x000160f9 -_08011D90: .4byte gUnknown_02024C60 -_08011D94: .4byte 0x00016068 -_08011D98: .4byte gUnknown_02024C18 -_08011D9C: .4byte gUnknown_02024C0C -_08011DA0: .4byte 0x000160a6 -_08011DA4: .4byte gUnknown_030042D4 -_08011DA8: .4byte sub_8012324 -_08011DAC: .4byte gUnknown_02024D1E -_08011DB0: .4byte gBattleMoveFlags -_08011DB4: .4byte gBattleMons -_08011DB8: .4byte 0x00016001 -_08011DBC: .4byte 0x00016110 -_08011DC0: .4byte 0x0001600c -_08011DC4: .4byte gUnknown_02024D1C - thumb_func_end sub_8011B00 - - thumb_func_start bc_8013B1C -bc_8013B1C: @ 8011DC8 - push {r4-r6,lr} - ldr r0, _08011E60 @ =gUnknown_02024A64 - ldr r0, [r0] - cmp r0, 0 - bne _08011E5A - ldr r1, _08011E64 @ =gUnknown_030042D4 - ldr r0, _08011E68 @ =sub_8011E8C - str r0, [r1] - ldr r3, _08011E6C @ =gUnknown_02024A68 - ldr r1, _08011E70 @ =gUnknown_02024D1E - movs r2, 0 - adds r0, r1, 0x7 -_08011DE0: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08011DE0 - movs r4, 0 - ldrb r3, [r3] - cmp r4, r3 - bge _08011E32 - ldr r5, _08011E74 @ =gBattleMons - adds r6, r5, 0 - adds r6, 0x4C -_08011DF6: - movs r0, 0x58 - adds r2, r4, 0 - muls r2, r0 - adds r1, r5, 0 - adds r1, 0x50 - adds r1, r2, r1 - ldr r3, [r1] - subs r0, 0x61 - ands r3, r0 - str r3, [r1] - adds r2, r6 - ldr r0, [r2] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _08011E28 - movs r0, 0x80 - lsls r0, 5 - ands r3, r0 - cmp r3, 0 - beq _08011E28 - lsls r0, r4, 24 - lsrs r0, 24 - bl b_cancel_multi_turn_move_maybe -_08011E28: - adds r4, 0x1 - ldr r0, _08011E6C @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r4, r0 - blt _08011DF6 -_08011E32: - ldr r0, _08011E78 @ =0x02000000 - movs r2, 0xB0 - lsls r2, 9 - adds r1, r0, r2 - movs r2, 0 - strb r2, [r1] - ldr r3, _08011E7C @ =0x00016001 - adds r1, r0, r3 - strb r2, [r1] - ldr r3, _08011E80 @ =0x00016110 - adds r1, r0, r3 - strb r2, [r1] - adds r3, 0x1 - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _08011E84 @ =0x0001600e - adds r0, r1 - strb r2, [r0] - ldr r0, _08011E88 @ =gBattleMoveFlags - strb r2, [r0] -_08011E5A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08011E60: .4byte gUnknown_02024A64 -_08011E64: .4byte gUnknown_030042D4 -_08011E68: .4byte sub_8011E8C -_08011E6C: .4byte gUnknown_02024A68 -_08011E70: .4byte gUnknown_02024D1E -_08011E74: .4byte gBattleMons -_08011E78: .4byte 0x02000000 -_08011E7C: .4byte 0x00016001 -_08011E80: .4byte 0x00016110 -_08011E84: .4byte 0x0001600e -_08011E88: .4byte gBattleMoveFlags - thumb_func_end bc_8013B1C - - thumb_func_start sub_8011E8C -sub_8011E8C: @ 8011E8C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r0, 0x1 - bl sub_801365C - ldr r0, _08011F3C @ =gUnknown_02024D26 - ldrb r0, [r0] - cmp r0, 0 - bne _08011EBC - bl sub_8015DFC - lsls r0, 24 - cmp r0, 0 - beq _08011EB0 - b _08011FEE -_08011EB0: - bl sub_8016558 - lsls r0, 24 - cmp r0, 0 - beq _08011EBC - b _08011FEE -_08011EBC: - bl sub_80173A4 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _08011ECA - b _08011FEE -_08011ECA: - ldr r5, _08011F40 @ =0x02000000 - ldr r2, _08011F44 @ =0x00016059 - adds r0, r5, r2 - strb r1, [r0] - bl sub_80170DC - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _08011EE0 - b _08011FEE -_08011EE0: - movs r0, 0 - bl sub_801365C - ldr r2, _08011F48 @ =gUnknown_02024C6C - ldr r0, [r2] - ldr r1, _08011F4C @ =0xfffffdff - ands r0, r1 - ldr r1, _08011F50 @ =0xfff7ffff - ands r0, r1 - ldr r1, _08011F54 @ =0xffbfffff - ands r0, r1 - ldr r1, _08011F58 @ =0xffefffff - ands r0, r1 - str r0, [r2] - ldr r3, _08011F5C @ =0x00016002 - adds r0, r5, r3 - strb r4, [r0] - ldr r1, _08011F60 @ =0x000160a1 - adds r0, r5, r1 - strb r4, [r0] - ldr r2, _08011F64 @ =0x0001600c - adds r0, r5, r2 - strb r4, [r0] - ldr r0, _08011F68 @ =gBattleMoveDamage - str r4, [r0] - ldr r0, _08011F6C @ =gBattleMoveFlags - strb r4, [r0] - ldr r1, _08011F70 @ =gUnknown_02024D1E - movs r2, 0 - adds r0, r1, 0x4 -_08011F1C: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08011F1C - ldr r0, _08011F3C @ =gUnknown_02024D26 - ldrb r0, [r0] - cmp r0, 0 - beq _08011F80 - ldr r1, _08011F74 @ =gUnknown_02024A7F - movs r0, 0xC - strb r0, [r1] - ldr r1, _08011F78 @ =gUnknown_030042D4 - ldr r0, _08011F7C @ =sub_80138F0 - str r0, [r1] - b _08011FEE - .align 2, 0 -_08011F3C: .4byte gUnknown_02024D26 -_08011F40: .4byte 0x02000000 -_08011F44: .4byte 0x00016059 -_08011F48: .4byte gUnknown_02024C6C -_08011F4C: .4byte 0xfffffdff -_08011F50: .4byte 0xfff7ffff -_08011F54: .4byte 0xffbfffff -_08011F58: .4byte 0xffefffff -_08011F5C: .4byte 0x00016002 -_08011F60: .4byte 0x000160a1 -_08011F64: .4byte 0x0001600c -_08011F68: .4byte gBattleMoveDamage -_08011F6C: .4byte gBattleMoveFlags -_08011F70: .4byte gUnknown_02024D1E -_08011F74: .4byte gUnknown_02024A7F -_08011F78: .4byte gUnknown_030042D4 -_08011F7C: .4byte sub_80138F0 -_08011F80: - ldr r1, _08011FFC @ =gUnknown_030042E0 - ldrb r0, [r1, 0x13] - cmp r0, 0xFE - bhi _08011F8C - adds r0, 0x1 - strb r0, [r1, 0x13] -_08011F8C: - movs r2, 0 - ldr r4, _08012000 @ =gUnknown_02024A68 - ldr r3, _08012004 @ =0x02000000 - mov r9, r3 - ldr r0, _08012008 @ =gUnknown_030042D4 - mov r10, r0 - ldr r1, _0801200C @ =gUnknown_02024C0C - mov r12, r1 - ldr r3, _08012010 @ =sub_8012324 - mov r8, r3 - ldrb r0, [r4] - cmp r2, r0 - bge _08011FC2 - ldr r7, _08012014 @ =gUnknown_02024C18 - movs r6, 0xFF - movs r5, 0 - ldr r3, _08012018 @ =gUnknown_02024C60 -_08011FAE: - adds r1, r2, r7 - ldrb r0, [r1] - orrs r0, r6 - strb r0, [r1] - strh r5, [r3] - adds r3, 0x2 - adds r2, 0x1 - ldrb r1, [r4] - cmp r2, r1 - blt _08011FAE -_08011FC2: - ldr r0, _08012004 @ =0x02000000 - movs r1, 0x6 - movs r2, 0x3 - ldr r3, _0801201C @ =0x0001606b - adds r0, r3 -_08011FCC: - strb r1, [r0] - subs r0, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _08011FCC - mov r0, r12 - ldrb r1, [r0] - ldr r0, _08012020 @ =0x000160a6 - add r0, r9 - strb r1, [r0] - mov r1, r8 - mov r2, r10 - str r1, [r2] - bl Random - ldr r1, _08012024 @ =gUnknown_02024D1C - strh r0, [r1] -_08011FEE: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08011FFC: .4byte gUnknown_030042E0 -_08012000: .4byte gUnknown_02024A68 -_08012004: .4byte 0x02000000 -_08012008: .4byte gUnknown_030042D4 -_0801200C: .4byte gUnknown_02024C0C -_08012010: .4byte sub_8012324 -_08012014: .4byte gUnknown_02024C18 -_08012018: .4byte gUnknown_02024C60 -_0801201C: .4byte 0x0001606b -_08012020: .4byte 0x000160a6 -_08012024: .4byte gUnknown_02024D1C - thumb_func_end sub_8011E8C - - thumb_func_start sub_8012028 -sub_8012028: @ 8012028 - push {r4-r7,lr} - sub sp, 0x4 - ldr r1, _0801204C @ =gBattleMons - ldr r0, _08012050 @ =gUnknown_02024A60 - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, r0, r1 - ldrh r0, [r1, 0x2E] - cmp r0, 0xAF - bne _08012058 - ldr r1, _08012054 @ =gEnigmaBerries - lsls r0, r2, 3 - subs r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r2, [r0, 0x7] - b _08012062 - .align 2, 0 -_0801204C: .4byte gBattleMons -_08012050: .4byte gUnknown_02024A60 -_08012054: .4byte gEnigmaBerries -_08012058: - ldrh r0, [r1, 0x2E] - bl ItemId_GetHoldEffect - lsls r0, 24 - lsrs r2, r0, 24 -_08012062: - ldr r1, _0801217C @ =gUnknown_02024C0B - ldr r3, _08012180 @ =gUnknown_02024A60 - ldrb r0, [r3] - strb r0, [r1] - cmp r2, 0x25 - bne _08012070 - b _080121F4 -_08012070: - ldr r0, _08012184 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0801207E - b _080121F4 -_0801207E: - ldr r1, _08012188 @ =gBattleMons - ldrb r2, [r3] - movs r0, 0x58 - muls r0, r2 - adds r0, r1 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x32 - bne _08012092 - b _080121F4 -_08012092: - adds r0, r2, 0 - bl battle_side_get_owner - lsls r0, 24 - lsrs r6, r0, 24 - movs r5, 0 - ldr r0, _0801218C @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r5, r0 - bge _08012126 - movs r7, 0 -_080120A8: - lsrs r4, r7, 24 - adds r0, r4, 0 - bl battle_side_get_owner - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _080120CC - ldr r1, _08012188 @ =gBattleMons - movs r0, 0x58 - muls r0, r5 - adds r0, r1 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x17 - bne _080120CC - b _080121FC -_080120CC: - adds r0, r4, 0 - bl battle_side_get_owner - lsls r0, 24 - lsrs r0, 24 - cmp r6, r0 - beq _08012116 - ldr r3, _08012188 @ =gBattleMons - ldr r0, _08012180 @ =gUnknown_02024A60 - ldrb r0, [r0] - movs r2, 0x58 - muls r0, r2 - adds r1, r0, r3 - adds r0, r1, 0 - adds r0, 0x20 - ldrb r0, [r0] - cmp r0, 0x1A - beq _08012116 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08012116 - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x2 - beq _08012116 - adds r0, r5, 0 - muls r0, r2 - adds r0, r3 - adds r2, r0, 0 - adds r2, 0x20 - ldrb r0, [r2] - cmp r0, 0x47 - bne _08012116 - b _08012220 -_08012116: - movs r0, 0x80 - lsls r0, 17 - adds r7, r0 - adds r5, 0x1 - ldr r0, _0801218C @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r5, r0 - blt _080120A8 -_08012126: - ldr r4, _08012180 @ =gUnknown_02024A60 - ldrb r1, [r4] - movs r0, 0 - str r0, [sp] - movs r0, 0xF - movs r2, 0x2A - movs r3, 0 - bl sub_8018324 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _080121A0 - ldr r6, _08012188 @ =gBattleMons - ldrb r0, [r4] - movs r3, 0x58 - muls r0, r3 - adds r1, r0, r6 - adds r0, r1, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0x8 - beq _0801215E - adds r0, r1, 0 - adds r0, 0x22 - ldrb r0, [r0] - cmp r0, 0x8 - bne _080121A0 -_0801215E: - ldr r0, _08012190 @ =0x02000000 - subs r1, r5, 0x1 - ldr r2, _08012194 @ =0x00016003 - adds r0, r2 - strb r1, [r0] - ldr r2, _08012198 @ =byte_2024C06 - adds r0, r1, 0 - muls r0, r3 - adds r0, r6 - adds r0, 0x20 - ldrb r0, [r0] - strb r0, [r2] - ldr r1, _0801219C @ =gUnknown_02024D1E - movs r0, 0x2 - b _08012248 - .align 2, 0 -_0801217C: .4byte gUnknown_02024C0B -_08012180: .4byte gUnknown_02024A60 -_08012184: .4byte gBattleTypeFlags -_08012188: .4byte gBattleMons -_0801218C: .4byte gUnknown_02024A68 -_08012190: .4byte 0x02000000 -_08012194: .4byte 0x00016003 -_08012198: .4byte byte_2024C06 -_0801219C: .4byte gUnknown_02024D1E -_080121A0: - ldr r1, _080121D4 @ =gBattleMons - ldr r0, _080121D8 @ =gUnknown_02024A60 - ldrb r2, [r0] - movs r0, 0x58 - muls r0, r2 - adds r1, 0x50 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080121DC @ =0x0400e000 - ands r0, r1 - cmp r0, 0 - bne _080121CA - ldr r1, _080121E0 @ =gUnknown_02024C98 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x80 - lsls r1, 3 - ands r0, r1 - cmp r0, 0 - beq _080121E8 -_080121CA: - ldr r1, _080121E4 @ =gUnknown_02024D1E - movs r0, 0 - strb r0, [r1, 0x5] - movs r0, 0x1 - b _0801224A - .align 2, 0 -_080121D4: .4byte gBattleMons -_080121D8: .4byte gUnknown_02024A60 -_080121DC: .4byte 0x0400e000 -_080121E0: .4byte gUnknown_02024C98 -_080121E4: .4byte gUnknown_02024D1E -_080121E8: - ldr r0, _080121F8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _08012244 -_080121F4: - movs r0, 0 - b _0801224A - .align 2, 0 -_080121F8: .4byte gBattleTypeFlags -_080121FC: - ldr r0, _08012210 @ =0x02000000 - ldr r1, _08012214 @ =0x00016003 - adds r0, r1 - strb r5, [r0] - ldr r1, _08012218 @ =byte_2024C06 - ldrb r0, [r2] - strb r0, [r1] - ldr r1, _0801221C @ =gUnknown_02024D1E - movs r0, 0x2 - b _08012248 - .align 2, 0 -_08012210: .4byte 0x02000000 -_08012214: .4byte 0x00016003 -_08012218: .4byte byte_2024C06 -_0801221C: .4byte gUnknown_02024D1E -_08012220: - ldr r0, _08012234 @ =0x02000000 - ldr r1, _08012238 @ =0x00016003 - adds r0, r1 - strb r5, [r0] - ldr r1, _0801223C @ =byte_2024C06 - ldrb r0, [r2] - strb r0, [r1] - ldr r1, _08012240 @ =gUnknown_02024D1E - movs r0, 0x2 - b _08012248 - .align 2, 0 -_08012234: .4byte 0x02000000 -_08012238: .4byte 0x00016003 -_0801223C: .4byte byte_2024C06 -_08012240: .4byte gUnknown_02024D1E -_08012244: - ldr r1, _08012254 @ =gUnknown_02024D1E - movs r0, 0x1 -_08012248: - strb r0, [r1, 0x5] -_0801224A: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08012254: .4byte gUnknown_02024D1E - thumb_func_end sub_8012028 - thumb_func_start sub_8012258 sub_8012258: @ 8012258 push {r4-r7,lr} diff --git a/src/battle_2.c b/src/battle_2.c index 2c92bcb30..7e8acc68c 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -15,6 +15,7 @@ #include "sound.h" #include "songs.h" #include "trig.h" +#include "abilities.h" struct MonCoords { @@ -152,11 +153,17 @@ extern const u32 gBitTable[]; extern u8 ewram[]; #define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0)) #define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4)) +#define ewram16000 (ewram[0x16000]) +#define ewram16001 (ewram[0x16001]) #define ewram16002 (ewram[0x16002]) +#define ewram16003 (ewram[0x16003]) +#define ewram1600C (ewram[0x1600C]) +#define ewram1600E (ewram[0x1600E]) #define ewram1601B (ewram[0x1601B]) #define ewram16020 ((u8 *)(ewram + 0x16020)) #define ewram16056 (ewram[0x16056]) #define ewram16058 (ewram[0x16058]) +#define ewram16059 (ewram[0x16059]) #define ewram16078 (ewram[0x16078]) #define ewram16084 (ewram[0x16084]) #define ewram16086 (ewram[0x16086]) @@ -164,6 +171,7 @@ extern u8 ewram[]; #define ewram16088 (ewram[0x16088]) #define ewram16089 (ewram[0x16089]) #define ewram160A1 (ewram[0x160A1]) +#define ewram160A6 (ewram[0x160A6]) #define ewram160AC ((u8 *)(ewram + 0x160AC)) #define ewram160BC ((u16 *)(ewram + 0x160BC)) // hp #define ewram160C8 (ewram[0x160C8]) @@ -176,6 +184,8 @@ extern u8 ewram[]; #define ewram160F9 (ewram[0x160F9]) #define ewram16100 ((u8 *)(ewram + 0x16100)) #define ewram16108 ((u8 *)(ewram + 0x16108)) +#define ewram16110 (ewram[0x16110]) +#define ewram16111 (ewram[0x16111]) #define ewram16113 (ewram[0x16113]) #define ewram17100 ((u32 *)(ewram + 0x17100)) #define ewram17130 (ewram[0x17130]) @@ -190,11 +200,16 @@ extern u8 gUnknown_02024A60; extern u32 gUnknown_02024A64; extern u8 gUnknown_02024A68; extern u16 gUnknown_02024A6A[]; +extern u8 gUnknown_02024A7F; +extern u8 gUnknown_02024A7A[]; extern struct UnknownStruct12 gUnknown_02024AD0[]; extern u8 gUnknown_02024BE0[]; extern u16 gUnknown_02024BE6; +extern u8 byte_2024C06; +extern u8 gUnknown_02024C0B; extern u8 gUnknown_02024C0C; extern u8 gUnknown_02024C0E; +extern u8 gUnknown_02024C18[]; extern u16 gUnknown_02024C2C[]; extern u16 gUnknown_02024C34[]; extern u16 gUnknown_02024C3C[]; @@ -202,6 +217,7 @@ extern u16 gUnknown_02024C44[]; extern u16 gUnknown_02024C4C[]; extern u16 gUnknown_02024C54[]; extern u8 gUnknown_02024C5C[]; +extern u16 gUnknown_02024C60[]; extern u32 gUnknown_02024C6C; extern u8 gUnknown_02024C70[]; extern u16 gUnknown_02024C7A[]; @@ -210,6 +226,7 @@ extern u32 gUnknown_02024C98[]; //extern u8 gUnknown_02024CA8[][0x1C]; extern u16 gUnknown_02024D18; extern u16 gUnknown_02024D1A; +extern u16 gUnknown_02024D1C; extern u8 gUnknown_02024D1E[]; extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is. extern u8 gUnknown_02024D26; @@ -254,6 +271,7 @@ extern u8 gEnemyMonIndex; extern u16 gBattleWeather; extern u32 gBattleMoveDamage; extern struct BattlePokemon gBattleMons[]; +extern u8 gBattleMoveFlags; extern void sub_800B858(void); extern void dp12_8087EA4(void); @@ -281,8 +299,14 @@ extern void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a); extern void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); extern void dp01_battle_side_mark_buffer_for_execution(); extern u8 sub_8090D90(); -extern void b_std_message(); extern void sub_800C704(u8, u8, u8); +extern u8 sub_8018324(); +extern u8 sub_801A02C(); +extern u8 sub_8015DFC(); +extern u8 sub_8016558(); +extern u8 sub_80173A4(); +extern u8 sub_80170DC(); +extern u8 ItemId_GetHoldEffect(u16); void sub_800E7F8(void); void sub_800EC9C(void); @@ -317,8 +341,16 @@ void bc_801362C(void); void sub_8011970(void); void sub_80119B4(void); void sub_8011B00(void); +void sub_8011E8C(void); +void sub_8012324(void); +void sub_8012FBC(u8, u8); +u8 b_first_side(); void sub_801365C(u8); void sub_801377C(void); +void sub_80138F0(void); +void b_cancel_multi_turn_move_maybe(u8); +void b_std_message(); +void sub_80156DC(); void sub_800E7C4(void) { @@ -2275,3 +2307,213 @@ void unref_sub_8011A68(void) gUnknown_030042D4 = sub_8011B00; } } + +void sub_8011B00(void) +{ + s32 i; + s32 j; + u8 r9 = 0; + + if (gUnknown_02024A64 == 0) + { + if (ewram16058 == 0) + { + for (i = 0; i < gUnknown_02024A68; i++) + gUnknown_02024A7A[i] = i; + for (i = 0; i < gUnknown_02024A68 - 1; i++) + { + for (j = i + 1; j < gUnknown_02024A68; j++) + { + if (b_first_side(gUnknown_02024A7A[i], gUnknown_02024A7A[j], 1) != 0) + sub_8012FBC(i, j); + } + } + } + if (ewram160E6 == 0 && sub_8018324(0, 0, 0, 0xFF, 0) != 0) + { + ewram160E6 = 1; + return; + } + while (ewram16058 < gUnknown_02024A68) + { + if (sub_8018324(0, gUnknown_02024A7A[ewram16058], 0, 0, 0) != 0) + r9++; + ewram16058++; + if (r9 != 0) + return; + } + if (sub_8018324(9, 0, 0, 0, 0) != 0) + return; + if (sub_8018324(11, 0, 0, 0, 0) != 0) + return; + while (ewram160F9 < gUnknown_02024A68) + { + if (sub_801A02C(0, gUnknown_02024A7A[ewram160F9], 0) != 0) + r9++; + ewram160F9++; + if (r9 != 0) + return; + } + // Absolutely pointless for-loop that somehow doesn't get optimized out + for (i = 0; i < gUnknown_02024A68; i++) + ; + for (i = 0; i < 4; i++) + { + ewram[0x16068 + i] = 6; + gUnknown_02024C18[i] = 0xFF; + gUnknown_02024C60[i] = 0; + } + sub_801365C(0); + sub_801377C(); + ewram160A6 = gUnknown_02024C0C; + gUnknown_030042D4 = sub_8012324; + sub_80156DC(); + for (i = 0; i < 8; i++) + gUnknown_02024D1E[i] = 0; + for (i = 0; i < gUnknown_02024A68; i++) + gBattleMons[i].status2 &= ~8; + ewram16000 = 0; + ewram16001 = 0; + ewram16110 = 0; + ewram16111 = 0; + ewram1600C = 0; + ewram16059 = 0; + ewram1600E = 0; + gBattleMoveFlags = 0; + gUnknown_02024D1C = Random(); + } +} + +void bc_8013B1C(void) +{ + s32 i; + + if (gUnknown_02024A64 == 0) + { + gUnknown_030042D4 = sub_8011E8C; + for (i = 0; i < 8; i++) + gUnknown_02024D1E[i] = 0; + for (i = 0; i < gUnknown_02024A68; i++) + { + gBattleMons[i].status2 &= ~8; + if ((gBattleMons[i].status1 & 7) && (gBattleMons[i].status2 & 0x1000)) + b_cancel_multi_turn_move_maybe(i); + } + ewram16000 = 0; + ewram16001 = 0; + ewram16110 = 0; + ewram16111 = 0; + ewram1600E = 0; + gBattleMoveFlags = 0; + } +} + +void sub_8011E8C(void) +{ + s32 i; + + sub_801365C(1); + if (gUnknown_02024D26 == 0) + { + if (sub_8015DFC() != 0) + return; + if (sub_8016558() != 0) + return; + } + if (sub_80173A4() != 0) + return; + ewram16059 = 0; + if (sub_80170DC() != 0) + return; + sub_801365C(0); + gUnknown_02024C6C &= ~0x200; + gUnknown_02024C6C &= ~0x80000; + gUnknown_02024C6C &= ~0x400000; + gUnknown_02024C6C &= ~0x100000; + ewram16002 = 0; + ewram160A1 = 0; + ewram1600C = 0; + gBattleMoveDamage = 0; + gBattleMoveFlags = 0; + for (i = 0; i < 5; i++) + gUnknown_02024D1E[i] = 0; + if (gUnknown_02024D26 != 0) + { + gUnknown_02024A7F = 12; + gUnknown_030042D4 = sub_80138F0; + return; + } + if (gUnknown_030042E0.unk13 < 0xFF) + gUnknown_030042E0.unk13++; + for (i = 0; i < gUnknown_02024A68; i++) + { + gUnknown_02024C18[i] = 0xFF; + gUnknown_02024C60[i] = 0; + } + for (i = 0; i < 4; i++) + ewram[0x16068 + i] = 6; + ewram160A6 = gUnknown_02024C0C; + gUnknown_030042D4 = sub_8012324; + gUnknown_02024D1C = Random(); +} + +u8 sub_8012028(void) +{ + u8 r2; + u8 r6; + s32 i; + + if (gBattleMons[gUnknown_02024A60].item == 0xAF) + r2 = gEnigmaBerries[gUnknown_02024A60].holdEffect; + else + r2 = ItemId_GetHoldEffect(gBattleMons[gUnknown_02024A60].item); + gUnknown_02024C0B = gUnknown_02024A60; + if (r2 == 0x25) + return 0; + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + return 0; + if (gBattleMons[gUnknown_02024A60].ability == ABILITY_RUN_AWAY) + return 0; + r6 = battle_side_get_owner(gUnknown_02024A60); + for (i = 0; i < gUnknown_02024A68; i++) + { + if (r6 != battle_side_get_owner(i) + && gBattleMons[i].ability == 0x17) + { + ewram16003 = i; + byte_2024C06 = gBattleMons[i].ability; + gUnknown_02024D1E[5] = 2; + return 2; + } + if (r6 != battle_side_get_owner(i) + && gBattleMons[gUnknown_02024A60].ability != ABILITY_LEVITATE + && gBattleMons[gUnknown_02024A60].type1 != 2 + && gBattleMons[gUnknown_02024A60].type2 != 2 + && gBattleMons[i].ability == 0x47) + { + ewram16003 = i; + byte_2024C06 = gBattleMons[i].ability; + gUnknown_02024D1E[5] = 2; + return 2; + } + } + i = sub_8018324(15, gUnknown_02024A60, 0x2A, 0, 0); + if (i != 0 && (gBattleMons[gUnknown_02024A60].type1 == 8 || gBattleMons[gUnknown_02024A60].type2 == 8)) + { + ewram16003 = i - 1; + byte_2024C06 = gBattleMons[i - 1].ability; + gUnknown_02024D1E[5] = 2; + return 2; + } + if ((gBattleMons[gUnknown_02024A60].status2 & 0x0400E000) || (gUnknown_02024C98[gUnknown_02024A60] & 0x400)) + { + gUnknown_02024D1E[5] = 0; + return 1; + } + if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) + { + gUnknown_02024D1E[5] = 1; + return 1; + } + return 0; +} -- cgit v1.2.3 From 31e07eb09163f40c3cb79e1b26f21ffde9446014 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Thu, 18 May 2017 00:04:14 -0500 Subject: decompile sub_8012258 and trim whitespace --- asm/battle_2.s | 101 --------------------------------------------------------- src/battle_2.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 86 insertions(+), 105 deletions(-) diff --git a/asm/battle_2.s b/asm/battle_2.s index c388077af..cff6efe06 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -6,107 +6,6 @@ .text - thumb_func_start sub_8012258 -sub_8012258: @ 8012258 - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r7, _080122E4 @ =gUnknown_02024A6A - ldr r4, _080122E8 @ =gUnknown_02038470 - ldr r1, _080122EC @ =0x02000000 - lsls r6, r5, 1 - ldr r2, _080122F0 @ =0x0001606c - adds r0, r5, r2 - adds r0, r6, r0 - adds r2, r0, r1 -_08012270: - adds r1, r3, r4 - ldrb r0, [r2] - strb r0, [r1] - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x2 - ble _08012270 - adds r0, r6, r7 - ldrb r0, [r0] - bl pokemon_order_func - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r7, _080122EC @ =0x02000000 - ldr r1, _080122F4 @ =0x00016068 - adds r0, r5, r1 - adds r0, r7 - ldrb r0, [r0] - bl pokemon_order_func - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl sub_8094C98 - ldr r0, _080122F8 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080122FC - movs r3, 0 - ldr r2, _080122F0 @ =0x0001606c - movs r0, 0x2 - adds r1, r5, 0 - eors r1, r0 - adds r0, r5, r2 - adds r0, r6, r0 - adds r4, r0, r7 - ldr r5, _080122E8 @ =gUnknown_02038470 - lsls r0, r1, 1 - adds r0, r1 - adds r0, r2 - adds r2, r0, r7 -_080122CC: - adds r0, r3, r5 - ldrb r1, [r0] - strb r1, [r4] - ldrb r0, [r0] - strb r0, [r2] - adds r4, 0x1 - adds r2, 0x1 - adds r3, 0x1 - cmp r3, 0x2 - ble _080122CC - b _08012316 - .align 2, 0 -_080122E4: .4byte gUnknown_02024A6A -_080122E8: .4byte gUnknown_02038470 -_080122EC: .4byte 0x02000000 -_080122F0: .4byte 0x0001606c -_080122F4: .4byte 0x00016068 -_080122F8: .4byte gBattleTypeFlags -_080122FC: - movs r3, 0 - ldr r2, _0801231C @ =0x0001606c - adds r0, r5, r2 - adds r0, r6, r0 - adds r1, r0, r7 - ldr r2, _08012320 @ =gUnknown_02038470 -_08012308: - adds r0, r3, r2 - ldrb r0, [r0] - strb r0, [r1] - adds r1, 0x1 - adds r3, 0x1 - cmp r3, 0x2 - ble _08012308 -_08012316: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0801231C: .4byte 0x0001606c -_08012320: .4byte gUnknown_02038470 - thumb_func_end sub_8012258 - thumb_func_start sub_8012324 sub_8012324: @ 8012324 push {r4-r7,lr} diff --git a/src/battle_2.c b/src/battle_2.c index 7e8acc68c..f2ce737d6 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -235,6 +235,7 @@ extern u8 gUnknown_02024DBC[]; extern u16 gUnknown_02024DE8; extern u8 gUnknown_02024E60[]; extern u8 gUnknown_02024E64[]; +extern u8 gUnknown_02038470[]; extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B4; extern u16 gUnknown_030041B8; @@ -294,6 +295,7 @@ extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); extern void dp01_build_cmdbuf_x00_a_b_0(u8 a, u8 b, u8 c); extern void dp01_build_cmdbuf_x04_4_4_4(u8 a); extern void dp01_build_cmdbuf_x07_7_7_7(u8 a); +extern void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c); extern void dp01_build_cmdbuf_x2E_a(u8 a, u8 b); extern void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a); extern void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); @@ -307,6 +309,7 @@ extern u8 sub_8016558(); extern u8 sub_80173A4(); extern u8 sub_80170DC(); extern u8 ItemId_GetHoldEffect(u16); +extern void sub_8094C98(); void sub_800E7F8(void); void sub_800EC9C(void); @@ -2313,7 +2316,7 @@ void sub_8011B00(void) s32 i; s32 j; u8 r9 = 0; - + if (gUnknown_02024A64 == 0) { if (ewram16058 == 0) @@ -2387,7 +2390,7 @@ void sub_8011B00(void) void bc_8013B1C(void) { s32 i; - + if (gUnknown_02024A64 == 0) { gUnknown_030042D4 = sub_8011E8C; @@ -2411,7 +2414,7 @@ void bc_8013B1C(void) void sub_8011E8C(void) { s32 i; - + sub_801365C(1); if (gUnknown_02024D26 == 0) { @@ -2462,7 +2465,7 @@ u8 sub_8012028(void) u8 r2; u8 r6; s32 i; - + if (gBattleMons[gUnknown_02024A60].item == 0xAF) r2 = gEnigmaBerries[gUnknown_02024A60].holdEffect; else @@ -2517,3 +2520,82 @@ u8 sub_8012028(void) } return 0; } + +void sub_8012258(u8 a) +{ + s32 i; + u8 r4; + u8 r1; + + for (i = 0; i < 3; i++) + gUnknown_02038470[i] = ewram[0x1606C + i + a * 3]; + r4 = pokemon_order_func(gUnknown_02024A6A[a]); + r1 = pokemon_order_func(ewram[0x16068 + a]); + sub_8094C98(r4, r1); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + for (i = 0; i < 3; i++) + { + ewram[0x1606C + i + a * 3] = gUnknown_02038470[i]; + ewram[0x1606C + i + (a ^ 2) * 3] = gUnknown_02038470[i]; + } + } + else + { + for (i = 0; i < 3; i++) + { + ewram[0x1606C + i + a * 3] = gUnknown_02038470[i]; + } + } +} + +/* +void sub_8012324(void) +{ + u8 r5; + + gUnknown_02024D1E[4] = 0; + // inverted loop + //_0801234C + for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + { + r5 = battle_get_per_side_status(gUnknown_02024A60); + switch (gUnknown_02024D1E[gUnknown_02024A60]) + { + case 0: + ewram[0x016068 + gUnknown_02024A60] = 6; + if (!(gBattleTypeFlags & 0x40) + && (r5 & 2) + && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)]) + && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4) + break; + //_080123F8 + if (ewram160A6 & gBitTable[gUnknown_02024A60]) + { + gUnknown_02024C18[gUnknown_02024A60] = 13; + if (!(gBattleTypeFlags & 0x40)) + gUnknown_02024D1E[gUnknown_02024A60] = 4; + //_08012454 + else + gUnknown_02024D1E[gUnknown_02024A60] = 3; + break; + } + //_08012468 + if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000) + || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000)) + { + gUnknown_02024C18[gUnknown_02024A60] = 0; + gUnknown_02024D1E[gUnknown_02024A60] = 3; + } + else + { + dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8)); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + gUnknown_02024D1E[gUnknown_02024A60]++; + } + break; + case 1: + } + } +} +*/ -- cgit v1.2.3 From 095d071cab1950f404f7fb5b6c0ff04ccc6c37f2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 11:21:58 -0400 Subject: Merge tv show list and extra attributes into a single struct --- include/global.h | 24 ++++++++++++++---------- src/tv.c | 52 ++++++++++++++++++++++++++-------------------------- 2 files changed, 40 insertions(+), 36 deletions(-) diff --git a/include/global.h b/include/global.h index 522ec065b..4b70d3283 100644 --- a/include/global.h +++ b/include/global.h @@ -354,14 +354,19 @@ typedef union SB_Struct { // size is 0x198 struct UnknownSaveStruct2A98 { - u8 var00; - u8 var01; - u16 var02; - u16 var04; - u16 var06; - u16 var08; - u8 var0a; - u8 pad0b[25]; + u8 var00; + u8 var01; + u16 var02; + u16 var04; + u16 var06; + u16 var08; + u8 var0a; + u8 pad0b[25]; +}; + +struct SaveTVStruct { + TVShow shows[24]; + struct UnknownSaveStruct2A98 unknown_2A98; }; struct UnknownSaveStruct2ABC { @@ -417,8 +422,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2704*/ u8 decorDoll[40]; /*0x272C*/ u8 decorCushion[10]; /*0x2736*/ u8 padding_2736[2]; - /*0x2738*/ TVShow tvShows[24]; - /*0x2A98*/ struct UnknownSaveStruct2A98 unknown_2A98; + /*0x2738*/ struct SaveTVStruct tvShows; /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16]; /*0x2AFC*/ u16 outbreakPokemonSpecies; /*0x2AFE*/ u8 outbreakLocationMapNum; diff --git a/src/tv.c b/src/tv.c index ddfb57c45..a5a4690a2 100644 --- a/src/tv.c +++ b/src/tv.c @@ -59,10 +59,10 @@ void ClearTVShowData(void) u8 showidx; u8 extradataidx; for (showidx=0; showidx<25; showidx++) { - gSaveBlock1.tvShows[showidx].common.var00 = 0; - gSaveBlock1.tvShows[showidx].common.var01 = 0; + gSaveBlock1.tvShows.shows[showidx].common.var00 = 0; + gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; for (extradataidx=0; extradataidx<34; extradataidx++) { - gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; + gSaveBlock1.tvShows.shows[showidx].common.pad02[extradataidx] = 0; } } sub_80BEBF4(); @@ -99,7 +99,7 @@ void sub_80BE478(void) return; } - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW; tvShow->nameRaterShow.var01 = 1; @@ -126,7 +126,7 @@ void StartMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species; gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum; @@ -148,7 +148,7 @@ void sub_80BE5FC(void) TVShow *tvShow; u16 species; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER; tvShow->fanclubLetter.var01 = 1; @@ -164,7 +164,7 @@ void sub_80BE65C(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; tvShow->recentHappenings.var01 = 1; @@ -180,7 +180,7 @@ void sub_80BE6A0(void) TVShow *tvShow; u8 monIndex; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; tvShow->fanclubOpinions.var01 = 1; @@ -218,7 +218,7 @@ void sub_80BE778(void) for (i = 0; i < 24; i++) { - if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + if (gSaveBlock1.tvShows.shows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) { return; } @@ -229,7 +229,7 @@ void sub_80BE778(void) return; } - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); if (gUnknown_03005D38.var0 == -1) { return; @@ -245,7 +245,7 @@ void sub_80BE778(void) val2 = gUnknown_03005D38.var0; - tvShow = &gSaveBlock1.tvShows[val2]; + tvShow = &gSaveBlock1.tvShows.shows[val2]; tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK; tvShow->massOutbreak.var01 = 1; @@ -302,8 +302,8 @@ void sub_80BE8EC(u16 arg0) TVShow *tvShow; if (gSaveBlock1.outbreakPokemonSpecies == 0) { for (showidx=0; showidx<24; showidx++) { - if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == 0x29 && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) { - tvShow = &(gSaveBlock1.tvShows[showidx]); + if (gSaveBlock1.tvShows.shows[showidx].massOutbreak.var00 == 0x29 && gSaveBlock1.tvShows.shows[showidx].massOutbreak.var01 == 0x01) { + tvShow = &(gSaveBlock1.tvShows.shows[showidx]); if (tvShow->massOutbreak.var16 < arg0) tvShow->massOutbreak.var16 = 0; else @@ -352,9 +352,9 @@ u8 sub_80BF1B4(s8); void sub_80BE9D4() { TVShow *show; - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(24) != 1) { - show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); + show = &(gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]); #ifdef NONMATCHING show->common.var00 = 24; show->common.var01 = 0; @@ -386,12 +386,12 @@ void sub_80BEA88(void); void sub_80BEA5C(u16 arg0) { struct UnknownSaveStruct2A98 *unk_2a98; - unk_2a98 = &gSaveBlock1.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; if (unk_2a98->var00 == 0x19) { if (unk_2a98->var02 <= 0x13) { - sub_80BF55C(gSaveBlock1.tvShows, 0x18); + sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18); } else { @@ -404,14 +404,14 @@ void sub_80BEA88(void) struct UnknownSaveStruct2A98 *unk_2a98; TVShow *tvShow; u8 rval; - unk_2a98 = &gSaveBlock1.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; rval = sub_80BF77C(0xFFFF); if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(0x19) != 1) { - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->unknownTvShowType2.var00 = 0x19; tvShow->unknownTvShowType2.var01 = rval; tvShow->unknownTvShowType2.var02 = unk_2a98->var02; @@ -442,7 +442,7 @@ void sub_80BEA88(void) // val = (rval16 % 3) + 1; // if (sub_80BEE48(val) != 1) // { - // tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + // tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; // unk_2abc[gUnknown_03005D38.var0][0] = val; // to do // } @@ -503,7 +503,7 @@ void sub_80BF588(TVShow tvShow[]) for (showidx2=showidx+1; showidx2<24; showidx2++) { if (tvShow[showidx2].common.var00 != 0) { tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(gSaveBlock1.tvShows, showidx2); + sub_80BF55C(gSaveBlock1.tvShows.shows, showidx2); break; } } @@ -539,7 +539,7 @@ u16 sub_80BF674(u16 species) void sub_80BF6D8(void) { - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); gSpecialVar_0x8006 = gUnknown_03005D38.var0; if (gUnknown_03005D38.var0 == -1) gScriptResult = 1; @@ -655,7 +655,7 @@ bool8 sub_80BF974(void) u8 i; for (i=0; i<5; i++) { - if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) + if (gSaveBlock1.tvShows.shows[i].common.var00 == gSpecialVar_0x8004) return TRUE; } return FALSE; @@ -916,7 +916,7 @@ void DoTVShowPokemonNewsMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0); @@ -935,7 +935,7 @@ void TVShowDone(void) gScriptResult = 1; gUnknown_020387E8 = 0; - gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; + gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 = 0; } void sub_80C2014(void) -- cgit v1.2.3 From b97e078c6e84cf6cf5fe7539e4dcc2d24de494c8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 13:38:20 -0400 Subject: sub_80BFD44 --- asm/tv.s | 110 ---------------------------------------------------- include/asm.inc.h | 2 +- src/record_mixing.c | 2 +- src/tv.c | 43 ++++++++++++++++++++ 4 files changed, 45 insertions(+), 112 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 0537eac33..c77e0b0dc 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2909,116 +2909,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BFD44 -sub_80BFD44: @ 80BFD44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - movs r4, 0 -_080BFD54: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 5 - adds r0, r4 - lsls r0, 2 - ldr r5, _080BFD8C @ =0x02007000 - adds r0, r5 - adds r1, r4, 0 - muls r1, r7 - add r1, r8 - movs r2, 0xE1 - lsls r2, 2 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080BFD54 - adds r4, r5, 0 - cmp r6, 0x1 - beq _080BFDBC - cmp r6, 0x1 - bgt _080BFD90 - cmp r6, 0 - beq _080BFD9A - b _080BFDFC - .align 2, 0 -_080BFD8C: .4byte 0x02007000 -_080BFD90: - cmp r6, 0x2 - beq _080BFDCC - cmp r6, 0x3 - beq _080BFDE8 - b _080BFDFC -_080BFD9A: - ldr r0, _080BFDB4 @ =gSaveBlock1 + 0x2738 - movs r2, 0xE1 - lsls r2, 2 - adds r1, r4, r2 - movs r3, 0xE1 - lsls r3, 3 - adds r2, r4, r3 - ldr r5, _080BFDB8 @ =0x00000a8c - adds r3, r4, r5 - bl sub_80BFE24 - b _080BFDFC - .align 2, 0 -_080BFDB4: .4byte gSaveBlock1 + 0x2738 -_080BFDB8: .4byte 0x00000a8c -_080BFDBC: - ldr r1, _080BFDC8 @ =gSaveBlock1 + 0x2738 - movs r0, 0xE1 - lsls r0, 3 - adds r2, r4, r0 - b _080BFDD4 - .align 2, 0 -_080BFDC8: .4byte gSaveBlock1 + 0x2738 -_080BFDCC: - movs r0, 0xE1 - lsls r0, 2 - adds r1, r4, r0 - ldr r2, _080BFDE0 @ =gSaveBlock1 + 0x2738 -_080BFDD4: - ldr r5, _080BFDE4 @ =0x00000a8c - adds r3, r4, r5 - adds r0, r4, 0 - bl sub_80BFE24 - b _080BFDFC - .align 2, 0 -_080BFDE0: .4byte gSaveBlock1 + 0x2738 -_080BFDE4: .4byte 0x00000a8c -_080BFDE8: - movs r0, 0xE1 - lsls r0, 2 - adds r1, r5, r0 - movs r3, 0xE1 - lsls r3, 3 - adds r2, r5, r3 - ldr r3, _080BFE20 @ =gSaveBlock1 + 0x2738 - adds r0, r5, 0 - bl sub_80BFE24 -_080BFDFC: - ldr r4, _080BFE20 @ =gSaveBlock1 + 0x2738 - adds r0, r4, 0 - bl sub_80BF588 - bl sub_80C04A0 - adds r0, r4, 0 - bl sub_80BF588 - bl sub_80C01D4 - bl sub_80C0408 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BFE20: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BFD44 - thumb_func_start sub_80BFE24 sub_80BFE24: @ 80BFE24 push {r4-r7,lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index e13b4668a..3931f7f1c 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -293,7 +293,7 @@ void sub_80BF478(void); u16 sub_80BF674(u16 species); s8 sub_80BF720(TVShow *); bool8 sub_80BF77C(u16); -void sub_80BFD44(void *, u32, u8); +void sub_80BFD44(u8 *, u32, u8); void sub_80C0514(void *, u32, u8); // src/tv.o diff --git a/src/record_mixing.c b/src/record_mixing.c index 76fe13059..ddf9a5376 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -185,7 +185,7 @@ _080B93AC: .4byte 0x000011c8\n\ void sub_80B93B0(u32 a) { sub_80BD674(unk_2008000.secretBases, sizeof(struct PlayerRecords), a); - sub_80BFD44(unk_2008000.tvShows, sizeof(struct PlayerRecords), a); + sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a); sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a); sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a); //UB: Too many arguments for function "sub_80FA4E4" diff --git a/src/tv.c b/src/tv.c index a5a4690a2..665949feb 100644 --- a/src/tv.c +++ b/src/tv.c @@ -910,6 +910,49 @@ void sub_80BFD20(void) RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } +extern u8 ewram[]; +#define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(ewram + 0x7000)) + +struct ewramStruct_0207000 { + struct SaveTVStruct tvshows[4]; +}; + +void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3); + +void sub_80C04A0(void); +void sub_80C01D4(void); +void sub_80C0408(void); + +void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) +{ + u8 i; + struct ewramStruct_0207000 *ewramTVShows; + for (i=0; i<4; i++) { + memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], sizeof(struct SaveTVStruct)); + } + ewramTVShows = &gUnknown_02007000; + switch (arg2) { + case 0: + sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 1: + sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 2: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); + break; + case 3: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); + break; + } + sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80C04A0(); + sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80C01D4(); + sub_80C0408(); +} + + asm(".section .text_c"); void DoTVShowPokemonNewsMassOutbreak(void) -- cgit v1.2.3 From f019bc2f46030bdaebcb6617a0672914e7f637ef Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 14:46:12 -0400 Subject: sub_80BFE24 (i needs lots of help on this one) --- asm/tv.s | 163 --------------------------------------------------- src/tv.c | 202 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 201 insertions(+), 164 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index c77e0b0dc..f4c6c2564 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2909,169 +2909,6 @@ _080BF4F0: .4byte gSaveBlock1 + 0x2738 .section .text_80BF544 - thumb_func_start sub_80BFE24 -sub_80BFE24: @ 80BFE24 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - str r0, [sp, 0x10] - str r1, [sp, 0x14] - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - add r0, sp, 0x10 - str r0, [sp] - add r0, sp, 0x14 - str r0, [sp, 0x4] - add r0, sp, 0x18 - str r0, [sp, 0x8] - add r0, sp, 0x1C - str r0, [sp, 0xC] - bl GetLinkPlayerCount - ldr r1, _080BFEA0 @ =gUnknown_03000720 - strb r0, [r1] -_080BFE50: - movs r6, 0 - ldr r0, _080BFEA0 @ =gUnknown_03000720 - ldrb r1, [r0] - cmp r6, r1 - bcs _080BFE50 - mov r10, r0 -_080BFE5C: - cmp r6, 0 - bne _080BFE64 - ldr r2, _080BFEA4 @ =gUnknown_020387E4 - strb r6, [r2] -_080BFE64: - lsls r4, r6, 2 - mov r3, sp - adds r0, r3, r4 - ldr r0, [r0] - ldr r0, [r0] - bl sub_80C019C - ldr r1, _080BFEA8 @ =gUnknown_03000722 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - adds r7, r4, 0 - cmp r0, r1 - bne _080BFEAC - ldr r1, _080BFEA4 @ =gUnknown_020387E4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - mov r2, r10 - ldrb r2, [r2] - cmp r0, r2 - beq _080BFF58 - adds r6, 0x1 - mov r9, r6 - b _080BFF3C - .align 2, 0 -_080BFEA0: .4byte gUnknown_03000720 -_080BFEA4: .4byte gUnknown_020387E4 -_080BFEA8: .4byte gUnknown_03000722 -_080BFEAC: - movs r5, 0 - mov r3, r10 - ldrb r0, [r3] - subs r0, 0x1 - adds r2, r6, 0x1 - mov r9, r2 - cmp r5, r0 - bge _080BFF22 - ldr r3, _080BFF4C @ =gUnknown_03000720 - mov r8, r3 -_080BFEC0: - adds r0, r6, r5 - adds r4, r0, 0x1 - mov r0, r8 - ldrb r1, [r0] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - ldr r0, [r0] - bl sub_80BF74C - ldr r1, _080BFF50 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BFF12 - mov r2, r8 - ldrb r1, [r2] - adds r0, r4, 0 - bl __modsi3 - adds r2, r0, 0 - lsls r0, r2, 2 - add r0, sp - ldr r0, [r0] - mov r3, sp - adds r1, r3, r7 - ldr r1, [r1] - lsls r2, 24 - lsrs r2, 24 - bl sub_80BFF68 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BFF22 -_080BFF12: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _080BFEC0 -_080BFF22: - mov r2, r10 - ldrb r0, [r2] - subs r0, 0x1 - cmp r5, r0 - bne _080BFF3C - mov r3, sp - adds r0, r3, r7 - ldr r0, [r0] - ldr r0, [r0] - ldr r1, _080BFF54 @ =gUnknown_03000722 - ldrb r1, [r1] - bl sub_80BF55C -_080BFF3C: - mov r1, r9 - lsls r0, r1, 24 - lsrs r6, r0, 24 - mov r2, r10 - ldrb r2, [r2] - cmp r6, r2 - bcc _080BFE5C - b _080BFE50 - .align 2, 0 -_080BFF4C: .4byte gUnknown_03000720 -_080BFF50: .4byte gUnknown_03005D38 -_080BFF54: .4byte gUnknown_03000722 -_080BFF58: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BFE24 - thumb_func_start sub_80BFF68 sub_80BFF68: @ 80BFF68 push {r4-r7,lr} diff --git a/src/tv.c b/src/tv.c index 665949feb..ad466c7d0 100644 --- a/src/tv.c +++ b/src/tv.c @@ -12,6 +12,7 @@ #include "rom4.h" #include "map_constants.h" #include "strings.h" +#include "link.h" enum { @@ -346,7 +347,7 @@ void sub_80BE97C(bool8 flag) } } -s8 sub_80BF74C(TVShow tvShows[]); +s8 sub_80BF74C(TVShow tvShow[]); u8 sub_80BF1B4(s8); void sub_80BE9D4() @@ -912,6 +913,7 @@ void sub_80BFD20(void) extern u8 ewram[]; #define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(ewram + 0x7000)) +extern u8 gUnknown_020387E4; struct ewramStruct_0207000 { struct SaveTVStruct tvshows[4]; @@ -952,6 +954,204 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) sub_80C0408(); } +extern u8 gUnknown_03000720; +extern s8 gUnknown_03000722; +s8 sub_80C019C(struct SaveTVStruct *tvStruct); +extern u8 sub_80BFF68(struct SaveTVStruct *tv1, struct SaveTVStruct *tv2, u8 idx); + +#ifdef NONMATCHING +void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) +{ + struct SaveTVStruct ** argslist[4] = {&arg0, &arg1, &arg2, &arg3}; + u8 i; + u8 j; + gUnknown_03000720 = GetLinkPlayerCount(); + for (i=0; i < gUnknown_03000720; i++) { + while (gUnknown_03000720 > 0); + if (i == 0) + gUnknown_020387E4 = 0; + gUnknown_03000722 = sub_80C019C(*(argslist[i])); + if (gUnknown_03000722 == -1) { + gUnknown_020387E4++; + if (gUnknown_020387E4 == gUnknown_03000720) + return; + } else { + for (j=0; jshows); + if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(*(argslist[(i + 1) % gUnknown_03000720]), *(argslist[(i + 1)]), (i + 1) % gUnknown_03000720) == 1) { + break; + } + } + } + } +} +#else +__attribute__((naked)) +void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x20\n\ + str r0, [sp, 0x10]\n\ + str r1, [sp, 0x14]\n\ + str r2, [sp, 0x18]\n\ + str r3, [sp, 0x1C]\n\ + add r0, sp, 0x10\n\ + str r0, [sp]\n\ + add r0, sp, 0x14\n\ + str r0, [sp, 0x4]\n\ + add r0, sp, 0x18\n\ + str r0, [sp, 0x8]\n\ + add r0, sp, 0x1C\n\ + str r0, [sp, 0xC]\n\ + bl GetLinkPlayerCount\n\ + ldr r1, _080BFEA0 @ =gUnknown_03000720\n\ + strb r0, [r1]\n\ +_080BFE50:\n\ + movs r6, 0\n\ + ldr r0, _080BFEA0 @ =gUnknown_03000720\n\ + ldrb r1, [r0]\n\ + cmp r6, r1\n\ + bcs _080BFE50\n\ + mov r10, r0\n\ +_080BFE5C:\n\ + cmp r6, 0\n\ + bne _080BFE64\n\ + ldr r2, _080BFEA4 @ =gUnknown_020387E4\n\ + strb r6, [r2]\n\ +_080BFE64:\n\ + lsls r4, r6, 2\n\ + mov r3, sp\n\ + adds r0, r3, r4\n\ + ldr r0, [r0]\n\ + ldr r0, [r0]\n\ + bl sub_80C019C\n\ + ldr r1, _080BFEA8 @ =gUnknown_03000722\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + adds r7, r4, 0\n\ + cmp r0, r1\n\ + bne _080BFEAC\n\ + ldr r1, _080BFEA4 @ =gUnknown_020387E4\n\ + ldrb r0, [r1]\n\ + adds r0, 0x1\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r2, r10\n\ + ldrb r2, [r2]\n\ + cmp r0, r2\n\ + beq _080BFF58\n\ + adds r6, 0x1\n\ + mov r9, r6\n\ + b _080BFF3C\n\ + .align 2, 0\n\ +_080BFEA0: .4byte gUnknown_03000720\n\ +_080BFEA4: .4byte gUnknown_020387E4\n\ +_080BFEA8: .4byte gUnknown_03000722\n\ +_080BFEAC:\n\ + movs r5, 0\n\ + mov r3, r10\n\ + ldrb r0, [r3]\n\ + subs r0, 0x1\n\ + adds r2, r6, 0x1\n\ + mov r9, r2\n\ + cmp r5, r0\n\ + bge _080BFF22\n\ + ldr r3, _080BFF4C @ =gUnknown_03000720\n\ + mov r8, r3\n\ +_080BFEC0:\n\ + adds r0, r6, r5\n\ + adds r4, r0, 0x1\n\ + mov r0, r8\n\ + ldrb r1, [r0]\n\ + adds r0, r4, 0\n\ + bl __modsi3\n\ + lsls r0, 2\n\ + add r0, sp\n\ + ldr r0, [r0]\n\ + ldr r0, [r0]\n\ + bl sub_80BF74C\n\ + ldr r1, _080BFF50 @ =gUnknown_03005D38\n\ + strb r0, [r1]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + beq _080BFF12\n\ + mov r2, r8\n\ + ldrb r1, [r2]\n\ + adds r0, r4, 0\n\ + bl __modsi3\n\ + adds r2, r0, 0\n\ + lsls r0, r2, 2\n\ + add r0, sp\n\ + ldr r0, [r0]\n\ + mov r3, sp\n\ + adds r1, r3, r7\n\ + ldr r1, [r1]\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + bl sub_80BFF68\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BFF22\n\ +_080BFF12:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + mov r1, r8\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + cmp r5, r0\n\ + blt _080BFEC0\n\ +_080BFF22:\n\ + mov r2, r10\n\ + ldrb r0, [r2]\n\ + subs r0, 0x1\n\ + cmp r5, r0\n\ + bne _080BFF3C\n\ + mov r3, sp\n\ + adds r0, r3, r7\n\ + ldr r0, [r0]\n\ + ldr r0, [r0]\n\ + ldr r1, _080BFF54 @ =gUnknown_03000722\n\ + ldrb r1, [r1]\n\ + bl sub_80BF55C\n\ +_080BFF3C:\n\ + mov r1, r9\n\ + lsls r0, r1, 24\n\ + lsrs r6, r0, 24\n\ + mov r2, r10\n\ + ldrb r2, [r2]\n\ + cmp r6, r2\n\ + bcc _080BFE5C\n\ + b _080BFE50\n\ + .align 2, 0\n\ +_080BFF4C: .4byte gUnknown_03000720\n\ +_080BFF50: .4byte gUnknown_03005D38\n\ +_080BFF54: .4byte gUnknown_03000722\n\ +_080BFF58:\n\ + add sp, 0x20\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\ +.syntax divided\n"); +} +#endif asm(".section .text_c"); -- cgit v1.2.3 From 040da53bfb3ba60183f9fbbd33c6e2382d0933c1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 15:27:56 -0400 Subject: sub_80EB6FC in easy_chat.c --- asm/easy_chat.s | 28 ---------------------------- asm/tv.s | 29 ----------------------------- include/easy_chat.h | 1 + include/global.h | 1 + src/easy_chat.c | 6 ++++++ src/tv.c | 13 +++++++++++++ 6 files changed, 21 insertions(+), 57 deletions(-) diff --git a/asm/easy_chat.s b/asm/easy_chat.s index b9f27b895..466d371a1 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -11165,32 +11165,4 @@ _080EB6F4: .4byte gSaveBlock1 + 0x273A _080EB6F8: .4byte 0x0000ffff thumb_func_end unref_sub_80EB684 - thumb_func_start sub_80EB6FC -sub_80EB6FC: @ 80EB6FC - push {lr} - adds r2, r0, 0 - lsls r1, 16 - ldr r0, _080EB724 @ =0xffff0000 - adds r1, r0 - lsrs r0, r1, 16 - ldr r1, _080EB728 @ =0x0000ffff - cmp r0, r1 - beq _080EB71E - adds r3, r1, 0 -_080EB710: - strh r3, [r2] - adds r2, 0x2 - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bne _080EB710 -_080EB71E: - pop {r0} - bx r0 - .align 2, 0 -_080EB724: .4byte 0xffff0000 -_080EB728: .4byte 0x0000ffff - thumb_func_end sub_80EB6FC - .align 2, 0 @ Don't pad with nop. diff --git a/asm/tv.s b/asm/tv.s index f4c6c2564..15c9ea3f8 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2878,35 +2878,6 @@ _080BF4B4: .4byte gUnknown_03005D38 _080BF4B8: .4byte gSaveBlock1 + 0x2738 thumb_func_end sub_80BF484 - thumb_func_start sub_80BF4BC -sub_80BF4BC: @ 80BF4BC - push {lr} - movs r0, 0x7 - bl sub_80BF25C - ldr r0, _080BF4E8 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF4E4 - ldr r0, _080BF4EC @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF4F0 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x18 - movs r1, 0x1 - bl sub_80EB6FC -_080BF4E4: - pop {r0} - bx r0 - .align 2, 0 -_080BF4E8: .4byte gScriptResult -_080BF4EC: .4byte gUnknown_03005D38 -_080BF4F0: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF4BC - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/easy_chat.h b/include/easy_chat.h index ee5ac4138..dca6b80c2 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -28,5 +28,6 @@ enum { u16 sub_80EB72C(u16 group); +void sub_80EB6FC(u16 *, u16); #endif // GUARD_EASYCHAT_H diff --git a/include/global.h b/include/global.h index 4b70d3283..73a826dd2 100644 --- a/include/global.h +++ b/include/global.h @@ -227,6 +227,7 @@ struct TVShowFanclubOpinions { /*0x0E*/ u8 var0E; /*0x0F*/ u8 var0F; /*0x10*/ u8 var10[8]; + /*0x18*/ u16 var18[6]; }; struct TVShowNameRaterShow { diff --git a/src/easy_chat.c b/src/easy_chat.c index 380fe6e4d..ee1e37b9b 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -23,6 +23,11 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; +void sub_80EB6FC(u16 *arg0, u16 arg1) { + for (arg1--; arg1!=0xffff; arg1--) + *(arg0++) = 0xffff; +} + u16 sub_80EB72C(u16 group) { u16 local1; @@ -260,3 +265,4 @@ static u16 sub_80EB9D8(void) { return -1; } + diff --git a/src/tv.c b/src/tv.c index ad466c7d0..12bd70ac9 100644 --- a/src/tv.c +++ b/src/tv.c @@ -13,6 +13,7 @@ #include "map_constants.h" #include "strings.h" #include "link.h" +#include "easy_chat.h" enum { @@ -453,6 +454,18 @@ void sub_80BEA88(void) asm(".section .text_b"); +void sub_80BF25C(u8); + +void sub_80BF4BC(void) +{ + TVShow *show; + sub_80BF25C(7); + if (gScriptResult == 0) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->fanclubOpinions.var18, 1); + } +} + u8 sub_80BF4F4(u8 arg0) { u32 species; -- cgit v1.2.3 From 7eae0a2880f83475f2caa09a7817d07f6f02bbaa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 16:50:56 -0400 Subject: Another chunk of fns; move tv show enums to new include/tv.h for easier reference --- asm/tv.s | 139 ------------------------------------------------------- include/global.h | 3 +- include/tv.h | 17 +++++++ src/tv.c | 57 ++++++++++++++++++----- 4 files changed, 65 insertions(+), 151 deletions(-) create mode 100644 include/tv.h diff --git a/asm/tv.s b/asm/tv.s index 15c9ea3f8..6cc8332af 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2739,145 +2739,6 @@ _080BF39C: .4byte gUnknown_03005D38 _080BF3A0: .4byte gSaveBlock1 + 0x2738 thumb_func_end sub_80BF334 - thumb_func_start sub_80BF3A4 -sub_80BF3A4: @ 80BF3A4 - push {lr} - movs r0, 0x2 - bl sub_80BF25C - ldr r0, _080BF3D0 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF3CC - ldr r0, _080BF3D4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF3D8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x4 - movs r1, 0x6 - bl sub_80EB6FC -_080BF3CC: - pop {r0} - bx r0 - .align 2, 0 -_080BF3D0: .4byte gScriptResult -_080BF3D4: .4byte gUnknown_03005D38 -_080BF3D8: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF3A4 - - thumb_func_start sub_80BF3DC -sub_80BF3DC: @ 80BF3DC - push {r4-r6,lr} - movs r0, 0x3 - bl sub_80BF25C - ldr r0, _080BF450 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF448 - ldr r6, _080BF454 @ =gStringVar1 - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - movs r5, 0x64 - muls r0, r5 - ldr r4, _080BF458 @ =gPlayerParty - adds r0, r4 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, _080BF45C @ =gSpeciesNames - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - muls r0, r5 - adds r0, r4 - ldr r4, _080BF460 @ =gStringVar2 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - ldr r0, _080BF464 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF468 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x1C - movs r1, 0x2 - bl sub_80EB6FC -_080BF448: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BF450: .4byte gScriptResult -_080BF454: .4byte gStringVar1 -_080BF458: .4byte gPlayerParty -_080BF45C: .4byte gSpeciesNames -_080BF460: .4byte gStringVar2 -_080BF464: .4byte gUnknown_03005D38 -_080BF468: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF3DC - - thumb_func_start sub_80BF46C -sub_80BF46C: @ 80BF46C - ldr r1, _080BF474 @ =gScriptResult - movs r0, 0x1 - strh r0, [r1] - bx lr - .align 2, 0 -_080BF474: .4byte gScriptResult - thumb_func_end sub_80BF46C - - thumb_func_start sub_80BF478 -sub_80BF478: @ 80BF478 - push {lr} - movs r0, 0x5 - bl sub_80BF25C - pop {r0} - bx r0 - thumb_func_end sub_80BF478 - - thumb_func_start sub_80BF484 -sub_80BF484: @ 80BF484 - push {lr} - movs r0, 0x6 - bl sub_80BF25C - ldr r0, _080BF4B0 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF4AC - ldr r0, _080BF4B4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF4B8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x4 - movs r1, 0x2 - bl sub_80EB6FC -_080BF4AC: - pop {r0} - bx r0 - .align 2, 0 -_080BF4B0: .4byte gScriptResult -_080BF4B4: .4byte gUnknown_03005D38 -_080BF4B8: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF484 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/global.h b/include/global.h index 73a826dd2..5ea13f7cc 100644 --- a/include/global.h +++ b/include/global.h @@ -227,7 +227,8 @@ struct TVShowFanclubOpinions { /*0x0E*/ u8 var0E; /*0x0F*/ u8 var0F; /*0x10*/ u8 var10[8]; - /*0x18*/ u16 var18[6]; + /*0x18*/ u16 var18[2]; + /*0x1C*/ u16 var1C[4]; }; struct TVShowNameRaterShow { diff --git a/include/tv.h b/include/tv.h new file mode 100644 index 000000000..e7186b05b --- /dev/null +++ b/include/tv.h @@ -0,0 +1,17 @@ +// +// Created by Scott Norton on 5/18/17. +// + +#ifndef POKERUBY_TV_H +#define POKERUBY_TV_H +enum +{ + TVSHOW_FAN_CLUB_LETTER = 1, + TVSHOW_RECENT_HAPPENINGS = 2, + TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3, + TVSHOW_NAME_RATER_SHOW = 5, + TVSHOW_UNK_SHOWTYPE_06 = 6, + TVSHOW_UNK_SHOWTYPE_07 = 7, + TVSHOW_MASS_OUTBREAK = 41, +}; +#endif //POKERUBY_TV_H diff --git a/src/tv.c b/src/tv.c index 12bd70ac9..9e40d4132 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "tv.h" #include "event_data.h" #include "field_message_box.h" #include "flags.h" @@ -15,15 +16,6 @@ #include "link.h" #include "easy_chat.h" -enum -{ - TVSHOW_FAN_CLUB_LETTER = 1, - TVSHOW_RECENT_HAPPENINGS = 2, - TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3, - TVSHOW_NAME_RATER_SHOW = 5, - TVSHOW_MASS_OUTBREAK = 41, -}; - struct UnkTvStruct { s8 var0; @@ -456,13 +448,56 @@ asm(".section .text_b"); void sub_80BF25C(u8); +void sub_80BF3A4(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); + if (gScriptResult == 0) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->recentHappenings.var04, 6); + } +} + +void sub_80BF3DC(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); + if (gScriptResult == 0) { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); + GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); + StringGetEnd10(gStringVar2); + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->fanclubOpinions.var1C, 2); + } +} + +void sub_80BF46C(void) +{ + gScriptResult = 1; +} + +void sub_80BF478(void) +{ + sub_80BF25C(TVSHOW_NAME_RATER_SHOW); +} + +void sub_80BF484(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_UNK_SHOWTYPE_06); + if (gScriptResult == 0) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->recentHappenings.var04, 2); // wrong struct ident, fix later + } +} + void sub_80BF4BC(void) { TVShow *show; - sub_80BF25C(7); + sub_80BF25C(TVSHOW_UNK_SHOWTYPE_07); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->fanclubOpinions.var18, 1); + sub_80EB6FC(show->fanclubOpinions.var18, 1); // wrong struct ident, fix later } } -- cgit v1.2.3 From 25e6b775b934474983d55052619a8483032b2abd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 17:26:58 -0400 Subject: Another set of functions responsible for initializing TV shows? --- asm/tv.s | 156 ------------------------------------------------------- include/global.h | 2 +- include/tv.h | 1 + src/tv.c | 83 ++++++++++++++++++++++++++--- 4 files changed, 79 insertions(+), 163 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 6cc8332af..3baee170b 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2583,162 +2583,6 @@ _080BF248: _080BF258: .4byte gUnknown_02038724 thumb_func_end sub_80BF20C - thumb_func_start sub_80BF25C -sub_80BF25C: @ 80BF25C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0 - ldr r3, _080BF28C @ =gSaveBlock1 - ldr r0, _080BF290 @ =0x00002738 - adds r4, r3, r0 -_080BF26A: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - ldr r6, _080BF290 @ =0x00002738 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, r5 - bne _080BF2AE - ldr r3, _080BF294 @ =0x00002739 - adds r0, r2, r3 - ldrb r2, [r0] - cmp r2, 0x1 - bne _080BF29C - ldr r0, _080BF298 @ =gScriptResult - strh r2, [r0] - b _080BF2BC - .align 2, 0 -_080BF28C: .4byte gSaveBlock1 -_080BF290: .4byte 0x00002738 -_080BF294: .4byte 0x00002739 -_080BF298: .4byte gScriptResult -_080BF29C: - adds r0, r4, 0 - bl sub_80BF55C - adds r0, r4, 0 - bl sub_80BF588 - bl sub_80BF6D8 - b _080BF2BC -_080BF2AE: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080BF26A - bl sub_80BF6D8 -_080BF2BC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BF25C - - thumb_func_start sub_80BF2C4 -sub_80BF2C4: @ 80BF2C4 - push {lr} - ldr r1, _080BF2E0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080BF2E4 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0x6 - bhi _080BF330 - lsls r0, 2 - ldr r1, _080BF2E8 @ =_080BF2EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BF2E0: .4byte gScriptResult -_080BF2E4: .4byte gSpecialVar_0x8005 -_080BF2E8: .4byte _080BF2EC - .align 2, 0 -_080BF2EC: - .4byte _080BF308 - .4byte _080BF30E - .4byte _080BF314 - .4byte _080BF31A - .4byte _080BF320 - .4byte _080BF326 - .4byte _080BF32C -_080BF308: - bl sub_80BF334 - b _080BF330 -_080BF30E: - bl sub_80BF3A4 - b _080BF330 -_080BF314: - bl sub_80BF3DC - b _080BF330 -_080BF31A: - bl sub_80BF46C - b _080BF330 -_080BF320: - bl sub_80BF478 - b _080BF330 -_080BF326: - bl sub_80BF484 - b _080BF330 -_080BF32C: - bl sub_80BF4BC -_080BF330: - pop {r0} - bx r0 - thumb_func_end sub_80BF2C4 - - thumb_func_start sub_80BF334 -sub_80BF334: @ 80BF334 - push {r4,lr} - movs r0, 0x1 - bl sub_80BF25C - ldr r0, _080BF38C @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF384 - ldr r4, _080BF390 @ =gStringVar1 - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _080BF394 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, _080BF398 @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r0, _080BF39C @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF3A0 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x4 - movs r1, 0x6 - bl sub_80EB6FC -_080BF384: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BF38C: .4byte gScriptResult -_080BF390: .4byte gStringVar1 -_080BF394: .4byte gPlayerParty -_080BF398: .4byte gSpeciesNames -_080BF39C: .4byte gUnknown_03005D38 -_080BF3A0: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF334 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/global.h b/include/global.h index 5ea13f7cc..4a82972b5 100644 --- a/include/global.h +++ b/include/global.h @@ -201,7 +201,7 @@ struct TVShowFanClubLetter { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 species; - u8 pad04[12]; + /*0x04*/ u16 pad04[6]; /*0x10*/ u8 playerName[8]; /*0x18*/ u8 var18; }; diff --git a/include/tv.h b/include/tv.h index e7186b05b..f6dd7a007 100644 --- a/include/tv.h +++ b/include/tv.h @@ -9,6 +9,7 @@ enum TVSHOW_FAN_CLUB_LETTER = 1, TVSHOW_RECENT_HAPPENINGS = 2, TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3, + TVSHOW_UNKN_SHOWTYPE_04 = 4, TVSHOW_NAME_RATER_SHOW = 5, TVSHOW_UNK_SHOWTYPE_06 = 6, TVSHOW_UNK_SHOWTYPE_07 = 7, diff --git a/src/tv.c b/src/tv.c index 9e40d4132..9a7b70c6e 100644 --- a/src/tv.c +++ b/src/tv.c @@ -32,6 +32,7 @@ struct OutbreakPokemon extern u8 *gUnknown_083D1464[3]; extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; extern u8 gSpecialVar_0x8007; extern u16 gScriptResult; @@ -446,7 +447,77 @@ void sub_80BEA88(void) asm(".section .text_b"); -void sub_80BF25C(u8); +void sub_80BF6D8(void); +void sub_80BF588(TVShow tvShows[]); + +void sub_80BF25C(u8 showType) +{ + u8 i; + for (i=0; i<5; i++) + { + if (gSaveBlock1.tvShows.shows[i].common.var00 == showType) { + if(gSaveBlock1.tvShows.shows[i].common.var01 == 1) + { + gScriptResult = 1; + } + else + { + sub_80BF55C(gSaveBlock1.tvShows.shows, i); + sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF6D8(); + } + return; + } + } + sub_80BF6D8(); +} + +void sub_80BF334(void); +void sub_80BF3A4(void); +void sub_80BF3DC(void); +void sub_80BF46C(void); +void sub_80BF478(void); +void sub_80BF484(void); +void sub_80BF4BC(void); + +void sub_80BF2C4(void) +{ + gScriptResult = 0; + switch (gSpecialVar_0x8005) { + case TVSHOW_FAN_CLUB_LETTER: + sub_80BF334(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BF3A4(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BF3DC(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80BF46C(); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80BF478(); + break; + case TVSHOW_UNK_SHOWTYPE_06: + sub_80BF484(); + break; + case TVSHOW_UNK_SHOWTYPE_07: + sub_80BF4BC(); + break; + } +} + +void sub_80BF334(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); + if (gScriptResult == 0) { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->fanclubLetter.pad04, 6); + } +} void sub_80BF3A4(void) { @@ -623,7 +694,7 @@ bool8 sub_80BF77C(u16 value) return TRUE; } -void sub_80BF79C(struct TVShowRecentHappenings *arg0) // TVShowFanClubLetter? +void sub_80BF79C(struct TVShowRecentHappenings *arg0) { u8 i = Random() % 6; while (1) { @@ -636,13 +707,13 @@ void sub_80BF79C(struct TVShowRecentHappenings *arg0) // TVShowFanClubLetter? sub_80EB3FC(gStringVar3, arg0->var04[i]); } -u8 sub_80BF7E8(struct TVShowFanClubLetter *arg0) // TVShowRecentHappenings? +u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) { u16 flagsum = 0; u8 i = 0; - if (arg0->pad04[0] != 0xFF) { - while (i < 11 && arg0->pad04[i] != 0xFF) { - flagsum += arg0->pad04[i]; + if (arg0->pokemonName[0] != 0xFF) { + while (i < 11 && arg0->pokemonName[i] != 0xFF) { + flagsum += arg0->pokemonName[i]; i++; } } -- cgit v1.2.3 From 99c5f53c99f6461fc6a134e36da3c38a91cf4f8c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 17:43:21 -0400 Subject: Another function in tv.c --- asm/tv.s | 47 ----------------------------------------------- src/tv.c | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 47 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 3baee170b..f758ae4fc 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2536,53 +2536,6 @@ _080BF204: bx r1 thumb_func_end sub_80BF1B4 - thumb_func_start sub_80BF20C -sub_80BF20C: @ 80BF20C - push {r4-r7,lr} - movs r2, 0 -_080BF210: - adds r1, r2, 0x1 - lsls r0, r1, 24 - lsrs r5, r0, 24 - adds r7, r1, 0 - cmp r5, 0x2 - bhi _080BF248 - ldr r6, _080BF258 @ =gUnknown_02038724 - lsls r0, r2, 2 - adds r4, r0, r6 -_080BF222: - lsls r0, r5, 2 - adds r3, r0, r6 - ldrh r0, [r4, 0x2] - ldrh r1, [r3, 0x2] - cmp r0, r1 - bcs _080BF23E - ldrh r1, [r4] - adds r2, r0, 0 - ldrh r0, [r3] - strh r0, [r4] - ldrh r0, [r3, 0x2] - strh r0, [r4, 0x2] - strh r1, [r3] - strh r2, [r3, 0x2] -_080BF23E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080BF222 -_080BF248: - lsls r0, r7, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bls _080BF210 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BF258: .4byte gUnknown_02038724 - thumb_func_end sub_80BF20C - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/src/tv.c b/src/tv.c index 9a7b70c6e..1e955279e 100644 --- a/src/tv.c +++ b/src/tv.c @@ -31,6 +31,12 @@ struct OutbreakPokemon extern u8 *gUnknown_083D1464[3]; +struct TVSaleItem { + u16 item_id; + u16 item_price; +}; +extern struct TVSaleItem gUnknown_02038724[3]; + extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; @@ -450,6 +456,27 @@ asm(".section .text_b"); void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); +void sub_80BF20C(void) +{ + u8 i, j; + u16 tmpId, tmpPrice; + for (i=0; i<2; i++) + { + for (j=i+1; j<3; j++) + { + if (gUnknown_02038724[i].item_price < gUnknown_02038724[j].item_price) + { + tmpId = gUnknown_02038724[i].item_id; + tmpPrice = gUnknown_02038724[i].item_price; + gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id; + gUnknown_02038724[i].item_price = gUnknown_02038724[j].item_price; + gUnknown_02038724[j].item_id = tmpId; + gUnknown_02038724[j].item_price = tmpPrice; + } + } + } +} + void sub_80BF25C(u8 showType) { u8 i; -- cgit v1.2.3 From 67ec48a2be4464b306fbd8d07fd6809b60904016 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 20:29:16 -0400 Subject: sub_80BF1B4 --- asm/tv.s | 48 ------------------------------------------------ include/global.h | 4 +++- src/secret_base.c | 6 +++--- src/tv.c | 26 +++++++++++++++++++++++--- 4 files changed, 29 insertions(+), 55 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index f758ae4fc..9af66c2da 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2488,54 +2488,6 @@ _080BF1A8: bx r0 thumb_func_end sub_80BF154 - thumb_func_start sub_80BF1B4 -sub_80BF1B4: @ 80BF1B4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _080BF1F4 @ =gSaveBlock1 + 0x2738 - bl GetPlayerTrainerId - adds r5, r0, 0 - movs r4, 0x5 -_080BF1C4: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r1, r0, r7 - ldrb r0, [r1] - cmp r0, r6 - bne _080BF1F8 - movs r3, 0xFF - adds r0, r5, 0 - ands r0, r3 - adds r2, r1, 0 - adds r2, 0x22 - ldrb r2, [r2] - cmp r0, r2 - bne _080BF1F8 - lsrs r0, r5, 8 - ands r0, r3 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080BF1F8 - movs r0, 0x1 - b _080BF204 - .align 2, 0 -_080BF1F4: .4byte gSaveBlock1 + 0x2738 -_080BF1F8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x17 - bls _080BF1C4 - movs r0, 0 -_080BF204: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80BF1B4 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/global.h b/include/global.h index 4a82972b5..f8e53f72c 100644 --- a/include/global.h +++ b/include/global.h @@ -194,7 +194,9 @@ struct EasyChatPair struct TVShowCommon { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 pad02[34]; + /*0x02*/ u8 pad02[32]; + /*0x22*/ u8 trainerIdLo; + /*0x23*/ u8 trainerIdHi; }; struct TVShowFanClubLetter { diff --git a/src/secret_base.c b/src/secret_base.c index 04f14018c..2769806f6 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -30,9 +30,9 @@ extern const struct } gUnknown_083D1358[7]; extern const u8 gUnknown_083D1374[4 * 16]; extern void *gUnknown_0300485C; -extern u8 sub_807D770(void); -extern u8 gUnknown_083D13EC[12]; -extern u8 sub_80BCCA4(u8); +extern const u8 sub_807D770(void); +extern const u8 gUnknown_083D13EC[12]; +extern const u8 sub_80BCCA4(u8); extern u8 gUnknown_081A2E14[]; diff --git a/src/tv.c b/src/tv.c index 1e955279e..ab030116c 100644 --- a/src/tv.c +++ b/src/tv.c @@ -55,6 +55,8 @@ extern void sub_80BEBF4(void); extern u16 gUnknown_020387E0; extern u16 gUnknown_020387E2; +u32 GetPlayerTrainerId(void); + void ClearTVShowData(void) { u8 showidx; @@ -348,7 +350,7 @@ void sub_80BE97C(bool8 flag) } s8 sub_80BF74C(TVShow tvShow[]); -u8 sub_80BF1B4(s8); +bool8 sub_80BF1B4(u8); void sub_80BE9D4() { @@ -456,6 +458,26 @@ asm(".section .text_b"); void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); +bool8 sub_80BF1B4(u8 showIdx) +{ + TVShow *tvShows; + u8 i; + u32 trainerId; + tvShows = gSaveBlock1.tvShows.shows; + trainerId = GetPlayerTrainerId(); + for (i=5; i<24; i++) + { + if (tvShows[i].common.var00 == showIdx) + { + if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi) + { + return TRUE; + } + } + } + return FALSE; +} + void sub_80BF20C(void) { u8 i, j; @@ -844,8 +866,6 @@ void sub_80BFAE0(void) StringGetEnd10(gStringVar1); } -u32 GetPlayerTrainerId(void); - void sub_80BFB10(void) { if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) -- cgit v1.2.3 From b848027e01ca1b6af3a50fab2a04cdd0056fbecd Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 20:49:00 -0400 Subject: sub_80BF154 --- asm/tv.s | 52 ---------------------------------------------------- include/global.h | 10 ++++++++++ src/tv.c | 37 +++++++++++++++++++++++++++++++------ 3 files changed, 41 insertions(+), 58 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 9af66c2da..609ca523b 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2436,58 +2436,6 @@ _080BF14E: bx r1 thumb_func_end sub_80BF0B8 - thumb_func_start sub_80BF154 -sub_80BF154: @ 80BF154 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - movs r5, 0 -_080BF166: - lsls r4, r5, 1 - adds r0, r6, 0x6 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, 0 - beq _080BF186 - bl ItemId_GetPrice - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - adds r1, 0xC - adds r1, r4 - ldrh r1, [r1] - muls r0, r1 - adds r7, r0 -_080BF186: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080BF166 - ldrb r0, [r6, 0x2] - cmp r0, 0x1 - bne _080BF1A0 - asrs r1, r7, 1 - mov r0, r8 - bl sub_80BF088 - b _080BF1A8 -_080BF1A0: - mov r0, r8 - adds r1, r7, 0 - bl sub_80BF088 -_080BF1A8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BF154 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/global.h b/include/global.h index f8e53f72c..a6ab3eb63 100644 --- a/include/global.h +++ b/include/global.h @@ -289,6 +289,15 @@ struct TVShowUnknownTVShowType2 { /*0x13*/ u8 playerName[8]; }; +struct TVShowSmartShopper { + u8 var00; + u8 var01; + u8 boughtOrSoldFlag; + u8 pad03[3]; + u16 itemIds[3]; + u16 itemAmounts[3]; +}; + typedef union TVShow { struct TVShowCommon common; struct TVShowFanClubLetter fanclubLetter; @@ -298,6 +307,7 @@ typedef union TVShow { struct TVShowMassOutbreak massOutbreak; struct TVShowUnknownTVShowType unknownTvShowType; struct TVShowUnknownTVShowType2 unknownTvShowType2; + struct TVShowSmartShopper smartshopperShow; } TVShow; struct MailStruct diff --git a/src/tv.c b/src/tv.c index ab030116c..8fb19499d 100644 --- a/src/tv.c +++ b/src/tv.c @@ -15,6 +15,7 @@ #include "strings.h" #include "link.h" #include "easy_chat.h" +#include "item.h" struct UnkTvStruct { @@ -33,7 +34,7 @@ extern u8 *gUnknown_083D1464[3]; struct TVSaleItem { u16 item_id; - u16 item_price; + u16 item_amount; }; extern struct TVSaleItem gUnknown_02038724[3]; @@ -455,9 +456,33 @@ void sub_80BEA88(void) asm(".section .text_b"); +void sub_80BF088(u8 arg0, s32 price); + void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); +void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) +{ + u8 i; + s32 price; + price = 0; + for (i=0; i<3; i++) + { + if (arg1->itemIds[i]) + { + price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i]; + } + } + if (arg1->boughtOrSoldFlag == 1) + { + sub_80BF088(arg0, price >> 1); + } + else + { + sub_80BF088(arg0, price); + } +} + bool8 sub_80BF1B4(u8 showIdx) { TVShow *tvShows; @@ -481,19 +506,19 @@ bool8 sub_80BF1B4(u8 showIdx) void sub_80BF20C(void) { u8 i, j; - u16 tmpId, tmpPrice; + u16 tmpId, tmpAmount; for (i=0; i<2; i++) { for (j=i+1; j<3; j++) { - if (gUnknown_02038724[i].item_price < gUnknown_02038724[j].item_price) + if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount) { tmpId = gUnknown_02038724[i].item_id; - tmpPrice = gUnknown_02038724[i].item_price; + tmpAmount = gUnknown_02038724[i].item_amount; gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id; - gUnknown_02038724[i].item_price = gUnknown_02038724[j].item_price; + gUnknown_02038724[i].item_amount = gUnknown_02038724[j].item_amount; gUnknown_02038724[j].item_id = tmpId; - gUnknown_02038724[j].item_price = tmpPrice; + gUnknown_02038724[j].item_amount = tmpAmount; } } } -- cgit v1.2.3 From 7cc51195fc910852977a3213b39a45ed60aef8e8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 21:01:25 -0400 Subject: sub_80BF0B8 --- asm/tv.s | 83 ------------------------------------------------------- include/asm.inc.h | 2 +- src/tv.c | 22 +++++++++++++++ 3 files changed, 23 insertions(+), 84 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 609ca523b..c61fefe82 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2353,89 +2353,6 @@ sub_80BF088: @ 80BF088 _080BF0B4: .4byte gUnknown_083D1464 thumb_func_end sub_80BF088 - thumb_func_start sub_80BF0B8 -sub_80BF0B8: @ 80BF0B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xA - bl __divsi3 - cmp r0, 0 - beq _080BF144 - adds r0, r4, 0 - movs r1, 0x64 - bl __divsi3 - cmp r0, 0 - bne _080BF0D6 - movs r0, 0x2 - b _080BF14E -_080BF0D6: - movs r1, 0xFA - lsls r1, 2 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF0E8 - movs r0, 0x3 - b _080BF14E -_080BF0E8: - ldr r1, _080BF0F8 @ =0x00002710 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF0FC - movs r0, 0x4 - b _080BF14E - .align 2, 0 -_080BF0F8: .4byte 0x00002710 -_080BF0FC: - ldr r1, _080BF10C @ =0x000186a0 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF110 - movs r0, 0x5 - b _080BF14E - .align 2, 0 -_080BF10C: .4byte 0x000186a0 -_080BF110: - ldr r1, _080BF120 @ =0x000f4240 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF124 - movs r0, 0x6 - b _080BF14E - .align 2, 0 -_080BF120: .4byte 0x000f4240 -_080BF124: - ldr r1, _080BF134 @ =0x00989680 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF138 - movs r0, 0x7 - b _080BF14E - .align 2, 0 -_080BF134: .4byte 0x00989680 -_080BF138: - ldr r1, _080BF148 @ =0x05f5e100 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - beq _080BF14C -_080BF144: - movs r0, 0x1 - b _080BF14E - .align 2, 0 -_080BF148: .4byte 0x05f5e100 -_080BF14C: - movs r0, 0x8 -_080BF14E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF0B8 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/asm.inc.h b/include/asm.inc.h index 3931f7f1c..b5191b068 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -288,7 +288,7 @@ void sub_80BEA50(u16); void sub_80BEA5C(u16); bool8 GetPriceReduction(u8); void sub_80BEE84(u16); -u8 sub_80BF0B8(u32); +u8 sub_80BF0B8(int); void sub_80BF478(void); u16 sub_80BF674(u16 species); s8 sub_80BF720(TVShow *); diff --git a/src/tv.c b/src/tv.c index 8fb19499d..ed52e1b22 100644 --- a/src/tv.c +++ b/src/tv.c @@ -461,6 +461,28 @@ void sub_80BF088(u8 arg0, s32 price); void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); +u8 sub_80BF0B8(int value) +{ + if (value / 10 == 0) + return 1; + else if (value / 100 == 0) + return 2; + else if (value / 1000 == 0) + return 3; + else if (value / 10000 == 0) + return 4; + else if (value / 100000 == 0) + return 5; + else if (value / 1000000 == 0) + return 6; + else if (value / 10000000 == 0) + return 7; + else if (value / 100000000 == 0) + return 8; + else + return 1; +} + void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) { u8 i; -- cgit v1.2.3 From d4988da0cab8e88d390042d568641177ebb8ce41 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 21:05:57 -0400 Subject: sub_80BF088 --- asm/tv.s | 26 -------------------------- include/asm.inc.h | 2 +- src/tv.c | 11 ++++++++--- 3 files changed, 9 insertions(+), 30 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index c61fefe82..672f00003 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2327,32 +2327,6 @@ _080BF080: .4byte gSpecialVar_0x8004 _080BF084: .4byte gSaveBlock1 + 0x2738 thumb_func_end SetContestCategoryStringVarForInterview - thumb_func_start sub_80BF088 -sub_80BF088: @ 80BF088 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_80BF0B8 - adds r3, r0, 0 - ldr r0, _080BF0B4 @ =gUnknown_083D1464 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - lsls r3, 24 - lsrs r3, 24 - adds r1, r5, 0 - movs r2, 0 - bl ConvertIntToDecimalStringN - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BF0B4: .4byte gUnknown_083D1464 - thumb_func_end sub_80BF088 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/asm.inc.h b/include/asm.inc.h index b5191b068..c28050929 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -288,7 +288,7 @@ void sub_80BEA50(u16); void sub_80BEA5C(u16); bool8 GetPriceReduction(u8); void sub_80BEE84(u16); -u8 sub_80BF0B8(int); +size_t sub_80BF0B8(int); void sub_80BF478(void); u16 sub_80BF674(u16 species); s8 sub_80BF720(TVShow *); diff --git a/src/tv.c b/src/tv.c index ed52e1b22..c66bafada 100644 --- a/src/tv.c +++ b/src/tv.c @@ -456,12 +456,17 @@ void sub_80BEA88(void) asm(".section .text_b"); -void sub_80BF088(u8 arg0, s32 price); - void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); -u8 sub_80BF0B8(int value) +void sub_80BF088(u8 arg0, s32 price) +{ + size_t log10val; + log10val = sub_80BF0B8(price); + ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val); +} + +size_t sub_80BF0B8(int value) { if (value / 10 == 0) return 1; -- cgit v1.2.3 From f3e4f2f2104a86dc36415120b90c54793e324c39 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 21:13:43 -0400 Subject: SetContestCategoryStringVarForInterview --- asm/tv.s | 22 ---------------------- include/global.h | 9 +++++++++ src/tv.c | 9 +++++++++ 3 files changed, 18 insertions(+), 22 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 672f00003..cece28a79 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2305,28 +2305,6 @@ _080BF058: .4byte gUnknown_083D1464 _080BF05C: .4byte gUnknown_083CE048 thumb_func_end CopyContestCategoryToStringVar - thumb_func_start SetContestCategoryStringVarForInterview -SetContestCategoryStringVarForInterview: @ 80BF060 - push {lr} - ldr r0, _080BF080 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF084 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrb r1, [r0, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - pop {r0} - bx r0 - .align 2, 0 -_080BF080: .4byte gSpecialVar_0x8004 -_080BF084: .4byte gSaveBlock1 + 0x2738 - thumb_func_end SetContestCategoryStringVarForInterview - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/global.h b/include/global.h index a6ab3eb63..086b858d0 100644 --- a/include/global.h +++ b/include/global.h @@ -298,6 +298,14 @@ struct TVShowSmartShopper { u16 itemAmounts[3]; }; +struct TVShowContestWinner { + u8 var00; + u8 var01; + u8 pad02[17]; + u8 contestCategory:3; + u8 var13_3:5; +}; + typedef union TVShow { struct TVShowCommon common; struct TVShowFanClubLetter fanclubLetter; @@ -308,6 +316,7 @@ typedef union TVShow { struct TVShowUnknownTVShowType unknownTvShowType; struct TVShowUnknownTVShowType2 unknownTvShowType2; struct TVShowSmartShopper smartshopperShow; + struct TVShowContestWinner contestShow; } TVShow; struct MailStruct diff --git a/src/tv.c b/src/tv.c index c66bafada..391429cf6 100644 --- a/src/tv.c +++ b/src/tv.c @@ -459,6 +459,15 @@ asm(".section .text_b"); void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); +void CopyContestCategoryToStringVar(u8 strvaridx, u8 category); + +void SetContestCategoryStringVarForInterview(void) +{ + TVShow *tvShow; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + CopyContestCategoryToStringVar(1, tvShow->contestShow.contestCategory); +} + void sub_80BF088(u8 arg0, s32 price) { size_t log10val; -- cgit v1.2.3 From e905d09ee74ab3c158c8913986a7480acc2c8507 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 21:19:09 -0400 Subject: CopyContestCategoryToStringVar --- asm/tv.s | 87 ---------------------------------------------------------------- src/tv.c | 24 +++++++++++++++++- 2 files changed, 23 insertions(+), 88 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index cece28a79..1dae19326 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2218,93 +2218,6 @@ _080BEF9C: .4byte gUnknown_083D1464 _080BEFA0: .4byte gUnknown_083CE048 thumb_func_end sub_80BEF10 - thumb_func_start CopyContestCategoryToStringVar -CopyContestCategoryToStringVar: @ 80BEFA4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r0, 0x4 - bhi _080BF054 - lsls r0, 2 - ldr r1, _080BEFBC @ =_080BEFC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BEFBC: .4byte _080BEFC0 - .align 2, 0 -_080BEFC0: - .4byte _080BEFD4 - .4byte _080BEFF0 - .4byte _080BF00C - .4byte _080BF028 - .4byte _080BF044 -_080BEFD4: - ldr r1, _080BEFE8 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEFEC @ =gUnknown_083CE048 - ldr r1, [r1] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BEFE8: .4byte gUnknown_083D1464 -_080BEFEC: .4byte gUnknown_083CE048 -_080BEFF0: - ldr r1, _080BF004 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF008 @ =gUnknown_083CE048 - ldr r1, [r1, 0x4] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BF004: .4byte gUnknown_083D1464 -_080BF008: .4byte gUnknown_083CE048 -_080BF00C: - ldr r1, _080BF020 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF024 @ =gUnknown_083CE048 - ldr r1, [r1, 0x8] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BF020: .4byte gUnknown_083D1464 -_080BF024: .4byte gUnknown_083CE048 -_080BF028: - ldr r1, _080BF03C @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF040 @ =gUnknown_083CE048 - ldr r1, [r1, 0xC] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BF03C: .4byte gUnknown_083D1464 -_080BF040: .4byte gUnknown_083CE048 -_080BF044: - ldr r1, _080BF058 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF05C @ =gUnknown_083CE048 - ldr r1, [r1, 0x10] - bl StringCopy -_080BF054: - pop {r0} - bx r0 - .align 2, 0 -_080BF058: .4byte gUnknown_083D1464 -_080BF05C: .4byte gUnknown_083CE048 - thumb_func_end CopyContestCategoryToStringVar - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/src/tv.c b/src/tv.c index 391429cf6..558cedc9e 100644 --- a/src/tv.c +++ b/src/tv.c @@ -16,6 +16,7 @@ #include "link.h" #include "easy_chat.h" #include "item.h" +#include "contest_painting.h" struct UnkTvStruct { @@ -55,6 +56,7 @@ extern void sub_80BEBF4(void); extern u16 gUnknown_020387E0; extern u16 gUnknown_020387E2; +extern const u8 *gUnknown_083CE048[5]; u32 GetPlayerTrainerId(void); @@ -459,7 +461,27 @@ asm(".section .text_b"); void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); -void CopyContestCategoryToStringVar(u8 strvaridx, u8 category); +void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) +{ + switch (category) + { + case CONTEST_COOL: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); + break; + case CONTEST_BEAUTY: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); + break; + case CONTEST_CUTE: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); + break; + case CONTEST_SMART: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); + break; + case CONTEST_TOUGH: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); + break; + } +} void SetContestCategoryStringVarForInterview(void) { -- cgit v1.2.3 From 00861b751b8c468851bc2cb770e8aadf174013ba Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 21:30:06 -0400 Subject: sub_80BEF10 --- asm/tv.s | 73 ---------------------------------------------- include/contest_painting.h | 8 +++++ src/tv.c | 21 ++++++++++++- 3 files changed, 28 insertions(+), 74 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 1dae19326..f16959815 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2145,79 +2145,6 @@ _080BEF08: .4byte 0x00000804 _080BEF0C: .4byte 0x00002abe thumb_func_end sub_80BEE84 - thumb_func_start sub_80BEF10 -sub_80BEF10: @ 80BEF10 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x1 - beq _080BEF50 - cmp r1, 0x1 - bgt _080BEF2A - cmp r1, 0 - beq _080BEF34 - b _080BEF98 -_080BEF2A: - cmp r2, 0x2 - beq _080BEF6C - cmp r2, 0x3 - beq _080BEF88 - b _080BEF98 -_080BEF34: - ldr r1, _080BEF48 @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEF4C @ =gUnknown_083CE048 - ldr r1, [r1, 0x14] - bl StringCopy - b _080BEF98 - .align 2, 0 -_080BEF48: .4byte gUnknown_083D1464 -_080BEF4C: .4byte gUnknown_083CE048 -_080BEF50: - ldr r1, _080BEF64 @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEF68 @ =gUnknown_083CE048 - ldr r1, [r1, 0x18] - bl StringCopy - b _080BEF98 - .align 2, 0 -_080BEF64: .4byte gUnknown_083D1464 -_080BEF68: .4byte gUnknown_083CE048 -_080BEF6C: - ldr r1, _080BEF80 @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEF84 @ =gUnknown_083CE048 - ldr r1, [r1, 0x1C] - bl StringCopy - b _080BEF98 - .align 2, 0 -_080BEF80: .4byte gUnknown_083D1464 -_080BEF84: .4byte gUnknown_083CE048 -_080BEF88: - ldr r1, _080BEF9C @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEFA0 @ =gUnknown_083CE048 - ldr r1, [r1, 0x20] - bl StringCopy -_080BEF98: - pop {r0} - bx r0 - .align 2, 0 -_080BEF9C: .4byte gUnknown_083D1464 -_080BEFA0: .4byte gUnknown_083CE048 - thumb_func_end sub_80BEF10 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/contest_painting.h b/include/contest_painting.h index 896aa299b..a67748d02 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -6,6 +6,14 @@ #define MOSAIC_BIT_OBJ_HSIZE (8) #define MOSAIC_BIT_OBJ_VSIZE (12) +enum +{ + NORMAL_RANK, + SUPER_RANK, + HYPER_RANK, + MASTER_RANK, +}; + enum { CONTEST_COOL, diff --git a/src/tv.c b/src/tv.c index 558cedc9e..7c22d737e 100644 --- a/src/tv.c +++ b/src/tv.c @@ -56,7 +56,7 @@ extern void sub_80BEBF4(void); extern u16 gUnknown_020387E0; extern u16 gUnknown_020387E2; -extern const u8 *gUnknown_083CE048[5]; +extern const u8 *gUnknown_083CE048[];; u32 GetPlayerTrainerId(void); @@ -461,6 +461,25 @@ asm(".section .text_b"); void sub_80BF6D8(void); void sub_80BF588(TVShow tvShows[]); +void sub_80BEF10(u8 strvaridx, u8 rank) +{ + switch (rank) + { + case NORMAL_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); + break; + case SUPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); + break; + case HYPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); + break; + case MASTER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); + break; + } +} + void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) { switch (category) -- cgit v1.2.3 From 8e1c137a5b468643c28a1940b96db82f63762b8b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 21:53:42 -0400 Subject: sub_80BEE84 --- asm/tv.s | 71 -------------------------------------------------------- include/flags.h | 2 ++ include/global.h | 4 +++- src/tv.c | 26 +++++++++++++++++++++ 4 files changed, 31 insertions(+), 72 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index f16959815..3769408c4 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2074,77 +2074,6 @@ _080BEE7C: .4byte gSaveBlock1 _080BEE80: .4byte 0x00002abc thumb_func_end sub_80BEE48 - thumb_func_start sub_80BEE84 -sub_80BEE84: @ 80BEE84 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - movs r5, 0 - ldr r0, _080BEEB8 @ =gSaveBlock1 - mov r8, r0 -_080BEE94: - lsls r0, r5, 2 - mov r1, r8 - adds r2, r0, r1 - ldr r3, _080BEEBC @ =0x00002abc - adds r1, r2, r3 - ldrb r1, [r1] - adds r6, r0, 0 - cmp r1, 0 - beq _080BEEEC - ldr r1, _080BEEC0 @ =0x00002abe - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r7 - bcs _080BEEC4 - adds r0, r5, 0 - bl sub_80BEC10 - b _080BEEEC - .align 2, 0 -_080BEEB8: .4byte gSaveBlock1 -_080BEEBC: .4byte 0x00002abc -_080BEEC0: .4byte 0x00002abe -_080BEEC4: - ldr r3, _080BEF04 @ =0x00002abd - adds r4, r2, r3 - ldrb r0, [r4] - cmp r0, 0 - bne _080BEEDE - ldr r0, _080BEF08 @ =0x00000804 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BEEDE - strb r0, [r4] -_080BEEDE: - mov r0, r8 - adds r1, r6, r0 - ldr r3, _080BEF0C @ =0x00002abe - adds r1, r3 - ldrh r0, [r1] - subs r0, r7 - strh r0, [r1] -_080BEEEC: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080BEE94 - bl sub_80BEC40 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BEF04: .4byte 0x00002abd -_080BEF08: .4byte 0x00000804 -_080BEF0C: .4byte 0x00002abe - thumb_func_end sub_80BEE84 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/include/flags.h b/include/flags.h index d2aa0c47f..0e408a833 100644 --- a/include/flags.h +++ b/include/flags.h @@ -63,3 +63,5 @@ #define SPECIAL_FLAG_1 0x4001 #endif // GUARD_FLAGS_H + +bool8 FlagGet(u16 flag); diff --git a/include/global.h b/include/global.h index 086b858d0..9a9e08fbb 100644 --- a/include/global.h +++ b/include/global.h @@ -393,7 +393,9 @@ struct SaveTVStruct { }; struct UnknownSaveStruct2ABC { - u8 pad00[4]; + u8 val0; + u8 val1; + u16 val2; }; struct SaveBlock1 /* 0x02025734 */ diff --git a/src/tv.c b/src/tv.c index 7c22d737e..53d70b6a5 100644 --- a/src/tv.c +++ b/src/tv.c @@ -459,8 +459,34 @@ void sub_80BEA88(void) asm(".section .text_b"); void sub_80BF6D8(void); +void sub_80BEC10(u8); +void sub_80BEC40(void); void sub_80BF588(TVShow tvShows[]); +void sub_80BEE84(u16 var0) +{ + u8 i; + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0) + { + if (gSaveBlock1.unknown_2ABC[i].val2 < var0) + { + sub_80BEC10(i); + } + else + { + if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1) + { + gSaveBlock1.unknown_2ABC[i].val1 = 1; + } + gSaveBlock1.unknown_2ABC[i].val2 -= var0; + } + } + } + sub_80BEC40(); +} + void sub_80BEF10(u8 strvaridx, u8 rank) { switch (rank) -- cgit v1.2.3 From beb5af337bfe2c1ac4f2503d561ac389c5bf1068 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 21:57:15 -0400 Subject: sub_80BEE48 --- asm/tv.s | 36 ------------------------------------ src/tv.c | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 36 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 3769408c4..14f886489 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2038,42 +2038,6 @@ _080BEE40: .4byte gSaveBlock1 _080BEE44: .4byte 0x0000160d thumb_func_end IsPriceDiscounted - thumb_func_start sub_80BEE48 -sub_80BEE48: @ 80BEE48 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080BEE56 -_080BEE52: - movs r0, 0x1 - b _080BEE74 -_080BEE56: - movs r1, 0 - ldr r4, _080BEE7C @ =gSaveBlock1 - ldr r3, _080BEE80 @ =0x00002abc -_080BEE5C: - lsls r0, r1, 2 - adds r0, r4 - adds r0, r3 - ldrb r0, [r0] - cmp r0, r2 - beq _080BEE52 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080BEE5C - movs r0, 0 -_080BEE74: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080BEE7C: .4byte gSaveBlock1 -_080BEE80: .4byte 0x00002abc - thumb_func_end sub_80BEE48 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/src/tv.c b/src/tv.c index 53d70b6a5..3b5b8cd54 100644 --- a/src/tv.c +++ b/src/tv.c @@ -463,6 +463,26 @@ void sub_80BEC10(u8); void sub_80BEC40(void); void sub_80BF588(TVShow tvShows[]); +bool8 sub_80BEE48(u8 arg0) +{ + u8 i; + if (arg0 == 0) + { + return TRUE; + } + else + { + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) + { + return TRUE; + } + } + } + return FALSE; +} + void sub_80BEE84(u16 var0) { u8 i; -- cgit v1.2.3 From bcfb366618c16aad592b737b6037aac504a45b66 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 18 May 2017 22:24:04 -0400 Subject: GetPriceReduction --- asm/tv.s | 94 ---------------------------------------------------------------- src/tv.c | 58 ++++++++++++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 95 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 14f886489..52bc6e82a 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1944,100 +1944,6 @@ _080BED9C: .4byte 0x00002abc _080BEDA0: .4byte gScriptResult thumb_func_end sub_80BECE8 - thumb_func_start GetPriceReduction -GetPriceReduction: @ 80BEDA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080BEDB4 - b _080BEDF6 -_080BEDB0: - movs r0, 0x1 - b _080BEDF8 -_080BEDB4: - movs r2, 0 - ldr r4, _080BEDE0 @ =gSaveBlock1 -_080BEDB8: - lsls r0, r2, 2 - adds r1, r0, r4 - ldr r5, _080BEDE4 @ =0x00002abc - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, r3 - bne _080BEDEC - ldr r2, _080BEDE8 @ =0x00002abd - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080BEDF6 - adds r0, r3, 0 - bl IsPriceDiscounted - lsls r0, 24 - cmp r0, 0 - bne _080BEDB0 - b _080BEDF6 - .align 2, 0 -_080BEDE0: .4byte gSaveBlock1 -_080BEDE4: .4byte 0x00002abc -_080BEDE8: .4byte 0x00002abd -_080BEDEC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080BEDB8 -_080BEDF6: - movs r0, 0 -_080BEDF8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetPriceReduction - - thumb_func_start IsPriceDiscounted -IsPriceDiscounted: @ 80BEE00 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEE12 - cmp r0, 0x3 - beq _080BEE30 -_080BEE0E: - movs r0, 0x1 - b _080BEE3C -_080BEE12: - ldr r0, _080BEE28 @ =gSaveBlock1 - ldrh r1, [r0, 0x4] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bne _080BEE3A - ldr r0, _080BEE2C @ =gScriptLastTalked - ldrh r0, [r0] - cmp r0, 0x1A - beq _080BEE0E - b _080BEE3A - .align 2, 0 -_080BEE28: .4byte gSaveBlock1 -_080BEE2C: .4byte gScriptLastTalked -_080BEE30: - ldr r0, _080BEE40 @ =gSaveBlock1 - ldrh r1, [r0, 0x4] - ldr r0, _080BEE44 @ =0x0000160d - cmp r1, r0 - beq _080BEE0E -_080BEE3A: - movs r0, 0 -_080BEE3C: - pop {r1} - bx r1 - .align 2, 0 -_080BEE40: .4byte gSaveBlock1 -_080BEE44: .4byte 0x0000160d - thumb_func_end IsPriceDiscounted - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/src/tv.c b/src/tv.c index 3b5b8cd54..d8ff22316 100644 --- a/src/tv.c +++ b/src/tv.c @@ -56,7 +56,8 @@ extern void sub_80BEBF4(void); extern u16 gUnknown_020387E0; extern u16 gUnknown_020387E2; -extern const u8 *gUnknown_083CE048[];; +extern const u8 *gUnknown_083CE048[]; +extern u16 gScriptLastTalked; u32 GetPlayerTrainerId(void); @@ -463,6 +464,61 @@ void sub_80BEC10(u8); void sub_80BEC40(void); void sub_80BF588(TVShow tvShows[]); +bool8 IsPriceDiscounted(u8); + +bool8 GetPriceReduction(u8 arg0) +{ + u8 i; + if (arg0 == 0) + { + return FALSE; + } + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) + { + if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0) + { + return TRUE; + } + else + { + return FALSE; + } + } + } + return FALSE; +} + +bool8 IsPriceDiscounted(u8 arg0) +{ + switch (arg0) + { + case 1: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) + { + return TRUE; + } + else + { + return FALSE; + } + break; + case 3: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + { + return TRUE; + } + else + { + return FALSE; + } + break; + default: + return TRUE; + } +} + bool8 sub_80BEE48(u8 arg0) { u8 i; -- cgit v1.2.3 From 1b57038beb17f6a234b5b1aa7f15144bbf119a65 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 08:48:17 -0400 Subject: sub_80BECE8 --- asm/tv.s | 89 ---------------------------------------------------------------- src/tv.c | 38 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 89 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 52bc6e82a..7a20dc17d 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1855,95 +1855,6 @@ _080BECE0: bx r1 thumb_func_end sub_80BECA0 - thumb_func_start sub_80BECE8 -sub_80BECE8: @ 80BECE8 - push {r4,lr} - bl sub_80BECA0 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - bne _080BED00 - ldr r1, _080BECFC @ =gScriptResult - movs r0, 0 - b _080BED86 - .align 2, 0 -_080BECFC: .4byte gScriptResult -_080BED00: - ldr r0, _080BED2C @ =gSaveBlock1 - lsls r1, 2 - adds r4, r1, r0 - ldr r0, _080BED30 @ =0x00002abe - adds r1, r4, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080BED5C - ldr r2, _080BED34 @ =0x00002abd - adds r1, r4, r2 - movs r0, 0x2 - strb r0, [r1] - ldr r0, _080BED38 @ =gLocalTime - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x13 - bgt _080BED40 - ldr r1, _080BED3C @ =gTVNewsTextGroup2 - subs r2, 0x1 - b _080BED44 - .align 2, 0 -_080BED2C: .4byte gSaveBlock1 -_080BED30: .4byte 0x00002abe -_080BED34: .4byte 0x00002abd -_080BED38: .4byte gLocalTime -_080BED3C: .4byte gTVNewsTextGroup2 -_080BED40: - ldr r1, _080BED54 @ =gTVNewsTextGroup3 - ldr r2, _080BED58 @ =0x00002abc -_080BED44: - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl ShowFieldMessage - b _080BED82 - .align 2, 0 -_080BED54: .4byte gTVNewsTextGroup3 -_080BED58: .4byte 0x00002abc -_080BED5C: - ldrh r1, [r1] - ldr r0, _080BED90 @ =gStringVar1 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r0, _080BED94 @ =0x00002abd - adds r1, r4, r0 - movs r0, 0 - strb r0, [r1] - ldr r1, _080BED98 @ =gTVNewsTextGroup1 - ldr r2, _080BED9C @ =0x00002abc - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl ShowFieldMessage -_080BED82: - ldr r1, _080BEDA0 @ =gScriptResult - movs r0, 0x1 -_080BED86: - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BED90: .4byte gStringVar1 -_080BED94: .4byte 0x00002abd -_080BED98: .4byte gTVNewsTextGroup1 -_080BED9C: .4byte 0x00002abc -_080BEDA0: .4byte gScriptResult - thumb_func_end sub_80BECE8 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/src/tv.c b/src/tv.c index d8ff22316..678590388 100644 --- a/src/tv.c +++ b/src/tv.c @@ -17,6 +17,7 @@ #include "easy_chat.h" #include "item.h" #include "contest_painting.h" +#include "rtc.h" struct UnkTvStruct { @@ -57,6 +58,11 @@ extern void sub_80BEBF4(void); extern u16 gUnknown_020387E0; extern u16 gUnknown_020387E2; extern const u8 *gUnknown_083CE048[]; + +extern const u8 *gTVNewsTextGroup1[]; +extern const u8 *gTVNewsTextGroup2[]; +extern const u8 *gTVNewsTextGroup3[]; + extern u16 gScriptLastTalked; u32 GetPlayerTrainerId(void); @@ -463,9 +469,41 @@ void sub_80BF6D8(void); void sub_80BEC10(u8); void sub_80BEC40(void); void sub_80BF588(TVShow tvShows[]); +u8 sub_80BECA0(void); bool8 IsPriceDiscounted(u8); +void sub_80BECE8(void) +{ + u8 arg0; + arg0 = sub_80BECA0(); + if (arg0 == 0xff) + { + gScriptResult = 0; + return; + } + if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0) + { + gSaveBlock1.unknown_2ABC[arg0].val1 = 2; + if (gLocalTime.hours < 20) + { + ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + else + { + ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + } + else + { + u16 value = gSaveBlock1.unknown_2ABC[arg0].val2; + ConvertIntToDecimalStringN(gStringVar1, value, 0, 1); + gSaveBlock1.unknown_2ABC[arg0].val1 = 0; + ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + gScriptResult = 1; +} + bool8 GetPriceReduction(u8 arg0) { u8 i; -- cgit v1.2.3 From acc973b882f0001d3071951cbe4861d4edc4aebb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 09:25:29 -0400 Subject: sub_80BEC40, sub_80BECA0 --- asm/tv.s | 95 ---------------------------------------------------------------- src/tv.c | 30 ++++++++++++++++++-- 2 files changed, 28 insertions(+), 97 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 7a20dc17d..0535432da 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1760,101 +1760,6 @@ _080BEC38: .4byte 0x00002abd _080BEC3C: .4byte 0x00002abe thumb_func_end sub_80BEC10 - thumb_func_start sub_80BEC40 -sub_80BEC40: @ 80BEC40 - push {r4-r7,lr} - movs r1, 0 - ldr r6, _080BEC80 @ =gSaveBlock1 -_080BEC46: - ldr r3, _080BEC80 @ =gSaveBlock1 - lsls r2, r1, 2 - adds r0, r2, r3 - ldr r4, _080BEC84 @ =0x00002abc - adds r0, r4 - ldrb r0, [r0] - adds r5, r1, 0x1 - cmp r0, 0 - bne _080BEC92 - lsls r0, r5, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bhi _080BEC92 - adds r4, r3, r4 - adds r3, r2, r4 -_080BEC64: - lsls r2, r1, 2 - adds r0, r2, r6 - ldr r7, _080BEC84 @ =0x00002abc - adds r0, r7 - ldrb r0, [r0] - cmp r0, 0 - beq _080BEC88 - adds r0, r2, r4 - ldr r0, [r0] - str r0, [r3] - adds r0, r1, 0 - bl sub_80BEC10 - b _080BEC92 - .align 2, 0 -_080BEC80: .4byte gSaveBlock1 -_080BEC84: .4byte 0x00002abc -_080BEC88: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080BEC64 -_080BEC92: - lsls r0, r5, 24 - lsrs r1, r0, 24 - cmp r1, 0xE - bls _080BEC46 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BEC40 - - thumb_func_start sub_80BECA0 -sub_80BECA0: @ 80BECA0 - push {r4,lr} - movs r2, 0 - ldr r3, _080BECCC @ =gSaveBlock1 -_080BECA6: - lsls r0, r2, 2 - adds r1, r0, r3 - ldr r4, _080BECD0 @ =0x00002abc - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080BECD4 - adds r4, 0x1 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BECD4 - adds r4, 0x1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0x2 - bhi _080BECD4 - adds r0, r2, 0 - b _080BECE0 - .align 2, 0 -_080BECCC: .4byte gSaveBlock1 -_080BECD0: .4byte 0x00002abc -_080BECD4: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080BECA6 - movs r0, 0xFF -_080BECE0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BECA0 - .section .text_80BF544 thumb_func_start sub_80BFF68 diff --git a/src/tv.c b/src/tv.c index 678590388..547baf76a 100644 --- a/src/tv.c +++ b/src/tv.c @@ -467,12 +467,38 @@ asm(".section .text_b"); void sub_80BF6D8(void); void sub_80BEC10(u8); -void sub_80BEC40(void); void sub_80BF588(TVShow tvShows[]); -u8 sub_80BECA0(void); bool8 IsPriceDiscounted(u8); +void sub_80BEC40(void) { + u8 i, j; + for (i = 0; i < 15; i++) { + if (gSaveBlock1.unknown_2ABC[i].val0 == 0) { + for (j = i + 1; j < 16; j++) { + if (gSaveBlock1.unknown_2ABC[j].val0 != 0) { + gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j]; + sub_80BEC10(j); + break; + } + } + } + } +} + +u8 sub_80BECA0(void) +{ + u8 i; + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 != 0 && gSaveBlock1.unknown_2ABC[i].val1 == 1 && gSaveBlock1.unknown_2ABC[i].val2 < 3) + { + return i; + } + } + return 0xFF; +} + void sub_80BECE8(void) { u8 arg0; -- cgit v1.2.3 From 8e1e27167d0134ff7dfbbcd6f25d3d8cda3919f2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 10:02:04 -0400 Subject: Join two sections of tv.c --- asm/tv.s | 148 ---------------------------------------------------------- ld_script.txt | 2 - src/tv.c | 73 ++++++++++++++++++----------- 3 files changed, 46 insertions(+), 177 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 0535432da..f92e462e5 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,154 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BEB20 -sub_80BEB20: @ 80BEB20 - push {r4-r6,lr} - ldr r0, _080BEBAC @ =0x00000804 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080BEBA6 - ldr r6, _080BEBB0 @ =gSaveBlock1 + 0x2ABC - adds r0, r6, 0 - bl sub_80BEBC8 - ldr r5, _080BEBB4 @ =gUnknown_03005D38 - strb r0, [r5] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEBA6 - ldr r0, _080BEBB8 @ =0x0000028f - bl sub_80BF77C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEBA6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80BEE48 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEBA6 - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - ldr r1, _080BEBBC @ =0xffffd544 - adds r2, r6, r1 - adds r0, r6, r0 - strb r4, [r0] - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - adds r0, r2 - ldr r1, _080BEBC0 @ =0x00002abe - adds r0, r1 - movs r1, 0x4 - strh r1, [r0] - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - adds r0, r2 - ldr r1, _080BEBC4 @ =0x00002abd - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_080BEBA6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BEBAC: .4byte 0x00000804 -_080BEBB0: .4byte gSaveBlock1 + 0x2ABC -_080BEBB4: .4byte gUnknown_03005D38 -_080BEBB8: .4byte 0x0000028f -_080BEBBC: .4byte 0xffffd544 -_080BEBC0: .4byte 0x00002abe -_080BEBC4: .4byte 0x00002abd - thumb_func_end sub_80BEB20 - - thumb_func_start sub_80BEBC8 -sub_80BEBC8: @ 80BEBC8 - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080BEBCE: - lsls r0, r1, 24 - asrs r1, r0, 24 - lsls r0, r1, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080BEBE0 - adds r0, r1, 0 - b _080BEBF0 -_080BEBE0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0xF - ble _080BEBCE - movs r0, 0x1 - negs r0, r0 -_080BEBF0: - pop {r1} - bx r1 - thumb_func_end sub_80BEBC8 - - thumb_func_start sub_80BEBF4 -sub_80BEBF4: @ 80BEBF4 - push {r4,lr} - movs r4, 0 -_080BEBF8: - adds r0, r4, 0 - bl sub_80BEC10 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080BEBF8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BEBF4 - - thumb_func_start sub_80BEC10 -sub_80BEC10: @ 80BEC10 - lsls r0, 24 - ldr r1, _080BEC30 @ =gSaveBlock1 - lsrs r0, 22 - adds r0, r1 - ldr r2, _080BEC34 @ =0x00002abc - adds r1, r0, r2 - movs r2, 0 - strb r2, [r1] - ldr r3, _080BEC38 @ =0x00002abd - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _080BEC3C @ =0x00002abe - adds r0, r1 - strh r2, [r0] - bx lr - .align 2, 0 -_080BEC30: .4byte gSaveBlock1 -_080BEC34: .4byte 0x00002abc -_080BEC38: .4byte 0x00002abd -_080BEC3C: .4byte 0x00002abe - thumb_func_end sub_80BEC10 - -.section .text_80BF544 thumb_func_start sub_80BFF68 sub_80BFF68: @ 80BFF68 diff --git a/ld_script.txt b/ld_script.txt index fd57b31d6..78da2ea81 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -180,8 +180,6 @@ SECTIONS { asm/tv.o(.text); src/tv.o(.text_a); asm/tv.o(.text_80BE8EC); - src/tv.o(.text_b); - asm/tv.o(.text_80BF544); src/tv.o(.text_c); asm/tv.o(.text_80C1C5C); src/tv.o(.text_d); diff --git a/src/tv.c b/src/tv.c index 547baf76a..c0a399306 100644 --- a/src/tv.c +++ b/src/tv.c @@ -439,38 +439,57 @@ void sub_80BEA88(void) } } -// void sub_80BEB20(void) -// { - // struct UnknownSaveStruct2ABC *unk_2abc; - // u16 rval16; - // u16 val; - // unk_2abc = &gSaveBlock1.unknown_2ABC; - // TVShow *tvShow; - // if (FlagGet(SYS_GAME_CLEAR) != 0) - // { - // gUnknown_03005D38.var0 = sub_80BEBC8(unk_2abc); - // if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) - // { - // rval16 = Random(); - // val = (rval16 % 3) + 1; - // if (sub_80BEE48(val) != 1) - // { - // tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; - // unk_2abc[gUnknown_03005D38.var0][0] = val; - // to do - // } - // } - // } -// } - -asm(".section .text_b"); - -void sub_80BF6D8(void); +int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0); void sub_80BEC10(u8); void sub_80BF588(TVShow tvShows[]); +void sub_80BF6D8(void); +bool8 sub_80BF77C(u16); +bool8 sub_80BEE48(u8); bool8 IsPriceDiscounted(u8); +void sub_80BEB20(void) { + u16 rval; + struct SaveBlock1 *save; + struct UnknownSaveStruct2ABC *unk2abc; + if (FlagGet(SYS_GAME_CLEAR) != 0) { + unk2abc = gSaveBlock1.unknown_2ABC; + gUnknown_03005D38.var0 = sub_80BEBC8(unk2abc); + if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) { + rval = (Random() % 3) + 1; + if (sub_80BEE48(rval) != 1) { + save = &gSaveBlock1; + save->unknown_2ABC[gUnknown_03005D38.var0].val0 = rval; + save->unknown_2ABC[gUnknown_03005D38.var0].val2 = 4; + save->unknown_2ABC[gUnknown_03005D38.var0].val1 = 1; + } + } + } +} + +int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) { + s8 i; + for (i=0; i<16; i++) { + if (arg0[i].val0 == 0) { + return i; + } + } + return -1; +} + +void sub_80BEBF4(void) { + u8 i; + for (i=0; i<16; i++) { + sub_80BEC10(i); + } +} + +void sub_80BEC10(u8 arg0) { + gSaveBlock1.unknown_2ABC[arg0].val0 = 0; + gSaveBlock1.unknown_2ABC[arg0].val1 = 0; + gSaveBlock1.unknown_2ABC[arg0].val2 = 0; +} + void sub_80BEC40(void) { u8 i, j; for (i = 0; i < 15; i++) { -- cgit v1.2.3 From ed1cec5ab54507d498c52291146c8d29afa6ff67 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 10:48:52 -0400 Subject: DoTVShowInSearchOfTrainers --- asm/tv.s | 209 ------------------------------------------------------- include/global.h | 17 ++++- src/tv.c | 57 +++++++++++++++ 3 files changed, 73 insertions(+), 210 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index f92e462e5..bb1b2756d 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4927,215 +4927,6 @@ nullsub_22: @ 80C1BF4 .section .text_80C1C5C - thumb_func_start DoTVShowInSearchOfTrainers -DoTVShowInSearchOfTrainers: @ 80C1C5C - push {r4-r7,lr} - ldr r0, _080C1C7C @ =gScriptResult - movs r1, 0 - strh r1, [r0] - ldr r0, _080C1C80 @ =gUnknown_020387E8 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0x8 - bls _080C1C70 - b _080C1DF8 -_080C1C70: - lsls r0, r7, 2 - ldr r1, _080C1C84 @ =_080C1C88 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1C7C: .4byte gScriptResult -_080C1C80: .4byte gUnknown_020387E8 -_080C1C84: .4byte _080C1C88 - .align 2, 0 -_080C1C88: - .4byte _080C1CAC - .4byte _080C1CF0 - .4byte _080C1CF6 - .4byte _080C1D44 - .4byte _080C1DB0 - .4byte _080C1DB0 - .4byte _080C1DB0 - .4byte _080C1DB0 - .4byte _080C1DB6 -_080C1CAC: - ldr r0, _080C1CD0 @ =gStringVar1 - ldr r4, _080C1CD4 @ =gSaveBlock1 - ldr r2, _080C1CD8 @ =0x00002b18 - adds r1, r4, r2 - ldrb r1, [r1] - movs r2, 0 - bl sub_80FBFB4 - ldr r0, _080C1CDC @ =0x00002b19 - adds r4, r0 - ldrb r0, [r4] - cmp r0, 0x1 - bls _080C1CE4 - ldr r1, _080C1CE0 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C1DF8 - .align 2, 0 -_080C1CD0: .4byte gStringVar1 -_080C1CD4: .4byte gSaveBlock1 -_080C1CD8: .4byte 0x00002b18 -_080C1CDC: .4byte 0x00002b19 -_080C1CE0: .4byte gUnknown_020387E8 -_080C1CE4: - ldr r1, _080C1CEC @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C1DF8 - .align 2, 0 -_080C1CEC: .4byte gUnknown_020387E8 -_080C1CF0: - movs r0, 0x2 - strb r0, [r2] - b _080C1DF8 -_080C1CF6: - ldr r0, _080C1D0C @ =gSaveBlock1 - ldr r1, _080C1D10 @ =0x00002b1a - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080C1D14 - movs r0, 0x4 - strb r0, [r2] - b _080C1DF8 - .align 2, 0 -_080C1D0C: .4byte gSaveBlock1 -_080C1D10: .4byte 0x00002b1a -_080C1D14: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080C1D22 - movs r0, 0x5 - strb r0, [r2] - b _080C1DF8 -_080C1D22: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080C1D30 - movs r0, 0x6 - strb r0, [r2] - b _080C1DF8 -_080C1D30: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080C1D3E - movs r0, 0x7 - strb r0, [r2] - b _080C1DF8 -_080C1D3E: - movs r0, 0x3 - strb r0, [r2] - b _080C1DF8 -_080C1D44: - ldr r0, _080C1D88 @ =gStringVar1 - ldr r4, _080C1D8C @ =gSaveBlock1 - ldr r2, _080C1D90 @ =0x00002b10 - adds r1, r4, r2 - ldrh r1, [r1] - movs r6, 0xB - muls r1, r6 - ldr r5, _080C1D94 @ =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, _080C1D98 @ =gStringVar2 - ldr r2, _080C1D9C @ =0x00002b14 - adds r1, r4, r2 - ldrh r2, [r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _080C1DA0 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1DA4 @ =gStringVar3 - ldr r1, _080C1DA8 @ =0x00002b12 - adds r4, r1 - ldrh r1, [r4] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldr r1, _080C1DAC @ =gUnknown_020387E8 - movs r0, 0x8 - strb r0, [r1] - b _080C1DF8 - .align 2, 0 -_080C1D88: .4byte gStringVar1 -_080C1D8C: .4byte gSaveBlock1 -_080C1D90: .4byte 0x00002b10 -_080C1D94: .4byte gSpeciesNames -_080C1D98: .4byte gStringVar2 -_080C1D9C: .4byte 0x00002b14 -_080C1DA0: .4byte gMoveNames -_080C1DA4: .4byte gStringVar3 -_080C1DA8: .4byte 0x00002b12 -_080C1DAC: .4byte gUnknown_020387E8 -_080C1DB0: - movs r0, 0x8 - strb r0, [r2] - b _080C1DF8 -_080C1DB6: - ldr r0, _080C1E0C @ =gStringVar1 - ldr r4, _080C1E10 @ =gSaveBlock1 - ldr r2, _080C1E14 @ =0x00002b16 - adds r1, r4, r2 - ldrh r1, [r1] - bl sub_80EB3FC - ldr r0, _080C1E18 @ =gStringVar2 - ldr r2, _080C1E1C @ =0x00002b10 - adds r1, r4, r2 - ldrh r1, [r1] - movs r6, 0xB - muls r1, r6 - ldr r5, _080C1E20 @ =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, _080C1E24 @ =gStringVar3 - ldr r1, _080C1E28 @ =0x00002b12 - adds r4, r1 - ldrh r1, [r4] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldr r1, _080C1E2C @ =gScriptResult - movs r0, 0x1 - strh r0, [r1] - ldr r1, _080C1E30 @ =gUnknown_020387E8 - movs r0, 0 - strb r0, [r1] - bl TakeTVShowInSearchOfTrainersOffTheAir -_080C1DF8: - ldr r0, _080C1E34 @ =gTVGabbyAndTyTextGroup - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1E0C: .4byte gStringVar1 -_080C1E10: .4byte gSaveBlock1 -_080C1E14: .4byte 0x00002b16 -_080C1E18: .4byte gStringVar2 -_080C1E1C: .4byte 0x00002b10 -_080C1E20: .4byte gSpeciesNames -_080C1E24: .4byte gStringVar3 -_080C1E28: .4byte 0x00002b12 -_080C1E2C: .4byte gScriptResult -_080C1E30: .4byte gUnknown_020387E8 -_080C1E34: .4byte gTVGabbyAndTyTextGroup - thumb_func_end DoTVShowInSearchOfTrainers - thumb_func_start DoTVShowPokemonAngler DoTVShowPokemonAngler: @ 80C1E38 push {r4,r5,lr} diff --git a/include/global.h b/include/global.h index 9a9e08fbb..0f794d8f0 100644 --- a/include/global.h +++ b/include/global.h @@ -398,6 +398,21 @@ struct UnknownSaveStruct2ABC { u16 val2; }; +struct GabbyAndTyData { + u16 mon1; + u16 mon2; + u16 move1; + u16 move2; + u8 mapnum; + u8 val9; + u8 valA_0:1; + u8 valA_1:1; + u8 valA_2:1; + u8 valA_3:1; + u8 valA_4:4; + u8 valB; +}; + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; @@ -459,7 +474,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2B0C*/ u8 outbreakUnk4; /*0x2B0D*/ u8 outbreakPokemonProbability; /*0x2B0E*/ u16 outbreakUnk5; - /*0x2B10*/ u8 filler_2B0E[0xC]; + /*0x2B18*/ struct GabbyAndTyData gabbyAndTyData; /*0x2B1C*/ u16 unk2B1C[6]; /*0x2B28*/ u16 unk2B28[6]; /*0x2B34*/ u16 unk2B34[6]; diff --git a/src/tv.c b/src/tv.c index c0a399306..d64599897 100644 --- a/src/tv.c +++ b/src/tv.c @@ -50,7 +50,9 @@ extern u8 gUnknown_020387E8; extern struct UnkTvStruct gUnknown_03005D38; extern u8 gSpeciesNames[][11]; +extern u8 gMoveNames[][13]; extern u8 *gTVPokemonOutbreakTextGroup[]; +extern u8 *gTVGabbyAndTyTextGroup[]; extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; extern void sub_80BEBF4(void); @@ -1608,6 +1610,8 @@ _080BFF58:\n\ asm(".section .text_c"); +void TakeTVShowInSearchOfTrainersOffTheAir(void); + void DoTVShowPokemonNewsMassOutbreak(void) { TVShow *tvShow; @@ -1624,6 +1628,59 @@ void DoTVShowPokemonNewsMassOutbreak(void) ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]); } +void DoTVShowInSearchOfTrainers(void) { + u8 switchval; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); + if (gSaveBlock1.gabbyAndTyData.val9 > 1) { + gUnknown_020387E8 = 1; + } else { + gUnknown_020387E8 = 2; + } + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { + gUnknown_020387E8 = 4; + } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { + gUnknown_020387E8 = 5; + } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { + gUnknown_020387E8 = 6; + } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { + gUnknown_020387E8 = 7; + } else { + gUnknown_020387E8 = 3; + } + break; + case 3: + StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gUnknown_020387E8 = 8; + break; + case 4: + case 5: + case 6: + case 7: + gUnknown_020387E8 = 8; + break; + case 8: + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); + StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gScriptResult = 1; + gUnknown_020387E8 = 0;; + TakeTVShowInSearchOfTrainersOffTheAir(); + break; + } + ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]); +} + asm(".section .text_d"); void TVShowDone(void) -- cgit v1.2.3 From bade8566271df0ef7f27370573561f4d03f2caf5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 11:05:17 -0400 Subject: DoTVShowPokemonAngler --- asm/tv.s | 94 -------------------------------------------------------- include/global.h | 4 +-- src/tv.c | 41 +++++++++++++++++++++--- 3 files changed, 38 insertions(+), 101 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index bb1b2756d..2019337af 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4927,100 +4927,6 @@ nullsub_22: @ 80C1BF4 .section .text_80C1C5C - thumb_func_start DoTVShowPokemonAngler -DoTVShowPokemonAngler: @ 80C1E38 - push {r4,r5,lr} - ldr r0, _080C1E5C @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1E60 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r0, _080C1E64 @ =gScriptResult - movs r1, 0 - strh r1, [r0] - ldrb r0, [r4, 0x2] - ldrb r2, [r4, 0x3] - cmp r0, r2 - bcs _080C1E6C - ldr r0, _080C1E68 @ =gUnknown_020387E8 - strb r1, [r0] - b _080C1E74 - .align 2, 0 -_080C1E5C: .4byte gSpecialVar_0x8004 -_080C1E60: .4byte gSaveBlock1 + 0x2738 -_080C1E64: .4byte gScriptResult -_080C1E68: .4byte gUnknown_020387E8 -_080C1E6C: - ldr r1, _080C1E80 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - adds r0, r1, 0 -_080C1E74: - ldrb r5, [r0] - cmp r5, 0 - beq _080C1E84 - cmp r5, 0x1 - beq _080C1EBC - b _080C1EE4 - .align 2, 0 -_080C1E80: .4byte gUnknown_020387E8 -_080C1E84: - ldr r0, _080C1EB0 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x6] - bl TVShowConvertInternationalString - ldr r0, _080C1EB4 @ =gStringVar2 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1EB8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r4, 0x3] - movs r0, 0x2 - bl sub_80BF088 - bl TVShowDone - b _080C1EE4 - .align 2, 0 -_080C1EB0: .4byte gStringVar1 -_080C1EB4: .4byte gStringVar2 -_080C1EB8: .4byte gSpeciesNames -_080C1EBC: - ldr r0, _080C1EF8 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x6] - bl TVShowConvertInternationalString - ldr r0, _080C1EFC @ =gStringVar2 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1F00 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r4, 0x2] - movs r0, 0x2 - bl sub_80BF088 - bl TVShowDone -_080C1EE4: - ldr r0, _080C1F04 @ =gTVFishingGuruAdviceTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C1EF8: .4byte gStringVar1 -_080C1EFC: .4byte gStringVar2 -_080C1F00: .4byte gSpeciesNames -_080C1F04: .4byte gTVFishingGuruAdviceTextGroup - thumb_func_end DoTVShowPokemonAngler - thumb_func_start DoTVShowTheWorldOfMasters DoTVShowTheWorldOfMasters: @ 80C1F08 push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index 0f794d8f0..17fd3c4a5 100644 --- a/include/global.h +++ b/include/global.h @@ -265,7 +265,7 @@ struct TVShowMassOutbreak { u8 pad19[11]; }; -struct TVShowUnknownTVShowType { +struct TVShowPokemonAngler { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u8 var02; @@ -313,7 +313,7 @@ typedef union TVShow { struct TVShowFanclubOpinions fanclubOpinions; struct TVShowNameRaterShow nameRaterShow; struct TVShowMassOutbreak massOutbreak; - struct TVShowUnknownTVShowType unknownTvShowType; + struct TVShowPokemonAngler pokemonAngler; struct TVShowUnknownTVShowType2 unknownTvShowType2; struct TVShowSmartShopper smartshopperShow; struct TVShowContestWinner contestShow; diff --git a/src/tv.c b/src/tv.c index d64599897..46c46965a 100644 --- a/src/tv.c +++ b/src/tv.c @@ -53,6 +53,7 @@ extern u8 gSpeciesNames[][11]; extern u8 gMoveNames[][13]; extern u8 *gTVPokemonOutbreakTextGroup[]; extern u8 *gTVGabbyAndTyTextGroup[]; +extern u8 *gTVFishingGuruAdviceTextGroup[]; extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; extern void sub_80BEBF4(void); @@ -381,12 +382,12 @@ void sub_80BE9D4() strb r1, [r4, 1]\n\ .syntax divided\n"); #endif - show->unknownTvShowType.var02 = gUnknown_020387E2 & 0xFF; - show->unknownTvShowType.var03 = gUnknown_020387E2 >> 8; - show->unknownTvShowType.var04 = gUnknown_020387E0; - StringCopy(show->unknownTvShowType.playerName, gSaveBlock2.playerName); + show->pokemonAngler.var02 = gUnknown_020387E2 & 0xFF; + show->pokemonAngler.var03 = gUnknown_020387E2 >> 8; + show->pokemonAngler.var04 = gUnknown_020387E0; + StringCopy(show->pokemonAngler.playerName, gSaveBlock2.playerName); sub_80BE138(show); - show->unknownTvShowType.language = GAME_LANGUAGE; + show->pokemonAngler.language = GAME_LANGUAGE; } } @@ -1610,6 +1611,8 @@ _080BFF58:\n\ asm(".section .text_c"); +void TVShowConvertInternationalString(u8 *, u8 *, u8); + void TakeTVShowInSearchOfTrainersOffTheAir(void); void DoTVShowPokemonNewsMassOutbreak(void) @@ -1681,6 +1684,34 @@ void DoTVShowInSearchOfTrainers(void) { ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]); } +void DoTVShowPokemonAngler(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) { + gUnknown_020387E8 = 0; + } else { + gUnknown_020387E8 = 1; + } + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var03); + TVShowDone(); + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var02); + TVShowDone(); + break; + } + ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]); +} + asm(".section .text_d"); void TVShowDone(void) -- cgit v1.2.3 From 63f05cfc7c3634545a9230b0ce41259bcc61aef0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 11:32:40 -0400 Subject: Plug another hole in tv.c --- asm/tv.s | 100 ------------------------------------------------------- include/global.h | 4 +-- ld_script.txt | 2 -- src/tv.c | 48 ++++++++++++++++++++------ 4 files changed, 40 insertions(+), 114 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 2019337af..cb9b6d0d5 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4925,104 +4925,4 @@ nullsub_22: @ 80C1BF4 bx lr thumb_func_end nullsub_22 -.section .text_80C1C5C - - thumb_func_start DoTVShowTheWorldOfMasters -DoTVShowTheWorldOfMasters: @ 80C1F08 - push {r4-r6,lr} - ldr r0, _080C1F30 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1F34 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C1F38 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r6, _080C1F3C @ =gUnknown_020387E8 - ldrb r5, [r6] - cmp r5, 0x1 - beq _080C1F6C - cmp r5, 0x1 - bgt _080C1F40 - cmp r5, 0 - beq _080C1F46 - b _080C1FB6 - .align 2, 0 -_080C1F30: .4byte gSpecialVar_0x8004 -_080C1F34: .4byte gSaveBlock1 + 0x2738 -_080C1F38: .4byte gScriptResult -_080C1F3C: .4byte gUnknown_020387E8 -_080C1F40: - cmp r5, 0x2 - beq _080C1F8C - b _080C1FB6 -_080C1F46: - ldr r0, _080C1F68 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xB] - bl TVShowConvertInternationalString - ldrh r1, [r4, 0x6] - movs r0, 0x1 - bl sub_80BF088 - ldrh r1, [r4, 0x2] - movs r0, 0x2 - bl sub_80BF088 - movs r0, 0x1 - strb r0, [r6] - b _080C1FB6 - .align 2, 0 -_080C1F68: .4byte gStringVar1 -_080C1F6C: - ldr r0, _080C1F84 @ =gStringVar1 - ldrh r2, [r4, 0x8] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1F88 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - movs r0, 0x2 - strb r0, [r6] - b _080C1FB6 - .align 2, 0 -_080C1F84: .4byte gStringVar1 -_080C1F88: .4byte gSpeciesNames -_080C1F8C: - ldr r0, _080C1FC8 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xB] - bl TVShowConvertInternationalString - ldr r0, _080C1FCC @ =gStringVar2 - ldrb r1, [r4, 0xA] - movs r2, 0 - bl sub_80FBFB4 - ldr r0, _080C1FD0 @ =gStringVar3 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1FD4 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080C1FB6: - ldr r0, _080C1FD8 @ =gTVWorldOfMastersTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C1FC8: .4byte gStringVar1 -_080C1FCC: .4byte gStringVar2 -_080C1FD0: .4byte gStringVar3 -_080C1FD4: .4byte gSpeciesNames -_080C1FD8: .4byte gTVWorldOfMastersTextGroup - thumb_func_end DoTVShowTheWorldOfMasters - - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index 17fd3c4a5..cd7bdcdb3 100644 --- a/include/global.h +++ b/include/global.h @@ -276,7 +276,7 @@ struct TVShowPokemonAngler { /*0x13*/ u8 playerName[8]; }; -struct TVShowUnknownTVShowType2 { +struct TVShowWorldOfMasters { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 var02; @@ -314,7 +314,7 @@ typedef union TVShow { struct TVShowNameRaterShow nameRaterShow; struct TVShowMassOutbreak massOutbreak; struct TVShowPokemonAngler pokemonAngler; - struct TVShowUnknownTVShowType2 unknownTvShowType2; + struct TVShowWorldOfMasters worldOfMasters; struct TVShowSmartShopper smartshopperShow; struct TVShowContestWinner contestShow; } TVShow; diff --git a/ld_script.txt b/ld_script.txt index 78da2ea81..4f0203800 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -181,8 +181,6 @@ SECTIONS { src/tv.o(.text_a); asm/tv.o(.text_80BE8EC); src/tv.o(.text_c); - asm/tv.o(.text_80C1C5C); - src/tv.o(.text_d); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); src/field_poison.o(.text); diff --git a/src/tv.c b/src/tv.c index 46c46965a..a371e17f7 100644 --- a/src/tv.c +++ b/src/tv.c @@ -54,6 +54,7 @@ extern u8 gMoveNames[][13]; extern u8 *gTVPokemonOutbreakTextGroup[]; extern u8 *gTVGabbyAndTyTextGroup[]; extern u8 *gTVFishingGuruAdviceTextGroup[]; +extern u8 *gTVWorldOfMastersTextGroup[]; extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; extern void sub_80BEBF4(void); @@ -428,16 +429,16 @@ void sub_80BEA88(void) if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(0x19) != 1) { tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; - tvShow->unknownTvShowType2.var00 = 0x19; - tvShow->unknownTvShowType2.var01 = rval; - tvShow->unknownTvShowType2.var02 = unk_2a98->var02; - tvShow->unknownTvShowType2.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06; - tvShow->unknownTvShowType2.var04 = unk_2a98->var04; - tvShow->unknownTvShowType2.var08 = unk_2a98->var08; - tvShow->unknownTvShowType2.var0a = unk_2a98->var0a; - StringCopy(tvShow->unknownTvShowType2.playerName, gSaveBlock2.playerName); + tvShow->worldOfMasters.var00 = 0x19; + tvShow->worldOfMasters.var01 = rval; + tvShow->worldOfMasters.var02 = unk_2a98->var02; + tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06; + tvShow->worldOfMasters.var04 = unk_2a98->var04; + tvShow->worldOfMasters.var08 = unk_2a98->var08; + tvShow->worldOfMasters.var0a = unk_2a98->var0a; + StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName); sub_80BE138(tvShow); - tvShow->unknownTvShowType2.language = GAME_LANGUAGE; + tvShow->worldOfMasters.language = GAME_LANGUAGE; } } } @@ -1712,7 +1713,34 @@ void DoTVShowPokemonAngler(void) { ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]); } -asm(".section .text_d"); +void DoTVShowTheWorldOfMasters(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80BF088(1, tvShow->worldOfMasters.var06); + sub_80BF088(2, tvShow->worldOfMasters.var02); + gUnknown_020387E8 = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]); +} void TVShowDone(void) { -- cgit v1.2.3 From b0925c52d7294e1f2ce2db2c8de08f8df2a8bd64 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 12:05:04 -0400 Subject: DoTVShowPokemonFanClubOpinions --- asm/tv.s | 110 ------------------------------------------------------- include/global.h | 4 +- include/tv.h | 4 +- src/tv.c | 49 +++++++++++++++++++++---- 4 files changed, 46 insertions(+), 121 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index cb9b6d0d5..ba6802c68 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4815,114 +4815,4 @@ _080C1AFC: _080C1B04: .4byte gTVRecentHappeningsTextGroup thumb_func_end DoTVShowRecentHappenings - thumb_func_start DoTVShowPokemonFanClubOpinions -DoTVShowPokemonFanClubOpinions: @ 80C1B08 - push {r4-r6,lr} - ldr r0, _080C1B30 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1B34 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C1B38 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r6, _080C1B3C @ =gUnknown_020387E8 - ldrb r5, [r6] - cmp r5, 0x3 - bgt _080C1B40 - cmp r5, 0x1 - bge _080C1B88 - cmp r5, 0 - beq _080C1B46 - b _080C1BD6 - .align 2, 0 -_080C1B30: .4byte gSpecialVar_0x8004 -_080C1B34: .4byte gSaveBlock1 + 0x2738 -_080C1B38: .4byte gScriptResult -_080C1B3C: .4byte gUnknown_020387E8 -_080C1B40: - cmp r5, 0x4 - beq _080C1BC0 - b _080C1BD6 -_080C1B46: - ldr r0, _080C1B78 @ =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl TVShowConvertInternationalString - ldr r0, _080C1B7C @ =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1B80 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1B84 @ =gStringVar3 - adds r1, r4, 0 - adds r1, 0x10 - ldrb r2, [r4, 0xE] - bl TVShowConvertInternationalString - ldrb r0, [r4, 0x4] - lsrs r0, 4 - adds r0, 0x1 - strb r0, [r6] - b _080C1BD6 - .align 2, 0 -_080C1B78: .4byte gStringVar1 -_080C1B7C: .4byte gStringVar2 -_080C1B80: .4byte gSpeciesNames -_080C1B84: .4byte gStringVar3 -_080C1B88: - ldr r0, _080C1BB0 @ =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl TVShowConvertInternationalString - ldr r0, _080C1BB4 @ =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1BB8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1BBC @ =gStringVar3 - ldrh r1, [r4, 0x1C] - bl sub_80EB3FC - movs r0, 0x4 - strb r0, [r6] - b _080C1BD6 - .align 2, 0 -_080C1BB0: .4byte gStringVar1 -_080C1BB4: .4byte gStringVar2 -_080C1BB8: .4byte gSpeciesNames -_080C1BBC: .4byte gStringVar3 -_080C1BC0: - ldr r0, _080C1BE8 @ =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl TVShowConvertInternationalString - ldr r0, _080C1BEC @ =gStringVar3 - ldrh r1, [r4, 0x1E] - bl sub_80EB3FC - bl TVShowDone -_080C1BD6: - ldr r0, _080C1BF0 @ =gTVFanClubOpinionsTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C1BE8: .4byte gStringVar1 -_080C1BEC: .4byte gStringVar3 -_080C1BF0: .4byte gTVFanClubOpinionsTextGroup - thumb_func_end DoTVShowPokemonFanClubOpinions - - thumb_func_start nullsub_22 -nullsub_22: @ 80C1BF4 - bx lr - thumb_func_end nullsub_22 - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index cd7bdcdb3..836ba3880 100644 --- a/include/global.h +++ b/include/global.h @@ -224,8 +224,8 @@ struct TVShowFanclubOpinions { /*0x02*/ u16 var02; /*0x04*/ u8 var04A:4; u8 var04B:4; - /*0x05*/ u8 var05[8]; - /*0x0D*/ u8 var0D; + /*0x05*/ u8 playerName[8]; + /*0x0D*/ u8 language; /*0x0E*/ u8 var0E; /*0x0F*/ u8 var0F; /*0x10*/ u8 var10[8]; diff --git a/include/tv.h b/include/tv.h index f6dd7a007..c4aafebb5 100644 --- a/include/tv.h +++ b/include/tv.h @@ -11,8 +11,8 @@ enum TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3, TVSHOW_UNKN_SHOWTYPE_04 = 4, TVSHOW_NAME_RATER_SHOW = 5, - TVSHOW_UNK_SHOWTYPE_06 = 6, - TVSHOW_UNK_SHOWTYPE_07 = 7, + TVSHOW_FISHING_ADVICE = 6, + TVSHOW_WORLD_OF_MASTERS = 7, TVSHOW_MASS_OUTBREAK = 41, }; #endif //POKERUBY_TV_H diff --git a/src/tv.c b/src/tv.c index a371e17f7..b237640ed 100644 --- a/src/tv.c +++ b/src/tv.c @@ -51,6 +51,7 @@ extern struct UnkTvStruct gUnknown_03005D38; extern u8 gSpeciesNames[][11]; extern u8 gMoveNames[][13]; +extern u8 *gTVFanClubOpinionsTextGroup[]; extern u8 *gTVPokemonOutbreakTextGroup[]; extern u8 *gTVGabbyAndTyTextGroup[]; extern u8 *gTVFishingGuruAdviceTextGroup[]; @@ -208,13 +209,13 @@ void sub_80BE6A0(void) tvShow->fanclubOpinions.var04B = gSpecialVar_0x8007; - StringCopy(tvShow->fanclubOpinions.var05, gSaveBlock2.playerName); + StringCopy(tvShow->fanclubOpinions.playerName, gSaveBlock2.playerName); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, tvShow->fanclubOpinions.var10); tvShow->fanclubOpinions.var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); sub_80BE160(tvShow); - tvShow->fanclubOpinions.var0D = GAME_LANGUAGE; + tvShow->fanclubOpinions.language = GAME_LANGUAGE; tvShow->fanclubOpinions.var0E = sub_80BDEAC(tvShow->fanclubOpinions.var10); StripExtCtrlCodes(tvShow->fanclubOpinions.var10); } @@ -839,10 +840,10 @@ void sub_80BF2C4(void) case TVSHOW_NAME_RATER_SHOW: sub_80BF478(); break; - case TVSHOW_UNK_SHOWTYPE_06: + case TVSHOW_FISHING_ADVICE: sub_80BF484(); break; - case TVSHOW_UNK_SHOWTYPE_07: + case TVSHOW_WORLD_OF_MASTERS: sub_80BF4BC(); break; } @@ -895,7 +896,7 @@ void sub_80BF478(void) void sub_80BF484(void) { TVShow *show; - sub_80BF25C(TVSHOW_UNK_SHOWTYPE_06); + sub_80BF25C(TVSHOW_FISHING_ADVICE); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; sub_80EB6FC(show->recentHappenings.var04, 2); // wrong struct ident, fix later @@ -905,7 +906,7 @@ void sub_80BF484(void) void sub_80BF4BC(void) { TVShow *show; - sub_80BF25C(TVSHOW_UNK_SHOWTYPE_07); + sub_80BF25C(TVSHOW_WORLD_OF_MASTERS); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubOpinions.var18, 1); // wrong struct ident, fix later @@ -1447,7 +1448,7 @@ __attribute__((naked)) void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ + push {r4-r7,lr}\n\ mov r7, r10\n\ mov r6, r9\n\ mov r5, r8\n\ @@ -1616,6 +1617,40 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8); void TakeTVShowInSearchOfTrainersOffTheAir(void); +void DoTVShowPokemonFanClubOpinions(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); + gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; + break; + case 1: + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); + gUnknown_020387E8 = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]); +} + +void nullsub_22(void) { + +} + void DoTVShowPokemonNewsMassOutbreak(void) { TVShow *tvShow; -- cgit v1.2.3 From cd7914aad6aaea7601bd02a3167ea918ddfa1ebc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 12:35:46 -0400 Subject: DoTVShowRecentHappenings --- asm/tv.s | 147 --------------------------------------------------------------- src/tv.c | 86 +++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 147 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index ba6802c68..e29ba5790 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4668,151 +4668,4 @@ _080C196C: _080C1974: .4byte gTVFanClubTextGroup thumb_func_end DoTVShowPokemonFanClubLetter - thumb_func_start DoTVShowRecentHappenings -DoTVShowRecentHappenings: @ 80C1978 - push {r4-r7,lr} - ldr r0, _080C19A4 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C19A8 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C19AC @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C19B0 @ =gUnknown_020387E8 - ldrb r6, [r0] - adds r7, r0, 0 - cmp r6, 0x32 - bls _080C199A - b _080C1AF0 -_080C199A: - lsls r0, r6, 2 - ldr r1, _080C19B4 @ =_080C19B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C19A4: .4byte gSpecialVar_0x8004 -_080C19A8: .4byte gSaveBlock1 + 0x2738 -_080C19AC: .4byte gScriptResult -_080C19B0: .4byte gUnknown_020387E8 -_080C19B4: .4byte _080C19B8 - .align 2, 0 -_080C19B8: - .4byte _080C1A84 - .4byte _080C1AA8 - .4byte _080C1AC0 - .4byte _080C1AC0 - .4byte _080C1AC0 - .4byte _080C1AC6 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1ACC -_080C1A84: - ldr r0, _080C1AA0 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - ldrb r2, [r5, 0x18] - bl TVShowConvertInternationalString - adds r0, r5, 0 - bl sub_80BF79C - ldr r1, _080C1AA4 @ =gUnknown_020387E8 - movs r0, 0x32 - strb r0, [r1] - b _080C1AF0 - .align 2, 0 -_080C1AA0: .4byte gStringVar1 -_080C1AA4: .4byte gUnknown_020387E8 -_080C1AA8: - bl Random - ldrb r4, [r7] - adds r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, r4 - strb r0, [r7] - b _080C1AF0 -_080C1AC0: - movs r0, 0x5 - strb r0, [r7] - b _080C1AF0 -_080C1AC6: - bl TVShowDone - b _080C1AF0 -_080C1ACC: - ldr r4, _080C1AE8 @ =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl ShowFieldMessage - ldr r1, _080C1AEC @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C1AFC - .align 2, 0 -_080C1AE8: .4byte gStringVar4 -_080C1AEC: .4byte gUnknown_020387E8 -_080C1AF0: - ldr r0, _080C1B04 @ =gTVRecentHappeningsTextGroup - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage -_080C1AFC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1B04: .4byte gTVRecentHappeningsTextGroup - thumb_func_end DoTVShowRecentHappenings - .align 2, 0 @ Don't pad with nop. diff --git a/src/tv.c b/src/tv.c index b237640ed..bafe9db4d 100644 --- a/src/tv.c +++ b/src/tv.c @@ -51,6 +51,15 @@ extern struct UnkTvStruct gUnknown_03005D38; extern u8 gSpeciesNames[][11]; extern u8 gMoveNames[][13]; + +extern u8 *gTVBravoTrainerTextGroup[]; +extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; +extern u8 *gTVSmartShopperTextGroup[]; +extern u8 *gTVNameRaterTextGroup[]; +extern u8 *gTVPokemonTodayTextGroup[]; +extern u8 *gTVPokemonTodayFailedCaptureTextGroup[]; +extern u8 *gTVFanClubTextGroup[]; +extern u8 *gTVRecentHappeningsTextGroup[]; extern u8 *gTVFanClubOpinionsTextGroup[]; extern u8 *gTVPokemonOutbreakTextGroup[]; extern u8 *gTVGabbyAndTyTextGroup[]; @@ -1617,6 +1626,83 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8); void TakeTVShowInSearchOfTrainersOffTheAir(void); +void DoTVShowRecentHappenings(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.var10, tvShow->recentHappenings.var18); + sub_80BF79C(&tvShow->recentHappenings); + gUnknown_020387E8 = 50; + break; + case 1: + gUnknown_020387E8 += 1 + (Random() % 3); + break; + case 2: + case 3: + case 4: + gUnknown_020387E8 = 5; + break; + case 5: + TVShowDone(); + break; + case 6: + case 7: + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + } + ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]); +} + void DoTVShowPokemonFanClubOpinions(void) { TVShow *tvShow; u8 switchval; -- cgit v1.2.3 From b93526ae45dc97dd5bd226a9715f7c6de9142d6d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 13:34:42 -0400 Subject: DoTVShowPokemonFanClubLetter --- asm/tv.s | 213 ------------------------------------------------------- include/global.h | 8 +-- src/tv.c | 113 ++++++++++++++++++++++++++--- 3 files changed, 108 insertions(+), 226 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index e29ba5790..89e286342 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4455,217 +4455,4 @@ _080C173C: _080C1750: .4byte gTVPokemonTodayFailedCaptureTextGroup thumb_func_end DoTVShowPokemonTodayFailedCapture - thumb_func_start DoTVShowPokemonFanClubLetter -DoTVShowPokemonFanClubLetter: @ 80C1754 - push {r4-r7,lr} - ldr r0, _080C1780 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1784 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C1788 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C178C @ =gUnknown_020387E8 - ldrb r7, [r0] - adds r6, r0, 0 - cmp r7, 0x33 - bls _080C1776 - b _080C1960 -_080C1776: - lsls r0, r7, 2 - ldr r1, _080C1790 @ =_080C1794 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1780: .4byte gSpecialVar_0x8004 -_080C1784: .4byte gSaveBlock1 + 0x2738 -_080C1788: .4byte gScriptResult -_080C178C: .4byte gUnknown_020387E8 -_080C1790: .4byte _080C1794 - .align 2, 0 -_080C1794: - .4byte _080C1864 - .4byte _080C1898 - .4byte _080C18C4 - .4byte _080C18CA - .4byte _080C18E2 - .4byte _080C18E2 - .4byte _080C18E2 - .4byte _080C18F4 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1916 - .4byte _080C193C -_080C1864: - ldr r0, _080C1888 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - ldrb r2, [r5, 0x18] - bl TVShowConvertInternationalString - ldr r0, _080C188C @ =gStringVar2 - ldrh r2, [r5, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1890 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, _080C1894 @ =gUnknown_020387E8 - movs r0, 0x32 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C1888: .4byte gStringVar1 -_080C188C: .4byte gStringVar2 -_080C1890: .4byte gSpeciesNames -_080C1894: .4byte gUnknown_020387E8 -_080C1898: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r2, r0, 0x1 - cmp r2, 0x1 - bne _080C18B8 - ldr r1, _080C18B4 @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C18B4: .4byte gUnknown_020387E8 -_080C18B8: - ldr r1, _080C18C0 @ =gUnknown_020387E8 - adds r0, r2, 0x2 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C18C0: .4byte gUnknown_020387E8 -_080C18C4: - movs r0, 0x33 - strb r0, [r6] - b _080C1960 -_080C18CA: - bl Random - ldrb r4, [r6] - adds r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, r4 - strb r0, [r6] - b _080C1960 -_080C18E2: - adds r0, r5, 0 - bl sub_80BF79C - ldr r1, _080C18F0 @ =gUnknown_020387E8 - movs r0, 0x7 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C18F0: .4byte gUnknown_020387E8 -_080C18F4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - bl __umodsi3 - adds r0, 0x46 - lsls r0, 16 - lsrs r2, r0, 16 - movs r0, 0x2 - adds r1, r2, 0 - bl sub_80BF088 - bl TVShowDone - b _080C1960 -_080C1916: - ldr r4, _080C1934 @ =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl ShowFieldMessage - ldr r1, _080C1938 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C196C - .align 2, 0 -_080C1934: .4byte gStringVar4 -_080C1938: .4byte gUnknown_020387E8 -_080C193C: - ldr r4, _080C1958 @ =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl ShowFieldMessage - ldr r1, _080C195C @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C196C - .align 2, 0 -_080C1958: .4byte gStringVar4 -_080C195C: .4byte gUnknown_020387E8 -_080C1960: - ldr r0, _080C1974 @ =gTVFanClubTextGroup - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage -_080C196C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1974: .4byte gTVFanClubTextGroup - thumb_func_end DoTVShowPokemonFanClubLetter - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index 836ba3880..e372afe15 100644 --- a/include/global.h +++ b/include/global.h @@ -205,7 +205,7 @@ struct TVShowFanClubLetter { /*0x02*/ u16 species; /*0x04*/ u16 pad04[6]; /*0x10*/ u8 playerName[8]; - /*0x18*/ u8 var18; + /*0x18*/ u8 language; }; struct TVShowRecentHappenings { @@ -213,8 +213,8 @@ struct TVShowRecentHappenings { /*0x01*/ u8 var01; /*0x02*/ u16 var02; /*0x04*/ u16 var04[6]; - /*0x10*/ u8 var10[8]; - /*0x18*/ u8 var18; + /*0x10*/ u8 playerName[8]; + /*0x18*/ u8 language; u8 pad19[10]; }; @@ -261,7 +261,7 @@ struct TVShowMassOutbreak { /*0x14*/ u8 level; /*0x15*/ u8 var15; /*0x16*/ u16 var16; - /*0x18*/ u8 var18; + /*0x18*/ u8 language; u8 pad19[11]; }; diff --git a/src/tv.c b/src/tv.c index bafe9db4d..d303c3fe9 100644 --- a/src/tv.c +++ b/src/tv.c @@ -184,7 +184,7 @@ void sub_80BE5FC(void) species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); tvShow->fanclubLetter.species = species; sub_80BE160(tvShow); - tvShow->fanclubLetter.var18 = GAME_LANGUAGE; + tvShow->fanclubLetter.language = GAME_LANGUAGE; } void sub_80BE65C(void) @@ -195,11 +195,11 @@ void sub_80BE65C(void) tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; tvShow->recentHappenings.var01 = 1; - StringCopy(&tvShow->recentHappenings.var10[0], &gSaveBlock2.playerName[0]); + StringCopy(tvShow->recentHappenings.playerName, gSaveBlock2.playerName); tvShow->recentHappenings.var02 = 0; sub_80BE160(tvShow); - tvShow->recentHappenings.var18 = GAME_LANGUAGE; + tvShow->recentHappenings.language = GAME_LANGUAGE; } void sub_80BE6A0(void) @@ -294,7 +294,7 @@ void sub_80BE778(void) tvShow->massOutbreak.var16 = 0x01; sub_80BE160(tvShow); - tvShow->massOutbreak.var18 = GAME_LANGUAGE; + tvShow->massOutbreak.language = GAME_LANGUAGE; } } @@ -1044,17 +1044,17 @@ bool8 sub_80BF77C(u16 value) return TRUE; } -void sub_80BF79C(struct TVShowRecentHappenings *arg0) +void sub_80BF79C(TVShow *arg0) { u8 i = Random() % 6; while (1) { if (i == 6) i = 0; - if (arg0->var04[i] != 0xFFFF) + if (arg0->recentHappenings.var04[i] != 0xFFFF) break; i ++; } - sub_80EB3FC(gStringVar3, arg0->var04[i]); + sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]); } u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) @@ -1626,6 +1626,101 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8); void TakeTVShowInSearchOfTrainersOffTheAir(void); +void DoTVShowPokemonFanClubLetter(void) { + TVShow *tvShow; + u8 switchval; + u16 rval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); + gUnknown_020387E8 = 50; + break; + case 1: + rval = (Random() % 4) + 1; + if (rval == 1) { + gUnknown_020387E8 = 2; + } else { + gUnknown_020387E8 = rval + 2; + } + break; + case 2: + gUnknown_020387E8 = 51; + break; + case 3: + gUnknown_020387E8 += (Random() % 3) + 1; + break; + case 4: + case 5: + case 6: + sub_80BF79C(tvShow); + gUnknown_020387E8 = 7; + break; + case 7: + rval = (Random() % 0x1f) + 0x46; + sub_80BF088(2, rval); + TVShowDone(); + break; + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + case 17: + case 18: + case 19: + case 20: + case 21: + case 22: + case 23: + case 24: + case 25: + case 26: + case 27: + case 28: + case 29: + case 30: + case 31: + case 32: + case 33: + case 34: + case 35: + case 36: + case 37: + case 38: + case 39: + case 40: + case 41: + case 42: + case 43: + case 44: + case 45: + case 46: + case 47: + case 48: + case 49: + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + case 51: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 3; + return; + } + ShowFieldMessage(gTVFanClubTextGroup[switchval]); +} + void DoTVShowRecentHappenings(void) { TVShow *tvShow; u8 switchval; @@ -1634,8 +1729,8 @@ void DoTVShowRecentHappenings(void) { switchval = gUnknown_020387E8; switch (switchval) { case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.var10, tvShow->recentHappenings.var18); - sub_80BF79C(&tvShow->recentHappenings); + TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); + sub_80BF79C(tvShow); gUnknown_020387E8 = 50; break; case 1: -- cgit v1.2.3 From 00d1e98f5a4f7830b08b37e647092daa19f0a18d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 14:03:02 -0400 Subject: DoTVShowPokemonTodayFailedCapture --- asm/tv.s | 157 ------------------------------------------------------- include/global.h | 14 +++++ src/tv.c | 46 ++++++++++++++++ 3 files changed, 60 insertions(+), 157 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 89e286342..fdd25c332 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4298,161 +4298,4 @@ _080C15DC: _080C15F0: .4byte gTVPokemonTodayTextGroup thumb_func_end DoTVShowPokemonTodaySuccessfulCapture - thumb_func_start DoTVShowPokemonTodayFailedCapture -DoTVShowPokemonTodayFailedCapture: @ 80C15F4 - push {r4,r5,lr} - ldr r0, _080C1620 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1624 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C1628 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C162C @ =gUnknown_020387E8 - ldrb r5, [r0] - cmp r5, 0x6 - bls _080C1614 - b _080C173C -_080C1614: - lsls r0, r5, 2 - ldr r1, _080C1630 @ =_080C1634 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1620: .4byte gSpecialVar_0x8004 -_080C1624: .4byte gSaveBlock1 + 0x2738 -_080C1628: .4byte gScriptResult -_080C162C: .4byte gUnknown_020387E8 -_080C1630: .4byte _080C1634 - .align 2, 0 -_080C1634: - .4byte _080C1650 - .4byte _080C1684 - .4byte _080C16D8 - .4byte _080C16D8 - .4byte _080C171C - .4byte _080C171C - .4byte _080C1738 -_080C1650: - ldr r0, _080C1674 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1678 @ =gStringVar2 - ldrh r2, [r4, 0xC] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C167C @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, _080C1680 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1674: .4byte gStringVar1 -_080C1678: .4byte gStringVar2 -_080C167C: .4byte gSpeciesNames -_080C1680: .4byte gUnknown_020387E8 -_080C1684: - ldr r0, _080C16B8 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C16BC @ =gStringVar2 - ldrb r1, [r4, 0x12] - movs r2, 0 - bl sub_80FBFB4 - ldr r0, _080C16C0 @ =gStringVar3 - ldrh r2, [r4, 0xE] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C16C4 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r4, 0x11] - cmp r0, 0x1 - bne _080C16CC - ldr r1, _080C16C8 @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C16B8: .4byte gStringVar1 -_080C16BC: .4byte gStringVar2 -_080C16C0: .4byte gStringVar3 -_080C16C4: .4byte gSpeciesNames -_080C16C8: .4byte gUnknown_020387E8 -_080C16CC: - ldr r1, _080C16D4 @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C16D4: .4byte gUnknown_020387E8 -_080C16D8: - ldr r0, _080C1708 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x10] - movs r0, 0x1 - bl sub_80BF088 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _080C1710 - ldr r1, _080C170C @ =gUnknown_020387E8 - movs r0, 0x5 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1708: .4byte gStringVar1 -_080C170C: .4byte gUnknown_020387E8 -_080C1710: - ldr r1, _080C1718 @ =gUnknown_020387E8 - movs r0, 0x4 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1718: .4byte gUnknown_020387E8 -_080C171C: - ldr r0, _080C1730 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldr r1, _080C1734 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1730: .4byte gStringVar1 -_080C1734: .4byte gUnknown_020387E8 -_080C1738: - bl TVShowDone -_080C173C: - ldr r0, _080C1750 @ =gTVPokemonTodayFailedCaptureTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C1750: .4byte gTVPokemonTodayFailedCaptureTextGroup - thumb_func_end DoTVShowPokemonTodayFailedCapture - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index e372afe15..4ba4100dd 100644 --- a/include/global.h +++ b/include/global.h @@ -199,6 +199,19 @@ struct TVShowCommon { /*0x23*/ u8 trainerIdHi; }; +struct TVShowPokemonToday { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 language; + /*0x03*/ u8 pad03[9]; + /*0x0c*/ u16 species; + /*0x0e*/ u16 species2; + /*0x10*/ u8 var10; + /*0x11*/ u8 var11; + /*0x12*/ u8 var12; + /*0x13*/ u8 playerName[8]; +}; + struct TVShowFanClubLetter { /*0x00*/ u8 var00; /*0x01*/ u8 var01; @@ -317,6 +330,7 @@ typedef union TVShow { struct TVShowWorldOfMasters worldOfMasters; struct TVShowSmartShopper smartshopperShow; struct TVShowContestWinner contestShow; + struct TVShowPokemonToday pokemonToday; } TVShow; struct MailStruct diff --git a/src/tv.c b/src/tv.c index d303c3fe9..8a340719d 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1626,6 +1626,52 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8); void TakeTVShowInSearchOfTrainersOffTheAir(void); +void DoTVShowPokemonTodayFailedCapture(void) { + TVShow *tvShow; + u8 switchval; + u16 rval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + sub_80FBFB4(gStringVar2, tvShow->pokemonToday.var12, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonToday.species2]); + if (tvShow->pokemonToday.var11 == 1) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 2; + } + break; + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + sub_80BF088(1, tvShow->pokemonToday.var10); + rval = (Random() % 3); + if (rval == 0) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 4; + } + break; + case 4: + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowDone(); + break; + } + ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]); +} + void DoTVShowPokemonFanClubLetter(void) { TVShow *tvShow; u8 switchval; -- cgit v1.2.3 From d1851f99bcd24e1dd51920e9f4a44cebe04d5bb4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 14:51:11 -0400 Subject: DoTVShowPokemonTodaySuccessfulCapture --- asm/tv.s | 253 ------------------------------------------------------- include/global.h | 14 +++ include/item.h | 19 +++++ src/item.c | 19 ----- src/tv.c | 89 +++++++++++++++++-- 5 files changed, 113 insertions(+), 281 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index fdd25c332..6b95d5a83 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -4045,257 +4045,4 @@ _080C13A4: .4byte gStringVar2 _080C13A8: .4byte gTVNameRaterTextGroup thumb_func_end DoTVShowTheNameRaterShow - thumb_func_start DoTVShowPokemonTodaySuccessfulCapture -DoTVShowPokemonTodaySuccessfulCapture: @ 80C13AC - push {r4-r6,lr} - ldr r0, _080C13D8 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C13DC @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C13E0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C13E4 @ =gUnknown_020387E8 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xB - bls _080C13CE - b _080C15DC -_080C13CE: - lsls r0, r6, 2 - ldr r1, _080C13E8 @ =_080C13EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C13D8: .4byte gSpecialVar_0x8004 -_080C13DC: .4byte gSaveBlock1 + 0x2738 -_080C13E0: .4byte gScriptResult -_080C13E4: .4byte gUnknown_020387E8 -_080C13E8: .4byte _080C13EC - .align 2, 0 -_080C13EC: - .4byte _080C141C - .4byte _080C1470 - .4byte _080C1476 - .4byte _080C14B0 - .4byte _080C14E8 - .4byte _080C14EE - .4byte _080C1524 - .4byte _080C1578 - .4byte _080C1578 - .4byte _080C15A8 - .4byte _080C15A8 - .4byte _080C15D8 -_080C141C: - ldr r0, _080C1450 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1454 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1458 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C145C @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldrb r0, [r5, 0xF] - cmp r0, 0x1 - bne _080C1464 - ldr r1, _080C1460 @ =gUnknown_020387E8 - movs r0, 0x5 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C1450: .4byte gStringVar1 -_080C1454: .4byte gStringVar2 -_080C1458: .4byte gSpeciesNames -_080C145C: .4byte gStringVar3 -_080C1460: .4byte gUnknown_020387E8 -_080C1464: - ldr r1, _080C146C @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C146C: .4byte gUnknown_020387E8 -_080C1470: - movs r0, 0x2 - strb r0, [r2] - b _080C15DC -_080C1476: - ldr r4, _080C149C @ =gStringVar2 - ldrb r0, [r5, 0xF] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5, 0x12] - movs r0, 0x2 - bl sub_80BF088 - ldrb r0, [r5, 0x12] - cmp r0, 0x3 - bhi _080C14A4 - ldr r1, _080C14A0 @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C149C: .4byte gStringVar2 -_080C14A0: .4byte gUnknown_020387E8 -_080C14A4: - ldr r1, _080C14AC @ =gUnknown_020387E8 - movs r0, 0x4 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C14AC: .4byte gUnknown_020387E8 -_080C14B0: - ldr r0, _080C14D8 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C14DC @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C14E0 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C14E4 @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - b _080C150A - .align 2, 0 -_080C14D8: .4byte gStringVar1 -_080C14DC: .4byte gStringVar2 -_080C14E0: .4byte gSpeciesNames -_080C14E4: .4byte gStringVar3 -_080C14E8: - movs r0, 0x6 - strb r0, [r2] - b _080C15DC -_080C14EE: - ldr r0, _080C1514 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1518 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C151C @ =gSpeciesNames - adds r1, r2 - bl StringCopy -_080C150A: - ldr r1, _080C1520 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C1514: .4byte gStringVar1 -_080C1518: .4byte gStringVar2 -_080C151C: .4byte gSpeciesNames -_080C1520: .4byte gUnknown_020387E8 -_080C1524: - ldr r0, _080C1564 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1568 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C156C @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1570 @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r4, _080C1574 @ =gUnknown_020387E8 - bl Random - ldrb r2, [r4] - adds r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, r2 - strb r0, [r4] - b _080C15DC - .align 2, 0 -_080C1564: .4byte gStringVar1 -_080C1568: .4byte gStringVar2 -_080C156C: .4byte gSpeciesNames -_080C1570: .4byte gStringVar3 -_080C1574: .4byte gUnknown_020387E8 -_080C1578: - ldr r0, _080C159C @ =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, _080C15A0 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C15A4 @ =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldrh r1, [r5, 0x10] - movs r0, 0x2 - bl sub_80BF638 - b _080C15C2 - .align 2, 0 -_080C159C: .4byte gStringVar1 -_080C15A0: .4byte gSpeciesNames -_080C15A4: .4byte gStringVar2 -_080C15A8: - ldr r0, _080C15C8 @ =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, _080C15CC @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C15D0 @ =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString -_080C15C2: - ldr r0, _080C15D4 @ =gUnknown_020387E8 - strb r4, [r0] - b _080C15DC - .align 2, 0 -_080C15C8: .4byte gStringVar1 -_080C15CC: .4byte gSpeciesNames -_080C15D0: .4byte gStringVar2 -_080C15D4: .4byte gUnknown_020387E8 -_080C15D8: - bl TVShowDone -_080C15DC: - ldr r0, _080C15F0 @ =gTVPokemonTodayTextGroup - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C15F0: .4byte gTVPokemonTodayTextGroup - thumb_func_end DoTVShowPokemonTodaySuccessfulCapture - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index 4ba4100dd..a437a3b0d 100644 --- a/include/global.h +++ b/include/global.h @@ -200,6 +200,19 @@ struct TVShowCommon { }; struct TVShowPokemonToday { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 language; + /*0x03*/ u8 language2; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 ball; + /*0x10*/ u16 species; + /*0x12*/ u8 var12; + /*0x13*/ u8 playerName[8]; +}; + + +struct TVShowPokemonTodayFailed { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u8 language; @@ -331,6 +344,7 @@ typedef union TVShow { struct TVShowSmartShopper smartshopperShow; struct TVShowContestWinner contestShow; struct TVShowPokemonToday pokemonToday; + struct TVShowPokemonTodayFailed pokemonTodayFailed; } TVShow; struct MailStruct diff --git a/include/item.h b/include/item.h index cc917dbc8..47af11940 100644 --- a/include/item.h +++ b/include/item.h @@ -1,8 +1,27 @@ #ifndef GUARD_ITEM_H #define GUARD_ITEM_H + typedef void (*ItemUseFunc)(u8); +struct Item +{ + u8 name[14]; + u16 itemId; + u16 price; + u8 holdEffect; + u8 holdEffectParam; + u8 *description; + u8 importance; + u8 unk19; + u8 pocket; + u8 type; + ItemUseFunc fieldUseFunc; + u8 battleUsage; + ItemUseFunc battleUseFunc; + u8 secondaryId; +}; + void CopyItemName(u16 itemId, u8 *string); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); diff --git a/src/item.c b/src/item.c index 656563ad4..7257c3649 100644 --- a/src/item.c +++ b/src/item.c @@ -6,25 +6,6 @@ extern struct Berry *GetBerryInfo(u8 berry); extern u8 gOtherText_Berry2[]; extern u8 gUnknown_02038560; - -struct Item -{ - u8 name[14]; - u16 itemId; - u16 price; - u8 holdEffect; - u8 holdEffectParam; - u8 *description; - u8 importance; - u8 unk19; - u8 pocket; - u8 type; - ItemUseFunc fieldUseFunc; - u8 battleUsage; - ItemUseFunc battleUseFunc; - u8 secondaryId; -}; - extern struct Item gItems[]; struct BagPocket diff --git a/src/tv.c b/src/tv.c index 8a340719d..92fee5fa1 100644 --- a/src/tv.c +++ b/src/tv.c @@ -16,6 +16,7 @@ #include "link.h" #include "easy_chat.h" #include "item.h" +#include "items.h" #include "contest_painting.h" #include "rtc.h" @@ -1626,10 +1627,10 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8); void TakeTVShowInSearchOfTrainersOffTheAir(void); -void DoTVShowPokemonTodayFailedCapture(void) { +void DoTVShowPokemonTodaySuccessfulCapture(void) { TVShow *tvShow; u8 switchval; - u16 rval; +// u16 rval; tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; @@ -1637,13 +1638,83 @@ void DoTVShowPokemonTodayFailedCapture(void) { case 0: TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - gUnknown_020387E8 = 1; + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 1; + } break; case 1: + gUnknown_020387E8 = 2; + break; + case 2: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); + sub_80BF088(2, tvShow->pokemonToday.var12); + if (tvShow->pokemonToday.var12 < 4) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 6; + break; + case 4: + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + gUnknown_020387E8 = 6; + break; + case 6: TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - sub_80FBFB4(gStringVar2, tvShow->pokemonToday.var12, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonToday.species2]); - if (tvShow->pokemonToday.var11 == 1) { + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 7: + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + sub_80BF638(2, tvShow->pokemonToday.species); + gUnknown_020387E8 = 11; + break; + case 9: + case 10: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 11; + break; + case 11: + TVShowDone(); + break; + } + ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]); +} + +void DoTVShowPokemonTodayFailedCapture(void) { + TVShow *tvShow; + u8 switchval; + u16 rval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); + if (tvShow->pokemonTodayFailed.var11 == 1) { gUnknown_020387E8 = 3; } else { gUnknown_020387E8 = 2; @@ -1651,8 +1722,8 @@ void DoTVShowPokemonTodayFailedCapture(void) { break; case 2: case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - sub_80BF088(1, tvShow->pokemonToday.var10); + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80BF088(1, tvShow->pokemonTodayFailed.var10); rval = (Random() % 3); if (rval == 0) { gUnknown_020387E8 = 5; @@ -1662,7 +1733,7 @@ void DoTVShowPokemonTodayFailedCapture(void) { break; case 4: case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); gUnknown_020387E8 = 6; break; case 6: -- cgit v1.2.3 From f8c731037ecf076d5ea6374fd7f953d062425852 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 15:44:40 -0400 Subject: DoTVShowTheNameRaterShow --- asm/tv.s | 386 ------------------------------------------------------- include/global.h | 2 +- src/tv.c | 99 +++++++++++++- 3 files changed, 98 insertions(+), 389 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 6b95d5a83..a7121167f 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -3659,390 +3659,4 @@ _080C1028: .4byte gStringVar1 _080C102C: .4byte gTVSmartShopperTextGroup thumb_func_end DoTVShowTodaysSmartShopper - thumb_func_start DoTVShowTheNameRaterShow -DoTVShowTheNameRaterShow: @ 80C1030 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _080C1060 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1064 @ =gSaveBlock1 + 0x2738 - adds r6, r0, r1 - ldr r1, _080C1068 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C106C @ =gUnknown_020387E8 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0x12 - bls _080C1054 - b _080C138A -_080C1054: - lsls r0, r7, 2 - ldr r1, _080C1070 @ =_080C1074 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1060: .4byte gSpecialVar_0x8004 -_080C1064: .4byte gSaveBlock1 + 0x2738 -_080C1068: .4byte gScriptResult -_080C106C: .4byte gUnknown_020387E8 -_080C1070: .4byte _080C1074 - .align 2, 0 -_080C1074: - .4byte _080C10C0 - .4byte _080C1108 - .4byte _080C112A - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1170 - .4byte _080C1170 - .4byte _080C1170 - .4byte _080C136C - .4byte _080C11CC - .4byte _080C1228 - .4byte _080C127C - .4byte _080C12D4 - .4byte _080C1314 - .4byte _080C1370 -_080C10C0: - ldr r0, _080C10F4 @ =gStringVar1 - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C10F8 @ =gStringVar2 - ldrh r2, [r6, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C10FC @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1100 @ =gStringVar3 - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1F] - bl TVShowConvertInternationalString - ldr r4, _080C1104 @ =gUnknown_020387E8 - adds r0, r6, 0 - bl sub_80BF7E8 - adds r0, 0x1 - strb r0, [r4] - b _080C138A - .align 2, 0 -_080C10F4: .4byte gStringVar1 -_080C10F8: .4byte gStringVar2 -_080C10FC: .4byte gSpeciesNames -_080C1100: .4byte gStringVar3 -_080C1104: .4byte gUnknown_020387E8 -_080C1108: - ldrb r0, [r6, 0x1A] - cmp r0, 0 - bne _080C1114 - movs r0, 0x9 - strb r0, [r2] - b _080C138A -_080C1114: - cmp r0, 0x1 - bne _080C111E - movs r0, 0xA - strb r0, [r2] - b _080C138A -_080C111E: - cmp r0, 0x2 - beq _080C1124 - b _080C138A -_080C1124: - movs r0, 0xB - strb r0, [r2] - b _080C138A -_080C112A: - ldr r0, _080C1144 @ =gStringVar1 - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - bl TVShowConvertInternationalString - ldrb r0, [r6, 0x1A] - cmp r0, 0 - bne _080C114C - ldr r1, _080C1148 @ =gUnknown_020387E8 - movs r0, 0x9 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1144: .4byte gStringVar1 -_080C1148: .4byte gUnknown_020387E8 -_080C114C: - cmp r0, 0x1 - bne _080C115C - ldr r1, _080C1158 @ =gUnknown_020387E8 - movs r0, 0xA - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1158: .4byte gUnknown_020387E8 -_080C115C: - cmp r0, 0x2 - beq _080C1162 - b _080C138A -_080C1162: - ldr r1, _080C116C @ =gUnknown_020387E8 - movs r0, 0xB - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C116C: .4byte gUnknown_020387E8 -_080C1170: - movs r5, 0 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C11BC @ =gStringVar3 - ldr r4, _080C11C0 @ =gStringVar1 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C11C4 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1F] - adds r0, r4, 0 - bl TVShowConvertInternationalString - ldr r1, _080C11C8 @ =gUnknown_020387E8 - movs r0, 0xC - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C11BC: .4byte gStringVar3 -_080C11C0: .4byte gStringVar1 -_080C11C4: .4byte gStringVar2 -_080C11C8: .4byte gUnknown_020387E8 -_080C11CC: - movs r5, 0 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C1218 @ =gStringVar3 - ldr r4, _080C121C @ =gStringVar1 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0 - bl sub_80BF820 - ldr r0, _080C1220 @ =gStringVar2 - ldrb r2, [r6, 0x1E] - adds r1, r4, 0 - bl TVShowConvertInternationalString - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - adds r0, r4, 0 - bl TVShowConvertInternationalString - ldr r1, _080C1224 @ =gUnknown_020387E8 - movs r0, 0xE - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1218: .4byte gStringVar3 -_080C121C: .4byte gStringVar1 -_080C1220: .4byte gStringVar2 -_080C1224: .4byte gUnknown_020387E8 -_080C1228: - movs r5, 0 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_80BF820 - ldr r0, _080C1270 @ =gStringVar3 - ldr r4, _080C1274 @ =gStringVar1 - ldrb r2, [r6, 0x1E] - adds r1, r4, 0 - bl TVShowConvertInternationalString - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C1278 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - adds r0, r4, 0 - bl TVShowConvertInternationalString - b _080C1354 - .align 2, 0 -_080C1270: .4byte gStringVar3 -_080C1274: .4byte gStringVar1 -_080C1278: .4byte gStringVar2 -_080C127C: - movs r0, 0 - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C12C4 @ =gStringVar1 - ldr r4, _080C12C8 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - ldrh r1, [r6, 0x2] - movs r0, 0xB - muls r1, r0 - ldr r0, _080C12CC @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldrh r0, [r6, 0x2] - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_80BF820 - ldr r1, _080C12D0 @ =gUnknown_020387E8 - movs r0, 0x10 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C12C4: .4byte gStringVar1 -_080C12C8: .4byte gStringVar2 -_080C12CC: .4byte gSpeciesNames -_080C12D0: .4byte gUnknown_020387E8 -_080C12D4: - movs r0, 0 - str r0, [sp] - str r6, [sp, 0x4] - movs r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C1308 @ =gStringVar3 - ldr r1, _080C130C @ =gStringVar1 - ldrb r2, [r6, 0x1F] - bl TVShowConvertInternationalString - ldrh r0, [r6, 0x2] - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl sub_80BF820 - ldr r1, _080C1310 @ =gUnknown_020387E8 - movs r0, 0x11 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1308: .4byte gStringVar3 -_080C130C: .4byte gStringVar1 -_080C1310: .4byte gUnknown_020387E8 -_080C1314: - movs r0, 0 - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C135C @ =gStringVar1 - ldr r4, _080C1360 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - ldrh r0, [r6, 0x1C] - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_80BF820 - ldrh r1, [r6, 0x1C] - movs r0, 0xB - muls r1, r0 - ldr r0, _080C1364 @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy -_080C1354: - ldr r1, _080C1368 @ =gUnknown_020387E8 - movs r0, 0x12 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C135C: .4byte gStringVar1 -_080C1360: .4byte gStringVar2 -_080C1364: .4byte gSpeciesNames -_080C1368: .4byte gUnknown_020387E8 -_080C136C: - movs r7, 0x12 - strb r7, [r2] -_080C1370: - ldr r0, _080C13A0 @ =gStringVar1 - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1F] - bl TVShowConvertInternationalString - ldr r0, _080C13A4 @ =gStringVar2 - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - bl TVShowConvertInternationalString - bl TVShowDone -_080C138A: - ldr r0, _080C13A8 @ =gTVNameRaterTextGroup - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C13A0: .4byte gStringVar1 -_080C13A4: .4byte gStringVar2 -_080C13A8: .4byte gTVNameRaterTextGroup - thumb_func_end DoTVShowTheNameRaterShow - .align 2, 0 @ Don't pad with nop. diff --git a/include/global.h b/include/global.h index a437a3b0d..3454ab0b8 100644 --- a/include/global.h +++ b/include/global.h @@ -269,7 +269,7 @@ struct TVShowNameRaterShow { /*0x1B*/ u8 random2; /*0x1C*/ u16 var1C; /*0x1E*/ u8 language; - /*0x1F*/ u8 var1F; + /*0x1F*/ u8 pokemonNameLanguage; }; struct TVShowMassOutbreak { diff --git a/src/tv.c b/src/tv.c index 92fee5fa1..064360fba 100644 --- a/src/tv.c +++ b/src/tv.c @@ -145,7 +145,7 @@ void sub_80BE478(void) sub_80BE160(tvShow); tvShow->nameRaterShow.language = GAME_LANGUAGE; - tvShow->nameRaterShow.var1F = sub_80BDEAC(tvShow->nameRaterShow.pokemonName); + tvShow->nameRaterShow.pokemonNameLanguage = sub_80BDEAC(tvShow->nameRaterShow.pokemonName); StripExtCtrlCodes(tvShow->nameRaterShow.pokemonName); } @@ -1627,10 +1627,105 @@ void TVShowConvertInternationalString(u8 *, u8 *, u8); void TakeTVShowInSearchOfTrainersOffTheAir(void); +void DoTVShowTheNameRaterShow(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; + break; + case 1: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 9: + case 10: + case 11: + sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = 12; + break; + case 13: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 14; + break; + case 14: + sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); + sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 18; + break; + case 15: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 16; + break; + case 16: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 17; + break; + case 17: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); + gUnknown_020387E8 = 18; + break; + case 12: + switchval = 18; + gUnknown_020387E8 = 18; + case 18: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + TVShowDone(); + break; + } + ShowFieldMessage(gTVNameRaterTextGroup[switchval]); +} + void DoTVShowPokemonTodaySuccessfulCapture(void) { TVShow *tvShow; u8 switchval; -// u16 rval; tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; -- cgit v1.2.3 From f5195f6462e54c9bf4c4035129a48c76dd15c0cb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 17:40:50 -0400 Subject: DoTVShow (back to swiss cheese) --- asm/tv.s | 121 +--------------------------------------------------------- include/tv.h | 17 ++++++--- ld_script.txt | 2 + src/tv.c | 70 +++++++++++++++++++++++++++++++-- 4 files changed, 80 insertions(+), 130 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index a7121167f..93c90ff92 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2718,126 +2718,7 @@ _080C07BC: .4byte gSaveBlock1 _080C07C0: .4byte 0x00002abd thumb_func_end sub_80C0788 - thumb_func_start DoTVShow -DoTVShow: @ 80C07C4 - push {lr} - ldr r2, _080C07F8 @ =gSaveBlock1 - ldr r0, _080C07FC @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldr r2, _080C0800 @ =0x00002739 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080C07E0 - b _080C08F8 -_080C07E0: - subs r2, 0x1 - adds r0, r1, r2 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x28 - bls _080C07EE - b _080C08F8 -_080C07EE: - lsls r0, 2 - ldr r1, _080C0804 @ =_080C0808 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C07F8: .4byte gSaveBlock1 -_080C07FC: .4byte gSpecialVar_0x8004 -_080C0800: .4byte 0x00002739 -_080C0804: .4byte _080C0808 - .align 2, 0 -_080C0808: - .4byte _080C08AC - .4byte _080C08B2 - .4byte _080C08B8 - .4byte _080C08BE - .4byte _080C08E2 - .4byte _080C08CA - .4byte _080C08D0 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08D6 - .4byte _080C08DC - .4byte _080C08E8 - .4byte _080C08EE - .4byte _080C08F4 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08C4 -_080C08AC: - bl DoTVShowPokemonFanClubLetter - b _080C08F8 -_080C08B2: - bl DoTVShowRecentHappenings - b _080C08F8 -_080C08B8: - bl DoTVShowPokemonFanClubOpinions - b _080C08F8 -_080C08BE: - bl nullsub_22 - b _080C08F8 -_080C08C4: - bl DoTVShowPokemonNewsMassOutbreak - b _080C08F8 -_080C08CA: - bl DoTVShowBravoTrainerPokemonProfile - b _080C08F8 -_080C08D0: - bl DoTVShowBravoTrainerBattleTowerProfile - b _080C08F8 -_080C08D6: - bl DoTVShowPokemonTodaySuccessfulCapture - b _080C08F8 -_080C08DC: - bl DoTVShowTodaysSmartShopper - b _080C08F8 -_080C08E2: - bl DoTVShowTheNameRaterShow - b _080C08F8 -_080C08E8: - bl DoTVShowPokemonTodayFailedCapture - b _080C08F8 -_080C08EE: - bl DoTVShowPokemonAngler - b _080C08F8 -_080C08F4: - bl DoTVShowTheWorldOfMasters -_080C08F8: - pop {r0} - bx r0 - thumb_func_end DoTVShow +.section .dotvshow thumb_func_start TVShowConvertInternationalString TVShowConvertInternationalString: @ 80C08FC diff --git a/include/tv.h b/include/tv.h index c4aafebb5..b1ed61a82 100644 --- a/include/tv.h +++ b/include/tv.h @@ -7,12 +7,17 @@ enum { TVSHOW_FAN_CLUB_LETTER = 1, - TVSHOW_RECENT_HAPPENINGS = 2, - TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3, - TVSHOW_UNKN_SHOWTYPE_04 = 4, - TVSHOW_NAME_RATER_SHOW = 5, - TVSHOW_FISHING_ADVICE = 6, - TVSHOW_WORLD_OF_MASTERS = 7, + TVSHOW_RECENT_HAPPENINGS, + TVSHOW_PKMN_FAN_CLUB_OPINIONS, + TVSHOW_UNKN_SHOWTYPE_04, + TVSHOW_NAME_RATER_SHOW, + TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE, + TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE, + TVSHOW_POKEMON_TODAY_CAUGHT = 21, + TVSHOW_SMART_SHOPPER, + TVSHOW_POKEMON_TODAY_FAILED, + TVSHOW_FISHING_ADVICE, + TVSHOW_WORLD_OF_MASTERS, TVSHOW_MASS_OUTBREAK = 41, }; #endif //POKERUBY_TV_H diff --git a/ld_script.txt b/ld_script.txt index 4f0203800..be5c78907 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -180,6 +180,8 @@ SECTIONS { asm/tv.o(.text); src/tv.o(.text_a); asm/tv.o(.text_80BE8EC); + src/tv.o(.dotvshow); + asm/tv.o(.dotvshow); src/tv.o(.text_c); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); diff --git a/src/tv.c b/src/tv.c index 064360fba..71e13e9ce 100644 --- a/src/tv.c +++ b/src/tv.c @@ -850,10 +850,10 @@ void sub_80BF2C4(void) case TVSHOW_NAME_RATER_SHOW: sub_80BF478(); break; - case TVSHOW_FISHING_ADVICE: + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: sub_80BF484(); break; - case TVSHOW_WORLD_OF_MASTERS: + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: sub_80BF4BC(); break; } @@ -906,7 +906,7 @@ void sub_80BF478(void) void sub_80BF484(void) { TVShow *show; - sub_80BF25C(TVSHOW_FISHING_ADVICE); + sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; sub_80EB6FC(show->recentHappenings.var04, 2); // wrong struct ident, fix later @@ -916,7 +916,7 @@ void sub_80BF484(void) void sub_80BF4BC(void) { TVShow *show; - sub_80BF25C(TVSHOW_WORLD_OF_MASTERS); + sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubOpinions.var18, 1); // wrong struct ident, fix later @@ -1621,6 +1621,68 @@ _080BFF58:\n\ } #endif +asm(".section .dotvshow\n"); + +void DoTVShowPokemonFanClubLetter(void); +void DoTVShowRecentHappenings(void); +void DoTVShowPokemonFanClubOpinions(void); +void nullsub_22(void); +void DoTVShowPokemonNewsMassOutbreak(void); +void DoTVShowBravoTrainerPokemonProfile(void); +void DoTVShowBravoTrainerBattleTowerProfile(void); +void DoTVShowPokemonTodaySuccessfulCapture(void); +void DoTVShowTodaysSmartShopper(void); +void DoTVShowTheNameRaterShow(void); +void DoTVShowPokemonTodayFailedCapture(void); +void DoTVShowPokemonAngler(void); +void DoTVShowTheWorldOfMasters(void); + +void DoTVShow(void) { + if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { + switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { + case TVSHOW_FAN_CLUB_LETTER: + DoTVShowPokemonFanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + DoTVShowRecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + DoTVShowPokemonFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_22(); + break; + case TVSHOW_MASS_OUTBREAK: + DoTVShowPokemonNewsMassOutbreak(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + DoTVShowBravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + DoTVShowBravoTrainerBattleTowerProfile(); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + DoTVShowPokemonTodaySuccessfulCapture(); + break; + case TVSHOW_SMART_SHOPPER: + DoTVShowTodaysSmartShopper(); + break; + case TVSHOW_NAME_RATER_SHOW: + DoTVShowTheNameRaterShow(); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + DoTVShowPokemonTodayFailedCapture(); + break; + case TVSHOW_FISHING_ADVICE: + DoTVShowPokemonAngler(); + break; + case TVSHOW_WORLD_OF_MASTERS: + DoTVShowTheWorldOfMasters(); + break; + } + } +} + asm(".section .text_c"); void TVShowConvertInternationalString(u8 *, u8 *, u8); -- cgit v1.2.3 From 29f05f45e815564429ad1bacd3ab3f37adaa9f12 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 17:44:09 -0400 Subject: TVShowConvertInternationalString --- asm/tv.s | 18 ------------------ src/tv.c | 7 +++++++ 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 93c90ff92..42c0121c9 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2720,24 +2720,6 @@ _080C07C0: .4byte 0x00002abd .section .dotvshow - thumb_func_start TVShowConvertInternationalString -TVShowConvertInternationalString: @ 80C08FC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r2, 24 - lsrs r4, 24 - bl StringCopy - cmp r4, 0x1 - bhi _080C0914 - adds r0, r5, 0 - movs r1, 0x1 - bl ConvertInternationalString -_080C0914: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end TVShowConvertInternationalString - thumb_func_start DoTVShowBravoTrainerPokemonProfile DoTVShowBravoTrainerPokemonProfile: @ 80C091C push {r4,r5,lr} diff --git a/src/tv.c b/src/tv.c index 71e13e9ce..56ba9ed2e 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1683,6 +1683,13 @@ void DoTVShow(void) { } } +void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) { + StringCopy(dest, src); + if (language < LANGUAGE_ENGLISH) { + ConvertInternationalString(dest, LANGUAGE_JAPANESE); + } +} + asm(".section .text_c"); void TVShowConvertInternationalString(u8 *, u8 *, u8); -- cgit v1.2.3 From 305a346d7bc514c66c843356e1d81ef8ff3b27d9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 18:38:05 -0400 Subject: Another couple TV-related functions --- asm/tv.s | 151 --------------------------------------------------------------- src/tv.c | 53 ++++++++++++++++++++++ 2 files changed, 53 insertions(+), 151 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 42c0121c9..460d9a371 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -2567,157 +2567,6 @@ _080C06B4: .4byte gUnknown_03000721 _080C06B8: .4byte gUnknown_03005D38 thumb_func_end sub_80C05C4 - thumb_func_start sub_80C06BC -sub_80C06BC: @ 80C06BC - push {lr} - ldr r0, [r0] - ldr r1, [r1] - ldr r2, _080C06E0 @ =gUnknown_03000722 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r2, 2 - adds r1, r2 - ldr r2, _080C06E4 @ =gUnknown_03005D38 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - bl sub_80C06E8 - pop {r0} - bx r0 - .align 2, 0 -_080C06E0: .4byte gUnknown_03000722 -_080C06E4: .4byte gUnknown_03005D38 - thumb_func_end sub_80C06BC - - thumb_func_start sub_80C06E8 -sub_80C06E8: @ 80C06E8 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - ldrb r3, [r5] - adds r0, r3, 0 - cmp r0, 0 - bne _080C06FE -_080C06FA: - movs r0, 0 - b _080C072A -_080C06FE: - movs r1, 0 - adds r2, r3, 0 - adds r3, r0, 0 -_080C0704: - lsls r0, r1, 2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r3 - beq _080C06FA - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080C0704 - lsls r0, r6, 24 - asrs r0, 22 - adds r0, r4 - strb r2, [r0] - movs r1, 0x1 - strb r1, [r0, 0x1] - ldrh r1, [r5, 0x2] - strh r1, [r0, 0x2] - movs r0, 0x1 -_080C072A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C06E8 - - thumb_func_start sub_80C0730 -sub_80C0730: @ 80C0730 - push {lr} - lsls r1, 24 - lsrs r2, r1, 24 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080C0746 - lsls r0, r2, 24 - asrs r0, 24 - b _080C074A -_080C0746: - movs r0, 0x1 - negs r0, r0 -_080C074A: - pop {r1} - bx r1 - thumb_func_end sub_80C0730 - - thumb_func_start sub_80C0750 -sub_80C0750: @ 80C0750 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080C0780 @ =gSaveBlock1 -_080C0756: - lsls r0, r4, 2 - adds r0, r5 - ldr r1, _080C0784 @ =0x00002abc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bls _080C076A - adds r0, r4, 0 - bl sub_80BEC10 -_080C076A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080C0756 - bl sub_80BEC40 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0780: .4byte gSaveBlock1 -_080C0784: .4byte 0x00002abc - thumb_func_end sub_80C0750 - - thumb_func_start sub_80C0788 -sub_80C0788: @ 80C0788 - push {r4,lr} - ldr r0, _080C07B8 @ =0x00000804 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C07B2 - movs r1, 0 - ldr r4, _080C07BC @ =gSaveBlock1 - ldr r3, _080C07C0 @ =0x00002abd - movs r2, 0 -_080C07A0: - lsls r0, r1, 2 - adds r0, r4 - adds r0, r3 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080C07A0 -_080C07B2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C07B8: .4byte 0x00000804 -_080C07BC: .4byte gSaveBlock1 -_080C07C0: .4byte 0x00002abd - thumb_func_end sub_80C0788 - .section .dotvshow thumb_func_start DoTVShowBravoTrainerPokemonProfile diff --git a/src/tv.c b/src/tv.c index 56ba9ed2e..148f3b404 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1637,6 +1637,59 @@ void DoTVShowPokemonTodayFailedCapture(void); void DoTVShowPokemonAngler(void); void DoTVShowTheWorldOfMasters(void); +bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2); + +void sub_80C06BC(int *arg0, int *arg1) { + struct UnknownSaveStruct2ABC *str0; + struct UnknownSaveStruct2ABC *str1; + str0 = (void *)arg0[0]; + str1 = (void *)arg1[0]; + str1 += gUnknown_03000722; + sub_80C06E8(str0, str1, gUnknown_03005D38.var0); +} + +bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2) { + u8 i; + if (arg1->val0 == 0) { + return FALSE; + } + for (i=0; i<16; i++) { + if (arg0[i].val0 == arg1->val0) { + return FALSE; + } + } + arg0[arg2].val0 = arg1->val0; + arg0[arg2].val1 = 1; + arg0[arg2].val2 = arg1->val2; + return TRUE; +} + +s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) { + if (arg0[arg1].val0 == 0) { + return -1; + } + return arg1; +} + +void sub_80C0750(void) { + u8 i; + for (i=0; i<16; i++) { + if (gSaveBlock1.unknown_2ABC[i].val0 > 3) { + sub_80BEC10(i); + } + } + sub_80BEC40(); +} + +void sub_80C0788(void) { + u8 i; + if (FlagGet(SYS_GAME_CLEAR) != 1) { + for (i=0; i<16; i++) { + gSaveBlock1.unknown_2ABC[i].val1 = 0; + } + } +} + void DoTVShow(void) { if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { -- cgit v1.2.3 From cf9c6ddc7a855fc9d5b4f6d5d56bfb809320507b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 22:27:34 -0400 Subject: sub_80BFE24 --- src/tv.c | 381 ++++++++++++++++++++++++++++++++------------------------------- 1 file changed, 194 insertions(+), 187 deletions(-) diff --git a/src/tv.c b/src/tv.c index 148f3b404..2d36aac47 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1424,202 +1424,209 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) extern u8 gUnknown_03000720; extern s8 gUnknown_03000722; -s8 sub_80C019C(struct SaveTVStruct *tvStruct); -extern u8 sub_80BFF68(struct SaveTVStruct *tv1, struct SaveTVStruct *tv2, u8 idx); +s8 sub_80C019C(TVShow tvShows[]); +extern u8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx); -#ifdef NONMATCHING +// #ifdef NONMATCHING void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) { - struct SaveTVStruct ** argslist[4] = {&arg0, &arg1, &arg2, &arg3}; - u8 i; - u8 j; + u8 i, j; + struct SaveTVStruct ** argslist[4]; + argslist[0] = &arg0; + argslist[1] = &arg1; + argslist[2] = &arg2; + argslist[3] = &arg3; gUnknown_03000720 = GetLinkPlayerCount(); - for (i=0; i < gUnknown_03000720; i++) { - while (gUnknown_03000720 > 0); - if (i == 0) - gUnknown_020387E4 = 0; - gUnknown_03000722 = sub_80C019C(*(argslist[i])); - if (gUnknown_03000722 == -1) { - gUnknown_020387E4++; - if (gUnknown_020387E4 == gUnknown_03000720) - return; - } else { - for (j=0; jshows); - if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(*(argslist[(i + 1) % gUnknown_03000720]), *(argslist[(i + 1)]), (i + 1) % gUnknown_03000720) == 1) { - break; + while (1) { + for (i=0; ishows); + if (gUnknown_03000722 == -1) { + gUnknown_020387E4++; + if (gUnknown_020387E4 == gUnknown_03000720) + return; + } else { + for (j=0; jshows); + if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(argslist[(i + j + 1) % gUnknown_03000720], argslist[i], (i + j + 1) % gUnknown_03000720) == 1) { + break; + } + } + if (j == gUnknown_03000720 - 1) { + sub_80BF55C(argslist[i][0]->shows, gUnknown_03000722); } } } } } -#else -__attribute__((naked)) -void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) -{ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x20\n\ - str r0, [sp, 0x10]\n\ - str r1, [sp, 0x14]\n\ - str r2, [sp, 0x18]\n\ - str r3, [sp, 0x1C]\n\ - add r0, sp, 0x10\n\ - str r0, [sp]\n\ - add r0, sp, 0x14\n\ - str r0, [sp, 0x4]\n\ - add r0, sp, 0x18\n\ - str r0, [sp, 0x8]\n\ - add r0, sp, 0x1C\n\ - str r0, [sp, 0xC]\n\ - bl GetLinkPlayerCount\n\ - ldr r1, _080BFEA0 @ =gUnknown_03000720\n\ - strb r0, [r1]\n\ -_080BFE50:\n\ - movs r6, 0\n\ - ldr r0, _080BFEA0 @ =gUnknown_03000720\n\ - ldrb r1, [r0]\n\ - cmp r6, r1\n\ - bcs _080BFE50\n\ - mov r10, r0\n\ -_080BFE5C:\n\ - cmp r6, 0\n\ - bne _080BFE64\n\ - ldr r2, _080BFEA4 @ =gUnknown_020387E4\n\ - strb r6, [r2]\n\ -_080BFE64:\n\ - lsls r4, r6, 2\n\ - mov r3, sp\n\ - adds r0, r3, r4\n\ - ldr r0, [r0]\n\ - ldr r0, [r0]\n\ - bl sub_80C019C\n\ - ldr r1, _080BFEA8 @ =gUnknown_03000722\n\ - strb r0, [r1]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - adds r7, r4, 0\n\ - cmp r0, r1\n\ - bne _080BFEAC\n\ - ldr r1, _080BFEA4 @ =gUnknown_020387E4\n\ - ldrb r0, [r1]\n\ - adds r0, 0x1\n\ - strb r0, [r1]\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r2, r10\n\ - ldrb r2, [r2]\n\ - cmp r0, r2\n\ - beq _080BFF58\n\ - adds r6, 0x1\n\ - mov r9, r6\n\ - b _080BFF3C\n\ - .align 2, 0\n\ -_080BFEA0: .4byte gUnknown_03000720\n\ -_080BFEA4: .4byte gUnknown_020387E4\n\ -_080BFEA8: .4byte gUnknown_03000722\n\ -_080BFEAC:\n\ - movs r5, 0\n\ - mov r3, r10\n\ - ldrb r0, [r3]\n\ - subs r0, 0x1\n\ - adds r2, r6, 0x1\n\ - mov r9, r2\n\ - cmp r5, r0\n\ - bge _080BFF22\n\ - ldr r3, _080BFF4C @ =gUnknown_03000720\n\ - mov r8, r3\n\ -_080BFEC0:\n\ - adds r0, r6, r5\n\ - adds r4, r0, 0x1\n\ - mov r0, r8\n\ - ldrb r1, [r0]\n\ - adds r0, r4, 0\n\ - bl __modsi3\n\ - lsls r0, 2\n\ - add r0, sp\n\ - ldr r0, [r0]\n\ - ldr r0, [r0]\n\ - bl sub_80BF74C\n\ - ldr r1, _080BFF50 @ =gUnknown_03005D38\n\ - strb r0, [r1]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - beq _080BFF12\n\ - mov r2, r8\n\ - ldrb r1, [r2]\n\ - adds r0, r4, 0\n\ - bl __modsi3\n\ - adds r2, r0, 0\n\ - lsls r0, r2, 2\n\ - add r0, sp\n\ - ldr r0, [r0]\n\ - mov r3, sp\n\ - adds r1, r3, r7\n\ - ldr r1, [r1]\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - bl sub_80BFF68\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080BFF22\n\ -_080BFF12:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - mov r1, r8\n\ - ldrb r0, [r1]\n\ - subs r0, 0x1\n\ - cmp r5, r0\n\ - blt _080BFEC0\n\ -_080BFF22:\n\ - mov r2, r10\n\ - ldrb r0, [r2]\n\ - subs r0, 0x1\n\ - cmp r5, r0\n\ - bne _080BFF3C\n\ - mov r3, sp\n\ - adds r0, r3, r7\n\ - ldr r0, [r0]\n\ - ldr r0, [r0]\n\ - ldr r1, _080BFF54 @ =gUnknown_03000722\n\ - ldrb r1, [r1]\n\ - bl sub_80BF55C\n\ -_080BFF3C:\n\ - mov r1, r9\n\ - lsls r0, r1, 24\n\ - lsrs r6, r0, 24\n\ - mov r2, r10\n\ - ldrb r2, [r2]\n\ - cmp r6, r2\n\ - bcc _080BFE5C\n\ - b _080BFE50\n\ - .align 2, 0\n\ -_080BFF4C: .4byte gUnknown_03000720\n\ -_080BFF50: .4byte gUnknown_03005D38\n\ -_080BFF54: .4byte gUnknown_03000722\n\ -_080BFF58:\n\ - add sp, 0x20\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\ -.syntax divided\n"); -} -#endif +// #else +// __attribute__((naked)) +// void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) +// { + // asm(".syntax unified\n\ + // push {r4-r7,lr}\n\ + // mov r7, r10\n\ + // mov r6, r9\n\ + // mov r5, r8\n\ + // push {r5-r7}\n\ + // sub sp, 0x20\n\ + // str r0, [sp, 0x10]\n\ + // str r1, [sp, 0x14]\n\ + // str r2, [sp, 0x18]\n\ + // str r3, [sp, 0x1C]\n\ + // add r0, sp, 0x10\n\ + // str r0, [sp]\n\ + // add r0, sp, 0x14\n\ + // str r0, [sp, 0x4]\n\ + // add r0, sp, 0x18\n\ + // str r0, [sp, 0x8]\n\ + // add r0, sp, 0x1C\n\ + // str r0, [sp, 0xC]\n\ + // bl GetLinkPlayerCount\n\ + // ldr r1, _080BFEA0 @ =gUnknown_03000720\n\ + // strb r0, [r1]\n\ +// _080BFE50:\n\ + // movs r6, 0\n\ + // ldr r0, _080BFEA0 @ =gUnknown_03000720\n\ + // ldrb r1, [r0]\n\ + // cmp r6, r1\n\ + // bcs _080BFE50\n\ + // mov r10, r0\n\ +// _080BFE5C:\n\ + // cmp r6, 0\n\ + // bne _080BFE64\n\ + // ldr r2, _080BFEA4 @ =gUnknown_020387E4\n\ + // strb r6, [r2]\n\ +// _080BFE64:\n\ + // lsls r4, r6, 2\n\ + // mov r3, sp\n\ + // adds r0, r3, r4\n\ + // ldr r0, [r0]\n\ + // ldr r0, [r0]\n\ + // bl sub_80C019C\n\ + // ldr r1, _080BFEA8 @ =gUnknown_03000722\n\ + // strb r0, [r1]\n\ + // lsls r0, 24\n\ + // asrs r0, 24\n\ + // movs r1, 0x1\n\ + // negs r1, r1\n\ + // adds r7, r4, 0\n\ + // cmp r0, r1\n\ + // bne _080BFEAC\n\ + // ldr r1, _080BFEA4 @ =gUnknown_020387E4\n\ + // ldrb r0, [r1]\n\ + // adds r0, 0x1\n\ + // strb r0, [r1]\n\ + // lsls r0, 24\n\ + // lsrs r0, 24\n\ + // mov r2, r10\n\ + // ldrb r2, [r2]\n\ + // cmp r0, r2\n\ + // beq _080BFF58\n\ + // adds r6, 0x1\n\ + // mov r9, r6\n\ + // b _080BFF3C\n\ + // .align 2, 0\n\ +// _080BFEA0: .4byte gUnknown_03000720\n\ +// _080BFEA4: .4byte gUnknown_020387E4\n\ +// _080BFEA8: .4byte gUnknown_03000722\n\ +// _080BFEAC:\n\ + // movs r5, 0\n\ + // mov r3, r10\n\ + // ldrb r0, [r3]\n\ + // subs r0, 0x1\n\ + // adds r2, r6, 0x1\n\ + // mov r9, r2\n\ + // cmp r5, r0\n\ + // bge _080BFF22\n\ + // ldr r3, _080BFF4C @ =gUnknown_03000720\n\ + // mov r8, r3\n\ +// _080BFEC0:\n\ + // adds r0, r6, r5\n\ + // adds r4, r0, 0x1\n\ + // mov r0, r8\n\ + // ldrb r1, [r0]\n\ + // adds r0, r4, 0\n\ + // bl __modsi3\n\ + // lsls r0, 2\n\ + // add r0, sp\n\ + // ldr r0, [r0]\n\ + // ldr r0, [r0]\n\ + // bl sub_80BF74C\n\ + // ldr r1, _080BFF50 @ =gUnknown_03005D38\n\ + // strb r0, [r1]\n\ + // lsls r0, 24\n\ + // asrs r0, 24\n\ + // movs r1, 0x1\n\ + // negs r1, r1\n\ + // cmp r0, r1\n\ + // beq _080BFF12\n\ + // mov r2, r8\n\ + // ldrb r1, [r2]\n\ + // adds r0, r4, 0\n\ + // bl __modsi3\n\ + // adds r2, r0, 0\n\ + // lsls r0, r2, 2\n\ + // add r0, sp\n\ + // ldr r0, [r0]\n\ + // mov r3, sp\n\ + // adds r1, r3, r7\n\ + // ldr r1, [r1]\n\ + // lsls r2, 24\n\ + // lsrs r2, 24\n\ + // bl sub_80BFF68\n\ + // lsls r0, 24\n\ + // lsrs r0, 24\n\ + // cmp r0, 0x1\n\ + // beq _080BFF22\n\ +// _080BFF12:\n\ + // adds r0, r5, 0x1\n\ + // lsls r0, 24\n\ + // lsrs r5, r0, 24\n\ + // mov r1, r8\n\ + // ldrb r0, [r1]\n\ + // subs r0, 0x1\n\ + // cmp r5, r0\n\ + // blt _080BFEC0\n\ +// _080BFF22:\n\ + // mov r2, r10\n\ + // ldrb r0, [r2]\n\ + // subs r0, 0x1\n\ + // cmp r5, r0\n\ + // bne _080BFF3C\n\ + // mov r3, sp\n\ + // adds r0, r3, r7\n\ + // ldr r0, [r0]\n\ + // ldr r0, [r0]\n\ + // ldr r1, _080BFF54 @ =gUnknown_03000722\n\ + // ldrb r1, [r1]\n\ + // bl sub_80BF55C\n\ +// _080BFF3C:\n\ + // mov r1, r9\n\ + // lsls r0, r1, 24\n\ + // lsrs r6, r0, 24\n\ + // mov r2, r10\n\ + // ldrb r2, [r2]\n\ + // cmp r6, r2\n\ + // bcc _080BFE5C\n\ + // b _080BFE50\n\ + // .align 2, 0\n\ +// _080BFF4C: .4byte gUnknown_03000720\n\ +// _080BFF50: .4byte gUnknown_03005D38\n\ +// _080BFF54: .4byte gUnknown_03000722\n\ +// _080BFF58:\n\ + // add sp, 0x20\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\ +// .syntax divided\n"); +// } +// #endif asm(".section .dotvshow\n"); -- cgit v1.2.3 From df3197f80818e7953c0572c6f23b2dd1ba7baf6b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 19 May 2017 23:32:24 -0400 Subject: sub_80BFF68 mostly matching --- asm/tv.s | 118 ----------------------- src/tv.c | 323 ++++++++++++++++++++++++++++++--------------------------------- 2 files changed, 154 insertions(+), 287 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 460d9a371..ae9d9f3e5 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1614,124 +1614,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80BFF68 -sub_80BFF68: @ 80BFF68 - push {r4-r7,lr} - sub sp, 0x4 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r4, [r0] - ldr r6, [r1] - movs r5, 0 - ldr r2, _080BFFA4 @ =gUnknown_03000722 - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0] - str r2, [sp] - bl sub_80BFB54 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - ldr r2, [sp] - cmp r0, 0x3 - beq _080BFFD8 - cmp r0, 0x3 - bgt _080BFFA8 - cmp r0, 0x2 - beq _080BFFAE - b _080C0026 - .align 2, 0 -_080BFFA4: .4byte gUnknown_03000722 -_080BFFA8: - cmp r1, 0x4 - beq _080C0000 - b _080C0026 -_080BFFAE: - ldr r0, _080BFFD4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80C004C - b _080C0022 - .align 2, 0 -_080BFFD4: .4byte gUnknown_03005D38 -_080BFFD8: - ldr r0, _080BFFFC @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80C00B4 - b _080C0022 - .align 2, 0 -_080BFFFC: .4byte gUnknown_03005D38 -_080C0000: - ldr r0, _080C0030 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80C0134 -_080C0022: - lsls r0, 24 - lsrs r5, r0, 24 -_080C0026: - cmp r5, 0x1 - beq _080C0034 - movs r0, 0 - b _080C0040 - .align 2, 0 -_080C0030: .4byte gUnknown_03005D38 -_080C0034: - ldr r0, _080C0048 @ =gUnknown_03000722 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80BF55C - movs r0, 0x1 -_080C0040: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080C0048: .4byte gUnknown_03000722 - thumb_func_end sub_80BFF68 - thumb_func_start sub_80C004C sub_80C004C: @ 80C004C push {r4-r6,lr} diff --git a/src/tv.c b/src/tv.c index 2d36aac47..6e6ffdf29 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1425,9 +1425,11 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) extern u8 gUnknown_03000720; extern s8 gUnknown_03000722; s8 sub_80C019C(TVShow tvShows[]); -extern u8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx); +bool8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx); +u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); +u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); +u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); -// #ifdef NONMATCHING void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) { u8 i, j; @@ -1460,173 +1462,156 @@ void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct Sa } } } -// #else -// __attribute__((naked)) -// void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) -// { - // asm(".syntax unified\n\ - // push {r4-r7,lr}\n\ - // mov r7, r10\n\ - // mov r6, r9\n\ - // mov r5, r8\n\ - // push {r5-r7}\n\ - // sub sp, 0x20\n\ - // str r0, [sp, 0x10]\n\ - // str r1, [sp, 0x14]\n\ - // str r2, [sp, 0x18]\n\ - // str r3, [sp, 0x1C]\n\ - // add r0, sp, 0x10\n\ - // str r0, [sp]\n\ - // add r0, sp, 0x14\n\ - // str r0, [sp, 0x4]\n\ - // add r0, sp, 0x18\n\ - // str r0, [sp, 0x8]\n\ - // add r0, sp, 0x1C\n\ - // str r0, [sp, 0xC]\n\ - // bl GetLinkPlayerCount\n\ - // ldr r1, _080BFEA0 @ =gUnknown_03000720\n\ - // strb r0, [r1]\n\ -// _080BFE50:\n\ - // movs r6, 0\n\ - // ldr r0, _080BFEA0 @ =gUnknown_03000720\n\ - // ldrb r1, [r0]\n\ - // cmp r6, r1\n\ - // bcs _080BFE50\n\ - // mov r10, r0\n\ -// _080BFE5C:\n\ - // cmp r6, 0\n\ - // bne _080BFE64\n\ - // ldr r2, _080BFEA4 @ =gUnknown_020387E4\n\ - // strb r6, [r2]\n\ -// _080BFE64:\n\ - // lsls r4, r6, 2\n\ - // mov r3, sp\n\ - // adds r0, r3, r4\n\ - // ldr r0, [r0]\n\ - // ldr r0, [r0]\n\ - // bl sub_80C019C\n\ - // ldr r1, _080BFEA8 @ =gUnknown_03000722\n\ - // strb r0, [r1]\n\ - // lsls r0, 24\n\ - // asrs r0, 24\n\ - // movs r1, 0x1\n\ - // negs r1, r1\n\ - // adds r7, r4, 0\n\ - // cmp r0, r1\n\ - // bne _080BFEAC\n\ - // ldr r1, _080BFEA4 @ =gUnknown_020387E4\n\ - // ldrb r0, [r1]\n\ - // adds r0, 0x1\n\ - // strb r0, [r1]\n\ - // lsls r0, 24\n\ - // lsrs r0, 24\n\ - // mov r2, r10\n\ - // ldrb r2, [r2]\n\ - // cmp r0, r2\n\ - // beq _080BFF58\n\ - // adds r6, 0x1\n\ - // mov r9, r6\n\ - // b _080BFF3C\n\ - // .align 2, 0\n\ -// _080BFEA0: .4byte gUnknown_03000720\n\ -// _080BFEA4: .4byte gUnknown_020387E4\n\ -// _080BFEA8: .4byte gUnknown_03000722\n\ -// _080BFEAC:\n\ - // movs r5, 0\n\ - // mov r3, r10\n\ - // ldrb r0, [r3]\n\ - // subs r0, 0x1\n\ - // adds r2, r6, 0x1\n\ - // mov r9, r2\n\ - // cmp r5, r0\n\ - // bge _080BFF22\n\ - // ldr r3, _080BFF4C @ =gUnknown_03000720\n\ - // mov r8, r3\n\ -// _080BFEC0:\n\ - // adds r0, r6, r5\n\ - // adds r4, r0, 0x1\n\ - // mov r0, r8\n\ - // ldrb r1, [r0]\n\ - // adds r0, r4, 0\n\ - // bl __modsi3\n\ - // lsls r0, 2\n\ - // add r0, sp\n\ - // ldr r0, [r0]\n\ - // ldr r0, [r0]\n\ - // bl sub_80BF74C\n\ - // ldr r1, _080BFF50 @ =gUnknown_03005D38\n\ - // strb r0, [r1]\n\ - // lsls r0, 24\n\ - // asrs r0, 24\n\ - // movs r1, 0x1\n\ - // negs r1, r1\n\ - // cmp r0, r1\n\ - // beq _080BFF12\n\ - // mov r2, r8\n\ - // ldrb r1, [r2]\n\ - // adds r0, r4, 0\n\ - // bl __modsi3\n\ - // adds r2, r0, 0\n\ - // lsls r0, r2, 2\n\ - // add r0, sp\n\ - // ldr r0, [r0]\n\ - // mov r3, sp\n\ - // adds r1, r3, r7\n\ - // ldr r1, [r1]\n\ - // lsls r2, 24\n\ - // lsrs r2, 24\n\ - // bl sub_80BFF68\n\ - // lsls r0, 24\n\ - // lsrs r0, 24\n\ - // cmp r0, 0x1\n\ - // beq _080BFF22\n\ -// _080BFF12:\n\ - // adds r0, r5, 0x1\n\ - // lsls r0, 24\n\ - // lsrs r5, r0, 24\n\ - // mov r1, r8\n\ - // ldrb r0, [r1]\n\ - // subs r0, 0x1\n\ - // cmp r5, r0\n\ - // blt _080BFEC0\n\ -// _080BFF22:\n\ - // mov r2, r10\n\ - // ldrb r0, [r2]\n\ - // subs r0, 0x1\n\ - // cmp r5, r0\n\ - // bne _080BFF3C\n\ - // mov r3, sp\n\ - // adds r0, r3, r7\n\ - // ldr r0, [r0]\n\ - // ldr r0, [r0]\n\ - // ldr r1, _080BFF54 @ =gUnknown_03000722\n\ - // ldrb r1, [r1]\n\ - // bl sub_80BF55C\n\ -// _080BFF3C:\n\ - // mov r1, r9\n\ - // lsls r0, r1, 24\n\ - // lsrs r6, r0, 24\n\ - // mov r2, r10\n\ - // ldrb r2, [r2]\n\ - // cmp r6, r2\n\ - // bcc _080BFE5C\n\ - // b _080BFE50\n\ - // .align 2, 0\n\ -// _080BFF4C: .4byte gUnknown_03000720\n\ -// _080BFF50: .4byte gUnknown_03005D38\n\ -// _080BFF54: .4byte gUnknown_03000722\n\ -// _080BFF58:\n\ - // add sp, 0x20\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\ -// .syntax divided\n"); -// } -// #endif + +#ifdef NONMATCHING +bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { + u8 value; + u8 switchval; + struct SaveTVStruct *tv1; + struct SaveTVStruct *tv2; + tv1 = *arg1; + tv2 = *arg2; + value = FALSE; + switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00); + switch (switchval) { + case 2: + value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 3: + value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 4: + value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + } + if (value == TRUE) { + sub_80BF55C(tv2->shows, gUnknown_03000722); + return TRUE; + } else { + return FALSE; + } +} +#else +__attribute__((naked)) +bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x4\n\ + lsls r2, 24\n\ + lsrs r7, r2, 24\n\ + ldr r4, [r0]\n\ + ldr r6, [r1]\n\ + movs r5, 0\n\ + ldr r2, _080BFFA4 @ =gUnknown_03000722\n\ + movs r1, 0\n\ + ldrsb r1, [r2, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6 @ this is the only mimsmatch\n\ + ldrb r0, [r0]\n\ + str r2, [sp]\n\ + bl sub_80BFB54\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r1, r0, 0\n\ + ldr r2, [sp]\n\ + cmp r0, 0x3\n\ + beq _080BFFD8\n\ + cmp r0, 0x3\n\ + bgt _080BFFA8\n\ + cmp r0, 0x2\n\ + beq _080BFFAE\n\ + b _080C0026\n\ + .align 2, 0\n\ +_080BFFA4: .4byte gUnknown_03000722\n\ +_080BFFA8:\n\ + cmp r1, 0x4\n\ + beq _080C0000\n\ + b _080C0026\n\ +_080BFFAE:\n\ + ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C004C\n\ + b _080C0022\n\ + .align 2, 0\n\ +_080BFFD4: .4byte gUnknown_03005D38\n\ +_080BFFD8:\n\ + ldr r0, _080BFFFC @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C00B4\n\ + b _080C0022\n\ + .align 2, 0\n\ +_080BFFFC: .4byte gUnknown_03005D38\n\ +_080C0000:\n\ + ldr r0, _080C0030 @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C0134\n\ +_080C0022:\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ +_080C0026:\n\ + cmp r5, 0x1\n\ + beq _080C0034\n\ + movs r0, 0\n\ + b _080C0040\n\ + .align 2, 0\n\ +_080C0030: .4byte gUnknown_03005D38\n\ +_080C0034:\n\ + ldr r0, _080C0048 @ =gUnknown_03000722\n\ + ldrb r1, [r0]\n\ + adds r0, r6, 0\n\ + bl sub_80BF55C\n\ + movs r0, 0x1\n\ +_080C0040:\n\ + add sp, 0x4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080C0048: .4byte gUnknown_03000722\n\ +.syntax divided\n"); +} +#endif asm(".section .dotvshow\n"); -- cgit v1.2.3 From 39b15cb589dde612854ba1e0ea1365daccbfc7a2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 11:19:34 -0400 Subject: sub_80C004C --- asm/tv.s | 57 -------------------------------------------------------- include/global.h | 4 +++- src/tv.c | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 58 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index ae9d9f3e5..da22453ac 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,63 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - - thumb_func_start sub_80C004C -sub_80C004C: @ 80C004C - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl GetLinkPlayerTrainerId - adds r5, r0, 0 - movs r2, 0xFF - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r0, r1 - bne _080C007C - lsrs r0, r5, 8 - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080C007C - movs r0, 0 - b _080C00AC -_080C007C: - adds r1, r4, 0 - adds r1, 0x20 - ldrb r0, [r1] - adds r2, r4, 0 - adds r2, 0x22 - strb r0, [r2] - adds r3, r4, 0 - adds r3, 0x21 - ldrb r0, [r3] - adds r2, 0x1 - strb r0, [r2] - strb r5, [r1] - lsrs r0, r5, 8 - strb r0, [r3] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] -_080C00AC: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C004C - thumb_func_start sub_80C00B4 sub_80C00B4: @ 80C00B4 push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index 3454ab0b8..a294b3e01 100644 --- a/include/global.h +++ b/include/global.h @@ -194,7 +194,9 @@ struct EasyChatPair struct TVShowCommon { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 pad02[32]; + /*0x02*/ u8 pad02[30]; + /*0x20*/ u8 srcTrainerIdLo; + /*0x21*/ u8 srcTrainerIdHi; /*0x22*/ u8 trainerIdLo; /*0x23*/ u8 trainerIdHi; }; diff --git a/src/tv.c b/src/tv.c index 6e6ffdf29..994db4dfc 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1613,6 +1613,20 @@ _080C0048: .4byte gUnknown_03000722\n\ } #endif +u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) { + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + return FALSE; + } + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + return TRUE; +} + asm(".section .dotvshow\n"); void DoTVShowPokemonFanClubLetter(void); -- cgit v1.2.3 From dc229fe94ad23c057aae619ec429a073a00a8508 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 11:31:15 -0400 Subject: sub_80C00B4 --- asm/tv.s | 70 -------------------------------------------------------- include/global.h | 4 +++- src/tv.c | 17 ++++++++++++++ 3 files changed, 20 insertions(+), 71 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index da22453ac..43e71286a 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,76 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80C00B4 -sub_80C00B4: @ 80C00B4 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl GetLinkPlayerTrainerId - adds r2, r0, 0 - movs r3, 0xFF - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x20 - ldrb r1, [r1] - cmp r0, r1 - bne _080C00E0 - lsrs r0, r2, 8 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r0, r1 - beq _080C0100 -_080C00E0: - movs r3, 0xFF - adds r0, r2, 0 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x22 - lsrs r5, r2, 8 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0104 - adds r0, r5, 0 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0104 -_080C0100: - movs r0, 0 - b _080C012C -_080C0104: - ldrb r1, [r4, 0x1E] - adds r0, r4, 0 - adds r0, 0x20 - strb r1, [r0] - ldrb r0, [r4, 0x1F] - adds r1, r4, 0 - adds r1, 0x21 - strb r0, [r1] - strb r2, [r4, 0x1E] - strb r5, [r4, 0x1F] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] -_080C012C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C00B4 - thumb_func_start sub_80C0134 sub_80C0134: @ 80C0134 push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index a294b3e01..7544ecdb2 100644 --- a/include/global.h +++ b/include/global.h @@ -194,7 +194,9 @@ struct EasyChatPair struct TVShowCommon { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 pad02[30]; + /*0x02*/ u8 pad02[28]; + /*0x20*/ u8 srcTrainerId2Lo; + /*0x21*/ u8 srcTrainerId2Hi; /*0x20*/ u8 srcTrainerIdLo; /*0x21*/ u8 srcTrainerIdHi; /*0x22*/ u8 trainerIdLo; diff --git a/src/tv.c b/src/tv.c index 994db4dfc..053dbfb57 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1627,6 +1627,23 @@ u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) { return TRUE; } +u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) { + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) { + return FALSE; + } + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + return FALSE; + } + tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo; + tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi; + tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF; + tv2->common.srcTrainerId2Hi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + return TRUE; +} + asm(".section .dotvshow\n"); void DoTVShowPokemonFanClubLetter(void); -- cgit v1.2.3 From 37e3c21eb38449690f995b7e5258bf00ce9a77c2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 11:36:08 -0400 Subject: sub_80C0134 --- asm/tv.s | 57 -------------------------------------------------------- include/global.h | 9 ++++++--- src/tv.c | 15 +++++++++++++++ 3 files changed, 21 insertions(+), 60 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 43e71286a..b6f05fb4d 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,63 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80C0134 -sub_80C0134: @ 80C0134 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl GetLinkPlayerTrainerId - adds r5, r0, 0 - movs r2, 0xFF - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0164 - lsrs r0, r5, 8 - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0164 - movs r0, 0 - b _080C0196 -_080C0164: - adds r1, r4, 0 - adds r1, 0x20 - ldrb r0, [r1] - adds r2, r4, 0 - adds r2, 0x22 - strb r0, [r2] - adds r3, r4, 0 - adds r3, 0x21 - ldrb r0, [r3] - adds r2, 0x1 - strb r0, [r2] - strb r5, [r1] - lsrs r0, r5, 8 - strb r0, [r3] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] - strh r0, [r6, 0x16] -_080C0196: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C0134 - thumb_func_start sub_80C019C sub_80C019C: @ 80C019C push {lr} diff --git a/include/global.h b/include/global.h index 7544ecdb2..2340e3b84 100644 --- a/include/global.h +++ b/include/global.h @@ -194,9 +194,12 @@ struct EasyChatPair struct TVShowCommon { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 pad02[28]; - /*0x20*/ u8 srcTrainerId2Lo; - /*0x21*/ u8 srcTrainerId2Hi; + /*0x02*/ u8 pad02[20]; + /*0x16*/ u16 var16[3]; + /*0x1C*/ u8 srcTrainerId3Lo; + /*0x1D*/ u8 srcTrainerId3Hi; + /*0x1E*/ u8 srcTrainerId2Lo; + /*0x1F*/ u8 srcTrainerId2Hi; /*0x20*/ u8 srcTrainerIdLo; /*0x21*/ u8 srcTrainerIdHi; /*0x22*/ u8 trainerIdLo; diff --git a/src/tv.c b/src/tv.c index 053dbfb57..2784b0cd1 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1644,6 +1644,21 @@ u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) { return TRUE; } +u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) { + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + return FALSE; + } + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + tv1->common.var16[0] = 1; + return TRUE; +} + asm(".section .dotvshow\n"); void DoTVShowPokemonFanClubLetter(void); -- cgit v1.2.3 From 4cdeb15831cde9e02b8e3cdcf8496316d666f26f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 11:41:21 -0400 Subject: sub_80C019C --- asm/tv.s | 35 ----------------------------------- src/tv.c | 10 ++++++++++ 2 files changed, 10 insertions(+), 35 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index b6f05fb4d..49842e24c 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1613,41 +1613,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80C019C -sub_80C019C: @ 80C019C - push {lr} - adds r3, r0, 0 - movs r2, 0 -_080C01A2: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r3 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _080C01C2 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _080C01C2 - lsls r0, r2, 24 - asrs r0, 24 - b _080C01D0 -_080C01C2: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080C01A2 - movs r0, 0x1 - negs r0, r0 -_080C01D0: - pop {r1} - bx r1 - thumb_func_end sub_80C019C - thumb_func_start sub_80C01D4 sub_80C01D4: @ 80C01D4 push {r4-r6,lr} diff --git a/src/tv.c b/src/tv.c index 2784b0cd1..3777bd33a 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1659,6 +1659,16 @@ u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) { return TRUE; } +s8 sub_80C019C(TVShow tvShows[]) { + u8 i; + for (i=0; i<24; i++) { + if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) { + return i; + } + } + return -1; +} + asm(".section .dotvshow\n"); void DoTVShowPokemonFanClubLetter(void); -- cgit v1.2.3 From bc75a7d97920cf51627e0803285d096d22c949d9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 15:22:22 -0400 Subject: sub_80C01D4 (nonmatching but presumed functionally correct) --- asm/tv.s | 257 -------------------------------------------------- include/global.h | 37 +++++--- include/pokedex.h | 2 +- src/tv.c | 276 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 300 insertions(+), 272 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 49842e24c..444eb9110 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1612,263 +1612,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - - thumb_func_start sub_80C01D4 -sub_80C01D4: @ 80C01D4 - push {r4-r6,lr} - movs r6, 0 -_080C01D8: - ldr r0, _080C01F8 @ =gSaveBlock1 - lsls r2, r6, 3 - adds r1, r2, r6 - lsls r1, 2 - adds r1, r0 - ldr r0, _080C01FC @ =0x00002738 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x29 - bls _080C01EE - b _080C038C -_080C01EE: - lsls r0, 2 - ldr r1, _080C0200 @ =_080C0204 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C01F8: .4byte gSaveBlock1 -_080C01FC: .4byte 0x00002738 -_080C0200: .4byte _080C0204 - .align 2, 0 -_080C0204: - .4byte _080C0394 - .4byte _080C02AC - .4byte _080C0394 - .4byte _080C02BC - .4byte _080C02CC - .4byte _080C02DC - .4byte _080C02F8 - .4byte _080C0308 - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C0324 - .4byte _080C0394 - .4byte _080C0334 - .4byte _080C0350 - .4byte _080C0368 - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C0394 -_080C02AC: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080C035A - .align 2, 0 -_080C02B8: .4byte gSaveBlock1 + 0x2738 -_080C02BC: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080C035A - .align 2, 0 -_080C02C8: .4byte gSaveBlock1 + 0x2738 -_080C02CC: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x6] - b _080C035A - .align 2, 0 -_080C02D8: .4byte gSaveBlock1 + 0x2738 -_080C02DC: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0x2] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0x1C] - b _080C037E - .align 2, 0 -_080C02F4: .4byte gSaveBlock1 + 0x2738 -_080C02F8: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080C035A - .align 2, 0 -_080C0304: .4byte gSaveBlock1 + 0x2738 -_080C0308: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0xA] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0x14] - b _080C037E - .align 2, 0 -_080C0320: .4byte gSaveBlock1 + 0x2738 -_080C0324: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x10] - b _080C035A - .align 2, 0 -_080C0330: .4byte gSaveBlock1 + 0x2738 -_080C0334: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C034C @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0xC] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0xE] - b _080C037E - .align 2, 0 -_080C034C: .4byte gSaveBlock1 + 0x2738 -_080C0350: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x4] -_080C035A: - lsls r1, r6, 24 - lsrs r1, 24 - bl sub_80C03C8 - b _080C0394 - .align 2, 0 -_080C0364: .4byte gSaveBlock1 + 0x2738 -_080C0368: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0x8] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0x4] -_080C037E: - adds r1, r5, 0 - bl sub_80C03C8 - b _080C0394 - .align 2, 0 -_080C0388: .4byte gSaveBlock1 + 0x2738 -_080C038C: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_80C03A8 -_080C0394: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x17 - bhi _080C03A0 - b _080C01D8 -_080C03A0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80C01D4 - - thumb_func_start sub_80C03A8 -sub_80C03A8: @ 80C03A8 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C03C0 @ =gSaveBlock1 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r0, _080C03C4 @ =0x00002739 - adds r1, r0 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_080C03C0: .4byte gSaveBlock1 -_080C03C4: .4byte 0x00002739 - thumb_func_end sub_80C03A8 - - thumb_func_start sub_80C03C8 -sub_80C03C8: @ 80C03C8 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl sub_8090D90 - lsls r0, 24 - asrs r2, r0, 24 - cmp r2, 0 - bne _080C03F8 - ldr r1, _080C0400 @ =gSaveBlock1 - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, _080C0404 @ =0x00002739 - adds r0, r1 - strb r2, [r0] -_080C03F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C0400: .4byte gSaveBlock1 -_080C0404: .4byte 0x00002739 - thumb_func_end sub_80C03C8 - thumb_func_start sub_80C0408 sub_80C0408: @ 80C0408 push {r4-r6,lr} diff --git a/include/global.h b/include/global.h index 2340e3b84..3dcab7c95 100644 --- a/include/global.h +++ b/include/global.h @@ -323,20 +323,30 @@ struct TVShowWorldOfMasters { }; struct TVShowSmartShopper { - u8 var00; - u8 var01; - u8 boughtOrSoldFlag; - u8 pad03[3]; - u16 itemIds[3]; - u16 itemAmounts[3]; + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 boughtOrSoldFlag; + /*0x03*/ u8 pad03[3]; + /*0x06*/ u16 itemIds[3]; + /*0x0C*/ u16 itemAmounts[3]; +}; + +struct TVShowBravoTrainerPokemonProfiles { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u16 species; + /*0x04*/ u8 pad04[15]; + /*0x13*/ u8 contestCategory:3; + /*0x13*/ u8 var13_3:5; }; -struct TVShowContestWinner { - u8 var00; - u8 var01; - u8 pad02[17]; - u8 contestCategory:3; - u8 var13_3:5; +struct TVShowBravoTrainerBattleTowerSpotlight { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 pad02[8]; + /*0x0A*/ u16 var0a; + /*0x0C*/ u8 pad0c[8]; + /*0x14*/ u16 var14; }; typedef union TVShow { @@ -349,7 +359,8 @@ typedef union TVShow { struct TVShowPokemonAngler pokemonAngler; struct TVShowWorldOfMasters worldOfMasters; struct TVShowSmartShopper smartshopperShow; - struct TVShowContestWinner contestShow; + struct TVShowBravoTrainerPokemonProfiles bravoTrainer; + struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower; struct TVShowPokemonToday pokemonToday; struct TVShowPokemonTodayFailed pokemonTodayFailed; } TVShow; diff --git a/include/pokedex.h b/include/pokedex.h index 5dd44cd2f..61597981b 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -135,7 +135,7 @@ void sub_8090A3C(u8); void sub_8090C68(void); u8 *GetPokemonCategory(u16); -bool8 sub_8090D90(u16, u8); +s8 sub_8090D90(u16, u8); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); bool8 sub_8090FC0(void); diff --git a/src/tv.c b/src/tv.c index 3777bd33a..d62d56cc8 100644 --- a/src/tv.c +++ b/src/tv.c @@ -706,7 +706,7 @@ void SetContestCategoryStringVarForInterview(void) { TVShow *tvShow; tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; - CopyContestCategoryToStringVar(1, tvShow->contestShow.contestCategory); + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); } void sub_80BF088(u8 arg0, s32 price) @@ -1669,6 +1669,280 @@ s8 sub_80C019C(TVShow tvShows[]) { return -1; } +void sub_80C03A8(u8 showidx); +void sub_80C03C8(u16 species, u8 showidx); + +#ifdef NONMATCHING +void sub_80C01D4(void) { + u8 i; + for (i=0; i<24; i++) { + switch (gSaveBlock1.tvShows.shows[i].common.var00) { + case 0: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); + break; + case TVSHOW_RECENT_HAPPENINGS: + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); + break; + case TVSHOW_SMART_SHOPPER: + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); + break; + case TVSHOW_MASS_OUTBREAK: + break; + default: + sub_80C03A8(i); + } + } +} +#else +__attribute__((naked)) +void sub_80C01D4(void) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + movs r6, 0\n\ +_080C01D8:\n\ + ldr r0, _080C01F8 @ =gSaveBlock1\n\ + lsls r2, r6, 3\n\ + adds r1, r2, r6\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldr r0, _080C01FC @ =0x00002738\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x29\n\ + bls _080C01EE\n\ + b _default\n\ +_080C01EE:\n\ + lsls r0, 2\n\ + ldr r1, _080C0200 @ =_080C0204\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080C01F8: .4byte gSaveBlock1\n\ +_080C01FC: .4byte 0x00002738\n\ +_080C0200: .4byte _080C0204\n\ + .align 2, 0\n\ +_080C0204:\n\ + .4byte _break\n\ + .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ + .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ + .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ + .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ + .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ + .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ + .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ + .4byte _break @ TVSHOW_SMART_SHOPPER\n\ + .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ + .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ + .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ +_fanclubLetter:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02B8: .4byte gSaveBlock1 + 0x2738\n\ +_fanclubOpinions:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02C8: .4byte gSaveBlock1 + 0x2738\n\ +_showtype4:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x6]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02D8: .4byte gSaveBlock1 + 0x2738\n\ +_nameRater:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x2]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x1C]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02F4: .4byte gSaveBlock1 + 0x2738\n\ +_bravoTrainerContest:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0304: .4byte gSaveBlock1 + 0x2738\n\ +_bravoTrainerTower:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xA]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x14]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0320: .4byte gSaveBlock1 + 0x2738\n\ +_pokemonTodayS:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x10]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0330: .4byte gSaveBlock1 + 0x2738\n\ +_pokemonTodayF:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xC]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0xE]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C034C: .4byte gSaveBlock1 + 0x2738\n\ +_fishing:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x4]\n\ +_checkSpecies1:\n\ + lsls r1, r6, 24\n\ + lsrs r1, 24\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ +_080C0364: .4byte gSaveBlock1 + 0x2738\n\ +_worldOfMasters:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x8]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x4]\n\ +_checkSpecies2:\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ +_080C0388: .4byte gSaveBlock1 + 0x2738\n\ +_default:\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + bl sub_80C03A8\n\ +_break:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x17\n\ + bhi _080C03A0\n\ + b _080C01D8\n\ +_080C03A0:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ +.syntax divided\n"); +} +#endif + +void sub_80C03A8(u8 showidx) { + gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; +} + +void sub_80C03C8(u16 species, u8 showidx) { + if (sub_8090D90(SpeciesToNationalPokedexNum(species), 0) == 0) { + gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + } +} + + asm(".section .dotvshow\n"); void DoTVShowPokemonFanClubLetter(void); -- cgit v1.2.3 From 116007e1ff5a1016fa1a598bb97d0b3d48a10fe5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 15:37:01 -0400 Subject: nonmatching sub_80C0408 --- asm/tv.s | 45 --------------------------------------------- src/tv.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 45 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 444eb9110..974abdcee 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1610,52 +1610,7 @@ _080BE470: .4byte gMapHeader _080BE474: .4byte gSaveBlock2 thumb_func_end sub_80BE3BC - .section .text_80BE8EC - thumb_func_start sub_80C0408 -sub_80C0408: @ 80C0408 - push {r4-r6,lr} - ldr r0, _080C044C @ =0x00000804 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C0444 - movs r2, 0 - ldr r6, _080C0450 @ =gSaveBlock1 - ldr r4, _080C0454 @ =0x00002739 - movs r3, 0 - ldr r5, _080C0458 @ =0x00002738 -_080C0422: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r6 - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x7 - beq _080C0436 - cmp r0, 0x29 - bne _080C043A -_080C0436: - adds r0, r1, r4 - strb r3, [r0] -_080C043A: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x17 - bls _080C0422 -_080C0444: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C044C: .4byte 0x00000804 -_080C0450: .4byte gSaveBlock1 -_080C0454: .4byte 0x00002739 -_080C0458: .4byte 0x00002738 - thumb_func_end sub_80C0408 thumb_func_start sub_80C045C sub_80C045C: @ 80C045C diff --git a/src/tv.c b/src/tv.c index d62d56cc8..f7cc4b4c3 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1942,6 +1942,65 @@ void sub_80C03C8(u16 species, u8 showidx) { } } +#ifdef NONMATCHING +void sub_80C0408(void) { + u16 i; + if (FlagGet(SYS_GAME_CLEAR) != 1) { + for (i=0; i<24; i++) { + if (gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { + gSaveBlock1.tvShows.shows[i].common.var01 = 0; + } + } + } +} +#else +__attribute__((naked)) +void sub_80C0408(void) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r0, _080C044C @ =0x00000804\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080C0444\n\ + movs r2, 0\n\ + ldr r6, _080C0450 @ =gSaveBlock1\n\ + ldr r4, _080C0454 @ =0x00002739\n\ + movs r3, 0\n\ + ldr r5, _080C0458 @ =0x00002738\n\ +_080C0422:\n\ + lsls r0, r2, 3\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r1, r0, r6\n\ + adds r0, r1, r5\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x7\n\ + beq _080C0436\n\ + cmp r0, 0x29\n\ + bne _080C043A\n\ +_080C0436:\n\ + adds r0, r1, r4\n\ + strb r3, [r0]\n\ +_080C043A:\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x17\n\ + bls _080C0422\n\ +_080C0444:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080C044C: .4byte 0x00000804\n\ +_080C0450: .4byte gSaveBlock1\n\ +_080C0454: .4byte 0x00002739\n\ +_080C0458: .4byte 0x00002738\n\ +.syntax divided\n"); +} +#endif asm(".section .dotvshow\n"); -- cgit v1.2.3 From a1c286afde26bf80aba0705ec1ca8841c2c6e2e5 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 15:39:03 -0400 Subject: sub_80C045C --- asm/tv.s | 37 ------------------------------------- src/tv.c | 9 +++++++++ 2 files changed, 9 insertions(+), 37 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 974abdcee..c2aa9de49 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1612,43 +1612,6 @@ _080BE474: .4byte gSaveBlock2 .section .text_80BE8EC - thumb_func_start sub_80C045C -sub_80C045C: @ 80C045C - push {r4-r6,lr} - movs r5, 0 - ldr r6, _080C0494 @ =gSaveBlock1 -_080C0462: - lsls r0, r5, 3 - adds r0, r5 - lsls r0, 2 - adds r4, r0, r6 - ldr r1, _080C0498 @ =0x00002738 - adds r0, r4, r1 - ldrb r0, [r0] - bl sub_80BFB54 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C0484 - ldr r0, _080C049C @ =0x00002739 - adds r1, r4, r0 - movs r0, 0 - strb r0, [r1] -_080C0484: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _080C0462 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C0494: .4byte gSaveBlock1 -_080C0498: .4byte 0x00002738 -_080C049C: .4byte 0x00002739 - thumb_func_end sub_80C045C - thumb_func_start sub_80C04A0 sub_80C04A0: @ 80C04A0 push {r4,r5,lr} diff --git a/src/tv.c b/src/tv.c index f7cc4b4c3..6a1ba2d77 100644 --- a/src/tv.c +++ b/src/tv.c @@ -2002,6 +2002,15 @@ _080C0458: .4byte 0x00002738\n\ } #endif +void sub_80C045C(void) { + u8 i; + for (i=0; i<5; i++) { + if (sub_80BFB54(gSaveBlock1.tvShows.shows[i].common.var00) == 2) { + gSaveBlock1.tvShows.shows[i].common.var01 = 0; + } + } +} + asm(".section .dotvshow\n"); void DoTVShowPokemonFanClubLetter(void); -- cgit v1.2.3 From 63a793195844a3a0575872fb05b8027af92129de Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 18:29:08 -0400 Subject: sub_80BE3BC --- asm/tv.s | 87 ----------------------------------- include/global.h | 7 ++- src/tv.c | 138 ++++++++++++++++--------------------------------------- 3 files changed, 44 insertions(+), 188 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index c2aa9de49..9bdbbb9d8 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1523,93 +1523,6 @@ _080BE39E: _080BE3B8: .4byte gSpecialVar_0x8004 thumb_func_end sub_80BE320 - thumb_func_start sub_80BE3BC -sub_80BE3BC: @ 80BE3BC - push {r4-r7,lr} - ldr r0, _080BE460 @ =0x00005555 - bl sub_80BF77C - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080BE458 - ldr r6, _080BE464 @ =gSaveBlock1 + 0x2738 - adds r0, r6, 0 - bl sub_80BF74C - ldr r5, _080BE468 @ =gUnknown_03005D38 - strb r0, [r5] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE458 - movs r0, 0x16 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BE458 - bl sub_80BF20C - ldr r2, _080BE46C @ =gUnknown_02038724 - ldrh r0, [r2, 0x2] - cmp r0, 0x13 - bls _080BE458 - movs r1, 0 - ldrsb r1, [r5, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r6 - movs r0, 0x16 - strb r0, [r5] - strb r4, [r5, 0x1] - ldr r0, _080BE470 @ =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r5, 0x12] - movs r4, 0 - adds r7, r5, 0x6 - mov r12, r2 - adds r6, r5, 0 - adds r6, 0xC -_080BE420: - lsls r2, r4, 1 - adds r3, r7, r2 - lsls r1, r4, 2 - add r1, r12 - ldrh r0, [r1] - strh r0, [r3] - adds r2, r6, r2 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080BE420 - movs r0, 0x1 - bl GetPriceReduction - strb r0, [r5, 0x2] - adds r0, r5, 0 - adds r0, 0x13 - ldr r1, _080BE474 @ =gSaveBlock2 - bl StringCopy - adds r0, r5, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r5, 0x3] -_080BE458: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE460: .4byte 0x00005555 -_080BE464: .4byte gSaveBlock1 + 0x2738 -_080BE468: .4byte gUnknown_03005D38 -_080BE46C: .4byte gUnknown_02038724 -_080BE470: .4byte gMapHeader -_080BE474: .4byte gSaveBlock2 - thumb_func_end sub_80BE3BC - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/include/global.h b/include/global.h index 3dcab7c95..4496e3a3d 100644 --- a/include/global.h +++ b/include/global.h @@ -325,10 +325,13 @@ struct TVShowWorldOfMasters { struct TVShowSmartShopper { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 boughtOrSoldFlag; - /*0x03*/ u8 pad03[3]; + /*0x02*/ u8 priceReduced; + /*0x03*/ u8 language; + /*0x04*/ u8 pad04[2]; /*0x06*/ u16 itemIds[3]; /*0x0C*/ u16 itemAmounts[3]; + /*0x12*/ u8 shopLocation; + /*0x13*/ u8 playerName[8]; }; struct TVShowBravoTrainerPokemonProfiles { diff --git a/src/tv.c b/src/tv.c index 6a1ba2d77..b15caf24c 100644 --- a/src/tv.c +++ b/src/tv.c @@ -97,8 +97,39 @@ void ClearTVShowData(void) } extern void sub_80BE138(TVShow *); +bool8 sub_80BF1B4(u8); +void sub_80BF20C(void); asm(".section .text_a"); +s8 sub_80BF74C(TVShow tvShow[]); + +void sub_80BE3BC(void) { + u8 rval; + TVShow *tvShow; + u8 i; + + rval = sub_80BF77C(0x5555); + if (rval == 0) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { + sub_80BF20C(); + if (gUnknown_02038724[0].item_amount >= 20) { + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER; + tvShow->smartshopperShow.var01 = rval; + tvShow->smartshopperShow.shopLocation = gMapHeader.name; + for (i=0; i<3; i++) { + tvShow->smartshopperShow.itemIds[i] = gUnknown_02038724[i].item_id; + tvShow->smartshopperShow.itemAmounts[i] = gUnknown_02038724[i].item_amount; + } + tvShow->smartshopperShow.priceReduced = GetPriceReduction(1); + StringCopy(tvShow->smartshopperShow.playerName, gSaveBlock2.playerName); + sub_80BE138(tvShow); + tvShow->smartshopperShow.language = GAME_LANGUAGE; + } + } + } +} void sub_80BE478(void) { @@ -330,7 +361,7 @@ void sub_80BE8EC(u16 arg0) TVShow *tvShow; if (gSaveBlock1.outbreakPokemonSpecies == 0) { for (showidx=0; showidx<24; showidx++) { - if (gSaveBlock1.tvShows.shows[showidx].massOutbreak.var00 == 0x29 && gSaveBlock1.tvShows.shows[showidx].massOutbreak.var01 == 0x01) { + if (gSaveBlock1.tvShows.shows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows.shows[showidx].massOutbreak.var01 == 0x01) { tvShow = &(gSaveBlock1.tvShows.shows[showidx]); if (tvShow->massOutbreak.var16 < arg0) tvShow->massOutbreak.var16 = 0; @@ -374,18 +405,15 @@ void sub_80BE97C(bool8 flag) } } -s8 sub_80BF74C(TVShow tvShow[]); -bool8 sub_80BF1B4(u8); - void sub_80BE9D4() { TVShow *show; gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(24) != 1) { + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { show = &(gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]); #ifdef NONMATCHING - show->common.var00 = 24; - show->common.var01 = 0; + show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE; + show->pokemonAngler.var01 = 0; #else asm(".syntax unified\n\ movs r1, 0\n\ @@ -415,7 +443,7 @@ void sub_80BEA5C(u16 arg0) { struct UnknownSaveStruct2A98 *unk_2a98; unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; - if (unk_2a98->var00 == 0x19) + if (unk_2a98->var00 == TVSHOW_WORLD_OF_MASTERS) { if (unk_2a98->var02 <= 0x13) { @@ -437,10 +465,10 @@ void sub_80BEA88(void) if (rval == 0) { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); - if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(0x19) != 1) + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) { tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; - tvShow->worldOfMasters.var00 = 0x19; + tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; tvShow->worldOfMasters.var01 = rval; tvShow->worldOfMasters.var02 = unk_2a98->var02; tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06; @@ -750,7 +778,7 @@ void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i]; } } - if (arg1->boughtOrSoldFlag == 1) + if (arg1->priceReduced == 1) { sub_80BF088(arg0, price >> 1); } @@ -2388,49 +2416,6 @@ void DoTVShowPokemonFanClubLetter(void) { sub_80BF088(2, rval); TVShowDone(); break; - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 48: - case 49: - break; case 50: ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); ShowFieldMessage(gStringVar4); @@ -2468,51 +2453,6 @@ void DoTVShowRecentHappenings(void) { case 5: TVShowDone(); break; - case 6: - case 7: - case 8: - case 9: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - case 17: - case 18: - case 19: - case 20: - case 21: - case 22: - case 23: - case 24: - case 25: - case 26: - case 27: - case 28: - case 29: - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 40: - case 41: - case 42: - case 43: - case 44: - case 45: - case 46: - case 47: - case 48: - case 49: - break; case 50: ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); ShowFieldMessage(gStringVar4); -- cgit v1.2.3 From 2bf7a71cd8eeb5790c89ae02e2df722aa4f80dc2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 19:03:22 -0400 Subject: sub_80BE320 --- asm/tv.s | 73 -------------------------------------------------------- include/global.h | 24 ++++++++++++++----- src/tv.c | 22 +++++++++++++++++ 3 files changed, 40 insertions(+), 79 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 9bdbbb9d8..834510a18 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1450,79 +1450,6 @@ _080BE318: .4byte gUnknown_02038694 _080BE31C: .4byte gPlayerParty thumb_func_end sub_80BE284 - thumb_func_start sub_80BE320 -sub_80BE320: @ 80BE320 - push {r4-r6,lr} - ldr r0, _080BE384 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BE388 @ =gSaveBlock1 + 0x2738 - adds r6, r0, r1 - movs r0, 0x7 - strb r0, [r6] - movs r0, 0x1 - strb r0, [r6, 0x1] - adds r0, r6, 0x2 - ldr r4, _080BE38C @ =gSaveBlock2 - adds r1, r4, 0 - bl StringCopy - adds r0, r6, 0 - adds r0, 0xC - ldr r2, _080BE390 @ =0x00000484 - adds r1, r4, r2 - bl StringCopy - movs r1, 0x90 - lsls r1, 3 - adds r0, r4, r1 - ldrh r0, [r0] - strh r0, [r6, 0xA] - ldr r2, _080BE394 @ =0x00000482 - adds r0, r4, r2 - ldrh r0, [r0] - strh r0, [r6, 0x14] - movs r0, 0xAF - lsls r0, 3 - adds r5, r4, r0 - ldrb r0, [r5] - bl sub_8135D3C - strh r0, [r6, 0x16] - ldr r1, _080BE398 @ =0x00000555 - adds r4, r1 - ldrb r0, [r4] - strb r0, [r6, 0x1C] - ldrb r0, [r5] - cmp r0, 0 - bne _080BE39C - movs r0, 0x32 - b _080BE39E - .align 2, 0 -_080BE384: .4byte gUnknown_03005D38 -_080BE388: .4byte gSaveBlock1 + 0x2738 -_080BE38C: .4byte gSaveBlock2 -_080BE390: .4byte 0x00000484 -_080BE394: .4byte 0x00000482 -_080BE398: .4byte 0x00000555 -_080BE39C: - movs r0, 0x64 -_080BE39E: - strb r0, [r6, 0x1A] - ldr r0, _080BE3B8 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - strb r0, [r6, 0x1B] - adds r0, r6, 0 - bl sub_80BE160 - movs r0, GAME_LANGUAGE - strb r0, [r6, 0x1D] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BE3B8: .4byte gSpecialVar_0x8004 - thumb_func_end sub_80BE320 - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/include/global.h b/include/global.h index 4496e3a3d..2090415f9 100644 --- a/include/global.h +++ b/include/global.h @@ -346,10 +346,16 @@ struct TVShowBravoTrainerPokemonProfiles { struct TVShowBravoTrainerBattleTowerSpotlight { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 pad02[8]; - /*0x0A*/ u16 var0a; - /*0x0C*/ u8 pad0c[8]; - /*0x14*/ u16 var14; + /*0x02*/ u8 trainerName[8]; + /*0x0A*/ u16 species; + /*0x0C*/ u8 pokemonName[8]; + /*0x14*/ u16 winningMove; + /*0x16*/ u16 var16; + /*0x18*/ u8 pad18[2]; + /*0x1A*/ u8 btLevel; + /*0x1B*/ u8 var1b; + /*0x1C*/ u8 var1c; + /*0x1D*/ u8 language; }; typedef union TVShow { @@ -577,7 +583,11 @@ struct Pokedex struct SaveBlock2_Sub { - /*0x0000, 0x00A8*/ u8 filler_000[0x4AE]; + /*0x0000, 0x00A4*/ u8 filler_000[0x3D8]; + /*0x03D8, 0x0480*/ u16 var_480; + /*0x03DA, 0x0482*/ u16 var_482; + /*0x03DC, 0x0484*/ u8 filler_3DC[0xD1]; + /*0x04AD, 0x0555*/ u8 var_4AD; /*0x04AE, 0x0556*/ u8 var_4AE; /*0x04AF, 0x0557*/ u8 var_4AF; /*0x04B0, 0x0558*/ u16 var_4B0; @@ -587,7 +597,9 @@ struct SaveBlock2_Sub /*0x04B8, 0x0560*/ u8 filler_4B8[0x10]; /*0x04C8, 0x0570*/ u16 var_4C8; /*0x04CA, 0x0572*/ u16 var_4CA; - /*0x04CC, 0x0574*/ u8 filler_4CC[0x31C]; + /*0x04CC, 0x0574*/ u8 filler_4CC[4]; + /*0x04D0, 0x0578*/ u8 var_4D0; + /*0x04D1, 0x0579*/ u8 filler_4D1[0x317]; }; struct SaveBlock2 /* 0x02024EA4 */ diff --git a/src/tv.c b/src/tv.c index b15caf24c..cbfd80f01 100644 --- a/src/tv.c +++ b/src/tv.c @@ -99,10 +99,32 @@ void ClearTVShowData(void) extern void sub_80BE138(TVShow *); bool8 sub_80BF1B4(u8); void sub_80BF20C(void); +extern u16 sub_8135D3C(u8); asm(".section .text_a"); s8 sub_80BF74C(TVShow tvShow[]); +void sub_80BE320(void) { + TVShow *show; + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; + show->bravoTrainerTower.var01 = 1; + StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName); + StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC); + show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480; + show->bravoTrainerTower.winningMove = gSaveBlock2.filler_A8.var_482; + show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); + show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD; + if (gSaveBlock2.filler_A8.var_4D0 == 0) { + show->bravoTrainerTower.btLevel = 50; + } else { + show->bravoTrainerTower.btLevel = 100; + } + show->bravoTrainerTower.var1b = gSpecialVar_0x8004; + sub_80BE160(show); + show->bravoTrainerTower.language = GAME_LANGUAGE; +} + void sub_80BE3BC(void) { u8 rval; TVShow *tvShow; -- cgit v1.2.3 From a9b2b463ac3842ae2d38c174f34df420b9246519 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 19:30:35 -0400 Subject: sub_80BE284; gSaveBlock1.tvShows.unknown_2A98 is a TVShow union object --- asm/tv.s | 74 -------------------------------------------------------- include/global.h | 21 ++++++---------- src/tv.c | 34 +++++++++++++++++++------- 3 files changed, 32 insertions(+), 97 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 834510a18..97e6679a3 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1376,80 +1376,6 @@ _080BE27C: .4byte 0xfffffca0 _080BE280: .4byte gUnknown_03005D38 thumb_func_end sub_80BE23C - thumb_func_start sub_80BE284 -sub_80BE284: @ 80BE284 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r7, _080BE304 @ =gSaveBlock1 + 0x2A98 - ldr r1, _080BE308 @ =0xfffffca0 - adds r0, r7, r1 - bl sub_80BF720 - ldr r1, _080BE30C @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE2FE - movs r3, 0x3 - adds r1, r4, 0 - ands r1, r3 - lsls r1, 5 - ldrb r2, [r7, 0x13] - movs r0, 0x61 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - ldr r1, _080BE310 @ =gScriptContestCategory - ldrb r2, [r1] - movs r1, 0x7 - ands r1, r2 - movs r2, 0x8 - negs r2, r2 - ands r0, r2 - orrs r0, r1 - ldr r1, _080BE314 @ =gScriptContestRank - ldrb r1, [r1] - ands r3, r1 - lsls r3, 3 - movs r1, 0x19 - negs r1, r1 - ands r0, r1 - orrs r0, r3 - strb r0, [r7, 0x13] - ldr r6, _080BE318 @ =gUnknown_02038694 - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080BE31C @ =gPlayerParty - adds r0, r4 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - adds r2, r7, 0 - adds r2, 0x8 - movs r1, 0x2 - bl GetMonData -_080BE2FE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE304: .4byte gSaveBlock1 + 0x2A98 -_080BE308: .4byte 0xfffffca0 -_080BE30C: .4byte gUnknown_03005D38 -_080BE310: .4byte gScriptContestCategory -_080BE314: .4byte gScriptContestRank -_080BE318: .4byte gUnknown_02038694 -_080BE31C: .4byte gPlayerParty - thumb_func_end sub_80BE284 - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/include/global.h b/include/global.h index 2090415f9..6528da35d 100644 --- a/include/global.h +++ b/include/global.h @@ -338,9 +338,13 @@ struct TVShowBravoTrainerPokemonProfiles { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 species; - /*0x04*/ u8 pad04[15]; + /*0x04*/ u8 pad04[4]; + /*0x08*/ u8 pokemonNickname[11]; /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 var13_3:5; + /*0x13*/ u8 contestRank:2; + /*0x13*/ u8 var13_5:2; + /*0x13*/ u8 var13_7:1; + /*0x14*/ }; struct TVShowBravoTrainerBattleTowerSpotlight { @@ -431,20 +435,9 @@ typedef union SB_Struct { } SB_Struct; // size is 0x198 -struct UnknownSaveStruct2A98 { - u8 var00; - u8 var01; - u16 var02; - u16 var04; - u16 var06; - u16 var08; - u8 var0a; - u8 pad0b[25]; -}; - struct SaveTVStruct { TVShow shows[24]; - struct UnknownSaveStruct2A98 unknown_2A98; + TVShow unknown_2A98; }; struct UnknownSaveStruct2ABC { diff --git a/src/tv.c b/src/tv.c index cbfd80f01..a8e1714e0 100644 --- a/src/tv.c +++ b/src/tv.c @@ -34,6 +34,7 @@ struct OutbreakPokemon }; extern u8 *gUnknown_083D1464[3]; +extern u8 gUnknown_02038694; struct TVSaleItem { u16 item_id; @@ -100,10 +101,25 @@ extern void sub_80BE138(TVShow *); bool8 sub_80BF1B4(u8); void sub_80BF20C(void); extern u16 sub_8135D3C(u8); +extern u8 gScriptContestCategory; +extern u8 gScriptContestRank; asm(".section .text_a"); s8 sub_80BF74C(TVShow tvShow[]); +void sub_80BE284(u8 a0) { + TVShow *show; + show = &gSaveBlock1.tvShows.unknown_2A98; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1) { + show->bravoTrainer.var13_5 = a0; + show->bravoTrainer.contestCategory = gScriptContestCategory; + show->bravoTrainer.contestRank = gScriptContestRank; + show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); + } +} + void sub_80BE320(void) { TVShow *show; show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; @@ -463,11 +479,11 @@ void sub_80BEA88(void); void sub_80BEA5C(u16 arg0) { - struct UnknownSaveStruct2A98 *unk_2a98; + TVShow *unk_2a98; unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; - if (unk_2a98->var00 == TVSHOW_WORLD_OF_MASTERS) + if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) { - if (unk_2a98->var02 <= 0x13) + if (unk_2a98->worldOfMasters.var02 < 20) { sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18); } @@ -479,7 +495,7 @@ void sub_80BEA5C(u16 arg0) } void sub_80BEA88(void) { - struct UnknownSaveStruct2A98 *unk_2a98; + TVShow *unk_2a98; TVShow *tvShow; u8 rval; unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; @@ -492,11 +508,11 @@ void sub_80BEA88(void) tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; tvShow->worldOfMasters.var01 = rval; - tvShow->worldOfMasters.var02 = unk_2a98->var02; - tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->var06; - tvShow->worldOfMasters.var04 = unk_2a98->var04; - tvShow->worldOfMasters.var08 = unk_2a98->var08; - tvShow->worldOfMasters.var0a = unk_2a98->var0a; + tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; + tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06; + tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04; + tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08; + tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a; StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName); sub_80BE138(tvShow); tvShow->worldOfMasters.language = GAME_LANGUAGE; -- cgit v1.2.3 From a0fb46bbb40b800af0c55366de479ca977de1aa4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 19:51:00 -0400 Subject: sub_80BE23C --- asm/tv.s | 35 ----------------------------------- include/global.h | 6 +++--- src/tv.c | 35 +++++++++++++++++++++++++---------- 3 files changed, 28 insertions(+), 48 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 97e6679a3..d5cd885a7 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1341,41 +1341,6 @@ _080BE234: .4byte 0xfffffca0 _080BE238: .4byte gSaveBlock2 thumb_func_end sub_80BE188 - thumb_func_start sub_80BE23C -sub_80BE23C: @ 80BE23C - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - ldr r4, _080BE278 @ =gSaveBlock1 + 0x2A98 - bl sub_80BF484 - ldr r0, _080BE27C @ =0xfffffca0 - adds r5, r4, r0 - adds r0, r5, 0 - bl sub_80BF720 - ldr r1, _080BE280 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE270 - adds r0, r5, 0 - movs r1, 0x18 - bl sub_80BF55C - strh r6, [r4, 0x14] - movs r0, 0x6 - strb r0, [r4] -_080BE270: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BE278: .4byte gSaveBlock1 + 0x2A98 -_080BE27C: .4byte 0xfffffca0 -_080BE280: .4byte gUnknown_03005D38 - thumb_func_end sub_80BE23C - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/include/global.h b/include/global.h index 6528da35d..a0b6db39d 100644 --- a/include/global.h +++ b/include/global.h @@ -338,13 +338,13 @@ struct TVShowBravoTrainerPokemonProfiles { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 species; - /*0x04*/ u8 pad04[4]; + /*0x04*/ u16 var04[2]; /*0x08*/ u8 pokemonNickname[11]; /*0x13*/ u8 contestCategory:3; /*0x13*/ u8 contestRank:2; /*0x13*/ u8 var13_5:2; /*0x13*/ u8 var13_7:1; - /*0x14*/ + /*0x14*/ u16 var14; }; struct TVShowBravoTrainerBattleTowerSpotlight { @@ -355,7 +355,7 @@ struct TVShowBravoTrainerBattleTowerSpotlight { /*0x0C*/ u8 pokemonName[8]; /*0x14*/ u16 winningMove; /*0x16*/ u16 var16; - /*0x18*/ u8 pad18[2]; + /*0x18*/ u16 var18[1]; /*0x1A*/ u8 btLevel; /*0x1B*/ u8 var1b; /*0x1C*/ u8 var1c; diff --git a/src/tv.c b/src/tv.c index a8e1714e0..e27232e38 100644 --- a/src/tv.c +++ b/src/tv.c @@ -104,9 +104,32 @@ extern u16 sub_8135D3C(u8); extern u8 gScriptContestCategory; extern u8 gScriptContestRank; +void sub_80BF334(void); +void sub_80BF3A4(void); +void sub_80BF3DC(void); +void sub_80BF46C(void); +void sub_80BF478(void); +void sub_80BF484(void); +void sub_80BF4BC(void); + asm(".section .text_a"); s8 sub_80BF74C(TVShow tvShow[]); +void sub_80BF55C(TVShow tvShow[], u8 showidx); +void sub_80BEA88(void); + +void sub_80BE23C(u16 a0) { + TVShow *show; + show = &gSaveBlock1.tvShows.unknown_2A98; + sub_80BF484(); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1) { + sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + show->bravoTrainer.var14 = a0; + show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + } +} + void sub_80BE284(u8 a0) { TVShow *show; show = &gSaveBlock1.tvShows.unknown_2A98; @@ -889,14 +912,6 @@ void sub_80BF25C(u8 showType) sub_80BF6D8(); } -void sub_80BF334(void); -void sub_80BF3A4(void); -void sub_80BF3DC(void); -void sub_80BF46C(void); -void sub_80BF478(void); -void sub_80BF484(void); -void sub_80BF4BC(void); - void sub_80BF2C4(void) { gScriptResult = 0; @@ -975,7 +990,7 @@ void sub_80BF484(void) sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->recentHappenings.var04, 2); // wrong struct ident, fix later + sub_80EB6FC(show->bravoTrainer.var04, 2); } } @@ -985,7 +1000,7 @@ void sub_80BF4BC(void) sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); if (gScriptResult == 0) { show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; - sub_80EB6FC(show->fanclubOpinions.var18, 1); // wrong struct ident, fix later + sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later } } -- cgit v1.2.3 From 7b89b6241f7c210c2a97a075d2ef5cd4c0a7a875 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 21:00:05 -0400 Subject: sub_80BE074 nonmatching --- asm/tv.s | 224 ------------------------------------------------------- include/global.h | 3 + src/tv.c | 187 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 189 insertions(+), 225 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index d5cd885a7..8e14a9f31 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1117,230 +1117,6 @@ _080BE06C: .4byte gUnknown_030042E0 _080BE070: .4byte gMapHeader thumb_func_end sub_80BE028 - thumb_func_start sub_80BE074 -sub_80BE074: @ 80BE074 - push {r4-r7,lr} - ldr r0, _080BE118 @ =0x0000ffff - bl sub_80BF77C - lsls r0, 24 - cmp r0, 0 - bne _080BE112 - movs r1, 0 - movs r5, 0 - ldr r2, _080BE11C @ =gUnknown_03004316 -_080BE088: - adds r0, r1, r2 - ldrb r0, [r0] - adds r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bls _080BE088 - cmp r5, 0xFF - bls _080BE0A2 - movs r5, 0xFF -_080BE0A2: - cmp r5, 0x2 - bls _080BE112 - ldr r7, _080BE120 @ =gUnknown_02024D26 - ldrb r0, [r7] - cmp r0, 0x1 - bne _080BE112 - ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738 - adds r0, r6, 0 - bl sub_80BF74C - ldr r4, _080BE128 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE112 - movs r0, 0x17 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BE112 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r6 - movs r1, 0 - movs r0, 0x17 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, _080BE12C @ =gUnknown_030042E0 - ldrh r0, [r1, 0x6] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x20] - strh r0, [r4, 0xE] - strb r5, [r4, 0x10] - ldrb r0, [r7] - strb r0, [r4, 0x11] - ldr r0, _080BE130 @ =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r4, 0x12] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BE134 @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0x2] -_080BE112: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE118: .4byte 0x0000ffff -_080BE11C: .4byte gUnknown_03004316 -_080BE120: .4byte gUnknown_02024D26 -_080BE124: .4byte gSaveBlock1 + 0x2738 -_080BE128: .4byte gUnknown_03005D38 -_080BE12C: .4byte gUnknown_030042E0 -_080BE130: .4byte gMapHeader -_080BE134: .4byte gSaveBlock2 - thumb_func_end sub_80BE074 - - thumb_func_start sub_80BE138 -sub_80BE138: @ 80BE138 - push {r4,lr} - adds r4, r0, 0 - bl GetPlayerTrainerId - strb r0, [r4, 0x1E] - lsrs r2, r0, 8 - strb r2, [r4, 0x1F] - adds r1, r4, 0 - adds r1, 0x20 - strb r0, [r1] - adds r1, 0x1 - strb r2, [r1] - adds r1, 0x1 - strb r0, [r1] - adds r0, r4, 0 - adds r0, 0x23 - strb r2, [r0] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BE138 - - thumb_func_start sub_80BE160 -sub_80BE160: @ 80BE160 - push {r4,lr} - adds r4, r0, 0 - bl GetPlayerTrainerId - adds r1, r4, 0 - adds r1, 0x20 - strb r0, [r1] - lsrs r1, r0, 8 - adds r2, r4, 0 - adds r2, 0x21 - strb r1, [r2] - adds r2, 0x1 - strb r0, [r2] - adds r0, r4, 0 - adds r0, 0x23 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BE160 - - thumb_func_start sub_80BE188 -sub_80BE188: @ 80BE188 - push {r4-r6,lr} - ldr r6, _080BE22C @ =gSaveBlock1 + 0x2A98 - ldrb r1, [r6] - cmp r1, 0x6 - bne _080BE224 - ldr r0, _080BE230 @ =gUnknown_03005D38 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r2, _080BE234 @ =0xfffffca0 - adds r0, r6, r2 - adds r4, r0 - strb r1, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - ldrh r0, [r6, 0x2] - strh r0, [r4, 0x2] - adds r0, r4, 0 - adds r0, 0x16 - ldr r1, _080BE238 @ =gSaveBlock2 - bl StringCopy - adds r5, r4, 0 - adds r5, 0x8 - adds r1, r6, 0 - adds r1, 0x8 - adds r0, r5, 0 - bl StringCopy - ldrb r0, [r6, 0x13] - lsls r0, 29 - lsrs r0, 29 - ldrb r2, [r4, 0x13] - movs r3, 0x8 - negs r3, r3 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x13] - ldrb r2, [r6, 0x13] - movs r0, 0x18 - ands r0, r2 - movs r2, 0x19 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0x13] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x14] - ldrb r0, [r6, 0x13] - movs r1, 0x60 - ands r1, r0 - movs r0, 0x61 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x13] - ldrb r1, [r6, 0x13] - lsls r1, 29 - lsrs r1, 29 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x13] - adds r0, r4, 0 - bl sub_80BE160 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0x1E] - adds r0, r5, 0 - bl sub_80BDEAC - strb r0, [r4, 0x1F] - adds r0, r5, 0 - bl StripExtCtrlCodes -_080BE224: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BE22C: .4byte gSaveBlock1 + 0x2A98 -_080BE230: .4byte gUnknown_03005D38 -_080BE234: .4byte 0xfffffca0 -_080BE238: .4byte gSaveBlock2 - thumb_func_end sub_80BE188 - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/include/global.h b/include/global.h index a0b6db39d..5edb3239f 100644 --- a/include/global.h +++ b/include/global.h @@ -345,6 +345,9 @@ struct TVShowBravoTrainerPokemonProfiles { /*0x13*/ u8 var13_5:2; /*0x13*/ u8 var13_7:1; /*0x14*/ u16 var14; + /*0x16*/ u8 playerName[8]; + /*0x1E*/ u8 language; + /*0x1F*/ u8 var1f; }; struct TVShowBravoTrainerBattleTowerSpotlight { diff --git a/src/tv.c b/src/tv.c index e27232e38..38330a376 100644 --- a/src/tv.c +++ b/src/tv.c @@ -25,6 +25,14 @@ struct UnkTvStruct s8 var0; }; +struct UnkBattleStruct { + u8 pad00[6]; + u16 var06; + u8 pad08[24]; + u16 var20; +}; +extern struct UnkBattleStruct gUnknown_030042E0; + struct OutbreakPokemon { /*0x00*/ u16 species; @@ -97,12 +105,13 @@ void ClearTVShowData(void) sub_80BEBF4(); } -extern void sub_80BE138(TVShow *); bool8 sub_80BF1B4(u8); void sub_80BF20C(void); extern u16 sub_8135D3C(u8); extern u8 gScriptContestCategory; extern u8 gScriptContestRank; +extern u8 gUnknown_03004316[11]; +extern u8 gUnknown_02024D26; void sub_80BF334(void); void sub_80BF3A4(void); @@ -118,6 +127,182 @@ s8 sub_80BF74C(TVShow tvShow[]); void sub_80BF55C(TVShow tvShow[], u8 showidx); void sub_80BEA88(void); +void sub_80BE138(TVShow *show); +void sub_80BE160(TVShow *show); + +#ifdef NONMATCHING +void sub_80BE074(void) { + u8 i; + u16 tot; + TVShow *show; + if (sub_80BF77C(0xffff) == 0) { + asm_comment("Here the registers for i and tot are assigned in the wrong order."); + tot = 0; + for (i=0; i 0xff) { + tot = 0xff; + } + if (tot > 2 && gUnknown_02024D26 == 1) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + asm_comment("Here the wrong registers are used to hold the show ID and flag."); + show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; + show->pokemonTodayFailed.var01 = 0; + show->pokemonTodayFailed.species = gUnknown_030042E0.var06; + show->pokemonTodayFailed.species2 = gUnknown_030042E0.var20; + show->pokemonTodayFailed.var10 = tot; + show->pokemonTodayFailed.var11 = gUnknown_02024D26; + show->pokemonTodayFailed.var12 = gMapHeader.name; + StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName); + sub_80BE138(show); + show->pokemonTodayFailed.language = GAME_LANGUAGE; + } + } + } +} +#else +__attribute__((naked)) +void sub_80BE074(void) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + ldr r0, _080BE118 @ =0x0000ffff\n\ + bl sub_80BF77C\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080BE112\n\ + movs r1, 0\n\ + movs r5, 0\n\ + ldr r2, _080BE11C @ =gUnknown_03004316\n\ +_080BE088:\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r0, r5, r0\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0xA\n\ + bls _080BE088\n\ + cmp r5, 0xFF\n\ + bls _080BE0A2\n\ + movs r5, 0xFF\n\ +_080BE0A2:\n\ + cmp r5, 0x2\n\ + bls _080BE112\n\ + ldr r7, _080BE120 @ =gUnknown_02024D26\n\ + ldrb r0, [r7]\n\ + cmp r0, 0x1\n\ + bne _080BE112\n\ + ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r6, 0\n\ + bl sub_80BF74C\n\ + ldr r4, _080BE128 @ =gUnknown_03005D38\n\ + strb r0, [r4]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + beq _080BE112\n\ + movs r0, 0x17\n\ + bl sub_80BF1B4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BE112\n\ + movs r0, 0\n\ + ldrsb r0, [r4, r0]\n\ + lsls r4, r0, 3\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + adds r4, r6\n\ + movs r1, 0\n\ + movs r0, 0x17\n\ + strb r0, [r4]\n\ + strb r1, [r4, 0x1]\n\ + ldr r1, _080BE12C @ =gUnknown_030042E0\n\ + ldrh r0, [r1, 0x6]\n\ + strh r0, [r4, 0xC]\n\ + ldrh r0, [r1, 0x20]\n\ + strh r0, [r4, 0xE]\n\ + strb r5, [r4, 0x10]\n\ + ldrb r0, [r7]\n\ + strb r0, [r4, 0x11]\n\ + ldr r0, _080BE130 @ =gMapHeader\n\ + ldrb r0, [r0, 0x14]\n\ + strb r0, [r4, 0x12]\n\ + adds r0, r4, 0\n\ + adds r0, 0x13\n\ + ldr r1, _080BE134 @ =gSaveBlock2\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + bl sub_80BE138\n\ + movs r0, 2 @ GAME_LANGUAGE\n\ + strb r0, [r4, 0x2]\n\ +_080BE112:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BE118: .4byte 0x0000ffff\n\ +_080BE11C: .4byte gUnknown_03004316\n\ +_080BE120: .4byte gUnknown_02024D26\n\ +_080BE124: .4byte gSaveBlock1 + 0x2738\n\ +_080BE128: .4byte gUnknown_03005D38\n\ +_080BE12C: .4byte gUnknown_030042E0\n\ +_080BE130: .4byte gMapHeader\n\ +_080BE134: .4byte gSaveBlock2\n\ +.syntax divided\n"); +} +#endif + +void sub_80BE138(TVShow *show) { + u32 playerId; + playerId = GetPlayerTrainerId(); + show->common.srcTrainerId2Lo = playerId & 0xFF; + show->common.srcTrainerId2Hi = playerId >> 8; + show->common.srcTrainerIdLo = playerId & 0xFF; + show->common.srcTrainerIdHi = playerId >> 8; + show->common.trainerIdLo = playerId & 0xFF; + show->common.trainerIdHi = playerId >> 8; +} + +void sub_80BE160(TVShow *show) { + u32 playerId; + playerId = GetPlayerTrainerId(); + show->common.srcTrainerIdLo = playerId & 0xFF; + show->common.srcTrainerIdHi = playerId >> 8; + show->common.trainerIdLo = playerId & 0xFF; + show->common.trainerIdHi = playerId >> 8; +} + +void sub_80BE188(void) { + TVShow *show; + TVShow *buffer; + buffer = &gSaveBlock1.tvShows.unknown_2A98; + if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + show->bravoTrainer.var01 = 1; + show->bravoTrainer.species = buffer->bravoTrainer.species; + StringCopy(show->bravoTrainer.playerName, gSaveBlock2.playerName); + StringCopy(show->bravoTrainer.pokemonNickname, buffer->bravoTrainer.pokemonNickname); + show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; + show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank; + show->bravoTrainer.var14 = buffer->bravoTrainer.var14; + show->bravoTrainer.var13_5 = buffer->bravoTrainer.var13_5; + show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; + sub_80BE160(show); + show->bravoTrainer.language = GAME_LANGUAGE; + show->bravoTrainer.var1f = sub_80BDEAC(show->bravoTrainer.pokemonNickname); + StripExtCtrlCodes(show->bravoTrainer.pokemonNickname); + } +} + void sub_80BE23C(u16 a0) { TVShow *show; show = &gSaveBlock1.tvShows.unknown_2A98; -- cgit v1.2.3 From d39ae0bb40dc695d463b91ac2e47f8d608bf1f18 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 21:22:02 -0400 Subject: sub_80BE028 --- asm/tv.s | 38 -------------------------------------- src/tv.c | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 38 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 8e14a9f31..fae7c55af 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -1079,44 +1079,6 @@ _080BE020: .4byte gSaveBlock2 _080BE024: .4byte gUnknown_0300430A thumb_func_end sub_80BDEC8 - thumb_func_start sub_80BE028 -sub_80BE028: @ 80BE028 - push {r4,lr} - ldr r4, _080BE064 @ =gSaveBlock1 + 0x2A98 - ldrb r0, [r4] - cmp r0, 0x19 - beq _080BE048 - ldr r1, _080BE068 @ =0xfffffca0 - adds r0, r4, r1 - movs r1, 0x18 - bl sub_80BF55C - movs r0, 0x5 - bl GetGameStat - strh r0, [r4, 0x6] - movs r0, 0x19 - strb r0, [r4] -_080BE048: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - ldr r1, _080BE06C @ =gUnknown_030042E0 - ldrh r0, [r1, 0x28] - strh r0, [r4, 0x4] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x8] - ldr r0, _080BE070 @ =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r4, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BE064: .4byte gSaveBlock1 + 0x2A98 -_080BE068: .4byte 0xfffffca0 -_080BE06C: .4byte gUnknown_030042E0 -_080BE070: .4byte gMapHeader - thumb_func_end sub_80BE028 - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/src/tv.c b/src/tv.c index 38330a376..47a1b6029 100644 --- a/src/tv.c +++ b/src/tv.c @@ -30,6 +30,8 @@ struct UnkBattleStruct { u16 var06; u8 pad08[24]; u16 var20; + u8 pad22[6]; + u16 var28; }; extern struct UnkBattleStruct gUnknown_030042E0; @@ -130,6 +132,20 @@ void sub_80BEA88(void); void sub_80BE138(TVShow *show); void sub_80BE160(TVShow *show); +void sub_80BE028(void) { + TVShow *buffer; + buffer = &gSaveBlock1.tvShows.unknown_2A98; + if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) { + sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS); + buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; + } + buffer->worldOfMasters.var02++; + buffer->worldOfMasters.var04 = gUnknown_030042E0.var28; + buffer->worldOfMasters.var08 = gUnknown_030042E0.var06; + buffer->worldOfMasters.var0a = gMapHeader.name; +} + #ifdef NONMATCHING void sub_80BE074(void) { u8 i; -- cgit v1.2.3 From 5b2b4a9cf1e7dfc5f4e0ce386e5bb69ca2b2992b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 22:47:41 -0400 Subject: Some more functions decompiled --- asm/tv.s | 188 +-------------------------------------------------------------- src/tv.c | 96 ++++++++++++++++++++++++++++---- 2 files changed, 86 insertions(+), 198 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index fae7c55af..5839dfbef 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -888,196 +888,10 @@ _080BDE9C: _080BDEA2: bl sub_80BE320 _080BDEA6: - pop {r0} - bx r0 - thumb_func_end sub_80BDE48 - - thumb_func_start sub_80BDEAC -sub_80BDEAC: @ 80BDEAC - push {lr} - adds r1, r0, 0 - movs r2, GAME_LANGUAGE - ldrb r0, [r1] - cmp r0, 0xFC - bne _080BDEC0 - ldrb r0, [r1, 0x1] - cmp r0, 0x15 - bne _080BDEC0 - movs r2, 0x1 -_080BDEC0: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end sub_80BDEAC - - thumb_func_start sub_80BDEC8 -sub_80BDEC8: @ 80BDEC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - bl sub_80BEB20 - bl sub_80BE778 - ldr r5, _080BDEE8 @ =gUnknown_030042E0 - ldrh r0, [r5, 0x28] - cmp r0, 0 - bne _080BDEEC - bl sub_80BE074 - b _080BE012 - .align 2, 0 -_080BDEE8: .4byte gUnknown_030042E0 -_080BDEEC: - bl sub_80BE028 - ldr r0, _080BDF98 @ =0x0000ffff - bl sub_80BF77C - lsls r0, 24 - cmp r0, 0 - beq _080BDEFE - b _080BE012 -_080BDEFE: - ldrh r1, [r5, 0x28] - movs r0, 0xB - muls r0, r1 - ldr r1, _080BDF9C @ =gSpeciesNames - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x2A - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _080BDF16 - b _080BE012 -_080BDF16: - ldr r0, _080BDFA0 @ =gSaveBlock1 + 0x2738 - bl sub_80BF74C - ldr r1, _080BDFA4 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE012 - movs r0, 0x15 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BE012 - movs r2, 0 - adds r7, r5, 0 - adds r1, r7, 0 - adds r1, 0x36 -_080BDF42: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bls _080BDF42 - cmp r4, 0 - bne _080BDF64 - ldrb r1, [r7, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BE012 -_080BDF64: - movs r4, 0 - ldr r0, _080BDFA4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BDFA0 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - movs r0, 0x15 - strb r0, [r5] - strb r4, [r5, 0x1] - ldrb r1, [r7, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BDFAC - movs r4, 0x1 - movs r0, 0x1 - adds r3, r5, 0 - adds r3, 0x13 - ldr r1, _080BDFA8 @ =gSaveBlock2 - mov r8, r1 - adds r6, r5, 0x4 - b _080BDFDE - .align 2, 0 -_080BDF98: .4byte 0x0000ffff -_080BDF9C: .4byte gSpeciesNames -_080BDFA0: .4byte gSaveBlock1 + 0x2738 -_080BDFA4: .4byte gUnknown_03005D38 -_080BDFA8: .4byte gSaveBlock2 -_080BDFAC: - movs r2, 0 - ldr r0, _080BE01C @ =gUnknown_02024C04 - mov r12, r0 - adds r3, r5, 0 - adds r3, 0x13 - ldr r1, _080BE020 @ =gSaveBlock2 - mov r8, r1 - adds r6, r5, 0x4 - adds r1, r7, 0 - adds r1, 0x36 -_080BDFC0: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bls _080BDFC0 - cmp r4, 0xFF - bls _080BDFDA - movs r4, 0xFF -_080BDFDA: - mov r1, r12 - ldrh r0, [r1] -_080BDFDE: - strb r4, [r5, 0x12] - strb r0, [r5, 0xF] - adds r0, r3, 0 - mov r1, r8 - bl StringCopy - ldr r4, _080BE024 @ =gUnknown_0300430A - adds r0, r6, 0 - adds r1, r4, 0 - bl StringCopy - subs r4, 0x2A - ldrh r0, [r4, 0x28] - strh r0, [r5, 0x10] - adds r0, r5, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r5, 0x2] - adds r0, r6, 0 - bl sub_80BDEAC - strb r0, [r5, 0x3] - adds r0, r6, 0 - bl StripExtCtrlCodes -_080BE012: - pop {r3} - mov r8, r3 - pop {r4-r7} pop {r0} bx r0 .align 2, 0 -_080BE01C: .4byte gUnknown_02024C04 -_080BE020: .4byte gSaveBlock2 -_080BE024: .4byte gUnknown_0300430A - thumb_func_end sub_80BDEC8 + thumb_func_end sub_80BDE48 .section .text_80BE8EC diff --git a/src/tv.c b/src/tv.c index 47a1b6029..db71bafdb 100644 --- a/src/tv.c +++ b/src/tv.c @@ -26,14 +26,22 @@ struct UnkTvStruct }; struct UnkBattleStruct { - u8 pad00[6]; + u16 var00; + u8 var02[3]; + u8 var05_0:1; + u8 var05_1:1; + u8 var05_pad2:6; u16 var06; u8 pad08[24]; u16 var20; u8 pad22[6]; u16 var28; + u8 var2a[11]; + u8 var35; + u8 var36[11]; }; extern struct UnkBattleStruct gUnknown_030042E0; +extern u8 gUnknown_0300430A[11]; struct OutbreakPokemon { @@ -123,6 +131,11 @@ void sub_80BF478(void); void sub_80BF484(void); void sub_80BF4BC(void); +void sub_80BE028(void); +void sub_80BE074(void); +void sub_80BE778(void); +void sub_80BEB20(void); + asm(".section .text_a"); s8 sub_80BF74C(TVShow tvShow[]); @@ -131,6 +144,66 @@ void sub_80BEA88(void); void sub_80BE138(TVShow *show); void sub_80BE160(TVShow *show); +extern u16 gUnknown_02024C04; + +u8 sub_80BDEAC(u8 *a0) { + u8 lang; + lang = GAME_LANGUAGE; + if (a0[0] == 0xFC && a0[1] == 0x15) { + lang = LANGUAGE_JAPANESE; + } + return lang; +} + +void sub_80BDEC8(void) { + TVShow *show; + u8 i; + u16 total; + u16 item; + total = 0; + sub_80BEB20(); + sub_80BE778(); + if (gUnknown_030042E0.var28 == 0) { + sub_80BE074(); + } else { + sub_80BE028(); + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.var28], gUnknown_030042E0.var2a) != 0) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) { + for (i=0; i<11; i++) { + total += gUnknown_030042E0.var36[i]; + } + if (total != 0 || gUnknown_030042E0.var05_1 != 0) { + total = FALSE; + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT; + show->pokemonToday.var01 = total; + if (gUnknown_030042E0.var05_1 != 0) { + total = 1; + item = ITEM_MASTER_BALL; + } else { + for (i=0; i<11; i++) { + total += gUnknown_030042E0.var36[i]; + } + if (total > 0xff) { + total = 0xff; + } + item = gUnknown_02024C04; + } + show->pokemonToday.var12 = total; + show->pokemonToday.ball = item; + StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); + StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.var2a); + show->pokemonToday.species = gUnknown_030042E0.var28; + sub_80BE138(show); + show->pokemonToday.language = GAME_LANGUAGE; + show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); + StripExtCtrlCodes(show->pokemonToday.nickname); + } + } + } + } +} void sub_80BE028(void) { TVShow *buffer; @@ -149,27 +222,27 @@ void sub_80BE028(void) { #ifdef NONMATCHING void sub_80BE074(void) { u8 i; - u16 tot; + u16 total; + u8 flag; TVShow *show; if (sub_80BF77C(0xffff) == 0) { - asm_comment("Here the registers for i and tot are assigned in the wrong order."); - tot = 0; - for (i=0; i 0xff) { - tot = 0xff; + if (total > 0xff) { + total = 0xff; } - if (tot > 2 && gUnknown_02024D26 == 1) { + if (total > 2 && gUnknown_02024D26 == 1) { gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { + flag = FALSE; show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; asm_comment("Here the wrong registers are used to hold the show ID and flag."); show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; - show->pokemonTodayFailed.var01 = 0; + show->pokemonTodayFailed.var01 = flag; show->pokemonTodayFailed.species = gUnknown_030042E0.var06; show->pokemonTodayFailed.species2 = gUnknown_030042E0.var20; - show->pokemonTodayFailed.var10 = tot; + show->pokemonTodayFailed.var10 = total; show->pokemonTodayFailed.var11 = gUnknown_02024D26; show->pokemonTodayFailed.var12 = gMapHeader.name; StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName); @@ -236,6 +309,7 @@ _080BE0A2:\n\ adds r4, r0\n\ lsls r4, 2\n\ adds r4, r6\n\ + @ -- Here the compiler puts the status flag in the wrong register. --\n\ movs r1, 0\n\ movs r0, 0x17\n\ strb r0, [r4]\n\ -- cgit v1.2.3 From f56442a2a182083d8f7fd16436f8125dd098cab1 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 22:55:24 -0400 Subject: sub_80BDE48 --- asm/tv.s | 48 ------------------------------------------------ src/tv.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 48 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 5839dfbef..0395155c2 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -845,54 +845,6 @@ _080BDE40: .4byte gSpecialVar_0x8004 _080BDE44: .4byte gSpecialVar_0x8005 thumb_func_end GabbyAndTySetScriptVarsToFieldObjectLocalIds - thumb_func_start sub_80BDE48 -sub_80BDE48: @ 80BDE48 - push {lr} - ldr r0, _080BDE60 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0x6 - bhi _080BDEA6 - lsls r0, 2 - ldr r1, _080BDE64 @ =_080BDE68 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BDE60: .4byte gSpecialVar_0x8005 -_080BDE64: .4byte _080BDE68 - .align 2, 0 -_080BDE68: - .4byte _080BDE84 - .4byte _080BDE8A - .4byte _080BDE90 - .4byte _080BDE96 - .4byte _080BDEA6 - .4byte _080BDE9C - .4byte _080BDEA2 -_080BDE84: - bl sub_80BE5FC - b _080BDEA6 -_080BDE8A: - bl sub_80BE65C - b _080BDEA6 -_080BDE90: - bl sub_80BE6A0 - b _080BDEA6 -_080BDE96: - bl nullsub_21 - b _080BDEA6 -_080BDE9C: - bl sub_80BE188 - b _080BDEA6 -_080BDEA2: - bl sub_80BE320 -_080BDEA6: - pop {r0} - bx r0 - .align 2, 0 - thumb_func_end sub_80BDE48 - .section .text_80BE8EC thumb_func_start sub_80C04A0 diff --git a/src/tv.c b/src/tv.c index db71bafdb..c17ec0a4c 100644 --- a/src/tv.c +++ b/src/tv.c @@ -146,6 +146,36 @@ void sub_80BE138(TVShow *show); void sub_80BE160(TVShow *show); extern u16 gUnknown_02024C04; +void sub_80BE5FC(void); +void sub_80BE65C(void); +void sub_80BE6A0(void); +void nullsub_21(void); +void sub_80BE188(void); +void sub_80BE320(void); + +void sub_80BDE48(void) { + switch (gSpecialVar_0x8005) { + case TVSHOW_FAN_CLUB_LETTER: + sub_80BE5FC(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BE65C(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BE6A0(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_21(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BE188(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BE320(); + break; + } +} + u8 sub_80BDEAC(u8 *a0) { u8 lang; lang = GAME_LANGUAGE; -- cgit v1.2.3 From ea181bea7652e6ea28705302ce7e85998e248986 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 23:00:33 -0400 Subject: GabbyAndTySetScriptVarsToFieldObjectLocalIds --- asm/tv.s | 113 +-------------------------------------------------------------- src/tv.c | 39 ++++++++++++++++++++++ 2 files changed, 40 insertions(+), 112 deletions(-) diff --git a/asm/tv.s b/asm/tv.s index 0395155c2..ec5296064 100644 --- a/asm/tv.s +++ b/asm/tv.s @@ -731,119 +731,8 @@ _080BDD5C: _080BDD5E: pop {r1} bx r1 - thumb_func_end sub_80BDD18 - - thumb_func_start GabbyAndTySetScriptVarsToFieldObjectLocalIds -GabbyAndTySetScriptVarsToFieldObjectLocalIds: @ 80BDD64 - push {lr} - bl GabbyAndTyGetBattleNum - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x7 - bhi _080BDE3C - lsls r0, 2 - ldr r1, _080BDD80 @ =_080BDD84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BDD80: .4byte _080BDD84 - .align 2, 0 -_080BDD84: - .4byte _080BDDA4 - .4byte _080BDDB8 - .4byte _080BDDCC - .4byte _080BDDE0 - .4byte _080BDDF4 - .4byte _080BDE08 - .4byte _080BDE1C - .4byte _080BDE30 -_080BDDA4: - ldr r1, _080BDDB0 @ =gSpecialVar_0x8004 - movs r0, 0xE - strh r0, [r1] - ldr r1, _080BDDB4 @ =gSpecialVar_0x8005 - movs r0, 0xD - b _080BDE3A - .align 2, 0 -_080BDDB0: .4byte gSpecialVar_0x8004 -_080BDDB4: .4byte gSpecialVar_0x8005 -_080BDDB8: - ldr r1, _080BDDC4 @ =gSpecialVar_0x8004 - movs r0, 0x5 - strh r0, [r1] - ldr r1, _080BDDC8 @ =gSpecialVar_0x8005 - movs r0, 0x6 - b _080BDE3A .align 2, 0 -_080BDDC4: .4byte gSpecialVar_0x8004 -_080BDDC8: .4byte gSpecialVar_0x8005 -_080BDDCC: - ldr r1, _080BDDD8 @ =gSpecialVar_0x8004 - movs r0, 0x12 - strh r0, [r1] - ldr r1, _080BDDDC @ =gSpecialVar_0x8005 - movs r0, 0x11 - b _080BDE3A - .align 2, 0 -_080BDDD8: .4byte gSpecialVar_0x8004 -_080BDDDC: .4byte gSpecialVar_0x8005 -_080BDDE0: - ldr r1, _080BDDEC @ =gSpecialVar_0x8004 - movs r0, 0x15 - strh r0, [r1] - ldr r1, _080BDDF0 @ =gSpecialVar_0x8005 - movs r0, 0x16 - b _080BDE3A - .align 2, 0 -_080BDDEC: .4byte gSpecialVar_0x8004 -_080BDDF0: .4byte gSpecialVar_0x8005 -_080BDDF4: - ldr r1, _080BDE00 @ =gSpecialVar_0x8004 - movs r0, 0x8 - strh r0, [r1] - ldr r1, _080BDE04 @ =gSpecialVar_0x8005 - movs r0, 0x9 - b _080BDE3A - .align 2, 0 -_080BDE00: .4byte gSpecialVar_0x8004 -_080BDE04: .4byte gSpecialVar_0x8005 -_080BDE08: - ldr r1, _080BDE14 @ =gSpecialVar_0x8004 - movs r0, 0x13 - strh r0, [r1] - ldr r1, _080BDE18 @ =gSpecialVar_0x8005 - movs r0, 0x14 - b _080BDE3A - .align 2, 0 -_080BDE14: .4byte gSpecialVar_0x8004 -_080BDE18: .4byte gSpecialVar_0x8005 -_080BDE1C: - ldr r1, _080BDE28 @ =gSpecialVar_0x8004 - movs r0, 0x17 - strh r0, [r1] - ldr r1, _080BDE2C @ =gSpecialVar_0x8005 - movs r0, 0x18 - b _080BDE3A - .align 2, 0 -_080BDE28: .4byte gSpecialVar_0x8004 -_080BDE2C: .4byte gSpecialVar_0x8005 -_080BDE30: - ldr r1, _080BDE40 @ =gSpecialVar_0x8004 - movs r0, 0xA - strh r0, [r1] - ldr r1, _080BDE44 @ =gSpecialVar_0x8005 - movs r0, 0xB -_080BDE3A: - strh r0, [r1] -_080BDE3C: - pop {r0} - bx r0 - .align 2, 0 -_080BDE40: .4byte gSpecialVar_0x8004 -_080BDE44: .4byte gSpecialVar_0x8005 - thumb_func_end GabbyAndTySetScriptVarsToFieldObjectLocalIds + thumb_func_end sub_80BDD18 .section .text_80BE8EC diff --git a/src/tv.c b/src/tv.c index c17ec0a4c..ea1f13047 100644 --- a/src/tv.c +++ b/src/tv.c @@ -153,6 +153,45 @@ void nullsub_21(void); void sub_80BE188(void); void sub_80BE320(void); +extern u8 GabbyAndTyGetBattleNum(void); + +void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { + switch (GabbyAndTyGetBattleNum()) { + case 1: + gSpecialVar_0x8004 = 0xE; + gSpecialVar_0x8005 = 0xD; + break; + case 2: + gSpecialVar_0x8004 = 0x5; + gSpecialVar_0x8005 = 0x6; + break; + case 3: + gSpecialVar_0x8004 = 0x12; + gSpecialVar_0x8005 = 0x11; + break; + case 4: + gSpecialVar_0x8004 = 0x15; + gSpecialVar_0x8005 = 0x16; + break; + case 5: + gSpecialVar_0x8004 = 0x8; + gSpecialVar_0x8005 = 0x9; + break; + case 6: + gSpecialVar_0x8004 = 0x13; + gSpecialVar_0x8005 = 0x14; + break; + case 7: + gSpecialVar_0x8004 = 0x17; + gSpecialVar_0x8005 = 0x18; + break; + case 8: + gSpecialVar_0x8004 = 0xA; + gSpecialVar_0x8005 = 0xB; + break; + } +} + void sub_80BDE48(void) { switch (gSpecialVar_0x8005) { case TVSHOW_FAN_CLUB_LETTER: -- cgit v1.2.3 From 5e98afefa4fd62fa7b6ed83696315582419843de Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 23:32:57 -0400 Subject: sub_805C930 --- asm/field_map_obj.s | 32 -------------------------------- src/field_map_obj.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d54b57fed..ca3cdda1e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,38 +6,6 @@ .text - thumb_func_start sub_805C930 -sub_805C930: @ 805C930 - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805C964 - ldr r5, _0805C960 @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805C966 - .align 2, 0 -_0805C960: .4byte gUnknown_0837520C -_0805C964: - movs r0, 0 -_0805C966: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805C930 - thumb_func_start sub_805C96C sub_805C96C: @ 805C96C push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f7e09aacf..19d4676cf 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -6,6 +6,7 @@ #include "field_player_avatar.h" #include "palette.h" #include "rom4.h" +#include "rng.h" #include "sprite.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -1547,3 +1548,17 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +extern bool8 FieldObjectExecRegularAnim(); +extern const s16 gUnknown_0837520C[]; +extern void sub_8064820(struct Sprite *, s16); + +u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + -- cgit v1.2.3 From 1c753367fd6e3bf637160d4169839a549a1656df Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 23:49:47 -0400 Subject: A handful more functions related to field map movement patterns --- asm/field_map_obj.s | 86 ----------------------------------------------------- src/field_map_obj.c | 43 +++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 88 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ca3cdda1e..c9744414e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,92 +6,6 @@ .text - thumb_func_start sub_805C96C -sub_805C96C: @ 805C96C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805C980 - movs r0, 0 - b _0805C986 -_0805C980: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805C986: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805C96C - - thumb_func_start sub_805C98C -sub_805C98C: @ 805C98C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805C9D4 @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805C9CA - movs r0, 0x1 - strh r0, [r6, 0x30] -_0805C9CA: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805C9D4: .4byte gUnknown_08375240 - thumb_func_end sub_805C98C - - thumb_func_start sub_805C9D8 -sub_805C9D8: @ 805C9D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805C9D8 - thumb_func_start sub_805CA08 sub_805CA08: @ 805CA08 push {r4,r5,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 19d4676cf..a7856ec07 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1548,13 +1548,14 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -extern bool8 FieldObjectExecRegularAnim(); +extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *); extern const s16 gUnknown_0837520C[]; extern void sub_8064820(struct Sprite *, s16); u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) { - if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) { + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { return 0; } sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); @@ -1562,3 +1563,41 @@ u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +extern u8 sub_8064824(struct Sprite *); + +u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +extern const u8 gUnknown_08375240[4]; +extern u8 sub_805FF20(struct MapObject *, u8); + +u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + direction = directions[Random() & 3]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + -- cgit v1.2.3 From 101bc4a4e569903eedb463da9ee8b736d16ea6fb Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 00:18:31 -0400 Subject: field_map_obj.c up to and including FieldObjectIsTrainerAndCloseToPlayer --- asm/field_map_obj.s | 90 ----------------------------------------------------- src/field_map_obj.c | 41 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 90 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index c9744414e..fb19ddbb2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,96 +6,6 @@ .text - thumb_func_start sub_805CA08 -sub_805CA08: @ 805CA08 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CA26 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805CA26: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CA08 - - thumb_func_start FieldObjectIsTrainerAndCloseToPlayer -FieldObjectIsTrainerAndCloseToPlayer: @ 805CA30 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r0, 0x80 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0805CA9C - ldrb r0, [r5, 0x7] - cmp r0, 0x1 - beq _0805CA4C - cmp r0, 0x3 - bne _0805CA9C -_0805CA4C: - mov r7, sp - adds r7, 0x2 - mov r0, sp - adds r1, r7, 0 - bl PlayerGetDestCoords - ldrh r2, [r5, 0x10] - ldrh r4, [r5, 0x12] - ldrb r1, [r5, 0x1D] - subs r3, r2, r1 - subs r0, r4, r1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r2, r1, r2 - lsls r2, 16 - lsrs r2, 16 - adds r1, r4 - lsls r1, 16 - lsrs r6, r1, 16 - mov r0, sp - lsls r3, 16 - asrs r3, 16 - movs r1, 0 - ldrsh r4, [r0, r1] - cmp r3, r4 - bgt _0805CA9C - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, r4 - blt _0805CA9C - lsls r0, r5, 16 - asrs r0, 16 - movs r2, 0 - ldrsh r1, [r7, r2] - cmp r0, r1 - bgt _0805CA9C - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, r1 - bge _0805CAA0 -_0805CA9C: - movs r0, 0 - b _0805CAA2 -_0805CAA0: - movs r0, 0x1 -_0805CAA2: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end FieldObjectIsTrainerAndCloseToPlayer - thumb_func_start sub_805CAAC sub_805CAAC: @ 805CAAC push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index a7856ec07..61ec26365 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1601,3 +1601,44 @@ u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + +u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject) +{ + s16 x; + s16 y; + s16 objx; + s16 objy; + s16 minx; + s16 maxx; + s16 miny; + s16 maxy; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) == 0) + { + return 0; + } + if (mapObject->trainerType != 1 && mapObject->trainerType != 3) + { + return 0; + } + PlayerGetDestCoords(&x, &y); + objx = mapObject->coords2.x; + objy = mapObject->coords2.y; + minx = objx - mapObject->trainerRange_berryTreeId; + miny = objy - mapObject->trainerRange_berryTreeId; + maxx = objx + mapObject->trainerRange_berryTreeId; + maxy = objy + mapObject->trainerRange_berryTreeId; + if (minx > x || maxx < x || miny > y || maxy < y) + { + return 0; + } + return 1; +} -- cgit v1.2.3 From 2e1932110b25757906c6a7c4124e1bf95c82aab8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 00:48:56 -0400 Subject: More functions governing npc trainer facing directions --- asm/field_map_obj.s | 57 ----------------------------------------------------- src/field_map_obj.c | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 57 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index fb19ddbb2..23cbb1ac1 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,63 +6,6 @@ .text - thumb_func_start sub_805CAAC -sub_805CAAC: @ 805CAAC - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r0, r1, 16 - lsls r2, 16 - lsls r3, 16 - cmp r2, r3 - ble _0805CACA - movs r2, 0x4 - lsls r0, r4, 16 - cmp r0, 0 - bge _0805CAD4 - movs r2, 0x3 - b _0805CAD4 -_0805CACA: - movs r2, 0x1 - lsls r0, 16 - cmp r0, 0 - bge _0805CAD4 - movs r2, 0x2 -_0805CAD4: - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CAAC - - thumb_func_start sub_805CADC -sub_805CADC: @ 805CADC - push {lr} - movs r0, 0x1 - lsls r1, 16 - cmp r1, 0 - bge _0805CAE8 - movs r0, 0x2 -_0805CAE8: - pop {r1} - bx r1 - thumb_func_end sub_805CADC - - thumb_func_start sub_805CAEC -sub_805CAEC: @ 805CAEC - push {lr} - movs r1, 0x4 - lsls r0, 16 - cmp r0, 0 - bge _0805CAF8 - movs r1, 0x3 -_0805CAF8: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_805CAEC - thumb_func_start sub_805CB00 sub_805CB00: @ 805CB00 push {r4-r7,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 61ec26365..e5a50362a 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1642,3 +1642,47 @@ u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject) } return 1; } + +u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + if (a2 > a3) + { + dirn = DIR_EAST; + if (a0 < 0) + { + dirn = DIR_WEST; + } + } + else + { + dirn = DIR_SOUTH; + if (a1 < 0) + { + dirn = DIR_NORTH; + } + } + return dirn; +} + +u8 sub_805CADC(s16 a0, s16 a1) +{ + u8 dirn; + dirn = DIR_SOUTH; + if (a1 < 0) + { + dirn = DIR_NORTH; + } + return dirn; +} + +u8 sub_805CAEC(s16 a0, s16 a1) +{ + u8 dirn; + dirn = DIR_EAST; + if (a0 < 0) + { + dirn = DIR_WEST; + } + return dirn; +} -- cgit v1.2.3 From caec97cb4450c48d6c00498667d3aa1848ce1650 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 21 May 2017 09:51:15 -0400 Subject: Add agbcc back to .gitignore. Fixes a804adbf16a8d59477e19b3204c1f1ae6175f59f --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 13752b437..78af8c737 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ *.bat sound/**/*.bin src/*.s +tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map -- cgit v1.2.3 From a584c604145189a31496d9f7303d8af7f22ee1ec Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 10:01:47 -0400 Subject: A few more functions for calculating map object facing directions --- asm/field_map_obj.s | 332 ---------------------------------------------------- src/field_map_obj.c | 133 ++++++++++++++++++++- 2 files changed, 131 insertions(+), 334 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 23cbb1ac1..3103002d2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,338 +6,6 @@ .text - thumb_func_start sub_805CB00 -sub_805CB00: @ 805CB00 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB3C - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CB56 - b _0805CB54 -_0805CB3C: - cmp r0, 0x4 - bne _0805CB56 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB56 -_0805CB54: - movs r0, 0x2 -_0805CB56: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CB00 - - thumb_func_start sub_805CB5C -sub_805CB5C: @ 805CB5C - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB98 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CBB2 - b _0805CBB0 -_0805CB98: - cmp r0, 0x3 - bne _0805CBB2 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CBB2 -_0805CBB0: - movs r0, 0x2 -_0805CBB2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CB5C - - thumb_func_start sub_805CBB8 -sub_805CBB8: @ 805CBB8 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CBF4 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CC0E - b _0805CC0C -_0805CBF4: - cmp r0, 0x4 - bne _0805CC0E - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC0E -_0805CC0C: - movs r0, 0x1 -_0805CC0E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CBB8 - - thumb_func_start sub_805CC14 -sub_805CC14: @ 805CC14 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC50 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CC6A - b _0805CC68 -_0805CC50: - cmp r0, 0x3 - bne _0805CC6A - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC6A -_0805CC68: - movs r0, 0x1 -_0805CC6A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CC14 - - thumb_func_start sub_805CC70 -sub_805CC70: @ 805CC70 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CCA6 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 -_0805CCA6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CC70 - - thumb_func_start sub_805CCAC -sub_805CCAC: @ 805CCAC - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CCE2 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 -_0805CCE2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CCAC - - thumb_func_start sub_805CCE8 -sub_805CCE8: @ 805CCE8 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CD1E - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 -_0805CD1E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CCE8 - - thumb_func_start sub_805CD24 -sub_805CD24: @ 805CD24 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CD5A - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 -_0805CD5A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CD24 - thumb_func_start sub_805CD60 sub_805CD60: @ 805CD60 push {r4-r6,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index e5a50362a..f042b4af1 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1665,7 +1665,7 @@ u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3) return dirn; } -u8 sub_805CADC(s16 a0, s16 a1) +u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3) { u8 dirn; dirn = DIR_SOUTH; @@ -1676,7 +1676,7 @@ u8 sub_805CADC(s16 a0, s16 a1) return dirn; } -u8 sub_805CAEC(s16 a0, s16 a1) +u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3) { u8 dirn; dirn = DIR_EAST; @@ -1686,3 +1686,132 @@ u8 sub_805CAEC(s16 a0, s16 a1) } return dirn; } + +u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = DIR_NORTH; + } + } + else if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = DIR_NORTH; + } + } + return dirn; +} + +u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = DIR_NORTH; + } + } + else if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = DIR_NORTH; + } + } + return dirn; +} + +u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = DIR_SOUTH; + } + } + else if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = DIR_SOUTH; + } + } + return dirn; +} + +u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = DIR_SOUTH; + } + } + else if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = DIR_SOUTH; + } + } + return dirn; +} + +u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + } + return dirn; +} + -- cgit v1.2.3 From 6b58aebeea98dae55c007877d256b62e79004eb7 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 10:15:44 -0400 Subject: sub_805CD60 --- asm/field_map_obj.s | 73 ----------------------------------------------------- src/field_map_obj.c | 47 +++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 80 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 3103002d2..782d5dda1 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,79 +6,6 @@ .text - thumb_func_start sub_805CD60 -sub_805CD60: @ 805CD60 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - bne _0805CD78 - movs r0, 0 - b _0805CDDC -_0805CD78: - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - mov r2, sp - mov r0, sp - ldrh r0, [r0] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r5] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r5] - mov r0, sp - ldrh r3, [r5] - ldrh r2, [r0] - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _0805CDAC - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 -_0805CDAC: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0 - bge _0805CDBA - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 -_0805CDBA: - ldr r0, _0805CDE4 @ =gUnknown_08375244 - lsls r4, r6, 2 - adds r4, r0 - mov r0, sp - movs r6, 0 - ldrsh r0, [r0, r6] - movs r6, 0 - ldrsh r1, [r5, r6] - lsls r2, 16 - asrs r2, 16 - lsls r3, 16 - asrs r3, 16 - ldr r4, [r4] - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_0805CDDC: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805CDE4: .4byte gUnknown_08375244 - thumb_func_end sub_805CD60 - thumb_func_start sub_805CDE8 sub_805CDE8: @ 805CDE8 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f042b4af1..9d4a67da3 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -34,6 +34,7 @@ void GetFieldObjectMovingCameraOffset(s16 *, s16 *); void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); +extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); struct PairedPalettes { @@ -1687,7 +1688,8 @@ u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3) return dirn; } -u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_SOUTH) @@ -1709,7 +1711,8 @@ u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_SOUTH) @@ -1731,7 +1734,8 @@ u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_NORTH) @@ -1775,7 +1779,8 @@ u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_EAST) @@ -1785,7 +1790,8 @@ u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_WEST) @@ -1795,7 +1801,8 @@ u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_SOUTH) @@ -1805,7 +1812,8 @@ u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_NORTH) @@ -1815,3 +1823,28 @@ u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } +u8 sub_805CD60(struct MapObject *mapObject, u8 a1) +{ + s16 x; + s16 y; + s16 x2; + s16 y2; + if (!FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + return 0; + } + PlayerGetDestCoords(&x, &y); + x -= mapObject->coords2.x; + y -= mapObject->coords2.y; + x2 = x; + y2 = y; + if (x2 < 0) + { + x2 = -x2; + } + if (y2 < 0) + { + y2 = -y2; + } + return gUnknown_08375244[a1](x, y, x2, y2); +} -- cgit v1.2.3 From 332fde6cb8820aa89fe759b50a65eb069cc63329 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sun, 21 May 2017 10:39:30 -0400 Subject: Update link to Windows tool binaries in INSTALL.md Fixes #294 --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 1d50d778e..b852dd126 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -21,7 +21,7 @@ Finally, build the rom. Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/devkitARM). -Then get the compiled tools from https://github.com/YamaArashi/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeruby directory. +Then get the compiled tools from https://github.com/pret/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeruby directory. You can then build pokeruby using `make` in the MSYS environment provided with devkitARM. -- cgit v1.2.3 From e263329671a49fe462e1d4226a53d3ed096eb917 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 11:30:23 -0400 Subject: sub_805CE0C and helpers --- asm/field_map_obj.s | 178 ++---------------------------------------------- include/field_map_obj.h | 2 +- src/field_map_obj.c | 75 ++++++++++++++++++-- 3 files changed, 75 insertions(+), 180 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 782d5dda1..4aa22bad2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805CDE8 -sub_805CDE8: @ 805CDE8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805CE04 @ =gMapObjects - adds r0, r2 - ldr r2, _0805CE08 @ =sub_805CE0C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805CE04: .4byte gMapObjects -_0805CE08: .4byte sub_805CE0C - thumb_func_end sub_805CDE8 - - thumb_func_start sub_805CE0C -sub_805CE0C: @ 805CE0C - push {r4,lr} - ldr r3, _0805CE28 @ =gUnknown_08375270 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805CE28: .4byte gUnknown_08375270 - thumb_func_end sub_805CE0C - - thumb_func_start sub_805CE2C -sub_805CE2C: @ 805CE2C - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CE2C - - thumb_func_start sub_805CE40 -sub_805CE40: @ 805CE40 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CE40 - - thumb_func_start sub_805CE6C -sub_805CE6C: @ 805CE6C - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CEA2 - ldr r4, _0805CEAC @ =gUnknown_0837520C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805CEA2: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805CEAC: .4byte gUnknown_0837520C - thumb_func_end sub_805CE6C - - thumb_func_start sub_805CEB0 -sub_805CEB0: @ 805CEB0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805CECE - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805CED6 -_0805CECE: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805CED8 -_0805CED6: - movs r0, 0 -_0805CED8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CEB0 - - thumb_func_start sub_805CEE0 -sub_805CEE0: @ 805CEE0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805CF24 @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805CF10 - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805CF10: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805CF24: .4byte gUnknown_08375240 - thumb_func_end sub_805CEE0 - thumb_func_start sub_805CF28 sub_805CF28: @ 805CF28 push {lr} @@ -6526,6 +6353,11 @@ sub_805FD08: @ 805FD08 thumb_func_start npc_reset npc_reset: @ 805FD18 +@ mapObject->mapobj_bit_1 = 0; +@ mapObject->mapobj_bit_6 = 0; +@ mapObject->mapobj_bit_7 = 0; +@ mapObject->mapobj_unk_1C = 0xff; +@ sprite->data1 = 0; ldrb r3, [r0] movs r2, 0x3 negs r2, r2 diff --git a/include/field_map_obj.h b/include/field_map_obj.h index dfc41d38b..ca0852a96 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -6,6 +6,6 @@ void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); -void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)()); +void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)()); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 9d4a67da3..f6ebbee68 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -35,6 +35,7 @@ void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); +extern u16 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1505,19 +1506,19 @@ u16 npc_paltag_by_palslot(u8 a) return 0x11FF; } -u32 sub_805C8A8(void); +u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite); void sub_805C884(struct Sprite *sprite) { meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8); } -u32 sub_805C8A8(void) +u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite) { return 0; } -u32 sub_805C8D0(struct MapObject *, struct Sprite *); +u8 sub_805C8D0(struct MapObject *, struct Sprite *); void sub_805C8AC(struct Sprite *sprite) { @@ -1526,16 +1527,16 @@ void sub_805C8AC(struct Sprite *sprite) extern u8 (*const gUnknown_08375224[])(); -u32 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite) { return gUnknown_08375224[sprite->data1](mapObject, sprite); } -void npc_reset(); +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) { - npc_reset(mapObject); + npc_reset(mapObject, sprite); sprite->data1 = 1; return 1; } @@ -1848,3 +1849,65 @@ u8 sub_805CD60(struct MapObject *mapObject, u8 a1) } return gUnknown_08375244[a1](x, y, x2, y2); } + +u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805CDE8(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805CE0C); +} + +u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375270[sprite->data1](mapObject, sprite); +} + +u16 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u16 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u16 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u16 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u16 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} -- cgit v1.2.3 From 901fef9a5c6d06e3cd84a4128576bcacedc0c77f Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 11:53:38 -0400 Subject: sub_805CF28 and helpers --- asm/field_map_obj.s | 215 ---------------------------------------------------- src/field_map_obj.c | 94 +++++++++++++++++++++-- 2 files changed, 88 insertions(+), 221 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 4aa22bad2..75f4abb55 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,221 +6,6 @@ .text - thumb_func_start sub_805CF28 -sub_805CF28: @ 805CF28 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805CF44 @ =gMapObjects - adds r0, r2 - ldr r2, _0805CF48 @ =sub_805CF4C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805CF44: .4byte gMapObjects -_0805CF48: .4byte sub_805CF4C - thumb_func_end sub_805CF28 - - thumb_func_start sub_805CF4C -sub_805CF4C: @ 805CF4C - push {r4,lr} - ldr r3, _0805CF68 @ =gUnknown_08375284 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805CF68: .4byte gUnknown_08375284 - thumb_func_end sub_805CF4C - - thumb_func_start sub_805CF6C -sub_805CF6C: @ 805CF6C - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CF6C - - thumb_func_start sub_805CF80 -sub_805CF80: @ 805CF80 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CF80 - - thumb_func_start sub_805CFAC -sub_805CFAC: @ 805CFAC - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CFE0 - ldr r5, _0805CFDC @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805CFE2 - .align 2, 0 -_0805CFDC: .4byte gUnknown_0837520C -_0805CFE0: - movs r0, 0 -_0805CFE2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805CFAC - - thumb_func_start sub_805CFE8 -sub_805CFE8: @ 805CFE8 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805CFFC - movs r0, 0 - b _0805D002 -_0805CFFC: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D002: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CFE8 - - thumb_func_start sub_805D008 -sub_805D008: @ 805D008 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805D050 @ =gUnknown_083752A0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805D046 - strh r7, [r6, 0x30] -_0805D046: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D050: .4byte gUnknown_083752A0 - thumb_func_end sub_805D008 - - thumb_func_start sub_805D054 -sub_805D054: @ 805D054 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D054 - - thumb_func_start sub_805D084 -sub_805D084: @ 805D084 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D0A2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805D0A2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D084 - thumb_func_start sub_805D0AC sub_805D0AC: @ 805D0AC push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f6ebbee68..84d3d1f01 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -35,7 +35,8 @@ void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); -extern u16 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1577,6 +1578,7 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } +extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_08375240[4]; extern u8 sub_805FF20(struct MapObject *, u8); @@ -1862,21 +1864,21 @@ u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite) return gUnknown_08375270[sprite->data1](mapObject, sprite); } -u16 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); sprite->data1 = 1; return 1; } -u16 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); sprite->data1 = 2; return 1; } -u16 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) { @@ -1887,7 +1889,7 @@ u16 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u16 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { @@ -1897,7 +1899,7 @@ u16 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u16 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) { u8 direction; u8 directions[4]; @@ -1911,3 +1913,83 @@ u16 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) sprite->data1 = 1; return 1; } + +u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805CF28(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805CF4C); +} + +u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375284[sprite->data1](mapObject, sprite); +} + +u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805CF80(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805CFAC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + +u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D008(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752A0, 2); + direction = directions[Random() & 1]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805D054(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + +u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} -- cgit v1.2.3 From f09c9bf57bfecb735fe45e9ecca260231bca51a6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 12:03:47 -0400 Subject: sub_805D0AC and helpers --- asm/field_map_obj.s | 215 ---------------------------------------------------- src/field_map_obj.c | 85 ++++++++++++++++++++- 2 files changed, 84 insertions(+), 216 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 75f4abb55..bbd6a4c36 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,221 +6,6 @@ .text - thumb_func_start sub_805D0AC -sub_805D0AC: @ 805D0AC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D0C8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D0CC @ =sub_805D0D0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D0C8: .4byte gMapObjects -_0805D0CC: .4byte sub_805D0D0 - thumb_func_end sub_805D0AC - - thumb_func_start sub_805D0D0 -sub_805D0D0: @ 805D0D0 - push {r4,lr} - ldr r3, _0805D0EC @ =gUnknown_083752A4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D0EC: .4byte gUnknown_083752A4 - thumb_func_end sub_805D0D0 - - thumb_func_start sub_805D0F0 -sub_805D0F0: @ 805D0F0 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D0F0 - - thumb_func_start sub_805D104 -sub_805D104: @ 805D104 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D104 - - thumb_func_start sub_805D130 -sub_805D130: @ 805D130 - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D164 - ldr r5, _0805D160 @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805D166 - .align 2, 0 -_0805D160: .4byte gUnknown_0837520C -_0805D164: - movs r0, 0 -_0805D166: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805D130 - - thumb_func_start sub_805D16C -sub_805D16C: @ 805D16C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D180 - movs r0, 0 - b _0805D186 -_0805D180: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D186: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D16C - - thumb_func_start sub_805D18C -sub_805D18C: @ 805D18C - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805D1D4 @ =gUnknown_083752C0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805D1CA - strh r7, [r6, 0x30] -_0805D1CA: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D1D4: .4byte gUnknown_083752C0 - thumb_func_end sub_805D18C - - thumb_func_start sub_805D1D8 -sub_805D1D8: @ 805D1D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D1D8 - - thumb_func_start sub_805D208 -sub_805D208: @ 805D208 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D226 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805D226: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D208 - thumb_func_start sub_805D230 sub_805D230: @ 805D230 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 84d3d1f01..4de55e0af 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -37,6 +37,7 @@ u8 FindFieldObjectPaletteIndexByTag(u16); extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1578,8 +1579,9 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_08375240[4]; +extern const u8 gUnknown_083752A0[2]; +extern const u8 gUnknown_083752C0[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -1993,3 +1995,84 @@ u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) } return 0; } + +u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D0AC(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D0D0); +} + +u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752A4[sprite->data1](mapObject, sprite); +} + +u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D104(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D130(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + +u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D18C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752C0, 2); + direction = directions[Random() & 1]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805D1D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + +u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + -- cgit v1.2.3 From a8314b86903e5168e017345a4a0d1a5e9ec480aa Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 12:10:42 -0400 Subject: sub_805D230 and helpers --- asm/field_map_obj.s | 93 ----------------------------------------------------- src/field_map_obj.c | 36 +++++++++++++++++++++ 2 files changed, 36 insertions(+), 93 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index bbd6a4c36..4cb35a56c 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,99 +6,6 @@ .text - thumb_func_start sub_805D230 -sub_805D230: @ 805D230 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D24C @ =gMapObjects - adds r0, r2 - ldr r2, _0805D250 @ =sub_805D254 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D24C: .4byte gMapObjects -_0805D250: .4byte sub_805D254 - thumb_func_end sub_805D230 - - thumb_func_start sub_805D254 -sub_805D254: @ 805D254 - push {r4,lr} - ldr r3, _0805D270 @ =gUnknown_083752C4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D270: .4byte gUnknown_083752C4 - thumb_func_end sub_805D254 - - thumb_func_start sub_805D274 -sub_805D274: @ 805D274 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D274 - - thumb_func_start sub_805D2A0 -sub_805D2A0: @ 805D2A0 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - bne _0805D2B2 - movs r0, 0 - b _0805D2B8 -_0805D2B2: - movs r0, 0x2 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D2B8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D2A0 - - thumb_func_start sub_805D2C0 -sub_805D2C0: @ 805D2C0 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0 - bx lr - thumb_func_end sub_805D2C0 - thumb_func_start FieldObjectCB_BerryTree FieldObjectCB_BerryTree: @ 805D2D0 push {r4,r5,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 4de55e0af..c31db8a4b 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -38,6 +38,7 @@ extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -2076,3 +2077,38 @@ u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) return 0; } +u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D230(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D254); +} + +u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752C4[sprite->data1](mapObject, sprite); +} + +u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + sprite->data1 = 2; + return 1; + } + return 0; +} + +u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 0; + return 0; +} -- cgit v1.2.3 From aa2559d403a6bb4ea7978018709cfaede25552c1 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sat, 7 Jan 2017 20:08:40 +0100 Subject: First matching daycare_count_pokemon --- src/daycare.c | 72 ++++++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 18 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index 1729efb2a..2d4782ea1 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -2,30 +2,66 @@ #include "pokemon.h" #include "string_util.h" -u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest) -{ - s8 nickname[POKEMON_NAME_LENGTH * 2]; +u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest){ + s8 nickname[POKEMON_NAME_LENGTH * 2]; - GetMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); + GetMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); } -u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest) -{ - s8 nickname[POKEMON_NAME_LENGTH * 2]; +u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest){ + s8 nickname[POKEMON_NAME_LENGTH * 2]; - GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); + GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); } -u8 daycare_count_pokemon(struct BoxPokemon *daycare_data) -{ - u8 i, count; - count = 0; +u8 daycare_count_pokemon(void *mon){ + u32 loop_counter; + u32 r5; - for (i = 0; i <= 1; i++) - if (GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) - count++; + r5 = 0; + loop_counter = 0; - return count; + while(loop_counter <= 1){ + if(GetBoxMonData(mon + loop_counter * 80, MON_DATA_SPECIES) != 0){ + r5 = ((r5 + 1) << 24) >> 24; + } + + loop_counter = ((loop_counter + 1) << 24) >> 24; + } + + return r5; } + +/*__attribute__((naked)) +void daycare_count_pokemon(){ + asm(".syntax unified\n\ + push {r4-r6,lr} + adds r6, r0, 0 + movs r5, 0 + movs r4, 0 +_080412F8: + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 4 + adds r0, r6, r0 + movs r1, 0xB + bl GetBoxMonData + cmp r0, 0 + beq _08041310 + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 +_08041310: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x1 + bls _080412F8 + adds r0, r5, 0 + pop {r4-r6} + pop {r1} + bx r1 + .syntax divided\n"); +}*/ -- cgit v1.2.3 From 135bbb721e0b7e34ad19d818e097add64693ab15 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sat, 7 Jan 2017 20:38:50 +0100 Subject: Update the code style and tidy up daycare_count_pokemon --- src/daycare.c | 58 ++++++++++++---------------------------------------------- 1 file changed, 12 insertions(+), 46 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index 2d4782ea1..23f0305d8 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -2,66 +2,32 @@ #include "pokemon.h" #include "string_util.h" -u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest){ +u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest) +{ s8 nickname[POKEMON_NAME_LENGTH * 2]; GetMonData(mon, MON_DATA_NICKNAME, nickname); return StringCopy10(dest, nickname); } -u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest){ +u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest) +{ s8 nickname[POKEMON_NAME_LENGTH * 2]; GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); return StringCopy10(dest, nickname); } -u8 daycare_count_pokemon(void *mon){ - u32 loop_counter; - u32 r5; +u8 daycare_count_pokemon(struct BoxPokemon *daycare_data) +{ + u8 i, count; + count = 0; - r5 = 0; - loop_counter = 0; - - while(loop_counter <= 1){ - if(GetBoxMonData(mon + loop_counter * 80, MON_DATA_SPECIES) != 0){ - r5 = ((r5 + 1) << 24) >> 24; + for(i = 0;i <= 1;i++) { + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) { + count++; } - - loop_counter = ((loop_counter + 1) << 24) >> 24; } - return r5; + return count; } - -/*__attribute__((naked)) -void daycare_count_pokemon(){ - asm(".syntax unified\n\ - push {r4-r6,lr} - adds r6, r0, 0 - movs r5, 0 - movs r4, 0 -_080412F8: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r0, r6, r0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _08041310 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 -_08041310: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bls _080412F8 - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - .syntax divided\n"); -}*/ -- cgit v1.2.3 From 4a9cb7aa4de9571f79c46e0df1733b26849c0904 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sat, 7 Jan 2017 23:08:51 +0100 Subject: Decompile daycare_empty_slot and unify the function prototype of daycare_count_pokemon. Presumably identify the daycare data in the save structure --- asm/daycare.s | 91 -------------------------------------------------------- include/global.h | 6 ++-- src/daycare.c | 75 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 94 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 47a84e8e0..7307e8365 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,97 +6,6 @@ .text - thumb_func_start sub_8041324 -sub_8041324: @ 8041324 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - mov r10, r1 - movs r7, 0 - movs r5, 0 - mov r6, r10 - adds r6, 0x74 - movs r0, 0x1 - mov r8, r0 -_0804133E: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 4 - mov r1, r9 - adds r4, r1, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _0804136E - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - movs r1, 0xC - bl GetBoxMonData - adds r1, r0, 0 - cmp r1, 0 - bne _0804136E - lsls r0, r5, 1 - adds r0, r6, r0 - b _08041374 -_0804136E: - lsls r0, r5, 1 - adds r0, r6, r0 - mov r1, r8 -_08041374: - strh r1, [r0] - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x1 - bls _0804133E - mov r0, r10 - str r7, [r0, 0x70] - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8041324 - - thumb_func_start daycare_empty_slot -daycare_empty_slot: @ 8041394 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 -_0804139A: - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 4 - adds r0, r5, r0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - bne _080413B2 - lsls r0, r4, 24 - asrs r0, 24 - b _080413C0 -_080413B2: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bls _0804139A - movs r0, 0x1 - negs r0, r0 -_080413C0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end daycare_empty_slot - thumb_func_start sub_80413C8 sub_80413C8: @ 80413C8 push {r4-r7,lr} diff --git a/include/global.h b/include/global.h index 5edb3239f..2045f5b43 100644 --- a/include/global.h +++ b/include/global.h @@ -536,9 +536,9 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2D94*/ OldMan oldMan; /*0x2DC0*/ u8 unk_2DC0[0x14]; /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff - /*0x2DFC*/ u8 filler_2DFC[0x8]; - /*0x2E04*/ SB_Struct sbStruct; - /*0x2F9C*/ u8 filler_2F9C[0xA0]; + /*0x2DFC*/ u8 filler_2DFC[0x100]; + /*0x2EFC*/ struct SB1_2EFC_Struct sb1_2EFC_struct[5]; + /*0x2F9C*/ struct BoxPokemon filler_2F9C[2]; // daycare related /*0x303C*/ u8 filler_303C[0x38]; /*0x3074*/ u8 filler_3074[0x42]; /*0x30B6*/ u8 filler_30B6; diff --git a/src/daycare.c b/src/daycare.c index 23f0305d8..864d86aa8 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1,6 +1,7 @@ #include "global.h" #include "pokemon.h" #include "string_util.h" +#include "asm.h" u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest) { @@ -31,3 +32,77 @@ u8 daycare_count_pokemon(struct BoxPokemon *daycare_data) return count; } + +__attribute__((naked)) +void sub_8041324(struct BoxPokemon * box_pokemon, void * void_pointer){ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + mov r9, r0\n\ + mov r10, r1\n\ + movs r7, 0\n\ + movs r5, 0\n\ + mov r6, r10\n\ + adds r6, 0x74\n\ + movs r0, 0x1\n\ + mov r8, r0\n\ +_0804133E:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 4\n\ + mov r1, r9\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetBoxMonData\n\ + cmp r0, 0\n\ + beq _0804136E\n\ + adds r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetBoxMonData\n\ + adds r1, r0, 0\n\ + cmp r1, 0\n\ + bne _0804136E\n\ + lsls r0, r5, 1\n\ + adds r0, r6, r0\n\ + b _08041374\n\ +_0804136E:\n\ + lsls r0, r5, 1\n\ + adds r0, r6, r0\n\ + mov r1, r8\n\ +_08041374:\n\ + strh r1, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x1\n\ + bls _0804133E\n\ + mov r0, r10\n\ + str r7, [r0, 0x70]\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\ + .syntax divided\n"); +} + +s8 daycare_empty_slot(struct BoxPokemon * daycare_data){ + u8 i; + + for(i = 0;i <= 1;i++){ + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0){ + return i; + } + } + + return -1; +} -- cgit v1.2.3 From 8252c797673ed04e64afafc59ebbc6a75f4764b9 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sat, 21 Jan 2017 16:40:54 +0100 Subject: Non-matching sub_804151C --- src/daycare.c | 230 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 222 insertions(+), 8 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index 864d86aa8..9bc51a025 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -3,6 +3,8 @@ #include "string_util.h" #include "asm.h" +extern u8 gUnknown_03005CE0; + u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest) { s8 nickname[POKEMON_NAME_LENGTH * 2]; @@ -25,16 +27,17 @@ u8 daycare_count_pokemon(struct BoxPokemon *daycare_data) count = 0; for(i = 0;i <= 1;i++) { - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) { - count++; - } + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) { + count++; + } } return count; } __attribute__((naked)) -void sub_8041324(struct BoxPokemon * box_pokemon, void * void_pointer){ +void sub_8041324(struct BoxPokemon * box_pokemon, void * void_pointer) +{ asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r10\n\ @@ -95,14 +98,225 @@ _08041374:\n\ .syntax divided\n"); } -s8 daycare_empty_slot(struct BoxPokemon * daycare_data){ +s8 daycare_empty_slot(struct BoxPokemon * daycare_data) +{ u8 i; for(i = 0;i <= 1;i++){ - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0){ - return i; - } + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0){ + return i; + } } return -1; } + +/*void sub_80413C8(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished + s8 empty_slot; + + empty_slot = daycare_empty_slot(daycare_data); + if(sub_80A2B94(mon) != 0){ // if the mon holds a mail? + u8 empty_slot_times_56 = empty_slot * 56; + u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; + StringCopy(something2, gSaveBlock2); + PadNameString(something2, 0xFC); + something2 += 8; + pokemon_get_nick(mon, something2); + u8 pokerus = GetMonData(mon, MON_DATA_64); + something1 += (u8 * daycare_data) +}*/ + +__attribute__((naked)) +void sub_80413C8() +{ + // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: + // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC + // the ldm/stm section probably copies some struct, but I'm not sure how the code would look + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + adds r7, r0, 0\n\ + mov r8, r1\n\ + mov r0, r8\n\ + bl daycare_empty_slot\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + mov r9, r4\n\ + adds r0, r7, 0\n\ + bl sub_80A2B94\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0804144A\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + lsls r4, r0, 3\n\ + subs r4, r0\n\ + lsls r4, 3\n\ + adds r5, r4, 0\n\ + adds r5, 0xA0\n\ + add r5, r8\n\ + adds r6, r5, 0\n\ + adds r6, 0x24\n\ + ldr r1, _08041490 @ =gSaveBlock2\n\ + adds r0, r6, 0\n\ + bl StringCopy\n\ + adds r0, r6, 0\n\ + movs r1, 0xFC\n\ + bl PadNameString\n\ + adds r6, 0x8\n\ + adds r0, r7, 0\n\ + adds r1, r6, 0\n\ + bl pokemon_get_nick\n\ + adds r0, r7, 0\n\ + movs r1, 0x40\n\ + bl GetMonData\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + add r4, r8\n\ + ldr r2, _08041494 @ =gSaveBlock1\n\ + lsls r1, r0, 3\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + adds r4, 0xA0\n\ + ldr r0, _08041498 @ =0x00002b4c\n\ + adds r1, r0\n\ + ldm r1!, {r0,r2,r3}\n\ + stm r4!, {r0,r2,r3}\n\ + ldm r1!, {r0,r2,r3}\n\ + stm r4!, {r0,r2,r3}\n\ + ldm r1!, {r0,r2,r3}\n\ + stm r4!, {r0,r2,r3}\n\ + adds r0, r7, 0\n\ + bl sub_80A2DF8\n\ +_0804144A:\n\ + mov r2, r9\n\ + lsls r4, r2, 24\n\ + asrs r4, 24\n\ + lsls r5, r4, 2\n\ + adds r4, r5, r4\n\ + lsls r4, 4\n\ + add r4, r8\n\ + adds r0, r4, 0\n\ + adds r1, r7, 0\n\ + movs r2, 0x50\n\ + bl memcpy\n\ + adds r0, r4, 0\n\ + bl pokemon_restore_pp\n\ + movs r0, 0x88\n\ + lsls r0, 1\n\ + add r0, r8\n\ + adds r0, r5\n\ + movs r1, 0\n\ + str r1, [r0]\n\ + adds r0, r7, 0\n\ + bl ZeroMonData\n\ + bl party_compaction\n\ + bl CalculatePlayerPartyCount\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_08041490: .4byte gSaveBlock2\n\ +_08041494: .4byte gSaveBlock1\n\ +_08041498: .4byte 0x00002b4c\n\ + .syntax divided\n"); +} + +void daycare_send() +{ + sub_80413C8(gPlayerParty + gUnknown_03005CE0, gSaveBlock1.filler_2F9C); +} + +void sub_80417F4(u8 *); + +void sub_80414C0(struct BoxPokemon * daycare_data) +{ + u32 second_species; + if((GetBoxMonData(daycare_data + 1, MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(daycare_data, MON_DATA_SPECIES)) == 0)){ + memcpy(daycare_data, daycare_data + 1, 80); + ZeroBoxMonData(daycare_data + 1); + memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); + *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); + *((u32 *)(daycare_data) + 69) = second_species; + sub_80417F4((u8 *) (daycare_data + 1) + 0x88); + } +} + +u8 TryIncrementMonLevel(struct Pokemon *); +extern u16 word_2024E82; + +void sub_804151C(struct Pokemon * mon) +{ + u32 i; + u8 r6; + u16 temp; + u16 minus1; + i = 0; + minus1 = 0xffff; + + while(i <= 100){ + if(TryIncrementMonLevel(mon) == 0) goto end; + r6 = 1; + i++; + while((temp = sub_803B7C8(mon, r6)) != 0){ + r6 = 0; + if(temp == minus1){ + DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); + } + } + } + end: + + CalculateMonStats(mon); +} + +#ifdef NEVERDEFINED +sub_804151C: @ 804151C + push {r4-r7,lr} + adds r4, r0, 0 + movs r5, 0 + ldr r7, _08041538 @ =0x0000ffff +_08041524: <-----------------------------------+ + adds r0, r4, 0 | + bl TryIncrementMonLevel | + lsls r0, 24 | + cmp r0, 0 | + beq _08041560 break ----------------+ | + movs r6, 0x1 | | + adds r5, 0x1 | | + b _0804154C --------+ | | + .align 2, 0 | | | +_08041538: .4byte 0x0000ffff | | | +_0804153C: <-----------------------+---+---+ | + movs r6, 0 | | | | + cmp r0, r7 | | | | + bne _0804154C --------------------------->| | | | + ldr r0, _0804156C @ =word_2024E82 | | | | + ldrh r1, [r0] | | | | + adds r0, r4, 0 | | | | + bl DeleteFirstMoveAndGiveMoveToMon | | | | +_0804154C: <-------+ | | | + adds r0, r4, 0 | | | + adds r1, r6, 0 | | | + bl sub_803B7C8 | | | + lsls r0, 16 | | | + lsrs r0, 16 | | | + cmp r0, 0 | | | + bne _0804153C --------------------------------+---+ | + cmp r5, 0x63 | | + ble _08041524 --------------------------------+-------+ +_08041560: <-----------+ + adds r0, r4, 0 + bl CalculateMonStats + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804156C: .4byte word_2024E82 +#endif -- cgit v1.2.3 From 8e8e4334ce637e98bcc8348be3d73c19a747ec70 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sat, 11 Feb 2017 08:26:13 +0100 Subject: Matching sub_804151C --- asm/daycare.s | 205 ---------------------------------------------------------- src/daycare.c | 73 ++++----------------- 2 files changed, 13 insertions(+), 265 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 7307e8365..cd1b7091f 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,211 +6,6 @@ .text - thumb_func_start sub_80413C8 -sub_80413C8: @ 80413C8 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r7, r0, 0 - mov r8, r1 - mov r0, r8 - bl daycare_empty_slot - lsls r0, 24 - lsrs r4, r0, 24 - mov r9, r4 - adds r0, r7, 0 - bl MonHasMail - lsls r0, 24 - cmp r0, 0 - beq _0804144A - lsls r0, r4, 24 - asrs r0, 24 - lsls r4, r0, 3 - subs r4, r0 - lsls r4, 3 - adds r5, r4, 0 - adds r5, 0xA0 - add r5, r8 - adds r6, r5, 0 - adds r6, 0x24 - ldr r1, _08041490 @ =gSaveBlock2 - adds r0, r6, 0 - bl StringCopy - adds r0, r6, 0 - movs r1, 0xFC - bl PadNameString - adds r6, 0x8 - adds r0, r7, 0 - adds r1, r6, 0 - bl pokemon_get_nick - adds r0, r7, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 24 - lsrs r0, 24 - add r4, r8 - ldr r2, _08041494 @ =gSaveBlock1 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - adds r4, 0xA0 - ldr r0, _08041498 @ =0x00002b4c - adds r1, r0 - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - ldm r1!, {r0,r2,r3} - stm r4!, {r0,r2,r3} - adds r0, r7, 0 - bl TakeMailFromMon -_0804144A: - mov r2, r9 - lsls r4, r2, 24 - asrs r4, 24 - lsls r5, r4, 2 - adds r4, r5, r4 - lsls r4, 4 - add r4, r8 - adds r0, r4, 0 - adds r1, r7, 0 - movs r2, 0x50 - bl memcpy - adds r0, r4, 0 - bl BoxMonRestorePP - movs r0, 0x88 - lsls r0, 1 - add r0, r8 - adds r0, r5 - movs r1, 0 - str r1, [r0] - adds r0, r7, 0 - bl ZeroMonData - bl party_compaction - bl CalculatePlayerPartyCount - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08041490: .4byte gSaveBlock2 -_08041494: .4byte gSaveBlock1 -_08041498: .4byte 0x00002b4c - thumb_func_end sub_80413C8 - - thumb_func_start daycare_send -daycare_send: @ 804149C - push {lr} - ldr r0, _080414B4 @ =gLastFieldPokeMenuOpened - ldrb r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080414B8 @ =gPlayerParty - adds r0, r1 - ldr r1, _080414BC @ =gSaveBlock1 + 0x2F9C - bl sub_80413C8 - pop {r0} - bx r0 - .align 2, 0 -_080414B4: .4byte gLastFieldPokeMenuOpened -_080414B8: .4byte gPlayerParty -_080414BC: .4byte gSaveBlock1 + 0x2F9C - thumb_func_end daycare_send - - thumb_func_start sub_80414C0 -sub_80414C0: @ 80414C0 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r5, 0 - adds r4, 0x50 - adds r0, r4, 0 - movs r1, 0xB - bl GetBoxMonData - cmp r0, 0 - beq _08041516 - adds r0, r5, 0 - movs r1, 0xB - bl GetBoxMonData - adds r6, r0, 0 - cmp r6, 0 - bne _08041516 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x50 - bl memcpy - adds r0, r4, 0 - bl ZeroBoxMonData - adds r0, r5, 0 - adds r0, 0xA0 - adds r4, 0x88 - adds r1, r4, 0 - movs r2, 0x38 - bl memcpy - movs r0, 0x88 - lsls r0, 1 - adds r2, r5, r0 - adds r0, 0x4 - adds r1, r5, r0 - ldr r0, [r1] - str r0, [r2] - str r6, [r1] - adds r0, r4, 0 - bl sub_80417F4 -_08041516: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80414C0 - - thumb_func_start sub_804151C -sub_804151C: @ 804151C - push {r4-r7,lr} - adds r4, r0, 0 - movs r5, 0 - ldr r7, _08041538 @ =0x0000ffff -_08041524: - adds r0, r4, 0 - bl TryIncrementMonLevel - lsls r0, 24 - cmp r0, 0 - beq _08041560 - movs r6, 0x1 - adds r5, 0x1 - b _0804154C - .align 2, 0 -_08041538: .4byte 0x0000ffff -_0804153C: - movs r6, 0 - cmp r0, r7 - bne _0804154C - ldr r0, _0804156C @ =word_2024E82 - ldrh r1, [r0] - adds r0, r4, 0 - bl DeleteFirstMoveAndGiveMoveToMon -_0804154C: - adds r0, r4, 0 - adds r1, r6, 0 - bl sub_803B7C8 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0 - bne _0804153C - cmp r5, 0x63 - ble _08041524 -_08041560: - adds r0, r4, 0 - bl CalculateMonStats - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804156C: .4byte word_2024E82 - thumb_func_end sub_804151C - thumb_func_start sub_8041570 sub_8041570: @ 8041570 push {r4-r7,lr} diff --git a/src/daycare.c b/src/daycare.c index 9bc51a025..e1ce7fb77 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -27,9 +27,9 @@ u8 daycare_count_pokemon(struct BoxPokemon *daycare_data) count = 0; for(i = 0;i <= 1;i++) { - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) { - count++; - } + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) { + count++; + } } return count; @@ -103,9 +103,9 @@ s8 daycare_empty_slot(struct BoxPokemon * daycare_data) u8 i; for(i = 0;i <= 1;i++){ - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0){ - return i; - } + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0){ + return i; + } } return -1; @@ -131,7 +131,7 @@ void sub_80413C8() { // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC - // the ldm/stm section probably copies some struct, but I'm not sure how the code would look + // the ldm/stm section probably copies some struct, but I'm not sure how the code would look asm(".syntax unified\n\ push {r4-r7,lr}\n\ mov r7, r9\n\ @@ -253,70 +253,23 @@ extern u16 word_2024E82; void sub_804151C(struct Pokemon * mon) { - u32 i; + s32 i; u8 r6; u16 temp; - u16 minus1; - i = 0; - minus1 = 0xffff; - while(i <= 100){ - if(TryIncrementMonLevel(mon) == 0) goto end; + for(i = 0; i < 100; i++){ + if(TryIncrementMonLevel(mon) == FALSE) goto end; + r6 = 1; - i++; while((temp = sub_803B7C8(mon, r6)) != 0){ r6 = 0; - if(temp == minus1){ + if(temp == 0xffff){ DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); } } } + end: CalculateMonStats(mon); } - -#ifdef NEVERDEFINED -sub_804151C: @ 804151C - push {r4-r7,lr} - adds r4, r0, 0 - movs r5, 0 - ldr r7, _08041538 @ =0x0000ffff -_08041524: <-----------------------------------+ - adds r0, r4, 0 | - bl TryIncrementMonLevel | - lsls r0, 24 | - cmp r0, 0 | - beq _08041560 break ----------------+ | - movs r6, 0x1 | | - adds r5, 0x1 | | - b _0804154C --------+ | | - .align 2, 0 | | | -_08041538: .4byte 0x0000ffff | | | -_0804153C: <-----------------------+---+---+ | - movs r6, 0 | | | | - cmp r0, r7 | | | | - bne _0804154C --------------------------->| | | | - ldr r0, _0804156C @ =word_2024E82 | | | | - ldrh r1, [r0] | | | | - adds r0, r4, 0 | | | | - bl DeleteFirstMoveAndGiveMoveToMon | | | | -_0804154C: <-------+ | | | - adds r0, r4, 0 | | | - adds r1, r6, 0 | | | - bl sub_803B7C8 | | | - lsls r0, 16 | | | - lsrs r0, 16 | | | - cmp r0, 0 | | | - bne _0804153C --------------------------------+---+ | - cmp r5, 0x63 | | - ble _08041524 --------------------------------+-------+ -_08041560: <-----------+ - adds r0, r4, 0 - bl CalculateMonStats - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804156C: .4byte word_2024E82 -#endif -- cgit v1.2.3 From b60ad4ccba10b7c570b633edcdb74c64055a0aa4 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 14 May 2017 17:50:01 +0200 Subject: Make it build with all the label changes --- include/asm.inc.h | 2 +- include/global.h | 4 ++-- src/daycare.c | 12 ++++++------ 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/include/asm.inc.h b/include/asm.inc.h index c28050929..9a404db59 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -31,7 +31,7 @@ void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); // src/daycare.o -u8 daycare_count_pokemon(u8 *); +u8 daycare_count_pokemon(struct BoxPokemon *); // asm/daycare.o void sub_8041324(struct BoxPokemon *, void *); diff --git a/include/global.h b/include/global.h index 2045f5b43..443b2a1d2 100644 --- a/include/global.h +++ b/include/global.h @@ -536,8 +536,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2D94*/ OldMan oldMan; /*0x2DC0*/ u8 unk_2DC0[0x14]; /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff - /*0x2DFC*/ u8 filler_2DFC[0x100]; - /*0x2EFC*/ struct SB1_2EFC_Struct sb1_2EFC_struct[5]; + /*0x2DFC*/ u8 filler_2DFC[0x8]; + /*0x2E04*/ SB_Struct sbStruct; /*0x2F9C*/ struct BoxPokemon filler_2F9C[2]; // daycare related /*0x303C*/ u8 filler_303C[0x38]; /*0x3074*/ u8 filler_3074[0x42]; diff --git a/src/daycare.c b/src/daycare.c index e1ce7fb77..ca480329b 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -3,7 +3,7 @@ #include "string_util.h" #include "asm.h" -extern u8 gUnknown_03005CE0; +extern u8 gLastFieldPokeMenuOpened; u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest) { @@ -115,7 +115,7 @@ s8 daycare_empty_slot(struct BoxPokemon * daycare_data) s8 empty_slot; empty_slot = daycare_empty_slot(daycare_data); - if(sub_80A2B94(mon) != 0){ // if the mon holds a mail? + if(MonHasMail(mon) != 0){ // if the mon holds a mail? u8 empty_slot_times_56 = empty_slot * 56; u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; StringCopy(something2, gSaveBlock2); @@ -145,7 +145,7 @@ void sub_80413C8() lsrs r4, r0, 24\n\ mov r9, r4\n\ adds r0, r7, 0\n\ - bl sub_80A2B94\n\ + bl MonHasMail\n\ lsls r0, 24\n\ cmp r0, 0\n\ beq _0804144A\n\ @@ -190,7 +190,7 @@ void sub_80413C8() ldm r1!, {r0,r2,r3}\n\ stm r4!, {r0,r2,r3}\n\ adds r0, r7, 0\n\ - bl sub_80A2DF8\n\ + bl TakeMailFromMon\n\ _0804144A:\n\ mov r2, r9\n\ lsls r4, r2, 24\n\ @@ -204,7 +204,7 @@ _0804144A:\n\ movs r2, 0x50\n\ bl memcpy\n\ adds r0, r4, 0\n\ - bl pokemon_restore_pp\n\ + bl BoxMonRestorePP\n\ movs r0, 0x88\n\ lsls r0, 1\n\ add r0, r8\n\ @@ -230,7 +230,7 @@ _08041498: .4byte 0x00002b4c\n\ void daycare_send() { - sub_80413C8(gPlayerParty + gUnknown_03005CE0, gSaveBlock1.filler_2F9C); + sub_80413C8(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.filler_2F9C); } void sub_80417F4(u8 *); -- cgit v1.2.3 From 6563ec9bada46058c095be12ff1719a525a6f799 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 14 May 2017 18:35:47 +0200 Subject: Name gSaveBlock1.daycareData, decompile sub_8041648 --- asm/daycare.s | 115 ------------------------------------------------ include/global.h | 2 +- src/daycare.c | 118 +++++++++++++++++++++++++++++++++++++++++++++++--- src/mori_debug_menu.c | 4 +- src/record_mixing.c | 2 +- 5 files changed, 117 insertions(+), 124 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index cd1b7091f..962a0555a 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,121 +6,6 @@ .text - thumb_func_start sub_8041570 -sub_8041570: @ 8041570 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x68 - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - lsls r7, r4, 2 - adds r0, r7, r4 - lsls r0, 4 - adds r6, r5, r0 - ldr r1, _08041640 @ =gStringVar1 - adds r0, r6, 0 - bl pokemon_get_nick_ - adds r0, r6, 0 - movs r1, 0xB - bl GetBoxMonData - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - adds r0, r6, 0 - mov r1, sp - bl sub_803B4B4 - mov r0, sp - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _080415D8 - mov r0, sp - movs r1, 0x19 - bl GetMonData - movs r2, 0x88 - lsls r2, 1 - adds r1, r5, r2 - adds r1, r7 - ldr r1, [r1] - adds r0, r1 - str r0, [sp, 0x64] - add r2, sp, 0x64 - mov r0, sp - movs r1, 0x19 - bl SetMonData - mov r0, sp - bl sub_804151C -_080415D8: - ldr r0, _08041644 @ =gPlayerParty - movs r1, 0xFA - lsls r1, 1 - adds r1, r0 - mov r8, r1 - mov r0, r8 - mov r1, sp - movs r2, 0x64 - bl memcpy - lsls r0, r4, 3 - subs r0, r4 - lsls r1, r0, 3 - adds r0, r5, r1 - adds r0, 0xC0 - ldrh r0, [r0] - cmp r0, 0 - beq _08041610 - adds r4, r1, 0 - adds r4, 0xA0 - adds r4, r5, r4 - mov r0, r8 - adds r1, r4, 0 - bl GiveMailToMon2 - adds r0, r4, 0 - bl sub_80417F4 -_08041610: - bl party_compaction - adds r0, r6, 0 - bl ZeroBoxMonData - movs r2, 0x88 - lsls r2, 1 - adds r0, r5, r2 - adds r0, r7 - movs r1, 0 - str r1, [r0] - adds r0, r5, 0 - bl sub_80414C0 - bl CalculatePlayerPartyCount - mov r0, r9 - add sp, 0x68 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08041640: .4byte gStringVar1 -_08041644: .4byte gPlayerParty - thumb_func_end sub_8041570 - - thumb_func_start sub_8041648 -sub_8041648: @ 8041648 - push {lr} - ldr r0, _0804165C @ =gSaveBlock1 + 0x2F9C - ldr r1, _08041660 @ =gSpecialVar_0x8004 - ldrb r1, [r1] - bl sub_8041570 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_0804165C: .4byte gSaveBlock1 + 0x2F9C -_08041660: .4byte gSpecialVar_0x8004 - thumb_func_end sub_8041648 - thumb_func_start sub_8041664 sub_8041664: @ 8041664 push {r4,r5,lr} diff --git a/include/global.h b/include/global.h index 443b2a1d2..957181d45 100644 --- a/include/global.h +++ b/include/global.h @@ -538,7 +538,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff /*0x2DFC*/ u8 filler_2DFC[0x8]; /*0x2E04*/ SB_Struct sbStruct; - /*0x2F9C*/ struct BoxPokemon filler_2F9C[2]; // daycare related + /*0x2F9C*/ struct BoxPokemon daycareData[2]; /*0x303C*/ u8 filler_303C[0x38]; /*0x3074*/ u8 filler_3074[0x42]; /*0x30B6*/ u8 filler_30B6; diff --git a/src/daycare.c b/src/daycare.c index ca480329b..3d8de4ef6 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -118,7 +118,7 @@ s8 daycare_empty_slot(struct BoxPokemon * daycare_data) if(MonHasMail(mon) != 0){ // if the mon holds a mail? u8 empty_slot_times_56 = empty_slot * 56; u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; - StringCopy(something2, gSaveBlock2); + StringCopy(something2, gSaveBlock2.playerName); PadNameString(something2, 0xFC); something2 += 8; pokemon_get_nick(mon, something2); @@ -230,7 +230,7 @@ _08041498: .4byte 0x00002b4c\n\ void daycare_send() { - sub_80413C8(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.filler_2F9C); + sub_80413C8(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); } void sub_80417F4(u8 *); @@ -238,9 +238,9 @@ void sub_80417F4(u8 *); void sub_80414C0(struct BoxPokemon * daycare_data) { u32 second_species; - if((GetBoxMonData(daycare_data + 1, MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(daycare_data, MON_DATA_SPECIES)) == 0)){ - memcpy(daycare_data, daycare_data + 1, 80); - ZeroBoxMonData(daycare_data + 1); + if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){ + daycare_data[0] = daycare_data[1]; + ZeroBoxMonData(&daycare_data[1]); memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); *((u32 *)(daycare_data) + 69) = second_species; @@ -273,3 +273,111 @@ void sub_804151C(struct Pokemon * mon) CalculateMonStats(mon); } + +__attribute__((naked)) +u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x68\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + lsrs r4, r1, 24\n\ + lsls r7, r4, 2\n\ + adds r0, r7, r4\n\ + lsls r0, 4\n\ + adds r6, r5, r0\n\ + ldr r1, _08041640 @ =gStringVar1\n\ + adds r0, r6, 0\n\ + bl pokemon_get_nick_\n\ + adds r0, r6, 0\n\ + movs r1, 0xB\n\ + bl GetBoxMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + adds r0, r6, 0\n\ + mov r1, sp\n\ + bl sub_803B4B4\n\ + mov r0, sp\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x64\n\ + beq _080415D8\n\ + mov r0, sp\n\ + movs r1, 0x19\n\ + bl GetMonData\n\ + movs r2, 0x88\n\ + lsls r2, 1\n\ + adds r1, r5, r2\n\ + adds r1, r7\n\ + ldr r1, [r1]\n\ + adds r0, r1\n\ + str r0, [sp, 0x64]\n\ + add r2, sp, 0x64\n\ + mov r0, sp\n\ + movs r1, 0x19\n\ + bl SetMonData\n\ + mov r0, sp\n\ + bl sub_804151C\n\ +_080415D8:\n\ + ldr r0, _08041644 @ =gPlayerParty\n\ + movs r1, 0xFA\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + mov r8, r1\n\ + mov r0, r8\n\ + mov r1, sp\n\ + movs r2, 0x64\n\ + bl memcpy\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r1, r0, 3\n\ + adds r0, r5, r1\n\ + adds r0, 0xC0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _08041610\n\ + adds r4, r1, 0\n\ + adds r4, 0xA0\n\ + adds r4, r5, r4\n\ + mov r0, r8\n\ + adds r1, r4, 0\n\ + bl GiveMailToMon2\n\ + adds r0, r4, 0\n\ + bl sub_80417F4\n\ +_08041610:\n\ + bl party_compaction\n\ + adds r0, r6, 0\n\ + bl ZeroBoxMonData\n\ + movs r2, 0x88\n\ + lsls r2, 1\n\ + adds r0, r5, r2\n\ + adds r0, r7\n\ + movs r1, 0\n\ + str r1, [r0]\n\ + adds r0, r5, 0\n\ + bl sub_80414C0\n\ + bl CalculatePlayerPartyCount\n\ + mov r0, r9\n\ + add sp, 0x68\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08041640: .4byte gStringVar1\n\ +_08041644: .4byte gPlayerParty\n\ + .syntax divided"); +} + +extern u8 gSpecialVar_0x8004; + +u16 sub_8041648() +{ + return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); +} diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index 9f586dcb9..ab0e00c8a 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -65,7 +65,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) s8 MoriDebugMenu_Egg(void) { - if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() ) + if ( daycare_count_pokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); CloseMenu(); @@ -74,7 +74,7 @@ s8 MoriDebugMenu_Egg(void) s8 MoriDebugMenu_MaleEgg(void) { - if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() ) + if ( daycare_count_pokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); CloseMenu(); diff --git a/src/record_mixing.c b/src/record_mixing.c index ddf9a5376..5f2077432 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -66,7 +66,7 @@ void sub_80B92AC(void) memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28); memcpy(gUnknown_02038738, gSaveBlock1.filler_303C, 0x38); memcpy(gUnknown_02038738 + 0x38, gSaveBlock1.filler_3074, 0x38); - sub_8041324(gSaveBlock1.filler_2F9C, gUnknown_02038738); + sub_8041324(gSaveBlock1.daycareData, gUnknown_02038738); memcpy(unk_2018000.filler10AC, gUnknown_083D0280, 0x78); memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4); -- cgit v1.2.3 From da925adb54af5423be679c15168147fad5d385ec Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 14 May 2017 18:45:44 +0200 Subject: sub_8041664 --- asm/daycare.s | 29 ----------------------------- src/daycare.c | 7 +++++++ 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index 962a0555a..abb361d89 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -6,35 +6,6 @@ .text - thumb_func_start sub_8041664 -sub_8041664: @ 8041664 - push {r4,r5,lr} - sub sp, 0x54 - adds r4, r0, 0 - adds r5, r1, 0 - mov r0, sp - adds r1, r4, 0 - movs r2, 0x50 - bl memcpy - adds r0, r4, 0 - movs r1, 0x19 - bl GetBoxMonData - adds r0, r5 - str r0, [sp, 0x50] - add r2, sp, 0x50 - mov r0, sp - movs r1, 0x19 - bl SetBoxMonData - mov r0, sp - bl GetLevelFromBoxMonExp - lsls r0, 24 - lsrs r0, 24 - add sp, 0x54 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8041664 - thumb_func_start sub_80416A0 sub_80416A0: @ 80416A0 push {r4-r6,lr} diff --git a/src/daycare.c b/src/daycare.c index 3d8de4ef6..0d80bc54a 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -381,3 +381,10 @@ u16 sub_8041648() { return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); } + +u8 sub_8041664(struct BoxPokemon * mon, u32 steps){ + struct BoxPokemon temp = *mon; + u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; + SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); + return GetLevelFromBoxMonExp(&temp); +} -- cgit v1.2.3 From 2774cb1bae07fe079c7faf53f697ea78ac8e76d4 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Mon, 15 May 2017 14:53:28 +0200 Subject: Name some functions --- asm/daycare.s | 18 +++++++++--------- asm/egg_hatch.s | 10 +++++----- data/specials.inc | 2 +- include/asm.inc.h | 2 +- src/daycare.c | 40 ++++++++++++++++++---------------------- src/mori_debug_menu.c | 4 ++-- 6 files changed, 36 insertions(+), 40 deletions(-) diff --git a/asm/daycare.s b/asm/daycare.s index abb361d89..2944f7565 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -30,7 +30,7 @@ sub_80416A0: @ 80416A0 add r5, r8 ldr r1, [r5] adds r0, r4, 0 - bl sub_8041664 + bl Daycare_GetLevelAfterSteps lsls r0, 24 lsrs r0, 24 subs r0, r6 @@ -60,7 +60,7 @@ sub_80416E8: @ 80416E8 adds r6, r0 ldr r1, _08041720 @ =gStringVar1 adds r0, r6, 0 - bl pokemon_get_nick_ + bl GetBoxMonNick ldr r0, _08041724 @ =gStringVar2 adds r1, r5, 0 movs r2, 0 @@ -92,7 +92,7 @@ sub_8041728: @ 8041728 adds r6, r0 ldr r1, _08041768 @ =gStringVar1 adds r0, r6, 0 - bl pokemon_get_nick_ + bl GetBoxMonNick movs r0, 0x64 adds r4, r5, 0 muls r4, r0 @@ -1625,7 +1625,7 @@ sub_80422C4: @ 80422C4 beq _080422FC ldr r1, _0804231C @ =gStringVar1 adds r0, r6, 0 - bl pokemon_get_nick_ + bl GetBoxMonNick adds r0, r6, 0 movs r1, 0x3 bl GetBoxMonData @@ -1650,7 +1650,7 @@ _080422FC: beq _08042314 ldr r1, _08042324 @ =gStringVar2 adds r0, r4, 0 - bl pokemon_get_nick_ + bl GetBoxMonNick _08042314: pop {r4-r6} pop {r0} @@ -1671,7 +1671,7 @@ sub_8042328: @ 8042328 ldr r4, _08042358 @ =gPlayerParty adds r0, r4 ldr r1, _0804235C @ =gStringVar1 - bl pokemon_get_nick_ + bl GetBoxMonNick ldrb r0, [r6] muls r0, r5 adds r0, r4 @@ -1714,7 +1714,7 @@ sp0B6_daycare: @ 8042370 _08042384: .4byte gSaveBlock1 + 0x2F9C _08042388: adds r0, r4, 0 - bl daycare_count_pokemon + bl Daycare_CountPokemon lsls r0, 24 lsrs r0, 24 cmp r0, 0 @@ -2118,7 +2118,7 @@ _08042648: adds r5, r1, r0 adds r0, r4, 0 adds r1, r5, 0 - bl pokemon_get_nick_ + bl GetBoxMonNick adds r0, r5, 0 adds r1, r4, 0 bl MonAppendGenderSymbol @@ -2178,7 +2178,7 @@ _080426C6: adds r1, r6, r3 adds r1, r2 ldr r1, [r1] - bl sub_8041664 + bl Daycare_GetLevelAfterSteps adds r1, r0, 0 lsls r1, 24 lsrs r1, 24 diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index 90ae6aaf7..2f11d4111 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -52,7 +52,7 @@ AddHatchedMonToParty: @ 80429EC bl sub_8090D90 ldr r1, _08042AA4 @ =gStringVar1 adds r0, r5, 0 - bl pokemon_get_nick + bl GetMonNick mov r2, sp adds r2, 0xE movs r0, 0x4 @@ -110,7 +110,7 @@ sub_8042ABC: @ 8042ABC lsls r0, 4 adds r0, r5, r0 mov r1, sp - bl pokemon_get_nick_ + bl GetBoxMonNick lsls r0, r4, 3 subs r0, r4 lsls r1, r0, 3 @@ -857,7 +857,7 @@ _08043124: ldr r1, _08043150 @ =gPlayerParty adds r0, r1 ldr r1, _08043154 @ =gStringVar1 - bl pokemon_get_nick + bl GetMonNick ldr r4, _08043158 @ =gStringVar4 ldr r1, _0804315C @ =gOtherText_HatchedFromEgg adds r0, r4, 0 @@ -898,7 +898,7 @@ _08043180: ldr r1, _080431A8 @ =gPlayerParty adds r0, r1 ldr r1, _080431AC @ =gStringVar1 - bl pokemon_get_nick + bl GetMonNick ldr r4, _080431B0 @ =gStringVar4 ldr r1, _080431B4 @ =gOtherText_NickHatchPrompt adds r0, r4, 0 @@ -957,7 +957,7 @@ _080431DA: adds r0, r6 ldr r1, _08043280 @ =gStringVar3 mov r10, r1 - bl pokemon_get_nick + bl GetMonNick mov r2, r9 ldr r0, [r2] ldrb r0, [r0, 0x4] diff --git a/data/specials.inc b/data/specials.inc index bac45b91b..dd12775f5 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -187,7 +187,7 @@ gSpecials:: .4byte sp0B8_daycare .4byte sp0B9_daycare_relationship_comment .4byte sub_8042328 - .4byte daycare_send + .4byte Daycare_SendPokemon_Special .4byte ChooseSendDaycareMon .4byte ShowDaycareLevelMenu .4byte sub_80417B8 diff --git a/include/asm.inc.h b/include/asm.inc.h index 9a404db59..2c28398b8 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -31,7 +31,7 @@ void StoreWordInTwoHalfwords(u16 *, u32); void LoadWordFromTwoHalfwords(u16 *, u32 *); // src/daycare.o -u8 daycare_count_pokemon(struct BoxPokemon *); +u8 Daycare_CountPokemon(struct BoxPokemon *); // asm/daycare.o void sub_8041324(struct BoxPokemon *, void *); diff --git a/src/daycare.c b/src/daycare.c index 0d80bc54a..cf7a5cd5f 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -5,7 +5,7 @@ extern u8 gLastFieldPokeMenuOpened; -u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest) +u8 *GetMonNick(struct Pokemon *mon, u8 *dest) { s8 nickname[POKEMON_NAME_LENGTH * 2]; @@ -13,7 +13,7 @@ u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest) return StringCopy10(dest, nickname); } -u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest) +u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) { s8 nickname[POKEMON_NAME_LENGTH * 2]; @@ -21,16 +21,14 @@ u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest) return StringCopy10(dest, nickname); } -u8 daycare_count_pokemon(struct BoxPokemon *daycare_data) +u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) { u8 i, count; count = 0; - for(i = 0;i <= 1;i++) { - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) { + for(i = 0;i <= 1;i++) + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) count++; - } - } return count; } @@ -98,36 +96,34 @@ _08041374:\n\ .syntax divided\n"); } -s8 daycare_empty_slot(struct BoxPokemon * daycare_data) +s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) { u8 i; - for(i = 0;i <= 1;i++){ - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0){ + for(i = 0;i <= 1;i++) + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) return i; - } - } return -1; } -/*void sub_80413C8(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished +/*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished s8 empty_slot; - empty_slot = daycare_empty_slot(daycare_data); + empty_slot = Daycare_FindEmptySpot(daycare_data); if(MonHasMail(mon) != 0){ // if the mon holds a mail? u8 empty_slot_times_56 = empty_slot * 56; u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; StringCopy(something2, gSaveBlock2.playerName); PadNameString(something2, 0xFC); something2 += 8; - pokemon_get_nick(mon, something2); + GetMonNick(mon, something2); u8 pokerus = GetMonData(mon, MON_DATA_64); something1 += (u8 * daycare_data) }*/ __attribute__((naked)) -void sub_80413C8() +void Daycare_SendPokemon() { // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC @@ -140,7 +136,7 @@ void sub_80413C8() adds r7, r0, 0\n\ mov r8, r1\n\ mov r0, r8\n\ - bl daycare_empty_slot\n\ + bl Daycare_FindEmptySpot\n\ lsls r0, 24\n\ lsrs r4, r0, 24\n\ mov r9, r4\n\ @@ -168,7 +164,7 @@ void sub_80413C8() adds r6, 0x8\n\ adds r0, r7, 0\n\ adds r1, r6, 0\n\ - bl pokemon_get_nick\n\ + bl GetMonNick\n\ adds r0, r7, 0\n\ movs r1, 0x40\n\ bl GetMonData\n\ @@ -228,9 +224,9 @@ _08041498: .4byte 0x00002b4c\n\ .syntax divided\n"); } -void daycare_send() +void Daycare_SendPokemon_Special() { - sub_80413C8(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); + Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); } void sub_80417F4(u8 *); @@ -291,7 +287,7 @@ u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){ adds r6, r5, r0\n\ ldr r1, _08041640 @ =gStringVar1\n\ adds r0, r6, 0\n\ - bl pokemon_get_nick_\n\ + bl GetBoxMonNick\n\ adds r0, r6, 0\n\ movs r1, 0xB\n\ bl GetBoxMonData\n\ @@ -382,7 +378,7 @@ u16 sub_8041648() return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); } -u8 sub_8041664(struct BoxPokemon * mon, u32 steps){ +u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ struct BoxPokemon temp = *mon; u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index ab0e00c8a..fd0ad773b 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -65,7 +65,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr) s8 MoriDebugMenu_Egg(void) { - if ( daycare_count_pokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041940(); CloseMenu(); @@ -74,7 +74,7 @@ s8 MoriDebugMenu_Egg(void) s8 MoriDebugMenu_MaleEgg(void) { - if ( daycare_count_pokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) + if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() ) sub_8041950(); CloseMenu(); -- cgit v1.2.3 From d0549706007b1a24ffd75ba40594e70dda3ee123 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Mon, 15 May 2017 16:19:18 +0200 Subject: Rename PlaySE to PlaySoundEffect - wide code is good code, daycare.c renames, match sub_80B92AC in record_mixing --- asm/battle_1.s | 2 +- asm/battle_10.s | 4 +- asm/battle_2.s | 2 +- asm/battle_4.s | 34 +++++------ asm/battle_5.s | 38 ++++++------ asm/battle_6.s | 4 +- asm/battle_7.s | 2 +- asm/battle_8.s | 4 +- asm/battle_811DA74.s | 4 +- asm/battle_anim_80CA710.s | 34 +++++------ asm/battle_anim_81258BC.s | 26 ++++---- asm/battle_anim_812C144.s | 18 +++--- asm/battle_anim_8137220.s | 12 ++-- asm/battle_anim_813F0F4.s | 22 +++---- asm/battle_transition.s | 2 +- asm/berry_blender.s | 30 ++++----- asm/cable_club.s | 4 +- asm/choose_party.s | 30 ++++----- asm/contest.s | 60 +++++++++--------- asm/contest_link_80C2020.s | 6 +- asm/daycare.s | 4 +- asm/decoration.s | 24 ++++---- asm/easy_chat.s | 20 +++--- asm/egg_hatch.s | 10 +-- asm/evolution_graphics.s | 10 +-- asm/evolution_scene.s | 24 ++++---- asm/field_effect.s | 22 +++---- asm/field_effect_helpers.s | 4 +- asm/field_fadetransition.s | 14 ++--- asm/field_specials.s | 16 ++--- asm/field_tasks.s | 8 +-- asm/field_weather.s | 12 ++-- asm/fldeff_80C5CD4.s | 40 ++++++------ asm/fldeff_flash.s | 2 +- asm/hall_of_fame.s | 4 +- asm/item_menu.s | 82 ++++++++++++------------- asm/learn_move.s | 14 ++--- asm/menu_helpers.s | 4 +- asm/mon_markings.s | 8 +-- asm/party_menu.s | 52 ++++++++-------- asm/player_pc.s | 20 +++--- asm/pokeball.s | 20 +++--- asm/pokeblock.s | 20 +++--- asm/pokedex.s | 50 +++++++-------- asm/pokedex_area_screen.s | 4 +- asm/pokemon_menu.s | 34 +++++------ asm/pokemon_storage_system.s | 88 +++++++++++++-------------- asm/pokemon_summary_screen.s | 22 +++---- asm/pokenav.s | 90 +++++++++++++-------------- asm/reset_rtc_screen.s | 12 ++-- asm/rotating_gate.s | 4 +- asm/roulette.s | 6 +- asm/secret_base.s | 20 +++--- asm/shop.s | 16 ++--- asm/slot_machine.s | 12 ++-- asm/sound_check_menu.s | 6 +- asm/trade.s | 52 ++++++++-------- asm/trader.s | 8 +-- asm/use_pokeblock.s | 8 +-- include/global.h | 8 ++- include/sound.h | 8 +-- src/battle_anim.c | 14 ++--- src/battle_interface.c | 8 +-- src/battle_party_menu.c | 16 ++--- src/berry_tag_screen.c | 4 +- src/bike.c | 2 +- src/braille_puzzles.c | 8 +-- src/cable_club.c | 4 +- src/clear_save_data_menu.c | 4 +- src/daycare.c | 2 + src/field_control_avatar.c | 8 +-- src/field_player_avatar.c | 20 +++--- src/field_special_scene.c | 8 +-- src/fldeff_cut.c | 4 +- src/fldeff_softboiled.c | 2 +- src/fldeff_sweetscent.c | 2 +- src/intro.c | 2 +- src/item_use.c | 8 +-- src/link.c | 4 +- src/main_menu.c | 18 +++--- src/menu.c | 24 ++++---- src/mystery_event_menu.c | 18 +++--- src/naming_screen.c | 10 +-- src/party_menu.c | 4 +- src/player_pc.c | 36 +++++------ src/pokedex.c | 78 ++++++++++++------------ src/record_mixing.c | 124 +++----------------------------------- src/rom4.c | 8 +-- src/rom6.c | 2 +- src/scrcmd.c | 4 +- src/script_menu.c | 6 +- src/script_pokemon_util_80F99CC.c | 8 +-- src/shop.c | 8 +-- src/sound.c | 8 +-- src/start_menu.c | 12 ++-- src/starter_choose.c | 2 +- src/text.c | 12 ++-- src/trainer_card.c | 2 +- src/wallclock.c | 4 +- 99 files changed, 815 insertions(+), 913 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index 44d0b245f..564644388 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1361,7 +1361,7 @@ _0800E148: bl PrintLinkBattleWinLossTie _0800E154: movs r0, 0x78 - bl PlaySE + bl PlaySoundEffect mov r0, r9 bl DestroyTask ldr r4, _0800E224 @ =gSprites diff --git a/asm/battle_10.s b/asm/battle_10.s index f7844a25a..fc32aa7c7 100644 --- a/asm/battle_10.s +++ b/asm/battle_10.s @@ -3005,7 +3005,7 @@ _080399A8: strb r0, [r3, 0x4] movs r0, 0x10 movs r1, 0x3F - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r2, _080399EC @ =gSprites ldr r1, _080399F0 @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -3953,7 +3953,7 @@ _0803A0E8: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning bl dp01_tbl4_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_2.s b/asm/battle_2.s index cff6efe06..dbd4cc15f 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -5326,7 +5326,7 @@ bs8_exit_by_flight: @ 8014F80 ldrb r0, [r0] strb r0, [r2] movs r0, 0x11 - bl PlaySE + bl PlaySoundEffect ldr r0, _08014FB4 @ =gUnknown_02024A68 ldrb r0, [r0] strb r0, [r4] diff --git a/asm/battle_4.s b/asm/battle_4.s index 0581d1e7d..b1e0d342e 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -15788,7 +15788,7 @@ _08023B74: cmp r0, 0 beq _08023B9A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -15805,7 +15805,7 @@ _08023B9A: cmp r0, 0 bne _08023BC0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -15818,7 +15818,7 @@ _08023BC0: cmp r0, 0 beq _08023C0C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08023C00 @ =gUnknown_02024D1E ldrb r4, [r0, 0x1] cmp r4, 0 @@ -15850,7 +15850,7 @@ _08023C0C: b _08023E5C _08023C16: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _08023C1C: ldr r0, _08023C28 @ =0x02000000 ldr r1, _08023C2C @ =0x0001601a @@ -16162,7 +16162,7 @@ _08023EA8: cmp r0, 0 beq _08023ECE movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -16179,7 +16179,7 @@ _08023ECE: cmp r0, 0 bne _08023EF4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -16192,7 +16192,7 @@ _08023EF4: cmp r0, 0 beq _08023F4C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08023F30 @ =gUnknown_02024D1E ldrb r0, [r0, 0x1] cmp r0, 0 @@ -16231,7 +16231,7 @@ _08023F4C: cmp r0, 0 beq _08023F78 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r3, _08023F80 @ =gUnknown_02024C10 ldr r2, [r3] ldrb r1, [r2, 0x1] @@ -17094,7 +17094,7 @@ _08024616: cmp r0, 0 beq _0802463A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0 strb r0, [r5, 0x1] @@ -17111,7 +17111,7 @@ _0802463A: cmp r0, 0 bne _08024660 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -17137,7 +17137,7 @@ _0802467C: beq _08024696 _08024684: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8023AD8 ldr r1, _0802469C @ =gUnknown_02024C10 ldr r0, [r1] @@ -17695,7 +17695,7 @@ _08024AF4: b _08024C38 _08024AFE: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08024B98 @ =gStringVar4 ldr r1, _08024B9C @ =gUnknown_08400D9F bl StringCopy @@ -17818,7 +17818,7 @@ _08024C04: cmp r0, 0 beq _08024C38 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 str r0, [sp] movs r0, 0xB @@ -32047,7 +32047,7 @@ _0802BCEC: cmp r0, 0 beq _0802BD10 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -32064,7 +32064,7 @@ _0802BD10: cmp r0, 0 bne _0802BD36 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -32077,7 +32077,7 @@ _0802BD36: cmp r0, 0 beq _0802BD68 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0802BD64 @ =gUnknown_02024D1E ldrb r0, [r1, 0x1] cmp r0, 0 @@ -32099,7 +32099,7 @@ _0802BD68: b _0802BEDA _0802BD72: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0802BD80 @ =gUnknown_02024D1E _0802BD7A: movs r0, 0x4 diff --git a/asm/battle_5.s b/asm/battle_5.s index 01541c120..66e1412ce 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -189,7 +189,7 @@ sub_802C098: @ 802C098 cmp r0, 0 beq _0802C13E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_814A7FC ldr r1, _0802C108 @ =gUnknown_02024E60 ldrb r0, [r4] @@ -252,7 +252,7 @@ _0802C13E: b _0802C2AC _0802C158: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -280,7 +280,7 @@ _0802C178: b _0802C2AC _0802C192: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -324,7 +324,7 @@ _0802C1D0: bne _0802C2AC _0802C1E8: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -392,7 +392,7 @@ _0802C218: bl AddBagItem _0802C278: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 movs r1, 0xC movs r2, 0 @@ -486,7 +486,7 @@ _0802C32E: beq _0802C3A8 bl sub_814A7FC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _0802C394 @ =gSprites ldr r1, _0802C398 @ =gUnknown_02024BE0 ldr r4, _0802C388 @ =gUnknown_03004344 @@ -532,7 +532,7 @@ _0802C3A8: cmp r0, 0 beq _0802C41C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _0802C400 @ =gSprites ldr r1, _0802C404 @ =gUnknown_02024BE0 ldr r5, _0802C408 @ =gUnknown_03004344 @@ -583,7 +583,7 @@ _0802C41C: b _0802C540 _0802C426: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _0802C458 @ =gSprites ldr r1, _0802C45C @ =gUnknown_02024BE0 ldr r3, _0802C460 @ =gUnknown_03004344 @@ -724,7 +724,7 @@ _0802C540: b _0802C658 _0802C54A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _0802C57C @ =gSprites ldr r1, _0802C580 @ =gUnknown_02024BE0 ldr r3, _0802C584 @ =gUnknown_03004344 @@ -902,7 +902,7 @@ sub_802C68C: @ 802C68C b _0802C864 _0802C6B2: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0802C6F0 @ =gUnknown_02024E64 ldrb r0, [r7] adds r0, r1 @@ -1114,7 +1114,7 @@ _0802C864: beq _0802C8A4 bl sub_814A7FC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0802C898 @ =gUnknown_030042A4 strh r4, [r0] ldr r1, _0802C89C @ =gUnknown_030042A0 @@ -1242,7 +1242,7 @@ _0802C944: _0802C976: strb r0, [r1] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r7] adds r0, r4 ldrb r0, [r0] @@ -1361,7 +1361,7 @@ sub_802CA60: @ 802CA60 b _0802CE78 _0802CA7A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0802CDF0 @ =gUnknown_02024E64 mov r10, r0 ldr r1, _0802CDF4 @ =gUnknown_02024A60 @@ -1867,7 +1867,7 @@ _0802CE78: cmp r0, 0 beq _0802CEF0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0802CF34 @ =gUnknown_03004344 ldrb r0, [r0] bl nullsub_7 @@ -1955,7 +1955,7 @@ _0802CF4E: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0802CF7C @ =gUnknown_02024E64 ldr r0, _0802CF80 @ =gUnknown_02024A60 ldrb r0, [r0] @@ -2022,7 +2022,7 @@ _0802CFE2: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0802D010 @ =gUnknown_02024E64 ldr r0, _0802D014 @ =gUnknown_02024A60 ldrb r0, [r0] @@ -2082,7 +2082,7 @@ _0802D066: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0802D094 @ =gUnknown_02024E64 ldr r0, _0802D098 @ =gUnknown_02024A60 ldrb r0, [r0] @@ -2149,7 +2149,7 @@ _0802D0FA: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0802D128 @ =gUnknown_02024E64 ldr r0, _0802D12C @ =gUnknown_02024A60 ldrb r0, [r0] @@ -3395,7 +3395,7 @@ sub_802DA9C: @ 802DA9C mov r0, r10 bl sub_8043D84 movs r0, 0x21 - bl PlaySE + bl PlaySoundEffect ldr r0, _0802DB68 @ =sub_802DB6C mov r1, r8 str r0, [r1] diff --git a/asm/battle_6.s b/asm/battle_6.s index f277fb7f2..dd25250ce 100644 --- a/asm/battle_6.s +++ b/asm/battle_6.s @@ -3111,7 +3111,7 @@ _0802FEC8: movs r1, 0x40 negs r1, r1 movs r0, 0x10 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r2, _0802FF4C @ =gSprites ldr r3, _0802FF50 @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -4628,7 +4628,7 @@ _08030BEC: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning bl dp01_tbl1_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_7.s b/asm/battle_7.s index 593a5bbb1..31d994160 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -2302,7 +2302,7 @@ sub_80324F8: @ 80324F8 cmp r0, 0 bne _0803255A movs r0, 0x5A - bl PlaySE + bl PlaySoundEffect _0803255A: ldrb r0, [r4] orrs r0, r5 diff --git a/asm/battle_8.s b/asm/battle_8.s index 0e4925dfb..fc16eee0c 100644 --- a/asm/battle_8.s +++ b/asm/battle_8.s @@ -3272,7 +3272,7 @@ _0803507C: strb r0, [r3, 0x4] movs r0, 0x10 movs r1, 0x3F - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r2, _080350C0 @ =gSprites ldr r1, _080350C4 @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -4513,7 +4513,7 @@ _08035A34: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning bl sub_80334EC pop {r4} pop {r0} diff --git a/asm/battle_811DA74.s b/asm/battle_811DA74.s index 4190b2400..82c466918 100644 --- a/asm/battle_811DA74.s +++ b/asm/battle_811DA74.s @@ -1985,7 +1985,7 @@ _0811FD34: movs r1, 0x40 negs r1, r1 movs r0, 0x10 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r2, _0811FDB8 @ =gSprites ldr r3, _0811FDBC @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -2952,7 +2952,7 @@ _081204B4: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning bl dp01_tbl3_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index be80cc44f..915236790 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -2686,7 +2686,7 @@ _080CBB8A: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080CBBBE: adds r0, r4, 0 bl sub_80CB814 @@ -2704,7 +2704,7 @@ _080CBBBE: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080CBBE6: pop {r4,r5} pop {r0} @@ -5930,7 +5930,7 @@ _080CD438: lsls r1, 24 asrs r1, 24 movs r0, 0xD2 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080CD49E: ldrh r0, [r5, 0x38] movs r1, 0x1 @@ -6141,7 +6141,7 @@ _080CD5D8: lsls r1, 24 asrs r1, 24 movs r0, 0xC0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning b _080CD648 .align 2, 0 _080CD634: .4byte 0x00007fff @@ -7501,7 +7501,7 @@ sub_80CE000: @ 80CE000 lsls r1, 24 asrs r1, 24 movs r0, 0xC2 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080CE052: movs r1, 0 strh r1, [r4, 0x2E] @@ -10996,7 +10996,7 @@ _080CFAA4: lsls r1, 24 asrs r1, 24 movs r0, 0x9A - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning movs r3, 0xA ldrsh r0, [r4, r3] cmp r0, 0x2 @@ -11667,7 +11667,7 @@ sub_80D0030: @ 80D0030 lsls r1, 24 asrs r1, 24 movs r0, 0xA6 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 @@ -13601,7 +13601,7 @@ _080D0EF0: lsls r1, 24 asrs r1, 24 movs r0, 0xCD - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080D0F36: ldrh r0, [r4, 0x34] ldrh r2, [r4, 0x36] @@ -23646,7 +23646,7 @@ _080D5C92: movs r1, 0 ldrsb r1, [r0, r1] movs r0, 0x90 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning b _080D5CBA .align 2, 0 _080D5CB0: .4byte gUnknown_0202F7D2 @@ -26822,7 +26822,7 @@ _080D74DC: lsls r1, 24 asrs r1, 24 movs r0, 0x76 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080D74FE: movs r0, 0x12 ldrsh r3, [r4, r0] @@ -37516,7 +37516,7 @@ _080DC778: lsls r1, 24 asrs r1, 24 movs r0, 0xCB - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning adds r0, r5, 0 movs r1, 0x1 bl ChangeSpriteAffineAnim @@ -39402,7 +39402,7 @@ _080DD694: lsls r1, 24 asrs r1, 24 movs r0, 0xA2 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning b _080DD76C .align 2, 0 _080DD6A4: .4byte gSprites @@ -39488,7 +39488,7 @@ _080DD70C: lsls r1, 24 asrs r1, 24 movs r0, 0xAF - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080DD74A: ldrh r0, [r4, 0x18] subs r0, 0x1 @@ -40138,7 +40138,7 @@ _080DDC30: movs r1, 0 ldrsb r1, [r0, r1] movs r0, 0xC4 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080DDC42: pop {r4} pop {r0} @@ -40186,7 +40186,7 @@ _080DDC92: cmp r0, 0 ble _080DDC9E movs r0, 0xC4 - bl PlaySE + bl PlaySoundEffect _080DDC9E: movs r1, 0x3A ldrsh r0, [r4, r1] @@ -51751,7 +51751,7 @@ _080E3692: lsls r1, 24 asrs r1, 24 movs r0, 0xEF - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning b _080E36F4 .align 2, 0 _080E36D8: .4byte gUnknown_02024BE0 @@ -51764,7 +51764,7 @@ _080E36E0: lsls r1, 24 asrs r1, 24 movs r0, 0xF5 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _080E36F4: add sp, 0x24 pop {r3-r5} diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s index 86abad6f3..ad54d6680 100644 --- a/asm/battle_anim_81258BC.s +++ b/asm/battle_anim_81258BC.s @@ -24,7 +24,7 @@ unref_sub_812AECC: @ 812AECC b _0812AF08 _0812AEEA: movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 b _0812AF0A _0812AEF4: @@ -32,7 +32,7 @@ _0812AEF4: b _0812AF08 _0812AEFA: movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect bl sub_812AF10 movs r0, 0x1 b _0812AF0A @@ -152,7 +152,7 @@ _0812AFD0: ldrh r0, [r4, 0x8] lsls r1, r5, 24 asrs r1, 24 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _0812AFEA: lsls r1, r6, 24 asrs r1, 24 @@ -194,7 +194,7 @@ sub_812B004: @ 812B004 ldrh r0, [r4, 0xA] lsls r1, 24 asrs r1, 24 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] @@ -321,7 +321,7 @@ sub_812B108: @ 812B108 ldrh r0, [r4, 0x8] movs r1, 0x1E ldrsb r1, [r4, r1] - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldrh r0, [r4, 0x10] subs r0, 0x1 strh r0, [r4, 0x10] @@ -573,7 +573,7 @@ sub_812B30C: @ 812B30C lsls r1, 24 asrs r1, 24 adds r0, r5, 0 - bl PlaySE1WithPanning + bl PlaySoundEffect1WithPanning adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4,r5} @@ -599,7 +599,7 @@ sub_812B340: @ 812B340 lsls r1, 24 asrs r1, 24 adds r0, r5, 0 - bl PlaySE2WithPanning + bl PlaySoundEffect2WithPanning adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4,r5} @@ -801,7 +801,7 @@ bx_battle_menu_t6_2: @ 812B4D4 cmp r0, 0 beq _0812B546 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_814A7FC ldr r1, _0812B50C @ =gUnknown_02024E60 ldr r0, _0812B510 @ =gUnknown_02024A60 @@ -863,7 +863,7 @@ _0812B546: cmp r0, 0 beq _0812B64E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -891,7 +891,7 @@ _0812B584: cmp r0, 0 bne _0812B64E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -919,7 +919,7 @@ _0812B5C0: cmp r0, 0 beq _0812B64E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -955,7 +955,7 @@ _0812B60C: cmp r0, 0 bne _0812B64E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -1857,7 +1857,7 @@ _0812BD94: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning bl dp01_tbl6_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index 28f6f9ada..76d855b1c 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -1418,7 +1418,7 @@ sub_812CBB4: @ 812CBB4 lsls r1, 24 asrs r1, 24 movs r0, 0xDE - bl PlaySE1WithPanning + bl PlaySoundEffect1WithPanning b _0812CC12 _0812CBF2: ldrh r0, [r4, 0x24] @@ -2087,7 +2087,7 @@ _0812D0D4: lsls r1, 24 asrs r1, 24 movs r0, 0xBA - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning cmp r4, 0x40 beq _0812D138 ldr r5, _0812D16C @ =gSprites @@ -3738,7 +3738,7 @@ _0812DDD2: lsls r1, 24 asrs r1, 24 movs r0, 0xE4 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning b _0812DE80 _0812DDEA: mov r0, sp @@ -10844,7 +10844,7 @@ _081314A6: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r1, _081314D4 @ =0xfffff800 adds r0, r1, 0 ldrh r2, [r4, 0x1C] @@ -10917,7 +10917,7 @@ _08131538: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning adds r0, r6, 0 bl DestroyAnimVisualTask _0813155A: @@ -11014,7 +11014,7 @@ _081315F8: lsls r1, 24 asrs r1, 24 movs r0, 0xCD - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning movs r0, 0 strh r0, [r4, 0x26] b _081316B0 @@ -11043,7 +11043,7 @@ _0813161C: lsls r1, 24 asrs r1, 24 movs r0, 0xCD - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning strh r5, [r4, 0x30] strh r5, [r4, 0x26] b _081316B0 @@ -11087,7 +11087,7 @@ _0813168C: lsls r1, 24 asrs r1, 24 movs r0, 0xC0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning movs r0, 0 strh r0, [r4, 0x30] _081316B0: @@ -12123,7 +12123,7 @@ _08131ECA: lsls r1, 24 asrs r1, 24 movs r0, 0x7A - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r0, _08131F54 @ =gBattleAnimEnemyMonIndex ldrb r0, [r0] movs r1, 0x1 diff --git a/asm/battle_anim_8137220.s b/asm/battle_anim_8137220.s index 134e18e6f..aebf29c5b 100644 --- a/asm/battle_anim_8137220.s +++ b/asm/battle_anim_8137220.s @@ -135,7 +135,7 @@ _0813730E: cmp r4, 0 bne _08137410 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 movs r1, 0 movs r2, 0 @@ -158,7 +158,7 @@ _08137344: cmp r4, 0 bne _08137410 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 movs r1, 0 b _0813737E @@ -206,7 +206,7 @@ _081373AC: cmp r0, 0 bne _08137410 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl nullsub_8 movs r0, 0x1 @@ -233,7 +233,7 @@ _081373E8: cmp r0, 0 bne _08137410 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_814A7FC movs r0, 0x1 movs r1, 0x1 @@ -4063,7 +4063,7 @@ _081393B2: bne _081393DE bl sub_814A7FC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r2, 0x80 lsls r2, 1 movs r0, 0x1 @@ -4447,7 +4447,7 @@ sub_8139680: @ 8139680 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - bl PlaySE + bl PlaySoundEffect bl dp01_tbl5_exec_completed pop {r0} bx r0 diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s index 25ac4470e..3b821c13a 100644 --- a/asm/battle_anim_813F0F4.s +++ b/asm/battle_anim_813F0F4.s @@ -1479,7 +1479,7 @@ sub_813FCBC: @ 813FCBC bne _0813FD16 movs r0, 0x3D movs r1, 0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r0, _0813FD24 @ =gTasks lsls r4, r5, 2 adds r4, r5 @@ -1737,7 +1737,7 @@ sub_813FEC8: @ 813FEC8 cmp r0, 0xB bne _0813FEFA movs r0, 0x3C - bl PlaySE + bl PlaySoundEffect _0813FEFA: movs r1, 0x8 ldrsh r0, [r5, r1] @@ -1970,19 +1970,19 @@ _081400BC: b _081400DA _081400C2: movs r0, 0x38 - bl PlaySE + bl PlaySoundEffect b _0814010E _081400CA: movs r0, 0x39 - bl PlaySE + bl PlaySoundEffect b _0814010E _081400D2: movs r0, 0x3A - bl PlaySE + bl PlaySoundEffect b _0814010E _081400DA: movs r0, 0x3B - bl PlaySE + bl PlaySoundEffect b _0814010E _081400E2: movs r2, 0x38 @@ -2071,7 +2071,7 @@ sub_8140158: @ 8140158 ldr r0, _0814019C @ =sub_81401A0 str r0, [r4, 0x1C] movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect _08140190: pop {r4,r5} pop {r0} @@ -2399,7 +2399,7 @@ _081403FC: bl StartSpriteAffineAnim _08140404: movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect _0814040A: pop {r4,r5} pop {r0} @@ -2468,7 +2468,7 @@ sub_8140454: @ 8140454 bl sub_8043EB4 bl m4aMPlayAllStop ldr r0, _0814048C @ =0x00000173 - bl PlaySE + bl PlaySoundEffect b _081404CC .align 2, 0 _08140484: .4byte gBattleAnimEnemyMonIndex @@ -3032,7 +3032,7 @@ _081408B6: strh r7, [r0, 0x10] strh r5, [r0, 0x26] movs r0, 0xF - bl PlaySE + bl PlaySoundEffect ldr r0, _08140924 @ =gMain ldr r1, _08140928 @ =0x0000043d adds r0, r1 @@ -5258,7 +5258,7 @@ _08141A82: lsls r1, 24 asrs r1, 24 movs r0, 0x66 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning _08141A8C: ldr r1, _08141AC4 @ =gSprites adds r0, r4, r5 diff --git a/asm/battle_transition.s b/asm/battle_transition.s index a4b4d1666..44c38b70f 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -3269,7 +3269,7 @@ _0811C39E: ldrsh r0, [r4, r1] bl sub_811CA28 movs r0, 0x68 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r5] adds r0, 0x1 ldrb r1, [r5] diff --git a/asm/berry_blender.s b/asm/berry_blender.s index 666882c04..9e2ef88ba 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -584,7 +584,7 @@ sub_804E738: @ 804E738 b _0804E786 _0804E780: movs r0, 0x74 - bl PlaySE + bl PlaySoundEffect _0804E786: ldrh r0, [r4, 0x30] strh r0, [r4, 0x20] @@ -2343,7 +2343,7 @@ _0804F636: strb r1, [r0] bl sub_804F238 movs r0, 0x2B - bl PlaySE + bl PlaySoundEffect mov r2, r8 ldr r0, [r2] b _0804F710 @@ -2411,7 +2411,7 @@ _0804F650: movs r0, 0 str r0, [r1] movs r0, 0x34 - bl PlaySE + bl PlaySoundEffect bl BuyMenuDrawFieldObjects _0804F6D6: mov r1, r8 @@ -2543,7 +2543,7 @@ _0804F7D6: adds r0, r4, 0 bl PlayBGM movs r0, 0x35 - bl PlaySE + bl PlaySoundEffect bl sub_804E290 _0804F7E6: bl RunTasks @@ -3152,7 +3152,7 @@ sub_804FC48: @ 804FC48 ldr r0, _0804FCD0 @ =sub_8051684 str r0, [r4] movs r0, 0x28 - bl PlaySE + bl PlaySoundEffect b _0804FD18 .align 2, 0 _0804FCBC: .4byte gSpriteTemplate_821645C @@ -3173,7 +3173,7 @@ _0804FCD4: movs r1, 0 bl StartSpriteAnim movs r0, 0x1F - bl PlaySE + bl PlaySoundEffect b _0804FD18 .align 2, 0 _0804FCF4: .4byte 0x00005432 @@ -3190,7 +3190,7 @@ _0804FCFC: movs r1, 0x1 bl StartSpriteAnim movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect _0804FD18: bl sub_805156C pop {r3} @@ -5059,7 +5059,7 @@ _08050B58: cmp r0, 0 beq _08050B76 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _08050B76: movs r0, 0 bl sub_80508D4 @@ -5079,7 +5079,7 @@ _08050B88: cmp r0, 0x1 beq _08050BD4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect b _08050BD4 .align 2, 0 _08050BA4: .4byte gUnknown_03004854 @@ -5089,7 +5089,7 @@ _08050BA8: cmp r0, 0 beq _08050BB8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect b _08050C82 _08050BB8: movs r0, 0x2 @@ -5099,7 +5099,7 @@ _08050BB8: b _08050CB6 _08050BC2: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08050BDC @ =gUnknown_03004854 ldr r1, [r0] adds r1, 0x6F @@ -5625,7 +5625,7 @@ _08051004: cmp r0, 0 beq _080510C4 movs r0, 0x37 - bl PlaySE + bl PlaySoundEffect ldr r0, _0805101C @ =gUnknown_03004854 ldr r1, [r0] b _080510AC @@ -6680,7 +6680,7 @@ _08051838: adds r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x38 - bl PlaySE + bl PlaySoundEffect b _080518BE _08051858: ldrh r0, [r4, 0x32] @@ -6773,7 +6773,7 @@ _080518E8: adds r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect b _0805193C _08051908: ldrh r0, [r4, 0x32] @@ -8239,7 +8239,7 @@ _0805247E: cmp r0, 0 beq _080524AE movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080524A0 @ =gUnknown_03004854 ldr r1, [r0] _08052494: diff --git a/asm/cable_club.s b/asm/cable_club.s index bd7a2bd5c..a352cdcb8 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -399,7 +399,7 @@ sub_8082F68: @ 8082F68 cmp r0, 0x1 bne _08082FCC movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect ldr r0, _08082FC4 @ =gUnknown_081A4932 bl ShowFieldAutoScrollMessage ldr r0, _08082FC8 @ =sub_8082FEC @@ -410,7 +410,7 @@ _08082FC4: .4byte gUnknown_081A4932 _08082FC8: .4byte sub_8082FEC _08082FCC: movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect ldr r0, _08082FE4 @ =gUnknown_081A49B6 bl ShowFieldAutoScrollMessage ldr r0, _08082FE8 @ =sub_80831F8 diff --git a/asm/choose_party.s b/asm/choose_party.s index 25122e4ef..1b8dfca6e 100644 --- a/asm/choose_party.s +++ b/asm/choose_party.s @@ -630,7 +630,7 @@ sub_81222B0: @ 81222B0 _081222DC: .4byte gPaletteFade _081222E0: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_806CA38 ldr r1, _08122320 @ =gLastFieldPokeMenuOpened @@ -679,7 +679,7 @@ _0812234C: .4byte gTasks _08122350: .4byte sub_81224A8 _08122354: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8121E58 movs r0, 0x1 negs r0, r0 @@ -729,7 +729,7 @@ sub_812238C: @ 812238C cmp r0, 0 beq _0812244A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -748,7 +748,7 @@ _081223D0: cmp r0, 0x3 beq _0812244A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _0812244A @@ -759,7 +759,7 @@ _081223F2: cmp r0, 0 beq _0812243C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08122430 @ =gTasks lsls r0, r7, 2 adds r0, r7 @@ -893,7 +893,7 @@ _081224FC: .4byte gTasks _08122500: .4byte sub_8122450 _08122504: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0xE movs r1, 0 bl sub_806D538 @@ -1125,7 +1125,7 @@ _081226DC: cmp r4, 0x2 bls _081226A0 movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0x14 movs r1, 0xA movs r2, 0x1D @@ -1302,7 +1302,7 @@ sub_8122838: @ 8122838 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_81227FC pop {r4} @@ -1643,7 +1643,7 @@ sub_8122AB8: @ 8122AB8 movs r1, 0x2 strb r1, [r0] movs r0, 0x78 - bl PlaySE + bl PlaySoundEffect _08122AF4: pop {r4} pop {r0} @@ -2058,7 +2058,7 @@ sub_8122E0C: @ 8122E0C _08122E34: .4byte gPaletteFade _08122E38: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_806CA38 ldr r1, _08122E70 @ =gLastFieldPokeMenuOpened @@ -2088,7 +2088,7 @@ _08122E7C: .4byte gTasks _08122E80: .4byte sub_8122EAC _08122E84: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08122EA4 @ =gLastFieldPokeMenuOpened movs r0, 0xFF strb r0, [r1] @@ -2130,7 +2130,7 @@ sub_8122EAC: @ 8122EAC cmp r0, 0 beq _08122F6A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -2149,7 +2149,7 @@ _08122EF0: cmp r0, 0x3 beq _08122F6A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _08122F6A @@ -2160,7 +2160,7 @@ _08122F12: cmp r0, 0 beq _08122F5C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08122F50 @ =gTasks lsls r0, r7, 2 adds r0, r7 @@ -2389,7 +2389,7 @@ sub_81230F4: @ 81230F4 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x14 movs r1, 0xA movs r2, 0x1D diff --git a/asm/contest.s b/asm/contest.s index 214935952..3e46e2ee1 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -1000,7 +1000,7 @@ _080AB9E0: strh r0, [r4, 0xA] movs r0, 0x61 movs r1, 0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -1300,7 +1300,7 @@ sub_80ABC70: @ 80ABC70 bne _080ABCCE _080ABC88: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080ABCB4 @ =gContestPlayerMonIndex ldrb r0, [r0] bl sub_80AF59C @@ -1579,7 +1579,7 @@ _080ABEC6: beq _080ABF08 bl sub_814A7FC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080ABF00 @ =gTasks lsls r1, r7, 2 adds r1, r7 @@ -1616,7 +1616,7 @@ _080ABF24: _080ABF26: bl sub_814A904 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl sub_80AFFE0 ldr r0, _080ABF64 @ =gUnknown_03004210 @@ -1727,7 +1727,7 @@ _080AC006: cmp r6, 0x1 bls _080AC098 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect b _080AC098 .align 2, 0 _080AC03C: .4byte 0x02019204 @@ -1769,7 +1769,7 @@ _080AC068: cmp r6, 0x1 bls _080AC098 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _080AC098: add sp, 0x8 pop {r4-r7} @@ -2946,7 +2946,7 @@ _080ACAAE: cmp r0, 0 beq _080ACAC0 movs r0, 0x63 - bl PlaySE + bl PlaySoundEffect _080ACAC0: ldr r0, _080ACAD4 @ =gTasks mov r3, r8 @@ -3291,13 +3291,13 @@ _080ACD5E: cmp r0, 0 beq _080ACD7C movs r0, 0x63 - bl PlaySE + bl PlaySoundEffect b _080ACD82 .align 2, 0 _080ACD78: .4byte gUnknown_02038696 _080ACD7C: movs r0, 0x64 - bl PlaySE + bl PlaySoundEffect _080ACD82: lsls r0, r6, 3 subs r0, r6 @@ -4099,7 +4099,7 @@ _080AD420: _080AD42C: bl sub_80B1DDC movs r0, 0xDF - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl sub_80B1CBC b _080AD4CC @@ -5396,7 +5396,7 @@ sub_80ADE54: @ 80ADE54 strh r0, [r1] movs r0, 0x62 movs r1, 0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r1, _080ADEA4 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -7539,7 +7539,7 @@ _080AEF0A: beq _080AEF3A movs r0, 0x26 _080AEF2C: - bl PlaySE + bl PlaySoundEffect ldrb r1, [r5, 0x10] movs r0, 0x31 negs r0, r0 @@ -8982,7 +8982,7 @@ _080AF990: adds r0, r3, 0x1 strh r0, [r2, 0xA] movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect b _080AF9D0 _080AF9BC: ldrh r0, [r2, 0x8] @@ -8993,7 +8993,7 @@ _080AF9BC: subs r0, r3, 0x1 strh r0, [r2, 0xA] movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect _080AF9D0: ldr r3, _080AFA00 @ =gTasks lsls r0, r4, 2 @@ -9517,7 +9517,7 @@ _080AFDA2: cmp r2, 0 ble _080AFDFC movs r0, 0x60 - bl PlaySE + bl PlaySoundEffect ldr r4, _080AFDF4 @ =gMPlay_SE1 adds r0, r4, 0 bl m4aMPlayImmInit @@ -9536,7 +9536,7 @@ _080AFDF4: .4byte gMPlay_SE1 _080AFDF8: .4byte 0x0000ffff _080AFDFC: movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect _080AFE02: cmp r5, 0 bne _080AFE1C @@ -10199,7 +10199,7 @@ sub_80B02A8: @ 80B02A8 ldr r0, _080B02F0 @ =sub_80B02F4 str r0, [r4, 0x1C] movs r0, 0x18 - bl PlaySE + bl PlaySoundEffect pop {r4} pop {r0} bx r0 @@ -11431,7 +11431,7 @@ sub_80B0BC4: @ 80B0BC4 cmp r1, 0 bne _080B0C48 movs r0, 0x65 - bl PlaySE + bl PlaySoundEffect b _080B0C4E .align 2, 0 _080B0C38: .4byte gSprites @@ -11440,7 +11440,7 @@ _080B0C40: .4byte sub_80B0C5C _080B0C44: .4byte SpriteCallbackDummy _080B0C48: movs r0, 0x2 - bl PlaySE + bl PlaySoundEffect _080B0C4E: pop {r3,r4} mov r8, r3 @@ -12927,7 +12927,7 @@ _080B1758: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect b _080B18E4 .align 2, 0 _080B177C: .4byte gSprites @@ -12950,7 +12950,7 @@ _080B1788: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x1F - bl PlaySE + bl PlaySoundEffect b _080B18E4 .align 2, 0 _080B17B0: .4byte gSprites @@ -12973,7 +12973,7 @@ _080B17BC: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x1F - bl PlaySE + bl PlaySoundEffect b _080B18E4 .align 2, 0 _080B17E4: .4byte gSprites @@ -12996,7 +12996,7 @@ _080B17F0: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect b _080B18E4 .align 2, 0 _080B1818: .4byte gSprites @@ -13019,7 +13019,7 @@ _080B1824: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect b _080B18E4 .align 2, 0 _080B184C: .4byte gSprites @@ -13042,7 +13042,7 @@ _080B1858: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect b _080B18E4 .align 2, 0 _080B1880: .4byte gSprites @@ -13065,7 +13065,7 @@ _080B188C: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0xC3 - bl PlaySE + bl PlaySoundEffect b _080B18E4 .align 2, 0 _080B18B4: .4byte gSprites @@ -13088,7 +13088,7 @@ _080B18C0: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect _080B18E4: adds r2, r4, 0 ldr r4, _080B1914 @ =gSprites @@ -14175,7 +14175,7 @@ _080B20CA: adds r0, 0x11 strh r0, [r4] movs r0, 0x63 - bl PlaySE + bl PlaySoundEffect _080B2126: adds r6, 0x1 cmp r6, 0x3 @@ -14481,7 +14481,7 @@ sub_80B237C: @ 80B237C strh r0, [r1] movs r0, 0x62 movs r1, 0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r1, _080B23B4 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -14774,7 +14774,7 @@ _080B25C8: strh r0, [r4, 0xC] movs r0, 0x61 movs r1, 0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning ldr r0, _080B25E0 @ =sub_80B2508 str r0, [r4] _080B25D8: diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 672eb4c1a..90d21610f 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -3361,7 +3361,7 @@ _080C3A94: adds r0, r4, 0 bl DestroyTask movs r0, 0x18 - bl PlaySE + bl PlaySoundEffect _080C3B12: pop {r4} pop {r0} @@ -4341,13 +4341,13 @@ _080C4292: cmp r0, 0 beq _080C429E movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect _080C429E: mov r1, r10 cmp r1, 0 beq _080C42AA movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect _080C42AA: add sp, 0x8 pop {r3-r5} diff --git a/asm/daycare.s b/asm/daycare.s index 2944f7565..4e856516a 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -2270,7 +2270,7 @@ _08042768: _0804278A: bl MoveMenuCursor movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect b _08042816 .align 2, 0 _08042798: .4byte gTasks @@ -2281,7 +2281,7 @@ _0804279C: beq _080427E8 bl sub_8072DEC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r3, _080427DC @ =gLastFieldPokeMenuOpened ldr r2, _080427E0 @ =gScriptResult ldr r1, _080427E4 @ =gTasks diff --git a/asm/decoration.s b/asm/decoration.s index 221c749c5..e71a45f08 100644 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -168,7 +168,7 @@ Task_DecorationPCProcessMenuInput: @ 80FE2EC cmp r0, 0 beq _080FE324 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -182,7 +182,7 @@ _080FE324: cmp r0, 0 beq _080FE342 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor ldr r1, _080FE370 @ =gUnknown_020388D4 @@ -195,7 +195,7 @@ _080FE342: cmp r0, 0 beq _080FE378 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080FE374 @ =gUnknown_083EC604 ldr r0, _080FE370 @ =gUnknown_020388D4 ldrb r0, [r0] @@ -217,7 +217,7 @@ _080FE378: cmp r0, 0 beq _080FE38C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r7, 0 bl gpu_pal_decompress_alloc_tag_and_upload _080FE38C: @@ -554,7 +554,7 @@ _080FE61C: cmp r0, 0 beq _080FE640 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -568,7 +568,7 @@ _080FE640: cmp r0, 0 beq _080FE656 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _080FE720 @@ -579,7 +579,7 @@ _080FE656: cmp r0, 0 beq _080FE70C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl GetMenuCursorPos ldr r4, _080FE6C0 @ =gUnknown_020388F6 strb r0, [r4] @@ -652,7 +652,7 @@ _080FE70C: cmp r0, 0 beq _080FE720 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_80FE728 _080FE720: @@ -819,7 +819,7 @@ sub_80FE894: @ 80FE894 mov r10, r1 _080FE8C8: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect lsls r0, r5, 24 asrs r0, 24 cmp r0, 0 @@ -967,7 +967,7 @@ _080FE9EE: beq _080FEA7C bl sub_8072DEC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _080FEA44 @ =gUnknown_020388F5 ldr r1, _080FEA48 @ =gUnknown_020388F2 ldr r0, _080FEA38 @ =gUnknown_020388F4 @@ -1027,7 +1027,7 @@ _080FEA7C: beq _080FEAAC bl sub_8072DEC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080FEAB4 @ =gUnknown_083EC634 ldr r2, _080FEAB8 @ =gTasks lsls r0, r4, 2 @@ -3846,7 +3846,7 @@ _08100078: .4byte gSecretBaseText_PlaceItHere _0810007C: .4byte sub_81000A0 _08100080: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect ldr r1, _08100098 @ =gSecretBaseText_CantBePlacedHere ldr r2, _0810009C @ =sub_81006A8 adds r0, r4, 0 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 466d371a1..888a13e3d 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -1283,7 +1283,7 @@ sub_80E6AE4: @ 80E6AE4 cmp r0, 0 beq _080E6AFE movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _080E6AFE: ldr r2, _080E6B48 @ =gMain ldrh r1, [r2, 0x2E] @@ -1293,7 +1293,7 @@ _080E6AFE: cmp r0, 0 beq _080E6BA4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r1, r4, 0 adds r1, 0x86 adds r0, r4, 0 @@ -1910,7 +1910,7 @@ sub_80E6FC8: @ 80E6FC8 cmp r0, 0 beq _080E700C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r1, 0xE2 lsls r1, 1 adds r0, r4, r1 @@ -1928,7 +1928,7 @@ _080E700C: cmp r0, 0 beq _080E7018 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _080E7018: ldr r0, _080E7054 @ =gMain ldrh r1, [r0, 0x2E] @@ -1944,7 +1944,7 @@ _080E7018: cmp r0, 0 beq _080E7090 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r1, 0xD4 lsls r1, 1 adds r0, r4, r1 @@ -2017,7 +2017,7 @@ _080E7090: beq _080E710A _080E70CA: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80E7AD4 ldr r0, _080E70E4 @ =sub_80E7218 bl sub_80E682C @@ -2255,7 +2255,7 @@ sub_80E7294: @ 80E7294 cmp r0, 0 beq _080E72DC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r1, 0xE2 lsls r1, 1 adds r0, r4, r1 @@ -2274,7 +2274,7 @@ _080E72DC: cmp r0, 0 beq _080E72E8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _080E72E8: ldr r0, _080E7304 @ =gMain ldrh r1, [r0, 0x2E] @@ -2283,7 +2283,7 @@ _080E72E8: cmp r0, 0 beq _080E730C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080E7308 @ =sub_80E7324 bl sub_80E682C b _080E731A @@ -4295,7 +4295,7 @@ _080E81F8: .4byte 0x00009c7e sub_80E81FC: @ 80E81FC push {lr} movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80E95A4 movs r0, 0 movs r1, 0 diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index 2f11d4111..b2bcc1088 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -1084,7 +1084,7 @@ _08043304: cmp r0, 0xF bne _08043334 movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim @@ -1137,7 +1137,7 @@ _0804336C: cmp r0, 0xF bne _08043398 movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim @@ -1220,7 +1220,7 @@ _08043418: cmp r0, 0xF bne _0804344C movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim @@ -1232,7 +1232,7 @@ _0804344C: cmp r0, 0x1E bne _0804345A movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect _0804345A: pop {r4-r6} pop {r0} @@ -1306,7 +1306,7 @@ _080434C0: cmp r4, 0 bne _080434EE movs r0, 0x71 - bl PlaySE + bl PlaySoundEffect adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s index 1130e085e..07cff013c 100644 --- a/asm/evolution_graphics.s +++ b/asm/evolution_graphics.s @@ -642,7 +642,7 @@ sub_81499A0: @ 81499A0 ldr r0, _081499EC @ =sub_81499F0 str r0, [r5] movs r0, 0x8C - bl PlaySE + bl PlaySoundEffect add sp, 0x4 pop {r4,r5} pop {r0} @@ -774,7 +774,7 @@ sub_8149AA8: @ 8149AA8 ldr r1, _08149AD8 @ =sub_8149ADC str r1, [r0] movs r0, 0xB7 - bl PlaySE + bl PlaySoundEffect pop {r4} pop {r0} bx r0 @@ -873,7 +873,7 @@ sub_8149B5C: @ 8149B5C ldr r1, _08149B8C @ =sub_8149B90 str r1, [r0] movs r0, 0x66 - bl PlaySE + bl PlaySoundEffect pop {r4} pop {r0} bx r0 @@ -1016,7 +1016,7 @@ sub_8149C50: @ 8149C50 ldr r0, _08149CAC @ =sub_8149CB0 str r0, [r5] movs r0, 0xCA - bl PlaySE + bl PlaySoundEffect add sp, 0x4 pop {r4,r5} pop {r0} @@ -1177,7 +1177,7 @@ sub_8149D8C: @ 8149D8C ldr r0, _08149DE8 @ =sub_8149DEC str r0, [r5] movs r0, 0xCA - bl PlaySE + bl PlaySoundEffect add sp, 0x4 pop {r4,r5} pop {r0} diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 404270195..d6d81080a 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1455,7 +1455,7 @@ _08112594: _081125A2: movs r0, 0xBC lsls r0, 1 - bl PlaySE + bl PlaySoundEffect ldr r0, _081125B8 @ =gTasks mov r2, r8 adds r1, r2, r7 @@ -1647,7 +1647,7 @@ _08112728: bl _08112FD0 _0811273E: movs r0, 0x21 - bl PlaySE + bl PlaySoundEffect mov r2, r8 adds r1, r2, r7 lsls r1, 3 @@ -2210,7 +2210,7 @@ _08112C0C: cmp r0, 0 beq _08112C32 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -2227,7 +2227,7 @@ _08112C32: cmp r0, 0 bne _08112C58 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -2254,7 +2254,7 @@ _08112C58: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08112CA8 @ =gUnknown_02024D1E ldrb r2, [r0, 0x1] cmp r2, 0 @@ -2317,7 +2317,7 @@ _08112CF0: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08112D28 @ =gTasks mov r2, r8 adds r0, r2, r7 @@ -2753,7 +2753,7 @@ _081130EA: bl m4aSongNumStop movs r0, 0xBC lsls r0, 1 - bl PlaySE + bl PlaySoundEffect ldr r1, _08113108 @ =gTasks lsls r0, r7, 2 adds r0, r7 @@ -2944,7 +2944,7 @@ _08113274: bl _08113B3A _0811328A: movs r0, 0x21 - bl PlaySE + bl PlaySoundEffect _08113290: lsls r0, r7, 2 adds r0, r7 @@ -3479,7 +3479,7 @@ _0811371C: cmp r0, 0 beq _08113742 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl HBlankCB_TradeEvolutionScene movs r0, 0 strb r0, [r4, 0x1] @@ -3496,7 +3496,7 @@ _08113742: cmp r0, 0 bne _08113768 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl HBlankCB_TradeEvolutionScene movs r0, 0x1 strb r0, [r4, 0x1] @@ -3534,7 +3534,7 @@ _08113768: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _081137D0 @ =gUnknown_02024D1E ldrb r2, [r0, 0x1] cmp r2, 0 @@ -3608,7 +3608,7 @@ _08113818: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08113868 @ =gTasks mov r2, r9 adds r0, r2, r7 diff --git a/asm/field_effect.s b/asm/field_effect.s index 2dfa491dc..a35d25142 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -969,7 +969,7 @@ _080860D4: subs r0, 0x1 strh r0, [r4, 0x3A] movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect _08086130: movs r1, 0x3A ldrsh r0, [r4, r1] @@ -1943,7 +1943,7 @@ sub_8086870: @ 8086870 ands r0, r2 strb r0, [r1, 0x1] movs r0, 0x2B - bl PlaySE + bl PlaySoundEffect ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] @@ -2031,7 +2031,7 @@ _08086964: cmp r0, 0 blt _08086988 movs r0, 0xD6 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r6] movs r1, 0x8 orrs r0, r1 @@ -2253,7 +2253,7 @@ _08086AEA: strh r0, [r5, 0x8] _08086B18: movs r0, 0x50 - bl PlaySE + bl PlaySoundEffect _08086B1E: movs r0, 0 pop {r4,r5} @@ -3273,7 +3273,7 @@ sub_8087298: @ 8087298 movs r0, 0x32 bl FieldEffectStart movs r0, 0xB2 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -3625,7 +3625,7 @@ sub_8087548: @ 8087548 strb r0, [r4, 0x1] bl CameraObjectReset1 movs r0, 0xAF - bl PlaySE + bl PlaySoundEffect movs r0, 0x4 bl sub_80608A4 adds r1, r0, 0 @@ -3875,7 +3875,7 @@ _0808774C: adds r0, r4, 0 bl FieldObjectSetSpecialAnim movs r0, 0x27 - bl PlaySE + bl PlaySoundEffect _0808776C: movs r0, 0 pop {r4-r6} @@ -4528,7 +4528,7 @@ _08087C60: movs r0, 0x1 strh r0, [r4, 0xE] movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect _08087C8E: add sp, 0x8 pop {r4,r5} @@ -4799,7 +4799,7 @@ sub_8087E4C: @ 8087E4C lsrs r0, 24 strh r0, [r6, 0x26] movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect _08087EC2: pop {r4-r6} pop {r0} @@ -6461,7 +6461,7 @@ FldEff_NPCFlyOut: @ 8088B68 ldr r0, [r0] strh r0, [r2, 0x30] movs r0, 0x9E - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 pop {r4} pop {r1} @@ -6774,7 +6774,7 @@ _08088DFE: adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x9E - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4, 0xA] bl sub_8088FC0 _08088E1C: diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index 9df9dfd8d..ff48d64f7 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -1890,7 +1890,7 @@ FldEff_Splash: @ 8127610 subs r0, 0x4 strh r0, [r3, 0x26] movs r0, 0x46 - bl PlaySE + bl PlaySoundEffect _0812769A: movs r0, 0 pop {r4-r6} @@ -2248,7 +2248,7 @@ _08127920: cmp r0, 0 bne _0812796A movs r0, 0x46 - bl PlaySE + bl PlaySoundEffect _0812796A: add sp, 0x4 pop {r4,r5} diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index 798285a45..ae4ec3b38 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -226,7 +226,7 @@ sub_8080B78: @ 8080B78 bl sub_8053E90 bl pal_fill_for_map_transition movs r0, 0x2E - bl PlaySE + bl PlaySoundEffect ldr r0, _08080B98 @ =task_map_chg_seq_0807E2CC movs r1, 0xA bl CreateTask @@ -616,7 +616,7 @@ sub_8080E88: @ 8080E88 bl fade_8080918 bl PlayRainSoundEffect movs r0, 0x9 - bl PlaySE + bl PlaySoundEffect ldr r0, _08080EB4 @ =gUnknown_0300485C ldr r1, _08080EB8 @ =mapldr_default str r1, [r0] @@ -726,7 +726,7 @@ sub_8080F68: @ 8080F68 bl sub_8053FF8 bl fade_8080918 movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect ldr r0, _08080F90 @ =task0A_fade_n_map_maybe movs r1, 0xA bl CreateTask @@ -822,7 +822,7 @@ sub_808102C: @ 808102C bl sub_8053FF8 bl fade_8080918 movs r0, 0x9 - bl PlaySE + bl PlaySoundEffect ldr r0, _0808104C @ =sub_8080FC4 movs r1, 0xA bl CreateTask @@ -864,7 +864,7 @@ _0808107E: bl fade_screen bl sub_8053FF8 movs r0, 0x9 - bl PlaySE + bl PlaySoundEffect b _080810AC _08081096: bl sub_8080E64 @@ -1016,7 +1016,7 @@ _080811A8: bl sub_8058790 lsls r0, 16 lsrs r0, 16 - bl PlaySE + bl PlaySoundEffect movs r1, 0 ldrsh r0, [r4, r1] movs r2, 0 @@ -1203,7 +1203,7 @@ sub_8081334: @ 8081334 bl fade_8080918 bl PlayRainSoundEffect movs r0, 0x9 - bl PlaySE + bl PlaySoundEffect ldr r0, _08081360 @ =gUnknown_0300485C ldr r1, _08081364 @ =sub_8080B60 str r1, [r0] diff --git a/asm/field_specials.s b/asm/field_specials.s index 63677b6a0..906a6bf7c 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -861,7 +861,7 @@ PetalburgGymSpecial1: @ 810E070 ldr r0, _0810E094 @ =gUnknown_02039259 strb r1, [r0] movs r0, 0x2C - bl PlaySE + bl PlaySoundEffect ldr r0, _0810E098 @ =Task_PetalburgGym movs r1, 0x8 bl CreateTask @@ -2159,7 +2159,7 @@ _0810E9E8: movs r0, 0 strh r0, [r1] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 movs r1, 0 movs r2, 0x1D @@ -2205,7 +2205,7 @@ _0810EA94: ldr r0, _0810EAC4 @ =gScriptResult strh r1, [r0] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_810EEDC movs r0, 0 movs r1, 0 @@ -2402,7 +2402,7 @@ sub_810EBEC: @ 810EBEC bl SetCameraPanningCallback bl sub_810ECFC movs r0, 0x59 - bl PlaySE + bl PlaySoundEffect pop {r0} bx r0 .align 2, 0 @@ -2450,7 +2450,7 @@ sub_810EC34: @ 810EC34 cmp r0, 0x17 bne _0810EC92 movs r0, 0x49 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 bl sub_810EC9C bl InstallCameraPanAheadCallback @@ -3092,7 +3092,7 @@ _0810F17A: ldrb r1, [r1] strh r1, [r0] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_810EEDC movs r0, 0 movs r1, 0 @@ -3112,7 +3112,7 @@ _0810F1AE: movs r0, 0x7F strh r0, [r1] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_810EEDC movs r0, 0 movs r1, 0 @@ -3896,7 +3896,7 @@ sub_810F758: @ 810F758 movs r0, 0 bl SetCameraPanningCallback movs r0, 0xD6 - bl PlaySE + bl PlaySoundEffect pop {r0} bx r0 .align 2, 0 diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 5f3e3a03f..7bb447c62 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -716,7 +716,7 @@ _0806995E: cmp r0, 0 beq _080699CE movs r0, 0x46 - bl PlaySE + bl PlaySoundEffect b _080699CE _0806998C: ldrh r0, [r4, 0xC] @@ -999,7 +999,7 @@ _08069BA4: bne _08069BB8 _08069BB2: movs r0, 0x47 - bl PlaySE + bl PlaySoundEffect _08069BB8: cmp r7, 0 beq _08069BF4 @@ -1409,7 +1409,7 @@ _08069EB6: ldrh r0, [r5, 0xA] strh r0, [r4] movs r0, 0x2A - bl PlaySE + bl PlaySoundEffect mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] @@ -1455,7 +1455,7 @@ _08069F20: ldrh r0, [r5, 0xA] strh r0, [r4] movs r0, 0x29 - bl PlaySE + bl PlaySoundEffect mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] diff --git a/asm/field_weather.s b/asm/field_weather.s index 92d2ffab2..a533f9a31 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -1978,7 +1978,7 @@ _0807DDA0: _0807DDA6: strb r0, [r1] adds r0, r2, 0 - bl PlaySE + bl PlaySoundEffect _0807DDAE: pop {r0} bx r0 @@ -2004,18 +2004,18 @@ PlayRainSoundEffect: @ 807DDB8 cmp r0, 0 bne _0807DDF0 movs r0, 0x56 - bl PlaySE + bl PlaySoundEffect b _0807DDF6 .align 2, 0 _0807DDE0: .4byte gUnknown_0202F7E8 _0807DDE4: .4byte 0x000006dd _0807DDE8: movs r0, 0x54 - bl PlaySE + bl PlaySoundEffect b _0807DDF6 _0807DDF0: movs r0, 0x52 - bl PlaySE + bl PlaySoundEffect _0807DDF6: pop {r0} bx r0 @@ -4930,14 +4930,14 @@ sub_807F434: @ 807F434 cmp r4, 0 beq _0807F474 movs r0, 0x57 - bl PlaySE + bl PlaySoundEffect b _0807F47A .align 2, 0 _0807F46C: .4byte gUnknown_08396FC4 _0807F470: .4byte 0x000006ed _0807F474: movs r0, 0x58 - bl PlaySE + bl PlaySoundEffect _0807F47A: ldr r0, _0807F488 @ =gUnknown_08396FC4 ldr r0, [r0] diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s index 25ede5738..733455e53 100644 --- a/asm/fldeff_80C5CD4.s +++ b/asm/fldeff_80C5CD4.s @@ -971,7 +971,7 @@ sub_80C644C: @ 80C644C push {r4,lr} adds r4, r0, 0 movs r0, 0x83 - bl PlaySE + bl PlaySoundEffect movs r0, 0 strh r0, [r4, 0x2E] ldr r0, _080C6464 @ =sub_80C6468 @@ -1148,7 +1148,7 @@ sub_80C6598: @ 80C6598 push {r4,lr} adds r4, r0, 0 movs r0, 0x9B - bl PlaySE + bl PlaySoundEffect ldr r0, _080C65BC @ =gUnknown_0202FF84 ldr r1, [r0, 0x1C] adds r2, r4, 0 @@ -1303,7 +1303,7 @@ sub_80C66BC: @ 80C66BC push {r4,lr} adds r4, r0, 0 movs r0, 0xA9 - bl PlaySE + bl PlaySoundEffect movs r0, 0 strh r0, [r4, 0x2E] ldr r0, _080C66D4 @ =sub_80C66D8 @@ -1495,7 +1495,7 @@ sub_80C683C: @ 80C683C adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect ldr r0, _080C6874 @ =0x00004054 bl VarGet lsls r0, 16 @@ -1666,19 +1666,19 @@ _080C6988: b _080C69B6 _080C6998: movs r0, 0x4A - bl PlaySE + bl PlaySoundEffect b _080C69B6 _080C69A0: movs r0, 0x4B - bl PlaySE + bl PlaySoundEffect b _080C69B6 _080C69A8: movs r0, 0x4C - bl PlaySE + bl PlaySoundEffect b _080C69B6 _080C69B0: movs r0, 0x4E - bl PlaySE + bl PlaySoundEffect _080C69B6: pop {r0} bx r0 @@ -1706,7 +1706,7 @@ sub_80C69C4: @ 80C69C4 lsls r4, 16 lsrs r4, 16 movs r0, 0x4D - bl PlaySE + bl PlaySoundEffect lsls r5, 16 asrs r5, 16 lsls r4, 16 @@ -1914,35 +1914,35 @@ _080C6AF0: .4byte _080C6C18 _080C6BE0: movs r0, 0x3E - bl PlaySE + bl PlaySoundEffect b _080C6C1E _080C6BE8: movs r0, 0x3F - bl PlaySE + bl PlaySoundEffect b _080C6C1E _080C6BF0: movs r0, 0x40 - bl PlaySE + bl PlaySoundEffect b _080C6C1E _080C6BF8: movs r0, 0x41 - bl PlaySE + bl PlaySoundEffect b _080C6C1E _080C6C00: movs r0, 0x42 - bl PlaySE + bl PlaySoundEffect b _080C6C1E _080C6C08: movs r0, 0x43 - bl PlaySE + bl PlaySoundEffect b _080C6C1E _080C6C10: movs r0, 0x44 - bl PlaySE + bl PlaySoundEffect b _080C6C1E _080C6C18: movs r0, 0x45 - bl PlaySE + bl PlaySoundEffect _080C6C1E: adds r0, r4, 0 bl DestroyTask @@ -1995,7 +1995,7 @@ SpriteCB_YellowCave4Sparkle: @ 80C6C64 cmp r0, 0x8 bne _080C6C7C movs r0, 0xC3 - bl PlaySE + bl PlaySoundEffect _080C6C7C: movs r1, 0x2E ldrsh r0, [r4, r1] @@ -2239,7 +2239,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 push {r4,r5,lr} adds r5, r0, 0 movs r0, 0x83 - bl PlaySE + bl PlaySoundEffect ldr r4, _080C6E90 @ =gUnknown_0202FF84 ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] @@ -2500,7 +2500,7 @@ _080C7070: .4byte REG_MOSAIC DoFieldPoisonEffect: @ 80C7074 push {lr} movs r0, 0x4F - bl PlaySE + bl PlaySoundEffect ldr r0, _080C7088 @ =Task_FieldPoisonEffect movs r1, 0x50 bl CreateTask diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index c14e9057d..b20cdec81 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -72,7 +72,7 @@ _0810CC30: .4byte sub_810CC34 sub_810CC34: @ 810CC34 push {lr} movs r0, 0xCF - bl PlaySE + bl PlaySoundEffect ldr r0, _0810CC4C @ =0x00000828 bl FlagSet ldr r0, _0810CC50 @ =gUnknown_081B694A diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 3ad85d7cf..844e6e8c4 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -545,7 +545,7 @@ sub_8142274: @ 8142274 movs r0, 0x3 bl TrySavingData movs r0, 0x37 - bl PlaySE + bl PlaySoundEffect ldr r1, _081422B0 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -972,7 +972,7 @@ _081425C0: movs r1, 0xF bl sub_8143068 movs r0, 0x69 - bl PlaySE + bl PlaySoundEffect ldr r1, _08142610 @ =gTasks mov r2, r8 adds r0, r2, r4 diff --git a/asm/item_menu.s b/asm/item_menu.s index 7463663d8..6e1a307f6 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -1709,7 +1709,7 @@ sub_80A3E90: @ 80A3E90 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_16 ldr r0, _080A3EE8 @ =gTasks lsls r5, r4, 2 @@ -1753,7 +1753,7 @@ sub_80A3EF4: @ 80A3EF4 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl nullsub_16 ldr r0, _080A3F44 @ =gTasks lsls r1, r4, 2 @@ -3318,7 +3318,7 @@ sub_80A4ADC: @ 80A4ADC bl sub_80A7528 _080A4AFA: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080A4B10 @ =gUnknown_0203855C movs r0, 0x1 strb r0, [r1] @@ -3770,7 +3770,7 @@ sub_80A4E8C: @ 80A4E8C lsls r6, 24 lsrs r6, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 movs r1, 0x1 bl sub_80F979C @@ -4099,7 +4099,7 @@ _080A50F6: b _080A526A _080A5138: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_80A3F50 b _080A526A @@ -4123,7 +4123,7 @@ _080A5160: cmp r1, r0 beq _080A5188 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_80A3E90 b _080A526A @@ -4183,7 +4183,7 @@ _080A51F0: cmp r0, 0 bne _080A5264 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _080A5250 @ =gUnknown_02038560 movs r1, 0 ldrsb r1, [r6, r1] @@ -4489,7 +4489,7 @@ _080A5440: b _080A5552 _080A5452: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _080A54EE @@ -4514,7 +4514,7 @@ _080A546C: cmp r0, 0x8 beq _080A5552 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 b _080A54EE .align 2, 0 @@ -4536,7 +4536,7 @@ _080A549C: cmp r0, 0x8 beq _080A5552 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x2 negs r0, r0 b _080A54EE @@ -4558,7 +4558,7 @@ _080A54CC: cmp r0, 0x8 beq _080A5552 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x2 _080A54EE: bl MoveMenuCursor3 @@ -4713,7 +4713,7 @@ _080A561E: b _080A5736 _080A5630: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _080A56D2 @@ -4740,7 +4740,7 @@ _080A5648: cmp r0, 0x8 beq _080A5736 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 b _080A56D2 .align 2, 0 @@ -4763,7 +4763,7 @@ _080A5680: cmp r0, 0x8 beq _080A5736 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x3 negs r0, r0 b _080A56D2 @@ -4785,7 +4785,7 @@ _080A56B0: cmp r0, 0x8 beq _080A5736 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x3 _080A56D2: bl MoveMenuCursor3 @@ -5008,7 +5008,7 @@ sub_80A5888: @ 80A5888 cmp r0, 0 beq _080A5988 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _080A58E2 @@ -5030,7 +5030,7 @@ _080A58C0: cmp r1, r0 beq _080A5988 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _080A58E2: bl MoveMenuCursor @@ -5279,7 +5279,7 @@ sub_80A5AE4: @ 80A5AE4 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_80A5AAC pop {r4} @@ -5361,7 +5361,7 @@ sub_80A5B78: @ 80A5B78 cmp r0, 0 beq _080A5BF2 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl CalculatePlayerPartyCount lsls r0, 24 cmp r0, 0 @@ -5774,7 +5774,7 @@ sub_80A5EA0: @ 80A5EA0 cmp r0, 0 beq _080A5EF8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080A5EEC @ =gScriptItemId ldrh r0, [r0] ldr r2, _080A5EF0 @ =gTasks @@ -5799,7 +5799,7 @@ _080A5EF8: cmp r0, 0 beq _080A5F0C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 bl sub_80A5D38 _080A5F0C: @@ -5815,7 +5815,7 @@ sub_80A5F14: @ 80A5F14 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080A5F58 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -5868,7 +5868,7 @@ sub_80A5F80: @ 80A5F80 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl sub_80A7528 adds r0, r4, 0 @@ -5887,7 +5887,7 @@ sub_80A5FAC: @ 80A5FAC lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080A5FD0 @ =gSaveBlock1 ldr r1, _080A5FD4 @ =0x00000496 adds r4, r0, r1 @@ -6021,7 +6021,7 @@ ItemMenu_Give: @ 80A60C8 lsrs r4, r0, 24 adds r6, r4, 0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r5, _080A60FC @ =gScriptItemId ldrh r0, [r5] bl sub_80F931C @@ -6548,7 +6548,7 @@ sub_80A6520: @ 80A6520 cmp r0, 0 beq _080A653E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl BuyMenuPrintItemQuantityAndPrice _080A653E: @@ -6589,7 +6589,7 @@ sub_80A6574: @ 80A6574 lsls r5, 24 lsrs r5, 24 movs r0, 0x5F - bl PlaySE + bl PlaySoundEffect ldr r0, _080A65A0 @ =gScriptItemId ldrh r0, [r0] ldr r1, _080A65A4 @ =gTasks @@ -6742,7 +6742,7 @@ _080A66B4: cmp r0, 0 beq _080A6744 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 movs r1, 0xA movs r2, 0xD @@ -6798,7 +6798,7 @@ _080A6744: cmp r0, 0 beq _080A6758 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl BuyMenuPrintItemQuantityAndPrice _080A6758: @@ -7313,7 +7313,7 @@ _080A6B1A: adds r1, r2, 0 bl sub_80A48E8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_80A5D38 _080A6B4C: @@ -7408,7 +7408,7 @@ sub_80A6BE0: @ 80A6BE0 cmp r2, 0 beq _080A6C20 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080A6C1C @ =gBGTilemapBuffers + 0x800 bl sub_80A4DA4 adds r0, r4, 0 @@ -7440,7 +7440,7 @@ _080A6C20: adds r1, r2, 0 bl sub_80A48E8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 bl sub_80A5D38 _080A6C58: @@ -7485,7 +7485,7 @@ sub_80A6C6C: @ 80A6C6C bl sub_80A48E8 bl sub_80A73FC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80A7590 movs r0, 0 ldrsb r0, [r6, r0] @@ -7750,7 +7750,7 @@ sub_80A6EB8: @ 80A6EB8 cmp r0, 0x1 bne _080A6FC0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _080A6F02 @@ -7768,7 +7768,7 @@ _080A6EE8: cmp r0, r1 bge _080A6FC0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _080A6F02: bl MoveMenuCursor @@ -7993,7 +7993,7 @@ sub_80A70D8: @ 80A70D8 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_80A7094 pop {r4} @@ -8012,7 +8012,7 @@ ItemMenu_UseInBattle: @ 80A70F4 cmp r0, 0 beq _080A711A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4] bl ItemId_GetBattleFunc adds r1, r0, 0 @@ -8033,7 +8033,7 @@ sub_80A7124: @ 80A7124 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl sub_80A7528 adds r0, r4, 0 @@ -8184,14 +8184,14 @@ _080A7260: b _080A7358 _080A726A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 movs r1, 0x2 bl sub_80A4E8C b _080A7358 _080A727A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x2 bl sub_80F98A4 movs r0, 0x3 @@ -8240,7 +8240,7 @@ _080A72EC: .4byte gUnknown_02038559 _080A72F0: .4byte gBGTilemapBuffers + 0x800 _080A72F4: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080A7344 @ =gBGTilemapBuffers + 0x800 bl sub_80A4DA4 ldr r4, _080A7348 @ =gSaveBlock1 + 0x560 diff --git a/asm/learn_move.s b/asm/learn_move.s index 84d244fe8..1beeef7d7 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -1083,7 +1083,7 @@ _08132FBC: cmp r0, 0 beq _08132FD6 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _08132FCE: ldr r0, _08132FE8 @ =gUnknown_030007B0 ldr r1, [r0] @@ -1254,7 +1254,7 @@ _0813310C: cmp r4, 0 beq _0813312A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _0813313C @ =gUnknown_030007B0 ldr r1, [r2] movs r0, 0x5 @@ -1432,7 +1432,7 @@ _0813326C: cmp r4, 0 beq _0813328A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _0813329C @ =gUnknown_030007B0 ldr r1, [r2] movs r3, 0 @@ -1923,7 +1923,7 @@ sub_813362C: @ 813362C b _08133796 _08133646: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, [r4] ldrb r0, [r1, 0x1B] subs r0, 0x1 @@ -1968,7 +1968,7 @@ _08133688: b _08133796 _081336A0: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, [r4] ldrb r0, [r1, 0x1B] adds r0, 0x1 @@ -2009,7 +2009,7 @@ _081336E8: cmp r0, 0 beq _0813376C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r5, _08133738 @ =gUnknown_030007B0 ldr r2, [r5] ldrb r1, [r2, 0x1B] @@ -2065,7 +2065,7 @@ _0813376C: cmp r0, 0 beq _08133796 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _081337D4 @ =gUnknown_030007B0 ldr r1, [r0] movs r0, 0xC diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index f10070110..9dbaa0359 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -138,7 +138,7 @@ _080F9114: b _080F9140 _080F911A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080F912C @ =gUnknown_020388C4 ldr r1, [r0] adds r0, r4, 0 @@ -148,7 +148,7 @@ _080F911A: _080F912C: .4byte gUnknown_020388C4 _080F9130: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080F9148 @ =gUnknown_020388C4 ldr r1, [r0, 0x4] adds r0, r4, 0 diff --git a/asm/mon_markings.s b/asm/mon_markings.s index 28bc116a9..c49967360 100644 --- a/asm/mon_markings.s +++ b/asm/mon_markings.s @@ -387,7 +387,7 @@ _080F7558: cmp r0, 0 beq _080F758C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, [r4] ldrb r0, [r1, 0x5] subs r0, 0x1 @@ -409,7 +409,7 @@ _080F758C: cmp r0, 0 beq _080F75B0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, [r4] ldrb r0, [r1, 0x5] adds r0, 0x1 @@ -427,7 +427,7 @@ _080F75B0: cmp r0, 0 beq _080F7602 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, [r4] movs r1, 0x5 ldrsb r1, [r0, r1] @@ -472,7 +472,7 @@ _080F7602: cmp r0, 0 beq _080F75FE movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _080F7610: movs r0, 0 _080F7612: diff --git a/asm/party_menu.s b/asm/party_menu.s index 534d4aaa4..1eae399ab 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -2442,7 +2442,7 @@ _0806C1A4: cmp r5, r0 beq _0806C1C8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806C1C8: pop {r3,r4} mov r8, r3 @@ -3327,7 +3327,7 @@ _0806C84A: cmp r6, r0 beq _0806C878 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806C878: pop {r3} mov r8, r3 @@ -3402,7 +3402,7 @@ _0806C8E2: movs r1, 0x2 strb r1, [r0] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806C914: pop {r4-r6} pop {r0} @@ -3776,7 +3776,7 @@ _0806CBDA: cmp r0, 0 beq _0806CC10 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0806CC0C @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -3798,7 +3798,7 @@ _0806CC10: cmp r0, 0x2 bne _0806CC24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_806CD44 _0806CC24: @@ -7776,7 +7776,7 @@ _0806EB80: cmp r1, r0 bne _0806EB8E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806EB8E: movs r0, 0x17 movs r1, 0x8 @@ -8159,7 +8159,7 @@ _0806EEBC: cmp r1, r0 bne _0806EECA movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806EECA: movs r0, 0x17 movs r1, 0x8 @@ -8277,7 +8277,7 @@ _0806EFA8: cmp r1, r0 bne _0806EFB6 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806EFB6: movs r0, 0x17 movs r1, 0x8 @@ -8389,7 +8389,7 @@ TeachMonTMMove: @ 806F06C lsls r5, 16 lsrs r5, 16 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0806F0A8 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -8800,7 +8800,7 @@ _0806F3E0: cmp r1, r0 bne _0806F3EE movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806F3EE: adds r0, r5, 0 bl StopTryingToTeachMove_806F614 @@ -9191,7 +9191,7 @@ _0806F73C: cmp r1, r0 bne _0806F74A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0806F74A: movs r0, 0x17 movs r1, 0x8 @@ -9553,7 +9553,7 @@ sub_806FA18: @ 806FA18 cmp r0, r1 bne _0806FAE4 movs r0, 0x1 - bl PlaySE + bl PlaySoundEffect movs r0, 0x80 lsls r0, 5 adds r4, r6, r0 @@ -10112,7 +10112,7 @@ _0806FEE6: movs r0, 0 strb r0, [r1] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0806FF0C @ =gOtherText_WontHaveAnyEffect movs r1, 0x1 bl sub_806E834 @@ -10134,13 +10134,13 @@ _0806FF14: cmp r0, 0 bne _0806FF34 movs r0, 0x1 - bl PlaySE + bl PlaySoundEffect b _0806FF3A .align 2, 0 _0806FF30: .4byte gUnknown_0202E8F4 _0806FF34: movs r0, 0x75 - bl PlaySE + bl PlaySoundEffect _0806FF3A: ldr r4, _0806FF88 @ =0x0201c000 ldr r0, [r4] @@ -10514,7 +10514,7 @@ Task_HandleItemUseMoveMenuInput: @ 8070374 cmp r0, 0 beq _0807039C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -10527,7 +10527,7 @@ _0807039C: cmp r0, 0 beq _080703B2 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _080703E4 @@ -10549,7 +10549,7 @@ _080703CC: cmp r0, 0 beq _080703E4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080703EC @ =gUnknown_08376B54 ldr r1, [r0, 0x4] adds r0, r4, 0 @@ -10625,7 +10625,7 @@ _08070468: .4byte gTasks _0807046C: .4byte TaskDummy _08070470: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0xA movs r1, 0x3 bl sub_806D538 @@ -10766,7 +10766,7 @@ DoRecoverPP: @ 8070570 ldr r0, _080705B0 @ =gUnknown_0202E8F4 strb r5, [r0] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080705B4 @ =gOtherText_WontHaveAnyEffect movs r1, 0x1 bl sub_806E834 @@ -10781,7 +10781,7 @@ _080705B8: movs r0, 0x1 strb r0, [r1] movs r0, 0x1 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r6, 0x6] movs r1, 0x1 bl RemoveBagItem @@ -10839,7 +10839,7 @@ DoPPUpItemEffect: @ 8070624 str r4, [r3] bl sub_806E8D0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0xB movs r1, 0x3 bl sub_806D538 @@ -10925,7 +10925,7 @@ _080706F6: movs r0, 0 strb r0, [r1] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0807071C @ =gOtherText_WontHaveAnyEffect movs r1, 0x1 bl sub_806E834 @@ -11013,7 +11013,7 @@ Task_RareCandy1: @ 80707A0 beq _080707E8 _080707CE: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_8070848 ldr r0, _080707F8 @ =gTasks @@ -11051,7 +11051,7 @@ Task_RareCandy2: @ 8070800 beq _08070834 _0807081A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_8070968 ldr r0, _08070840 @ =gTasks @@ -11584,7 +11584,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC lsls r1, 16 lsrs r6, r1, 16 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08070E18 @ =gTasks lsls r0, r4, 2 adds r0, r4 diff --git a/asm/player_pc.s b/asm/player_pc.s index 5e2adb775..7e1333b1c 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -554,7 +554,7 @@ sub_813B174: @ 813B174 cmp r0, 0 beq _0813B1B8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _0813B1E6 @@ -567,7 +567,7 @@ _0813B1B8: cmp r0, 0 beq _0813B274 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4, 0x2] subs r0, 0x1 b _0813B208 @@ -583,7 +583,7 @@ _0813B1CA: cmp r1, r0 beq _0813B1F4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _0813B1E6: bl MoveMenuCursor @@ -598,7 +598,7 @@ _0813B1F4: cmp r0, r1 beq _0813B274 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4, 0x2] adds r0, 0x1 _0813B208: @@ -614,7 +614,7 @@ _0813B212: beq _0813B25C bl sub_8072DEC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0813B23C @ =0x0201fe00 ldrb r1, [r0, 0x2] ldrb r2, [r0] @@ -647,7 +647,7 @@ _0813B25C: beq _0813B274 bl sub_8072DEC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_813B320 _0813B274: @@ -811,7 +811,7 @@ sub_813B3A0: @ 813B3A0 cmp r0, 0 beq _0813B3C8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -824,7 +824,7 @@ _0813B3C8: cmp r0, 0 beq _0813B3DE movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _0813B420 @@ -835,7 +835,7 @@ _0813B3DE: cmp r0, 0 beq _0813B40C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _0813B408 @ =gUnknown_084062F8 bl GetMenuCursorPos lsls r0, 24 @@ -854,7 +854,7 @@ _0813B40C: cmp r0, 0 beq _0813B420 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl Mailbox_Cancel _0813B420: diff --git a/asm/pokeball.s b/asm/pokeball.s index 9abeed00d..6b906288e 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -256,7 +256,7 @@ _080465CC: ldr r1, _08046630 @ =TaskDummy str r1, [r0] movs r0, 0x3D - bl PlaySE + bl PlaySoundEffect _08046616: add sp, 0x4 pop {r3-r5} @@ -435,7 +435,7 @@ sub_8046760: @ 8046760 cmp r0, 0xB bne _08046778 movs r0, 0x3C - bl PlaySE + bl PlaySoundEffect _08046778: ldr r6, _080467C4 @ =gSprites ldr r5, _080467C8 @ =gUnknown_02024BE0 @@ -604,19 +604,19 @@ _080468B0: b _080468CE _080468B6: movs r0, 0x38 - bl PlaySE + bl PlaySoundEffect b _08046902 _080468BE: movs r0, 0x39 - bl PlaySE + bl PlaySoundEffect b _08046902 _080468C6: movs r0, 0x3A - bl PlaySE + bl PlaySoundEffect b _08046902 _080468CE: movs r0, 0x3B - bl PlaySE + bl PlaySoundEffect b _08046902 _080468D6: movs r2, 0x38 @@ -701,7 +701,7 @@ sub_8046944: @ 8046944 ldr r0, _08046980 @ =sub_8046984 str r0, [r4, 0x1C] movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect _08046978: pop {r4} pop {r0} @@ -875,7 +875,7 @@ _08046ABC: bl StartSpriteAffineAnim _08046AC4: movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect _08046ACA: pop {r4} pop {r0} @@ -1494,7 +1494,7 @@ sub_8046FBC: @ 8046FBC strb r1, [r0] bl m4aMPlayAllStop ldr r0, _08046FF0 @ =0x00000173 - bl PlaySE + bl PlaySoundEffect b _08047056 .align 2, 0 _08046FEC: .4byte gUnknown_02024E6D @@ -2404,7 +2404,7 @@ sub_80476E0: @ 80476E0 cmp r0, 0xB bne _080476F8 movs r0, 0x3C - bl PlaySE + bl PlaySoundEffect _080476F8: ldrh r1, [r5, 0x2E] lsls r1, 24 diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 44ac16b7e..5c507bf62 100644 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -1079,7 +1079,7 @@ sub_810BF38: @ 810BF38 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _0810BF6C @ =gSprites ldr r0, _0810BF70 @ =0x02000000 ldr r1, _0810BF74 @ =0x0001fffe @@ -1195,7 +1195,7 @@ _0810C012: cmp r0, r1 beq _0810C0B8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl sub_810BDAC ldr r1, _0810C054 @ =gTasks @@ -1220,7 +1220,7 @@ _0810C05C: cmp r0, 0 beq _0810C09C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0810C088 @ =gUnknown_02039248 ldrb r1, [r0, 0x1] ldrb r2, [r0] @@ -1249,7 +1249,7 @@ _0810C09C: cmp r0, 0 beq _0810C0B8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0810C0C0 @ =gScriptResult ldr r2, _0810C0C4 @ =0x0000ffff adds r0, r2, 0 @@ -1354,7 +1354,7 @@ _0810C168: beq _0810C190 _0810C17A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 movs r1, 0 bl sub_810C1C8 @@ -1367,7 +1367,7 @@ _0810C190: cmp r0, 0 beq _0810C1BA movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 movs r1, 0 bl sub_810C1C8 @@ -1692,7 +1692,7 @@ sub_810C40C: @ 810C40C cmp r0, 0 beq _0810C4BC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -1713,7 +1713,7 @@ _0810C440: cmp r0, r1 beq _0810C4BC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _0810C4BC @@ -1726,7 +1726,7 @@ _0810C46C: cmp r0, 0 beq _0810C4A8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _0810C4A0 @ =gUnknown_083F7EF4 bl GetMenuCursorPos lsls r0, 24 @@ -1751,7 +1751,7 @@ _0810C4A8: cmp r0, 0 beq _0810C4BC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_810C748 _0810C4BC: diff --git a/asm/pokedex.s b/asm/pokedex.s index 8fd971840..2206c15d8 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -426,7 +426,7 @@ _08090AA4: mov r0, r8 strh r0, [r5, 0x10] movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect b _08090B44 .align 2, 0 _08090B00: .4byte gTasks @@ -653,7 +653,7 @@ sub_8090C68: @ 8090C68 adds r0, 0x1 strh r0, [r1] movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect b _08090D2A .align 2, 0 _08090CD0: .4byte gUnknown_0202FFBC @@ -693,7 +693,7 @@ _08090CE4: subs r0, 0x1 strh r0, [r1] movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect _08090D2A: pop {r4,r5} pop {r0} @@ -3220,7 +3220,7 @@ sub_809207C: @ 809207C cmp r0, 0 beq _080920B0 movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect ldr r0, _080920A8 @ =gTasks lsls r1, r5, 2 adds r1, r5 @@ -3260,12 +3260,12 @@ _080920D8: b _0809216C _080920DE: movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect strh r4, [r5, 0xA] b _080920F2 _080920E8: movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect movs r0, 0x4 strh r0, [r5, 0xA] _080920F2: @@ -3276,7 +3276,7 @@ _080920F2: _080920F8: .4byte sub_809217C _080920FC: movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect ldr r0, _08092108 @ =sub_80927B8 str r0, [r5] b _0809216C @@ -3297,7 +3297,7 @@ _0809210C: cmp r0, 0 ble _0809213A movs r0, 0x6D - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4, 0x8] subs r0, 0x1 strh r0, [r4, 0x8] @@ -3321,7 +3321,7 @@ _0809213A: cmp r0, 0x1 bgt _0809216C movs r0, 0x6D - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -3403,7 +3403,7 @@ _080921F0: cmp r3, 0 beq _08092230 movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 bl sub_8092EB0 ldr r0, _08092228 @ =gTasks @@ -3480,7 +3480,7 @@ _08092288: adds r0, r2 strh r1, [r0] movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect ldr r0, _080922D0 @ =sub_80927B8 str r0, [r6] b _080923EC @@ -3499,14 +3499,14 @@ _080922D4: ldr r0, _080922EC @ =sub_80923FC str r0, [r6] movs r0, 0x70 - bl PlaySE + bl PlaySoundEffect b _080923EC .align 2, 0 _080922E8: .4byte gDexText_Searching _080922EC: .4byte sub_80923FC _080922F0: movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect ldr r0, _080922FC @ =sub_80925CC str r0, [r6] b _080923EC @@ -3530,7 +3530,7 @@ _08092300: cmp r0, 0xFF beq _08092338 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3559,7 +3559,7 @@ _08092338: cmp r0, 0xFF beq _08092374 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3588,7 +3588,7 @@ _08092374: cmp r0, 0xFF beq _080923B0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3617,7 +3617,7 @@ _080923B0: cmp r0, 0xFF beq _080923EC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3731,7 +3731,7 @@ sub_80924A4: @ 80924A4 cmp r0, 0 beq _080924DC movs r0, 0x1F - bl PlaySE + bl PlaySoundEffect ldr r0, _080924D8 @ =gDexText_SearchComplete bl sub_8091E20 b _080924E8 @@ -3741,7 +3741,7 @@ _080924D4: .4byte 0x0000060c _080924D8: .4byte gDexText_SearchComplete _080924DC: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect ldr r0, _080924FC @ =gDexText_NoMatching bl sub_8091E20 _080924E8: @@ -3811,7 +3811,7 @@ sub_8092508: @ 8092508 ldr r1, _0809258C @ =sub_80927B8 str r1, [r0] movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect b _080925A4 .align 2, 0 _08092570: .4byte gMain @@ -3831,7 +3831,7 @@ _08092590: ldr r0, _080925B0 @ =sub_809217C str r0, [r1] movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect _080925A4: pop {r4,r5} pop {r0} @@ -3951,7 +3951,7 @@ sub_8092644: @ 8092644 beq _080926B4 bl sub_814ADC8 movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect movs r0, 0x12 movs r1, 0x1 movs r2, 0x1C @@ -3971,7 +3971,7 @@ _080926B4: beq _080926EC bl sub_814ADC8 movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect movs r0, 0x12 movs r1, 0x1 movs r2, 0x1C @@ -4026,7 +4026,7 @@ _08092730: beq _080927AE _08092734: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4] ldrh r1, [r5] adds r0, r1 @@ -4074,7 +4074,7 @@ _08092794: beq _080927AE _08092798: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4] ldrh r1, [r5] adds r0, r1 diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index bd8db8a2c..8649d2c6b 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -2009,7 +2009,7 @@ _081115B4: beq _081115D0 strh r1, [r5, 0xA] movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect b _0811163C .align 2, 0 _081115CC: .4byte gMain @@ -2030,7 +2030,7 @@ _081115D0: _081115EA: strh r3, [r5, 0xA] movs r0, 0x6D - bl PlaySE + bl PlaySoundEffect b _0811163C .align 2, 0 _081115F4: .4byte gSaveBlock2 diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s index 57bcd4904..30a973107 100644 --- a/asm/pokemon_menu.s +++ b/asm/pokemon_menu.s @@ -333,7 +333,7 @@ sub_8089CD4: @ 8089CD4 _08089D00: .4byte gPaletteFade _08089D04: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_806CA38 ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened @@ -369,7 +369,7 @@ _08089D58: .4byte gTasks _08089D5C: .4byte sub_8089D94 _08089D60: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 str r5, [sp] @@ -413,7 +413,7 @@ sub_8089D94: @ 8089D94 cmp r1, 0x40 bne _08089DD4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -428,7 +428,7 @@ _08089DD4: cmp r1, 0x80 bne _08089DF0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor ldr r1, _08089DEC @ =gUnknown_0202FFA8 @@ -443,7 +443,7 @@ _08089DF0: cmp r0, 0 beq _08089E30 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08089E24 @ =gPokemonMenuActions ldr r2, _08089E28 @ =gUnknown_0202FFAA ldr r0, _08089E2C @ =gUnknown_0202FFA8 @@ -755,7 +755,7 @@ sub_808A060: @ 808A060 bl MoveMenuCursor strb r0, [r4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0808A086: ldr r0, _0808A0D0 @ =gMain ldrh r0, [r0, 0x2E] @@ -769,7 +769,7 @@ _0808A086: bl MoveMenuCursor strb r0, [r4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0808A0A4: ldr r0, _0808A0D0 @ =gMain ldrh r1, [r0, 0x2E] @@ -778,7 +778,7 @@ _0808A0A4: cmp r0, 0 beq _0808A0E0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0808A0D8 @ =gUnknown_0839F578 ldr r2, _0808A0DC @ =gPokemonMenuActions ldr r0, _0808A0D4 @ =gUnknown_0202FFA8 @@ -1585,7 +1585,7 @@ sub_808A73C: @ 808A73C cmp r0, 0x40 bne _0808A77A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _0808A768 @ =gUnknown_0202FFA8 ldrb r0, [r4] cmp r0, 0 @@ -1612,7 +1612,7 @@ _0808A77A: cmp r0, 0x80 bne _0808A7B4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _0808A7A4 @ =gUnknown_0202FFA8 ldrb r0, [r4] ldr r1, _0808A7A8 @ =gUnknown_0839F584 @@ -1642,7 +1642,7 @@ _0808A7B4: cmp r0, 0 beq _0808A7F0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0808A7E4 @ =gUnknown_0839F584 ldr r2, _0808A7E8 @ =gPokemonMenuActions ldr r0, _0808A7EC @ =gUnknown_0202FFA8 @@ -1814,7 +1814,7 @@ PokemonMenu_Cancel: @ 808A918 lsrs r4, 24 bl sub_8072DEC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_808A8D4 pop {r4} @@ -1830,7 +1830,7 @@ PokemonMenu_CancelSubmenu: @ 808A938 lsrs r4, 24 bl sub_8072DEC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x13 movs r1, 0 movs r2, 0x1D @@ -2808,7 +2808,7 @@ _0808B0F0: cmp r0, 0 beq _0808B120 movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect b _0808B1CE .align 2, 0 _0808B118: .4byte gLastFieldPokeMenuOpened @@ -2831,7 +2831,7 @@ _0808B13C: cmp r0, 0x1 bne _0808B154 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0808B174 @ =gScriptItemId ldrh r1, [r0] ldr r2, _0808B17C @ =sub_808B2EC @@ -2842,7 +2842,7 @@ _0808B154: cmp r0, 0x3 bne _0808B1CE movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0808B180 @ =sub_808B2B4 adds r0, r4, 0 bl PartyMenuTryGiveMonMail @@ -2860,7 +2860,7 @@ _0808B184: ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened strb r0, [r1] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 str r5, [sp] diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 176a42124..27a600b45 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1397,7 +1397,7 @@ sub_8096368: @ 8096368 cmp r0, 0 beq _08096384 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0xC9 b _080963CC .align 2, 0 @@ -1408,7 +1408,7 @@ _08096384: cmp r0, 0 beq _080963A4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080963A0 @ =gUnknown_02038478 ldr r0, [r0] movs r1, 0x8F @@ -1424,7 +1424,7 @@ _080963A4: cmp r0, 0 beq _080963B8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_809662C b _080963CA _080963B8: @@ -1433,7 +1433,7 @@ _080963B8: cmp r0, 0 beq _080963CA movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80965F8 _080963CA: movs r0, 0xC8 @@ -2464,7 +2464,7 @@ _08096C0E: b _08096C38 _08096C16: movs r0, 0x2 - bl PlaySE + bl PlaySoundEffect movs r1, 0 movs r0, 0xE strh r0, [r4, 0xC] @@ -2580,7 +2580,7 @@ _08096CE0: .4byte _08096DA0 _08096D20: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _08096D30 @ =0x02000000 movs r0, 0x1 strb r0, [r1, 0x4] @@ -2646,7 +2646,7 @@ _08096DA0: _08096DA8: .4byte sub_8097CC0 _08096DAC: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08096DBC @ =sub_809789C bl sub_8096BE0 b _08096FBA @@ -2654,7 +2654,7 @@ _08096DAC: _08096DBC: .4byte sub_809789C _08096DC0: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08096DD0 @ =sub_8097078 bl sub_8096BE0 b _08096FBA @@ -2662,7 +2662,7 @@ _08096DC0: _08096DD0: .4byte sub_8097078 _08096DD4: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _08096DF0 @ =0x02000000 ldr r0, _08096DF4 @ =gPokemonStorage ldrb r0, [r0] @@ -2680,7 +2680,7 @@ _08096DF4: .4byte gPokemonStorage _08096DF8: .4byte 0x000008b2 _08096DFC: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _08096E24 @ =0x02000000 ldr r0, _08096E28 @ =gPokemonStorage ldrb r0, [r0] @@ -2725,7 +2725,7 @@ _08096E54: .4byte 0x02000000 _08096E58: .4byte 0x000011f2 _08096E5C: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08096E6C @ =sub_809746C bl sub_8096BE0 b _08096FBA @@ -2737,7 +2737,7 @@ _08096E70: cmp r0, 0 bne _08096E96 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08096E88 @ =sub_80972A8 bl sub_8096BE0 b _08096FBA @@ -2757,7 +2757,7 @@ _08096E96: _08096EA0: .4byte 0x02000000 _08096EA4: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08096EB4 @ =c3_0808DC50 bl sub_8096BE0 b _08096FBA @@ -2765,7 +2765,7 @@ _08096EA4: _08096EB4: .4byte c3_0808DC50 _08096EB8: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08096EC8 @ =sub_8097390 bl sub_8096BE0 b _08096FBA @@ -2773,7 +2773,7 @@ _08096EB8: _08096EC8: .4byte sub_8097390 _08096ECC: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08096EDC @ =sub_80972FC bl sub_8096BE0 b _08096FBA @@ -2852,12 +2852,12 @@ _08096F78: .4byte gMain _08096F7C: .4byte 0x02000000 _08096F80: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0xD b _08096F92 _08096F8A: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0x16 _08096F92: bl sub_8098898 @@ -2939,7 +2939,7 @@ _0809701C: b _0809706A _08097022: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl add_to_c3_somehow b _08097044 _0809702E: @@ -3055,7 +3055,7 @@ _08097120: cmp r0, 0 bne _080971D6 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r0, _0809713C @ =sub_80972A8 bl sub_8096BE0 @@ -3064,7 +3064,7 @@ _08097120: _0809713C: .4byte sub_80972A8 _08097140: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r0, _08097154 @ =sub_80972FC bl sub_8096BE0 @@ -3077,7 +3077,7 @@ _08097158: cmp r0, 0 beq _080971D6 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r0, _08097174 @ =c3_0808DC50 bl sub_8096BE0 @@ -3086,7 +3086,7 @@ _08097158: _08097174: .4byte c3_0808DC50 _08097178: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r0, _0809718C @ =sub_8097390 bl sub_8096BE0 @@ -3107,7 +3107,7 @@ _08097190: cmp r0, 0 bne _08097210 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r0, _080971C8 @ =sub_809746C bl sub_8096BE0 @@ -3157,7 +3157,7 @@ _08097210: _08097218: .4byte 0x000011f2 _0809721C: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0809722C @ =sub_8097594 bl sub_8096BE0 b _0809729A @@ -3165,7 +3165,7 @@ _0809721C: _0809722C: .4byte sub_8097594 _08097230: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08097240 @ =sub_8097788 bl sub_8096BE0 b _0809729A @@ -3173,7 +3173,7 @@ _08097230: _08097240: .4byte sub_8097788 _08097244: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08097254 @ =sub_80977E4 bl sub_8096BE0 b _0809729A @@ -3181,17 +3181,17 @@ _08097244: _08097254: .4byte sub_80977E4 _08097258: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0xD b _08097274 _08097262: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0x11 b _08097274 _0809726C: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0x16 _08097274: bl sub_8098898 @@ -4005,7 +4005,7 @@ _08097914: _08097928: .4byte sub_8096C84 _0809792C: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _0809793C @ =sub_8097B44 bl sub_8096BE0 b _08097968 @@ -4013,7 +4013,7 @@ _0809792C: _0809793C: .4byte sub_8097B44 _08097940: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r0, _08097954 @ =sub_8097974 bl sub_8096BE0 @@ -4022,7 +4022,7 @@ _08097940: _08097954: .4byte sub_8097974 _08097958: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r0, _08097970 @ =sub_8097A64 bl sub_8096BE0 @@ -4087,7 +4087,7 @@ _080979D4: cmp r0, 0xC blt _08097A5A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4] subs r0, 0xC strh r0, [r4] @@ -4118,7 +4118,7 @@ _080979FC: b _08097A5A _08097A24: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldrh r0, [r4] subs r0, 0x10 @@ -4329,7 +4329,7 @@ _08097BD4: cmp r0, 0 beq _08097BF8 movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0xF bl sub_8098898 ldr r1, _08097BF4 @ =0x02000000 @@ -4340,7 +4340,7 @@ _08097BD4: _08097BF4: .4byte 0x02000000 _08097BF8: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl sub_8098898 movs r0, 0 @@ -4386,7 +4386,7 @@ _08097C4A: _08097C58: .4byte sub_8096C84 _08097C5C: movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r1, _08097C70 @ =0x02000000 ldrb r0, [r1, 0x4] @@ -4463,7 +4463,7 @@ _08097CF4: cmp r0, 0 beq _08097D18 movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0xF bl sub_8098898 ldr r1, _08097D14 @ =0x02000000 @@ -4474,7 +4474,7 @@ _08097CF4: _08097D14: .4byte 0x02000000 _08097D18: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x12 bl sub_8098898 movs r0, 0 @@ -4521,7 +4521,7 @@ _08097D6C: _08097D78: .4byte sub_8096C84 _08097D7C: movs r0, 0x3 - bl PlaySE + bl PlaySoundEffect bl sub_8098A5C ldr r1, _08097D90 @ =0x02000000 ldrb r0, [r1, 0x4] @@ -5825,7 +5825,7 @@ sub_809880C: @ 809880C movs r1, 0 strb r1, [r0] movs r0, 0x6 - bl PlaySE + bl PlaySoundEffect bl sub_80984E8 pop {r0} bx r0 @@ -14796,7 +14796,7 @@ sub_809CF30: @ 809CF30 cmp r0, 0 beq _0809CF52 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r5, 0x1 _0809CF52: ldrh r1, [r4, 0x2E] @@ -14805,7 +14805,7 @@ _0809CF52: cmp r0, 0 beq _0809CF70 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -14818,7 +14818,7 @@ _0809CF70: cmp r0, 0 beq _0809CF8E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _0809CF8E diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index 20231a0bb..a2d142c4c 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -1043,7 +1043,7 @@ SummaryScreenExit: @ 809E0FC lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 movs r1, 0 @@ -1386,7 +1386,7 @@ _0809E3BC: .4byte 0x02018000 _0809E3C0: .4byte gSpecialVar_0x8005 _0809E3C4: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect ldrb r1, [r5] adds r0, r4, 0 bl sub_809F9D0 @@ -1492,13 +1492,13 @@ _0809E474: cmp r0, 0 bne _0809E4AC movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect b _0809E502 .align 2, 0 _0809E4A8: .4byte 0x02018000 _0809E4AC: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r1, [r6] adds r0, r4, 0 adds r0, 0x7A @@ -1520,7 +1520,7 @@ _0809E4D8: .4byte gTasks _0809E4DC: .4byte sub_809E534 _0809E4E0: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r7, 0 bl sub_809EAC8 b _0809E502 @@ -1530,7 +1530,7 @@ _0809E4EE: cmp r0, 0 beq _0809E502 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r7, 0 bl sub_809EAC8 _0809E502: @@ -1946,7 +1946,7 @@ sub_809E83C: @ 809E83C lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x13 bl sub_80A1B1C movs r0, 0 @@ -2041,7 +2041,7 @@ sub_809E8F0: @ 809E8F0 movs r0, 0x1 str r0, [sp] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect mov r1, r9 ldrb r6, [r1] ldr r1, _0809E944 @ =gTasks @@ -2206,7 +2206,7 @@ SummaryScreenHandleAButton: @ 809EA50 lsls r0, 24 lsrs r5, r0, 24 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _0809EABC @ =0x02018000 adds r1, r4, 0 adds r1, 0x79 @@ -3122,7 +3122,7 @@ _0809F17C: cmp r0, 0xFF bne _0809F1A6 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r6, 0 adds r1, r5, 0 bl sub_809F0D0 @@ -3204,7 +3204,7 @@ _0809F22C: cmp r0, r1 beq _0809F270 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r5, _0809F278 @ =0x02018010 adds r0, r5, 0 bl GetMonStatusAndPokerus diff --git a/asm/pokenav.s b/asm/pokenav.s index 757a2a5a2..8ce66e75f 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -152,7 +152,7 @@ _080EBBA0: movs r1, 0x1 strb r1, [r0] movs r0, 0x6E - bl PlaySE + bl PlaySoundEffect ldr r0, _080EBBD8 @ =sub_80EBD90 bl SetMainCallback2 ldr r0, _080EBBDC @ =sub_80EBD18 @@ -1019,7 +1019,7 @@ _080EC2AE: cmp r0, 0 beq _080EC2D4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080EC2D0 @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -1073,7 +1073,7 @@ _080EC31C: .4byte _080EC358 _080EC330: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EC340 @ =sub_80EC4A0 bl sub_80EBDBC b _080EC492 @@ -1081,7 +1081,7 @@ _080EC330: _080EC340: .4byte sub_80EC4A0 _080EC344: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EC354 @ =sub_80EC81C bl sub_80EBDBC b _080EC492 @@ -1165,7 +1165,7 @@ _080EC3DC: cmp r0, 0 beq _080EC408 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EC404 @ =sub_80EDB88 bl sub_80EBDBC b _080EC492 @@ -1174,7 +1174,7 @@ _080EC400: .4byte 0x00008fe8 _080EC404: .4byte sub_80EDB88 _080EC408: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0 movs r1, 0x5 b _080EC442 @@ -1186,7 +1186,7 @@ _080EC414: cmp r0, 0 beq _080EC438 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EC434 @ =sub_80EE3D8 bl sub_80EBDBC b _080EC492 @@ -1195,7 +1195,7 @@ _080EC430: .4byte 0x0000d158 _080EC434: .4byte sub_80EE3D8 _080EC438: movs r0, 0x20 - bl PlaySE + bl PlaySoundEffect movs r0, 0 movs r1, 0x6 _080EC442: @@ -1210,7 +1210,7 @@ _080EC44C: cmp r5, 0 beq _080EC478 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080EC474 @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -1522,7 +1522,7 @@ _080EC6E2: b _080EC800 _080EC6E8: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EC6FC @ =0x02000000 movs r1, 0xC1 lsls r1, 2 @@ -1534,7 +1534,7 @@ _080EC6E8: _080EC6FC: .4byte 0x02000000 _080EC700: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EC714 @ =0x02000000 movs r2, 0xC1 lsls r2, 2 @@ -1730,7 +1730,7 @@ _080EC888: cmp r0, 0 beq _080EC8B0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080EC8AC @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -1748,7 +1748,7 @@ _080EC8B0: cmp r0, 0 beq _080EC918 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _080EC8E8 @ =0x00006dad adds r0, r4, r2 ldrb r1, [r0] @@ -1797,7 +1797,7 @@ _080EC918: cmp r0, 0 beq _080EC954 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080EC93C @ =0x00006df0 adds r0, r4, r1 strb r6, [r0] @@ -2172,7 +2172,7 @@ _080ECC24: cmp r0, 0 beq _080ECC4C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080ECC48 @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -2192,7 +2192,7 @@ _080ECC4C: b _080ECD40 _080ECC5A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _080ECC7C @ =0x00006dad adds r0, r4, r2 ldrb r0, [r0] @@ -2300,7 +2300,7 @@ _080ECD40: cmp r0, 0 beq _080ECD74 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r2, _080ECD60 @ =0x00006dad adds r1, r4, r2 movs r0, 0x5 @@ -3036,7 +3036,7 @@ _080ED342: cmp r0, 0 beq _080ED38C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080ED370 @ =sub_80ED4D8 bl sub_80EBDBC b _080ED3CA @@ -3045,12 +3045,12 @@ _080ED36C: .4byte gMain _080ED370: .4byte sub_80ED4D8 _080ED374: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl ShowMapNamePopUpWindow b _080ED3CA _080ED380: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4] adds r0, 0x1 b _080ED3C8 @@ -3060,7 +3060,7 @@ _080ED38C: cmp r0, 0 beq _080ED3CA movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080ED3A4 @ =sub_80ECD80 bl sub_80EBDBC b _080ED3CA @@ -3739,7 +3739,7 @@ _080ED91A: beq _080ED970 _080ED948: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl sub_80F5060 bl move_anim_execute @@ -3780,7 +3780,7 @@ _080ED970: bge _080ED9CC _080ED9A2: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl sub_80F5060 bl move_anim_execute @@ -3802,7 +3802,7 @@ _080ED9CC: cmp r0, 0 beq _080ED9F8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80F4FDC bl move_anim_execute ldr r0, _080ED9F4 @ =0x02000000 @@ -3841,7 +3841,7 @@ _080EDA02: b _080EDB7A _080EDA26: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0xC1 lsls r0, 2 adds r1, r4, r0 @@ -3861,7 +3861,7 @@ _080EDA44: b _080EDB7A _080EDA50: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r2, 0xC1 lsls r2, 2 adds r1, r5, r2 @@ -4297,7 +4297,7 @@ _080EDDE2: cmp r0, 0 beq _080EDE2C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EDE10 @ =sub_80EDEE4 bl sub_80EBDBC b _080EDE6A @@ -4306,12 +4306,12 @@ _080EDE0C: .4byte gMain _080EDE10: .4byte sub_80EDEE4 _080EDE14: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl ShowMapNamePopUpWindow b _080EDE6A _080EDE20: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4] adds r0, 0x1 b _080EDE68 @@ -4321,7 +4321,7 @@ _080EDE2C: cmp r0, 0 beq _080EDE6A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EDE44 @ =sub_80EDE70 bl sub_80EBDBC b _080EDE6A @@ -4653,7 +4653,7 @@ _080EE0CC: cmp r0, 0 beq _080EE104 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl sub_80F6A4C @@ -4681,7 +4681,7 @@ _080EE104: cmp r2, r0 bge _080EE140 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl sub_80F6A4C movs r0, 0xC1 @@ -4698,7 +4698,7 @@ _080EE140: cmp r0, 0 beq _080EE164 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0xB bl sub_80EEFBC ldr r0, _080EE160 @ =0x02000000 @@ -4716,7 +4716,7 @@ _080EE164: b _080EE288 _080EE16E: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EE17C @ =sub_80EE294 bl sub_80EBDBC b _080EE288 @@ -4788,7 +4788,7 @@ _080EE1F8: cmp r0, 0x1 bne _080EE224 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80F3B94 ldr r0, _080EE220 @ =0x02000000 movs r5, 0xC1 @@ -4807,7 +4807,7 @@ _080EE224: cmp r0, 0 beq _080EE288 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80F3B94 ldr r0, _080EE24C @ =0x02000000 movs r1, 0xC1 @@ -5241,7 +5241,7 @@ _080EE5B2: cmp r0, 0 beq _080EE608 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EE5E0 @ =sub_80EE658 bl sub_80EBDBC b _080EE652 @@ -5250,7 +5250,7 @@ _080EE5DC: .4byte gMain _080EE5E0: .4byte sub_80EE658 _080EE5E4: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _080EE5F8 @ =0x0000876e adds r0, r5, r1 ldrb r0, [r0] @@ -5260,7 +5260,7 @@ _080EE5E4: _080EE5F8: .4byte 0x0000876e _080EE5FC: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4] adds r0, 0x1 b _080EE650 @@ -5270,7 +5270,7 @@ _080EE608: cmp r0, 0 beq _080EE652 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _080EE620 @ =sub_80EE8F4 bl sub_80EBDBC b _080EE652 @@ -5446,7 +5446,7 @@ _080EE780: cmp r0, 0 beq _080EE7B8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl sub_80F708C @@ -5474,7 +5474,7 @@ _080EE7B8: cmp r2, r0 bge _080EE7F8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl sub_80F708C movs r0, 0xC1 @@ -5494,7 +5494,7 @@ _080EE7F8: cmp r0, 0 beq _080EE8E8 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_80F4394 bl sub_80F0EC0 ldr r1, _080EE81C @ =0x02000000 @@ -5682,7 +5682,7 @@ sub_80EE96C: @ 80EE96C cmp r4, 0 bne _080EE9A0 movs r0, 0x6F - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 str r4, [sp] @@ -12295,7 +12295,7 @@ _080F1E22: blt _080F1E0E _080F1E38: movs r0, 0x6 - bl PlaySE + bl PlaySoundEffect pop {r4-r6} pop {r0} bx r0 diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s index 2fbc559c8..ca860d401 100644 --- a/asm/reset_rtc_screen.s +++ b/asm/reset_rtc_screen.s @@ -699,7 +699,7 @@ _0806A9BA: _0806A9CC: strh r0, [r5, 0x4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect b _0806AA58 _0806A9D6: cmp r4, 0x5 @@ -721,7 +721,7 @@ _0806A9D6: ldrh r0, [r5, 0xC] strb r0, [r1, 0x4] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r1, _0806AA1C @ =gTasks lsls r0, r6, 2 adds r0, r6 @@ -751,7 +751,7 @@ _0806AA24: cmp r0, 0 beq _0806AA58 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r2, [r5, 0x6] ldrb r3, [r5, 0x8] ldrb r0, [r5, 0xA] @@ -1046,7 +1046,7 @@ _0806ACB0: cmp r0, 0 beq _0806ACC4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 bl DestroyTask _0806ACC4: @@ -1246,7 +1246,7 @@ _0806AE5C: ldr r0, _0806AE78 @ =gSystemText_SaveCompleted bl ResetRtcScreen_ShowMessage movs r0, 0x49 - bl PlaySE + bl PlaySoundEffect b _0806AE88 .align 2, 0 _0806AE78: .4byte gSystemText_SaveCompleted @@ -1254,7 +1254,7 @@ _0806AE7C: ldr r0, _0806AECC @ =gSystemText_SaveFailed bl ResetRtcScreen_ShowMessage movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect _0806AE88: movs r0, 0x5 strh r0, [r5] diff --git a/asm/rotating_gate.s b/asm/rotating_gate.s index a553802e8..306eeabc0 100644 --- a/asm/rotating_gate.s +++ b/asm/rotating_gate.s @@ -439,7 +439,7 @@ sub_80C7C94: @ 80C7C94 lsrs r4, r0, 24 _080C7CCA: movs r0, 0x30 - bl PlaySE + bl PlaySoundEffect adds r0, r6, 0 adds r1, r4, 0 bl StartSpriteAffineAnim @@ -462,7 +462,7 @@ _080C7CDA: lsrs r4, r0, 24 _080C7CFA: movs r0, 0x30 - bl PlaySE + bl PlaySoundEffect adds r0, r6, 0 adds r1, r4, 0 bl StartSpriteAffineAnim diff --git a/asm/roulette.s b/asm/roulette.s index 6382ecf0b..e23b87f0d 100644 --- a/asm/roulette.s +++ b/asm/roulette.s @@ -1332,7 +1332,7 @@ _08115C0C: mov r1, r8 strh r1, [r4, 0xA] movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r5, _08115D3C @ =0x020190b8 ldr r1, _08115D40 @ =0x0000ffff adds r0, r5, 0 @@ -1650,7 +1650,7 @@ _08115E6E: cmp r1, 0 beq _08115EB8 movs r0, 0x16 - bl PlaySE + bl PlaySoundEffect b _08115EC2 .align 2, 0 _08115EA8: .4byte gTasks @@ -3302,7 +3302,7 @@ _08116BE4: cmp r0, 0 beq _08116C06 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _08116C06: movs r0, 0 str r0, [r5] diff --git a/asm/secret_base.s b/asm/secret_base.s index 8f2df8396..bae3befa4 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -511,7 +511,7 @@ sub_80BC824: @ 80BC824 cmp r0, 0 beq _080BC860 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _080BC8B6 @@ -524,7 +524,7 @@ _080BC860: cmp r0, 0 beq _080BC940 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4, 0x4] subs r0, 0x1 b _080BC8A4 @@ -549,7 +549,7 @@ _080BC874: cmp r0, r1 beq _080BC940 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrh r0, [r4, 0x4] adds r0, 0x1 _080BC8A4: @@ -559,7 +559,7 @@ _080BC8A4: b _080BC940 _080BC8AE: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _080BC8B6: bl MoveMenuCursor @@ -574,7 +574,7 @@ _080BC8C2: cmp r0, 0 beq _080BC91C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r1, 0x2 ldrsh r0, [r4, r1] movs r2, 0x4 @@ -613,7 +613,7 @@ _080BC91C: cmp r0, 0 beq _080BC940 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8072DEC movs r0, 0 movs r1, 0 @@ -727,7 +727,7 @@ sub_80BC9E4: @ 80BC9E4 cmp r0, 0 beq _080BCA7C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -745,7 +745,7 @@ _080BCA18: cmp r0, 0x1 beq _080BCA7C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _080BCA7C @@ -756,7 +756,7 @@ _080BCA3A: cmp r0, 0 beq _080BCA68 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _080BCA64 @ =gUnknown_083D13D4 bl GetMenuCursorPos lsls r0, 24 @@ -775,7 +775,7 @@ _080BCA68: cmp r0, 0 beq _080BCA7C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r4, 0 bl sub_80BCBF8 _080BCA7C: diff --git a/asm/shop.s b/asm/shop.s index 1d0863469..61144b220 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -953,7 +953,7 @@ _080B3B06: movs r2, 0 bl sub_80B39D0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4, 0xB] ldrb r1, [r4, 0x9] adds r0, r1 @@ -1015,7 +1015,7 @@ sub_80B3B80: @ 80B3B80 adds r0, r5, 0 bl sub_80B79E0 movs r0, 0x5F - bl PlaySE + bl PlaySoundEffect ldr r0, [r5] movs r1, 0 movs r2, 0 @@ -1684,7 +1684,7 @@ _080B4102: b _080B436C _080B411E: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4, 0xB] subs r0, 0x1 strb r0, [r4, 0xB] @@ -1698,7 +1698,7 @@ _080B4138: .4byte gMain _080B413C: .4byte gUnknown_03000708 _080B4140: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _080B41A0 @@ -1718,7 +1718,7 @@ _080B414C: b _080B436C _080B4166: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4, 0xB] adds r0, 0x1 strb r0, [r4, 0xB] @@ -1740,7 +1740,7 @@ _080B4190: b _080B436C _080B4198: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _080B41A0: bl MoveMenuCursor @@ -1756,7 +1756,7 @@ _080B41AC: b _080B4358 _080B41B8: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r6, _080B426C @ =gUnknown_03000708 ldrb r0, [r6, 0xB] ldrb r1, [r6, 0x9] @@ -1935,7 +1935,7 @@ _080B4358: cmp r0, 0 beq _080B436C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect mov r0, r8 bl sub_80B43F0 _080B436C: diff --git a/asm/slot_machine.s b/asm/slot_machine.s index 46af5bc0f..c0439e84b 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -794,7 +794,7 @@ _08101E9C: movs r0, 0x9 strb r0, [r1] movs r0, 0x5F - bl PlaySE + bl PlaySoundEffect b _08101F1A .align 2, 0 _08101EB8: .4byte 0x02000000 @@ -813,7 +813,7 @@ _08101EC2: cmp r0, 0 beq _08101EEC movs r0, 0x5F - bl PlaySE + bl PlaySoundEffect ldrb r0, [r4, 0x12] bl sub_8103D50 ldrh r0, [r4, 0xC] @@ -1032,7 +1032,7 @@ sub_8102058: @ 8102058 cmp r0, 0 beq _0810207E movs r0, 0x18 - bl PlaySE + bl PlaySoundEffect ldr r4, _0810208C @ =0x02000000 ldrb r0, [r4, 0x18] bl sub_8102E1C @@ -2460,7 +2460,7 @@ sub_8102AD0: @ 8102AD0 cmp r0, 0 beq _08102AF6 movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect _08102AF6: ldr r2, _08102B70 @ =0x02000000 ldrh r0, [r2, 0xE] @@ -2497,7 +2497,7 @@ _08102B22: cmp r0, 0 beq _08102B58 movs r0, 0x15 - bl PlaySE + bl PlaySoundEffect ldr r1, _08102B70 @ =0x02000000 ldrh r0, [r1, 0xE] ldrh r2, [r1, 0xC] @@ -6583,7 +6583,7 @@ sub_81048CC: @ 81048CC ldr r0, _0810493C @ =0x00000187 bl PlayFanfare movs r0, 0xB2 - bl PlaySE + bl PlaySoundEffect pop {r4,r5} pop {r0} bx r0 diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s index b47229d2b..c34945bcc 100644 --- a/asm/sound_check_menu.s +++ b/asm/sound_check_menu.s @@ -2012,7 +2012,7 @@ _080BB104: movs r4, 0x40 negs r4, r4 adds r1, r4, 0 - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning str r4, [r5, 0x1C] b _080BB14C .align 2, 0 @@ -2021,7 +2021,7 @@ _080BB13C: .4byte gUnknown_020387B4 _080BB140: ldrh r0, [r5] movs r1, 0x3F - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning movs r0, 0x3F str r0, [r5, 0x1C] _080BB14C: @@ -2031,7 +2031,7 @@ _080BB14C: b _080BB1C8 _080BB154: ldrh r0, [r5] - bl PlaySE12WithPanning + bl PlaySoundEffect12WithPanning str r4, [r5, 0x18] b _080BB1C8 _080BB15E: diff --git a/asm/trade.s b/asm/trade.s index 756423ee7..f13822004 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -3021,7 +3021,7 @@ _08049600: cmp r0, r6 beq _0804960C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect _0804960C: strb r6, [r7] pop {r4-r7} @@ -3143,7 +3143,7 @@ _080496F4: cmp r0, 0 beq _080497B6 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r4, _08049750 @ =gUnknown_03004824 ldr r0, [r4] adds r1, r0, 0 @@ -3317,7 +3317,7 @@ sub_8049860: @ 8049860 cmp r0, 0 beq _08049880 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _08049890 @@ -3329,7 +3329,7 @@ _08049880: cmp r0, 0 beq _0804989C movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _08049890: bl MoveMenuCursor @@ -3345,7 +3345,7 @@ _0804989C: cmp r0, 0 beq _08049938 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl GetMenuCursorPos lsls r0, 24 lsrs r1, r0, 24 @@ -3415,7 +3415,7 @@ _08049938: cmp r0, 0 beq _0804994A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8049804 _0804994A: add sp, 0x4 @@ -3439,7 +3439,7 @@ sub_8049954: @ 8049954 beq _08049974 _0804996A: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8049804 _08049974: pop {r0} @@ -3627,7 +3627,7 @@ sub_8049AC0: @ 8049AC0 cmp r0, 0 beq _08049AE0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _08049AF0 @@ -3639,7 +3639,7 @@ _08049AE0: cmp r0, 0 beq _08049AFC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _08049AF0: bl MoveMenuCursor @@ -3655,7 +3655,7 @@ _08049AFC: cmp r0, 0 beq _08049B64 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl GetMenuCursorPos lsls r0, 24 cmp r0, 0 @@ -3747,7 +3747,7 @@ sub_8049BC0: @ 8049BC0 cmp r0, 0 beq _08049BE0 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 b _08049BF0 @@ -3759,7 +3759,7 @@ _08049BE0: cmp r0, 0 beq _08049BFC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 _08049BF0: bl MoveMenuCursor @@ -3775,7 +3775,7 @@ _08049BFC: cmp r0, 0 beq _08049C72 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl GetMenuCursorPos lsls r0, 24 lsrs r5, r0, 24 @@ -3826,7 +3826,7 @@ _08049C72: cmp r0, 0 beq _08049C84 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect bl sub_8049804 _08049C84: pop {r4,r5} @@ -3941,7 +3941,7 @@ sub_8049D44: @ 8049D44 cmp r0, 0 beq _08049D8A movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl sub_804A840 movs r0, 0x1 @@ -6388,7 +6388,7 @@ sub_804B058: @ 804B058 cmp r0, 0xA bne _0804B074 movs r0, 0x17 - bl PlaySE + bl PlaySoundEffect movs r0, 0 strh r0, [r4, 0x2E] _0804B074: @@ -6487,7 +6487,7 @@ sub_804B104: @ 804B104 cmp r0, 0xF bne _0804B120 movs r0, 0xCC - bl PlaySE + bl PlaySoundEffect movs r0, 0 strh r0, [r4, 0x2E] _0804B120: @@ -9417,7 +9417,7 @@ _0804CB70: cmp r0, 0 bne _0804CB8E movs r0, 0x2E - bl PlaySE + bl PlaySoundEffect ldr r0, _0804CBC4 @ =gUnknown_03004828 ldr r1, [r0] adds r1, 0xC4 @@ -9700,7 +9700,7 @@ _0804CD94: cmp r0, 0x2 bhi _0804CDDC movs r0, 0x2D - bl PlaySE + bl PlaySoundEffect _0804CDDC: ldr r2, [r6] adds r3, r2, 0 @@ -10120,7 +10120,7 @@ _0804D11A: adds r0, 0x1 strh r0, [r1] movs r0, 0x9F - bl PlaySE + bl PlaySoundEffect b _0804D570 .align 2, 0 _0804D138: .4byte gSprites @@ -10893,7 +10893,7 @@ sub_804D738: @ 804D738 cmp r0, 0x16 bne _0804D760 movs r0, 0x38 - bl PlaySE + bl PlaySoundEffect _0804D760: ldrh r0, [r4, 0x2E] adds r0, 0x1 @@ -10903,7 +10903,7 @@ _0804D760: cmp r0, 0x2C bne _0804D796 movs r0, 0x8C - bl PlaySE + bl PlaySoundEffect ldr r0, _0804D7A4 @ =sub_804D7AC str r0, [r4, 0x1C] movs r0, 0 @@ -11005,7 +11005,7 @@ sub_804D80C: @ 804D80C movs r0, 0x16 strh r0, [r4, 0x2E] movs r0, 0x38 - bl PlaySE + bl PlaySoundEffect b _0804D88C _0804D83C: movs r1, 0x2E @@ -11013,21 +11013,21 @@ _0804D83C: cmp r0, 0x42 bne _0804D84A movs r0, 0x39 - bl PlaySE + bl PlaySoundEffect _0804D84A: movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0x5C bne _0804D858 movs r0, 0x3A - bl PlaySE + bl PlaySoundEffect _0804D858: movs r3, 0x2E ldrsh r0, [r4, r3] cmp r0, 0x6B bne _0804D866 movs r0, 0x3B - bl PlaySE + bl PlaySoundEffect _0804D866: ldr r1, _0804D894 @ =gTradeBallVerticalVelocityTable movs r2, 0x2E diff --git a/asm/trader.s b/asm/trader.s index be3627e90..1051ef178 100644 --- a/asm/trader.s +++ b/asm/trader.s @@ -320,7 +320,7 @@ sub_8109B7C: @ 8109B7C cmp r0, 0 beq _08109BAC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -334,7 +334,7 @@ _08109BAC: cmp r0, 0 beq _08109BC2 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl MoveMenuCursor b _08109C3E @@ -344,7 +344,7 @@ _08109BC2: cmp r0, 0 beq _08109C28 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r5, _08109BFC @ =gSpecialVar_0x8005 bl GetMenuCursorPos lsls r0, 24 @@ -389,7 +389,7 @@ _08109C28: cmp r0, 0 beq _08109C3E movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect adds r0, r5, 0 movs r1, 0 bl sub_8109B34 diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index a9913b6d0..90b1b6a8b 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -635,7 +635,7 @@ _0813667C: cmp r0, 0 beq _081366AC movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0x1 bl sub_80F5060 bl move_anim_execute @@ -653,7 +653,7 @@ _081366AC: cmp r0, 0 beq _081366D4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect movs r0, 0 bl sub_80F5060 bl move_anim_execute @@ -671,7 +671,7 @@ _081366D4: cmp r0, 0 beq _081366F4 movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _081366F0 @ =gUnknown_02039304 ldr r0, [r0] adds r0, 0x50 @@ -687,7 +687,7 @@ _081366F4: b _081367FA _081366FE: movs r0, 0x5 - bl PlaySE + bl PlaySoundEffect ldr r0, _08136728 @ =gUnknown_083DFEC4 ldr r0, [r0] ldr r2, _0813672C @ =0x000087dc diff --git a/include/global.h b/include/global.h index 957181d45..df95ce529 100644 --- a/include/global.h +++ b/include/global.h @@ -464,6 +464,10 @@ struct GabbyAndTyData { u8 valB; }; +typedef struct RecordMixing_UnknownStruct { + u8 data[0x38]; +} RecordMixing_UnknownStruct; + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; @@ -539,8 +543,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2DFC*/ u8 filler_2DFC[0x8]; /*0x2E04*/ SB_Struct sbStruct; /*0x2F9C*/ struct BoxPokemon daycareData[2]; - /*0x303C*/ u8 filler_303C[0x38]; - /*0x3074*/ u8 filler_3074[0x42]; + /*0x303C*/ struct RecordMixing_UnknownStruct filler_303C[2]; + /*0x30AC*/ u8 filler_30AC[0xA]; /*0x30B6*/ u8 filler_30B6; /*0x30B7*/ u8 filler_30B7[1]; /*0x30B8*/ u8 linkBattleRecords[5][16]; diff --git a/include/sound.h b/include/sound.h index 283b2b1f9..a720c82b1 100644 --- a/include/sound.h +++ b/include/sound.h @@ -34,10 +34,10 @@ void StopCry(void); bool8 IsCryPlayingOrClearCrySongs(void); bool8 IsCryPlaying(void); void PlayBGM(u16 songNum); -void PlaySE(u16 songNum); -void PlaySE12WithPanning(u16 songNum, s8 pan); -void PlaySE1WithPanning(u16 songNum, s8 pan); -void PlaySE2WithPanning(u16 songNum, s8 pan); +void PlaySoundEffect(u16 songNum); +void PlaySoundEffect12WithPanning(u16 songNum, s8 pan); +void PlaySoundEffect1WithPanning(u16 songNum, s8 pan); +void PlaySoundEffect2WithPanning(u16 songNum, s8 pan); void SE12PanpotControl(s8 pan); bool8 IsSEPlaying(void); bool8 IsBGMPlaying(void); diff --git a/src/battle_anim.c b/src/battle_anim.c index bdb34365f..8ca66f745 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -673,7 +673,7 @@ static void ScriptCmd_end(void) static void ScriptCmd_playse(void) { gBattleAnimScriptPtr++; - PlaySE(SCRIPT_READ_16(gBattleAnimScriptPtr)); + PlaySoundEffect(SCRIPT_READ_16(gBattleAnimScriptPtr)); gBattleAnimScriptPtr += 2; } @@ -1715,7 +1715,7 @@ static void ScriptCmd_panse_19(void) gBattleAnimScriptPtr++; r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); - PlaySE12WithPanning(r4, sub_8076F98(r0)); + PlaySoundEffect12WithPanning(r4, sub_8076F98(r0)); gBattleAnimScriptPtr += 3; } @@ -1755,7 +1755,7 @@ static void ScriptCmd_panse_1B(void) gTasks[taskId].data[2] = r4; gTasks[taskId].data[3] = r7; gTasks[taskId].data[4] = panning; - PlaySE12WithPanning(songNum, panning); + PlaySoundEffect12WithPanning(songNum, panning); gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1917,7 +1917,7 @@ static void ScriptCmd_panse_26(void) gTasks[taskId].data[2] = r6; gTasks[taskId].data[3] = r10; gTasks[taskId].data[4] = r4; - PlaySE12WithPanning(r8, r4); + PlaySoundEffect12WithPanning(r8, r4); gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1949,7 +1949,7 @@ static void ScriptCmd_panse_27(void) gTasks[taskId].data[2] = r4_2; gTasks[taskId].data[3] = r7; gTasks[taskId].data[4] = r6; - PlaySE12WithPanning(r9, r6); + PlaySoundEffect12WithPanning(r9, r6); gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1996,7 +1996,7 @@ static void sub_80774FC(u8 taskId) r1 = gTasks[taskId].data[1]; gTasks[taskId].data[3]--; r4 = gTasks[taskId].data[3]; - PlaySE12WithPanning(r0, r1); + PlaySoundEffect12WithPanning(r0, r1); if (r4 == 0) { DestroyTask(taskId); @@ -2034,7 +2034,7 @@ static void sub_80775CC(u8 taskId) gTasks[taskId].data[2]--; if (r0 <= 0) { - PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]); + PlaySoundEffect12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]); DestroyTask(taskId); gAnimSoundTaskCount--; } diff --git a/src/battle_interface.c b/src/battle_interface.c index 9938c4b54..827ed4ffc 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1589,7 +1589,7 @@ u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) for (i = 0; i < 6; i++) gTasks[taskId].data[3 + i] = sp[i]; gTasks[taskId].data[10] = d; - PlaySE12WithPanning(SE_TB_START, 0); + PlaySoundEffect12WithPanning(SE_TB_START, 0); return taskId; } #else @@ -2169,7 +2169,7 @@ _08044C62:\n\ strh r6, [r0, 0x1C]\n\ movs r0, 0x72\n\ movs r1, 0\n\ - bl PlaySE12WithPanning\n\ + bl PlaySoundEffect12WithPanning\n\ adds r0, r4, 0\n\ add sp, 0x28\n\ pop {r3-r5}\n\ @@ -2356,9 +2356,9 @@ void sub_804507C(struct Sprite *sprite) if (r3 != 0) pan = -64; if (sprite->data7 != 0) - PlaySE2WithPanning(SE_TB_KARA, pan); + PlaySoundEffect2WithPanning(SE_TB_KARA, pan); else - PlaySE1WithPanning(SE_TB_KON, pan); + PlaySoundEffect1WithPanning(SE_TB_KON, pan); sprite->callback = SpriteCallbackDummy; } } diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 820d16465..4ee55f0e2 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -230,7 +230,7 @@ void SetUpBattlePokemonMenu(u8 a) if (gUnknown_02038473 == 3) { if (GetMonData(&gPlayerParty[sub_806CA38(a)], MON_DATA_IS_EGG)) - PlaySE(SE_HAZURE); + PlaySoundEffect(SE_HAZURE); else { sub_806D5A4(); @@ -239,7 +239,7 @@ void SetUpBattlePokemonMenu(u8 a) } else { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); GetMonNickname(&gPlayerParty[sub_806CA38(a)], gStringVar1); sub_8095050(a, sub_806CA38(a)); SetTaskFuncWithFollowupFunc(a, Task_HandlePopupMenuInput, SetUpBattlePokemonMenu); @@ -247,10 +247,10 @@ void SetUpBattlePokemonMenu(u8 a) break; case 2: if (gUnknown_02038473 == 1) - PlaySE(SE_HAZURE); + PlaySoundEffect(SE_HAZURE); else { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); if (gUnknown_02038473 == 3) { gUnknown_0202E8F4 = 0; @@ -336,19 +336,19 @@ static void Task_HandlePopupMenuInput(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor(-1); return; } if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor(1); return; } if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); func = PartyMenuGetPopupMenuFunc(gTasks[taskId].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, @@ -358,7 +358,7 @@ static void Task_HandlePopupMenuInput(u8 taskId) } if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); Task_BattlePartyMenuCancel(taskId); return; } diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 511b88c5a..94f9c5941 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -245,7 +245,7 @@ static void sub_814640C(u8 taskId) static void sub_8146440(u8 taskId) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = sub_814640C; } @@ -379,7 +379,7 @@ _08146718:\n\ bgt _0814678C\n\ _08146728:\n\ movs r0, 0x5\n\ - bl PlaySE\n\ + bl PlaySoundEffect\n\ mov r2, r8\n\ ldrb r3, [r2, 0x1]\n\ ldrb r4, [r4, 0xC]\n\ diff --git a/src/bike.c b/src/bike.c index d7175b5e0..0c154de9c 100644 --- a/src/bike.c +++ b/src/bike.c @@ -617,7 +617,7 @@ static void AcroBikeTransition_80E5920(u8 direction) } } playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - PlaySE(SE_JITE_PYOKO); + PlaySoundEffect(SE_JITE_PYOKO); playerMapObj->mapobj_bit_9 = 1; PlayerSetAnimId(sub_80608A4(direction), 2); } diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 220e8420c..7c6a22547 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -46,7 +46,7 @@ void DoBrailleDigEffect(void) MapGridSetMetatileIdAt(17, 9, 563); MapGridSetMetatileIdAt(18, 9, 3636); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySoundEffect(SE_BAN); FlagSet(SYS_BRAILLE_DIG); ScriptContext2_Disable(); } @@ -88,7 +88,7 @@ void DoBrailleStrengthEffect(void) MapGridSetMetatileIdAt(15, 27, 563); MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySoundEffect(SE_BAN); FlagSet(SYS_BRAILLE_STRENGTH); ScriptContext2_Disable(); } @@ -134,7 +134,7 @@ void UseFlyAncientTomb_Finish(void) MapGridSetMetatileIdAt(15, 27, 563); MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySoundEffect(SE_BAN); FlagSet(SYS_BRAILLE_FLY); ScriptContext2_Disable(); } @@ -159,7 +159,7 @@ void Task_BrailleWait(u8 taskId) if (BrailleWait_CheckButtonPress() != FALSE) { MenuZeroFillScreen(); - PlaySE(5); + PlaySoundEffect(5); data[0] = 2; } else diff --git a/src/cable_club.c b/src/cable_club.c index 45fb347f3..1f2c6376a 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -89,7 +89,7 @@ static void sub_80830E4(u8 taskId) { if (gMain.heldKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); sub_8007F4C(); gTasks[(u32) taskId].func = sub_8083188; } @@ -153,7 +153,7 @@ _08083158:\n\ cmp r0, 0\n\ beq _08083178\n\ movs r0, 0x5\n\ - bl PlaySE\n\ + bl PlaySoundEffect\n\ bl sub_8007F4C\n\ ldr r0, _08083180 @ =gTasks\n\ lsls r1, r6, 2\n\ diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index 21cd643ef..301e169ce 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -59,13 +59,13 @@ static void Task_ProcessMenuInput(u8 taskId) switch (ProcessMenuInputNoWrap_()) { case 0: - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); sub_8071F40(gSystemText_ClearingData); gTasks[taskId].func = Task_ClearSaveData; break; case -1: case 1: - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); DestroyTask(taskId); SetMainCallback2(CB2_SoftReset); break; diff --git a/src/daycare.c b/src/daycare.c index cf7a5cd5f..b1bafa6f4 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -33,6 +33,7 @@ u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) return count; } +#ifndef ASDF __attribute__((naked)) void sub_8041324(struct BoxPokemon * box_pokemon, void * void_pointer) { @@ -95,6 +96,7 @@ _08041374:\n\ bx r0\n\ .syntax divided\n"); } +#endif s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) { diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index c5f2c08e7..e51ae24b6 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -214,7 +214,7 @@ int sub_8068024(struct FieldInput *input) return TRUE; if (input->pressedStartButton) { - PlaySE(SE_WIN_OPEN); + PlaySoundEffect(SE_WIN_OPEN); sub_8071310(); return TRUE; } @@ -261,7 +261,7 @@ static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) && script != gUnknown_0815F36C && script != gUnknown_0815F43A && script != gUnknown_081A0009) - PlaySE(5); + PlaySoundEffect(5); ScriptContext1_SetupScript(script); return TRUE; @@ -828,7 +828,7 @@ int dive_warp(struct MapPosition *position, u16 b) { walkrun_find_lowest_active_bit_in_bitfield(); sp13E_warp_to_last_warp(); - PlaySE(SE_W291); + PlaySoundEffect(SE_W291); return TRUE; } } @@ -838,7 +838,7 @@ int dive_warp(struct MapPosition *position, u16 b) { walkrun_find_lowest_active_bit_in_bitfield(); sp13E_warp_to_last_warp(); - PlaySE(SE_W291); + PlaySoundEffect(SE_W291); return TRUE; } } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 6a0fe1dce..c0a71fcf4 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -871,7 +871,7 @@ void PlayerTurnInPlace(u8 direction) void PlayerJumpLedge(u8 direction) { - PlaySE(SE_DANSA); + PlaySoundEffect(SE_DANSA); PlayerSetAnimId(GetJumpLedgeAnimId(direction), 8); } @@ -902,31 +902,31 @@ void sub_8059534(u8 a) void sub_805954C(u8 a) { - PlaySE(SE_JITE_PYOKO); + PlaySoundEffect(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060A5C(a), 1); } void sub_8059570(u8 a) { - PlaySE(SE_JITE_PYOKO); + PlaySoundEffect(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060A88(a), 2); } void sub_8059594(u8 a) { - PlaySE(SE_JITE_PYOKO); + PlaySoundEffect(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060AB4(a), 8); } void sub_80595B8(u8 direction) { - PlaySE(SE_JITE_PYOKO); + PlaySoundEffect(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060878(direction), 1); } void sub_80595DC(u8 direction) { - PlaySE(SE_WALL_HIT); + PlaySoundEffect(SE_WALL_HIT); PlayerSetAnimId(sub_8060AE0(direction), 2); } @@ -959,7 +959,7 @@ static void PlayCollisionSoundIfNotFacingWarp(u8 a) if (MetatileBehavior_IsWarpDoor(MapGridGetMetatileBehaviorAt(x, y))) return; } - PlaySE(SE_WALL_HIT); + PlaySoundEffect(SE_WALL_HIT); } } @@ -1292,7 +1292,7 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) gUnknown_0202FF84[2] = c->elevation; gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority; FieldEffectStart(10); - PlaySE(SE_W070); + PlaySoundEffect(SE_W070); task->data[0]++; } return 0; @@ -1334,7 +1334,7 @@ u8 sub_805A000(struct Task *task, struct MapObject *mapObject) gPlayerAvatar.unk6 = 1; if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { - PlaySE(SE_DANSA); + PlaySoundEffect(SE_DANSA); FieldObjectSetSpecialAnim(mapObject, sub_806084C(mapObject->mapobj_unk_18)); task->data[1]++; if (task->data[1] > 1) @@ -1370,7 +1370,7 @@ u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject) task->data[1] = mapObject->placeholder18; gPlayerAvatar.unk6 = 1; ScriptContext2_Enable(); - PlaySE(SE_TK_WARPIN); + PlaySoundEffect(SE_TK_WARPIN); return 1; } diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 59280b743..6282ea813 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -157,7 +157,7 @@ void Task_HandleTruckSequence(u8 taskId) data[1] = 0; // reset the timer. data[2] = CreateTask(Task_Truck1, 0xA); data[0] = 1; // run the next case. - PlaySE(SE_TRACK_MOVE); + PlaySoundEffect(SE_TRACK_MOVE); } break; case 1: @@ -177,7 +177,7 @@ void Task_HandleTruckSequence(u8 taskId) DestroyTask(data[2]); data[3] = CreateTask(Task_Truck2, 0xA); data[0] = 3; - PlaySE(SE_TRACK_STOP); + PlaySoundEffect(SE_TRACK_STOP); } break; case 3: @@ -192,7 +192,7 @@ void Task_HandleTruckSequence(u8 taskId) data[1]++; if (data[1] == 90) { - PlaySE(SE_TRACK_HAIK); + PlaySoundEffect(SE_TRACK_HAIK); data[1] = 0; data[0] = 5; } @@ -205,7 +205,7 @@ void Task_HandleTruckSequence(u8 taskId) MapGridSetMetatileIdAt(11, 9, 528); MapGridSetMetatileIdAt(11, 10, 536); DrawWholeMapView(); - PlaySE(SE_TRACK_DOOR); + PlaySoundEffect(SE_TRACK_DOOR); DestroyTask(taskId); ScriptContext2_Disable(); } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 77c8752d1..39e438620 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -122,7 +122,7 @@ bool8 FldEff_CutGrass(void) u8 tileBehavior; u8 i, j; // not in for loop? - for(i = 0, PlaySE(SE_W015), PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y); i < 3; i++) + for(i = 0, PlaySoundEffect(SE_W015), PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y); i < 3; i++) { y = i - 1 + gUnknown_0203923C.y; for(j = 0; j < 3; j++) @@ -294,7 +294,7 @@ void sub_80A2AB8(void) void sub_80A2B00(void) { - PlaySE(0x80); + PlaySoundEffect(0x80); FieldEffectActiveListRemove(2); EnableBothScriptContexts(); } diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index d0ee712af..f5372b53b 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -122,7 +122,7 @@ static void sub_8133D50(u8 taskId) { return; } - PlaySE(SE_KAIFUKU); + PlaySoundEffect(SE_KAIFUKU); EWRAM_1C000.unk5 = gSprites[EWRAM_1000.unk1].data0; diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 4e8214b07..8d23a41cb 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -49,7 +49,7 @@ static void sub_812C01C(void) { u8 taskId; - PlaySE(0xEC); + PlaySoundEffect(0xEC); BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F); taskId = CreateTask(sub_812C084, 0); gTasks[taskId].data[0] = 0; diff --git a/src/intro.c b/src/intro.c index ea6edba3d..00c9894cf 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1419,7 +1419,7 @@ static void Task_IntroPokemonBattle(u8 taskId) gSprites[spriteId].invisible = 1; } if (gIntroFrameCounter == 800) - PlaySE(SE_OP_BASYU); + PlaySoundEffect(SE_OP_BASYU); if (gIntroFrameCounter == 850) BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0xFFFF); if (gIntroFrameCounter == 946) diff --git a/src/item_use.c b/src/item_use.c index 4047ade5c..5d0282844 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -362,7 +362,7 @@ void RunItemfinderResults(u8 taskId) } return; } - PlaySE(SE_DAUGI); // play the itemfinder jingle 4 times before executing the itemfinder. + PlaySoundEffect(SE_DAUGI); // play the itemfinder jingle 4 times before executing the itemfinder. data[4]++; } data[3] = (data[3] + 1) & 0x1F; @@ -943,7 +943,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) void sub_80C9EE4(u8 taskId) { - PlaySE(2); + PlaySoundEffect(2); gTasks[taskId].func = sub_80C9F10; } @@ -1002,7 +1002,7 @@ void sub_80CA098(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySE(0x75); + PlaySoundEffect(0x75); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); } } @@ -1095,7 +1095,7 @@ void sub_80CA2BC(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySE(1); + PlaySoundEffect(1); RemoveBagItem(gScriptItemId, 1); DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1); } diff --git a/src/link.c b/src/link.c index 224c0ae1c..d06e71c03 100644 --- a/src/link.c +++ b/src/link.c @@ -1262,10 +1262,10 @@ static void CB2_PrintErrorMessage(void) break; case 30: case 60: - PlaySE(SE_BOO); + PlaySoundEffect(SE_BOO); break; case 90: - PlaySE(SE_BOO); + PlaySoundEffect(SE_BOO); break; } diff --git a/src/main_menu.c b/src/main_menu.c index 50fefc471..c1e43e1a8 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -446,13 +446,13 @@ bool8 MainMenuProcessKeyInput(u8 taskId) { if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0x0000); gTasks[taskId].func = Task_MainMenuPressedA; } else if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF); REG_WIN0H = WIN_RANGE(0, 240); REG_WIN0V = WIN_RANGE(0, 160); @@ -966,14 +966,14 @@ static void Task_NewGameSpeech16(u8 taskId) { case MALE: sub_8072DEC(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); gSaveBlock2.playerGender = MALE; MenuZeroFillWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: sub_8072DEC(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); gSaveBlock2.playerGender = FEMALE; MenuZeroFillWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; @@ -1069,19 +1069,19 @@ static void Task_NewGameSpeech21(u8 taskId) case 3: case 4: sub_8072DEC(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); gTasks[taskId].func = Task_NewGameSpeech23; break; case 0: //NEW NAME - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = Task_NewGameSpeech22; break; case -1: //B button sub_8072DEC(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; @@ -1122,7 +1122,7 @@ static void Task_NewGameSpeech25(u8 taskId) switch (ProcessMenuInputNoWrap_()) { case 0: //YES - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MenuZeroFillWindowRect(2, 1, 8, 7); gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); @@ -1131,7 +1131,7 @@ static void Task_NewGameSpeech25(u8 taskId) break; case -1: //B button case 1: //NO - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MenuZeroFillWindowRect(2, 1, 8, 7); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; diff --git a/src/menu.c b/src/menu.c index ba98ff057..84093b9b7 100644 --- a/src/menu.c +++ b/src/menu.c @@ -52,7 +52,7 @@ const struct MenuAction gMenuYesNoItems[] = void CloseMenu(void) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MenuZeroFillScreen(); sub_8064E2C(); ScriptContext2_Disable(); @@ -270,7 +270,7 @@ s8 ProcessMenuInput(void) { if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); if (gMenu.menu_field_7) sub_8072DEC(); return gMenu.cursorPos; @@ -285,13 +285,13 @@ s8 ProcessMenuInput(void) if (gMain.newKeys & DPAD_UP) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor(-1); return -2; } else if (gMain.newKeys & DPAD_DOWN) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor(1); return -2; } @@ -305,7 +305,7 @@ s8 ProcessMenuInputNoWrap(void) if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); if (gMenu.menu_field_7) sub_8072DEC(); return gMenu.cursorPos; @@ -321,13 +321,13 @@ s8 ProcessMenuInputNoWrap(void) if (gMain.newKeys & DPAD_UP) { if (cursorPos != MoveMenuCursorNoWrap(-1)) - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); return -2; } else if (gMain.newKeys & DPAD_DOWN) { if (cursorPos != MoveMenuCursorNoWrap(1)) - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); return -2; } @@ -520,7 +520,7 @@ s8 sub_80727CC(void) { if (gMenu.menu_field_7) sub_8072DEC(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); return GetMenuCursorPos(); } @@ -533,25 +533,25 @@ s8 sub_80727CC(void) if (gMain.newKeys & DPAD_UP) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor4(-gMenu.width); return -2; } else if (gMain.newKeys & DPAD_DOWN) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor4(gMenu.width); return -2; } else if (gMain.newKeys & DPAD_LEFT) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor4(-1); return -2; } else if (gMain.newKeys & DPAD_RIGHT) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MoveMenuCursor4(1); return -2; } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 97deb348c..c257e7573 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -113,13 +113,13 @@ static void CB2_MysteryEventMenu(void) case 3: if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) { - PlaySE(SE_PIN); + PlaySoundEffect(SE_PIN); sub_8072044(gSystemText_LoadEventPressA); gMain.state++; } if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); CloseLink(); gMain.state = 15; } @@ -139,7 +139,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); sub_8007F4C(); MenuDrawTextWindow(6, 5, 23, 8); MenuPrint(gSystemText_LoadingEvent, 7, 6); @@ -147,7 +147,7 @@ static void CB2_MysteryEventMenu(void) } else if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); CloseLink(); gMain.state = 15; } @@ -185,7 +185,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); CloseLink(); gMain.state = 15; break; @@ -199,7 +199,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); sub_8007F4C(); MenuDrawTextWindow(6, 5, 23, 8); MenuPrint(gSystemText_LoadingEvent, 7, 6); @@ -207,7 +207,7 @@ static void CB2_MysteryEventMenu(void) } else if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); CloseLink(); gMain.state = 15; } @@ -264,7 +264,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); CloseLink(); gMain.state = 15; break; @@ -313,7 +313,7 @@ static void CB2_MysteryEventMenu(void) case 14: if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); gMain.state++; } break; diff --git a/src/naming_screen.c b/src/naming_screen.c index b14c690e2..531d12bdd 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -453,7 +453,7 @@ static bool8 MainState_StartPageSwap(struct Task *task) StartPageSwapAnim(); sub_80B6888(1); sub_80B6460(0, 0, 1); - PlaySE(SE_WIN_OPEN); + PlaySoundEffect(SE_WIN_OPEN); namingScreenData.state = MAIN_STATE_WAIT_PAGE_SWAP; return FALSE; } @@ -607,7 +607,7 @@ static bool8 KeyboardKeyHandler_OK(u8 event) sub_80B6460(2, 1, 0); if (event == KBEVENT_PRESSED_A) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); namingScreenData.state = MAIN_STATE_6; return TRUE; } @@ -1370,7 +1370,7 @@ static void DeleteTextCharacter(void) var2 = GetKeyRoleAtCursorPos(); if (var2 == 0 || var2 == 2) sub_80B6460(1, 0, 1); - PlaySE(SE_BOWA); + PlaySoundEffect(SE_BOWA); } static bool8 sub_80B7004(void) @@ -1391,7 +1391,7 @@ static bool8 sub_80B7004(void) else AddTextCharacter(ch); sub_80B7960(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); if (r4) { if (GetPreviousTextCaretPosition() == namingScreenData.template->maxChars - 1) @@ -1422,7 +1422,7 @@ static void sub_80B7090(void) // DoInput? sub_80B72A4(r4, r5); } sub_80B7960(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } static bool8 sub_80B7104(void) diff --git a/src/party_menu.c b/src/party_menu.c index d473eae6d..aebfd3307 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -109,7 +109,7 @@ void sub_8070088(u8 taskId) gUnknown_0202E8F4 = 1; MenuZeroFillWindowRect(3, 14, 26, 19); - PlaySE(SE_KAIFUKU); + PlaySoundEffect(SE_KAIFUKU); PartyMenuUpdateLevelOrStatus(unk_201C000.pokemon, unk_201C000.var05); task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle()][unk_201C000.var05], 9); @@ -214,7 +214,7 @@ _08070134:\n\ movs r3, 0x13\n\ bl MenuZeroFillWindowRect\n\ movs r0, 0x1\n\ - bl PlaySE\n\ + bl PlaySoundEffect\n\ ldr r0, [r4]\n\ ldrb r1, [r4, 0x5]\n\ bl PartyMenuUpdateLevelOrStatus\n\ diff --git a/src/player_pc.c b/src/player_pc.c index f0f0709b1..a31ce0803 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -129,24 +129,24 @@ void PlayerPCProcessMenuInput(u8 taskId) { if (gMain.newAndRepeatedKeys & 0x40) { - PlaySE(5); + PlaySoundEffect(5); MoveMenuCursor(-1); } else if (gMain.newAndRepeatedKeys & 0x80) { - PlaySE(5); + PlaySoundEffect(5); MoveMenuCursor(1); } else if (gMain.newKeys & 0x1) { sub_8072DEC(); - PlaySE(5); + PlaySoundEffect(5); gUnknown_08406298[gUnknown_02039314[GetMenuCursorPos()]].func(taskId); } else if (gMain.newKeys & 0x2) { sub_8072DEC(); - PlaySE(5); + PlaySoundEffect(5); gUnknown_08406298[gUnknown_030007B4[gUnknown_02039314 - 1]].func(taskId); } } @@ -222,25 +222,25 @@ void ItemStorageMenuProcessInput(u8 var) { if (gMain.newAndRepeatedKeys & 0x40) { - PlaySE(5); + PlaySoundEffect(5); MoveMenuCursor(-1); ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); } else if (gMain.newAndRepeatedKeys & 0x80) { - PlaySE(5); + PlaySoundEffect(5); MoveMenuCursor(1); ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); } else if (gMain.newKeys & 0x1) { - PlaySE(5); + PlaySoundEffect(5); gUnknown_084062C0[GetMenuCursorPos()].func(var); } else if (gMain.newKeys & 0x2) { sub_8072DEC(); - PlaySE(5); + PlaySoundEffect(5); gUnknown_084062C0[3].func(var); } } @@ -353,7 +353,7 @@ void sub_813A280(u8 taskId) { if(data[0]) { - PlaySE(5); + PlaySoundEffect(5); data[0] = MoveMenuCursor(-1); var = data[1] + data[0]; if (!data[9]) @@ -372,7 +372,7 @@ void sub_813A280(u8 taskId) { if (!data[1]) return; - PlaySE(5); + PlaySoundEffect(5); data[1]--; sub_813AE0C(taskId); // probably further down @@ -384,7 +384,7 @@ void sub_813A280(u8 taskId) { if(data[0] != data[4] - 1) { - PlaySE(5); + PlaySoundEffect(5); data[0] = MoveMenuCursor(1); var = data[1] + data[0]; @@ -398,7 +398,7 @@ void sub_813A280(u8 taskId) } else if(data[1] + data[0] != data[2]) { - PlaySE(5); + PlaySoundEffect(5); data[1]++; sub_813AE0C(taskId); @@ -412,7 +412,7 @@ void sub_813A280(u8 taskId) { if (data[0] + data[1] != data[2]) { - PlaySE(5); + PlaySoundEffect(5); data[9] = 1; data[8] = data[1] + data[0]; sub_813AD58(0xFFF7); @@ -422,14 +422,14 @@ void sub_813A280(u8 taskId) } else // _0813A3E8 { - PlaySE(5); // merging? + PlaySoundEffect(5); // merging? sub_813AA30(taskId, 0); sub_813AE0C(taskId); } } else if(gMain.newKeys & A_BUTTON) { - PlaySE(5); + PlaySoundEffect(5); if(!data[9]) { if(data[1] + data[0] != data[2]) @@ -449,7 +449,7 @@ void sub_813A280(u8 taskId) } else if(gMain.newKeys & B_BUTTON) { - PlaySE(5); + PlaySoundEffect(5); if(!data[9]) { sub_8072DEC(); @@ -554,7 +554,7 @@ void HandleQuantityRolling(u8 taskId) } else if(gMain.newKeys & A_BUTTON) // confirm quantity. { - PlaySE(5); + PlaySoundEffect(5); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); if(!data[6]) @@ -564,7 +564,7 @@ void HandleQuantityRolling(u8 taskId) } else if(gMain.newKeys & B_BUTTON) // cancel quantity. { - PlaySE(5); + PlaySoundEffect(5); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); sub_80F98DC(0); sub_80F98DC(1); diff --git a/src/pokedex.c b/src/pokedex.c index 5ea1f9938..688cae9e9 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -361,7 +361,7 @@ void Task_PokedexMainScreen(u8 taskId) 0, 0, 0x10, 0); gSprites[gPokedexView->unk626].callback = sub_808EDB8; gTasks[taskId].func = sub_808CA64; - PlaySE(SE_PIN); + PlaySoundEffect(SE_PIN); } else if (gMain.newKeys & START_BUTTON) { @@ -370,11 +370,11 @@ void Task_PokedexMainScreen(u8 taskId) gPokedexView->menuIsOpen = 1; gPokedexView->menuCursorPos = 0; gTasks[taskId].func = Task_PokedexMainScreenMenu; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } else if (gMain.newKeys & SELECT_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].data[0] = sub_8091E3C(); gPokedexView->unk64F = 0; @@ -383,13 +383,13 @@ void Task_PokedexMainScreen(u8 taskId) gPokedexView->unk614 = gPokedexView->dexMode; gPokedexView->unk618 = gPokedexView->dexOrder; gTasks[taskId].func = sub_808CB8C; - PlaySE(SE_PC_LOGON); + PlaySoundEffect(SE_PC_LOGON); } else if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ClosePokedex; - PlaySE(SE_PC_OFF); + PlaySoundEffect(SE_PC_OFF); } else { @@ -444,7 +444,7 @@ void Task_PokedexMainScreenMenu(u8 taskId) case 3: //CLOSE POKEDEX BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ClosePokedex; - PlaySE(SE_PC_OFF); + PlaySoundEffect(SE_PC_OFF); break; } } @@ -454,17 +454,17 @@ void Task_PokedexMainScreenMenu(u8 taskId) { gPokedexView->menuIsOpen = 0; gTasks[taskId].func = Task_PokedexMainScreen; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos != 0) { gPokedexView->menuCursorPos--; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 2) { gPokedexView->menuCursorPos++; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } } } @@ -562,7 +562,7 @@ void Task_PokedexResultsScreen(u8 taskId) gSprites[gPokedexView->unk626].callback = sub_808EDB8; BeginNormalPaletteFade(~a, 0, 0, 0x10, 0); gTasks[taskId].func = sub_808D118; - PlaySE(SE_PIN); + PlaySoundEffect(SE_PIN); } else if (gMain.newKeys & START_BUTTON) { @@ -570,7 +570,7 @@ void Task_PokedexResultsScreen(u8 taskId) gPokedexView->menuIsOpen = 1; gPokedexView->menuCursorPos = 0; gTasks[taskId].func = Task_PokedexResultsScreenMenu; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } else if (gMain.newKeys & SELECT_BUTTON) { @@ -578,13 +578,13 @@ void Task_PokedexResultsScreen(u8 taskId) gTasks[taskId].data[0] = sub_8091E3C(); gPokedexView->unk64F = 0; gTasks[taskId].func = sub_808CB8C; - PlaySE(SE_PC_LOGON); + PlaySoundEffect(SE_PC_LOGON); } else if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; - PlaySE(SE_PC_OFF); + PlaySoundEffect(SE_PC_OFF); } else { @@ -635,12 +635,12 @@ void Task_PokedexResultsScreenMenu(u8 taskId) case 3: //BACK TO POKEDEX BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; - PlaySE(SE_TRACK_DOOR); + PlaySoundEffect(SE_TRACK_DOOR); break; case 4: //CLOSE POKEDEX BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex; - PlaySE(SE_PC_OFF); + PlaySoundEffect(SE_PC_OFF); break; } } @@ -650,17 +650,17 @@ void Task_PokedexResultsScreenMenu(u8 taskId) { gPokedexView->menuIsOpen = 0; gTasks[taskId].func = Task_PokedexResultsScreen; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos) { gPokedexView->menuCursorPos--; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 3) { gPokedexView->menuCursorPos++; - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } } } @@ -1371,7 +1371,7 @@ u16 sub_808E48C(u16 a, u16 b) gPokedexView->unk62C += (a - r6) * 16; sub_808E82C(); sub_808E0CC(a, 0xE); - PlaySE(SE_Z_PAGE); + PlaySoundEffect(SE_Z_PAGE); goto _0808E5A2; } //_0808E53C @@ -1387,7 +1387,7 @@ u16 sub_808E48C(u16 a, u16 b) gPokedexView->unk62C += (a - r6) * 16; sub_808E82C(); sub_808E0CC(a, 0xE); - PlaySE(SE_Z_PAGE); + PlaySoundEffect(SE_Z_PAGE); goto _0808E5A2; _0808E5A2: @@ -1402,7 +1402,7 @@ u16 sub_808E48C(u16 a, u16 b) sub_808E398(2, a); //goto _0808E60E sub_808DBE8(2, a, b); - PlaySE(SE_Z_SCROLL); + PlaySoundEffect(SE_Z_SCROLL); } //_0808E5E4 else @@ -1412,7 +1412,7 @@ u16 sub_808E48C(u16 a, u16 b) sub_808E398(1, a); //_0808E60E sub_808DBE8(1, a, b); - PlaySE(SE_Z_SCROLL); + PlaySoundEffect(SE_Z_SCROLL); } //_0808E60E goto _0808E5A2; @@ -1511,7 +1511,7 @@ _0808E4E0:\n\ movs r1, 0xE\n\ bl sub_808E0CC\n\ movs r0, 0x6D\n\ - bl PlaySE\n\ + bl PlaySoundEffect\n\ b _0808E5A2\n\ .align 2, 0\n\ _0808E52C: .4byte gMain\n\ @@ -1566,7 +1566,7 @@ _0808E55A:\n\ movs r1, 0xE\n\ bl sub_808E0CC\n\ movs r0, 0x6D\n\ - bl PlaySE\n\ + bl PlaySoundEffect\n\ _0808E5A2:\n\ mov r0, r10\n\ cmp r0, 0\n\ @@ -1623,7 +1623,7 @@ _0808E60E:\n\ adds r2, r4, 0\n\ bl sub_808DBE8\n\ movs r0, 0x6C\n\ - bl PlaySE\n\ + bl PlaySoundEffect\n\ b _0808E5A2\n\ .align 2, 0\n\ _0808E620: .4byte gPokedexView\n\ @@ -2335,13 +2335,13 @@ void Task_PageScreenProcessInput(u8 taskId) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = sub_808F888; - PlaySE(SE_Z_SCROLL); + PlaySoundEffect(SE_Z_SCROLL); } else if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ClosePageScreen; - PlaySE(SE_PC_OFF); + PlaySoundEffect(SE_PC_OFF); } else if (gMain.newKeys & A_BUTTON) { @@ -2353,21 +2353,21 @@ void Task_PageScreenProcessInput(u8 taskId) case AREA_SCREEN: BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gTasks[taskId].func = Task_InitAreaScreenMultistep; - PlaySE(SE_PIN); + PlaySoundEffect(SE_PIN); break; case CRY_SCREEN: BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gTasks[taskId].func = Task_InitCryScreenMultistep; - PlaySE(SE_PIN); + PlaySoundEffect(SE_PIN); break; case SIZE_SCREEN: if (!gUnknown_0202FFBC->owned) - PlaySE(SE_HAZURE); + PlaySoundEffect(SE_HAZURE); else { BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gTasks[taskId].func = Task_InitSizeScreenMultistep; - PlaySE(SE_PIN); + PlaySoundEffect(SE_PIN); } break; } @@ -2378,7 +2378,7 @@ void Task_PageScreenProcessInput(u8 taskId) { gPokedexView->selectedScreen--; sub_8090584(gPokedexView->selectedScreen, 0xD); - PlaySE(SE_Z_PAGE); + PlaySoundEffect(SE_Z_PAGE); } else if (((gMain.newKeys & DPAD_RIGHT) || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) @@ -2386,7 +2386,7 @@ void Task_PageScreenProcessInput(u8 taskId) { gPokedexView->selectedScreen++; sub_8090584(gPokedexView->selectedScreen, 0xD); - PlaySE(SE_Z_PAGE); + PlaySoundEffect(SE_Z_PAGE); } } @@ -2581,7 +2581,7 @@ void Task_CryScreenProcessInput(u8 taskId) m4aMPlayContinue(&gMPlay_BGM); gPokedexView->unk64F = 1; gTasks[taskId].func = sub_808FFBC; - PlaySE(SE_PC_OFF); + PlaySoundEffect(SE_PC_OFF); } else if ((gMain.newKeys & DPAD_LEFT) || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) @@ -2590,20 +2590,20 @@ void Task_CryScreenProcessInput(u8 taskId) m4aMPlayContinue(&gMPlay_BGM); gPokedexView->unk64F = 2; gTasks[taskId].func = sub_808FFBC; - PlaySE(SE_Z_PAGE); + PlaySoundEffect(SE_Z_PAGE); } else if ((gMain.newKeys & DPAD_RIGHT) || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { if (!gUnknown_0202FFBC->owned) - PlaySE(SE_HAZURE); + PlaySoundEffect(SE_HAZURE); else { BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); m4aMPlayContinue(&gMPlay_BGM); gPokedexView->unk64F = 3; gTasks[taskId].func = sub_808FFBC; - PlaySE(SE_Z_PAGE); + PlaySoundEffect(SE_Z_PAGE); } } } @@ -2737,7 +2737,7 @@ void Task_SizeScreenProcessInput(u8 taskId) BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gPokedexView->unk64F = 1; gTasks[taskId].func = sub_8090498; - PlaySE(SE_PC_OFF); + PlaySoundEffect(SE_PC_OFF); } //_08090430 else if ((gMain.newKeys & DPAD_LEFT) @@ -2746,7 +2746,7 @@ void Task_SizeScreenProcessInput(u8 taskId) BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gPokedexView->unk64F = 2; gTasks[taskId].func = sub_8090498; - PlaySE(SE_Z_PAGE); + PlaySoundEffect(SE_Z_PAGE); } } diff --git a/src/record_mixing.c b/src/record_mixing.c index 5f2077432..d1a386dc7 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -23,7 +23,7 @@ extern u8 gUnknown_083D0288[2]; extern u8 gUnknown_083D028A[2][3]; extern u8 gUnknown_083D0290[9][4]; -extern u8 gUnknown_02038738[]; //Don't know what type this points to +extern struct RecordMixing_UnknownStruct gUnknown_02038738[2]; //Don't know what type this points to extern u16 gSpecialVar_0x8005; extern u32 gUnknown_03005D2C; extern u8 gUnknown_03000718; @@ -53,7 +53,9 @@ struct PlayerRecords { extern struct PlayerRecords unk_2008000; extern struct PlayerRecords unk_2018000; -#ifdef NONMATCHING +extern void sub_80BC300(); +extern void sub_80C045C(); + void sub_80B92AC(void) { sub_80BC300(); @@ -64,8 +66,8 @@ void sub_80B92AC(void) memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40); memcpy(unk_2018000.filler1044, gUnknown_083D0278, 0x40); memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28); - memcpy(gUnknown_02038738, gSaveBlock1.filler_303C, 0x38); - memcpy(gUnknown_02038738 + 0x38, gSaveBlock1.filler_3074, 0x38); + gUnknown_02038738[0] = gSaveBlock1.filler_303C[0]; + gUnknown_02038738[1] = gSaveBlock1.filler_303C[1]; sub_8041324(gSaveBlock1.daycareData, gUnknown_02038738); memcpy(unk_2018000.filler10AC, gUnknown_083D0280, 0x78); memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4); @@ -73,112 +75,6 @@ void sub_80B92AC(void) if (GetMultiplayerId() == 0) unk_2018000.filler11C8[0] = sub_8126338(); } -#else -__attribute__((naked)) -void sub_80B92AC(void) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - bl sub_80BC300\n\ - bl sub_80C045C\n\ - ldr r6, _080B9364 @ =0x02018000\n\ - ldr r0, _080B9368 @ =recordMixingSecretBases\n\ - ldr r1, [r0]\n\ - movs r2, 0xC8\n\ - lsls r2, 4\n\ - adds r0, r6, 0\n\ - bl memcpy\n\ - movs r1, 0xC8\n\ - lsls r1, 4\n\ - adds r0, r6, r1\n\ - ldr r1, _080B936C @ =recordMixingTvShows\n\ - ldr r1, [r1]\n\ - movs r2, 0xE1\n\ - lsls r2, 2\n\ - bl memcpy\n\ - ldr r2, _080B9370 @ =0x00001004\n\ - adds r0, r6, r2\n\ - ldr r1, _080B9374 @ =gUnknown_083D0274\n\ - ldr r1, [r1]\n\ - movs r2, 0x40\n\ - bl memcpy\n\ - ldr r1, _080B9378 @ =0x00001044\n\ - adds r0, r6, r1\n\ - ldr r1, _080B937C @ =gUnknown_083D0278\n\ - ldr r1, [r1]\n\ - movs r2, 0x40\n\ - bl memcpy\n\ - ldr r2, _080B9380 @ =0x00001084\n\ - adds r0, r6, r2\n\ - ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\ - ldr r1, [r1]\n\ - movs r2, 0x28\n\ - bl memcpy\n\ - ldr r5, _080B9388 @ =gUnknown_02038738\n\ - ldr r4, _080B938C @ =gSaveBlock1\n\ - ldr r0, _080B9390 @ =0x0000303c\n\ - adds r1, r4, r0\n\ - adds r0, r5, 0\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - ldr r2, _080B9394 @ =0x00003074\n\ - adds r1, r4, r2\n\ - adds r0, r5, 0\n\ - adds r0, 0x38\n\ - movs r2, 0x38\n\ - bl memcpy\n\ - ldr r0, _080B9398 @ =0x00002f9c\n\ - adds r4, r0\n\ - adds r0, r4, 0\n\ - adds r1, r5, 0\n\ - bl sub_8041324\n\ - ldr r1, _080B939C @ =0x000010ac\n\ - adds r0, r6, r1\n\ - ldr r1, _080B93A0 @ =gUnknown_083D0280\n\ - ldr r1, [r1]\n\ - movs r2, 0x78\n\ - bl memcpy\n\ - ldr r2, _080B93A4 @ =0x00001124\n\ - adds r0, r6, r2\n\ - ldr r1, _080B93A8 @ =gUnknown_083D0284\n\ - ldr r1, [r1]\n\ - movs r2, 0xA4\n\ - bl memcpy\n\ - bl GetMultiplayerId\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080B935C\n\ - bl sub_8126338\n\ - ldr r2, _080B93AC @ =0x000011c8\n\ - adds r1, r6, r2\n\ - strh r0, [r1]\n\ -_080B935C:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_080B9364: .4byte 0x02018000\n\ -_080B9368: .4byte recordMixingSecretBases\n\ -_080B936C: .4byte recordMixingTvShows\n\ -_080B9370: .4byte 0x00001004\n\ -_080B9374: .4byte gUnknown_083D0274\n\ -_080B9378: .4byte 0x00001044\n\ -_080B937C: .4byte gUnknown_083D0278\n\ -_080B9380: .4byte 0x00001084\n\ -_080B9384: .4byte recordMixingEasyChatPairs\n\ -_080B9388: .4byte gUnknown_02038738\n\ -_080B938C: .4byte gSaveBlock1\n\ -_080B9390: .4byte 0x0000303c\n\ -_080B9394: .4byte 0x00003074\n\ -_080B9398: .4byte 0x00002f9c\n\ -_080B939C: .4byte 0x000010ac\n\ -_080B93A0: .4byte gUnknown_083D0280\n\ -_080B93A4: .4byte 0x00001124\n\ -_080B93A8: .4byte gUnknown_083D0284\n\ -_080B93AC: .4byte 0x000011c8\n\ - .syntax divided\n"); -} -#endif #undef NONMATCHING @@ -200,7 +96,7 @@ void sub_80B9450(u8 taskId) gTasks[taskId].data[0]++; if (gTasks[taskId].data[0] == 50) { - PlaySE(SE_W213); + PlaySoundEffect(SE_W213); gTasks[taskId].data[0] = 0; } } @@ -235,7 +131,7 @@ void sub_80B9484(u8 taskId) case 2: taskData[10] = CreateTask(sub_80BA00C, 10); taskData[TD_STATE] = 3; - PlaySE(SE_W226); + PlaySoundEffect(SE_W226); break; case 3: if (!gTasks[taskData[10]].isActive) @@ -294,14 +190,14 @@ void sub_80B95F0(u8 taskId) { if (players == sub_800820C()) { - PlaySE(0x15); + PlaySoundEffect(0x15); task->data[TD_STATE] = 201; task->data[12] = 0; } } else { - PlaySE(0x16); + PlaySoundEffect(0x16); task->data[TD_STATE] = 301; } break; diff --git a/src/rom4.c b/src/rom4.c index 79ac6d769..9ed08aa7f 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -2203,28 +2203,28 @@ void sub_80557E8(void) void sub_80557F4(void) { - PlaySE(SE_WIN_OPEN); + PlaySoundEffect(SE_WIN_OPEN); sub_8071310(); ScriptContext2_Enable(); } void sub_8055808(u8 *script) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); ScriptContext1_SetupScript(script); ScriptContext2_Enable(); } void sub_8055824(void) { - PlaySE(SE_WIN_OPEN); + PlaySoundEffect(SE_WIN_OPEN); ScriptContext1_SetupScript(TradeRoom_PromptToCancelLink); ScriptContext2_Enable(); } void sub_8055840(u8 *script) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); ScriptContext1_SetupScript(script); ScriptContext2_Enable(); } diff --git a/src/rom6.c b/src/rom6.c index a2b52c9aa..a8c489e70 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -150,7 +150,7 @@ int FldEff_RockSmash(void) static void sub_810B58C(void) { - PlaySE(SE_W088); + PlaySoundEffect(SE_W088); FieldEffectActiveListRemove(0x25); EnableBothScriptContexts(); } diff --git a/src/scrcmd.c b/src/scrcmd.c index 136181bd3..fa3467d22 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -807,7 +807,7 @@ bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) bool8 ScrCmd_playsfx(struct ScriptContext *ctx) { - PlaySE(ScriptReadHalfword(ctx)); + PlaySoundEffect(ScriptReadHalfword(ctx)); return FALSE; } @@ -1787,7 +1787,7 @@ bool8 ScrCmd_setdooropened(struct ScriptContext *ctx) u16 y = VarGet(ScriptReadHalfword(ctx)); x += 7; y += 7; - PlaySE(sub_8058790(x, y)); + PlaySoundEffect(sub_8058790(x, y)); FieldAnimateDoorOpen(x, y); return FALSE; } diff --git a/src/script_menu.c b/src/script_menu.c index eba438397..38f7f0af5 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -672,7 +672,7 @@ void sub_80B52B4(u8 taskId) { if (!gTasks[taskId].data[4]) { - PlaySE(5); + PlaySoundEffect(5); gScriptResult = 127; } else @@ -770,7 +770,7 @@ void task_yes_no_maybe(u8 taskId) return; case -1: case 1: - PlaySE(5); + PlaySoundEffect(5); gScriptResult = 0; break; case 0: @@ -835,7 +835,7 @@ void sub_80B5684(u8 taskId) { if (!gTasks[taskId].data[4]) { - PlaySE(5); + PlaySoundEffect(5); gScriptResult = 127; } else diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index ce62f2abb..2efc0e2c6 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -169,13 +169,13 @@ void sub_80F9C6C(u8 var) switch(sub_806BD80(var)) { case 1: - PlaySE(5); + PlaySoundEffect(5); gUnknown_02038694 = sub_806CA38(var); gSpecialVar_0x8004 = gUnknown_02038694; sub_8123138(var); break; case 2: - PlaySE(5); + PlaySoundEffect(5); gUnknown_02038694 = 0xFF; gSpecialVar_0x8004 = 0xFF; sub_8123138(var); @@ -268,13 +268,13 @@ void sub_80F9E64(u8 var) switch(sub_806BD80(var)) { case 1: - PlaySE(5); + PlaySoundEffect(5); gSpecialVar_0x8004 = sub_806CA38(var); gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); sub_8123138(var); break; case 2: - PlaySE(5); + PlaySoundEffect(5); gSpecialVar_0x8004 = 0xFF; sub_8123138(var); } diff --git a/src/shop.c b/src/shop.c index 780dff02a..27aa5b335 100644 --- a/src/shop.c +++ b/src/shop.c @@ -106,7 +106,7 @@ void sub_80B2E38(u8 var) { if(gUnknown_03000708.unk9) { - PlaySE(0x5); + PlaySoundEffect(0x5); gUnknown_03000708.unk9 = MoveMenuCursor(-1); } } @@ -114,13 +114,13 @@ void sub_80B2E38(u8 var) { if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA) { - PlaySE(0x5); + PlaySoundEffect(0x5); gUnknown_03000708.unk9 = MoveMenuCursor(1); } } else if (gMain.newKeys & 1) { - PlaySE(0x5); + PlaySoundEffect(0x5); if(!gUnknown_03000708.unkC) { gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local); @@ -132,7 +132,7 @@ void sub_80B2E38(u8 var) } else if(gMain.newKeys & 2) { - PlaySE(0x5); + PlaySoundEffect(0x5); HandleShopMenuQuit(local); } } diff --git a/src/sound.c b/src/sound.c index ed69ca01d..897b13ddf 100644 --- a/src/sound.c +++ b/src/sound.c @@ -521,12 +521,12 @@ void PlayBGM(u16 songNum) m4aSongNumStart(songNum); } -void PlaySE(u16 songNum) +void PlaySoundEffect(u16 songNum) { m4aSongNumStart(songNum); } -void PlaySE12WithPanning(u16 songNum, s8 pan) +void PlaySoundEffect12WithPanning(u16 songNum, s8 pan) { m4aSongNumStart(songNum); m4aMPlayImmInit(&gMPlay_SE1); @@ -535,14 +535,14 @@ void PlaySE12WithPanning(u16 songNum, s8 pan) m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan); } -void PlaySE1WithPanning(u16 songNum, s8 pan) +void PlaySoundEffect1WithPanning(u16 songNum, s8 pan) { m4aSongNumStart(songNum); m4aMPlayImmInit(&gMPlay_SE1); m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, pan); } -void PlaySE2WithPanning(u16 songNum, s8 pan) +void PlaySoundEffect2WithPanning(u16 songNum, s8 pan) { m4aSongNumStart(songNum); m4aMPlayImmInit(&gMPlay_SE2); diff --git a/src/start_menu.c b/src/start_menu.c index 37d361c0b..4c3a0b6e1 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -315,17 +315,17 @@ static u8 StartMenu_InputProcessCallback(void) { if (gMain.newKeys & DPAD_UP) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); sStartMenuCursorPos = MoveMenuCursor(-1); } if (gMain.newKeys & DPAD_DOWN) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); sStartMenuCursorPos = MoveMenuCursor(1); } if (gMain.newKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); if (sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func == StartMenu_PokedexCallback) { if (GetNationalPokedexCount(0) == 0) @@ -566,7 +566,7 @@ static bool8 SaveDialogCheckForTimeoutOrKeypress(void) saveDialogTimer--; if (gMain.heldKeys & A_BUTTON) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); return TRUE; } else if (saveDialogTimer == 0) @@ -702,7 +702,7 @@ static u8 SaveDialogCB_SaveSuccess(void) { if (MenuUpdateWindowText()) { - PlaySE(SE_SAVE); + PlaySoundEffect(SE_SAVE); saveDialogCallback = SaveDialogCB_ReturnSuccess; } return SAVE_IN_PROGRESS; @@ -723,7 +723,7 @@ static u8 SaveDialogCB_SaveError(void) { if (MenuUpdateWindowText()) { - PlaySE(SE_BOO); + PlaySoundEffect(SE_BOO); saveDialogCallback = SaveDialogCB_ReturnError; } return SAVE_IN_PROGRESS; diff --git a/src/starter_choose.c b/src/starter_choose.c index 6ef410d21..e133c6212 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -455,7 +455,7 @@ static void Task_StarterChoose5(u8 taskId) break; case 1: // NO case -1: // B button - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MenuZeroFillWindowRect(21, 7, 27, 12); spriteId = gTasks[taskId].tPkmnSpriteId; diff --git a/src/text.c b/src/text.c index 7be72833a..ee5089c4d 100644 --- a/src/text.c +++ b/src/text.c @@ -136,7 +136,7 @@ static u8 ExtCtrlCode_Escape(struct Window *); static u8 ExtCtrlCode_Nop2(struct Window *); static u8 ExtCtrlCode_SetCursorY(struct Window *); static u8 ExtCtrlCode_ClearWindowTextLines(struct Window *); -static u8 ExtCtrlCode_PlaySE(struct Window *); +static u8 ExtCtrlCode_PlaySoundEffect(struct Window *); static u8 ExtCtrlCode_Skip(struct Window *); static u8 ExtCtrlCode_SetCursorX(struct Window *); static u8 ExtCtrlCode_SkipTo(struct Window *); @@ -380,7 +380,7 @@ static const ExtCtrlCodeFunc sExtCtrlCodeFuncs[] = ExtCtrlCode_Nop2, ExtCtrlCode_SetCursorY, ExtCtrlCode_ClearWindowTextLines, - ExtCtrlCode_PlaySE, + ExtCtrlCode_PlaySoundEffect, ExtCtrlCode_Skip, ExtCtrlCode_SetCursorX, ExtCtrlCode_SkipTo, @@ -2197,11 +2197,11 @@ static u8 ExtCtrlCode_ClearWindowTextLines(struct Window *win) return 2; } -static u8 ExtCtrlCode_PlaySE(struct Window *win) +static u8 ExtCtrlCode_PlaySoundEffect(struct Window *win) { u16 loByte = win->text[win->textIndex++]; u16 hiByte = win->text[win->textIndex++] << 8; - PlaySE(loByte | hiByte); + PlaySoundEffect(loByte | hiByte); return 2; } @@ -2377,7 +2377,7 @@ static u8 UpdateWindowText(struct Window *win) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); } else { @@ -3187,7 +3187,7 @@ static u8 WaitWithDownArrow(struct Window *win) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); TryEraseDownArrow(win); } else diff --git a/src/trainer_card.c b/src/trainer_card.c index e6ed79c15..945d469e3 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -662,7 +662,7 @@ bool8 sub_80938CC(struct Task *task) bool8 sub_8093918(struct Task *task) { sub_8093A28(); - PlaySE(SE_CARD); + PlaySoundEffect(SE_CARD); ewram0.var_0 += 1; diff --git a/src/wallclock.c b/src/wallclock.c index 0f3665c65..f8c3fdeea 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -429,13 +429,13 @@ static void Task_SetClock4(u8 taskId) switch (ProcessMenuInputNoWrap_()) { case 0: //YES - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); gTasks[taskId].func = Task_SetClock5; //Move on return; case -1: //B button case 1: //NO sub_8072DEC(); - PlaySE(SE_SELECT); + PlaySoundEffect(SE_SELECT); MenuZeroFillWindowRect(23, 8, 29, 13); MenuZeroFillWindowRect(2, 16, 27, 19); gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock -- cgit v1.2.3 From a240212df98595f9ce95dabd833846e58468a8ea Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Mon, 15 May 2017 16:57:54 +0200 Subject: More record_mixing maintenance --- asm/cable_club.s | 4 +-- include/record_mixing.h | 16 +++++------ src/record_mixing.c | 74 +++++++++++++++++++++++-------------------------- 3 files changed, 44 insertions(+), 50 deletions(-) diff --git a/asm/cable_club.s b/asm/cable_club.s index a352cdcb8..2fde06252 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -1515,7 +1515,7 @@ unref_sub_8083BB0: @ 8083BB0 bl CreateTask lsls r0, 24 lsrs r0, 24 - ldr r2, _08083BD8 @ =sub_80B9484 + ldr r2, _08083BD8 @ =Task_RecordMixing_Main adds r1, r4, 0 bl SetTaskFuncWithFollowupFunc bl ScriptContext1_Stop @@ -1524,7 +1524,7 @@ unref_sub_8083BB0: @ 8083BB0 bx r0 .align 2, 0 _08083BD4: .4byte sub_80839DC -_08083BD8: .4byte sub_80B9484 +_08083BD8: .4byte Task_RecordMixing_Main thumb_func_end unref_sub_8083BB0 thumb_func_start sub_8083BDC diff --git a/include/record_mixing.h b/include/record_mixing.h index 39cf5bd43..72a089ca1 100644 --- a/include/record_mixing.h +++ b/include/record_mixing.h @@ -4,16 +4,16 @@ #include void sub_80B929C(void); -void sub_80B92AC(void); -void sub_80B93B0(u32 a); -void sub_80B9450(u8 taskId); -void sub_80B9484(u8 taskId); +void RecordMixing_PrepareExchangePacket(void); +void RecordMixing_ReceiveExchangePacket(u32 a); +void Task_RecordMixing_SoundEffect(u8 taskId); +void Task_RecordMixing_Main(u8 taskId); void sub_80B95F0(u8 taskId); -void sub_80B97DC(u8 taskId); -void Task_CopyRecvBuffer(u8 taskId); +void Task_RecordMixing_SendPacket(u8 taskId); +void Task_RecordMixing_CopyReceiveBuffer(u8 taskId); void sub_80B99B4(u8 taskId); -void sub_80B99E8(u8 taskId); -void sub_80B9A1C(u8 taskId); +void Task_RecordMixing_ReceivePacket(u8 taskId); +void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId); void *LoadPtrFromTaskData(u16 *ptr); void StorePtrInTaskData(void *ptr, u16 *data); u8 GetMultiplayerId_(void); diff --git a/src/record_mixing.c b/src/record_mixing.c index d1a386dc7..f8c684161 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -36,7 +36,7 @@ extern bool8 gReceivedRemoteLinkPlayers; void sub_80B929C(void) { - sub_8083A84(sub_80B9484); + sub_8083A84(Task_RecordMixing_Main); } struct PlayerRecords { @@ -53,10 +53,10 @@ struct PlayerRecords { extern struct PlayerRecords unk_2008000; extern struct PlayerRecords unk_2018000; -extern void sub_80BC300(); -extern void sub_80C045C(); +void sub_80BC300(); +void sub_80C045C(); -void sub_80B92AC(void) +void RecordMixing_PrepareExchangePacket(void) { sub_80BC300(); sub_80C045C(); @@ -76,9 +76,7 @@ void sub_80B92AC(void) unk_2018000.filler11C8[0] = sub_8126338(); } -#undef NONMATCHING - -void sub_80B93B0(u32 a) +void RecordMixing_ReceiveExchangePacket(u32 a) { sub_80BD674(unk_2008000.secretBases, sizeof(struct PlayerRecords), a); sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a); @@ -91,7 +89,7 @@ void sub_80B93B0(u32 a) sub_80B9F3C(unk_2008000.filler11C8, a); } -void sub_80B9450(u8 taskId) +void Task_RecordMixing_SoundEffect(u8 taskId) { gTasks[taskId].data[0]++; if (gTasks[taskId].data[0] == 50) @@ -102,24 +100,23 @@ void sub_80B9450(u8 taskId) } #define TD_STATE 0 - -void sub_80B9484(u8 taskId) +void Task_RecordMixing_Main(u8 taskId) { s16 *taskData = gTasks[taskId].data; switch (taskData[TD_STATE]) { - case 0: + case 0: // init sub_8007270(gSpecialVar_0x8005); VarSet(0x4000, 1); gUnknown_03000718 = 0; - sub_80B92AC(); + RecordMixing_PrepareExchangePacket(); CreateRecordMixingSprite(); taskData[TD_STATE] = 1; taskData[10] = CreateTask(sub_80B95F0, 0x50); - taskData[15] = CreateTask(sub_80B9450, 0x51); + taskData[15] = CreateTask(Task_RecordMixing_SoundEffect, 0x51); break; - case 1: + case 1: // wait for sub_80B95F0 if (!gTasks[taskData[10]].isActive) { taskData[TD_STATE] = 2; @@ -133,7 +130,7 @@ void sub_80B9484(u8 taskId) taskData[TD_STATE] = 3; PlaySoundEffect(SE_W226); break; - case 3: + case 3: // wait for sub_80BA00C if (!gTasks[taskData[10]].isActive) { taskData[TD_STATE] = 4; @@ -143,7 +140,7 @@ void sub_80B9484(u8 taskId) taskData[8] = 0; } break; - case 4: + case 4: // wait 60 frames taskData[8]++; if (taskData[8] > 60) taskData[TD_STATE] = 5; @@ -171,10 +168,10 @@ void sub_80B95F0(u8 taskId) MenuDisplayMessageBox(); MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15); task->data[8] = 0x708; - task->data[TD_STATE] = 0x190; + task->data[TD_STATE] = 400; ClearLinkCallback_2(); break; - case 100: + case 100: // wait 20 frames task->data[12]++; if (task->data[12] > 20) { @@ -216,7 +213,7 @@ void sub_80B95F0(u8 taskId) if (sub_800820C() == GetLinkPlayerCount_2()) task->data[TD_STATE] = 1; break; - case 400: + case 400: // wait 20 frames task->data[12]++; if (task->data[12] > 20) { @@ -224,7 +221,7 @@ void sub_80B95F0(u8 taskId) task->data[12] = 0; } break; - case 1: + case 1: // wait for handshake if (gReceivedRemoteLinkPlayers) { ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2); @@ -238,16 +235,16 @@ void sub_80B95F0(u8 taskId) task->data[6] = GetLinkPlayerCount_2(); task->data[TD_STATE] = 0; task->data[5] = GetMultiplayerId_(); - task->func = sub_80B97DC; + task->func = Task_RecordMixing_SendPacket; StorePtrInTaskData(&unk_2018000, &task->data[2]); - subTaskId = CreateTask(Task_CopyRecvBuffer, 0x50); + subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50); task->data[10] = subTaskId; gTasks[subTaskId].data[0] = taskId; //StorePtrInTaskData((void*)0x2008000, &gTasks[subTaskId].data[5]); StorePtrInTaskData((u8 *)&unk_2018000 - 0x10000, &gTasks[subTaskId].data[5]); break; } - case 5: + case 5: // wait 60 frames task->data[10]++; if (task->data[10] > 60) { @@ -258,9 +255,10 @@ void sub_80B95F0(u8 taskId) } } -void sub_80B97DC(u8 taskId) +void Task_RecordMixing_SendPacket(u8 taskId) { struct Task *task = &gTasks[taskId]; + // does this send the data 24 times? switch (task->data[TD_STATE]) { @@ -288,15 +286,15 @@ void sub_80B97DC(u8 taskId) break; case 4: if (!gTasks[task->data[10]].isActive) - task->func = sub_80B9A1C; + task->func = Task_RecordMixing_SendPacket_SwitchToReceive; } } -void Task_CopyRecvBuffer(u8 taskId) +void Task_RecordMixing_CopyReceiveBuffer(u8 taskId) { struct Task *task = &gTasks[taskId]; s32 recvStatus = GetBlockReceivedStatus(); - u32 sp8 = 0; + u8 handledPlayers = 0; if (recvStatus == sub_8008198()) { @@ -304,32 +302,27 @@ void Task_CopyRecvBuffer(u8 taskId) for (player = 0; player < GetLinkPlayerCount(); player++) { - //_080B98D4 - u8 *ptr; void *src; u8 *dst; if ((recvStatus >> player) & 1) { - ptr = LoadPtrFromTaskData(&task->data[5]); - dst = ptr + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords); + dst = LoadPtrFromTaskData(&task->data[5]) + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords); src = GetPlayerRecvBuffer(player); - if ((u32)(task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords)) + if ((task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords)) memcpy(dst, src, sizeof(struct PlayerRecords) - task->data[player + 1] * BUFFER_CHUNK_SIZE); else memcpy(dst, src, BUFFER_CHUNK_SIZE); - //_080B993C ResetBlockReceivedFlag(player); task->data[player + 1]++; if ((u16)task->data[player + 1] == 0x18) - sp8 = (u8)(sp8 + 1); + handledPlayers++; } } - //line 828 gTasks[task->data[0]].data[0]++; } //_080B998A - if (sp8 == GetLinkPlayerCount()) + if (handledPlayers == GetLinkPlayerCount()) DestroyTask(taskId); } @@ -341,18 +334,18 @@ void sub_80B99B4(u8 taskId) DestroyTask(taskId); } -void sub_80B99E8(u8 taskId) +void Task_RecordMixing_ReceivePacket(u8 taskId) { struct Task *task = &gTasks[taskId]; task->func = sub_80B99B4; if (gUnknown_03000718 == 1) - sub_80B93B0(task->data[5]); + RecordMixing_ReceiveExchangePacket(task->data[5]); } -void sub_80B9A1C(u8 taskId) +void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId) { - gTasks[taskId].func = sub_80B99E8; + gTasks[taskId].func = Task_RecordMixing_ReceivePacket; gUnknown_03000718 = 1; } @@ -433,6 +426,7 @@ u8 sub_80B9BBC(u16 *a) return a[16]; } +#undef NONMATCHING #ifdef NONMATCHING void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d) -- cgit v1.2.3 From 80dd8f3f41ebe3bdbc5b12b9db4e4fbed1baec04 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 14:26:13 +0200 Subject: typedef struct is not in style of the repo --- include/global.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/global.h b/include/global.h index df95ce529..34946c895 100644 --- a/include/global.h +++ b/include/global.h @@ -464,9 +464,9 @@ struct GabbyAndTyData { u8 valB; }; -typedef struct RecordMixing_UnknownStruct { +struct RecordMixing_UnknownStruct { u8 data[0x38]; -} RecordMixing_UnknownStruct; +}; struct SaveBlock1 /* 0x02025734 */ { -- cgit v1.2.3 From 5847cceee4656ca5ffd08eb57d90e2cccdaaea60 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 14:28:59 +0200 Subject: Fix tabs - it's 4 spaces --- src/daycare.c | 598 +++++++++++++++++++++++++++++----------------------------- 1 file changed, 299 insertions(+), 299 deletions(-) diff --git a/src/daycare.c b/src/daycare.c index b1bafa6f4..92be45cfa 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -7,243 +7,243 @@ extern u8 gLastFieldPokeMenuOpened; u8 *GetMonNick(struct Pokemon *mon, u8 *dest) { - s8 nickname[POKEMON_NAME_LENGTH * 2]; + s8 nickname[POKEMON_NAME_LENGTH * 2]; - GetMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); + GetMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); } u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest) { - s8 nickname[POKEMON_NAME_LENGTH * 2]; + s8 nickname[POKEMON_NAME_LENGTH * 2]; - GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); - return StringCopy10(dest, nickname); + GetBoxMonData(mon, MON_DATA_NICKNAME, nickname); + return StringCopy10(dest, nickname); } u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data) { - u8 i, count; - count = 0; + u8 i, count; + count = 0; - for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) - count++; + for(i = 0;i <= 1;i++) + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0) + count++; - return count; + return count; } #ifndef ASDF __attribute__((naked)) void sub_8041324(struct BoxPokemon * box_pokemon, void * void_pointer) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - mov r9, r0\n\ - mov r10, r1\n\ - movs r7, 0\n\ - movs r5, 0\n\ - mov r6, r10\n\ - adds r6, 0x74\n\ - movs r0, 0x1\n\ - mov r8, r0\n\ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + mov r9, r0\n\ + mov r10, r1\n\ + movs r7, 0\n\ + movs r5, 0\n\ + mov r6, r10\n\ + adds r6, 0x74\n\ + movs r0, 0x1\n\ + mov r8, r0\n\ _0804133E:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 4\n\ - mov r1, r9\n\ - adds r4, r1, r0\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetBoxMonData\n\ - cmp r0, 0\n\ - beq _0804136E\n\ - adds r0, r7, 0x1\n\ - lsls r0, 24\n\ - lsrs r7, r0, 24\n\ - adds r0, r4, 0\n\ - movs r1, 0xC\n\ - bl GetBoxMonData\n\ - adds r1, r0, 0\n\ - cmp r1, 0\n\ - bne _0804136E\n\ - lsls r0, r5, 1\n\ - adds r0, r6, r0\n\ - b _08041374\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 4\n\ + mov r1, r9\n\ + adds r4, r1, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetBoxMonData\n\ + cmp r0, 0\n\ + beq _0804136E\n\ + adds r0, r7, 0x1\n\ + lsls r0, 24\n\ + lsrs r7, r0, 24\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetBoxMonData\n\ + adds r1, r0, 0\n\ + cmp r1, 0\n\ + bne _0804136E\n\ + lsls r0, r5, 1\n\ + adds r0, r6, r0\n\ + b _08041374\n\ _0804136E:\n\ - lsls r0, r5, 1\n\ - adds r0, r6, r0\n\ - mov r1, r8\n\ + lsls r0, r5, 1\n\ + adds r0, r6, r0\n\ + mov r1, r8\n\ _08041374:\n\ - strh r1, [r0]\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, 0x1\n\ - bls _0804133E\n\ - mov r0, r10\n\ - str r7, [r0, 0x70]\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\ - .syntax divided\n"); + strh r1, [r0]\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, 0x1\n\ + bls _0804133E\n\ + mov r0, r10\n\ + str r7, [r0, 0x70]\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\ + .syntax divided\n"); } #endif s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data) { - u8 i; + u8 i; - for(i = 0;i <= 1;i++) - if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) - return i; + for(i = 0;i <= 1;i++) + if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0) + return i; - return -1; + return -1; } /*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished - s8 empty_slot; + s8 empty_slot; - empty_slot = Daycare_FindEmptySpot(daycare_data); - if(MonHasMail(mon) != 0){ // if the mon holds a mail? - u8 empty_slot_times_56 = empty_slot * 56; - u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; - StringCopy(something2, gSaveBlock2.playerName); - PadNameString(something2, 0xFC); - something2 += 8; - GetMonNick(mon, something2); - u8 pokerus = GetMonData(mon, MON_DATA_64); - something1 += (u8 * daycare_data) + empty_slot = Daycare_FindEmptySpot(daycare_data); + if(MonHasMail(mon) != 0){ // if the mon holds a mail? + u8 empty_slot_times_56 = empty_slot * 56; + u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36; + StringCopy(something2, gSaveBlock2.playerName); + PadNameString(something2, 0xFC); + something2 += 8; + GetMonNick(mon, something2); + u8 pokerus = GetMonData(mon, MON_DATA_64); + something1 += (u8 * daycare_data) }*/ __attribute__((naked)) void Daycare_SendPokemon() { - // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: - // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC - // the ldm/stm section probably copies some struct, but I'm not sure how the code would look - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - adds r7, r0, 0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - bl Daycare_FindEmptySpot\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - mov r9, r4\n\ - adds r0, r7, 0\n\ - bl MonHasMail\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _0804144A\n\ - lsls r0, r4, 24\n\ - asrs r0, 24\n\ - lsls r4, r0, 3\n\ - subs r4, r0\n\ - lsls r4, 3\n\ - adds r5, r4, 0\n\ - adds r5, 0xA0\n\ - add r5, r8\n\ - adds r6, r5, 0\n\ - adds r6, 0x24\n\ - ldr r1, _08041490 @ =gSaveBlock2\n\ - adds r0, r6, 0\n\ - bl StringCopy\n\ - adds r0, r6, 0\n\ - movs r1, 0xFC\n\ - bl PadNameString\n\ - adds r6, 0x8\n\ - adds r0, r7, 0\n\ - adds r1, r6, 0\n\ - bl GetMonNick\n\ - adds r0, r7, 0\n\ - movs r1, 0x40\n\ - bl GetMonData\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - add r4, r8\n\ - ldr r2, _08041494 @ =gSaveBlock1\n\ - lsls r1, r0, 3\n\ - adds r1, r0\n\ - lsls r1, 2\n\ - adds r1, r2\n\ - adds r4, 0xA0\n\ - ldr r0, _08041498 @ =0x00002b4c\n\ - adds r1, r0\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - ldm r1!, {r0,r2,r3}\n\ - stm r4!, {r0,r2,r3}\n\ - adds r0, r7, 0\n\ - bl TakeMailFromMon\n\ + // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped: + // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC + // the ldm/stm section probably copies some struct, but I'm not sure how the code would look + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + adds r7, r0, 0\n\ + mov r8, r1\n\ + mov r0, r8\n\ + bl Daycare_FindEmptySpot\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + mov r9, r4\n\ + adds r0, r7, 0\n\ + bl MonHasMail\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _0804144A\n\ + lsls r0, r4, 24\n\ + asrs r0, 24\n\ + lsls r4, r0, 3\n\ + subs r4, r0\n\ + lsls r4, 3\n\ + adds r5, r4, 0\n\ + adds r5, 0xA0\n\ + add r5, r8\n\ + adds r6, r5, 0\n\ + adds r6, 0x24\n\ + ldr r1, _08041490 @ =gSaveBlock2\n\ + adds r0, r6, 0\n\ + bl StringCopy\n\ + adds r0, r6, 0\n\ + movs r1, 0xFC\n\ + bl PadNameString\n\ + adds r6, 0x8\n\ + adds r0, r7, 0\n\ + adds r1, r6, 0\n\ + bl GetMonNick\n\ + adds r0, r7, 0\n\ + movs r1, 0x40\n\ + bl GetMonData\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + add r4, r8\n\ + ldr r2, _08041494 @ =gSaveBlock1\n\ + lsls r1, r0, 3\n\ + adds r1, r0\n\ + lsls r1, 2\n\ + adds r1, r2\n\ + adds r4, 0xA0\n\ + ldr r0, _08041498 @ =0x00002b4c\n\ + adds r1, r0\n\ + ldm r1!, {r0,r2,r3}\n\ + stm r4!, {r0,r2,r3}\n\ + ldm r1!, {r0,r2,r3}\n\ + stm r4!, {r0,r2,r3}\n\ + ldm r1!, {r0,r2,r3}\n\ + stm r4!, {r0,r2,r3}\n\ + adds r0, r7, 0\n\ + bl TakeMailFromMon\n\ _0804144A:\n\ - mov r2, r9\n\ - lsls r4, r2, 24\n\ - asrs r4, 24\n\ - lsls r5, r4, 2\n\ - adds r4, r5, r4\n\ - lsls r4, 4\n\ - add r4, r8\n\ - adds r0, r4, 0\n\ - adds r1, r7, 0\n\ - movs r2, 0x50\n\ - bl memcpy\n\ - adds r0, r4, 0\n\ - bl BoxMonRestorePP\n\ - movs r0, 0x88\n\ - lsls r0, 1\n\ - add r0, r8\n\ - adds r0, r5\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r7, 0\n\ - bl ZeroMonData\n\ - bl party_compaction\n\ - bl CalculatePlayerPartyCount\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + mov r2, r9\n\ + lsls r4, r2, 24\n\ + asrs r4, 24\n\ + lsls r5, r4, 2\n\ + adds r4, r5, r4\n\ + lsls r4, 4\n\ + add r4, r8\n\ + adds r0, r4, 0\n\ + adds r1, r7, 0\n\ + movs r2, 0x50\n\ + bl memcpy\n\ + adds r0, r4, 0\n\ + bl BoxMonRestorePP\n\ + movs r0, 0x88\n\ + lsls r0, 1\n\ + add r0, r8\n\ + adds r0, r5\n\ + movs r1, 0\n\ + str r1, [r0]\n\ + adds r0, r7, 0\n\ + bl ZeroMonData\n\ + bl party_compaction\n\ + bl CalculatePlayerPartyCount\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _08041490: .4byte gSaveBlock2\n\ _08041494: .4byte gSaveBlock1\n\ _08041498: .4byte 0x00002b4c\n\ - .syntax divided\n"); + .syntax divided\n"); } void Daycare_SendPokemon_Special() { - Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); + Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData); } void sub_80417F4(u8 *); void sub_80414C0(struct BoxPokemon * daycare_data) { - u32 second_species; - if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){ - daycare_data[0] = daycare_data[1]; - ZeroBoxMonData(&daycare_data[1]); - memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); - *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); - *((u32 *)(daycare_data) + 69) = second_species; - sub_80417F4((u8 *) (daycare_data + 1) + 0x88); - } + u32 second_species; + if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){ + daycare_data[0] = daycare_data[1]; + ZeroBoxMonData(&daycare_data[1]); + memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38); + *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69); + *((u32 *)(daycare_data) + 69) = second_species; + sub_80417F4((u8 *) (daycare_data + 1) + 0x88); + } } u8 TryIncrementMonLevel(struct Pokemon *); @@ -251,138 +251,138 @@ extern u16 word_2024E82; void sub_804151C(struct Pokemon * mon) { - s32 i; - u8 r6; - u16 temp; + s32 i; + u8 r6; + u16 temp; - for(i = 0; i < 100; i++){ - if(TryIncrementMonLevel(mon) == FALSE) goto end; + for(i = 0; i < 100; i++){ + if(TryIncrementMonLevel(mon) == FALSE) goto end; - r6 = 1; - while((temp = sub_803B7C8(mon, r6)) != 0){ - r6 = 0; - if(temp == 0xffff){ - DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); - } - } - } + r6 = 1; + while((temp = sub_803B7C8(mon, r6)) != 0){ + r6 = 0; + if(temp == 0xffff){ + DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82); + } + } + } - end: + end: - CalculateMonStats(mon); + CalculateMonStats(mon); } __attribute__((naked)) u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){ - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r9\n\ - mov r6, r8\n\ - push {r6,r7}\n\ - sub sp, 0x68\n\ - adds r5, r0, 0\n\ - lsls r1, 24\n\ - lsrs r4, r1, 24\n\ - lsls r7, r4, 2\n\ - adds r0, r7, r4\n\ - lsls r0, 4\n\ - adds r6, r5, r0\n\ - ldr r1, _08041640 @ =gStringVar1\n\ - adds r0, r6, 0\n\ - bl GetBoxMonNick\n\ - adds r0, r6, 0\n\ - movs r1, 0xB\n\ - bl GetBoxMonData\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - mov r9, r0\n\ - adds r0, r6, 0\n\ - mov r1, sp\n\ - bl sub_803B4B4\n\ - mov r0, sp\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - cmp r0, 0x64\n\ - beq _080415D8\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl GetMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r1, r5, r2\n\ - adds r1, r7\n\ - ldr r1, [r1]\n\ - adds r0, r1\n\ - str r0, [sp, 0x64]\n\ - add r2, sp, 0x64\n\ - mov r0, sp\n\ - movs r1, 0x19\n\ - bl SetMonData\n\ - mov r0, sp\n\ - bl sub_804151C\n\ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r9\n\ + mov r6, r8\n\ + push {r6,r7}\n\ + sub sp, 0x68\n\ + adds r5, r0, 0\n\ + lsls r1, 24\n\ + lsrs r4, r1, 24\n\ + lsls r7, r4, 2\n\ + adds r0, r7, r4\n\ + lsls r0, 4\n\ + adds r6, r5, r0\n\ + ldr r1, _08041640 @ =gStringVar1\n\ + adds r0, r6, 0\n\ + bl GetBoxMonNick\n\ + adds r0, r6, 0\n\ + movs r1, 0xB\n\ + bl GetBoxMonData\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + mov r9, r0\n\ + adds r0, r6, 0\n\ + mov r1, sp\n\ + bl sub_803B4B4\n\ + mov r0, sp\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + cmp r0, 0x64\n\ + beq _080415D8\n\ + mov r0, sp\n\ + movs r1, 0x19\n\ + bl GetMonData\n\ + movs r2, 0x88\n\ + lsls r2, 1\n\ + adds r1, r5, r2\n\ + adds r1, r7\n\ + ldr r1, [r1]\n\ + adds r0, r1\n\ + str r0, [sp, 0x64]\n\ + add r2, sp, 0x64\n\ + mov r0, sp\n\ + movs r1, 0x19\n\ + bl SetMonData\n\ + mov r0, sp\n\ + bl sub_804151C\n\ _080415D8:\n\ - ldr r0, _08041644 @ =gPlayerParty\n\ - movs r1, 0xFA\n\ - lsls r1, 1\n\ - adds r1, r0\n\ - mov r8, r1\n\ - mov r0, r8\n\ - mov r1, sp\n\ - movs r2, 0x64\n\ - bl memcpy\n\ - lsls r0, r4, 3\n\ - subs r0, r4\n\ - lsls r1, r0, 3\n\ - adds r0, r5, r1\n\ - adds r0, 0xC0\n\ - ldrh r0, [r0]\n\ - cmp r0, 0\n\ - beq _08041610\n\ - adds r4, r1, 0\n\ - adds r4, 0xA0\n\ - adds r4, r5, r4\n\ - mov r0, r8\n\ - adds r1, r4, 0\n\ - bl GiveMailToMon2\n\ - adds r0, r4, 0\n\ - bl sub_80417F4\n\ + ldr r0, _08041644 @ =gPlayerParty\n\ + movs r1, 0xFA\n\ + lsls r1, 1\n\ + adds r1, r0\n\ + mov r8, r1\n\ + mov r0, r8\n\ + mov r1, sp\n\ + movs r2, 0x64\n\ + bl memcpy\n\ + lsls r0, r4, 3\n\ + subs r0, r4\n\ + lsls r1, r0, 3\n\ + adds r0, r5, r1\n\ + adds r0, 0xC0\n\ + ldrh r0, [r0]\n\ + cmp r0, 0\n\ + beq _08041610\n\ + adds r4, r1, 0\n\ + adds r4, 0xA0\n\ + adds r4, r5, r4\n\ + mov r0, r8\n\ + adds r1, r4, 0\n\ + bl GiveMailToMon2\n\ + adds r0, r4, 0\n\ + bl sub_80417F4\n\ _08041610:\n\ - bl party_compaction\n\ - adds r0, r6, 0\n\ - bl ZeroBoxMonData\n\ - movs r2, 0x88\n\ - lsls r2, 1\n\ - adds r0, r5, r2\n\ - adds r0, r7\n\ - movs r1, 0\n\ - str r1, [r0]\n\ - adds r0, r5, 0\n\ - bl sub_80414C0\n\ - bl CalculatePlayerPartyCount\n\ - mov r0, r9\n\ - add sp, 0x68\n\ - pop {r3,r4}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + bl party_compaction\n\ + adds r0, r6, 0\n\ + bl ZeroBoxMonData\n\ + movs r2, 0x88\n\ + lsls r2, 1\n\ + adds r0, r5, r2\n\ + adds r0, r7\n\ + movs r1, 0\n\ + str r1, [r0]\n\ + adds r0, r5, 0\n\ + bl sub_80414C0\n\ + bl CalculatePlayerPartyCount\n\ + mov r0, r9\n\ + add sp, 0x68\n\ + pop {r3,r4}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _08041640: .4byte gStringVar1\n\ _08041644: .4byte gPlayerParty\n\ - .syntax divided"); + .syntax divided"); } extern u8 gSpecialVar_0x8004; u16 sub_8041648() { - return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); + return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004); } u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){ - struct BoxPokemon temp = *mon; - u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; - SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); - return GetLevelFromBoxMonExp(&temp); + struct BoxPokemon temp = *mon; + u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps; + SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp); + return GetLevelFromBoxMonExp(&temp); } -- cgit v1.2.3 From 220d6a64310dad2bc6d563d374ce979a4fb2e82a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 13:40:38 -0400 Subject: npc_reset and get image anim id functions --- asm/field_map_obj.s | 205 +--------------------------------------------------- ld_script.txt | 2 + src/field_map_obj.c | 168 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+), 203 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 4cb35a56c..8ce2ecb70 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5826,211 +5826,10 @@ sub_805FD08: @ 805FD08 strb r1, [r0] movs r0, 0 bx lr - thumb_func_end sub_805FD08 - - thumb_func_start npc_reset -npc_reset: @ 805FD18 -@ mapObject->mapobj_bit_1 = 0; -@ mapObject->mapobj_bit_6 = 0; -@ mapObject->mapobj_bit_7 = 0; -@ mapObject->mapobj_unk_1C = 0xff; -@ sprite->data1 = 0; - ldrb r3, [r0] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - movs r3, 0x41 - negs r3, r3 - ands r2, r3 - movs r3, 0x7F - ands r2, r3 - strb r2, [r0] - movs r2, 0xFF - strb r2, [r0, 0x1C] - movs r0, 0 - strh r0, [r1, 0x30] - bx lr - thumb_func_end npc_reset - - thumb_func_start FieldObjectDirectionToImageAnimId -FieldObjectDirectionToImageAnimId: @ 805FD38 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD44 @ =gUnknown_083755F4 - adds r0, r1 - ldrb r0, [r0] - bx lr .align 2, 0 -_0805FD44: .4byte gUnknown_083755F4 - thumb_func_end FieldObjectDirectionToImageAnimId - - thumb_func_start get_go_image_anim_num -get_go_image_anim_num: @ 805FD48 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD54 @ =gUnknown_083755FD - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD54: .4byte gUnknown_083755FD - thumb_func_end get_go_image_anim_num - - thumb_func_start get_go_fast_image_anim_num -get_go_fast_image_anim_num: @ 805FD58 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD64 @ =gUnknown_08375606 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD64: .4byte gUnknown_08375606 - thumb_func_end get_go_fast_image_anim_num - - thumb_func_start get_go_faster_image_anim_num -get_go_faster_image_anim_num: @ 805FD68 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD74 @ =gUnknown_0837560F - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD74: .4byte gUnknown_0837560F - thumb_func_end get_go_faster_image_anim_num - - thumb_func_start sub_805FD78 -sub_805FD78: @ 805FD78 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD84 @ =gUnknown_08375618 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD84: .4byte gUnknown_08375618 - thumb_func_end sub_805FD78 - - thumb_func_start sub_805FD88 -sub_805FD88: @ 805FD88 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD94 @ =gUnknown_08375621 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD94: .4byte gUnknown_08375621 - thumb_func_end sub_805FD88 - - thumb_func_start sub_805FD98 -sub_805FD98: @ 805FD98 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDA4 @ =gUnknown_0837562A - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDA4: .4byte gUnknown_0837562A - thumb_func_end sub_805FD98 - - thumb_func_start unref_sub_805FDA8 -unref_sub_805FDA8: @ 805FDA8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDB4 @ =gUnknown_08375633 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDB4: .4byte gUnknown_08375633 - thumb_func_end unref_sub_805FDA8 - - thumb_func_start sub_805FDB8 -sub_805FDB8: @ 805FDB8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDC4 @ =gUnknown_0837563C - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDC4: .4byte gUnknown_0837563C - thumb_func_end sub_805FDB8 - - thumb_func_start sub_805FDC8 -sub_805FDC8: @ 805FDC8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDD4 @ =gUnknown_08375645 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDD4: .4byte gUnknown_08375645 - thumb_func_end sub_805FDC8 - - thumb_func_start sub_805FDD8 -sub_805FDD8: @ 805FDD8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDE4 @ =gUnknown_0837564E - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDE4: .4byte gUnknown_0837564E - thumb_func_end sub_805FDD8 - - thumb_func_start sub_805FDE8 -sub_805FDE8: @ 805FDE8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDF4 @ =gUnknown_08375657 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDF4: .4byte gUnknown_08375657 - thumb_func_end sub_805FDE8 - - thumb_func_start sub_805FDF8 -sub_805FDF8: @ 805FDF8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE04 @ =gUnknown_08375660 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE04: .4byte gUnknown_08375660 - thumb_func_end sub_805FDF8 - - thumb_func_start sub_805FE08 -sub_805FE08: @ 805FE08 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE14 @ =gUnknown_08375669 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE14: .4byte gUnknown_08375669 - thumb_func_end sub_805FE08 + thumb_func_end sub_805FD08 - thumb_func_start get_run_image_anim_num -get_run_image_anim_num: @ 805FE18 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE24 @ =gUnknown_08375672 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE24: .4byte gUnknown_08375672 - thumb_func_end get_run_image_anim_num + .section .text_805fd18 thumb_func_start sub_805FE28 sub_805FE28: @ 805FE28 diff --git a/ld_script.txt b/ld_script.txt index be5c78907..62c8ae3fe 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,6 +92,8 @@ SECTIONS { src/field_player_avatar.o(.text); src/field_map_obj.o(.text); asm/field_map_obj.o(.text); + src/field_map_obj.o(.text_b); + asm/field_map_obj.o(.text_805fd18); src/field_ground_effect.o(.text); asm/field_ground_effect.o(.text); src/field_map_obj_helpers.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index c31db8a4b..7e75d0ac1 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2112,3 +2112,171 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) mapObject->mapobj_bit_1 = 0; return 0; } + +void FieldObjectCB_BerryTree(struct Sprite *sprite); +void sub_805D4F4(struct Sprite *sprite); +void sub_805D634(struct Sprite *sprite); +void sub_805D774(struct Sprite *sprite); +void sub_805D8B4(struct Sprite *sprite); +void sub_805D9F4(struct Sprite *sprite); +void sub_805DB34(struct Sprite *sprite); +void sub_805DC74(struct Sprite *sprite); +void sub_805DDB4(struct Sprite *sprite); +void sub_805DEF4(struct Sprite *sprite); +void sub_805E034(struct Sprite *sprite); +void sub_805E174(struct Sprite *sprite); +void sub_805E278(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E5DC(struct Sprite *sprite); +void sub_805E668(struct Sprite *sprite); +void sub_805E6F4(struct Sprite *sprite); +void sub_805E780(struct Sprite *sprite); +void sub_805E80C(struct Sprite *sprite); +void sub_805E898(struct Sprite *sprite); +void sub_805E924(struct Sprite *sprite); +void sub_805E9B0(struct Sprite *sprite); +void sub_805EA3C(struct Sprite *sprite); +void sub_805EAC8(struct Sprite *sprite); +void sub_805EB54(struct Sprite *sprite); +void sub_805EBE0(struct Sprite *sprite); +void sub_805EC6C(struct Sprite *sprite); +void sub_805ECF8(struct Sprite *sprite); +void sub_805ED84(struct Sprite *sprite); +void sub_805EE10(struct Sprite *sprite); +void sub_805EE9C(struct Sprite *sprite); +void sub_805EF28(struct Sprite *sprite); +void sub_805EFB4(struct Sprite *sprite); +void sub_805F040(struct Sprite *sprite); +void sub_805F0CC(struct Sprite *sprite); +void sub_805F158(struct Sprite *sprite); +void sub_805F1E4(struct Sprite *sprite); +void sub_805F270(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void FieldObjectCB_TreeDisguise(struct Sprite *sprite); +void FieldObjectCB_MountainDisguise(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void FieldObjectCB_Hidden1(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC70(struct Sprite *sprite); + +asm(".section .text_b\n"); + +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 0; + mapObject->mapobj_bit_6 = 0; + mapObject->mapobj_bit_7 = 0; + mapObject->mapobj_unk_1C = 0xff; + sprite->data1 = 0; +} + +extern const u8 gUnknown_083755F4[9]; +extern const u8 gUnknown_083755FD[9]; +extern const u8 gUnknown_08375606[9]; +extern const u8 gUnknown_0837560F[9]; +extern const u8 gUnknown_08375618[9]; +extern const u8 gUnknown_08375621[9]; +extern const u8 gUnknown_0837562A[9]; +extern const u8 gUnknown_08375633[9]; +extern const u8 gUnknown_0837563C[9]; +extern const u8 gUnknown_08375645[9]; +extern const u8 gUnknown_0837564E[9]; +extern const u8 gUnknown_08375657[9]; +extern const u8 gUnknown_08375660[9]; +extern const u8 gUnknown_08375669[9]; +extern const u8 gUnknown_08375672[9]; + +u8 FieldObjectDirectionToImageAnimId(u8 direction) +{ + return gUnknown_083755F4[direction]; +} + +u8 get_go_image_anim_num(u8 direction) +{ + return gUnknown_083755FD[direction]; +} + +u8 get_go_fast_image_anim_num(u8 direction) +{ + return gUnknown_08375606[direction]; +} + +u8 get_go_faster_image_anim_num(u8 direction) +{ + return gUnknown_0837560F[direction]; +} + +u8 sub_805FD78(u8 direction) +{ + return gUnknown_08375618[direction]; +} + +u8 sub_805FD88(u8 direction) +{ + return gUnknown_08375621[direction]; +} + +u8 sub_805FD98(u8 direction) +{ + return gUnknown_0837562A[direction]; +} + +u8 unref_sub_805FDA8(u8 direction) +{ + return gUnknown_08375633[direction]; +} + +u8 sub_805FDB8(u8 direction) +{ + return gUnknown_0837563C[direction]; +} + +u8 sub_805FDC8(u8 direction) +{ + return gUnknown_08375645[direction]; +} + +u8 sub_805FDD8(u8 direction) +{ + return gUnknown_0837564E[direction]; +} + +u8 sub_805FDE8(u8 direction) +{ + return gUnknown_08375657[direction]; +} + +u8 sub_805FDF8(u8 direction) +{ + return gUnknown_08375660[direction]; +} + +u8 sub_805FE08(u8 direction) +{ + return gUnknown_08375669[direction]; +} + +u8 get_run_image_anim_num(u8 direction) +{ + return gUnknown_08375672[direction]; +} -- cgit v1.2.3 From 619da0f339c4d529de919d0b73b747fa16127d37 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 19:46:04 +0200 Subject: PlaySE renaming after rebase --- asm/battle_1.s | 2 +- asm/battle_10.s | 4 +- asm/battle_2.s | 2 +- asm/battle_4.s | 34 +++++++-------- asm/battle_5.s | 38 ++++++++--------- asm/battle_6.s | 4 +- asm/battle_7.s | 2 +- asm/battle_8.s | 4 +- asm/battle_811DA74.s | 4 +- asm/battle_anim_80CA710.s | 34 +++++++-------- asm/battle_anim_81258BC.s | 26 +++++------ asm/battle_anim_812C144.s | 18 ++++---- asm/battle_anim_8137220.s | 12 +++--- asm/battle_anim_813F0F4.s | 22 +++++----- asm/battle_transition.s | 2 +- asm/berry_blender.s | 30 ++++++------- asm/cable_club.s | 4 +- asm/choose_party.s | 30 ++++++------- asm/contest.s | 60 +++++++++++++------------- asm/contest_link_80C2020.s | 6 +-- asm/daycare.s | 4 +- asm/decoration.s | 24 +++++------ asm/easy_chat.s | 20 ++++----- asm/egg_hatch.s | 10 ++--- asm/evolution_graphics.s | 10 ++--- asm/evolution_scene.s | 24 +++++------ asm/field_effect.s | 22 +++++----- asm/field_effect_helpers.s | 4 +- asm/field_fadetransition.s | 14 +++--- asm/field_specials.s | 16 +++---- asm/field_tasks.s | 8 ++-- asm/field_weather.s | 12 +++--- asm/fldeff_80C5CD4.s | 40 ++++++++--------- asm/fldeff_flash.s | 2 +- asm/hall_of_fame.s | 4 +- asm/item_menu.s | 82 +++++++++++++++++------------------ asm/learn_move.s | 14 +++--- asm/menu_helpers.s | 4 +- asm/mon_markings.s | 8 ++-- asm/party_menu.s | 52 +++++++++++----------- asm/player_pc.s | 20 ++++----- asm/pokeball.s | 20 ++++----- asm/pokeblock.s | 20 ++++----- asm/pokedex.s | 50 +++++++++++----------- asm/pokedex_area_screen.s | 4 +- asm/pokemon_menu.s | 34 +++++++-------- asm/pokemon_storage_system.s | 88 +++++++++++++++++++------------------- asm/pokemon_summary_screen.s | 22 +++++----- asm/pokenav.s | 90 +++++++++++++++++++-------------------- asm/reset_rtc_screen.s | 12 +++--- asm/rotating_gate.s | 4 +- asm/roulette.s | 6 +-- asm/secret_base.s | 20 ++++----- asm/shop.s | 16 +++---- asm/slot_machine.s | 12 +++--- asm/sound_check_menu.s | 6 +-- asm/trade.s | 52 +++++++++++----------- asm/trader.s | 8 ++-- asm/use_pokeblock.s | 8 ++-- include/sound.h | 8 ++-- src/battle_anim.c | 14 +++--- src/battle_interface.c | 8 ++-- src/battle_party_menu.c | 16 +++---- src/berry_tag_screen.c | 4 +- src/bike.c | 2 +- src/braille_puzzles.c | 8 ++-- src/cable_club.c | 4 +- src/clear_save_data_menu.c | 4 +- src/field_control_avatar.c | 8 ++-- src/field_player_avatar.c | 20 ++++----- src/field_special_scene.c | 8 ++-- src/fldeff_cut.c | 4 +- src/fldeff_softboiled.c | 2 +- src/fldeff_sweetscent.c | 2 +- src/intro.c | 2 +- src/item_use.c | 8 ++-- src/link.c | 4 +- src/main_menu.c | 18 ++++---- src/menu.c | 24 +++++------ src/mystery_event_menu.c | 18 ++++---- src/naming_screen.c | 10 ++--- src/party_menu.c | 4 +- src/player_pc.c | 36 ++++++++-------- src/pokedex.c | 78 ++++++++++++++++----------------- src/record_mixing.c | 8 ++-- src/rom4.c | 8 ++-- src/rom6.c | 2 +- src/scrcmd.c | 4 +- src/script_menu.c | 6 +-- src/script_pokemon_util_80F99CC.c | 8 ++-- src/shop.c | 8 ++-- src/sound.c | 8 ++-- src/start_menu.c | 12 +++--- src/starter_choose.c | 2 +- src/text.c | 12 +++--- src/trainer_card.c | 2 +- src/wallclock.c | 4 +- 97 files changed, 801 insertions(+), 801 deletions(-) diff --git a/asm/battle_1.s b/asm/battle_1.s index 564644388..44d0b245f 100644 --- a/asm/battle_1.s +++ b/asm/battle_1.s @@ -1361,7 +1361,7 @@ _0800E148: bl PrintLinkBattleWinLossTie _0800E154: movs r0, 0x78 - bl PlaySoundEffect + bl PlaySE mov r0, r9 bl DestroyTask ldr r4, _0800E224 @ =gSprites diff --git a/asm/battle_10.s b/asm/battle_10.s index fc32aa7c7..f7844a25a 100644 --- a/asm/battle_10.s +++ b/asm/battle_10.s @@ -3005,7 +3005,7 @@ _080399A8: strb r0, [r3, 0x4] movs r0, 0x10 movs r1, 0x3F - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r2, _080399EC @ =gSprites ldr r1, _080399F0 @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -3953,7 +3953,7 @@ _0803A0E8: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning bl dp01_tbl4_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_2.s b/asm/battle_2.s index dbd4cc15f..cff6efe06 100644 --- a/asm/battle_2.s +++ b/asm/battle_2.s @@ -5326,7 +5326,7 @@ bs8_exit_by_flight: @ 8014F80 ldrb r0, [r0] strb r0, [r2] movs r0, 0x11 - bl PlaySoundEffect + bl PlaySE ldr r0, _08014FB4 @ =gUnknown_02024A68 ldrb r0, [r0] strb r0, [r4] diff --git a/asm/battle_4.s b/asm/battle_4.s index b1e0d342e..0581d1e7d 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -15788,7 +15788,7 @@ _08023B74: cmp r0, 0 beq _08023B9A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -15805,7 +15805,7 @@ _08023B9A: cmp r0, 0 bne _08023BC0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -15818,7 +15818,7 @@ _08023BC0: cmp r0, 0 beq _08023C0C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08023C00 @ =gUnknown_02024D1E ldrb r4, [r0, 0x1] cmp r4, 0 @@ -15850,7 +15850,7 @@ _08023C0C: b _08023E5C _08023C16: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _08023C1C: ldr r0, _08023C28 @ =0x02000000 ldr r1, _08023C2C @ =0x0001601a @@ -16162,7 +16162,7 @@ _08023EA8: cmp r0, 0 beq _08023ECE movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -16179,7 +16179,7 @@ _08023ECE: cmp r0, 0 bne _08023EF4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -16192,7 +16192,7 @@ _08023EF4: cmp r0, 0 beq _08023F4C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08023F30 @ =gUnknown_02024D1E ldrb r0, [r0, 0x1] cmp r0, 0 @@ -16231,7 +16231,7 @@ _08023F4C: cmp r0, 0 beq _08023F78 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r3, _08023F80 @ =gUnknown_02024C10 ldr r2, [r3] ldrb r1, [r2, 0x1] @@ -17094,7 +17094,7 @@ _08024616: cmp r0, 0 beq _0802463A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0 strb r0, [r5, 0x1] @@ -17111,7 +17111,7 @@ _0802463A: cmp r0, 0 bne _08024660 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -17137,7 +17137,7 @@ _0802467C: beq _08024696 _08024684: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8023AD8 ldr r1, _0802469C @ =gUnknown_02024C10 ldr r0, [r1] @@ -17695,7 +17695,7 @@ _08024AF4: b _08024C38 _08024AFE: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08024B98 @ =gStringVar4 ldr r1, _08024B9C @ =gUnknown_08400D9F bl StringCopy @@ -17818,7 +17818,7 @@ _08024C04: cmp r0, 0 beq _08024C38 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 str r0, [sp] movs r0, 0xB @@ -32047,7 +32047,7 @@ _0802BCEC: cmp r0, 0 beq _0802BD10 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -32064,7 +32064,7 @@ _0802BD10: cmp r0, 0 bne _0802BD36 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -32077,7 +32077,7 @@ _0802BD36: cmp r0, 0 beq _0802BD68 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0802BD64 @ =gUnknown_02024D1E ldrb r0, [r1, 0x1] cmp r0, 0 @@ -32099,7 +32099,7 @@ _0802BD68: b _0802BEDA _0802BD72: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0802BD80 @ =gUnknown_02024D1E _0802BD7A: movs r0, 0x4 diff --git a/asm/battle_5.s b/asm/battle_5.s index 66e1412ce..01541c120 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -189,7 +189,7 @@ sub_802C098: @ 802C098 cmp r0, 0 beq _0802C13E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_814A7FC ldr r1, _0802C108 @ =gUnknown_02024E60 ldrb r0, [r4] @@ -252,7 +252,7 @@ _0802C13E: b _0802C2AC _0802C158: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -280,7 +280,7 @@ _0802C178: b _0802C2AC _0802C192: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -324,7 +324,7 @@ _0802C1D0: bne _0802C2AC _0802C1E8: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -392,7 +392,7 @@ _0802C218: bl AddBagItem _0802C278: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 movs r1, 0xC movs r2, 0 @@ -486,7 +486,7 @@ _0802C32E: beq _0802C3A8 bl sub_814A7FC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _0802C394 @ =gSprites ldr r1, _0802C398 @ =gUnknown_02024BE0 ldr r4, _0802C388 @ =gUnknown_03004344 @@ -532,7 +532,7 @@ _0802C3A8: cmp r0, 0 beq _0802C41C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _0802C400 @ =gSprites ldr r1, _0802C404 @ =gUnknown_02024BE0 ldr r5, _0802C408 @ =gUnknown_03004344 @@ -583,7 +583,7 @@ _0802C41C: b _0802C540 _0802C426: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _0802C458 @ =gSprites ldr r1, _0802C45C @ =gUnknown_02024BE0 ldr r3, _0802C460 @ =gUnknown_03004344 @@ -724,7 +724,7 @@ _0802C540: b _0802C658 _0802C54A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _0802C57C @ =gSprites ldr r1, _0802C580 @ =gUnknown_02024BE0 ldr r3, _0802C584 @ =gUnknown_03004344 @@ -902,7 +902,7 @@ sub_802C68C: @ 802C68C b _0802C864 _0802C6B2: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0802C6F0 @ =gUnknown_02024E64 ldrb r0, [r7] adds r0, r1 @@ -1114,7 +1114,7 @@ _0802C864: beq _0802C8A4 bl sub_814A7FC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0802C898 @ =gUnknown_030042A4 strh r4, [r0] ldr r1, _0802C89C @ =gUnknown_030042A0 @@ -1242,7 +1242,7 @@ _0802C944: _0802C976: strb r0, [r1] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r7] adds r0, r4 ldrb r0, [r0] @@ -1361,7 +1361,7 @@ sub_802CA60: @ 802CA60 b _0802CE78 _0802CA7A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0802CDF0 @ =gUnknown_02024E64 mov r10, r0 ldr r1, _0802CDF4 @ =gUnknown_02024A60 @@ -1867,7 +1867,7 @@ _0802CE78: cmp r0, 0 beq _0802CEF0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0802CF34 @ =gUnknown_03004344 ldrb r0, [r0] bl nullsub_7 @@ -1955,7 +1955,7 @@ _0802CF4E: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0802CF7C @ =gUnknown_02024E64 ldr r0, _0802CF80 @ =gUnknown_02024A60 ldrb r0, [r0] @@ -2022,7 +2022,7 @@ _0802CFE2: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0802D010 @ =gUnknown_02024E64 ldr r0, _0802D014 @ =gUnknown_02024A60 ldrb r0, [r0] @@ -2082,7 +2082,7 @@ _0802D066: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0802D094 @ =gUnknown_02024E64 ldr r0, _0802D098 @ =gUnknown_02024A60 ldrb r0, [r0] @@ -2149,7 +2149,7 @@ _0802D0FA: eors r0, r1 strb r0, [r4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0802D128 @ =gUnknown_02024E64 ldr r0, _0802D12C @ =gUnknown_02024A60 ldrb r0, [r0] @@ -3395,7 +3395,7 @@ sub_802DA9C: @ 802DA9C mov r0, r10 bl sub_8043D84 movs r0, 0x21 - bl PlaySoundEffect + bl PlaySE ldr r0, _0802DB68 @ =sub_802DB6C mov r1, r8 str r0, [r1] diff --git a/asm/battle_6.s b/asm/battle_6.s index dd25250ce..f277fb7f2 100644 --- a/asm/battle_6.s +++ b/asm/battle_6.s @@ -3111,7 +3111,7 @@ _0802FEC8: movs r1, 0x40 negs r1, r1 movs r0, 0x10 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r2, _0802FF4C @ =gSprites ldr r3, _0802FF50 @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -4628,7 +4628,7 @@ _08030BEC: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning bl dp01_tbl1_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_7.s b/asm/battle_7.s index 31d994160..593a5bbb1 100644 --- a/asm/battle_7.s +++ b/asm/battle_7.s @@ -2302,7 +2302,7 @@ sub_80324F8: @ 80324F8 cmp r0, 0 bne _0803255A movs r0, 0x5A - bl PlaySoundEffect + bl PlaySE _0803255A: ldrb r0, [r4] orrs r0, r5 diff --git a/asm/battle_8.s b/asm/battle_8.s index fc16eee0c..0e4925dfb 100644 --- a/asm/battle_8.s +++ b/asm/battle_8.s @@ -3272,7 +3272,7 @@ _0803507C: strb r0, [r3, 0x4] movs r0, 0x10 movs r1, 0x3F - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r2, _080350C0 @ =gSprites ldr r1, _080350C4 @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -4513,7 +4513,7 @@ _08035A34: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning bl sub_80334EC pop {r4} pop {r0} diff --git a/asm/battle_811DA74.s b/asm/battle_811DA74.s index 82c466918..4190b2400 100644 --- a/asm/battle_811DA74.s +++ b/asm/battle_811DA74.s @@ -1985,7 +1985,7 @@ _0811FD34: movs r1, 0x40 negs r1, r1 movs r0, 0x10 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r2, _0811FDB8 @ =gSprites ldr r3, _0811FDBC @ =gUnknown_02024BE0 ldrb r0, [r5] @@ -2952,7 +2952,7 @@ _081204B4: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning bl dp01_tbl3_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s index 915236790..be80cc44f 100644 --- a/asm/battle_anim_80CA710.s +++ b/asm/battle_anim_80CA710.s @@ -2686,7 +2686,7 @@ _080CBB8A: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080CBBBE: adds r0, r4, 0 bl sub_80CB814 @@ -2704,7 +2704,7 @@ _080CBBBE: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080CBBE6: pop {r4,r5} pop {r0} @@ -5930,7 +5930,7 @@ _080CD438: lsls r1, 24 asrs r1, 24 movs r0, 0xD2 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080CD49E: ldrh r0, [r5, 0x38] movs r1, 0x1 @@ -6141,7 +6141,7 @@ _080CD5D8: lsls r1, 24 asrs r1, 24 movs r0, 0xC0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning b _080CD648 .align 2, 0 _080CD634: .4byte 0x00007fff @@ -7501,7 +7501,7 @@ sub_80CE000: @ 80CE000 lsls r1, 24 asrs r1, 24 movs r0, 0xC2 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080CE052: movs r1, 0 strh r1, [r4, 0x2E] @@ -10996,7 +10996,7 @@ _080CFAA4: lsls r1, 24 asrs r1, 24 movs r0, 0x9A - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning movs r3, 0xA ldrsh r0, [r4, r3] cmp r0, 0x2 @@ -11667,7 +11667,7 @@ sub_80D0030: @ 80D0030 lsls r1, 24 asrs r1, 24 movs r0, 0xA6 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldrh r0, [r4, 0x24] ldrh r1, [r4, 0x20] adds r0, r1 @@ -13601,7 +13601,7 @@ _080D0EF0: lsls r1, 24 asrs r1, 24 movs r0, 0xCD - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080D0F36: ldrh r0, [r4, 0x34] ldrh r2, [r4, 0x36] @@ -23646,7 +23646,7 @@ _080D5C92: movs r1, 0 ldrsb r1, [r0, r1] movs r0, 0x90 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning b _080D5CBA .align 2, 0 _080D5CB0: .4byte gUnknown_0202F7D2 @@ -26822,7 +26822,7 @@ _080D74DC: lsls r1, 24 asrs r1, 24 movs r0, 0x76 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080D74FE: movs r0, 0x12 ldrsh r3, [r4, r0] @@ -37516,7 +37516,7 @@ _080DC778: lsls r1, 24 asrs r1, 24 movs r0, 0xCB - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning adds r0, r5, 0 movs r1, 0x1 bl ChangeSpriteAffineAnim @@ -39402,7 +39402,7 @@ _080DD694: lsls r1, 24 asrs r1, 24 movs r0, 0xA2 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning b _080DD76C .align 2, 0 _080DD6A4: .4byte gSprites @@ -39488,7 +39488,7 @@ _080DD70C: lsls r1, 24 asrs r1, 24 movs r0, 0xAF - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080DD74A: ldrh r0, [r4, 0x18] subs r0, 0x1 @@ -40138,7 +40138,7 @@ _080DDC30: movs r1, 0 ldrsb r1, [r0, r1] movs r0, 0xC4 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080DDC42: pop {r4} pop {r0} @@ -40186,7 +40186,7 @@ _080DDC92: cmp r0, 0 ble _080DDC9E movs r0, 0xC4 - bl PlaySoundEffect + bl PlaySE _080DDC9E: movs r1, 0x3A ldrsh r0, [r4, r1] @@ -51751,7 +51751,7 @@ _080E3692: lsls r1, 24 asrs r1, 24 movs r0, 0xEF - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning b _080E36F4 .align 2, 0 _080E36D8: .4byte gUnknown_02024BE0 @@ -51764,7 +51764,7 @@ _080E36E0: lsls r1, 24 asrs r1, 24 movs r0, 0xF5 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _080E36F4: add sp, 0x24 pop {r3-r5} diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s index ad54d6680..86abad6f3 100644 --- a/asm/battle_anim_81258BC.s +++ b/asm/battle_anim_81258BC.s @@ -24,7 +24,7 @@ unref_sub_812AECC: @ 812AECC b _0812AF08 _0812AEEA: movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 b _0812AF0A _0812AEF4: @@ -32,7 +32,7 @@ _0812AEF4: b _0812AF08 _0812AEFA: movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE bl sub_812AF10 movs r0, 0x1 b _0812AF0A @@ -152,7 +152,7 @@ _0812AFD0: ldrh r0, [r4, 0x8] lsls r1, r5, 24 asrs r1, 24 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _0812AFEA: lsls r1, r6, 24 asrs r1, 24 @@ -194,7 +194,7 @@ sub_812B004: @ 812B004 ldrh r0, [r4, 0xA] lsls r1, 24 asrs r1, 24 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldrh r0, [r4, 0x1E] adds r0, 0x1 strh r0, [r4, 0x1E] @@ -321,7 +321,7 @@ sub_812B108: @ 812B108 ldrh r0, [r4, 0x8] movs r1, 0x1E ldrsb r1, [r4, r1] - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldrh r0, [r4, 0x10] subs r0, 0x1 strh r0, [r4, 0x10] @@ -573,7 +573,7 @@ sub_812B30C: @ 812B30C lsls r1, 24 asrs r1, 24 adds r0, r5, 0 - bl PlaySoundEffect1WithPanning + bl PlaySE1WithPanning adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4,r5} @@ -599,7 +599,7 @@ sub_812B340: @ 812B340 lsls r1, 24 asrs r1, 24 adds r0, r5, 0 - bl PlaySoundEffect2WithPanning + bl PlaySE2WithPanning adds r0, r4, 0 bl DestroyAnimVisualTask pop {r4,r5} @@ -801,7 +801,7 @@ bx_battle_menu_t6_2: @ 812B4D4 cmp r0, 0 beq _0812B546 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_814A7FC ldr r1, _0812B50C @ =gUnknown_02024E60 ldr r0, _0812B510 @ =gUnknown_02024A60 @@ -863,7 +863,7 @@ _0812B546: cmp r0, 0 beq _0812B64E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -891,7 +891,7 @@ _0812B584: cmp r0, 0 bne _0812B64E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -919,7 +919,7 @@ _0812B5C0: cmp r0, 0 beq _0812B64E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -955,7 +955,7 @@ _0812B60C: cmp r0, 0 bne _0812B64E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4] adds r0, r5 ldrb r0, [r0] @@ -1857,7 +1857,7 @@ _0812BD94: orrs r0, r1 lsls r1, r3, 24 asrs r1, 24 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning bl dp01_tbl6_exec_completed pop {r4} pop {r0} diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s index 76d855b1c..28f6f9ada 100644 --- a/asm/battle_anim_812C144.s +++ b/asm/battle_anim_812C144.s @@ -1418,7 +1418,7 @@ sub_812CBB4: @ 812CBB4 lsls r1, 24 asrs r1, 24 movs r0, 0xDE - bl PlaySoundEffect1WithPanning + bl PlaySE1WithPanning b _0812CC12 _0812CBF2: ldrh r0, [r4, 0x24] @@ -2087,7 +2087,7 @@ _0812D0D4: lsls r1, 24 asrs r1, 24 movs r0, 0xBA - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning cmp r4, 0x40 beq _0812D138 ldr r5, _0812D16C @ =gSprites @@ -3738,7 +3738,7 @@ _0812DDD2: lsls r1, 24 asrs r1, 24 movs r0, 0xE4 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning b _0812DE80 _0812DDEA: mov r0, sp @@ -10844,7 +10844,7 @@ _081314A6: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r1, _081314D4 @ =0xfffff800 adds r0, r1, 0 ldrh r2, [r4, 0x1C] @@ -10917,7 +10917,7 @@ _08131538: lsls r1, 24 asrs r1, 24 movs r0, 0x7D - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning adds r0, r6, 0 bl DestroyAnimVisualTask _0813155A: @@ -11014,7 +11014,7 @@ _081315F8: lsls r1, 24 asrs r1, 24 movs r0, 0xCD - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning movs r0, 0 strh r0, [r4, 0x26] b _081316B0 @@ -11043,7 +11043,7 @@ _0813161C: lsls r1, 24 asrs r1, 24 movs r0, 0xCD - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning strh r5, [r4, 0x30] strh r5, [r4, 0x26] b _081316B0 @@ -11087,7 +11087,7 @@ _0813168C: lsls r1, 24 asrs r1, 24 movs r0, 0xC0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning movs r0, 0 strh r0, [r4, 0x30] _081316B0: @@ -12123,7 +12123,7 @@ _08131ECA: lsls r1, 24 asrs r1, 24 movs r0, 0x7A - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r0, _08131F54 @ =gBattleAnimEnemyMonIndex ldrb r0, [r0] movs r1, 0x1 diff --git a/asm/battle_anim_8137220.s b/asm/battle_anim_8137220.s index aebf29c5b..134e18e6f 100644 --- a/asm/battle_anim_8137220.s +++ b/asm/battle_anim_8137220.s @@ -135,7 +135,7 @@ _0813730E: cmp r4, 0 bne _08137410 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 movs r1, 0 movs r2, 0 @@ -158,7 +158,7 @@ _08137344: cmp r4, 0 bne _08137410 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 movs r1, 0 b _0813737E @@ -206,7 +206,7 @@ _081373AC: cmp r0, 0 bne _08137410 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl nullsub_8 movs r0, 0x1 @@ -233,7 +233,7 @@ _081373E8: cmp r0, 0 bne _08137410 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_814A7FC movs r0, 0x1 movs r1, 0x1 @@ -4063,7 +4063,7 @@ _081393B2: bne _081393DE bl sub_814A7FC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r2, 0x80 lsls r2, 1 movs r0, 0x1 @@ -4447,7 +4447,7 @@ sub_8139680: @ 8139680 ldrb r1, [r1] lsls r1, 8 orrs r0, r1 - bl PlaySoundEffect + bl PlaySE bl dp01_tbl5_exec_completed pop {r0} bx r0 diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s index 3b821c13a..25ac4470e 100644 --- a/asm/battle_anim_813F0F4.s +++ b/asm/battle_anim_813F0F4.s @@ -1479,7 +1479,7 @@ sub_813FCBC: @ 813FCBC bne _0813FD16 movs r0, 0x3D movs r1, 0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r0, _0813FD24 @ =gTasks lsls r4, r5, 2 adds r4, r5 @@ -1737,7 +1737,7 @@ sub_813FEC8: @ 813FEC8 cmp r0, 0xB bne _0813FEFA movs r0, 0x3C - bl PlaySoundEffect + bl PlaySE _0813FEFA: movs r1, 0x8 ldrsh r0, [r5, r1] @@ -1970,19 +1970,19 @@ _081400BC: b _081400DA _081400C2: movs r0, 0x38 - bl PlaySoundEffect + bl PlaySE b _0814010E _081400CA: movs r0, 0x39 - bl PlaySoundEffect + bl PlaySE b _0814010E _081400D2: movs r0, 0x3A - bl PlaySoundEffect + bl PlaySE b _0814010E _081400DA: movs r0, 0x3B - bl PlaySoundEffect + bl PlaySE b _0814010E _081400E2: movs r2, 0x38 @@ -2071,7 +2071,7 @@ sub_8140158: @ 8140158 ldr r0, _0814019C @ =sub_81401A0 str r0, [r4, 0x1C] movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE _08140190: pop {r4,r5} pop {r0} @@ -2399,7 +2399,7 @@ _081403FC: bl StartSpriteAffineAnim _08140404: movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE _0814040A: pop {r4,r5} pop {r0} @@ -2468,7 +2468,7 @@ sub_8140454: @ 8140454 bl sub_8043EB4 bl m4aMPlayAllStop ldr r0, _0814048C @ =0x00000173 - bl PlaySoundEffect + bl PlaySE b _081404CC .align 2, 0 _08140484: .4byte gBattleAnimEnemyMonIndex @@ -3032,7 +3032,7 @@ _081408B6: strh r7, [r0, 0x10] strh r5, [r0, 0x26] movs r0, 0xF - bl PlaySoundEffect + bl PlaySE ldr r0, _08140924 @ =gMain ldr r1, _08140928 @ =0x0000043d adds r0, r1 @@ -5258,7 +5258,7 @@ _08141A82: lsls r1, 24 asrs r1, 24 movs r0, 0x66 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning _08141A8C: ldr r1, _08141AC4 @ =gSprites adds r0, r4, r5 diff --git a/asm/battle_transition.s b/asm/battle_transition.s index 44c38b70f..a4b4d1666 100644 --- a/asm/battle_transition.s +++ b/asm/battle_transition.s @@ -3269,7 +3269,7 @@ _0811C39E: ldrsh r0, [r4, r1] bl sub_811CA28 movs r0, 0x68 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r5] adds r0, 0x1 ldrb r1, [r5] diff --git a/asm/berry_blender.s b/asm/berry_blender.s index 9e2ef88ba..666882c04 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -584,7 +584,7 @@ sub_804E738: @ 804E738 b _0804E786 _0804E780: movs r0, 0x74 - bl PlaySoundEffect + bl PlaySE _0804E786: ldrh r0, [r4, 0x30] strh r0, [r4, 0x20] @@ -2343,7 +2343,7 @@ _0804F636: strb r1, [r0] bl sub_804F238 movs r0, 0x2B - bl PlaySoundEffect + bl PlaySE mov r2, r8 ldr r0, [r2] b _0804F710 @@ -2411,7 +2411,7 @@ _0804F650: movs r0, 0 str r0, [r1] movs r0, 0x34 - bl PlaySoundEffect + bl PlaySE bl BuyMenuDrawFieldObjects _0804F6D6: mov r1, r8 @@ -2543,7 +2543,7 @@ _0804F7D6: adds r0, r4, 0 bl PlayBGM movs r0, 0x35 - bl PlaySoundEffect + bl PlaySE bl sub_804E290 _0804F7E6: bl RunTasks @@ -3152,7 +3152,7 @@ sub_804FC48: @ 804FC48 ldr r0, _0804FCD0 @ =sub_8051684 str r0, [r4] movs r0, 0x28 - bl PlaySoundEffect + bl PlaySE b _0804FD18 .align 2, 0 _0804FCBC: .4byte gSpriteTemplate_821645C @@ -3173,7 +3173,7 @@ _0804FCD4: movs r1, 0 bl StartSpriteAnim movs r0, 0x1F - bl PlaySoundEffect + bl PlaySE b _0804FD18 .align 2, 0 _0804FCF4: .4byte 0x00005432 @@ -3190,7 +3190,7 @@ _0804FCFC: movs r1, 0x1 bl StartSpriteAnim movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE _0804FD18: bl sub_805156C pop {r3} @@ -5059,7 +5059,7 @@ _08050B58: cmp r0, 0 beq _08050B76 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _08050B76: movs r0, 0 bl sub_80508D4 @@ -5079,7 +5079,7 @@ _08050B88: cmp r0, 0x1 beq _08050BD4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE b _08050BD4 .align 2, 0 _08050BA4: .4byte gUnknown_03004854 @@ -5089,7 +5089,7 @@ _08050BA8: cmp r0, 0 beq _08050BB8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE b _08050C82 _08050BB8: movs r0, 0x2 @@ -5099,7 +5099,7 @@ _08050BB8: b _08050CB6 _08050BC2: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08050BDC @ =gUnknown_03004854 ldr r1, [r0] adds r1, 0x6F @@ -5625,7 +5625,7 @@ _08051004: cmp r0, 0 beq _080510C4 movs r0, 0x37 - bl PlaySoundEffect + bl PlaySE ldr r0, _0805101C @ =gUnknown_03004854 ldr r1, [r0] b _080510AC @@ -6680,7 +6680,7 @@ _08051838: adds r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x38 - bl PlaySoundEffect + bl PlaySE b _080518BE _08051858: ldrh r0, [r4, 0x32] @@ -6773,7 +6773,7 @@ _080518E8: adds r0, 0x1 strh r0, [r4, 0x2E] movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE b _0805193C _08051908: ldrh r0, [r4, 0x32] @@ -8239,7 +8239,7 @@ _0805247E: cmp r0, 0 beq _080524AE movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080524A0 @ =gUnknown_03004854 ldr r1, [r0] _08052494: diff --git a/asm/cable_club.s b/asm/cable_club.s index 2fde06252..7e5d19c24 100644 --- a/asm/cable_club.s +++ b/asm/cable_club.s @@ -399,7 +399,7 @@ sub_8082F68: @ 8082F68 cmp r0, 0x1 bne _08082FCC movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE ldr r0, _08082FC4 @ =gUnknown_081A4932 bl ShowFieldAutoScrollMessage ldr r0, _08082FC8 @ =sub_8082FEC @@ -410,7 +410,7 @@ _08082FC4: .4byte gUnknown_081A4932 _08082FC8: .4byte sub_8082FEC _08082FCC: movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE ldr r0, _08082FE4 @ =gUnknown_081A49B6 bl ShowFieldAutoScrollMessage ldr r0, _08082FE8 @ =sub_80831F8 diff --git a/asm/choose_party.s b/asm/choose_party.s index 1b8dfca6e..25122e4ef 100644 --- a/asm/choose_party.s +++ b/asm/choose_party.s @@ -630,7 +630,7 @@ sub_81222B0: @ 81222B0 _081222DC: .4byte gPaletteFade _081222E0: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_806CA38 ldr r1, _08122320 @ =gLastFieldPokeMenuOpened @@ -679,7 +679,7 @@ _0812234C: .4byte gTasks _08122350: .4byte sub_81224A8 _08122354: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8121E58 movs r0, 0x1 negs r0, r0 @@ -729,7 +729,7 @@ sub_812238C: @ 812238C cmp r0, 0 beq _0812244A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -748,7 +748,7 @@ _081223D0: cmp r0, 0x3 beq _0812244A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _0812244A @@ -759,7 +759,7 @@ _081223F2: cmp r0, 0 beq _0812243C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08122430 @ =gTasks lsls r0, r7, 2 adds r0, r7 @@ -893,7 +893,7 @@ _081224FC: .4byte gTasks _08122500: .4byte sub_8122450 _08122504: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0xE movs r1, 0 bl sub_806D538 @@ -1125,7 +1125,7 @@ _081226DC: cmp r4, 0x2 bls _081226A0 movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0x14 movs r1, 0xA movs r2, 0x1D @@ -1302,7 +1302,7 @@ sub_8122838: @ 8122838 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_81227FC pop {r4} @@ -1643,7 +1643,7 @@ sub_8122AB8: @ 8122AB8 movs r1, 0x2 strb r1, [r0] movs r0, 0x78 - bl PlaySoundEffect + bl PlaySE _08122AF4: pop {r4} pop {r0} @@ -2058,7 +2058,7 @@ sub_8122E0C: @ 8122E0C _08122E34: .4byte gPaletteFade _08122E38: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_806CA38 ldr r1, _08122E70 @ =gLastFieldPokeMenuOpened @@ -2088,7 +2088,7 @@ _08122E7C: .4byte gTasks _08122E80: .4byte sub_8122EAC _08122E84: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08122EA4 @ =gLastFieldPokeMenuOpened movs r0, 0xFF strb r0, [r1] @@ -2130,7 +2130,7 @@ sub_8122EAC: @ 8122EAC cmp r0, 0 beq _08122F6A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -2149,7 +2149,7 @@ _08122EF0: cmp r0, 0x3 beq _08122F6A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _08122F6A @@ -2160,7 +2160,7 @@ _08122F12: cmp r0, 0 beq _08122F5C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08122F50 @ =gTasks lsls r0, r7, 2 adds r0, r7 @@ -2389,7 +2389,7 @@ sub_81230F4: @ 81230F4 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x14 movs r1, 0xA movs r2, 0x1D diff --git a/asm/contest.s b/asm/contest.s index 3e46e2ee1..214935952 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -1000,7 +1000,7 @@ _080AB9E0: strh r0, [r4, 0xA] movs r0, 0x61 movs r1, 0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -1300,7 +1300,7 @@ sub_80ABC70: @ 80ABC70 bne _080ABCCE _080ABC88: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080ABCB4 @ =gContestPlayerMonIndex ldrb r0, [r0] bl sub_80AF59C @@ -1579,7 +1579,7 @@ _080ABEC6: beq _080ABF08 bl sub_814A7FC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080ABF00 @ =gTasks lsls r1, r7, 2 adds r1, r7 @@ -1616,7 +1616,7 @@ _080ABF24: _080ABF26: bl sub_814A904 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl sub_80AFFE0 ldr r0, _080ABF64 @ =gUnknown_03004210 @@ -1727,7 +1727,7 @@ _080AC006: cmp r6, 0x1 bls _080AC098 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE b _080AC098 .align 2, 0 _080AC03C: .4byte 0x02019204 @@ -1769,7 +1769,7 @@ _080AC068: cmp r6, 0x1 bls _080AC098 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _080AC098: add sp, 0x8 pop {r4-r7} @@ -2946,7 +2946,7 @@ _080ACAAE: cmp r0, 0 beq _080ACAC0 movs r0, 0x63 - bl PlaySoundEffect + bl PlaySE _080ACAC0: ldr r0, _080ACAD4 @ =gTasks mov r3, r8 @@ -3291,13 +3291,13 @@ _080ACD5E: cmp r0, 0 beq _080ACD7C movs r0, 0x63 - bl PlaySoundEffect + bl PlaySE b _080ACD82 .align 2, 0 _080ACD78: .4byte gUnknown_02038696 _080ACD7C: movs r0, 0x64 - bl PlaySoundEffect + bl PlaySE _080ACD82: lsls r0, r6, 3 subs r0, r6 @@ -4099,7 +4099,7 @@ _080AD420: _080AD42C: bl sub_80B1DDC movs r0, 0xDF - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl sub_80B1CBC b _080AD4CC @@ -5396,7 +5396,7 @@ sub_80ADE54: @ 80ADE54 strh r0, [r1] movs r0, 0x62 movs r1, 0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r1, _080ADEA4 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -7539,7 +7539,7 @@ _080AEF0A: beq _080AEF3A movs r0, 0x26 _080AEF2C: - bl PlaySoundEffect + bl PlaySE ldrb r1, [r5, 0x10] movs r0, 0x31 negs r0, r0 @@ -8982,7 +8982,7 @@ _080AF990: adds r0, r3, 0x1 strh r0, [r2, 0xA] movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE b _080AF9D0 _080AF9BC: ldrh r0, [r2, 0x8] @@ -8993,7 +8993,7 @@ _080AF9BC: subs r0, r3, 0x1 strh r0, [r2, 0xA] movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE _080AF9D0: ldr r3, _080AFA00 @ =gTasks lsls r0, r4, 2 @@ -9517,7 +9517,7 @@ _080AFDA2: cmp r2, 0 ble _080AFDFC movs r0, 0x60 - bl PlaySoundEffect + bl PlaySE ldr r4, _080AFDF4 @ =gMPlay_SE1 adds r0, r4, 0 bl m4aMPlayImmInit @@ -9536,7 +9536,7 @@ _080AFDF4: .4byte gMPlay_SE1 _080AFDF8: .4byte 0x0000ffff _080AFDFC: movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE _080AFE02: cmp r5, 0 bne _080AFE1C @@ -10199,7 +10199,7 @@ sub_80B02A8: @ 80B02A8 ldr r0, _080B02F0 @ =sub_80B02F4 str r0, [r4, 0x1C] movs r0, 0x18 - bl PlaySoundEffect + bl PlaySE pop {r4} pop {r0} bx r0 @@ -11431,7 +11431,7 @@ sub_80B0BC4: @ 80B0BC4 cmp r1, 0 bne _080B0C48 movs r0, 0x65 - bl PlaySoundEffect + bl PlaySE b _080B0C4E .align 2, 0 _080B0C38: .4byte gSprites @@ -11440,7 +11440,7 @@ _080B0C40: .4byte sub_80B0C5C _080B0C44: .4byte SpriteCallbackDummy _080B0C48: movs r0, 0x2 - bl PlaySoundEffect + bl PlaySE _080B0C4E: pop {r3,r4} mov r8, r3 @@ -12927,7 +12927,7 @@ _080B1758: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE b _080B18E4 .align 2, 0 _080B177C: .4byte gSprites @@ -12950,7 +12950,7 @@ _080B1788: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x1F - bl PlaySoundEffect + bl PlaySE b _080B18E4 .align 2, 0 _080B17B0: .4byte gSprites @@ -12973,7 +12973,7 @@ _080B17BC: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x1F - bl PlaySoundEffect + bl PlaySE b _080B18E4 .align 2, 0 _080B17E4: .4byte gSprites @@ -12996,7 +12996,7 @@ _080B17F0: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE b _080B18E4 .align 2, 0 _080B1818: .4byte gSprites @@ -13019,7 +13019,7 @@ _080B1824: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE b _080B18E4 .align 2, 0 _080B184C: .4byte gSprites @@ -13042,7 +13042,7 @@ _080B1858: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE b _080B18E4 .align 2, 0 _080B1880: .4byte gSprites @@ -13065,7 +13065,7 @@ _080B188C: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0xC3 - bl PlaySoundEffect + bl PlaySE b _080B18E4 .align 2, 0 _080B18B4: .4byte gSprites @@ -13088,7 +13088,7 @@ _080B18C0: orrs r0, r2 strh r0, [r1, 0x4] movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE _080B18E4: adds r2, r4, 0 ldr r4, _080B1914 @ =gSprites @@ -14175,7 +14175,7 @@ _080B20CA: adds r0, 0x11 strh r0, [r4] movs r0, 0x63 - bl PlaySoundEffect + bl PlaySE _080B2126: adds r6, 0x1 cmp r6, 0x3 @@ -14481,7 +14481,7 @@ sub_80B237C: @ 80B237C strh r0, [r1] movs r0, 0x62 movs r1, 0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r1, _080B23B4 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -14774,7 +14774,7 @@ _080B25C8: strh r0, [r4, 0xC] movs r0, 0x61 movs r1, 0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning ldr r0, _080B25E0 @ =sub_80B2508 str r0, [r4] _080B25D8: diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 90d21610f..672eb4c1a 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -3361,7 +3361,7 @@ _080C3A94: adds r0, r4, 0 bl DestroyTask movs r0, 0x18 - bl PlaySoundEffect + bl PlaySE _080C3B12: pop {r4} pop {r0} @@ -4341,13 +4341,13 @@ _080C4292: cmp r0, 0 beq _080C429E movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE _080C429E: mov r1, r10 cmp r1, 0 beq _080C42AA movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE _080C42AA: add sp, 0x8 pop {r3-r5} diff --git a/asm/daycare.s b/asm/daycare.s index 4e856516a..2944f7565 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -2270,7 +2270,7 @@ _08042768: _0804278A: bl MoveMenuCursor movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE b _08042816 .align 2, 0 _08042798: .4byte gTasks @@ -2281,7 +2281,7 @@ _0804279C: beq _080427E8 bl sub_8072DEC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r3, _080427DC @ =gLastFieldPokeMenuOpened ldr r2, _080427E0 @ =gScriptResult ldr r1, _080427E4 @ =gTasks diff --git a/asm/decoration.s b/asm/decoration.s index e71a45f08..221c749c5 100644 --- a/asm/decoration.s +++ b/asm/decoration.s @@ -168,7 +168,7 @@ Task_DecorationPCProcessMenuInput: @ 80FE2EC cmp r0, 0 beq _080FE324 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -182,7 +182,7 @@ _080FE324: cmp r0, 0 beq _080FE342 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor ldr r1, _080FE370 @ =gUnknown_020388D4 @@ -195,7 +195,7 @@ _080FE342: cmp r0, 0 beq _080FE378 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080FE374 @ =gUnknown_083EC604 ldr r0, _080FE370 @ =gUnknown_020388D4 ldrb r0, [r0] @@ -217,7 +217,7 @@ _080FE378: cmp r0, 0 beq _080FE38C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r7, 0 bl gpu_pal_decompress_alloc_tag_and_upload _080FE38C: @@ -554,7 +554,7 @@ _080FE61C: cmp r0, 0 beq _080FE640 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -568,7 +568,7 @@ _080FE640: cmp r0, 0 beq _080FE656 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _080FE720 @@ -579,7 +579,7 @@ _080FE656: cmp r0, 0 beq _080FE70C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl GetMenuCursorPos ldr r4, _080FE6C0 @ =gUnknown_020388F6 strb r0, [r4] @@ -652,7 +652,7 @@ _080FE70C: cmp r0, 0 beq _080FE720 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_80FE728 _080FE720: @@ -819,7 +819,7 @@ sub_80FE894: @ 80FE894 mov r10, r1 _080FE8C8: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE lsls r0, r5, 24 asrs r0, 24 cmp r0, 0 @@ -967,7 +967,7 @@ _080FE9EE: beq _080FEA7C bl sub_8072DEC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _080FEA44 @ =gUnknown_020388F5 ldr r1, _080FEA48 @ =gUnknown_020388F2 ldr r0, _080FEA38 @ =gUnknown_020388F4 @@ -1027,7 +1027,7 @@ _080FEA7C: beq _080FEAAC bl sub_8072DEC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080FEAB4 @ =gUnknown_083EC634 ldr r2, _080FEAB8 @ =gTasks lsls r0, r4, 2 @@ -3846,7 +3846,7 @@ _08100078: .4byte gSecretBaseText_PlaceItHere _0810007C: .4byte sub_81000A0 _08100080: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE ldr r1, _08100098 @ =gSecretBaseText_CantBePlacedHere ldr r2, _0810009C @ =sub_81006A8 adds r0, r4, 0 diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 888a13e3d..466d371a1 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -1283,7 +1283,7 @@ sub_80E6AE4: @ 80E6AE4 cmp r0, 0 beq _080E6AFE movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _080E6AFE: ldr r2, _080E6B48 @ =gMain ldrh r1, [r2, 0x2E] @@ -1293,7 +1293,7 @@ _080E6AFE: cmp r0, 0 beq _080E6BA4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r1, r4, 0 adds r1, 0x86 adds r0, r4, 0 @@ -1910,7 +1910,7 @@ sub_80E6FC8: @ 80E6FC8 cmp r0, 0 beq _080E700C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r1, 0xE2 lsls r1, 1 adds r0, r4, r1 @@ -1928,7 +1928,7 @@ _080E700C: cmp r0, 0 beq _080E7018 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _080E7018: ldr r0, _080E7054 @ =gMain ldrh r1, [r0, 0x2E] @@ -1944,7 +1944,7 @@ _080E7018: cmp r0, 0 beq _080E7090 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r1, 0xD4 lsls r1, 1 adds r0, r4, r1 @@ -2017,7 +2017,7 @@ _080E7090: beq _080E710A _080E70CA: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80E7AD4 ldr r0, _080E70E4 @ =sub_80E7218 bl sub_80E682C @@ -2255,7 +2255,7 @@ sub_80E7294: @ 80E7294 cmp r0, 0 beq _080E72DC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r1, 0xE2 lsls r1, 1 adds r0, r4, r1 @@ -2274,7 +2274,7 @@ _080E72DC: cmp r0, 0 beq _080E72E8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _080E72E8: ldr r0, _080E7304 @ =gMain ldrh r1, [r0, 0x2E] @@ -2283,7 +2283,7 @@ _080E72E8: cmp r0, 0 beq _080E730C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080E7308 @ =sub_80E7324 bl sub_80E682C b _080E731A @@ -4295,7 +4295,7 @@ _080E81F8: .4byte 0x00009c7e sub_80E81FC: @ 80E81FC push {lr} movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80E95A4 movs r0, 0 movs r1, 0 diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index b2bcc1088..2f11d4111 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -1084,7 +1084,7 @@ _08043304: cmp r0, 0xF bne _08043334 movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 movs r1, 0x1 bl StartSpriteAnim @@ -1137,7 +1137,7 @@ _0804336C: cmp r0, 0xF bne _08043398 movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim @@ -1220,7 +1220,7 @@ _08043418: cmp r0, 0xF bne _0804344C movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 movs r1, 0x2 bl StartSpriteAnim @@ -1232,7 +1232,7 @@ _0804344C: cmp r0, 0x1E bne _0804345A movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE _0804345A: pop {r4-r6} pop {r0} @@ -1306,7 +1306,7 @@ _080434C0: cmp r4, 0 bne _080434EE movs r0, 0x71 - bl PlaySoundEffect + bl PlaySE adds r2, r5, 0 adds r2, 0x3E ldrb r0, [r2] diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s index 07cff013c..1130e085e 100644 --- a/asm/evolution_graphics.s +++ b/asm/evolution_graphics.s @@ -642,7 +642,7 @@ sub_81499A0: @ 81499A0 ldr r0, _081499EC @ =sub_81499F0 str r0, [r5] movs r0, 0x8C - bl PlaySoundEffect + bl PlaySE add sp, 0x4 pop {r4,r5} pop {r0} @@ -774,7 +774,7 @@ sub_8149AA8: @ 8149AA8 ldr r1, _08149AD8 @ =sub_8149ADC str r1, [r0] movs r0, 0xB7 - bl PlaySoundEffect + bl PlaySE pop {r4} pop {r0} bx r0 @@ -873,7 +873,7 @@ sub_8149B5C: @ 8149B5C ldr r1, _08149B8C @ =sub_8149B90 str r1, [r0] movs r0, 0x66 - bl PlaySoundEffect + bl PlaySE pop {r4} pop {r0} bx r0 @@ -1016,7 +1016,7 @@ sub_8149C50: @ 8149C50 ldr r0, _08149CAC @ =sub_8149CB0 str r0, [r5] movs r0, 0xCA - bl PlaySoundEffect + bl PlaySE add sp, 0x4 pop {r4,r5} pop {r0} @@ -1177,7 +1177,7 @@ sub_8149D8C: @ 8149D8C ldr r0, _08149DE8 @ =sub_8149DEC str r0, [r5] movs r0, 0xCA - bl PlaySoundEffect + bl PlaySE add sp, 0x4 pop {r4,r5} pop {r0} diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index d6d81080a..404270195 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1455,7 +1455,7 @@ _08112594: _081125A2: movs r0, 0xBC lsls r0, 1 - bl PlaySoundEffect + bl PlaySE ldr r0, _081125B8 @ =gTasks mov r2, r8 adds r1, r2, r7 @@ -1647,7 +1647,7 @@ _08112728: bl _08112FD0 _0811273E: movs r0, 0x21 - bl PlaySoundEffect + bl PlaySE mov r2, r8 adds r1, r2, r7 lsls r1, 3 @@ -2210,7 +2210,7 @@ _08112C0C: cmp r0, 0 beq _08112C32 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0 strb r0, [r4, 0x1] @@ -2227,7 +2227,7 @@ _08112C32: cmp r0, 0 bne _08112C58 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_6 movs r0, 0x1 strb r0, [r4, 0x1] @@ -2254,7 +2254,7 @@ _08112C58: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08112CA8 @ =gUnknown_02024D1E ldrb r2, [r0, 0x1] cmp r2, 0 @@ -2317,7 +2317,7 @@ _08112CF0: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08112D28 @ =gTasks mov r2, r8 adds r0, r2, r7 @@ -2753,7 +2753,7 @@ _081130EA: bl m4aSongNumStop movs r0, 0xBC lsls r0, 1 - bl PlaySoundEffect + bl PlaySE ldr r1, _08113108 @ =gTasks lsls r0, r7, 2 adds r0, r7 @@ -2944,7 +2944,7 @@ _08113274: bl _08113B3A _0811328A: movs r0, 0x21 - bl PlaySoundEffect + bl PlaySE _08113290: lsls r0, r7, 2 adds r0, r7 @@ -3479,7 +3479,7 @@ _0811371C: cmp r0, 0 beq _08113742 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl HBlankCB_TradeEvolutionScene movs r0, 0 strb r0, [r4, 0x1] @@ -3496,7 +3496,7 @@ _08113742: cmp r0, 0 bne _08113768 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl HBlankCB_TradeEvolutionScene movs r0, 0x1 strb r0, [r4, 0x1] @@ -3534,7 +3534,7 @@ _08113768: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _081137D0 @ =gUnknown_02024D1E ldrb r2, [r0, 0x1] cmp r2, 0 @@ -3608,7 +3608,7 @@ _08113818: movs r3, 0x2 bl sub_8002EB0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08113868 @ =gTasks mov r2, r9 adds r0, r2, r7 diff --git a/asm/field_effect.s b/asm/field_effect.s index a35d25142..2dfa491dc 100644 --- a/asm/field_effect.s +++ b/asm/field_effect.s @@ -969,7 +969,7 @@ _080860D4: subs r0, 0x1 strh r0, [r4, 0x3A] movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE _08086130: movs r1, 0x3A ldrsh r0, [r4, r1] @@ -1943,7 +1943,7 @@ sub_8086870: @ 8086870 ands r0, r2 strb r0, [r1, 0x1] movs r0, 0x2B - bl PlaySoundEffect + bl PlaySE ldrh r0, [r5, 0x8] adds r0, 0x1 strh r0, [r5, 0x8] @@ -2031,7 +2031,7 @@ _08086964: cmp r0, 0 blt _08086988 movs r0, 0xD6 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r6] movs r1, 0x8 orrs r0, r1 @@ -2253,7 +2253,7 @@ _08086AEA: strh r0, [r5, 0x8] _08086B18: movs r0, 0x50 - bl PlaySoundEffect + bl PlaySE _08086B1E: movs r0, 0 pop {r4,r5} @@ -3273,7 +3273,7 @@ sub_8087298: @ 8087298 movs r0, 0x32 bl FieldEffectStart movs r0, 0xB2 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -3625,7 +3625,7 @@ sub_8087548: @ 8087548 strb r0, [r4, 0x1] bl CameraObjectReset1 movs r0, 0xAF - bl PlaySoundEffect + bl PlaySE movs r0, 0x4 bl sub_80608A4 adds r1, r0, 0 @@ -3875,7 +3875,7 @@ _0808774C: adds r0, r4, 0 bl FieldObjectSetSpecialAnim movs r0, 0x27 - bl PlaySoundEffect + bl PlaySE _0808776C: movs r0, 0 pop {r4-r6} @@ -4528,7 +4528,7 @@ _08087C60: movs r0, 0x1 strh r0, [r4, 0xE] movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE _08087C8E: add sp, 0x8 pop {r4,r5} @@ -4799,7 +4799,7 @@ sub_8087E4C: @ 8087E4C lsrs r0, 24 strh r0, [r6, 0x26] movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE _08087EC2: pop {r4-r6} pop {r0} @@ -6461,7 +6461,7 @@ FldEff_NPCFlyOut: @ 8088B68 ldr r0, [r0] strh r0, [r2, 0x30] movs r0, 0x9E - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 pop {r4} pop {r1} @@ -6774,7 +6774,7 @@ _08088DFE: adds r0, 0x1 strh r0, [r4, 0x8] movs r0, 0x9E - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4, 0xA] bl sub_8088FC0 _08088E1C: diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s index ff48d64f7..9df9dfd8d 100644 --- a/asm/field_effect_helpers.s +++ b/asm/field_effect_helpers.s @@ -1890,7 +1890,7 @@ FldEff_Splash: @ 8127610 subs r0, 0x4 strh r0, [r3, 0x26] movs r0, 0x46 - bl PlaySoundEffect + bl PlaySE _0812769A: movs r0, 0 pop {r4-r6} @@ -2248,7 +2248,7 @@ _08127920: cmp r0, 0 bne _0812796A movs r0, 0x46 - bl PlaySoundEffect + bl PlaySE _0812796A: add sp, 0x4 pop {r4,r5} diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s index ae4ec3b38..798285a45 100644 --- a/asm/field_fadetransition.s +++ b/asm/field_fadetransition.s @@ -226,7 +226,7 @@ sub_8080B78: @ 8080B78 bl sub_8053E90 bl pal_fill_for_map_transition movs r0, 0x2E - bl PlaySoundEffect + bl PlaySE ldr r0, _08080B98 @ =task_map_chg_seq_0807E2CC movs r1, 0xA bl CreateTask @@ -616,7 +616,7 @@ sub_8080E88: @ 8080E88 bl fade_8080918 bl PlayRainSoundEffect movs r0, 0x9 - bl PlaySoundEffect + bl PlaySE ldr r0, _08080EB4 @ =gUnknown_0300485C ldr r1, _08080EB8 @ =mapldr_default str r1, [r0] @@ -726,7 +726,7 @@ sub_8080F68: @ 8080F68 bl sub_8053FF8 bl fade_8080918 movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE ldr r0, _08080F90 @ =task0A_fade_n_map_maybe movs r1, 0xA bl CreateTask @@ -822,7 +822,7 @@ sub_808102C: @ 808102C bl sub_8053FF8 bl fade_8080918 movs r0, 0x9 - bl PlaySoundEffect + bl PlaySE ldr r0, _0808104C @ =sub_8080FC4 movs r1, 0xA bl CreateTask @@ -864,7 +864,7 @@ _0808107E: bl fade_screen bl sub_8053FF8 movs r0, 0x9 - bl PlaySoundEffect + bl PlaySE b _080810AC _08081096: bl sub_8080E64 @@ -1016,7 +1016,7 @@ _080811A8: bl sub_8058790 lsls r0, 16 lsrs r0, 16 - bl PlaySoundEffect + bl PlaySE movs r1, 0 ldrsh r0, [r4, r1] movs r2, 0 @@ -1203,7 +1203,7 @@ sub_8081334: @ 8081334 bl fade_8080918 bl PlayRainSoundEffect movs r0, 0x9 - bl PlaySoundEffect + bl PlaySE ldr r0, _08081360 @ =gUnknown_0300485C ldr r1, _08081364 @ =sub_8080B60 str r1, [r0] diff --git a/asm/field_specials.s b/asm/field_specials.s index 906a6bf7c..63677b6a0 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -861,7 +861,7 @@ PetalburgGymSpecial1: @ 810E070 ldr r0, _0810E094 @ =gUnknown_02039259 strb r1, [r0] movs r0, 0x2C - bl PlaySoundEffect + bl PlaySE ldr r0, _0810E098 @ =Task_PetalburgGym movs r1, 0x8 bl CreateTask @@ -2159,7 +2159,7 @@ _0810E9E8: movs r0, 0 strh r0, [r1] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 movs r1, 0 movs r2, 0x1D @@ -2205,7 +2205,7 @@ _0810EA94: ldr r0, _0810EAC4 @ =gScriptResult strh r1, [r0] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_810EEDC movs r0, 0 movs r1, 0 @@ -2402,7 +2402,7 @@ sub_810EBEC: @ 810EBEC bl SetCameraPanningCallback bl sub_810ECFC movs r0, 0x59 - bl PlaySoundEffect + bl PlaySE pop {r0} bx r0 .align 2, 0 @@ -2450,7 +2450,7 @@ sub_810EC34: @ 810EC34 cmp r0, 0x17 bne _0810EC92 movs r0, 0x49 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 bl sub_810EC9C bl InstallCameraPanAheadCallback @@ -3092,7 +3092,7 @@ _0810F17A: ldrb r1, [r1] strh r1, [r0] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_810EEDC movs r0, 0 movs r1, 0 @@ -3112,7 +3112,7 @@ _0810F1AE: movs r0, 0x7F strh r0, [r1] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_810EEDC movs r0, 0 movs r1, 0 @@ -3896,7 +3896,7 @@ sub_810F758: @ 810F758 movs r0, 0 bl SetCameraPanningCallback movs r0, 0xD6 - bl PlaySoundEffect + bl PlaySE pop {r0} bx r0 .align 2, 0 diff --git a/asm/field_tasks.s b/asm/field_tasks.s index 7bb447c62..5f3e3a03f 100644 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -716,7 +716,7 @@ _0806995E: cmp r0, 0 beq _080699CE movs r0, 0x46 - bl PlaySoundEffect + bl PlaySE b _080699CE _0806998C: ldrh r0, [r4, 0xC] @@ -999,7 +999,7 @@ _08069BA4: bne _08069BB8 _08069BB2: movs r0, 0x47 - bl PlaySoundEffect + bl PlaySE _08069BB8: cmp r7, 0 beq _08069BF4 @@ -1409,7 +1409,7 @@ _08069EB6: ldrh r0, [r5, 0xA] strh r0, [r4] movs r0, 0x2A - bl PlaySoundEffect + bl PlaySE mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] @@ -1455,7 +1455,7 @@ _08069F20: ldrh r0, [r5, 0xA] strh r0, [r4] movs r0, 0x29 - bl PlaySoundEffect + bl PlaySE mov r0, sp movs r1, 0 ldrsh r0, [r0, r1] diff --git a/asm/field_weather.s b/asm/field_weather.s index a533f9a31..92d2ffab2 100644 --- a/asm/field_weather.s +++ b/asm/field_weather.s @@ -1978,7 +1978,7 @@ _0807DDA0: _0807DDA6: strb r0, [r1] adds r0, r2, 0 - bl PlaySoundEffect + bl PlaySE _0807DDAE: pop {r0} bx r0 @@ -2004,18 +2004,18 @@ PlayRainSoundEffect: @ 807DDB8 cmp r0, 0 bne _0807DDF0 movs r0, 0x56 - bl PlaySoundEffect + bl PlaySE b _0807DDF6 .align 2, 0 _0807DDE0: .4byte gUnknown_0202F7E8 _0807DDE4: .4byte 0x000006dd _0807DDE8: movs r0, 0x54 - bl PlaySoundEffect + bl PlaySE b _0807DDF6 _0807DDF0: movs r0, 0x52 - bl PlaySoundEffect + bl PlaySE _0807DDF6: pop {r0} bx r0 @@ -4930,14 +4930,14 @@ sub_807F434: @ 807F434 cmp r4, 0 beq _0807F474 movs r0, 0x57 - bl PlaySoundEffect + bl PlaySE b _0807F47A .align 2, 0 _0807F46C: .4byte gUnknown_08396FC4 _0807F470: .4byte 0x000006ed _0807F474: movs r0, 0x58 - bl PlaySoundEffect + bl PlaySE _0807F47A: ldr r0, _0807F488 @ =gUnknown_08396FC4 ldr r0, [r0] diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s index 733455e53..25ede5738 100644 --- a/asm/fldeff_80C5CD4.s +++ b/asm/fldeff_80C5CD4.s @@ -971,7 +971,7 @@ sub_80C644C: @ 80C644C push {r4,lr} adds r4, r0, 0 movs r0, 0x83 - bl PlaySoundEffect + bl PlaySE movs r0, 0 strh r0, [r4, 0x2E] ldr r0, _080C6464 @ =sub_80C6468 @@ -1148,7 +1148,7 @@ sub_80C6598: @ 80C6598 push {r4,lr} adds r4, r0, 0 movs r0, 0x9B - bl PlaySoundEffect + bl PlaySE ldr r0, _080C65BC @ =gUnknown_0202FF84 ldr r1, [r0, 0x1C] adds r2, r4, 0 @@ -1303,7 +1303,7 @@ sub_80C66BC: @ 80C66BC push {r4,lr} adds r4, r0, 0 movs r0, 0xA9 - bl PlaySoundEffect + bl PlaySE movs r0, 0 strh r0, [r4, 0x2E] ldr r0, _080C66D4 @ =sub_80C66D8 @@ -1495,7 +1495,7 @@ sub_80C683C: @ 80C683C adds r1, r4, 0 bl GetXYCoordsOneStepInFrontOfPlayer movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE ldr r0, _080C6874 @ =0x00004054 bl VarGet lsls r0, 16 @@ -1666,19 +1666,19 @@ _080C6988: b _080C69B6 _080C6998: movs r0, 0x4A - bl PlaySoundEffect + bl PlaySE b _080C69B6 _080C69A0: movs r0, 0x4B - bl PlaySoundEffect + bl PlaySE b _080C69B6 _080C69A8: movs r0, 0x4C - bl PlaySoundEffect + bl PlaySE b _080C69B6 _080C69B0: movs r0, 0x4E - bl PlaySoundEffect + bl PlaySE _080C69B6: pop {r0} bx r0 @@ -1706,7 +1706,7 @@ sub_80C69C4: @ 80C69C4 lsls r4, 16 lsrs r4, 16 movs r0, 0x4D - bl PlaySoundEffect + bl PlaySE lsls r5, 16 asrs r5, 16 lsls r4, 16 @@ -1914,35 +1914,35 @@ _080C6AF0: .4byte _080C6C18 _080C6BE0: movs r0, 0x3E - bl PlaySoundEffect + bl PlaySE b _080C6C1E _080C6BE8: movs r0, 0x3F - bl PlaySoundEffect + bl PlaySE b _080C6C1E _080C6BF0: movs r0, 0x40 - bl PlaySoundEffect + bl PlaySE b _080C6C1E _080C6BF8: movs r0, 0x41 - bl PlaySoundEffect + bl PlaySE b _080C6C1E _080C6C00: movs r0, 0x42 - bl PlaySoundEffect + bl PlaySE b _080C6C1E _080C6C08: movs r0, 0x43 - bl PlaySoundEffect + bl PlaySE b _080C6C1E _080C6C10: movs r0, 0x44 - bl PlaySoundEffect + bl PlaySE b _080C6C1E _080C6C18: movs r0, 0x45 - bl PlaySoundEffect + bl PlaySE _080C6C1E: adds r0, r4, 0 bl DestroyTask @@ -1995,7 +1995,7 @@ SpriteCB_YellowCave4Sparkle: @ 80C6C64 cmp r0, 0x8 bne _080C6C7C movs r0, 0xC3 - bl PlaySoundEffect + bl PlaySE _080C6C7C: movs r1, 0x2E ldrsh r0, [r4, r1] @@ -2239,7 +2239,7 @@ SpriteCB_SandPillar_0: @ 80C6E64 push {r4,r5,lr} adds r5, r0, 0 movs r0, 0x83 - bl PlaySoundEffect + bl PlaySE ldr r4, _080C6E90 @ =gUnknown_0202FF84 ldr r0, [r4, 0x14] ldr r1, [r4, 0x18] @@ -2500,7 +2500,7 @@ _080C7070: .4byte REG_MOSAIC DoFieldPoisonEffect: @ 80C7074 push {lr} movs r0, 0x4F - bl PlaySoundEffect + bl PlaySE ldr r0, _080C7088 @ =Task_FieldPoisonEffect movs r1, 0x50 bl CreateTask diff --git a/asm/fldeff_flash.s b/asm/fldeff_flash.s index b20cdec81..c14e9057d 100644 --- a/asm/fldeff_flash.s +++ b/asm/fldeff_flash.s @@ -72,7 +72,7 @@ _0810CC30: .4byte sub_810CC34 sub_810CC34: @ 810CC34 push {lr} movs r0, 0xCF - bl PlaySoundEffect + bl PlaySE ldr r0, _0810CC4C @ =0x00000828 bl FlagSet ldr r0, _0810CC50 @ =gUnknown_081B694A diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s index 844e6e8c4..3ad85d7cf 100644 --- a/asm/hall_of_fame.s +++ b/asm/hall_of_fame.s @@ -545,7 +545,7 @@ sub_8142274: @ 8142274 movs r0, 0x3 bl TrySavingData movs r0, 0x37 - bl PlaySoundEffect + bl PlaySE ldr r1, _081422B0 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -972,7 +972,7 @@ _081425C0: movs r1, 0xF bl sub_8143068 movs r0, 0x69 - bl PlaySoundEffect + bl PlaySE ldr r1, _08142610 @ =gTasks mov r2, r8 adds r0, r2, r4 diff --git a/asm/item_menu.s b/asm/item_menu.s index 6e1a307f6..7463663d8 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -1709,7 +1709,7 @@ sub_80A3E90: @ 80A3E90 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_16 ldr r0, _080A3EE8 @ =gTasks lsls r5, r4, 2 @@ -1753,7 +1753,7 @@ sub_80A3EF4: @ 80A3EF4 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl nullsub_16 ldr r0, _080A3F44 @ =gTasks lsls r1, r4, 2 @@ -3318,7 +3318,7 @@ sub_80A4ADC: @ 80A4ADC bl sub_80A7528 _080A4AFA: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080A4B10 @ =gUnknown_0203855C movs r0, 0x1 strb r0, [r1] @@ -3770,7 +3770,7 @@ sub_80A4E8C: @ 80A4E8C lsls r6, 24 lsrs r6, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 movs r1, 0x1 bl sub_80F979C @@ -4099,7 +4099,7 @@ _080A50F6: b _080A526A _080A5138: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_80A3F50 b _080A526A @@ -4123,7 +4123,7 @@ _080A5160: cmp r1, r0 beq _080A5188 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_80A3E90 b _080A526A @@ -4183,7 +4183,7 @@ _080A51F0: cmp r0, 0 bne _080A5264 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _080A5250 @ =gUnknown_02038560 movs r1, 0 ldrsb r1, [r6, r1] @@ -4489,7 +4489,7 @@ _080A5440: b _080A5552 _080A5452: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _080A54EE @@ -4514,7 +4514,7 @@ _080A546C: cmp r0, 0x8 beq _080A5552 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 b _080A54EE .align 2, 0 @@ -4536,7 +4536,7 @@ _080A549C: cmp r0, 0x8 beq _080A5552 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x2 negs r0, r0 b _080A54EE @@ -4558,7 +4558,7 @@ _080A54CC: cmp r0, 0x8 beq _080A5552 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x2 _080A54EE: bl MoveMenuCursor3 @@ -4713,7 +4713,7 @@ _080A561E: b _080A5736 _080A5630: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _080A56D2 @@ -4740,7 +4740,7 @@ _080A5648: cmp r0, 0x8 beq _080A5736 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 b _080A56D2 .align 2, 0 @@ -4763,7 +4763,7 @@ _080A5680: cmp r0, 0x8 beq _080A5736 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x3 negs r0, r0 b _080A56D2 @@ -4785,7 +4785,7 @@ _080A56B0: cmp r0, 0x8 beq _080A5736 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x3 _080A56D2: bl MoveMenuCursor3 @@ -5008,7 +5008,7 @@ sub_80A5888: @ 80A5888 cmp r0, 0 beq _080A5988 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _080A58E2 @@ -5030,7 +5030,7 @@ _080A58C0: cmp r1, r0 beq _080A5988 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _080A58E2: bl MoveMenuCursor @@ -5279,7 +5279,7 @@ sub_80A5AE4: @ 80A5AE4 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_80A5AAC pop {r4} @@ -5361,7 +5361,7 @@ sub_80A5B78: @ 80A5B78 cmp r0, 0 beq _080A5BF2 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl CalculatePlayerPartyCount lsls r0, 24 cmp r0, 0 @@ -5774,7 +5774,7 @@ sub_80A5EA0: @ 80A5EA0 cmp r0, 0 beq _080A5EF8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080A5EEC @ =gScriptItemId ldrh r0, [r0] ldr r2, _080A5EF0 @ =gTasks @@ -5799,7 +5799,7 @@ _080A5EF8: cmp r0, 0 beq _080A5F0C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 bl sub_80A5D38 _080A5F0C: @@ -5815,7 +5815,7 @@ sub_80A5F14: @ 80A5F14 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080A5F58 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -5868,7 +5868,7 @@ sub_80A5F80: @ 80A5F80 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl sub_80A7528 adds r0, r4, 0 @@ -5887,7 +5887,7 @@ sub_80A5FAC: @ 80A5FAC lsls r0, 24 lsrs r6, r0, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080A5FD0 @ =gSaveBlock1 ldr r1, _080A5FD4 @ =0x00000496 adds r4, r0, r1 @@ -6021,7 +6021,7 @@ ItemMenu_Give: @ 80A60C8 lsrs r4, r0, 24 adds r6, r4, 0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r5, _080A60FC @ =gScriptItemId ldrh r0, [r5] bl sub_80F931C @@ -6548,7 +6548,7 @@ sub_80A6520: @ 80A6520 cmp r0, 0 beq _080A653E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl BuyMenuPrintItemQuantityAndPrice _080A653E: @@ -6589,7 +6589,7 @@ sub_80A6574: @ 80A6574 lsls r5, 24 lsrs r5, 24 movs r0, 0x5F - bl PlaySoundEffect + bl PlaySE ldr r0, _080A65A0 @ =gScriptItemId ldrh r0, [r0] ldr r1, _080A65A4 @ =gTasks @@ -6742,7 +6742,7 @@ _080A66B4: cmp r0, 0 beq _080A6744 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 movs r1, 0xA movs r2, 0xD @@ -6798,7 +6798,7 @@ _080A6744: cmp r0, 0 beq _080A6758 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl BuyMenuPrintItemQuantityAndPrice _080A6758: @@ -7313,7 +7313,7 @@ _080A6B1A: adds r1, r2, 0 bl sub_80A48E8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_80A5D38 _080A6B4C: @@ -7408,7 +7408,7 @@ sub_80A6BE0: @ 80A6BE0 cmp r2, 0 beq _080A6C20 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080A6C1C @ =gBGTilemapBuffers + 0x800 bl sub_80A4DA4 adds r0, r4, 0 @@ -7440,7 +7440,7 @@ _080A6C20: adds r1, r2, 0 bl sub_80A48E8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 bl sub_80A5D38 _080A6C58: @@ -7485,7 +7485,7 @@ sub_80A6C6C: @ 80A6C6C bl sub_80A48E8 bl sub_80A73FC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80A7590 movs r0, 0 ldrsb r0, [r6, r0] @@ -7750,7 +7750,7 @@ sub_80A6EB8: @ 80A6EB8 cmp r0, 0x1 bne _080A6FC0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _080A6F02 @@ -7768,7 +7768,7 @@ _080A6EE8: cmp r0, r1 bge _080A6FC0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _080A6F02: bl MoveMenuCursor @@ -7993,7 +7993,7 @@ sub_80A70D8: @ 80A70D8 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_80A7094 pop {r4} @@ -8012,7 +8012,7 @@ ItemMenu_UseInBattle: @ 80A70F4 cmp r0, 0 beq _080A711A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4] bl ItemId_GetBattleFunc adds r1, r0, 0 @@ -8033,7 +8033,7 @@ sub_80A7124: @ 80A7124 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl sub_80A7528 adds r0, r4, 0 @@ -8184,14 +8184,14 @@ _080A7260: b _080A7358 _080A726A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 movs r1, 0x2 bl sub_80A4E8C b _080A7358 _080A727A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x2 bl sub_80F98A4 movs r0, 0x3 @@ -8240,7 +8240,7 @@ _080A72EC: .4byte gUnknown_02038559 _080A72F0: .4byte gBGTilemapBuffers + 0x800 _080A72F4: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080A7344 @ =gBGTilemapBuffers + 0x800 bl sub_80A4DA4 ldr r4, _080A7348 @ =gSaveBlock1 + 0x560 diff --git a/asm/learn_move.s b/asm/learn_move.s index 1beeef7d7..84d244fe8 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -1083,7 +1083,7 @@ _08132FBC: cmp r0, 0 beq _08132FD6 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _08132FCE: ldr r0, _08132FE8 @ =gUnknown_030007B0 ldr r1, [r0] @@ -1254,7 +1254,7 @@ _0813310C: cmp r4, 0 beq _0813312A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _0813313C @ =gUnknown_030007B0 ldr r1, [r2] movs r0, 0x5 @@ -1432,7 +1432,7 @@ _0813326C: cmp r4, 0 beq _0813328A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _0813329C @ =gUnknown_030007B0 ldr r1, [r2] movs r3, 0 @@ -1923,7 +1923,7 @@ sub_813362C: @ 813362C b _08133796 _08133646: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, [r4] ldrb r0, [r1, 0x1B] subs r0, 0x1 @@ -1968,7 +1968,7 @@ _08133688: b _08133796 _081336A0: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, [r4] ldrb r0, [r1, 0x1B] adds r0, 0x1 @@ -2009,7 +2009,7 @@ _081336E8: cmp r0, 0 beq _0813376C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r5, _08133738 @ =gUnknown_030007B0 ldr r2, [r5] ldrb r1, [r2, 0x1B] @@ -2065,7 +2065,7 @@ _0813376C: cmp r0, 0 beq _08133796 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _081337D4 @ =gUnknown_030007B0 ldr r1, [r0] movs r0, 0xC diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s index 9dbaa0359..f10070110 100644 --- a/asm/menu_helpers.s +++ b/asm/menu_helpers.s @@ -138,7 +138,7 @@ _080F9114: b _080F9140 _080F911A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080F912C @ =gUnknown_020388C4 ldr r1, [r0] adds r0, r4, 0 @@ -148,7 +148,7 @@ _080F911A: _080F912C: .4byte gUnknown_020388C4 _080F9130: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080F9148 @ =gUnknown_020388C4 ldr r1, [r0, 0x4] adds r0, r4, 0 diff --git a/asm/mon_markings.s b/asm/mon_markings.s index c49967360..28bc116a9 100644 --- a/asm/mon_markings.s +++ b/asm/mon_markings.s @@ -387,7 +387,7 @@ _080F7558: cmp r0, 0 beq _080F758C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, [r4] ldrb r0, [r1, 0x5] subs r0, 0x1 @@ -409,7 +409,7 @@ _080F758C: cmp r0, 0 beq _080F75B0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, [r4] ldrb r0, [r1, 0x5] adds r0, 0x1 @@ -427,7 +427,7 @@ _080F75B0: cmp r0, 0 beq _080F7602 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, [r4] movs r1, 0x5 ldrsb r1, [r0, r1] @@ -472,7 +472,7 @@ _080F7602: cmp r0, 0 beq _080F75FE movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _080F7610: movs r0, 0 _080F7612: diff --git a/asm/party_menu.s b/asm/party_menu.s index 1eae399ab..534d4aaa4 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -2442,7 +2442,7 @@ _0806C1A4: cmp r5, r0 beq _0806C1C8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806C1C8: pop {r3,r4} mov r8, r3 @@ -3327,7 +3327,7 @@ _0806C84A: cmp r6, r0 beq _0806C878 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806C878: pop {r3} mov r8, r3 @@ -3402,7 +3402,7 @@ _0806C8E2: movs r1, 0x2 strb r1, [r0] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806C914: pop {r4-r6} pop {r0} @@ -3776,7 +3776,7 @@ _0806CBDA: cmp r0, 0 beq _0806CC10 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0806CC0C @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -3798,7 +3798,7 @@ _0806CC10: cmp r0, 0x2 bne _0806CC24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_806CD44 _0806CC24: @@ -7776,7 +7776,7 @@ _0806EB80: cmp r1, r0 bne _0806EB8E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806EB8E: movs r0, 0x17 movs r1, 0x8 @@ -8159,7 +8159,7 @@ _0806EEBC: cmp r1, r0 bne _0806EECA movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806EECA: movs r0, 0x17 movs r1, 0x8 @@ -8277,7 +8277,7 @@ _0806EFA8: cmp r1, r0 bne _0806EFB6 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806EFB6: movs r0, 0x17 movs r1, 0x8 @@ -8389,7 +8389,7 @@ TeachMonTMMove: @ 806F06C lsls r5, 16 lsrs r5, 16 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0806F0A8 @ =gTasks lsls r0, r4, 2 adds r0, r4 @@ -8800,7 +8800,7 @@ _0806F3E0: cmp r1, r0 bne _0806F3EE movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806F3EE: adds r0, r5, 0 bl StopTryingToTeachMove_806F614 @@ -9191,7 +9191,7 @@ _0806F73C: cmp r1, r0 bne _0806F74A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0806F74A: movs r0, 0x17 movs r1, 0x8 @@ -9553,7 +9553,7 @@ sub_806FA18: @ 806FA18 cmp r0, r1 bne _0806FAE4 movs r0, 0x1 - bl PlaySoundEffect + bl PlaySE movs r0, 0x80 lsls r0, 5 adds r4, r6, r0 @@ -10112,7 +10112,7 @@ _0806FEE6: movs r0, 0 strb r0, [r1] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0806FF0C @ =gOtherText_WontHaveAnyEffect movs r1, 0x1 bl sub_806E834 @@ -10134,13 +10134,13 @@ _0806FF14: cmp r0, 0 bne _0806FF34 movs r0, 0x1 - bl PlaySoundEffect + bl PlaySE b _0806FF3A .align 2, 0 _0806FF30: .4byte gUnknown_0202E8F4 _0806FF34: movs r0, 0x75 - bl PlaySoundEffect + bl PlaySE _0806FF3A: ldr r4, _0806FF88 @ =0x0201c000 ldr r0, [r4] @@ -10514,7 +10514,7 @@ Task_HandleItemUseMoveMenuInput: @ 8070374 cmp r0, 0 beq _0807039C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -10527,7 +10527,7 @@ _0807039C: cmp r0, 0 beq _080703B2 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _080703E4 @@ -10549,7 +10549,7 @@ _080703CC: cmp r0, 0 beq _080703E4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080703EC @ =gUnknown_08376B54 ldr r1, [r0, 0x4] adds r0, r4, 0 @@ -10625,7 +10625,7 @@ _08070468: .4byte gTasks _0807046C: .4byte TaskDummy _08070470: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0xA movs r1, 0x3 bl sub_806D538 @@ -10766,7 +10766,7 @@ DoRecoverPP: @ 8070570 ldr r0, _080705B0 @ =gUnknown_0202E8F4 strb r5, [r0] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080705B4 @ =gOtherText_WontHaveAnyEffect movs r1, 0x1 bl sub_806E834 @@ -10781,7 +10781,7 @@ _080705B8: movs r0, 0x1 strb r0, [r1] movs r0, 0x1 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r6, 0x6] movs r1, 0x1 bl RemoveBagItem @@ -10839,7 +10839,7 @@ DoPPUpItemEffect: @ 8070624 str r4, [r3] bl sub_806E8D0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0xB movs r1, 0x3 bl sub_806D538 @@ -10925,7 +10925,7 @@ _080706F6: movs r0, 0 strb r0, [r1] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0807071C @ =gOtherText_WontHaveAnyEffect movs r1, 0x1 bl sub_806E834 @@ -11013,7 +11013,7 @@ Task_RareCandy1: @ 80707A0 beq _080707E8 _080707CE: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_8070848 ldr r0, _080707F8 @ =gTasks @@ -11051,7 +11051,7 @@ Task_RareCandy2: @ 8070800 beq _08070834 _0807081A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_8070968 ldr r0, _08070840 @ =gTasks @@ -11584,7 +11584,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC lsls r1, 16 lsrs r6, r1, 16 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08070E18 @ =gTasks lsls r0, r4, 2 adds r0, r4 diff --git a/asm/player_pc.s b/asm/player_pc.s index 7e1333b1c..5e2adb775 100644 --- a/asm/player_pc.s +++ b/asm/player_pc.s @@ -554,7 +554,7 @@ sub_813B174: @ 813B174 cmp r0, 0 beq _0813B1B8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _0813B1E6 @@ -567,7 +567,7 @@ _0813B1B8: cmp r0, 0 beq _0813B274 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4, 0x2] subs r0, 0x1 b _0813B208 @@ -583,7 +583,7 @@ _0813B1CA: cmp r1, r0 beq _0813B1F4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _0813B1E6: bl MoveMenuCursor @@ -598,7 +598,7 @@ _0813B1F4: cmp r0, r1 beq _0813B274 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4, 0x2] adds r0, 0x1 _0813B208: @@ -614,7 +614,7 @@ _0813B212: beq _0813B25C bl sub_8072DEC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0813B23C @ =0x0201fe00 ldrb r1, [r0, 0x2] ldrb r2, [r0] @@ -647,7 +647,7 @@ _0813B25C: beq _0813B274 bl sub_8072DEC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_813B320 _0813B274: @@ -811,7 +811,7 @@ sub_813B3A0: @ 813B3A0 cmp r0, 0 beq _0813B3C8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -824,7 +824,7 @@ _0813B3C8: cmp r0, 0 beq _0813B3DE movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _0813B420 @@ -835,7 +835,7 @@ _0813B3DE: cmp r0, 0 beq _0813B40C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _0813B408 @ =gUnknown_084062F8 bl GetMenuCursorPos lsls r0, 24 @@ -854,7 +854,7 @@ _0813B40C: cmp r0, 0 beq _0813B420 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl Mailbox_Cancel _0813B420: diff --git a/asm/pokeball.s b/asm/pokeball.s index 6b906288e..9abeed00d 100644 --- a/asm/pokeball.s +++ b/asm/pokeball.s @@ -256,7 +256,7 @@ _080465CC: ldr r1, _08046630 @ =TaskDummy str r1, [r0] movs r0, 0x3D - bl PlaySoundEffect + bl PlaySE _08046616: add sp, 0x4 pop {r3-r5} @@ -435,7 +435,7 @@ sub_8046760: @ 8046760 cmp r0, 0xB bne _08046778 movs r0, 0x3C - bl PlaySoundEffect + bl PlaySE _08046778: ldr r6, _080467C4 @ =gSprites ldr r5, _080467C8 @ =gUnknown_02024BE0 @@ -604,19 +604,19 @@ _080468B0: b _080468CE _080468B6: movs r0, 0x38 - bl PlaySoundEffect + bl PlaySE b _08046902 _080468BE: movs r0, 0x39 - bl PlaySoundEffect + bl PlaySE b _08046902 _080468C6: movs r0, 0x3A - bl PlaySoundEffect + bl PlaySE b _08046902 _080468CE: movs r0, 0x3B - bl PlaySoundEffect + bl PlaySE b _08046902 _080468D6: movs r2, 0x38 @@ -701,7 +701,7 @@ sub_8046944: @ 8046944 ldr r0, _08046980 @ =sub_8046984 str r0, [r4, 0x1C] movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE _08046978: pop {r4} pop {r0} @@ -875,7 +875,7 @@ _08046ABC: bl StartSpriteAffineAnim _08046AC4: movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE _08046ACA: pop {r4} pop {r0} @@ -1494,7 +1494,7 @@ sub_8046FBC: @ 8046FBC strb r1, [r0] bl m4aMPlayAllStop ldr r0, _08046FF0 @ =0x00000173 - bl PlaySoundEffect + bl PlaySE b _08047056 .align 2, 0 _08046FEC: .4byte gUnknown_02024E6D @@ -2404,7 +2404,7 @@ sub_80476E0: @ 80476E0 cmp r0, 0xB bne _080476F8 movs r0, 0x3C - bl PlaySoundEffect + bl PlaySE _080476F8: ldrh r1, [r5, 0x2E] lsls r1, 24 diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 5c507bf62..44ac16b7e 100644 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -1079,7 +1079,7 @@ sub_810BF38: @ 810BF38 lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _0810BF6C @ =gSprites ldr r0, _0810BF70 @ =0x02000000 ldr r1, _0810BF74 @ =0x0001fffe @@ -1195,7 +1195,7 @@ _0810C012: cmp r0, r1 beq _0810C0B8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl sub_810BDAC ldr r1, _0810C054 @ =gTasks @@ -1220,7 +1220,7 @@ _0810C05C: cmp r0, 0 beq _0810C09C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0810C088 @ =gUnknown_02039248 ldrb r1, [r0, 0x1] ldrb r2, [r0] @@ -1249,7 +1249,7 @@ _0810C09C: cmp r0, 0 beq _0810C0B8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0810C0C0 @ =gScriptResult ldr r2, _0810C0C4 @ =0x0000ffff adds r0, r2, 0 @@ -1354,7 +1354,7 @@ _0810C168: beq _0810C190 _0810C17A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 movs r1, 0 bl sub_810C1C8 @@ -1367,7 +1367,7 @@ _0810C190: cmp r0, 0 beq _0810C1BA movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 movs r1, 0 bl sub_810C1C8 @@ -1692,7 +1692,7 @@ sub_810C40C: @ 810C40C cmp r0, 0 beq _0810C4BC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -1713,7 +1713,7 @@ _0810C440: cmp r0, r1 beq _0810C4BC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _0810C4BC @@ -1726,7 +1726,7 @@ _0810C46C: cmp r0, 0 beq _0810C4A8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _0810C4A0 @ =gUnknown_083F7EF4 bl GetMenuCursorPos lsls r0, 24 @@ -1751,7 +1751,7 @@ _0810C4A8: cmp r0, 0 beq _0810C4BC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_810C748 _0810C4BC: diff --git a/asm/pokedex.s b/asm/pokedex.s index 2206c15d8..8fd971840 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -426,7 +426,7 @@ _08090AA4: mov r0, r8 strh r0, [r5, 0x10] movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE b _08090B44 .align 2, 0 _08090B00: .4byte gTasks @@ -653,7 +653,7 @@ sub_8090C68: @ 8090C68 adds r0, 0x1 strh r0, [r1] movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE b _08090D2A .align 2, 0 _08090CD0: .4byte gUnknown_0202FFBC @@ -693,7 +693,7 @@ _08090CE4: subs r0, 0x1 strh r0, [r1] movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE _08090D2A: pop {r4,r5} pop {r0} @@ -3220,7 +3220,7 @@ sub_809207C: @ 809207C cmp r0, 0 beq _080920B0 movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE ldr r0, _080920A8 @ =gTasks lsls r1, r5, 2 adds r1, r5 @@ -3260,12 +3260,12 @@ _080920D8: b _0809216C _080920DE: movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE strh r4, [r5, 0xA] b _080920F2 _080920E8: movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE movs r0, 0x4 strh r0, [r5, 0xA] _080920F2: @@ -3276,7 +3276,7 @@ _080920F2: _080920F8: .4byte sub_809217C _080920FC: movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE ldr r0, _08092108 @ =sub_80927B8 str r0, [r5] b _0809216C @@ -3297,7 +3297,7 @@ _0809210C: cmp r0, 0 ble _0809213A movs r0, 0x6D - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4, 0x8] subs r0, 0x1 strh r0, [r4, 0x8] @@ -3321,7 +3321,7 @@ _0809213A: cmp r0, 0x1 bgt _0809216C movs r0, 0x6D - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4, 0x8] adds r0, 0x1 strh r0, [r4, 0x8] @@ -3403,7 +3403,7 @@ _080921F0: cmp r3, 0 beq _08092230 movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 bl sub_8092EB0 ldr r0, _08092228 @ =gTasks @@ -3480,7 +3480,7 @@ _08092288: adds r0, r2 strh r1, [r0] movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE ldr r0, _080922D0 @ =sub_80927B8 str r0, [r6] b _080923EC @@ -3499,14 +3499,14 @@ _080922D4: ldr r0, _080922EC @ =sub_80923FC str r0, [r6] movs r0, 0x70 - bl PlaySoundEffect + bl PlaySE b _080923EC .align 2, 0 _080922E8: .4byte gDexText_Searching _080922EC: .4byte sub_80923FC _080922F0: movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE ldr r0, _080922FC @ =sub_80925CC str r0, [r6] b _080923EC @@ -3530,7 +3530,7 @@ _08092300: cmp r0, 0xFF beq _08092338 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3559,7 +3559,7 @@ _08092338: cmp r0, 0xFF beq _08092374 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3588,7 +3588,7 @@ _08092374: cmp r0, 0xFF beq _080923B0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3617,7 +3617,7 @@ _080923B0: cmp r0, 0xFF beq _080923EC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r2, 0xA ldrsh r0, [r4, r2] lsls r0, 2 @@ -3731,7 +3731,7 @@ sub_80924A4: @ 80924A4 cmp r0, 0 beq _080924DC movs r0, 0x1F - bl PlaySoundEffect + bl PlaySE ldr r0, _080924D8 @ =gDexText_SearchComplete bl sub_8091E20 b _080924E8 @@ -3741,7 +3741,7 @@ _080924D4: .4byte 0x0000060c _080924D8: .4byte gDexText_SearchComplete _080924DC: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE ldr r0, _080924FC @ =gDexText_NoMatching bl sub_8091E20 _080924E8: @@ -3811,7 +3811,7 @@ sub_8092508: @ 8092508 ldr r1, _0809258C @ =sub_80927B8 str r1, [r0] movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE b _080925A4 .align 2, 0 _08092570: .4byte gMain @@ -3831,7 +3831,7 @@ _08092590: ldr r0, _080925B0 @ =sub_809217C str r0, [r1] movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE _080925A4: pop {r4,r5} pop {r0} @@ -3951,7 +3951,7 @@ sub_8092644: @ 8092644 beq _080926B4 bl sub_814ADC8 movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE movs r0, 0x12 movs r1, 0x1 movs r2, 0x1C @@ -3971,7 +3971,7 @@ _080926B4: beq _080926EC bl sub_814ADC8 movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE movs r0, 0x12 movs r1, 0x1 movs r2, 0x1C @@ -4026,7 +4026,7 @@ _08092730: beq _080927AE _08092734: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4] ldrh r1, [r5] adds r0, r1 @@ -4074,7 +4074,7 @@ _08092794: beq _080927AE _08092798: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4] ldrh r1, [r5] adds r0, r1 diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index 8649d2c6b..bd8db8a2c 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -2009,7 +2009,7 @@ _081115B4: beq _081115D0 strh r1, [r5, 0xA] movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE b _0811163C .align 2, 0 _081115CC: .4byte gMain @@ -2030,7 +2030,7 @@ _081115D0: _081115EA: strh r3, [r5, 0xA] movs r0, 0x6D - bl PlaySoundEffect + bl PlaySE b _0811163C .align 2, 0 _081115F4: .4byte gSaveBlock2 diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s index 30a973107..57bcd4904 100644 --- a/asm/pokemon_menu.s +++ b/asm/pokemon_menu.s @@ -333,7 +333,7 @@ sub_8089CD4: @ 8089CD4 _08089D00: .4byte gPaletteFade _08089D04: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_806CA38 ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened @@ -369,7 +369,7 @@ _08089D58: .4byte gTasks _08089D5C: .4byte sub_8089D94 _08089D60: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 str r5, [sp] @@ -413,7 +413,7 @@ sub_8089D94: @ 8089D94 cmp r1, 0x40 bne _08089DD4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -428,7 +428,7 @@ _08089DD4: cmp r1, 0x80 bne _08089DF0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor ldr r1, _08089DEC @ =gUnknown_0202FFA8 @@ -443,7 +443,7 @@ _08089DF0: cmp r0, 0 beq _08089E30 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08089E24 @ =gPokemonMenuActions ldr r2, _08089E28 @ =gUnknown_0202FFAA ldr r0, _08089E2C @ =gUnknown_0202FFA8 @@ -755,7 +755,7 @@ sub_808A060: @ 808A060 bl MoveMenuCursor strb r0, [r4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0808A086: ldr r0, _0808A0D0 @ =gMain ldrh r0, [r0, 0x2E] @@ -769,7 +769,7 @@ _0808A086: bl MoveMenuCursor strb r0, [r4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0808A0A4: ldr r0, _0808A0D0 @ =gMain ldrh r1, [r0, 0x2E] @@ -778,7 +778,7 @@ _0808A0A4: cmp r0, 0 beq _0808A0E0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0808A0D8 @ =gUnknown_0839F578 ldr r2, _0808A0DC @ =gPokemonMenuActions ldr r0, _0808A0D4 @ =gUnknown_0202FFA8 @@ -1585,7 +1585,7 @@ sub_808A73C: @ 808A73C cmp r0, 0x40 bne _0808A77A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _0808A768 @ =gUnknown_0202FFA8 ldrb r0, [r4] cmp r0, 0 @@ -1612,7 +1612,7 @@ _0808A77A: cmp r0, 0x80 bne _0808A7B4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _0808A7A4 @ =gUnknown_0202FFA8 ldrb r0, [r4] ldr r1, _0808A7A8 @ =gUnknown_0839F584 @@ -1642,7 +1642,7 @@ _0808A7B4: cmp r0, 0 beq _0808A7F0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0808A7E4 @ =gUnknown_0839F584 ldr r2, _0808A7E8 @ =gPokemonMenuActions ldr r0, _0808A7EC @ =gUnknown_0202FFA8 @@ -1814,7 +1814,7 @@ PokemonMenu_Cancel: @ 808A918 lsrs r4, 24 bl sub_8072DEC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_808A8D4 pop {r4} @@ -1830,7 +1830,7 @@ PokemonMenu_CancelSubmenu: @ 808A938 lsrs r4, 24 bl sub_8072DEC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x13 movs r1, 0 movs r2, 0x1D @@ -2808,7 +2808,7 @@ _0808B0F0: cmp r0, 0 beq _0808B120 movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE b _0808B1CE .align 2, 0 _0808B118: .4byte gLastFieldPokeMenuOpened @@ -2831,7 +2831,7 @@ _0808B13C: cmp r0, 0x1 bne _0808B154 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0808B174 @ =gScriptItemId ldrh r1, [r0] ldr r2, _0808B17C @ =sub_808B2EC @@ -2842,7 +2842,7 @@ _0808B154: cmp r0, 0x3 bne _0808B1CE movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0808B180 @ =sub_808B2B4 adds r0, r4, 0 bl PartyMenuTryGiveMonMail @@ -2860,7 +2860,7 @@ _0808B184: ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened strb r0, [r1] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 str r5, [sp] diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 27a600b45..176a42124 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -1397,7 +1397,7 @@ sub_8096368: @ 8096368 cmp r0, 0 beq _08096384 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0xC9 b _080963CC .align 2, 0 @@ -1408,7 +1408,7 @@ _08096384: cmp r0, 0 beq _080963A4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080963A0 @ =gUnknown_02038478 ldr r0, [r0] movs r1, 0x8F @@ -1424,7 +1424,7 @@ _080963A4: cmp r0, 0 beq _080963B8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_809662C b _080963CA _080963B8: @@ -1433,7 +1433,7 @@ _080963B8: cmp r0, 0 beq _080963CA movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80965F8 _080963CA: movs r0, 0xC8 @@ -2464,7 +2464,7 @@ _08096C0E: b _08096C38 _08096C16: movs r0, 0x2 - bl PlaySoundEffect + bl PlaySE movs r1, 0 movs r0, 0xE strh r0, [r4, 0xC] @@ -2580,7 +2580,7 @@ _08096CE0: .4byte _08096DA0 _08096D20: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _08096D30 @ =0x02000000 movs r0, 0x1 strb r0, [r1, 0x4] @@ -2646,7 +2646,7 @@ _08096DA0: _08096DA8: .4byte sub_8097CC0 _08096DAC: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08096DBC @ =sub_809789C bl sub_8096BE0 b _08096FBA @@ -2654,7 +2654,7 @@ _08096DAC: _08096DBC: .4byte sub_809789C _08096DC0: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08096DD0 @ =sub_8097078 bl sub_8096BE0 b _08096FBA @@ -2662,7 +2662,7 @@ _08096DC0: _08096DD0: .4byte sub_8097078 _08096DD4: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _08096DF0 @ =0x02000000 ldr r0, _08096DF4 @ =gPokemonStorage ldrb r0, [r0] @@ -2680,7 +2680,7 @@ _08096DF4: .4byte gPokemonStorage _08096DF8: .4byte 0x000008b2 _08096DFC: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _08096E24 @ =0x02000000 ldr r0, _08096E28 @ =gPokemonStorage ldrb r0, [r0] @@ -2725,7 +2725,7 @@ _08096E54: .4byte 0x02000000 _08096E58: .4byte 0x000011f2 _08096E5C: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08096E6C @ =sub_809746C bl sub_8096BE0 b _08096FBA @@ -2737,7 +2737,7 @@ _08096E70: cmp r0, 0 bne _08096E96 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08096E88 @ =sub_80972A8 bl sub_8096BE0 b _08096FBA @@ -2757,7 +2757,7 @@ _08096E96: _08096EA0: .4byte 0x02000000 _08096EA4: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08096EB4 @ =c3_0808DC50 bl sub_8096BE0 b _08096FBA @@ -2765,7 +2765,7 @@ _08096EA4: _08096EB4: .4byte c3_0808DC50 _08096EB8: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08096EC8 @ =sub_8097390 bl sub_8096BE0 b _08096FBA @@ -2773,7 +2773,7 @@ _08096EB8: _08096EC8: .4byte sub_8097390 _08096ECC: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08096EDC @ =sub_80972FC bl sub_8096BE0 b _08096FBA @@ -2852,12 +2852,12 @@ _08096F78: .4byte gMain _08096F7C: .4byte 0x02000000 _08096F80: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0xD b _08096F92 _08096F8A: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0x16 _08096F92: bl sub_8098898 @@ -2939,7 +2939,7 @@ _0809701C: b _0809706A _08097022: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl add_to_c3_somehow b _08097044 _0809702E: @@ -3055,7 +3055,7 @@ _08097120: cmp r0, 0 bne _080971D6 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r0, _0809713C @ =sub_80972A8 bl sub_8096BE0 @@ -3064,7 +3064,7 @@ _08097120: _0809713C: .4byte sub_80972A8 _08097140: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r0, _08097154 @ =sub_80972FC bl sub_8096BE0 @@ -3077,7 +3077,7 @@ _08097158: cmp r0, 0 beq _080971D6 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r0, _08097174 @ =c3_0808DC50 bl sub_8096BE0 @@ -3086,7 +3086,7 @@ _08097158: _08097174: .4byte c3_0808DC50 _08097178: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r0, _0809718C @ =sub_8097390 bl sub_8096BE0 @@ -3107,7 +3107,7 @@ _08097190: cmp r0, 0 bne _08097210 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r0, _080971C8 @ =sub_809746C bl sub_8096BE0 @@ -3157,7 +3157,7 @@ _08097210: _08097218: .4byte 0x000011f2 _0809721C: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0809722C @ =sub_8097594 bl sub_8096BE0 b _0809729A @@ -3165,7 +3165,7 @@ _0809721C: _0809722C: .4byte sub_8097594 _08097230: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08097240 @ =sub_8097788 bl sub_8096BE0 b _0809729A @@ -3173,7 +3173,7 @@ _08097230: _08097240: .4byte sub_8097788 _08097244: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08097254 @ =sub_80977E4 bl sub_8096BE0 b _0809729A @@ -3181,17 +3181,17 @@ _08097244: _08097254: .4byte sub_80977E4 _08097258: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0xD b _08097274 _08097262: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0x11 b _08097274 _0809726C: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0x16 _08097274: bl sub_8098898 @@ -4005,7 +4005,7 @@ _08097914: _08097928: .4byte sub_8096C84 _0809792C: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _0809793C @ =sub_8097B44 bl sub_8096BE0 b _08097968 @@ -4013,7 +4013,7 @@ _0809792C: _0809793C: .4byte sub_8097B44 _08097940: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r0, _08097954 @ =sub_8097974 bl sub_8096BE0 @@ -4022,7 +4022,7 @@ _08097940: _08097954: .4byte sub_8097974 _08097958: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r0, _08097970 @ =sub_8097A64 bl sub_8096BE0 @@ -4087,7 +4087,7 @@ _080979D4: cmp r0, 0xC blt _08097A5A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4] subs r0, 0xC strh r0, [r4] @@ -4118,7 +4118,7 @@ _080979FC: b _08097A5A _08097A24: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldrh r0, [r4] subs r0, 0x10 @@ -4329,7 +4329,7 @@ _08097BD4: cmp r0, 0 beq _08097BF8 movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0xF bl sub_8098898 ldr r1, _08097BF4 @ =0x02000000 @@ -4340,7 +4340,7 @@ _08097BD4: _08097BF4: .4byte 0x02000000 _08097BF8: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl sub_8098898 movs r0, 0 @@ -4386,7 +4386,7 @@ _08097C4A: _08097C58: .4byte sub_8096C84 _08097C5C: movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r1, _08097C70 @ =0x02000000 ldrb r0, [r1, 0x4] @@ -4463,7 +4463,7 @@ _08097CF4: cmp r0, 0 beq _08097D18 movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0xF bl sub_8098898 ldr r1, _08097D14 @ =0x02000000 @@ -4474,7 +4474,7 @@ _08097CF4: _08097D14: .4byte 0x02000000 _08097D18: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x12 bl sub_8098898 movs r0, 0 @@ -4521,7 +4521,7 @@ _08097D6C: _08097D78: .4byte sub_8096C84 _08097D7C: movs r0, 0x3 - bl PlaySoundEffect + bl PlaySE bl sub_8098A5C ldr r1, _08097D90 @ =0x02000000 ldrb r0, [r1, 0x4] @@ -5825,7 +5825,7 @@ sub_809880C: @ 809880C movs r1, 0 strb r1, [r0] movs r0, 0x6 - bl PlaySoundEffect + bl PlaySE bl sub_80984E8 pop {r0} bx r0 @@ -14796,7 +14796,7 @@ sub_809CF30: @ 809CF30 cmp r0, 0 beq _0809CF52 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r5, 0x1 _0809CF52: ldrh r1, [r4, 0x2E] @@ -14805,7 +14805,7 @@ _0809CF52: cmp r0, 0 beq _0809CF70 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -14818,7 +14818,7 @@ _0809CF70: cmp r0, 0 beq _0809CF8E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _0809CF8E diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s index a2d142c4c..20231a0bb 100644 --- a/asm/pokemon_summary_screen.s +++ b/asm/pokemon_summary_screen.s @@ -1043,7 +1043,7 @@ SummaryScreenExit: @ 809E0FC lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 movs r1, 0 @@ -1386,7 +1386,7 @@ _0809E3BC: .4byte 0x02018000 _0809E3C0: .4byte gSpecialVar_0x8005 _0809E3C4: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE ldrb r1, [r5] adds r0, r4, 0 bl sub_809F9D0 @@ -1492,13 +1492,13 @@ _0809E474: cmp r0, 0 bne _0809E4AC movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE b _0809E502 .align 2, 0 _0809E4A8: .4byte 0x02018000 _0809E4AC: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r1, [r6] adds r0, r4, 0 adds r0, 0x7A @@ -1520,7 +1520,7 @@ _0809E4D8: .4byte gTasks _0809E4DC: .4byte sub_809E534 _0809E4E0: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r7, 0 bl sub_809EAC8 b _0809E502 @@ -1530,7 +1530,7 @@ _0809E4EE: cmp r0, 0 beq _0809E502 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r7, 0 bl sub_809EAC8 _0809E502: @@ -1946,7 +1946,7 @@ sub_809E83C: @ 809E83C lsls r4, 24 lsrs r4, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x13 bl sub_80A1B1C movs r0, 0 @@ -2041,7 +2041,7 @@ sub_809E8F0: @ 809E8F0 movs r0, 0x1 str r0, [sp] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE mov r1, r9 ldrb r6, [r1] ldr r1, _0809E944 @ =gTasks @@ -2206,7 +2206,7 @@ SummaryScreenHandleAButton: @ 809EA50 lsls r0, 24 lsrs r5, r0, 24 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _0809EABC @ =0x02018000 adds r1, r4, 0 adds r1, 0x79 @@ -3122,7 +3122,7 @@ _0809F17C: cmp r0, 0xFF bne _0809F1A6 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r6, 0 adds r1, r5, 0 bl sub_809F0D0 @@ -3204,7 +3204,7 @@ _0809F22C: cmp r0, r1 beq _0809F270 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r5, _0809F278 @ =0x02018010 adds r0, r5, 0 bl GetMonStatusAndPokerus diff --git a/asm/pokenav.s b/asm/pokenav.s index 8ce66e75f..757a2a5a2 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -152,7 +152,7 @@ _080EBBA0: movs r1, 0x1 strb r1, [r0] movs r0, 0x6E - bl PlaySoundEffect + bl PlaySE ldr r0, _080EBBD8 @ =sub_80EBD90 bl SetMainCallback2 ldr r0, _080EBBDC @ =sub_80EBD18 @@ -1019,7 +1019,7 @@ _080EC2AE: cmp r0, 0 beq _080EC2D4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080EC2D0 @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -1073,7 +1073,7 @@ _080EC31C: .4byte _080EC358 _080EC330: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EC340 @ =sub_80EC4A0 bl sub_80EBDBC b _080EC492 @@ -1081,7 +1081,7 @@ _080EC330: _080EC340: .4byte sub_80EC4A0 _080EC344: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EC354 @ =sub_80EC81C bl sub_80EBDBC b _080EC492 @@ -1165,7 +1165,7 @@ _080EC3DC: cmp r0, 0 beq _080EC408 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EC404 @ =sub_80EDB88 bl sub_80EBDBC b _080EC492 @@ -1174,7 +1174,7 @@ _080EC400: .4byte 0x00008fe8 _080EC404: .4byte sub_80EDB88 _080EC408: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0 movs r1, 0x5 b _080EC442 @@ -1186,7 +1186,7 @@ _080EC414: cmp r0, 0 beq _080EC438 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EC434 @ =sub_80EE3D8 bl sub_80EBDBC b _080EC492 @@ -1195,7 +1195,7 @@ _080EC430: .4byte 0x0000d158 _080EC434: .4byte sub_80EE3D8 _080EC438: movs r0, 0x20 - bl PlaySoundEffect + bl PlaySE movs r0, 0 movs r1, 0x6 _080EC442: @@ -1210,7 +1210,7 @@ _080EC44C: cmp r5, 0 beq _080EC478 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080EC474 @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -1522,7 +1522,7 @@ _080EC6E2: b _080EC800 _080EC6E8: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EC6FC @ =0x02000000 movs r1, 0xC1 lsls r1, 2 @@ -1534,7 +1534,7 @@ _080EC6E8: _080EC6FC: .4byte 0x02000000 _080EC700: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EC714 @ =0x02000000 movs r2, 0xC1 lsls r2, 2 @@ -1730,7 +1730,7 @@ _080EC888: cmp r0, 0 beq _080EC8B0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080EC8AC @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -1748,7 +1748,7 @@ _080EC8B0: cmp r0, 0 beq _080EC918 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _080EC8E8 @ =0x00006dad adds r0, r4, r2 ldrb r1, [r0] @@ -1797,7 +1797,7 @@ _080EC918: cmp r0, 0 beq _080EC954 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080EC93C @ =0x00006df0 adds r0, r4, r1 strb r6, [r0] @@ -2172,7 +2172,7 @@ _080ECC24: cmp r0, 0 beq _080ECC4C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080ECC48 @ =0x00006dad adds r0, r4, r1 ldrb r1, [r0] @@ -2192,7 +2192,7 @@ _080ECC4C: b _080ECD40 _080ECC5A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _080ECC7C @ =0x00006dad adds r0, r4, r2 ldrb r0, [r0] @@ -2300,7 +2300,7 @@ _080ECD40: cmp r0, 0 beq _080ECD74 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r2, _080ECD60 @ =0x00006dad adds r1, r4, r2 movs r0, 0x5 @@ -3036,7 +3036,7 @@ _080ED342: cmp r0, 0 beq _080ED38C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080ED370 @ =sub_80ED4D8 bl sub_80EBDBC b _080ED3CA @@ -3045,12 +3045,12 @@ _080ED36C: .4byte gMain _080ED370: .4byte sub_80ED4D8 _080ED374: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl ShowMapNamePopUpWindow b _080ED3CA _080ED380: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4] adds r0, 0x1 b _080ED3C8 @@ -3060,7 +3060,7 @@ _080ED38C: cmp r0, 0 beq _080ED3CA movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080ED3A4 @ =sub_80ECD80 bl sub_80EBDBC b _080ED3CA @@ -3739,7 +3739,7 @@ _080ED91A: beq _080ED970 _080ED948: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl sub_80F5060 bl move_anim_execute @@ -3780,7 +3780,7 @@ _080ED970: bge _080ED9CC _080ED9A2: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl sub_80F5060 bl move_anim_execute @@ -3802,7 +3802,7 @@ _080ED9CC: cmp r0, 0 beq _080ED9F8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80F4FDC bl move_anim_execute ldr r0, _080ED9F4 @ =0x02000000 @@ -3841,7 +3841,7 @@ _080EDA02: b _080EDB7A _080EDA26: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0xC1 lsls r0, 2 adds r1, r4, r0 @@ -3861,7 +3861,7 @@ _080EDA44: b _080EDB7A _080EDA50: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r2, 0xC1 lsls r2, 2 adds r1, r5, r2 @@ -4297,7 +4297,7 @@ _080EDDE2: cmp r0, 0 beq _080EDE2C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EDE10 @ =sub_80EDEE4 bl sub_80EBDBC b _080EDE6A @@ -4306,12 +4306,12 @@ _080EDE0C: .4byte gMain _080EDE10: .4byte sub_80EDEE4 _080EDE14: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl ShowMapNamePopUpWindow b _080EDE6A _080EDE20: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4] adds r0, 0x1 b _080EDE68 @@ -4321,7 +4321,7 @@ _080EDE2C: cmp r0, 0 beq _080EDE6A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EDE44 @ =sub_80EDE70 bl sub_80EBDBC b _080EDE6A @@ -4653,7 +4653,7 @@ _080EE0CC: cmp r0, 0 beq _080EE104 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl sub_80F6A4C @@ -4681,7 +4681,7 @@ _080EE104: cmp r2, r0 bge _080EE140 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl sub_80F6A4C movs r0, 0xC1 @@ -4698,7 +4698,7 @@ _080EE140: cmp r0, 0 beq _080EE164 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0xB bl sub_80EEFBC ldr r0, _080EE160 @ =0x02000000 @@ -4716,7 +4716,7 @@ _080EE164: b _080EE288 _080EE16E: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EE17C @ =sub_80EE294 bl sub_80EBDBC b _080EE288 @@ -4788,7 +4788,7 @@ _080EE1F8: cmp r0, 0x1 bne _080EE224 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80F3B94 ldr r0, _080EE220 @ =0x02000000 movs r5, 0xC1 @@ -4807,7 +4807,7 @@ _080EE224: cmp r0, 0 beq _080EE288 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80F3B94 ldr r0, _080EE24C @ =0x02000000 movs r1, 0xC1 @@ -5241,7 +5241,7 @@ _080EE5B2: cmp r0, 0 beq _080EE608 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EE5E0 @ =sub_80EE658 bl sub_80EBDBC b _080EE652 @@ -5250,7 +5250,7 @@ _080EE5DC: .4byte gMain _080EE5E0: .4byte sub_80EE658 _080EE5E4: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _080EE5F8 @ =0x0000876e adds r0, r5, r1 ldrb r0, [r0] @@ -5260,7 +5260,7 @@ _080EE5E4: _080EE5F8: .4byte 0x0000876e _080EE5FC: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4] adds r0, 0x1 b _080EE650 @@ -5270,7 +5270,7 @@ _080EE608: cmp r0, 0 beq _080EE652 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _080EE620 @ =sub_80EE8F4 bl sub_80EBDBC b _080EE652 @@ -5446,7 +5446,7 @@ _080EE780: cmp r0, 0 beq _080EE7B8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl sub_80F708C @@ -5474,7 +5474,7 @@ _080EE7B8: cmp r2, r0 bge _080EE7F8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl sub_80F708C movs r0, 0xC1 @@ -5494,7 +5494,7 @@ _080EE7F8: cmp r0, 0 beq _080EE8E8 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_80F4394 bl sub_80F0EC0 ldr r1, _080EE81C @ =0x02000000 @@ -5682,7 +5682,7 @@ sub_80EE96C: @ 80EE96C cmp r4, 0 bne _080EE9A0 movs r0, 0x6F - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 str r4, [sp] @@ -12295,7 +12295,7 @@ _080F1E22: blt _080F1E0E _080F1E38: movs r0, 0x6 - bl PlaySoundEffect + bl PlaySE pop {r4-r6} pop {r0} bx r0 diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s index ca860d401..2fbc559c8 100644 --- a/asm/reset_rtc_screen.s +++ b/asm/reset_rtc_screen.s @@ -699,7 +699,7 @@ _0806A9BA: _0806A9CC: strh r0, [r5, 0x4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE b _0806AA58 _0806A9D6: cmp r4, 0x5 @@ -721,7 +721,7 @@ _0806A9D6: ldrh r0, [r5, 0xC] strb r0, [r1, 0x4] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r1, _0806AA1C @ =gTasks lsls r0, r6, 2 adds r0, r6 @@ -751,7 +751,7 @@ _0806AA24: cmp r0, 0 beq _0806AA58 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r2, [r5, 0x6] ldrb r3, [r5, 0x8] ldrb r0, [r5, 0xA] @@ -1046,7 +1046,7 @@ _0806ACB0: cmp r0, 0 beq _0806ACC4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 bl DestroyTask _0806ACC4: @@ -1246,7 +1246,7 @@ _0806AE5C: ldr r0, _0806AE78 @ =gSystemText_SaveCompleted bl ResetRtcScreen_ShowMessage movs r0, 0x49 - bl PlaySoundEffect + bl PlaySE b _0806AE88 .align 2, 0 _0806AE78: .4byte gSystemText_SaveCompleted @@ -1254,7 +1254,7 @@ _0806AE7C: ldr r0, _0806AECC @ =gSystemText_SaveFailed bl ResetRtcScreen_ShowMessage movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE _0806AE88: movs r0, 0x5 strh r0, [r5] diff --git a/asm/rotating_gate.s b/asm/rotating_gate.s index 306eeabc0..a553802e8 100644 --- a/asm/rotating_gate.s +++ b/asm/rotating_gate.s @@ -439,7 +439,7 @@ sub_80C7C94: @ 80C7C94 lsrs r4, r0, 24 _080C7CCA: movs r0, 0x30 - bl PlaySoundEffect + bl PlaySE adds r0, r6, 0 adds r1, r4, 0 bl StartSpriteAffineAnim @@ -462,7 +462,7 @@ _080C7CDA: lsrs r4, r0, 24 _080C7CFA: movs r0, 0x30 - bl PlaySoundEffect + bl PlaySE adds r0, r6, 0 adds r1, r4, 0 bl StartSpriteAffineAnim diff --git a/asm/roulette.s b/asm/roulette.s index e23b87f0d..6382ecf0b 100644 --- a/asm/roulette.s +++ b/asm/roulette.s @@ -1332,7 +1332,7 @@ _08115C0C: mov r1, r8 strh r1, [r4, 0xA] movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r5, _08115D3C @ =0x020190b8 ldr r1, _08115D40 @ =0x0000ffff adds r0, r5, 0 @@ -1650,7 +1650,7 @@ _08115E6E: cmp r1, 0 beq _08115EB8 movs r0, 0x16 - bl PlaySoundEffect + bl PlaySE b _08115EC2 .align 2, 0 _08115EA8: .4byte gTasks @@ -3302,7 +3302,7 @@ _08116BE4: cmp r0, 0 beq _08116C06 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _08116C06: movs r0, 0 str r0, [r5] diff --git a/asm/secret_base.s b/asm/secret_base.s index bae3befa4..8f2df8396 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -511,7 +511,7 @@ sub_80BC824: @ 80BC824 cmp r0, 0 beq _080BC860 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _080BC8B6 @@ -524,7 +524,7 @@ _080BC860: cmp r0, 0 beq _080BC940 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4, 0x4] subs r0, 0x1 b _080BC8A4 @@ -549,7 +549,7 @@ _080BC874: cmp r0, r1 beq _080BC940 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrh r0, [r4, 0x4] adds r0, 0x1 _080BC8A4: @@ -559,7 +559,7 @@ _080BC8A4: b _080BC940 _080BC8AE: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _080BC8B6: bl MoveMenuCursor @@ -574,7 +574,7 @@ _080BC8C2: cmp r0, 0 beq _080BC91C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r1, 0x2 ldrsh r0, [r4, r1] movs r2, 0x4 @@ -613,7 +613,7 @@ _080BC91C: cmp r0, 0 beq _080BC940 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8072DEC movs r0, 0 movs r1, 0 @@ -727,7 +727,7 @@ sub_80BC9E4: @ 80BC9E4 cmp r0, 0 beq _080BCA7C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -745,7 +745,7 @@ _080BCA18: cmp r0, 0x1 beq _080BCA7C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _080BCA7C @@ -756,7 +756,7 @@ _080BCA3A: cmp r0, 0 beq _080BCA68 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _080BCA64 @ =gUnknown_083D13D4 bl GetMenuCursorPos lsls r0, 24 @@ -775,7 +775,7 @@ _080BCA68: cmp r0, 0 beq _080BCA7C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r4, 0 bl sub_80BCBF8 _080BCA7C: diff --git a/asm/shop.s b/asm/shop.s index 61144b220..1d0863469 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -953,7 +953,7 @@ _080B3B06: movs r2, 0 bl sub_80B39D0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4, 0xB] ldrb r1, [r4, 0x9] adds r0, r1 @@ -1015,7 +1015,7 @@ sub_80B3B80: @ 80B3B80 adds r0, r5, 0 bl sub_80B79E0 movs r0, 0x5F - bl PlaySoundEffect + bl PlaySE ldr r0, [r5] movs r1, 0 movs r2, 0 @@ -1684,7 +1684,7 @@ _080B4102: b _080B436C _080B411E: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4, 0xB] subs r0, 0x1 strb r0, [r4, 0xB] @@ -1698,7 +1698,7 @@ _080B4138: .4byte gMain _080B413C: .4byte gUnknown_03000708 _080B4140: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _080B41A0 @@ -1718,7 +1718,7 @@ _080B414C: b _080B436C _080B4166: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4, 0xB] adds r0, 0x1 strb r0, [r4, 0xB] @@ -1740,7 +1740,7 @@ _080B4190: b _080B436C _080B4198: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _080B41A0: bl MoveMenuCursor @@ -1756,7 +1756,7 @@ _080B41AC: b _080B4358 _080B41B8: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r6, _080B426C @ =gUnknown_03000708 ldrb r0, [r6, 0xB] ldrb r1, [r6, 0x9] @@ -1935,7 +1935,7 @@ _080B4358: cmp r0, 0 beq _080B436C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE mov r0, r8 bl sub_80B43F0 _080B436C: diff --git a/asm/slot_machine.s b/asm/slot_machine.s index c0439e84b..46af5bc0f 100644 --- a/asm/slot_machine.s +++ b/asm/slot_machine.s @@ -794,7 +794,7 @@ _08101E9C: movs r0, 0x9 strb r0, [r1] movs r0, 0x5F - bl PlaySoundEffect + bl PlaySE b _08101F1A .align 2, 0 _08101EB8: .4byte 0x02000000 @@ -813,7 +813,7 @@ _08101EC2: cmp r0, 0 beq _08101EEC movs r0, 0x5F - bl PlaySoundEffect + bl PlaySE ldrb r0, [r4, 0x12] bl sub_8103D50 ldrh r0, [r4, 0xC] @@ -1032,7 +1032,7 @@ sub_8102058: @ 8102058 cmp r0, 0 beq _0810207E movs r0, 0x18 - bl PlaySoundEffect + bl PlaySE ldr r4, _0810208C @ =0x02000000 ldrb r0, [r4, 0x18] bl sub_8102E1C @@ -2460,7 +2460,7 @@ sub_8102AD0: @ 8102AD0 cmp r0, 0 beq _08102AF6 movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE _08102AF6: ldr r2, _08102B70 @ =0x02000000 ldrh r0, [r2, 0xE] @@ -2497,7 +2497,7 @@ _08102B22: cmp r0, 0 beq _08102B58 movs r0, 0x15 - bl PlaySoundEffect + bl PlaySE ldr r1, _08102B70 @ =0x02000000 ldrh r0, [r1, 0xE] ldrh r2, [r1, 0xC] @@ -6583,7 +6583,7 @@ sub_81048CC: @ 81048CC ldr r0, _0810493C @ =0x00000187 bl PlayFanfare movs r0, 0xB2 - bl PlaySoundEffect + bl PlaySE pop {r4,r5} pop {r0} bx r0 diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s index c34945bcc..b47229d2b 100644 --- a/asm/sound_check_menu.s +++ b/asm/sound_check_menu.s @@ -2012,7 +2012,7 @@ _080BB104: movs r4, 0x40 negs r4, r4 adds r1, r4, 0 - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning str r4, [r5, 0x1C] b _080BB14C .align 2, 0 @@ -2021,7 +2021,7 @@ _080BB13C: .4byte gUnknown_020387B4 _080BB140: ldrh r0, [r5] movs r1, 0x3F - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning movs r0, 0x3F str r0, [r5, 0x1C] _080BB14C: @@ -2031,7 +2031,7 @@ _080BB14C: b _080BB1C8 _080BB154: ldrh r0, [r5] - bl PlaySoundEffect12WithPanning + bl PlaySE12WithPanning str r4, [r5, 0x18] b _080BB1C8 _080BB15E: diff --git a/asm/trade.s b/asm/trade.s index f13822004..756423ee7 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -3021,7 +3021,7 @@ _08049600: cmp r0, r6 beq _0804960C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE _0804960C: strb r6, [r7] pop {r4-r7} @@ -3143,7 +3143,7 @@ _080496F4: cmp r0, 0 beq _080497B6 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r4, _08049750 @ =gUnknown_03004824 ldr r0, [r4] adds r1, r0, 0 @@ -3317,7 +3317,7 @@ sub_8049860: @ 8049860 cmp r0, 0 beq _08049880 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _08049890 @@ -3329,7 +3329,7 @@ _08049880: cmp r0, 0 beq _0804989C movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _08049890: bl MoveMenuCursor @@ -3345,7 +3345,7 @@ _0804989C: cmp r0, 0 beq _08049938 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl GetMenuCursorPos lsls r0, 24 lsrs r1, r0, 24 @@ -3415,7 +3415,7 @@ _08049938: cmp r0, 0 beq _0804994A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8049804 _0804994A: add sp, 0x4 @@ -3439,7 +3439,7 @@ sub_8049954: @ 8049954 beq _08049974 _0804996A: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8049804 _08049974: pop {r0} @@ -3627,7 +3627,7 @@ sub_8049AC0: @ 8049AC0 cmp r0, 0 beq _08049AE0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _08049AF0 @@ -3639,7 +3639,7 @@ _08049AE0: cmp r0, 0 beq _08049AFC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _08049AF0: bl MoveMenuCursor @@ -3655,7 +3655,7 @@ _08049AFC: cmp r0, 0 beq _08049B64 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl GetMenuCursorPos lsls r0, 24 cmp r0, 0 @@ -3747,7 +3747,7 @@ sub_8049BC0: @ 8049BC0 cmp r0, 0 beq _08049BE0 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 b _08049BF0 @@ -3759,7 +3759,7 @@ _08049BE0: cmp r0, 0 beq _08049BFC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 _08049BF0: bl MoveMenuCursor @@ -3775,7 +3775,7 @@ _08049BFC: cmp r0, 0 beq _08049C72 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl GetMenuCursorPos lsls r0, 24 lsrs r5, r0, 24 @@ -3826,7 +3826,7 @@ _08049C72: cmp r0, 0 beq _08049C84 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE bl sub_8049804 _08049C84: pop {r4,r5} @@ -3941,7 +3941,7 @@ sub_8049D44: @ 8049D44 cmp r0, 0 beq _08049D8A movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl sub_804A840 movs r0, 0x1 @@ -6388,7 +6388,7 @@ sub_804B058: @ 804B058 cmp r0, 0xA bne _0804B074 movs r0, 0x17 - bl PlaySoundEffect + bl PlaySE movs r0, 0 strh r0, [r4, 0x2E] _0804B074: @@ -6487,7 +6487,7 @@ sub_804B104: @ 804B104 cmp r0, 0xF bne _0804B120 movs r0, 0xCC - bl PlaySoundEffect + bl PlaySE movs r0, 0 strh r0, [r4, 0x2E] _0804B120: @@ -9417,7 +9417,7 @@ _0804CB70: cmp r0, 0 bne _0804CB8E movs r0, 0x2E - bl PlaySoundEffect + bl PlaySE ldr r0, _0804CBC4 @ =gUnknown_03004828 ldr r1, [r0] adds r1, 0xC4 @@ -9700,7 +9700,7 @@ _0804CD94: cmp r0, 0x2 bhi _0804CDDC movs r0, 0x2D - bl PlaySoundEffect + bl PlaySE _0804CDDC: ldr r2, [r6] adds r3, r2, 0 @@ -10120,7 +10120,7 @@ _0804D11A: adds r0, 0x1 strh r0, [r1] movs r0, 0x9F - bl PlaySoundEffect + bl PlaySE b _0804D570 .align 2, 0 _0804D138: .4byte gSprites @@ -10893,7 +10893,7 @@ sub_804D738: @ 804D738 cmp r0, 0x16 bne _0804D760 movs r0, 0x38 - bl PlaySoundEffect + bl PlaySE _0804D760: ldrh r0, [r4, 0x2E] adds r0, 0x1 @@ -10903,7 +10903,7 @@ _0804D760: cmp r0, 0x2C bne _0804D796 movs r0, 0x8C - bl PlaySoundEffect + bl PlaySE ldr r0, _0804D7A4 @ =sub_804D7AC str r0, [r4, 0x1C] movs r0, 0 @@ -11005,7 +11005,7 @@ sub_804D80C: @ 804D80C movs r0, 0x16 strh r0, [r4, 0x2E] movs r0, 0x38 - bl PlaySoundEffect + bl PlaySE b _0804D88C _0804D83C: movs r1, 0x2E @@ -11013,21 +11013,21 @@ _0804D83C: cmp r0, 0x42 bne _0804D84A movs r0, 0x39 - bl PlaySoundEffect + bl PlaySE _0804D84A: movs r2, 0x2E ldrsh r0, [r4, r2] cmp r0, 0x5C bne _0804D858 movs r0, 0x3A - bl PlaySoundEffect + bl PlaySE _0804D858: movs r3, 0x2E ldrsh r0, [r4, r3] cmp r0, 0x6B bne _0804D866 movs r0, 0x3B - bl PlaySoundEffect + bl PlaySE _0804D866: ldr r1, _0804D894 @ =gTradeBallVerticalVelocityTable movs r2, 0x2E diff --git a/asm/trader.s b/asm/trader.s index 1051ef178..be3627e90 100644 --- a/asm/trader.s +++ b/asm/trader.s @@ -320,7 +320,7 @@ sub_8109B7C: @ 8109B7C cmp r0, 0 beq _08109BAC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 negs r0, r0 bl MoveMenuCursor @@ -334,7 +334,7 @@ _08109BAC: cmp r0, 0 beq _08109BC2 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl MoveMenuCursor b _08109C3E @@ -344,7 +344,7 @@ _08109BC2: cmp r0, 0 beq _08109C28 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r5, _08109BFC @ =gSpecialVar_0x8005 bl GetMenuCursorPos lsls r0, 24 @@ -389,7 +389,7 @@ _08109C28: cmp r0, 0 beq _08109C3E movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE adds r0, r5, 0 movs r1, 0 bl sub_8109B34 diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s index 90b1b6a8b..a9913b6d0 100644 --- a/asm/use_pokeblock.s +++ b/asm/use_pokeblock.s @@ -635,7 +635,7 @@ _0813667C: cmp r0, 0 beq _081366AC movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0x1 bl sub_80F5060 bl move_anim_execute @@ -653,7 +653,7 @@ _081366AC: cmp r0, 0 beq _081366D4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE movs r0, 0 bl sub_80F5060 bl move_anim_execute @@ -671,7 +671,7 @@ _081366D4: cmp r0, 0 beq _081366F4 movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _081366F0 @ =gUnknown_02039304 ldr r0, [r0] adds r0, 0x50 @@ -687,7 +687,7 @@ _081366F4: b _081367FA _081366FE: movs r0, 0x5 - bl PlaySoundEffect + bl PlaySE ldr r0, _08136728 @ =gUnknown_083DFEC4 ldr r0, [r0] ldr r2, _0813672C @ =0x000087dc diff --git a/include/sound.h b/include/sound.h index a720c82b1..283b2b1f9 100644 --- a/include/sound.h +++ b/include/sound.h @@ -34,10 +34,10 @@ void StopCry(void); bool8 IsCryPlayingOrClearCrySongs(void); bool8 IsCryPlaying(void); void PlayBGM(u16 songNum); -void PlaySoundEffect(u16 songNum); -void PlaySoundEffect12WithPanning(u16 songNum, s8 pan); -void PlaySoundEffect1WithPanning(u16 songNum, s8 pan); -void PlaySoundEffect2WithPanning(u16 songNum, s8 pan); +void PlaySE(u16 songNum); +void PlaySE12WithPanning(u16 songNum, s8 pan); +void PlaySE1WithPanning(u16 songNum, s8 pan); +void PlaySE2WithPanning(u16 songNum, s8 pan); void SE12PanpotControl(s8 pan); bool8 IsSEPlaying(void); bool8 IsBGMPlaying(void); diff --git a/src/battle_anim.c b/src/battle_anim.c index 8ca66f745..bdb34365f 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -673,7 +673,7 @@ static void ScriptCmd_end(void) static void ScriptCmd_playse(void) { gBattleAnimScriptPtr++; - PlaySoundEffect(SCRIPT_READ_16(gBattleAnimScriptPtr)); + PlaySE(SCRIPT_READ_16(gBattleAnimScriptPtr)); gBattleAnimScriptPtr += 2; } @@ -1715,7 +1715,7 @@ static void ScriptCmd_panse_19(void) gBattleAnimScriptPtr++; r4 = SCRIPT_READ_16(gBattleAnimScriptPtr); r0 = SCRIPT_READ_8(gBattleAnimScriptPtr + 2); - PlaySoundEffect12WithPanning(r4, sub_8076F98(r0)); + PlaySE12WithPanning(r4, sub_8076F98(r0)); gBattleAnimScriptPtr += 3; } @@ -1755,7 +1755,7 @@ static void ScriptCmd_panse_1B(void) gTasks[taskId].data[2] = r4; gTasks[taskId].data[3] = r7; gTasks[taskId].data[4] = panning; - PlaySoundEffect12WithPanning(songNum, panning); + PlaySE12WithPanning(songNum, panning); gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1917,7 +1917,7 @@ static void ScriptCmd_panse_26(void) gTasks[taskId].data[2] = r6; gTasks[taskId].data[3] = r10; gTasks[taskId].data[4] = r4; - PlaySoundEffect12WithPanning(r8, r4); + PlaySE12WithPanning(r8, r4); gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1949,7 +1949,7 @@ static void ScriptCmd_panse_27(void) gTasks[taskId].data[2] = r4_2; gTasks[taskId].data[3] = r7; gTasks[taskId].data[4] = r6; - PlaySoundEffect12WithPanning(r9, r6); + PlaySE12WithPanning(r9, r6); gAnimSoundTaskCount++; gBattleAnimScriptPtr += 6; } @@ -1996,7 +1996,7 @@ static void sub_80774FC(u8 taskId) r1 = gTasks[taskId].data[1]; gTasks[taskId].data[3]--; r4 = gTasks[taskId].data[3]; - PlaySoundEffect12WithPanning(r0, r1); + PlaySE12WithPanning(r0, r1); if (r4 == 0) { DestroyTask(taskId); @@ -2034,7 +2034,7 @@ static void sub_80775CC(u8 taskId) gTasks[taskId].data[2]--; if (r0 <= 0) { - PlaySoundEffect12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]); + PlaySE12WithPanning(gTasks[taskId].data[0], gTasks[taskId].data[1]); DestroyTask(taskId); gAnimSoundTaskCount--; } diff --git a/src/battle_interface.c b/src/battle_interface.c index 827ed4ffc..9938c4b54 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1589,7 +1589,7 @@ u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) for (i = 0; i < 6; i++) gTasks[taskId].data[3 + i] = sp[i]; gTasks[taskId].data[10] = d; - PlaySoundEffect12WithPanning(SE_TB_START, 0); + PlaySE12WithPanning(SE_TB_START, 0); return taskId; } #else @@ -2169,7 +2169,7 @@ _08044C62:\n\ strh r6, [r0, 0x1C]\n\ movs r0, 0x72\n\ movs r1, 0\n\ - bl PlaySoundEffect12WithPanning\n\ + bl PlaySE12WithPanning\n\ adds r0, r4, 0\n\ add sp, 0x28\n\ pop {r3-r5}\n\ @@ -2356,9 +2356,9 @@ void sub_804507C(struct Sprite *sprite) if (r3 != 0) pan = -64; if (sprite->data7 != 0) - PlaySoundEffect2WithPanning(SE_TB_KARA, pan); + PlaySE2WithPanning(SE_TB_KARA, pan); else - PlaySoundEffect1WithPanning(SE_TB_KON, pan); + PlaySE1WithPanning(SE_TB_KON, pan); sprite->callback = SpriteCallbackDummy; } } diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 4ee55f0e2..820d16465 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -230,7 +230,7 @@ void SetUpBattlePokemonMenu(u8 a) if (gUnknown_02038473 == 3) { if (GetMonData(&gPlayerParty[sub_806CA38(a)], MON_DATA_IS_EGG)) - PlaySoundEffect(SE_HAZURE); + PlaySE(SE_HAZURE); else { sub_806D5A4(); @@ -239,7 +239,7 @@ void SetUpBattlePokemonMenu(u8 a) } else { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); GetMonNickname(&gPlayerParty[sub_806CA38(a)], gStringVar1); sub_8095050(a, sub_806CA38(a)); SetTaskFuncWithFollowupFunc(a, Task_HandlePopupMenuInput, SetUpBattlePokemonMenu); @@ -247,10 +247,10 @@ void SetUpBattlePokemonMenu(u8 a) break; case 2: if (gUnknown_02038473 == 1) - PlaySoundEffect(SE_HAZURE); + PlaySE(SE_HAZURE); else { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); if (gUnknown_02038473 == 3) { gUnknown_0202E8F4 = 0; @@ -336,19 +336,19 @@ static void Task_HandlePopupMenuInput(u8 taskId) { if (gMain.newAndRepeatedKeys & DPAD_UP) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor(-1); return; } if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor(1); return; } if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); func = PartyMenuGetPopupMenuFunc(gTasks[taskId].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, @@ -358,7 +358,7 @@ static void Task_HandlePopupMenuInput(u8 taskId) } if (gMain.newKeys & B_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); Task_BattlePartyMenuCancel(taskId); return; } diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 94f9c5941..511b88c5a 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -245,7 +245,7 @@ static void sub_814640C(u8 taskId) static void sub_8146440(u8 taskId) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = sub_814640C; } @@ -379,7 +379,7 @@ _08146718:\n\ bgt _0814678C\n\ _08146728:\n\ movs r0, 0x5\n\ - bl PlaySoundEffect\n\ + bl PlaySE\n\ mov r2, r8\n\ ldrb r3, [r2, 0x1]\n\ ldrb r4, [r4, 0xC]\n\ diff --git a/src/bike.c b/src/bike.c index 0c154de9c..d7175b5e0 100644 --- a/src/bike.c +++ b/src/bike.c @@ -617,7 +617,7 @@ static void AcroBikeTransition_80E5920(u8 direction) } } playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId]; - PlaySoundEffect(SE_JITE_PYOKO); + PlaySE(SE_JITE_PYOKO); playerMapObj->mapobj_bit_9 = 1; PlayerSetAnimId(sub_80608A4(direction), 2); } diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 7c6a22547..220e8420c 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -46,7 +46,7 @@ void DoBrailleDigEffect(void) MapGridSetMetatileIdAt(17, 9, 563); MapGridSetMetatileIdAt(18, 9, 3636); DrawWholeMapView(); - PlaySoundEffect(SE_BAN); + PlaySE(SE_BAN); FlagSet(SYS_BRAILLE_DIG); ScriptContext2_Disable(); } @@ -88,7 +88,7 @@ void DoBrailleStrengthEffect(void) MapGridSetMetatileIdAt(15, 27, 563); MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); - PlaySoundEffect(SE_BAN); + PlaySE(SE_BAN); FlagSet(SYS_BRAILLE_STRENGTH); ScriptContext2_Disable(); } @@ -134,7 +134,7 @@ void UseFlyAncientTomb_Finish(void) MapGridSetMetatileIdAt(15, 27, 563); MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); - PlaySoundEffect(SE_BAN); + PlaySE(SE_BAN); FlagSet(SYS_BRAILLE_FLY); ScriptContext2_Disable(); } @@ -159,7 +159,7 @@ void Task_BrailleWait(u8 taskId) if (BrailleWait_CheckButtonPress() != FALSE) { MenuZeroFillScreen(); - PlaySoundEffect(5); + PlaySE(5); data[0] = 2; } else diff --git a/src/cable_club.c b/src/cable_club.c index 1f2c6376a..45fb347f3 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -89,7 +89,7 @@ static void sub_80830E4(u8 taskId) { if (gMain.heldKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); sub_8007F4C(); gTasks[(u32) taskId].func = sub_8083188; } @@ -153,7 +153,7 @@ _08083158:\n\ cmp r0, 0\n\ beq _08083178\n\ movs r0, 0x5\n\ - bl PlaySoundEffect\n\ + bl PlaySE\n\ bl sub_8007F4C\n\ ldr r0, _08083180 @ =gTasks\n\ lsls r1, r6, 2\n\ diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index 301e169ce..21cd643ef 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -59,13 +59,13 @@ static void Task_ProcessMenuInput(u8 taskId) switch (ProcessMenuInputNoWrap_()) { case 0: - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); sub_8071F40(gSystemText_ClearingData); gTasks[taskId].func = Task_ClearSaveData; break; case -1: case 1: - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); DestroyTask(taskId); SetMainCallback2(CB2_SoftReset); break; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index e51ae24b6..c5f2c08e7 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -214,7 +214,7 @@ int sub_8068024(struct FieldInput *input) return TRUE; if (input->pressedStartButton) { - PlaySoundEffect(SE_WIN_OPEN); + PlaySE(SE_WIN_OPEN); sub_8071310(); return TRUE; } @@ -261,7 +261,7 @@ static bool8 sub_80681F0(struct MapPosition *position, u16 b, u8 c) && script != gUnknown_0815F36C && script != gUnknown_0815F43A && script != gUnknown_081A0009) - PlaySoundEffect(5); + PlaySE(5); ScriptContext1_SetupScript(script); return TRUE; @@ -828,7 +828,7 @@ int dive_warp(struct MapPosition *position, u16 b) { walkrun_find_lowest_active_bit_in_bitfield(); sp13E_warp_to_last_warp(); - PlaySoundEffect(SE_W291); + PlaySE(SE_W291); return TRUE; } } @@ -838,7 +838,7 @@ int dive_warp(struct MapPosition *position, u16 b) { walkrun_find_lowest_active_bit_in_bitfield(); sp13E_warp_to_last_warp(); - PlaySoundEffect(SE_W291); + PlaySE(SE_W291); return TRUE; } } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index c0a71fcf4..6a0fe1dce 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -871,7 +871,7 @@ void PlayerTurnInPlace(u8 direction) void PlayerJumpLedge(u8 direction) { - PlaySoundEffect(SE_DANSA); + PlaySE(SE_DANSA); PlayerSetAnimId(GetJumpLedgeAnimId(direction), 8); } @@ -902,31 +902,31 @@ void sub_8059534(u8 a) void sub_805954C(u8 a) { - PlaySoundEffect(SE_JITE_PYOKO); + PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060A5C(a), 1); } void sub_8059570(u8 a) { - PlaySoundEffect(SE_JITE_PYOKO); + PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060A88(a), 2); } void sub_8059594(u8 a) { - PlaySoundEffect(SE_JITE_PYOKO); + PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060AB4(a), 8); } void sub_80595B8(u8 direction) { - PlaySoundEffect(SE_JITE_PYOKO); + PlaySE(SE_JITE_PYOKO); PlayerSetAnimId(sub_8060878(direction), 1); } void sub_80595DC(u8 direction) { - PlaySoundEffect(SE_WALL_HIT); + PlaySE(SE_WALL_HIT); PlayerSetAnimId(sub_8060AE0(direction), 2); } @@ -959,7 +959,7 @@ static void PlayCollisionSoundIfNotFacingWarp(u8 a) if (MetatileBehavior_IsWarpDoor(MapGridGetMetatileBehaviorAt(x, y))) return; } - PlaySoundEffect(SE_WALL_HIT); + PlaySE(SE_WALL_HIT); } } @@ -1292,7 +1292,7 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c) gUnknown_0202FF84[2] = c->elevation; gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority; FieldEffectStart(10); - PlaySoundEffect(SE_W070); + PlaySE(SE_W070); task->data[0]++; } return 0; @@ -1334,7 +1334,7 @@ u8 sub_805A000(struct Task *task, struct MapObject *mapObject) gPlayerAvatar.unk6 = 1; if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) { - PlaySoundEffect(SE_DANSA); + PlaySE(SE_DANSA); FieldObjectSetSpecialAnim(mapObject, sub_806084C(mapObject->mapobj_unk_18)); task->data[1]++; if (task->data[1] > 1) @@ -1370,7 +1370,7 @@ u8 sub_805A0D8(struct Task *task, struct MapObject *mapObject) task->data[1] = mapObject->placeholder18; gPlayerAvatar.unk6 = 1; ScriptContext2_Enable(); - PlaySoundEffect(SE_TK_WARPIN); + PlaySE(SE_TK_WARPIN); return 1; } diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 6282ea813..59280b743 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -157,7 +157,7 @@ void Task_HandleTruckSequence(u8 taskId) data[1] = 0; // reset the timer. data[2] = CreateTask(Task_Truck1, 0xA); data[0] = 1; // run the next case. - PlaySoundEffect(SE_TRACK_MOVE); + PlaySE(SE_TRACK_MOVE); } break; case 1: @@ -177,7 +177,7 @@ void Task_HandleTruckSequence(u8 taskId) DestroyTask(data[2]); data[3] = CreateTask(Task_Truck2, 0xA); data[0] = 3; - PlaySoundEffect(SE_TRACK_STOP); + PlaySE(SE_TRACK_STOP); } break; case 3: @@ -192,7 +192,7 @@ void Task_HandleTruckSequence(u8 taskId) data[1]++; if (data[1] == 90) { - PlaySoundEffect(SE_TRACK_HAIK); + PlaySE(SE_TRACK_HAIK); data[1] = 0; data[0] = 5; } @@ -205,7 +205,7 @@ void Task_HandleTruckSequence(u8 taskId) MapGridSetMetatileIdAt(11, 9, 528); MapGridSetMetatileIdAt(11, 10, 536); DrawWholeMapView(); - PlaySoundEffect(SE_TRACK_DOOR); + PlaySE(SE_TRACK_DOOR); DestroyTask(taskId); ScriptContext2_Disable(); } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 39e438620..77c8752d1 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -122,7 +122,7 @@ bool8 FldEff_CutGrass(void) u8 tileBehavior; u8 i, j; // not in for loop? - for(i = 0, PlaySoundEffect(SE_W015), PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y); i < 3; i++) + for(i = 0, PlaySE(SE_W015), PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y); i < 3; i++) { y = i - 1 + gUnknown_0203923C.y; for(j = 0; j < 3; j++) @@ -294,7 +294,7 @@ void sub_80A2AB8(void) void sub_80A2B00(void) { - PlaySoundEffect(0x80); + PlaySE(0x80); FieldEffectActiveListRemove(2); EnableBothScriptContexts(); } diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index f5372b53b..d0ee712af 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -122,7 +122,7 @@ static void sub_8133D50(u8 taskId) { return; } - PlaySoundEffect(SE_KAIFUKU); + PlaySE(SE_KAIFUKU); EWRAM_1C000.unk5 = gSprites[EWRAM_1000.unk1].data0; diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 8d23a41cb..4e8214b07 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -49,7 +49,7 @@ static void sub_812C01C(void) { u8 taskId; - PlaySoundEffect(0xEC); + PlaySE(0xEC); BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F); taskId = CreateTask(sub_812C084, 0); gTasks[taskId].data[0] = 0; diff --git a/src/intro.c b/src/intro.c index 00c9894cf..ea6edba3d 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1419,7 +1419,7 @@ static void Task_IntroPokemonBattle(u8 taskId) gSprites[spriteId].invisible = 1; } if (gIntroFrameCounter == 800) - PlaySoundEffect(SE_OP_BASYU); + PlaySE(SE_OP_BASYU); if (gIntroFrameCounter == 850) BeginNormalPaletteFade(0xFFFFFFFF, 4, 0, 0x10, 0xFFFF); if (gIntroFrameCounter == 946) diff --git a/src/item_use.c b/src/item_use.c index 5d0282844..4047ade5c 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -362,7 +362,7 @@ void RunItemfinderResults(u8 taskId) } return; } - PlaySoundEffect(SE_DAUGI); // play the itemfinder jingle 4 times before executing the itemfinder. + PlaySE(SE_DAUGI); // play the itemfinder jingle 4 times before executing the itemfinder. data[4]++; } data[3] = (data[3] + 1) & 0x1F; @@ -943,7 +943,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId) void sub_80C9EE4(u8 taskId) { - PlaySoundEffect(2); + PlaySE(2); gTasks[taskId].func = sub_80C9F10; } @@ -1002,7 +1002,7 @@ void sub_80CA098(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySoundEffect(0x75); + PlaySE(0x75); DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1); } } @@ -1095,7 +1095,7 @@ void sub_80CA2BC(u8 taskId) { if(++gTasks[taskId].data[15] > 7) { - PlaySoundEffect(1); + PlaySE(1); RemoveBagItem(gScriptItemId, 1); DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1); } diff --git a/src/link.c b/src/link.c index d06e71c03..224c0ae1c 100644 --- a/src/link.c +++ b/src/link.c @@ -1262,10 +1262,10 @@ static void CB2_PrintErrorMessage(void) break; case 30: case 60: - PlaySoundEffect(SE_BOO); + PlaySE(SE_BOO); break; case 90: - PlaySoundEffect(SE_BOO); + PlaySE(SE_BOO); break; } diff --git a/src/main_menu.c b/src/main_menu.c index c1e43e1a8..50fefc471 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -446,13 +446,13 @@ bool8 MainMenuProcessKeyInput(u8 taskId) { if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0x0000); gTasks[taskId].func = Task_MainMenuPressedA; } else if (gMain.newKeys & B_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0xFFFF); REG_WIN0H = WIN_RANGE(0, 240); REG_WIN0V = WIN_RANGE(0, 160); @@ -966,14 +966,14 @@ static void Task_NewGameSpeech16(u8 taskId) { case MALE: sub_8072DEC(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); gSaveBlock2.playerGender = MALE; MenuZeroFillWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: sub_8072DEC(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); gSaveBlock2.playerGender = FEMALE; MenuZeroFillWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; @@ -1069,19 +1069,19 @@ static void Task_NewGameSpeech21(u8 taskId) case 3: case 4: sub_8072DEC(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); gTasks[taskId].func = Task_NewGameSpeech23; break; case 0: //NEW NAME - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); BeginNormalPaletteFade(-1, 0, 0, 16, 0); gTasks[taskId].func = Task_NewGameSpeech22; break; case -1: //B button sub_8072DEC(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; @@ -1122,7 +1122,7 @@ static void Task_NewGameSpeech25(u8 taskId) switch (ProcessMenuInputNoWrap_()) { case 0: //YES - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 8, 7); gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND; StartSpriteFadeOut(taskId, 2); @@ -1131,7 +1131,7 @@ static void Task_NewGameSpeech25(u8 taskId) break; case -1: //B button case 1: //NO - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 8, 7); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu break; diff --git a/src/menu.c b/src/menu.c index 84093b9b7..ba98ff057 100644 --- a/src/menu.c +++ b/src/menu.c @@ -52,7 +52,7 @@ const struct MenuAction gMenuYesNoItems[] = void CloseMenu(void) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MenuZeroFillScreen(); sub_8064E2C(); ScriptContext2_Disable(); @@ -270,7 +270,7 @@ s8 ProcessMenuInput(void) { if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); if (gMenu.menu_field_7) sub_8072DEC(); return gMenu.cursorPos; @@ -285,13 +285,13 @@ s8 ProcessMenuInput(void) if (gMain.newKeys & DPAD_UP) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor(-1); return -2; } else if (gMain.newKeys & DPAD_DOWN) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor(1); return -2; } @@ -305,7 +305,7 @@ s8 ProcessMenuInputNoWrap(void) if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); if (gMenu.menu_field_7) sub_8072DEC(); return gMenu.cursorPos; @@ -321,13 +321,13 @@ s8 ProcessMenuInputNoWrap(void) if (gMain.newKeys & DPAD_UP) { if (cursorPos != MoveMenuCursorNoWrap(-1)) - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); return -2; } else if (gMain.newKeys & DPAD_DOWN) { if (cursorPos != MoveMenuCursorNoWrap(1)) - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); return -2; } @@ -520,7 +520,7 @@ s8 sub_80727CC(void) { if (gMenu.menu_field_7) sub_8072DEC(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); return GetMenuCursorPos(); } @@ -533,25 +533,25 @@ s8 sub_80727CC(void) if (gMain.newKeys & DPAD_UP) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor4(-gMenu.width); return -2; } else if (gMain.newKeys & DPAD_DOWN) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor4(gMenu.width); return -2; } else if (gMain.newKeys & DPAD_LEFT) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor4(-1); return -2; } else if (gMain.newKeys & DPAD_RIGHT) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MoveMenuCursor4(1); return -2; } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index c257e7573..97deb348c 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -113,13 +113,13 @@ static void CB2_MysteryEventMenu(void) case 3: if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) { - PlaySoundEffect(SE_PIN); + PlaySE(SE_PIN); sub_8072044(gSystemText_LoadEventPressA); gMain.state++; } if (gMain.newKeys & B_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); CloseLink(); gMain.state = 15; } @@ -139,7 +139,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); sub_8007F4C(); MenuDrawTextWindow(6, 5, 23, 8); MenuPrint(gSystemText_LoadingEvent, 7, 6); @@ -147,7 +147,7 @@ static void CB2_MysteryEventMenu(void) } else if (gMain.newKeys & B_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); CloseLink(); gMain.state = 15; } @@ -185,7 +185,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & B_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); CloseLink(); gMain.state = 15; break; @@ -199,7 +199,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); sub_8007F4C(); MenuDrawTextWindow(6, 5, 23, 8); MenuPrint(gSystemText_LoadingEvent, 7, 6); @@ -207,7 +207,7 @@ static void CB2_MysteryEventMenu(void) } else if (gMain.newKeys & B_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); CloseLink(); gMain.state = 15; } @@ -264,7 +264,7 @@ static void CB2_MysteryEventMenu(void) } if (gMain.newKeys & B_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); CloseLink(); gMain.state = 15; break; @@ -313,7 +313,7 @@ static void CB2_MysteryEventMenu(void) case 14: if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); gMain.state++; } break; diff --git a/src/naming_screen.c b/src/naming_screen.c index 531d12bdd..b14c690e2 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -453,7 +453,7 @@ static bool8 MainState_StartPageSwap(struct Task *task) StartPageSwapAnim(); sub_80B6888(1); sub_80B6460(0, 0, 1); - PlaySoundEffect(SE_WIN_OPEN); + PlaySE(SE_WIN_OPEN); namingScreenData.state = MAIN_STATE_WAIT_PAGE_SWAP; return FALSE; } @@ -607,7 +607,7 @@ static bool8 KeyboardKeyHandler_OK(u8 event) sub_80B6460(2, 1, 0); if (event == KBEVENT_PRESSED_A) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); namingScreenData.state = MAIN_STATE_6; return TRUE; } @@ -1370,7 +1370,7 @@ static void DeleteTextCharacter(void) var2 = GetKeyRoleAtCursorPos(); if (var2 == 0 || var2 == 2) sub_80B6460(1, 0, 1); - PlaySoundEffect(SE_BOWA); + PlaySE(SE_BOWA); } static bool8 sub_80B7004(void) @@ -1391,7 +1391,7 @@ static bool8 sub_80B7004(void) else AddTextCharacter(ch); sub_80B7960(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); if (r4) { if (GetPreviousTextCaretPosition() == namingScreenData.template->maxChars - 1) @@ -1422,7 +1422,7 @@ static void sub_80B7090(void) // DoInput? sub_80B72A4(r4, r5); } sub_80B7960(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } static bool8 sub_80B7104(void) diff --git a/src/party_menu.c b/src/party_menu.c index aebfd3307..d473eae6d 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -109,7 +109,7 @@ void sub_8070088(u8 taskId) gUnknown_0202E8F4 = 1; MenuZeroFillWindowRect(3, 14, 26, 19); - PlaySoundEffect(SE_KAIFUKU); + PlaySE(SE_KAIFUKU); PartyMenuUpdateLevelOrStatus(unk_201C000.pokemon, unk_201C000.var05); task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle()][unk_201C000.var05], 9); @@ -214,7 +214,7 @@ _08070134:\n\ movs r3, 0x13\n\ bl MenuZeroFillWindowRect\n\ movs r0, 0x1\n\ - bl PlaySoundEffect\n\ + bl PlaySE\n\ ldr r0, [r4]\n\ ldrb r1, [r4, 0x5]\n\ bl PartyMenuUpdateLevelOrStatus\n\ diff --git a/src/player_pc.c b/src/player_pc.c index a31ce0803..f0f0709b1 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -129,24 +129,24 @@ void PlayerPCProcessMenuInput(u8 taskId) { if (gMain.newAndRepeatedKeys & 0x40) { - PlaySoundEffect(5); + PlaySE(5); MoveMenuCursor(-1); } else if (gMain.newAndRepeatedKeys & 0x80) { - PlaySoundEffect(5); + PlaySE(5); MoveMenuCursor(1); } else if (gMain.newKeys & 0x1) { sub_8072DEC(); - PlaySoundEffect(5); + PlaySE(5); gUnknown_08406298[gUnknown_02039314[GetMenuCursorPos()]].func(taskId); } else if (gMain.newKeys & 0x2) { sub_8072DEC(); - PlaySoundEffect(5); + PlaySE(5); gUnknown_08406298[gUnknown_030007B4[gUnknown_02039314 - 1]].func(taskId); } } @@ -222,25 +222,25 @@ void ItemStorageMenuProcessInput(u8 var) { if (gMain.newAndRepeatedKeys & 0x40) { - PlaySoundEffect(5); + PlaySE(5); MoveMenuCursor(-1); ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); } else if (gMain.newAndRepeatedKeys & 0x80) { - PlaySoundEffect(5); + PlaySE(5); MoveMenuCursor(1); ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); } else if (gMain.newKeys & 0x1) { - PlaySoundEffect(5); + PlaySE(5); gUnknown_084062C0[GetMenuCursorPos()].func(var); } else if (gMain.newKeys & 0x2) { sub_8072DEC(); - PlaySoundEffect(5); + PlaySE(5); gUnknown_084062C0[3].func(var); } } @@ -353,7 +353,7 @@ void sub_813A280(u8 taskId) { if(data[0]) { - PlaySoundEffect(5); + PlaySE(5); data[0] = MoveMenuCursor(-1); var = data[1] + data[0]; if (!data[9]) @@ -372,7 +372,7 @@ void sub_813A280(u8 taskId) { if (!data[1]) return; - PlaySoundEffect(5); + PlaySE(5); data[1]--; sub_813AE0C(taskId); // probably further down @@ -384,7 +384,7 @@ void sub_813A280(u8 taskId) { if(data[0] != data[4] - 1) { - PlaySoundEffect(5); + PlaySE(5); data[0] = MoveMenuCursor(1); var = data[1] + data[0]; @@ -398,7 +398,7 @@ void sub_813A280(u8 taskId) } else if(data[1] + data[0] != data[2]) { - PlaySoundEffect(5); + PlaySE(5); data[1]++; sub_813AE0C(taskId); @@ -412,7 +412,7 @@ void sub_813A280(u8 taskId) { if (data[0] + data[1] != data[2]) { - PlaySoundEffect(5); + PlaySE(5); data[9] = 1; data[8] = data[1] + data[0]; sub_813AD58(0xFFF7); @@ -422,14 +422,14 @@ void sub_813A280(u8 taskId) } else // _0813A3E8 { - PlaySoundEffect(5); // merging? + PlaySE(5); // merging? sub_813AA30(taskId, 0); sub_813AE0C(taskId); } } else if(gMain.newKeys & A_BUTTON) { - PlaySoundEffect(5); + PlaySE(5); if(!data[9]) { if(data[1] + data[0] != data[2]) @@ -449,7 +449,7 @@ void sub_813A280(u8 taskId) } else if(gMain.newKeys & B_BUTTON) { - PlaySoundEffect(5); + PlaySE(5); if(!data[9]) { sub_8072DEC(); @@ -554,7 +554,7 @@ void HandleQuantityRolling(u8 taskId) } else if(gMain.newKeys & A_BUTTON) // confirm quantity. { - PlaySoundEffect(5); + PlaySE(5); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); if(!data[6]) @@ -564,7 +564,7 @@ void HandleQuantityRolling(u8 taskId) } else if(gMain.newKeys & B_BUTTON) // cancel quantity. { - PlaySoundEffect(5); + PlaySE(5); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); sub_80F98DC(0); sub_80F98DC(1); diff --git a/src/pokedex.c b/src/pokedex.c index 688cae9e9..5ea1f9938 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -361,7 +361,7 @@ void Task_PokedexMainScreen(u8 taskId) 0, 0, 0x10, 0); gSprites[gPokedexView->unk626].callback = sub_808EDB8; gTasks[taskId].func = sub_808CA64; - PlaySoundEffect(SE_PIN); + PlaySE(SE_PIN); } else if (gMain.newKeys & START_BUTTON) { @@ -370,11 +370,11 @@ void Task_PokedexMainScreen(u8 taskId) gPokedexView->menuIsOpen = 1; gPokedexView->menuCursorPos = 0; gTasks[taskId].func = Task_PokedexMainScreenMenu; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } else if (gMain.newKeys & SELECT_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].data[0] = sub_8091E3C(); gPokedexView->unk64F = 0; @@ -383,13 +383,13 @@ void Task_PokedexMainScreen(u8 taskId) gPokedexView->unk614 = gPokedexView->dexMode; gPokedexView->unk618 = gPokedexView->dexOrder; gTasks[taskId].func = sub_808CB8C; - PlaySoundEffect(SE_PC_LOGON); + PlaySE(SE_PC_LOGON); } else if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ClosePokedex; - PlaySoundEffect(SE_PC_OFF); + PlaySE(SE_PC_OFF); } else { @@ -444,7 +444,7 @@ void Task_PokedexMainScreenMenu(u8 taskId) case 3: //CLOSE POKEDEX BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ClosePokedex; - PlaySoundEffect(SE_PC_OFF); + PlaySE(SE_PC_OFF); break; } } @@ -454,17 +454,17 @@ void Task_PokedexMainScreenMenu(u8 taskId) { gPokedexView->menuIsOpen = 0; gTasks[taskId].func = Task_PokedexMainScreen; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos != 0) { gPokedexView->menuCursorPos--; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 2) { gPokedexView->menuCursorPos++; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } } } @@ -562,7 +562,7 @@ void Task_PokedexResultsScreen(u8 taskId) gSprites[gPokedexView->unk626].callback = sub_808EDB8; BeginNormalPaletteFade(~a, 0, 0, 0x10, 0); gTasks[taskId].func = sub_808D118; - PlaySoundEffect(SE_PIN); + PlaySE(SE_PIN); } else if (gMain.newKeys & START_BUTTON) { @@ -570,7 +570,7 @@ void Task_PokedexResultsScreen(u8 taskId) gPokedexView->menuIsOpen = 1; gPokedexView->menuCursorPos = 0; gTasks[taskId].func = Task_PokedexResultsScreenMenu; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } else if (gMain.newKeys & SELECT_BUTTON) { @@ -578,13 +578,13 @@ void Task_PokedexResultsScreen(u8 taskId) gTasks[taskId].data[0] = sub_8091E3C(); gPokedexView->unk64F = 0; gTasks[taskId].func = sub_808CB8C; - PlaySoundEffect(SE_PC_LOGON); + PlaySE(SE_PC_LOGON); } else if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; - PlaySoundEffect(SE_PC_OFF); + PlaySE(SE_PC_OFF); } else { @@ -635,12 +635,12 @@ void Task_PokedexResultsScreenMenu(u8 taskId) case 3: //BACK TO POKEDEX BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; - PlaySoundEffect(SE_TRACK_DOOR); + PlaySE(SE_TRACK_DOOR); break; case 4: //CLOSE POKEDEX BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex; - PlaySoundEffect(SE_PC_OFF); + PlaySE(SE_PC_OFF); break; } } @@ -650,17 +650,17 @@ void Task_PokedexResultsScreenMenu(u8 taskId) { gPokedexView->menuIsOpen = 0; gTasks[taskId].func = Task_PokedexResultsScreen; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_UP) && gPokedexView->menuCursorPos) { gPokedexView->menuCursorPos--; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } else if ((gMain.newAndRepeatedKeys & DPAD_DOWN) && gPokedexView->menuCursorPos <= 3) { gPokedexView->menuCursorPos++; - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } } } @@ -1371,7 +1371,7 @@ u16 sub_808E48C(u16 a, u16 b) gPokedexView->unk62C += (a - r6) * 16; sub_808E82C(); sub_808E0CC(a, 0xE); - PlaySoundEffect(SE_Z_PAGE); + PlaySE(SE_Z_PAGE); goto _0808E5A2; } //_0808E53C @@ -1387,7 +1387,7 @@ u16 sub_808E48C(u16 a, u16 b) gPokedexView->unk62C += (a - r6) * 16; sub_808E82C(); sub_808E0CC(a, 0xE); - PlaySoundEffect(SE_Z_PAGE); + PlaySE(SE_Z_PAGE); goto _0808E5A2; _0808E5A2: @@ -1402,7 +1402,7 @@ u16 sub_808E48C(u16 a, u16 b) sub_808E398(2, a); //goto _0808E60E sub_808DBE8(2, a, b); - PlaySoundEffect(SE_Z_SCROLL); + PlaySE(SE_Z_SCROLL); } //_0808E5E4 else @@ -1412,7 +1412,7 @@ u16 sub_808E48C(u16 a, u16 b) sub_808E398(1, a); //_0808E60E sub_808DBE8(1, a, b); - PlaySoundEffect(SE_Z_SCROLL); + PlaySE(SE_Z_SCROLL); } //_0808E60E goto _0808E5A2; @@ -1511,7 +1511,7 @@ _0808E4E0:\n\ movs r1, 0xE\n\ bl sub_808E0CC\n\ movs r0, 0x6D\n\ - bl PlaySoundEffect\n\ + bl PlaySE\n\ b _0808E5A2\n\ .align 2, 0\n\ _0808E52C: .4byte gMain\n\ @@ -1566,7 +1566,7 @@ _0808E55A:\n\ movs r1, 0xE\n\ bl sub_808E0CC\n\ movs r0, 0x6D\n\ - bl PlaySoundEffect\n\ + bl PlaySE\n\ _0808E5A2:\n\ mov r0, r10\n\ cmp r0, 0\n\ @@ -1623,7 +1623,7 @@ _0808E60E:\n\ adds r2, r4, 0\n\ bl sub_808DBE8\n\ movs r0, 0x6C\n\ - bl PlaySoundEffect\n\ + bl PlaySE\n\ b _0808E5A2\n\ .align 2, 0\n\ _0808E620: .4byte gPokedexView\n\ @@ -2335,13 +2335,13 @@ void Task_PageScreenProcessInput(u8 taskId) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = sub_808F888; - PlaySoundEffect(SE_Z_SCROLL); + PlaySE(SE_Z_SCROLL); } else if (gMain.newKeys & B_BUTTON) { BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); gTasks[taskId].func = Task_ClosePageScreen; - PlaySoundEffect(SE_PC_OFF); + PlaySE(SE_PC_OFF); } else if (gMain.newKeys & A_BUTTON) { @@ -2353,21 +2353,21 @@ void Task_PageScreenProcessInput(u8 taskId) case AREA_SCREEN: BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gTasks[taskId].func = Task_InitAreaScreenMultistep; - PlaySoundEffect(SE_PIN); + PlaySE(SE_PIN); break; case CRY_SCREEN: BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gTasks[taskId].func = Task_InitCryScreenMultistep; - PlaySoundEffect(SE_PIN); + PlaySE(SE_PIN); break; case SIZE_SCREEN: if (!gUnknown_0202FFBC->owned) - PlaySoundEffect(SE_HAZURE); + PlaySE(SE_HAZURE); else { BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gTasks[taskId].func = Task_InitSizeScreenMultistep; - PlaySoundEffect(SE_PIN); + PlaySE(SE_PIN); } break; } @@ -2378,7 +2378,7 @@ void Task_PageScreenProcessInput(u8 taskId) { gPokedexView->selectedScreen--; sub_8090584(gPokedexView->selectedScreen, 0xD); - PlaySoundEffect(SE_Z_PAGE); + PlaySE(SE_Z_PAGE); } else if (((gMain.newKeys & DPAD_RIGHT) || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) @@ -2386,7 +2386,7 @@ void Task_PageScreenProcessInput(u8 taskId) { gPokedexView->selectedScreen++; sub_8090584(gPokedexView->selectedScreen, 0xD); - PlaySoundEffect(SE_Z_PAGE); + PlaySE(SE_Z_PAGE); } } @@ -2581,7 +2581,7 @@ void Task_CryScreenProcessInput(u8 taskId) m4aMPlayContinue(&gMPlay_BGM); gPokedexView->unk64F = 1; gTasks[taskId].func = sub_808FFBC; - PlaySoundEffect(SE_PC_OFF); + PlaySE(SE_PC_OFF); } else if ((gMain.newKeys & DPAD_LEFT) || ((gMain.newKeys & L_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) @@ -2590,20 +2590,20 @@ void Task_CryScreenProcessInput(u8 taskId) m4aMPlayContinue(&gMPlay_BGM); gPokedexView->unk64F = 2; gTasks[taskId].func = sub_808FFBC; - PlaySoundEffect(SE_Z_PAGE); + PlaySE(SE_Z_PAGE); } else if ((gMain.newKeys & DPAD_RIGHT) || ((gMain.newKeys & R_BUTTON) && gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { if (!gUnknown_0202FFBC->owned) - PlaySoundEffect(SE_HAZURE); + PlaySE(SE_HAZURE); else { BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); m4aMPlayContinue(&gMPlay_BGM); gPokedexView->unk64F = 3; gTasks[taskId].func = sub_808FFBC; - PlaySoundEffect(SE_Z_PAGE); + PlaySE(SE_Z_PAGE); } } } @@ -2737,7 +2737,7 @@ void Task_SizeScreenProcessInput(u8 taskId) BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gPokedexView->unk64F = 1; gTasks[taskId].func = sub_8090498; - PlaySoundEffect(SE_PC_OFF); + PlaySE(SE_PC_OFF); } //_08090430 else if ((gMain.newKeys & DPAD_LEFT) @@ -2746,7 +2746,7 @@ void Task_SizeScreenProcessInput(u8 taskId) BeginNormalPaletteFade(-0x15, 0, 0, 0x10, 0); gPokedexView->unk64F = 2; gTasks[taskId].func = sub_8090498; - PlaySoundEffect(SE_Z_PAGE); + PlaySE(SE_Z_PAGE); } } diff --git a/src/record_mixing.c b/src/record_mixing.c index f8c684161..58722010f 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -94,7 +94,7 @@ void Task_RecordMixing_SoundEffect(u8 taskId) gTasks[taskId].data[0]++; if (gTasks[taskId].data[0] == 50) { - PlaySoundEffect(SE_W213); + PlaySE(SE_W213); gTasks[taskId].data[0] = 0; } } @@ -128,7 +128,7 @@ void Task_RecordMixing_Main(u8 taskId) case 2: taskData[10] = CreateTask(sub_80BA00C, 10); taskData[TD_STATE] = 3; - PlaySoundEffect(SE_W226); + PlaySE(SE_W226); break; case 3: // wait for sub_80BA00C if (!gTasks[taskData[10]].isActive) @@ -187,14 +187,14 @@ void sub_80B95F0(u8 taskId) { if (players == sub_800820C()) { - PlaySoundEffect(0x15); + PlaySE(0x15); task->data[TD_STATE] = 201; task->data[12] = 0; } } else { - PlaySoundEffect(0x16); + PlaySE(0x16); task->data[TD_STATE] = 301; } break; diff --git a/src/rom4.c b/src/rom4.c index 9ed08aa7f..79ac6d769 100644 --- a/src/rom4.c +++ b/src/rom4.c @@ -2203,28 +2203,28 @@ void sub_80557E8(void) void sub_80557F4(void) { - PlaySoundEffect(SE_WIN_OPEN); + PlaySE(SE_WIN_OPEN); sub_8071310(); ScriptContext2_Enable(); } void sub_8055808(u8 *script) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); ScriptContext1_SetupScript(script); ScriptContext2_Enable(); } void sub_8055824(void) { - PlaySoundEffect(SE_WIN_OPEN); + PlaySE(SE_WIN_OPEN); ScriptContext1_SetupScript(TradeRoom_PromptToCancelLink); ScriptContext2_Enable(); } void sub_8055840(u8 *script) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); ScriptContext1_SetupScript(script); ScriptContext2_Enable(); } diff --git a/src/rom6.c b/src/rom6.c index a8c489e70..a2b52c9aa 100644 --- a/src/rom6.c +++ b/src/rom6.c @@ -150,7 +150,7 @@ int FldEff_RockSmash(void) static void sub_810B58C(void) { - PlaySoundEffect(SE_W088); + PlaySE(SE_W088); FieldEffectActiveListRemove(0x25); EnableBothScriptContexts(); } diff --git a/src/scrcmd.c b/src/scrcmd.c index fa3467d22..136181bd3 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -807,7 +807,7 @@ bool8 ScrCmd_countpokemon(struct ScriptContext *ctx) bool8 ScrCmd_playsfx(struct ScriptContext *ctx) { - PlaySoundEffect(ScriptReadHalfword(ctx)); + PlaySE(ScriptReadHalfword(ctx)); return FALSE; } @@ -1787,7 +1787,7 @@ bool8 ScrCmd_setdooropened(struct ScriptContext *ctx) u16 y = VarGet(ScriptReadHalfword(ctx)); x += 7; y += 7; - PlaySoundEffect(sub_8058790(x, y)); + PlaySE(sub_8058790(x, y)); FieldAnimateDoorOpen(x, y); return FALSE; } diff --git a/src/script_menu.c b/src/script_menu.c index 38f7f0af5..eba438397 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -672,7 +672,7 @@ void sub_80B52B4(u8 taskId) { if (!gTasks[taskId].data[4]) { - PlaySoundEffect(5); + PlaySE(5); gScriptResult = 127; } else @@ -770,7 +770,7 @@ void task_yes_no_maybe(u8 taskId) return; case -1: case 1: - PlaySoundEffect(5); + PlaySE(5); gScriptResult = 0; break; case 0: @@ -835,7 +835,7 @@ void sub_80B5684(u8 taskId) { if (!gTasks[taskId].data[4]) { - PlaySoundEffect(5); + PlaySE(5); gScriptResult = 127; } else diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index 2efc0e2c6..ce62f2abb 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -169,13 +169,13 @@ void sub_80F9C6C(u8 var) switch(sub_806BD80(var)) { case 1: - PlaySoundEffect(5); + PlaySE(5); gUnknown_02038694 = sub_806CA38(var); gSpecialVar_0x8004 = gUnknown_02038694; sub_8123138(var); break; case 2: - PlaySoundEffect(5); + PlaySE(5); gUnknown_02038694 = 0xFF; gSpecialVar_0x8004 = 0xFF; sub_8123138(var); @@ -268,13 +268,13 @@ void sub_80F9E64(u8 var) switch(sub_806BD80(var)) { case 1: - PlaySoundEffect(5); + PlaySE(5); gSpecialVar_0x8004 = sub_806CA38(var); gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); sub_8123138(var); break; case 2: - PlaySoundEffect(5); + PlaySE(5); gSpecialVar_0x8004 = 0xFF; sub_8123138(var); } diff --git a/src/shop.c b/src/shop.c index 27aa5b335..780dff02a 100644 --- a/src/shop.c +++ b/src/shop.c @@ -106,7 +106,7 @@ void sub_80B2E38(u8 var) { if(gUnknown_03000708.unk9) { - PlaySoundEffect(0x5); + PlaySE(0x5); gUnknown_03000708.unk9 = MoveMenuCursor(-1); } } @@ -114,13 +114,13 @@ void sub_80B2E38(u8 var) { if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA) { - PlaySoundEffect(0x5); + PlaySE(0x5); gUnknown_03000708.unk9 = MoveMenuCursor(1); } } else if (gMain.newKeys & 1) { - PlaySoundEffect(0x5); + PlaySE(0x5); if(!gUnknown_03000708.unkC) { gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local); @@ -132,7 +132,7 @@ void sub_80B2E38(u8 var) } else if(gMain.newKeys & 2) { - PlaySoundEffect(0x5); + PlaySE(0x5); HandleShopMenuQuit(local); } } diff --git a/src/sound.c b/src/sound.c index 897b13ddf..ed69ca01d 100644 --- a/src/sound.c +++ b/src/sound.c @@ -521,12 +521,12 @@ void PlayBGM(u16 songNum) m4aSongNumStart(songNum); } -void PlaySoundEffect(u16 songNum) +void PlaySE(u16 songNum) { m4aSongNumStart(songNum); } -void PlaySoundEffect12WithPanning(u16 songNum, s8 pan) +void PlaySE12WithPanning(u16 songNum, s8 pan) { m4aSongNumStart(songNum); m4aMPlayImmInit(&gMPlay_SE1); @@ -535,14 +535,14 @@ void PlaySoundEffect12WithPanning(u16 songNum, s8 pan) m4aMPlayPanpotControl(&gMPlay_SE2, 0xFFFF, pan); } -void PlaySoundEffect1WithPanning(u16 songNum, s8 pan) +void PlaySE1WithPanning(u16 songNum, s8 pan) { m4aSongNumStart(songNum); m4aMPlayImmInit(&gMPlay_SE1); m4aMPlayPanpotControl(&gMPlay_SE1, 0xFFFF, pan); } -void PlaySoundEffect2WithPanning(u16 songNum, s8 pan) +void PlaySE2WithPanning(u16 songNum, s8 pan) { m4aSongNumStart(songNum); m4aMPlayImmInit(&gMPlay_SE2); diff --git a/src/start_menu.c b/src/start_menu.c index 4c3a0b6e1..37d361c0b 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -315,17 +315,17 @@ static u8 StartMenu_InputProcessCallback(void) { if (gMain.newKeys & DPAD_UP) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); sStartMenuCursorPos = MoveMenuCursor(-1); } if (gMain.newKeys & DPAD_DOWN) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); sStartMenuCursorPos = MoveMenuCursor(1); } if (gMain.newKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); if (sStartMenuItems[sCurrentStartMenuActions[sStartMenuCursorPos]].func == StartMenu_PokedexCallback) { if (GetNationalPokedexCount(0) == 0) @@ -566,7 +566,7 @@ static bool8 SaveDialogCheckForTimeoutOrKeypress(void) saveDialogTimer--; if (gMain.heldKeys & A_BUTTON) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); return TRUE; } else if (saveDialogTimer == 0) @@ -702,7 +702,7 @@ static u8 SaveDialogCB_SaveSuccess(void) { if (MenuUpdateWindowText()) { - PlaySoundEffect(SE_SAVE); + PlaySE(SE_SAVE); saveDialogCallback = SaveDialogCB_ReturnSuccess; } return SAVE_IN_PROGRESS; @@ -723,7 +723,7 @@ static u8 SaveDialogCB_SaveError(void) { if (MenuUpdateWindowText()) { - PlaySoundEffect(SE_BOO); + PlaySE(SE_BOO); saveDialogCallback = SaveDialogCB_ReturnError; } return SAVE_IN_PROGRESS; diff --git a/src/starter_choose.c b/src/starter_choose.c index e133c6212..6ef410d21 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -455,7 +455,7 @@ static void Task_StarterChoose5(u8 taskId) break; case 1: // NO case -1: // B button - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(21, 7, 27, 12); spriteId = gTasks[taskId].tPkmnSpriteId; diff --git a/src/text.c b/src/text.c index ee5089c4d..7be72833a 100644 --- a/src/text.c +++ b/src/text.c @@ -136,7 +136,7 @@ static u8 ExtCtrlCode_Escape(struct Window *); static u8 ExtCtrlCode_Nop2(struct Window *); static u8 ExtCtrlCode_SetCursorY(struct Window *); static u8 ExtCtrlCode_ClearWindowTextLines(struct Window *); -static u8 ExtCtrlCode_PlaySoundEffect(struct Window *); +static u8 ExtCtrlCode_PlaySE(struct Window *); static u8 ExtCtrlCode_Skip(struct Window *); static u8 ExtCtrlCode_SetCursorX(struct Window *); static u8 ExtCtrlCode_SkipTo(struct Window *); @@ -380,7 +380,7 @@ static const ExtCtrlCodeFunc sExtCtrlCodeFuncs[] = ExtCtrlCode_Nop2, ExtCtrlCode_SetCursorY, ExtCtrlCode_ClearWindowTextLines, - ExtCtrlCode_PlaySoundEffect, + ExtCtrlCode_PlaySE, ExtCtrlCode_Skip, ExtCtrlCode_SetCursorX, ExtCtrlCode_SkipTo, @@ -2197,11 +2197,11 @@ static u8 ExtCtrlCode_ClearWindowTextLines(struct Window *win) return 2; } -static u8 ExtCtrlCode_PlaySoundEffect(struct Window *win) +static u8 ExtCtrlCode_PlaySE(struct Window *win) { u16 loByte = win->text[win->textIndex++]; u16 hiByte = win->text[win->textIndex++] << 8; - PlaySoundEffect(loByte | hiByte); + PlaySE(loByte | hiByte); return 2; } @@ -2377,7 +2377,7 @@ static u8 UpdateWindowText(struct Window *win) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); } else { @@ -3187,7 +3187,7 @@ static u8 WaitWithDownArrow(struct Window *win) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); TryEraseDownArrow(win); } else diff --git a/src/trainer_card.c b/src/trainer_card.c index 945d469e3..e6ed79c15 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -662,7 +662,7 @@ bool8 sub_80938CC(struct Task *task) bool8 sub_8093918(struct Task *task) { sub_8093A28(); - PlaySoundEffect(SE_CARD); + PlaySE(SE_CARD); ewram0.var_0 += 1; diff --git a/src/wallclock.c b/src/wallclock.c index f8c3fdeea..0f3665c65 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -429,13 +429,13 @@ static void Task_SetClock4(u8 taskId) switch (ProcessMenuInputNoWrap_()) { case 0: //YES - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); gTasks[taskId].func = Task_SetClock5; //Move on return; case -1: //B button case 1: //NO sub_8072DEC(); - PlaySoundEffect(SE_SELECT); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(23, 8, 29, 13); MenuZeroFillWindowRect(2, 16, 27, 19); gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock -- cgit v1.2.3 From 9a23ccb9d77227e3a866b66b52f995ec0f112af0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 14:33:21 -0400 Subject: Berry tree field map object callback --- asm/field_map_obj.s | 298 ---------------------------------------------------- src/field_map_obj.c | 111 ++++++++++++++++++- 2 files changed, 110 insertions(+), 299 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 8ce2ecb70..88703f251 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,304 +6,6 @@ .text - thumb_func_start FieldObjectCB_BerryTree -FieldObjectCB_BerryTree: @ 805D2D0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805D30C @ =gMapObjects - adds r5, r0, r1 - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0805D2FC - adds r0, r5, 0 - adds r1, r4, 0 - bl get_berry_tree_graphics - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - orrs r0, r1 - strh r0, [r4, 0x3C] -_0805D2FC: - ldr r2, _0805D310 @ =sub_805D314 - adds r0, r5, 0 - adds r1, r4, 0 - bl meta_step - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805D30C: .4byte gMapObjects -_0805D310: .4byte sub_805D314 - thumb_func_end FieldObjectCB_BerryTree - - thumb_func_start sub_805D314 -sub_805D314: @ 805D314 - push {r4,lr} - ldr r3, _0805D330 @ =gUnknown_083752D0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D330: .4byte gUnknown_083752D0 - thumb_func_end sub_805D314 - - thumb_func_start do_berry_tree_growth_sparkle_1 -do_berry_tree_growth_sparkle_1: @ 805D334 - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r6, r5, 0 - adds r6, 0x3E - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - ldrb r0, [r4, 0x1D] - bl GetStageByBerryTreeId - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - bne _0805D3A4 - ldrh r1, [r5, 0x3C] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0805D39A - subs r6, 0x14 - ldrb r0, [r6] - cmp r0, 0x4 - bne _0805D39A - ldr r1, _0805D3A0 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r0, [r4, r2] - str r0, [r1] - movs r2, 0x12 - ldrsh r0, [r4, r2] - str r0, [r1, 0x4] - adds r0, r5, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - str r0, [r1, 0x8] - ldrb r0, [r5, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r1, 0xC] - movs r0, 0x17 - bl FieldEffectStart - strb r7, [r6] -_0805D39A: - movs r0, 0 - b _0805D3E6 - .align 2, 0 -_0805D3A0: .4byte gUnknown_0202FF84 -_0805D3A4: - ldrb r1, [r4, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r6] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - subs r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, r7 - bne _0805D3E0 - adds r0, r4, 0 - adds r1, r5, 0 - bl get_berry_tree_graphics - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x39 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - b _0805D3E6 -_0805D3E0: - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 -_0805D3E6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end do_berry_tree_growth_sparkle_1 - - thumb_func_start sub_805D3EC -sub_805D3EC: @ 805D3EC - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - bne _0805D3FE - movs r0, 0 - b _0805D404 -_0805D3FE: - movs r0, 0 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D404: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D3EC - - thumb_func_start do_berry_tree_growth_sparkle_2 -do_berry_tree_growth_sparkle_2: @ 805D40C - push {r4,lr} - ldrb r2, [r0] - movs r3, 0x2 - orrs r2, r3 - strb r2, [r0] - movs r3, 0 - movs r2, 0x3 - strh r2, [r1, 0x30] - strh r3, [r1, 0x32] - ldrh r3, [r1, 0x3C] - movs r2, 0x2 - orrs r2, r3 - strh r2, [r1, 0x3C] - ldr r3, _0805D454 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r2, 0x12 - ldrsh r0, [r0, r2] - str r0, [r3, 0x4] - adds r0, r1, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0x17 - bl FieldEffectStart - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D454: .4byte gUnknown_0202FF84 - thumb_func_end do_berry_tree_growth_sparkle_2 - - thumb_func_start sub_805D458 -sub_805D458: @ 805D458 - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4, 0x32] - adds r1, 0x1 - strh r1, [r4, 0x32] - movs r0, 0x2 - ands r1, r0 - lsls r1, 16 - lsrs r1, 17 - lsls r1, 5 - ldrb r2, [r3, 0x1] - subs r0, 0x23 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x40 - bgt _0805D490 - movs r0, 0 - b _0805D4A2 -_0805D490: - adds r0, r3, 0 - adds r1, r4, 0 - bl get_berry_tree_graphics - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0805D4A2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D458 - - thumb_func_start sub_805D4A8 -sub_805D4A8: @ 805D4A8 - push {r4,lr} - adds r4, r1, 0 - ldrh r2, [r4, 0x32] - adds r2, 0x1 - strh r2, [r4, 0x32] - movs r1, 0x2 - ands r2, r1 - lsls r2, 16 - lsrs r2, 17 - lsls r2, 5 - ldrb r3, [r0, 0x1] - subs r1, 0x23 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x40 - bgt _0805D4DE - movs r0, 0 - b _0805D4EC -_0805D4DE: - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x3C] - subs r0, 0x3 - ands r0, r1 - strh r0, [r4, 0x3C] - movs r0, 0x1 -_0805D4EC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D4A8 - thumb_func_start sub_805D4F4 sub_805D4F4: @ 805D4F4 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 7e75d0ac1..98bc73390 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4,6 +4,7 @@ #include "berry.h" #include "event_data.h" #include "field_player_avatar.h" +#include "field_effect.h" #include "palette.h" #include "rom4.h" #include "rng.h" @@ -39,6 +40,7 @@ extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -2113,7 +2115,114 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -void FieldObjectCB_BerryTree(struct Sprite *sprite); +u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite); + +void FieldObjectCB_BerryTree(struct Sprite *sprite) +{ + struct MapObject *mapObject; + mapObject = &gMapObjects[sprite->data0]; + if (!(sprite->data7 & 1)) + { + get_berry_tree_graphics(mapObject, sprite); + sprite->data7 |= 1; + } + meta_step(mapObject, sprite, sub_805D314); +} + +u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752D0[sprite->data1](mapObject, sprite); +} + +extern u32 gUnknown_0202FF84[]; + +u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 berryTreeStage; + npc_reset(mapObject, sprite); + mapObject->mapobj_bit_13 = 1; + sprite->invisible = 1; + berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId); + if (!berryTreeStage) + { + if (!(sprite->data7 & 4) && sprite->animNum == 4) + { + gUnknown_0202FF84[0] = mapObject->coords2.x; + gUnknown_0202FF84[1] = mapObject->coords2.y; + gUnknown_0202FF84[2] = sprite->subpriority - 1; + gUnknown_0202FF84[3] = sprite->oam.priority; + FieldEffectStart(0x17); + sprite->animNum = 0; + } + return 0; + } + mapObject->mapobj_bit_13 = 0; + sprite->invisible = 0; + berryTreeStage--; + if (sprite->animNum != berryTreeStage) + { + sprite->data1 = 2; + return 1; + } + get_berry_tree_graphics(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, 0x39); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sprite->data1 = 0; + return 1; + } + return 0; +} + +u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 3; + sprite->data2 = 0; + sprite->data7 |= 2; + gUnknown_0202FF84[0] = mapObject->coords2.x; + gUnknown_0202FF84[1] = mapObject->coords2.y; + gUnknown_0202FF84[2] = sprite->subpriority - 1; + gUnknown_0202FF84[3] = sprite->oam.priority; + FieldEffectStart(0x17); + return 1; +} + +u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data2++; + mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->animPaused = 1; + if (sprite->data2 > 64) + { + get_berry_tree_graphics(mapObject, sprite); + sprite->data1 = 4; + sprite->data2 = 0; + return 1; + } + return 0; +} + +u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data2++; + mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->animPaused = 1; + if (sprite->data2 > 64) + { + sprite->data1 = 0; + sprite->data7 &= (-3); + return 1; + } + return 0; +} + void sub_805D4F4(struct Sprite *sprite); void sub_805D634(struct Sprite *sprite); void sub_805D774(struct Sprite *sprite); -- cgit v1.2.3 From 14009f364fff159c58063be0f73b51f129a872d2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 14:48:51 -0400 Subject: Fix ruby rev2 --- src/field_player_avatar.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 6a0fe1dce..71ff40435 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -27,7 +27,7 @@ extern u8 gOtherText_ItGotAway[]; extern u32 gUnknown_0202FF84[]; //Functions -static u32 sub_80587D8(void); +static u8 sub_80587D8(void); static bool8 sub_8058854(struct MapObject *, u8); static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); @@ -252,7 +252,7 @@ void sub_80587B4(struct Sprite *sprite) meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8); } -static u32 sub_80587D8(void) +static u8 sub_80587D8(void) { return 0; } -- cgit v1.2.3 From 67dd78ddc1989009efc68994fcdb11f688fc7092 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 13 May 2017 03:00:49 +0200 Subject: Decompile more of easy_chat --- asm/easy_chat.s | 334 ------------------------------------------------------ include/asm.inc.h | 2 +- src/easy_chat.c | 231 ++++++++++++++++++++++++++++++++++++- 3 files changed, 229 insertions(+), 338 deletions(-) diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 466d371a1..2983deea0 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -10831,338 +10831,4 @@ _080EB4AC: .4byte gEasyChatGroupWords _080EB4B0: .4byte 0x0000ffff thumb_func_end sub_80EB3FC - thumb_func_start ConvertEasyChatWordsToString -ConvertEasyChatWordsToString: @ 80EB4B4 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 16 - lsls r3, 16 - lsrs r3, 16 - mov r9, r3 - ldr r0, _080EB53C @ =0xffff0000 - adds r2, r0 - lsrs r7, r2, 16 - movs r0, 0 - cmp r0, r9 - bcs _080EB524 -_080EB4D6: - movs r6, 0 - adds r0, 0x1 - mov r8, r0 - cmp r6, r7 - bcs _080EB508 - ldr r2, _080EB540 @ =0x0000ffff -_080EB4E2: - ldrh r1, [r5] - adds r0, r4, 0 - str r2, [sp] - bl sub_80EB3FC - adds r4, r0, 0 - ldrh r0, [r5] - ldr r2, [sp] - cmp r0, r2 - beq _080EB4FC - movs r0, 0 - strb r0, [r4] - adds r4, 0x1 -_080EB4FC: - adds r5, 0x2 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r7 - bcc _080EB4E2 -_080EB508: - ldrh r1, [r5] - adds r5, 0x2 - adds r0, r4, 0 - bl sub_80EB3FC - adds r4, r0, 0 - movs r0, 0xFE - strb r0, [r4] - adds r4, 0x1 - mov r1, r8 - lsls r0, r1, 16 - lsrs r0, 16 - cmp r0, r9 - bcc _080EB4D6 -_080EB524: - subs r4, 0x1 - movs r0, 0xFF - strb r0, [r4] - adds r0, r4, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080EB53C: .4byte 0xffff0000 -_080EB540: .4byte 0x0000ffff - thumb_func_end ConvertEasyChatWordsToString - - thumb_func_start sub_80EB544 -sub_80EB544: @ 80EB544 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 16 - lsls r3, 16 - lsrs r3, 16 - mov r10, r3 - ldr r0, _080EB5B0 @ =0xffff0000 - adds r2, r0 - lsrs r2, 16 - mov r8, r2 - movs r7, 0 - cmp r7, r10 - bcs _080EB5C8 -_080EB56A: - movs r6, 0 - adds r1, r7, 0x1 - mov r9, r1 - cmp r6, r8 - bcs _080EB59C - ldr r2, _080EB5B4 @ =0x0000ffff -_080EB576: - ldrh r1, [r5] - adds r0, r4, 0 - str r2, [sp] - bl sub_80EB3FC - adds r4, r0, 0 - ldrh r0, [r5] - ldr r2, [sp] - cmp r0, r2 - beq _080EB590 - movs r0, 0 - strb r0, [r4] - adds r4, 0x1 -_080EB590: - adds r5, 0x2 - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, r8 - bcc _080EB576 -_080EB59C: - ldrh r1, [r5] - adds r5, 0x2 - adds r0, r4, 0 - bl sub_80EB3FC - adds r4, r0, 0 - cmp r7, 0 - bne _080EB5B8 - movs r0, 0xFE - b _080EB5BA - .align 2, 0 -_080EB5B0: .4byte 0xffff0000 -_080EB5B4: .4byte 0x0000ffff -_080EB5B8: - movs r0, 0xFA -_080EB5BA: - strb r0, [r4] - adds r4, 0x1 - mov r1, r9 - lsls r0, r1, 16 - lsrs r7, r0, 16 - cmp r7, r10 - bcc _080EB56A -_080EB5C8: - subs r4, 0x1 - movs r0, 0xFF - strb r0, [r4] - adds r0, r4, 0 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80EB544 - - thumb_func_start unref_sub_80EB5E0 -unref_sub_80EB5E0: @ 80EB5E0 - push {lr} - lsls r1, r0, 16 - lsrs r3, r1, 16 - ldr r0, _080EB5F0 @ =0x0000ffff - cmp r3, r0 - bne _080EB5F4 - movs r0, 0 - b _080EB67C - .align 2, 0 -_080EB5F0: .4byte 0x0000ffff -_080EB5F4: - lsrs r1, 25 - ldr r2, _080EB608 @ =0x000001ff - ands r2, r3 - cmp r1, 0x13 - bgt _080EB60C - cmp r1, 0x12 - bge _080EB620 - cmp r1, 0 - beq _080EB610 - b _080EB630 - .align 2, 0 -_080EB608: .4byte 0x000001ff -_080EB60C: - cmp r1, 0x15 - bne _080EB630 -_080EB610: - movs r0, 0xB - adds r1, r2, 0 - muls r1, r0 - ldr r0, _080EB61C @ =gSpeciesNames - adds r1, r0 - b _080EB660 - .align 2, 0 -_080EB61C: .4byte gSpeciesNames -_080EB620: - movs r0, 0xD - adds r1, r2, 0 - muls r1, r0 - ldr r0, _080EB62C @ =gMoveNames - adds r1, r0 - b _080EB660 - .align 2, 0 -_080EB62C: .4byte gMoveNames -_080EB630: - ldr r0, _080EB664 @ =gEasyChatGroupWords - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - subs r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _080EB668 @ =0x0000ffff - cmp r2, r0 - beq _080EB660 - adds r3, r0, 0 -_080EB646: - ldrb r0, [r1] - adds r1, 0x1 - subs r2, 0x1 - cmp r0, 0xFF - beq _080EB658 -_080EB650: - ldrb r0, [r1] - adds r1, 0x1 - cmp r0, 0xFF - bne _080EB650 -_080EB658: - lsls r0, r2, 16 - lsrs r2, r0, 16 - cmp r2, r3 - bne _080EB646 -_080EB660: - movs r2, 0 - b _080EB674 - .align 2, 0 -_080EB664: .4byte gEasyChatGroupWords -_080EB668: .4byte 0x0000ffff -_080EB66C: - adds r1, 0x1 - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 -_080EB674: - ldrb r0, [r1] - cmp r0, 0xFF - bne _080EB66C - adds r0, r2, 0 -_080EB67C: - pop {r1} - bx r1 - thumb_func_end unref_sub_80EB5E0 - - thumb_func_start sub_80EB680 -sub_80EB680: @ 80EB680 - movs r0, 0 - bx lr - thumb_func_end sub_80EB680 - - thumb_func_start unref_sub_80EB684 -unref_sub_80EB684: @ 80EB684 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - adds r2, r0, 0 - lsls r1, 16 - lsrs r1, 16 - cmp r0, 0x7 - beq _080EB6B4 - cmp r0, 0x7 - bgt _080EB69E - cmp r0, 0x5 - beq _080EB6A4 - b _080EB6EE -_080EB69E: - cmp r2, 0x8 - beq _080EB6C4 - b _080EB6EE -_080EB6A4: - movs r2, 0x6 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080EB6B0 @ =gSaveBlock1 + 0x273C - b _080EB6CE - .align 2, 0 -_080EB6B0: .4byte gSaveBlock1 + 0x273C -_080EB6B4: - movs r2, 0x2 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080EB6C0 @ =gSaveBlock1 + 0x2754 - b _080EB6CE - .align 2, 0 -_080EB6C0: .4byte gSaveBlock1 + 0x2754 -_080EB6C4: - movs r2, 0x1 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080EB6F4 @ =gSaveBlock1 + 0x273A -_080EB6CE: - adds r1, r0, r1 - subs r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _080EB6F8 @ =0x0000ffff - cmp r2, r0 - beq _080EB6EE - adds r4, r0, 0 - adds r3, r0, 0 -_080EB6E0: - strh r4, [r1] - adds r1, 0x2 - subs r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r3 - bne _080EB6E0 -_080EB6EE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080EB6F4: .4byte gSaveBlock1 + 0x273A -_080EB6F8: .4byte 0x0000ffff - thumb_func_end unref_sub_80EB684 - .align 2, 0 @ Don't pad with nop. diff --git a/include/asm.inc.h b/include/asm.inc.h index c28050929..f92017b46 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -328,7 +328,7 @@ void sub_80C8F34(u8); // asm/easy_chat.o void InitEasyChatPhrases(void); u8* sub_80EB3FC(u8 *, u16); -u8 ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16); +u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16); // asm/pokenav.o void sub_80EBA5C(void); diff --git a/src/easy_chat.c b/src/easy_chat.c index ee1e37b9b..86719a2ae 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -5,27 +5,252 @@ #include "field_message_box.h" #include "pokedex.h" #include "rng.h" +#include "string_util.h" +#include "strings.h" #include "text.h" +u8 sub_80EB37C(u16); u8 sub_80EB8C0(void); u8 sub_80EB868(u8); u16 sub_80EAE88(u8); void sub_80EB890(u8); u16 sub_80EB784(u16 group); u8 sub_80EAD7C(u8 group); -u8 sub_80EB680(u16 *, u16, u16, u16); +static bool8 sub_80EB680(u16 *, u16, u16, u16); static u16 sub_80EB9D8(void); static u16 sub_80EB960(void); u16 sub_80EB72C(u16); +extern const u8 gSpeciesNames[][11]; +extern u8 gMoveNames[][13]; extern void *gEasyChatGroupWords[]; extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; +extern const u8 gOtherText_ThreeQuestions[]; + +#ifdef NONMATCHING +u8 *sub_80EB3FC(u8 *dst, u16 word) { + int group, wordIndex; + u8 *src; + u16 i; + + + if (sub_80EB37C(word)) + { + return StringCopy(dst, gOtherText_ThreeQuestions); + } + + if (word != 0xFFFF) + { + group = word >> 9; + wordIndex = word & 0x1FF; + switch (group) + { + case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_2: // 21 + dst = StringCopy(dst, gSpeciesNames[wordIndex]); + break; + + case EC_GROUP_MOVE_1: // 18 + case EC_GROUP_MOVE_2: // 19 + dst = StringCopy(dst, gMoveNames[wordIndex]); + break; + + default: + src = gEasyChatGroupWords[group]; + + i = wordIndex - 1; + while (i != 0xFFFF) + { + while (*src++ != EOS) + { + } + i--; + } + dst = StringCopy(dst, src); + break; + } + } + + dst[0] = EOS; + return dst; +} +#endif + +u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) { + u16 i; + u16 n; + + const u16 i1 = arg2 - 1; + + for (i = 0; i < arg3; i++) + { + u16 word; + + for (n = 0; n < i1; n++) + { + dst = sub_80EB3FC(dst, words[0]); + + if (words[0] != 0xFFFF) + { + dst[0] = CHAR_SPACE; + dst++; + } + + words++; + } + + word = words[0]; + words++; + dst = sub_80EB3FC(dst, word); + + dst[0] = 0xFE; + dst++; + } + + dst--; + dst[0] = EOS; + + return dst; +} + +u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) { + u16 i; + u16 n; + + const u16 i1 = arg2 - 1; + + for (i = 0; i < arg3; i++) + { + u16 word; + + for (n = 0; n < i1; n++) + { + dst = sub_80EB3FC(dst, words[0]); + + if (words[0] != 0xFFFF) + { + dst[0] = CHAR_SPACE; + dst++; + } + + words++; + } + + word = words[0]; + words++; + dst = sub_80EB3FC(dst, word); + + // Only difference with ConvertEasyChatWordsToString + dst[0] = (i == 0) ? 0xFE : 0xFA; + dst++; + } + + dst--; + dst[0] = EOS; + + return dst; +} + + +u16 unref_sub_80EB5E0(u16 arg0) { + u8 *chars; + u16 i; + u16 strlen; + int group, word; + + + if (arg0 == 0xFFFF) + { + return 0; + } + + group = arg0 >> 9; + word = arg0 & 0x1FF; + switch (group) + { + case EC_GROUP_POKEMON: // 0 + case EC_GROUP_POKEMON_2: // 21 + chars = (u8 *) gSpeciesNames[word]; + break; + + case EC_GROUP_MOVE_1: // 18 + case EC_GROUP_MOVE_2: // 19 + chars = gMoveNames[word]; + break; + + default: + chars = gEasyChatGroupWords[group]; + + i = word - 1; + while (i != 0xFFFF) + { + while (*chars++ != EOS) + { + } + i--; + } + break; + } + + strlen = 0; + while (*chars != EOS) + { + chars++; + strlen += 1; + } + + return strlen; +} + +static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) { + return FALSE; +} + +void unref_sub_80EB684(u8 arg0, u16 arg1) { + u16 *ptr; + u16 c; + + // FIXME: find actual tv shows used + switch (arg0) + { + case 5: + c = 6; + ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x04); + break; + case 7: + c = 2; + ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x1C); + break; + case 8: + c = 1; + ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x02); + break; + + default: + return; + } + + c -= 1; + while (c != 0xFFFF) + { + *ptr = -1; + ptr++; + c -= 1; + } +} + void sub_80EB6FC(u16 *arg0, u16 arg1) { - for (arg1--; arg1!=0xffff; arg1--) - *(arg0++) = 0xffff; + u16 i; + + for (i = arg1 - 1; i != 0xFFFF; i--) + { + *arg0 = 0xFFFF; + arg0++; + } + } u16 sub_80EB72C(u16 group) { -- cgit v1.2.3 From 1aeef4e4c3e6a6d844a712bad5f6fe88c57e5f9b Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 22:17:31 +0200 Subject: Identify gUnknown_3001764 --- common_syms/main.txt | 2 +- include/main.h | 2 +- src/link.c | 2 +- src/main.c | 14 +++++++------- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/common_syms/main.txt b/common_syms/main.txt index 1e9013411..a620083d1 100644 --- a/common_syms/main.txt +++ b/common_syms/main.txt @@ -1,5 +1,5 @@ gKeyRepeatStartDelay -gUnknown_3001764 +gLinkTransferringData gMain gKeyRepeatContinueDelay gSoftResetDisabled diff --git a/include/main.h b/include/main.h index aef55a182..e0cb09370 100644 --- a/include/main.h +++ b/include/main.h @@ -43,7 +43,7 @@ struct Main /*0x43D*/ u8 inBattle:1; }; -extern u8 gUnknown_3001764; +extern u8 gLinkTransferringData; extern struct Main gMain; extern bool8 gSoftResetDisabled; extern bool8 gLinkVSyncDisabled; diff --git a/src/link.c b/src/link.c index 224c0ae1c..be5edf633 100644 --- a/src/link.c +++ b/src/link.c @@ -643,7 +643,7 @@ static void BuildSendCmd(u16 code) gSendCmd[0] = 0x5FFF; break; case 0xCAFE: - if (!word_3004858 || gUnknown_3001764) + if (!word_3004858 || gLinkTransferringData) break; gSendCmd[0] = 0xCAFE; gSendCmd[1] = word_3004858; diff --git a/src/main.c b/src/main.c index 114fc171f..37db02174 100644 --- a/src/main.c +++ b/src/main.c @@ -60,7 +60,7 @@ const IntrFunc gIntrTableTemplate[] = #define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc))) u16 gKeyRepeatStartDelay; -u8 gUnknown_3001764; +bool8 gLinkTransferringData; struct Main gMain; u16 gKeyRepeatContinueDelay; u8 gSoftResetDisabled; @@ -99,7 +99,7 @@ void AgbMain() if (gFlashMemoryPresent != TRUE) SetMainCallback2(NULL); - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; for (;;) { @@ -112,13 +112,13 @@ void AgbMain() if (gLink.sendQueue.count > 1 && sub_8055910() == 1) { - gUnknown_3001764 = 1; + gLinkTransferringData = TRUE; UpdateLinkAndCallCallbacks(); - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; } else { - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; UpdateLinkAndCallCallbacks(); if (gLink.recvQueue.count > 1) @@ -126,9 +126,9 @@ void AgbMain() if (sub_80558AC() == 1) { gMain.newKeys = 0; - gUnknown_3001764 = 1; + gLinkTransferringData = TRUE; UpdateLinkAndCallCallbacks(); - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; } } } -- cgit v1.2.3 From fef1e692740377ecdb8ce9b93b555d3dd9682922 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 16:47:09 -0400 Subject: sub_805D4F4 --- asm/field_map_obj.s | 173 ---------------------------------------------------- src/field_map_obj.c | 66 +++++++++++++++++++- 2 files changed, 64 insertions(+), 175 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 88703f251..cda87b2c5 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805D4F4 -sub_805D4F4: @ 805D4F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D510 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D514 @ =sub_805D518 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D510: .4byte gMapObjects -_0805D514: .4byte sub_805D518 - thumb_func_end sub_805D4F4 - - thumb_func_start sub_805D518 -sub_805D518: @ 805D518 - push {r4,lr} - ldr r3, _0805D534 @ =gUnknown_083752E4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D534: .4byte gUnknown_083752E4 - thumb_func_end sub_805D518 - - thumb_func_start sub_805D538 -sub_805D538: @ 805D538 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D538 - - thumb_func_start sub_805D54C -sub_805D54C: @ 805D54C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D54C - - thumb_func_start sub_805D578 -sub_805D578: @ 805D578 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D5AE - ldr r4, _0805D5B8 @ =gUnknown_0837520C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D5AE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D5B8: .4byte gUnknown_0837520C - thumb_func_end sub_805D578 - - thumb_func_start sub_805D5BC -sub_805D5BC: @ 805D5BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D5DA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D5E2 -_0805D5DA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D5E4 -_0805D5E2: - movs r0, 0 -_0805D5E4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D5BC - - thumb_func_start sub_805D5EC -sub_805D5EC: @ 805D5EC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D630 @ =gUnknown_083752A0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x1 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D61C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D61C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D630: .4byte gUnknown_083752A0 - thumb_func_end sub_805D5EC - thumb_func_start sub_805D634 sub_805D634: @ 805D634 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 98bc73390..a637d5767 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -41,6 +41,7 @@ extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1546,7 +1547,7 @@ u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -extern void FieldObjectSetRegularAnim(); +extern void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8); u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2223,7 +2224,68 @@ u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -void sub_805D4F4(struct Sprite *sprite); +u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D4F4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D518); +} + +u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752E4[sprite->data1](mapObject, sprite); +} + +u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D54C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D578(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D5BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752A0, 2); + direction = sub_805CD60(mapObject, 1); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805D634(struct Sprite *sprite); void sub_805D774(struct Sprite *sprite); void sub_805D8B4(struct Sprite *sprite); -- cgit v1.2.3 From af652a52996a0e91f7befbc74d10152ec21cd338 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 23:40:08 +0200 Subject: Various intro naming --- include/intro.h | 4 ++-- src/intro.c | 20 ++++++++++---------- src/main.c | 2 +- src/title_screen.c | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/intro.h b/include/intro.h index 7fdbd9cb0..6d4d2daf3 100644 --- a/include/intro.h +++ b/include/intro.h @@ -1,8 +1,8 @@ #ifndef GUARD_INTRO_H #define GUARD_INTRO_H -void c2_copyright_1(void); -void CB2_InitCopyrightScreen(void); +void CB2_InitCopyrightScreenAfterBootup(void); +void CB2_InitCopyrightScreenAfterTitleScreen(void); void sub_813CE30(u16, u16, u16, u16); #endif // GUARD_INTRO_H diff --git a/src/intro.c b/src/intro.c index 2a62892ba..98c978119 100644 --- a/src/intro.c +++ b/src/intro.c @@ -851,14 +851,14 @@ static void MainCB2_EndIntro(void) SetMainCallback2(CB2_InitTitleScreen); } -static void LoadCopyrightGraphics(u16 a1, u16 a2, u16 a3) +static void LoadCopyrightGraphics(u16 tilesetAddress, u16 tilemapAddress, u16 paletteAddress) { - LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + a1)); - LoadPalette(gIntroCopyright_Pal, a3, 0x20); - CpuCopy16(gIntroCopyright_Tilemap, (void *)(VRAM + a2), 0x500); + LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + tilesetAddress)); + LoadPalette(gIntroCopyright_Pal, paletteAddress, 0x20); + CpuCopy16(gIntroCopyright_Tilemap, (void *)(VRAM + tilemapAddress), 0x500); } -static void SerialCb_CopyrightScreen(void) +static void SerialCB_CopyrightScreen(void) { GameCubeMultiBoot_HandleSerialInterrupt(&gMultibootProgramStruct); } @@ -882,7 +882,7 @@ static u8 SetUpCopyrightScreen(void) DmaFill32(3, 0, (void *)OAM, OAM_SIZE); DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); - LoadCopyrightGraphics(0, 14336, 0); + LoadCopyrightGraphics(0, 0x3800, 0); remove_some_task(); ResetTasks(); ResetSpriteData(); @@ -900,7 +900,7 @@ static u8 SetUpCopyrightScreen(void) REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; SetVBlankCallback(VBlankCB_Intro); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; - SetSerialCallback(SerialCb_CopyrightScreen); + SetSerialCallback(SerialCB_CopyrightScreen); GameCubeMultiBoot_Init(&gMultibootProgramStruct); default: UpdatePaletteFade(); @@ -911,7 +911,7 @@ static u8 SetUpCopyrightScreen(void) GameCubeMultiBoot_Main(&gMultibootProgramStruct); if (gMultibootProgramStruct.gcmb_field_2 != 1) { - BeginNormalPaletteFade(0xFFFFFFFFu, 0, 0, 0x10, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); gMain.state++; } break; @@ -935,7 +935,7 @@ static u8 SetUpCopyrightScreen(void) return 1; } -void c2_copyright_1(void) +void CB2_InitCopyrightScreenAfterBootup(void) { if (!SetUpCopyrightScreen()) { @@ -948,7 +948,7 @@ void c2_copyright_1(void) } } -void CB2_InitCopyrightScreen(void) +void CB2_InitCopyrightScreenAfterTitleScreen(void) { SetUpCopyrightScreen(); } diff --git a/src/main.c b/src/main.c index 37db02174..19891459c 100644 --- a/src/main.c +++ b/src/main.c @@ -152,7 +152,7 @@ static void InitMainCallbacks(void) gMain.vblankCounter1 = 0; gMain.vblankCounter2 = 0; gMain.callback1 = NULL; - SetMainCallback2(c2_copyright_1); + SetMainCallback2(CB2_InitCopyrightScreenAfterBootup); } static void CallCallbacks(void) diff --git a/src/title_screen.c b/src/title_screen.c index dd6a858f6..241e5489e 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -709,7 +709,7 @@ static void CB2_GoToMainMenu(void) static void CB2_GoToCopyrightScreen(void) { if (!UpdatePaletteFade()) - SetMainCallback2(CB2_InitCopyrightScreen); + SetMainCallback2(CB2_InitCopyrightScreenAfterTitleScreen); } static void CB2_GoToClearSaveDataScreen(void) -- cgit v1.2.3 From 9b084e8d572dc1472052983d9fce58696c77c56b Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 23:44:49 +0200 Subject: name InitBattle --- src/battle_2.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/battle_2.c b/src/battle_2.c index f2ce737d6..073da1cab 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -311,7 +311,7 @@ extern u8 sub_80170DC(); extern u8 ItemId_GetHoldEffect(u16); extern void sub_8094C98(); -void sub_800E7F8(void); +void InitBattle(void); void sub_800EC9C(void); void sub_800F104(void); void sub_800F298(void); @@ -365,11 +365,11 @@ void sub_800E7C4(void) } else { - sub_800E7F8(); + InitBattle(); } } -void sub_800E7F8(void) +void InitBattle(void) { s32 i; @@ -785,7 +785,7 @@ void sub_800F104(void) { gBattleTypeFlags = *pSavedBattleTypeFlags; gMain.savedCallback = *pSavedCallback; - SetMainCallback2(sub_800E7F8); + SetMainCallback2(InitBattle); } break; } -- cgit v1.2.3 From 010eb456d63b0d644285f263f310d73bfb9646b2 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 20 May 2017 17:49:54 +0200 Subject: Decrease indentation level of switches --- src/battle_2.c | 62 +- src/battle_interface.c | 34 +- src/braille_puzzles.c | 74 +- src/clear_save_data_menu.c | 138 ++-- src/field_camera.c | 96 +-- src/field_control_avatar.c | 68 +- src/field_poison.c | 48 +- src/field_special_scene.c | 122 +-- src/fldeff_cut.c | 86 +- src/intro.c | 100 +-- src/item_use.c | 178 ++--- src/matsuda_debug_menu.c | 70 +- src/mauville_old_man.c | 30 +- src/mystery_event_menu.c | 402 +++++----- src/option_menu.c | 296 +++---- src/player_pc.c | 38 +- src/pokedex.c | 1560 ++++++++++++++++++------------------- src/pokemon_2.c | 1036 ++++++++++++------------ src/pokemon_3.c | 112 +-- src/record_mixing.c | 46 +- src/save_failed_screen.c | 106 +-- src/script_menu.c | 26 +- src/script_pokemon_util_80C4BF0.c | 142 ++-- src/script_pokemon_util_80F99CC.c | 266 +++---- src/secret_base.c | 70 +- src/shop.c | 24 +- src/start_menu.c | 306 ++++---- src/starter_choose.c | 40 +- src/text.c | 78 +- src/tv.c | 1106 +++++++++++++------------- src/wallclock.c | 134 ++-- 31 files changed, 3447 insertions(+), 3447 deletions(-) diff --git a/src/battle_2.c b/src/battle_2.c index f2ce737d6..12fd4182d 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -2562,39 +2562,39 @@ void sub_8012324(void) r5 = battle_get_per_side_status(gUnknown_02024A60); switch (gUnknown_02024D1E[gUnknown_02024A60]) { - case 0: - ewram[0x016068 + gUnknown_02024A60] = 6; - if (!(gBattleTypeFlags & 0x40) - && (r5 & 2) - && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)]) - && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4) - break; - //_080123F8 - if (ewram160A6 & gBitTable[gUnknown_02024A60]) - { - gUnknown_02024C18[gUnknown_02024A60] = 13; - if (!(gBattleTypeFlags & 0x40)) - gUnknown_02024D1E[gUnknown_02024A60] = 4; - //_08012454 - else - gUnknown_02024D1E[gUnknown_02024A60] = 3; - break; - } - //_08012468 - if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000) - || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000)) - { - gUnknown_02024C18[gUnknown_02024A60] = 0; - gUnknown_02024D1E[gUnknown_02024A60] = 3; - } + case 0: + ewram[0x016068 + gUnknown_02024A60] = 6; + if (!(gBattleTypeFlags & 0x40) + && (r5 & 2) + && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)]) + && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4) + break; + //_080123F8 + if (ewram160A6 & gBitTable[gUnknown_02024A60]) + { + gUnknown_02024C18[gUnknown_02024A60] = 13; + if (!(gBattleTypeFlags & 0x40)) + gUnknown_02024D1E[gUnknown_02024A60] = 4; + //_08012454 else - { - dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8)); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); - gUnknown_02024D1E[gUnknown_02024A60]++; - } + gUnknown_02024D1E[gUnknown_02024A60] = 3; break; - case 1: + } + //_08012468 + if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000) + || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000)) + { + gUnknown_02024C18[gUnknown_02024A60] = 0; + gUnknown_02024D1E[gUnknown_02024A60] = 3; + } + else + { + dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8)); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + gUnknown_02024D1E[gUnknown_02024A60]++; + } + break; + case 1: } } } diff --git a/src/battle_interface.c b/src/battle_interface.c index ba3cba894..61a6a5853 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2409,23 +2409,23 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) gender = 100; switch (gender) { - default: - ptr[0] = 0xB; - ptr[1] = EOS; - ptr += 1; - break; - case MON_MALE: - ptr[0] = 0xB; - ptr[1] = CHAR_MALE; - ptr[2] = EOS; - ptr += 2; - break; - case MON_FEMALE: - ptr[0] = 0xA; - ptr[1] = CHAR_FEMALE; - ptr[2] = EOS; - ptr += 2; - break; + default: + ptr[0] = 0xB; + ptr[1] = EOS; + ptr += 1; + break; + case MON_MALE: + ptr[0] = 0xB; + ptr[1] = CHAR_MALE; + ptr[2] = EOS; + ptr += 2; + break; + case MON_FEMALE: + ptr[0] = 0xA; + ptr[1] = CHAR_FEMALE; + ptr[2] = EOS; + ptr += 2; + break; } ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x13; diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 220e8420c..2ee4f91bb 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -151,50 +151,50 @@ void Task_BrailleWait(u8 taskId) switch (data[0]) { - case 0: - data[1] = 7200; - data[0] = 1; - break; - case 1: - if (BrailleWait_CheckButtonPress() != FALSE) + case 0: + data[1] = 7200; + data[0] = 1; + break; + case 1: + if (BrailleWait_CheckButtonPress() != FALSE) + { + MenuZeroFillScreen(); + PlaySE(5); + data[0] = 2; + } + else + { + data[1] = data[1] - 1; + if (data[1] == 0) { MenuZeroFillScreen(); - PlaySE(5); - data[0] = 2; - } - else - { - data[1] = data[1] - 1; - if (data[1] == 0) - { - MenuZeroFillScreen(); - data[0] = 3; - data[1] = 30; - } - } - break; - case 2: - if (BrailleWait_CheckButtonPress() == FALSE) - { - data[1] = data[1] - 1; - if (data[1] == 0) - data[0] = 4; - break; + data[0] = 3; + data[1] = 30; } - sub_8064E2C(); - DestroyTask(taskId); - ScriptContext2_Disable(); - break; - case 3: + } + break; + case 2: + if (BrailleWait_CheckButtonPress() == FALSE) + { data[1] = data[1] - 1; if (data[1] == 0) data[0] = 4; break; - case 4: - sub_8064E2C(); - ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber); - DestroyTask(taskId); - break; + } + sub_8064E2C(); + DestroyTask(taskId); + ScriptContext2_Disable(); + break; + case 3: + data[1] = data[1] - 1; + if (data[1] == 0) + data[0] = 4; + break; + case 4: + sub_8064E2C(); + ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber); + DestroyTask(taskId); + break; } } diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index 21cd643ef..c519e1a30 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -99,65 +99,65 @@ static u8 InitClearSaveDataScreen(void) switch (gMain.state) { - case 0: - default: - SetVBlankCallback(NULL); - - REG_DISPCNT = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WININ = 0; - REG_WINOUT = 0; - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - - DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); - DmaFill32(3, 0, (void *)OAM, OAM_SIZE); - DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); - - ResetPaletteFade(); - - gPlttBufferUnfaded[0] = 0x7fff; - gPlttBufferFaded[0] = 0x7fff; - gPlttBufferUnfaded[1] = 0x3945; - gPlttBufferFaded[1] = 0x3945; - - for (i = 0; i < 0x10; i++) - ((u16 *)(VRAM + 0x20))[i] = 0x1111; - - for (i = 0; i < 0x500; i++) - ((u16 *)(VRAM + 0x3800))[i] = 0x0001; - - ResetTasks(); - ResetSpriteData(); - - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); - - ime = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = ime; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - - SetVBlankCallback(VBlankCB_InitClearSaveDataScreen); - - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG3_ON; - gMain.state = 1; + case 0: + default: + SetVBlankCallback(NULL); + + REG_DISPCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + + ResetPaletteFade(); + + gPlttBufferUnfaded[0] = 0x7fff; + gPlttBufferFaded[0] = 0x7fff; + gPlttBufferUnfaded[1] = 0x3945; + gPlttBufferFaded[1] = 0x3945; + + for (i = 0; i < 0x10; i++) + ((u16 *)(VRAM + 0x20))[i] = 0x1111; + + for (i = 0; i < 0x500; i++) + ((u16 *)(VRAM + 0x3800))[i] = 0x0001; + + ResetTasks(); + ResetSpriteData(); + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); + + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + + SetVBlankCallback(VBlankCB_InitClearSaveDataScreen); + + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG3_ON; + gMain.state = 1; + return 0; + case 1: + UpdatePaletteFade(); + if (gPaletteFade.active) return 0; - case 1: - UpdatePaletteFade(); - if (gPaletteFade.active) - return 0; - SetMainCallback2(CB2_ClearSaveDataScreen); - return 1; + SetMainCallback2(CB2_ClearSaveDataScreen); + return 1; } } @@ -165,16 +165,16 @@ static void CB2_SoftReset(void) { switch (gMain.state) { - case 0: - default: - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff); - gMain.state = 1; - break; - case 1: - UpdatePaletteFade(); - if (gPaletteFade.active) - return; - DoSoftReset(); - break; + case 0: + default: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff); + gMain.state = 1; + break; + case 1: + UpdatePaletteFade(); + if (gPaletteFade.active) + return; + DoSoftReset(); + break; } } diff --git a/src/field_camera.c b/src/field_camera.c index 442bc095b..182e180ab 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -258,54 +258,54 @@ static void DrawMetatile(s32 a, u16 *b, u16 c) { switch (a) { - case 2: - gBGTilemapBuffers[3][c] = b[0]; - gBGTilemapBuffers[3][c + 1] = b[1]; - gBGTilemapBuffers[3][c + 0x20] = b[2]; - gBGTilemapBuffers[3][c + 0x21] = b[3]; - - gBGTilemapBuffers[2][c] = 0; - gBGTilemapBuffers[2][c + 1] = 0; - gBGTilemapBuffers[2][c + 0x20] = 0; - gBGTilemapBuffers[2][c + 0x21] = 0; - - gBGTilemapBuffers[1][c] = b[4]; - gBGTilemapBuffers[1][c + 1] = b[5]; - gBGTilemapBuffers[1][c + 0x20] = b[6]; - gBGTilemapBuffers[1][c + 0x21] = b[7]; - break; - case 1: - gBGTilemapBuffers[3][c] = b[0]; - gBGTilemapBuffers[3][c + 1] = b[1]; - gBGTilemapBuffers[3][c + 0x20] = b[2]; - gBGTilemapBuffers[3][c + 0x21] = b[3]; - - gBGTilemapBuffers[2][c] = b[4]; - gBGTilemapBuffers[2][c + 1] = b[5]; - gBGTilemapBuffers[2][c + 0x20] = b[6]; - gBGTilemapBuffers[2][c + 0x21] = b[7]; - - gBGTilemapBuffers[1][c] = 0; - gBGTilemapBuffers[1][c + 1] = 0; - gBGTilemapBuffers[1][c + 0x20] = 0; - gBGTilemapBuffers[1][c + 0x21] = 0; - break; - case 0: - gBGTilemapBuffers[3][c] = 0x3014; - gBGTilemapBuffers[3][c + 1] = 0x3014; - gBGTilemapBuffers[3][c + 0x20] = 0x3014; - gBGTilemapBuffers[3][c + 0x21] = 0x3014; - - gBGTilemapBuffers[2][c] = b[0]; - gBGTilemapBuffers[2][c + 1] = b[1]; - gBGTilemapBuffers[2][c + 0x20] = b[2]; - gBGTilemapBuffers[2][c + 0x21] = b[3]; - - gBGTilemapBuffers[1][c] = b[4]; - gBGTilemapBuffers[1][c + 1] = b[5]; - gBGTilemapBuffers[1][c + 0x20] = b[6]; - gBGTilemapBuffers[1][c + 0x21] = b[7]; - break; + case 2: + gBGTilemapBuffers[3][c] = b[0]; + gBGTilemapBuffers[3][c + 1] = b[1]; + gBGTilemapBuffers[3][c + 0x20] = b[2]; + gBGTilemapBuffers[3][c + 0x21] = b[3]; + + gBGTilemapBuffers[2][c] = 0; + gBGTilemapBuffers[2][c + 1] = 0; + gBGTilemapBuffers[2][c + 0x20] = 0; + gBGTilemapBuffers[2][c + 0x21] = 0; + + gBGTilemapBuffers[1][c] = b[4]; + gBGTilemapBuffers[1][c + 1] = b[5]; + gBGTilemapBuffers[1][c + 0x20] = b[6]; + gBGTilemapBuffers[1][c + 0x21] = b[7]; + break; + case 1: + gBGTilemapBuffers[3][c] = b[0]; + gBGTilemapBuffers[3][c + 1] = b[1]; + gBGTilemapBuffers[3][c + 0x20] = b[2]; + gBGTilemapBuffers[3][c + 0x21] = b[3]; + + gBGTilemapBuffers[2][c] = b[4]; + gBGTilemapBuffers[2][c + 1] = b[5]; + gBGTilemapBuffers[2][c + 0x20] = b[6]; + gBGTilemapBuffers[2][c + 0x21] = b[7]; + + gBGTilemapBuffers[1][c] = 0; + gBGTilemapBuffers[1][c + 1] = 0; + gBGTilemapBuffers[1][c + 0x20] = 0; + gBGTilemapBuffers[1][c + 0x21] = 0; + break; + case 0: + gBGTilemapBuffers[3][c] = 0x3014; + gBGTilemapBuffers[3][c + 1] = 0x3014; + gBGTilemapBuffers[3][c + 0x20] = 0x3014; + gBGTilemapBuffers[3][c + 0x21] = 0x3014; + + gBGTilemapBuffers[2][c] = b[0]; + gBGTilemapBuffers[2][c + 1] = b[1]; + gBGTilemapBuffers[2][c + 0x20] = b[2]; + gBGTilemapBuffers[2][c + 0x21] = b[3]; + + gBGTilemapBuffers[1][c] = b[4]; + gBGTilemapBuffers[1][c + 1] = b[5]; + gBGTilemapBuffers[1][c + 0x20] = b[6]; + gBGTilemapBuffers[1][c + 0x21] = b[7]; + break; } } diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index c5f2c08e7..8220a144b 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -342,41 +342,41 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse return gUnknown_081C6C02; switch (bgEvent->kind) { - case 0: - default: - return bgEvent->bgUnion.script; - case 1: - if (c != 2) - return NULL; - break; - case 2: - if (c != 1) - return NULL; - break; - case 3: - if (c != 4) - return NULL; - break; - case 4: - if (c != 3) - return NULL; - break; - case 5: - case 6: - case 7: - gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258; - gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script; - if (FlagGet(gSpecialVar_0x8004) == TRUE) - return NULL; - return HiddenItemScript; - case 8: - if (c == 2) - { - gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script; - if (sub_80BC050()) - return gUnknown_081A2C51; - } + case 0: + default: + return bgEvent->bgUnion.script; + case 1: + if (c != 2) + return NULL; + break; + case 2: + if (c != 1) + return NULL; + break; + case 3: + if (c != 4) return NULL; + break; + case 4: + if (c != 3) + return NULL; + break; + case 5: + case 6: + case 7: + gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258; + gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script; + if (FlagGet(gSpecialVar_0x8004) == TRUE) + return NULL; + return HiddenItemScript; + case 8: + if (c == 2) + { + gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script; + if (sub_80BC050()) + return gUnknown_081A2C51; + } + return NULL; } return bgEvent->bgUnion.script; } diff --git a/src/field_poison.c b/src/field_poison.c index 8e49080b0..4d4d4b975 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -72,32 +72,32 @@ void Task_WhiteOut(u8 taskId) switch (taskData[TD_STATE]) { - case 0: //Check if Pokemon have fainted due to poison - while (taskData[TD_PARTY_MEMBER] < 6) + case 0: //Check if Pokemon have fainted due to poison + while (taskData[TD_PARTY_MEMBER] < 6) + { + if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER])) { - if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER])) - { - MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]); - ShowFieldMessage(fieldPoisonText_PokemonFainted); - taskData[TD_STATE]++; - return; - } - taskData[TD_PARTY_MEMBER]++; + MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]); + ShowFieldMessage(fieldPoisonText_PokemonFainted); + taskData[TD_STATE]++; + return; } - taskData[TD_STATE] = 2; - break; - case 1: //Wait for message box to disappear - if (IsFieldMessageBoxHidden()) - taskData[TD_STATE]--; //Check next party member - break; - case 2: //Done checking Pokemon - if (AllMonsFainted()) - gScriptResult = 1; - else - gScriptResult = 0; - EnableBothScriptContexts(); - DestroyTask(taskId); - break; + taskData[TD_PARTY_MEMBER]++; + } + taskData[TD_STATE] = 2; + break; + case 1: //Wait for message box to disappear + if (IsFieldMessageBoxHidden()) + taskData[TD_STATE]--; //Check next party member + break; + case 2: //Done checking Pokemon + if (AllMonsFainted()) + gScriptResult = 1; + else + gScriptResult = 0; + EnableBothScriptContexts(); + DestroyTask(taskId); + break; } } diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 59280b743..9e06ede81 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -143,64 +143,64 @@ void Task_HandleTruckSequence(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) - { - /* - Each case has a timer which is handled with data[1], incrementing - until it reaches the if function's condition, which sets the next task up. - */ - case 0: - data[1]++; - if (data[1] == SECONDS(1.5)) - { - SetCameraPanningCallback(0); - data[1] = 0; // reset the timer. - data[2] = CreateTask(Task_Truck1, 0xA); - data[0] = 1; // run the next case. - PlaySE(SE_TRACK_MOVE); - } - break; - case 1: - data[1]++; - if (data[1] == SECONDS(2.5)) - { - pal_fill_black(); - data[1] = 0; - data[0] = 2; - } - break; - case 2: - data[1]++; - if (!gPaletteFade.active && data[1] > SECONDS(5)) - { - data[1] = 0; - DestroyTask(data[2]); - data[3] = CreateTask(Task_Truck2, 0xA); - data[0] = 3; - PlaySE(SE_TRACK_STOP); - } - break; - case 3: - if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) - { - InstallCameraPanAheadCallback(); - data[1] = 0; - data[0] = 4; - } - break; - case 4: - data[1]++; - if (data[1] == 90) - { - PlaySE(SE_TRACK_HAIK); - data[1] = 0; - data[0] = 5; - } - break; - case 5: - data[1]++; - if (data[1] == 120) - { + switch (data[0]) + { + /* + Each case has a timer which is handled with data[1], incrementing + until it reaches the if function's condition, which sets the next task up. + */ + case 0: + data[1]++; + if (data[1] == SECONDS(1.5)) + { + SetCameraPanningCallback(0); + data[1] = 0; // reset the timer. + data[2] = CreateTask(Task_Truck1, 0xA); + data[0] = 1; // run the next case. + PlaySE(SE_TRACK_MOVE); + } + break; + case 1: + data[1]++; + if (data[1] == SECONDS(2.5)) + { + pal_fill_black(); + data[1] = 0; + data[0] = 2; + } + break; + case 2: + data[1]++; + if (!gPaletteFade.active && data[1] > SECONDS(5)) + { + data[1] = 0; + DestroyTask(data[2]); + data[3] = CreateTask(Task_Truck2, 0xA); + data[0] = 3; + PlaySE(SE_TRACK_STOP); + } + break; + case 3: + if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) + { + InstallCameraPanAheadCallback(); + data[1] = 0; + data[0] = 4; + } + break; + case 4: + data[1]++; + if (data[1] == 90) + { + PlaySE(SE_TRACK_HAIK); + data[1] = 0; + data[0] = 5; + } + break; + case 5: + data[1]++; + if (data[1] == 120) + { MapGridSetMetatileIdAt(11, 8, 520); MapGridSetMetatileIdAt(11, 9, 528); MapGridSetMetatileIdAt(11, 10, 536); @@ -208,9 +208,9 @@ void Task_HandleTruckSequence(u8 taskId) PlaySE(SE_TRACK_DOOR); DestroyTask(taskId); ScriptContext2_Disable(); - } - break; - } + } + break; + } } void ExecuteTruckSequence(void) diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 77c8752d1..8fde74852 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -160,37 +160,37 @@ void sub_80A27A8(s16 x, s16 y) switch(metatileId) { - case 0x208: - case 0x15: - case 0xD: - MapGridSetMetatileIdAt(x, y, 0x1); - break; - case 0x1C6: - MapGridSetMetatileIdAt(x, y, 0x1CE); - break; - case 0x1C7: - MapGridSetMetatileIdAt(x, y, 0x1CF); - break; - case 0x281: - MapGridSetMetatileIdAt(x, y, 0x279); - break; - case 0x282: - MapGridSetMetatileIdAt(x, y, 0x27A); - break; - case 0x283: - MapGridSetMetatileIdAt(x, y, 0x27B); - break; - case 0x206: - case 0x207: - MapGridSetMetatileIdAt(x, y, 0x271); - break; - case 0x212: - case 0x20A: - MapGridSetMetatileIdAt(x, y, 0x218); - break; - case 0x25: - MapGridSetMetatileIdAt(x, y, 0xE); - break; + case 0x208: + case 0x15: + case 0xD: + MapGridSetMetatileIdAt(x, y, 0x1); + break; + case 0x1C6: + MapGridSetMetatileIdAt(x, y, 0x1CE); + break; + case 0x1C7: + MapGridSetMetatileIdAt(x, y, 0x1CF); + break; + case 0x281: + MapGridSetMetatileIdAt(x, y, 0x279); + break; + case 0x282: + MapGridSetMetatileIdAt(x, y, 0x27A); + break; + case 0x283: + MapGridSetMetatileIdAt(x, y, 0x27B); + break; + case 0x206: + case 0x207: + MapGridSetMetatileIdAt(x, y, 0x271); + break; + case 0x212: + case 0x20A: + MapGridSetMetatileIdAt(x, y, 0x218); + break; + case 0x25: + MapGridSetMetatileIdAt(x, y, 0xE); + break; } } @@ -223,18 +223,18 @@ void sub_80A28F4(s16 x, s16 y) { switch((u8)sub_80A28A0(currentXsigned, y + 1)) { - case 1: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x208); - break; - case 2: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x281); - break; - case 3: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x282); - break; - case 4: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x283); - break; + case 1: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x208); + break; + case 2: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x281); + break; + case 3: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x282); + break; + case 4: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x283); + break; } } if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY) == 1) diff --git a/src/intro.c b/src/intro.c index 2a62892ba..56eaa11e8 100644 --- a/src/intro.c +++ b/src/intro.c @@ -2084,29 +2084,29 @@ static void sub_813D788(struct Sprite *sprite) { switch (sprite->data0) { - case 0: - StartSpriteAnimIfDifferent(sprite, 0); - sprite->pos1.x--; - break; - case 1: - StartSpriteAnimIfDifferent(sprite, 0); - if (gIntroFrameCounter & 7) - return; + case 0: + StartSpriteAnimIfDifferent(sprite, 0); + sprite->pos1.x--; + break; + case 1: + StartSpriteAnimIfDifferent(sprite, 0); + if (gIntroFrameCounter & 7) + return; + sprite->pos1.x++; + break; + case 2: + StartSpriteAnimIfDifferent(sprite, 2); + if (sprite->pos1.x <= 120 || (gIntroFrameCounter & 7)) sprite->pos1.x++; - break; - case 2: - StartSpriteAnimIfDifferent(sprite, 2); - if (sprite->pos1.x <= 120 || (gIntroFrameCounter & 7)) - sprite->pos1.x++; - break; - case 3: - StartSpriteAnimIfDifferent(sprite, 3); - break; - case 4: - StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > -32) - sprite->pos1.x -= 2; - break; + break; + case 3: + StartSpriteAnimIfDifferent(sprite, 3); + break; + case 4: + StartSpriteAnimIfDifferent(sprite, 0); + if (sprite->pos1.x > -32) + sprite->pos1.x -= 2; + break; } if (gIntroFrameCounter & 7) return; @@ -2118,16 +2118,16 @@ static void sub_813D788(struct Sprite *sprite) { switch (Random() & 3) { - case 0: - sprite->pos2.y = -1; - break; - case 1: - sprite->pos2.y = 1; - break; - case 2: - case 3: - sprite->pos2.y = 0; - break; + case 0: + sprite->pos2.y = -1; + break; + case 1: + sprite->pos2.y = 1; + break; + case 2: + case 3: + sprite->pos2.y = 0; + break; } } } @@ -2136,24 +2136,24 @@ static void sub_813D880(struct Sprite *sprite) { switch (sprite->data0) { - case 0: - break; - case 1: - if (sprite->pos2.x + sprite->pos1.x < 304) - sprite->pos2.x += 8; - else - sprite->data0 = 2; - break; - case 2: - if (sprite->pos2.x + sprite->pos1.x > 120) - sprite->pos2.x -= 1; - else - sprite->data0 = 3; - break; - case 3: - if (sprite->pos2.x > 0) - sprite->pos2.x -= 2; - break; + case 0: + break; + case 1: + if (sprite->pos2.x + sprite->pos1.x < 304) + sprite->pos2.x += 8; + else + sprite->data0 = 2; + break; + case 2: + if (sprite->pos2.x + sprite->pos1.x > 120) + sprite->pos2.x -= 1; + else + sprite->data0 = 3; + break; + case 3: + if (sprite->pos2.x > 0) + sprite->pos2.x -= 2; + break; } sprite->pos2.y = Sin((u8)sprite->data1, 8) - gUnknown_0203935A; sprite->data1 += 4; diff --git a/src/item_use.c b/src/item_use.c index 4047ade5c..116a57226 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -180,13 +180,13 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) switch (playerMenuStatus) { - case 0: // Item Menu - MenuZeroFillWindowRect(0, 13, 13, 20); - DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); - break; - default: // Field - DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); - break; + case 0: // Item Menu + MenuZeroFillWindowRect(0, 13, 13, 20); + DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); + break; + default: // Field + DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); + break; } } @@ -439,33 +439,33 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) switch(connection->direction) { - // same weird temp variable behavior seen in HiddenItemAtPos - case 2: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = mapHeader->mapData->height - 7; - localY = localLength + y; // additions are reversed for some reason - break; - case 1: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = gMapHeader.mapData->height + 7; - localY = y - localLength; - break; - case 3: - localLength = mapHeader->mapData->width - 7; - localX = localLength + x; // additions are reversed for some reason - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - case 4: - localLength = gMapHeader.mapData->width + 7; - localX = x - localLength; - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - default: - return FALSE; + // same weird temp variable behavior seen in HiddenItemAtPos + case 2: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = mapHeader->mapData->height - 7; + localY = localLength + y; // additions are reversed for some reason + break; + case 1: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = gMapHeader.mapData->height + 7; + localY = y - localLength; + break; + case 3: + localLength = mapHeader->mapData->width - 7; + localX = localLength + x; // additions are reversed for some reason + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + case 4: + localLength = gMapHeader.mapData->width + 7; + localX = x - localLength; + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + default: + return FALSE; } return HiddenItemAtPos(mapHeader->events, localX, localY); } @@ -1188,42 +1188,42 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) { switch(GetItemEffectType(gScriptItemId) - 1) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_Medicine(taskId); - break; - case 9: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_SacredAsh(taskId); - break; - case 0: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_RareCandy(taskId); - break; - case 18: - case 19: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_PPUp(taskId); - break; - case 20: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_PPRecovery(taskId); - break; - default: - gTasks[taskId].data[15] = 4; - ItemUseOutOfBattle_CannotUse(taskId); + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_Medicine(taskId); + break; + case 9: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_SacredAsh(taskId); + break; + case 0: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_RareCandy(taskId); + break; + case 18: + case 19: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPUp(taskId); + break; + case 20: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPRecovery(taskId); + break; + default: + gTasks[taskId].data[15] = 4; + ItemUseOutOfBattle_CannotUse(taskId); } } @@ -1231,25 +1231,25 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId) { switch(GetItemEffectType(gScriptItemId)) { - case 0: - ItemUseInBattle_StatIncrease(taskId); - break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 11: - ItemUseInBattle_Medicine(taskId); - break; - case 21: - ItemUseInBattle_PPRecovery(taskId); - break; - default: - ItemUseOutOfBattle_CannotUse(taskId); + case 0: + ItemUseInBattle_StatIncrease(taskId); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + ItemUseInBattle_Medicine(taskId); + break; + case 21: + ItemUseInBattle_PPRecovery(taskId); + break; + default: + ItemUseOutOfBattle_CannotUse(taskId); } } diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index d2ca754bb..09ee5fc66 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -528,41 +528,41 @@ void sub_80AA754(struct Sprite *sprite) { switch (gMain.newAndRepeatedKeys) { - case 0x10: - case 0x20: - sprite->data0 ^= 1; - break; - case 0x40: - if (sprite->data1 == 0) - sprite->data1 = 8; - else - sprite->data1--; - break; - case 0x80: - if (sprite->data1 == 8) - sprite->data1 = 0; - else - sprite->data1++; - break; - case 0x1: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x2: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x100: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x200: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x8: - sub_80AAD08(sprite, 1); - break; + case DPAD_RIGHT: + case DPAD_LEFT: + sprite->data0 ^= 1; + break; + case DPAD_UP: + if (sprite->data1 == 0) + sprite->data1 = 8; + else + sprite->data1--; + break; + case DPAD_DOWN: + if (sprite->data1 == 8) + sprite->data1 = 0; + else + sprite->data1++; + break; + case A_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case B_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case R_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case L_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case START_BUTTON: + sub_80AAD08(sprite, 1); + break; } sprite->pos1.x = gUnknown_083C9296[sprite->data0 + sprite->data1 * 2]; sprite->pos1.y = gUnknown_083C92A8[sprite->data1]; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 11dadf380..2fa889a15 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -65,21 +65,21 @@ void SetMauvilleOldMan(void) switch(var) { - case 0: - sub_80F7A34(); - break; - case 1: - sub_80F7A6C(); - break; - case 2: - sub_80F7A98(); - break; - case 3: - sub_80F7A7C(); - break; - case 4: - sub_80F7A88(); - break; + case 0: + sub_80F7A34(); + break; + case 1: + sub_80F7A6C(); + break; + case 2: + sub_80F7A98(); + break; + case 3: + sub_80F7A7C(); + break; + case 4: + sub_80F7A88(); + break; } sub_80F83D0(); } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 97deb348c..fa2e42b91 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -91,240 +91,240 @@ static void CB2_MysteryEventMenu(void) switch (gMain.state) { - case 0: - MenuDrawTextWindow(0, 14, 29, 19); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); - gMain.state++; + case 0: + MenuDrawTextWindow(0, 14, 29, 19); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); + gMain.state++; + break; + case 1: + if (gPaletteFade.active) break; - case 1: - if (gPaletteFade.active) - break; - sub_8072044(gSystemText_LinkStandby); + sub_8072044(gSystemText_LinkStandby); + gMain.state++; + break; + case 2: + if (MenuUpdateWindowText()) + { gMain.state++; - break; - case 2: - if (MenuUpdateWindowText()) - { - gMain.state++; - gLinkType = 21761; - OpenLink(); - } - break; - case 3: - if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) - { - PlaySE(SE_PIN); - sub_8072044(gSystemText_LoadEventPressA); - gMain.state++; - } - if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; - } - break; - case 4: - if (MenuUpdateWindowText()) - gMain.state++; - break; + gLinkType = 21761; + OpenLink(); + } + break; + case 3: + if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) + { + PlaySE(SE_PIN); + sub_8072044(gSystemText_LoadEventPressA); + gMain.state++; + } + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; + } + break; + case 4: + if (MenuUpdateWindowText()) + gMain.state++; + break; #ifdef NONMATCHING - case 5: - if (GetLinkPlayerCount_2() != 2) + case 5: + if (GetLinkPlayerCount_2() != 2) + { + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + gMain.state = 13; + break; + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8007F4C(); + MenuDrawTextWindow(6, 5, 23, 8); + MenuPrint(gSystemText_LoadingEvent, 7, 6); + gMain.state++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; + } + break; + case 6: + if (IsLinkConnectionEstablished()) + { + if (!gReceivedRemoteLinkPlayers) + break; + + if (GetLinkPlayerDataExchangeStatusTimed() == 3) { + sub_800832C(); + MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); sub_8072044(gStringVar4); gMain.state = 13; break; } - if (gMain.newKeys & A_BUTTON) + else if (CheckLanguageMatch()) { - PlaySE(SE_SELECT); - sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); + sub_8072044(gSystemText_DontCutLink); gMain.state++; + break; } - else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; - } - break; - case 6: - if (IsLinkConnectionEstablished()) - { - if (!gReceivedRemoteLinkPlayers) - break; - - if (GetLinkPlayerDataExchangeStatusTimed() == 3) - { - sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - gMain.state = 13; - break; - } - else if (CheckLanguageMatch()) - { - sub_8072044(gSystemText_DontCutLink); - gMain.state++; - break; - } - else - { - CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - gMain.state = 13; - break; - } - } - if (gMain.newKeys & B_BUTTON) + else { - PlaySE(SE_SELECT); CloseLink(); - gMain.state = 15; + MenuZeroFillWindowRect(6, 5, 23, 8); + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + gMain.state = 13; break; } + } + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; break; + } + break; #else - case 5: - if (GetLinkPlayerCount_2() != 2) - { - goto label; - } - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); - gMain.state++; - } - else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; - } - break; - case 6: - if (IsLinkConnectionEstablished()) - { - register u8 *ptr asm("r0"); - register u32 offset1 asm("r2"); - register u32 offset2 asm("r1"); - - if (!gReceivedRemoteLinkPlayers) - break; + case 5: + if (GetLinkPlayerCount_2() != 2) + { + goto label; + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8007F4C(); + MenuDrawTextWindow(6, 5, 23, 8); + MenuPrint(gSystemText_LoadingEvent, 7, 6); + gMain.state++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; + } + break; + case 6: + if (IsLinkConnectionEstablished()) + { + register u8 *ptr asm("r0"); + register u32 offset1 asm("r2"); + register u32 offset2 asm("r1"); - if (GetLinkPlayerDataExchangeStatusTimed() == 3) - { - sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - ptr = (u8 *)&gMain; - offset1 = offsetof(struct Main, state); - asm("" ::: "r1"); - ptr += offset1; - *ptr = 13; - } - else if (CheckLanguageMatch()) - { - register u8 *ptr2 asm("r1"); - register int offset3 asm("r0"); - register int dummy asm("r2"); - sub_8072044(gSystemText_DontCutLink); - ptr2 = (u8 *)&gMain; - offset3 = offsetof(struct Main, state); - if (dummy) - dummy++; - ptr2 += offset3; - (*ptr2)++; - break; - } - else - { - CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); - label: - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - ptr = (u8 *)&gMain; - offset2 = offsetof(struct Main, state); - ptr += offset2; - *ptr = 13; - } + if (!gReceivedRemoteLinkPlayers) break; + + if (GetLinkPlayerDataExchangeStatusTimed() == 3) + { + sub_800832C(); + MenuZeroFillWindowRect(6, 5, 23, 8); + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + ptr = (u8 *)&gMain; + offset1 = offsetof(struct Main, state); + asm("" ::: "r1"); + ptr += offset1; + *ptr = 13; } - if (gMain.newKeys & B_BUTTON) + else if (CheckLanguageMatch()) { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; + register u8 *ptr2 asm("r1"); + register int offset3 asm("r0"); + register int dummy asm("r2"); + sub_8072044(gSystemText_DontCutLink); + ptr2 = (u8 *)&gMain; + offset3 = offsetof(struct Main, state); + if (dummy) + dummy++; + ptr2 += offset3; + (*ptr2)++; break; } - break; -#endif - case 7: - if (MenuUpdateWindowText()) - gMain.state++; - break; - case 8: - if (GetBlockReceivedStatus()) + else { - ResetBlockReceivedFlags(); - gMain.state++; + CloseLink(); + MenuZeroFillWindowRect(6, 5, 23, 8); + label: + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + ptr = (u8 *)&gMain; + offset2 = offsetof(struct Main, state); + ptr += offset2; + *ptr = 13; } break; - case 9: - gMain.state++; + } + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; break; - case 10: - sub_800832C(); + } + break; +#endif + case 7: + if (MenuUpdateWindowText()) gMain.state++; - break; - case 11: - if (gReceivedRemoteLinkPlayers) - break; - unkVal = sub_812613C(unk_2000000); - CpuFill32(0, unk_2000000, 0x7D4); - if (!GetEventLoadMessage(gStringVar4, unkVal)) - TrySavingData(NORMAL_SAVE); + break; + case 8: + if (GetBlockReceivedStatus()) + { + ResetBlockReceivedFlags(); gMain.state++; + } + break; + case 9: + gMain.state++; + break; + case 10: + sub_800832C(); + gMain.state++; + break; + case 11: + if (gReceivedRemoteLinkPlayers) break; - case 12: - sub_8072044(gStringVar4); + unkVal = sub_812613C(unk_2000000); + CpuFill32(0, unk_2000000, 0x7D4); + if (!GetEventLoadMessage(gStringVar4, unkVal)) + TrySavingData(NORMAL_SAVE); + gMain.state++; + break; + case 12: + sub_8072044(gStringVar4); + gMain.state++; + break; + case 13: + MenuZeroFillWindowRect(6, 5, 23, 8); + if (MenuUpdateWindowText()) + { gMain.state++; - break; - case 13: - MenuZeroFillWindowRect(6, 5, 23, 8); - if (MenuUpdateWindowText()) - { - gMain.state++; - gUnknown_02039338 = 0; - } - break; - case 14: - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - gMain.state++; - } - break; - case 15: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + gUnknown_02039338 = 0; + } + break; + case 14: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); gMain.state++; - break; - case 16: - if (!gPaletteFade.active) - DoSoftReset(); - break; + } + break; + case 15: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + gMain.state++; + break; + case 16: + if (!gPaletteFade.active) + DoSoftReset(); + break; } if (gLinkStatus & 0x40) diff --git a/src/option_menu.c b/src/option_menu.c index 613012972..49ad98196 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -93,135 +93,135 @@ void CB2_InitOptionMenu(void) { switch (gMain.state) { - default: - case 0: + default: + case 0: + { + u8 *addr; + u32 size; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + addr = (u8 *)VRAM; + size = 0x18000; + while (1) { - u8 *addr; - u32 size; - - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - REG_BG2CNT = 0; - REG_BG1CNT = 0; - REG_BG0CNT = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - addr = (u8 *)VRAM; - size = 0x18000; - while (1) + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } + DmaFill16(3, 0, addr, size); + break; } - DmaClear32(3, OAM, OAM_SIZE); - DmaClear16(3, PLTT, PLTT_SIZE); - gMain.state++; - break; - } - case 1: - ResetPaletteFade(); - remove_some_task(); - ResetTasks(); - ResetSpriteData(); - gMain.state++; - break; - case 2: - SetUpWindowConfig(&gWindowConfig_81E71B4); - gMain.state++; - break; - case 3: - MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4); - gMain.state++; - break; - case 4: - if (!MultistepInitMenuWindowContinue()) - return; - gMain.state++; - break; - case 5: - LoadPalette(gUnknown_0839F5FC, 0x80, 0x40); - CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40); - gMain.state++; - break; - case 6: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - gMain.state++; - break; - case 7: - { - u16 savedIme; - - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_WININ = 0x1111; - REG_WINOUT = 0x31; - REG_BLDCNT = 0xE1; - REG_BLDALPHA = 0; - REG_BLDY = 7; - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = savedIme; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(VBlankCB); - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | - DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; - gMain.state++; - break; - } - case 8: - { - u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0); - - gTasks[taskId].data[TD_MENUSELECTION] = 0; - gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed; - gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff; - gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle; - gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound; - gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode; - gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType; - - MenuDrawTextWindow(2, 0, 27, 3); - MenuDrawTextWindow(2, 4, 27, 19); - - MenuPrint(gSystemText_OptionMenu, 4, 1); - MenuPrint(gSystemText_TextSpeed, 4, 5); - MenuPrint(gSystemText_BattleScene, 4, 7); - MenuPrint(gSystemText_BattleStyle, 4, 9); - MenuPrint(gSystemText_Sound, 4, 11); - MenuPrint(gSystemText_ButtonMode, 4, 13); - MenuPrint(gSystemText_Frame, 4, 15); - MenuPrint(gSystemText_Cancel, 4, 17); - - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); - - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); - gMain.state++; - break; } - case 9: - SetMainCallback2(MainCB); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state++; + break; + } + case 1: + ResetPaletteFade(); + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + gMain.state++; + break; + case 2: + SetUpWindowConfig(&gWindowConfig_81E71B4); + gMain.state++; + break; + case 3: + MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4); + gMain.state++; + break; + case 4: + if (!MultistepInitMenuWindowContinue()) return; + gMain.state++; + break; + case 5: + LoadPalette(gUnknown_0839F5FC, 0x80, 0x40); + CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40); + gMain.state++; + break; + case 6: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gMain.state++; + break; + case 7: + { + u16 savedIme; + + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x1111; + REG_WINOUT = 0x31; + REG_BLDCNT = 0xE1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + SetVBlankCallback(VBlankCB); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | + DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + gMain.state++; + break; + } + case 8: + { + u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0); + + gTasks[taskId].data[TD_MENUSELECTION] = 0; + gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed; + gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff; + gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle; + gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound; + gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode; + gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType; + + MenuDrawTextWindow(2, 0, 27, 3); + MenuDrawTextWindow(2, 4, 27, 19); + + MenuPrint(gSystemText_OptionMenu, 4, 1); + MenuPrint(gSystemText_TextSpeed, 4, 5); + MenuPrint(gSystemText_BattleScene, 4, 7); + MenuPrint(gSystemText_BattleStyle, 4, 9); + MenuPrint(gSystemText_Sound, 4, 11); + MenuPrint(gSystemText_ButtonMode, 4, 13); + MenuPrint(gSystemText_Frame, 4, 15); + MenuPrint(gSystemText_Cancel, 4, 17); + + TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); + BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); + BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); + Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); + ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); + FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); + + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + + HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + gMain.state++; + break; + } + case 9: + SetMainCallback2(MainCB); + return; } } @@ -264,30 +264,30 @@ static void Task_OptionMenuProcessInput(u8 taskId) { switch (gTasks[taskId].data[TD_MENUSELECTION]) { - case MENUITEM_TEXTSPEED: - gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]); - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); - break; - case MENUITEM_BATTLESCENE: - gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]); - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); - break; - case MENUITEM_BATTLESTYLE: - gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]); - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); - break; - case MENUITEM_SOUND: - gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]); - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); - break; - case MENUITEM_BUTTONMODE: - gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]); - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); - break; - case MENUITEM_FRAMETYPE: - gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]); - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); - break; + case MENUITEM_TEXTSPEED: + gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]); + TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); + break; + case MENUITEM_BATTLESCENE: + gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]); + BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); + break; + case MENUITEM_BATTLESTYLE: + gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]); + BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); + break; + case MENUITEM_SOUND: + gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]); + Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); + break; + case MENUITEM_BUTTONMODE: + gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]); + ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); + break; + case MENUITEM_FRAMETYPE: + gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]); + FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); + break; } } } diff --git a/src/player_pc.c b/src/player_pc.c index f0f0709b1..048c79862 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -784,17 +784,17 @@ void sub_813ABE8(u8 taskId) switch(GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1) { - case 0: - case 1: - case 3: - sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; - case 4: - sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; - case 2: - sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; + case 0: + case 1: + case 3: + sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; + case 4: + sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; + case 2: + sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; } } else @@ -809,15 +809,15 @@ beforeLabel: switch(data[1]) { - default: - CreateVerticalScrollIndicators(0, 0xB8, 8); - break; + default: + CreateVerticalScrollIndicators(0, 0xB8, 8); + break; weirdCase: - sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1); - goto beforeLabel; - case 0: - DestroyVerticalScrollIndicator(0); - break; + sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1); + goto beforeLabel; + case 0: + DestroyVerticalScrollIndicator(0); + break; } if(data[1] + data[4] <= data[2]) diff --git a/src/pokedex.c b/src/pokedex.c index 5ea1f9938..03a7d916a 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -207,97 +207,97 @@ void CB2_InitPokedex(void) { switch (gMain.state) { - case 0: - default: - { - u8 *addr; - u32 size; + case 0: + default: + { + u8 *addr; + u32 size; - SetVBlankCallback(NULL); - sub_8091060(0); - addr = (u8 *)VRAM; - size = VRAM_SIZE; - while (1) + SetVBlankCallback(NULL); + sub_8091060(0); + addr = (u8 *)VRAM; + size = VRAM_SIZE; + while (1) + { + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } + DmaFill16(3, 0, addr, size); + break; } - DmaClear32(3, OAM, OAM_SIZE); - DmaClear16(3, PLTT, PLTT_SIZE); - gMain.state = 1; - break; } + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state = 1; + break; + } + case 1: + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + SetUpWindowConfig(&gWindowConfig_81E7048); + InitMenuWindow(&gWindowConfig_81E7048); + gMain.state++; + break; + case 2: + switch (Random() & 3) + { + case 0: + default: + gPokedexView = (struct PokedexView *)0x02018000; + break; case 1: - remove_some_task(); - ResetTasks(); - ResetSpriteData(); - ResetPaletteFade(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 8; - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); - gMain.state++; + gPokedexView = (struct PokedexView *)0x02018800; break; case 2: - switch (Random() & 3) - { - case 0: - default: - gPokedexView = (struct PokedexView *)0x02018000; - break; - case 1: - gPokedexView = (struct PokedexView *)0x02018800; - break; - case 2: - gPokedexView = (struct PokedexView *)0x02019000; - break; - case 3: - gPokedexView = (struct PokedexView *)0x02019800; - break; - } - ClearPokedexView(gPokedexView); - CreateTask(Task_PokedexShowMainScreen, 0); - gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1; - if (!IsNationalPokedexEnabled()) - gPokedexView->dexMode = DEX_MODE_HOENN; - gPokedexView->dexOrder = gSaveBlock2.pokedex.order; - gPokedexView->selectedPokemon = gUnknown_0202FFB8; - gPokedexView->unk62C = gUnknown_0202FFBA; - gPokedexView->selectedScreen = PAGE_SCREEN; - gPokedexView->unk64E = 0; - if (!IsNationalPokedexEnabled()) - { - gPokedexView->unk61A = GetHoennPokedexCount(0); - gPokedexView->unk61C = GetHoennPokedexCount(1); - } - else - { - gPokedexView->unk61A = GetNationalPokedexCount(0); - gPokedexView->unk61C = GetNationalPokedexCount(1); - } - gPokedexView->unk62D = 8; - gMain.state++; + gPokedexView = (struct PokedexView *)0x02019000; break; case 3: + gPokedexView = (struct PokedexView *)0x02019800; + break; + } + ClearPokedexView(gPokedexView); + CreateTask(Task_PokedexShowMainScreen, 0); + gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1; + if (!IsNationalPokedexEnabled()) + gPokedexView->dexMode = DEX_MODE_HOENN; + gPokedexView->dexOrder = gSaveBlock2.pokedex.order; + gPokedexView->selectedPokemon = gUnknown_0202FFB8; + gPokedexView->unk62C = gUnknown_0202FFBA; + gPokedexView->selectedScreen = PAGE_SCREEN; + gPokedexView->unk64E = 0; + if (!IsNationalPokedexEnabled()) { - u16 savedIme; - - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= 1; - REG_IME = savedIme; - REG_DISPSTAT |= 8; - SetVBlankCallback(sub_808C0B8); - SetMainCallback2(MainCB); - SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80); + gPokedexView->unk61A = GetHoennPokedexCount(0); + gPokedexView->unk61C = GetHoennPokedexCount(1); + } + else + { + gPokedexView->unk61A = GetNationalPokedexCount(0); + gPokedexView->unk61C = GetNationalPokedexCount(1); } + gPokedexView->unk62D = 8; + gMain.state++; + break; + case 3: + { + u16 savedIme; + + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIme; + REG_DISPSTAT |= 8; + SetVBlankCallback(sub_808C0B8); + SetMainCallback2(MainCB); + SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80); + } } } @@ -423,29 +423,29 @@ void Task_PokedexMainScreenMenu(u8 taskId) { switch (gPokedexView->menuCursorPos) { - case 0: //BACK TO LIST - default: - gMain.newKeys |= START_BUTTON; //Exit menu - break; - case 1: //LIST TOP - gPokedexView->selectedPokemon = 0; - gPokedexView->unk62C = 0x40; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; //Exit menu - break; - case 2: //LIST BOTTOM - gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; - gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; //Exit menu - break; - case 3: //CLOSE POKEDEX - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_ClosePokedex; - PlaySE(SE_PC_OFF); - break; + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 1: //LIST TOP + gPokedexView->selectedPokemon = 0; + gPokedexView->unk62C = 0x40; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 2: //LIST BOTTOM + gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; + gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 3: //CLOSE POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_ClosePokedex; + PlaySE(SE_PC_OFF); + break; } } @@ -614,34 +614,34 @@ void Task_PokedexResultsScreenMenu(u8 taskId) { switch (gPokedexView->menuCursorPos) { - case 0: //BACK TO LIST - default: - gMain.newKeys |= START_BUTTON; - break; - case 1: //LIST TOP - gPokedexView->selectedPokemon = 0; - gPokedexView->unk62C = 0x40; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; - break; - case 2: //LIST BOTTOM - gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; - gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; - break; - case 3: //BACK TO POKEDEX - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; - PlaySE(SE_TRACK_DOOR); - break; - case 4: //CLOSE POKEDEX - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex; - PlaySE(SE_PC_OFF); - break; + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; + break; + case 1: //LIST TOP + gPokedexView->selectedPokemon = 0; + gPokedexView->unk62C = 0x40; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 2: //LIST BOTTOM + gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; + gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 3: //BACK TO POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; + PlaySE(SE_TRACK_DOOR); + break; + case 4: //CLOSE POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex; + PlaySE(SE_PC_OFF); + break; } } @@ -726,83 +726,83 @@ bool8 sub_808D344(u8 a) { switch (gMain.state) { - case 0: - default: - if (gPaletteFade.active) - return 0; - //_0808D39E - SetVBlankCallback(NULL); - gPokedexView->unk64A = a; - sub_8091060(0); - REG_BG2VOFS = gPokedexView->unk62D; - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM)); - LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800)); - LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800)); - DmaClear16(3, VRAM + 0x6000, 0x500); - if (a == 0) - LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500)); - else - LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500)); - ResetPaletteFade(); - if (a == 0) - gPokedexView->unk64C_1 = 0; - else - gPokedexView->unk64C_1 = 1; - sub_808D640(); - gMain.state = 1; - break; - case 1: - ResetSpriteData(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 8; - LoadCompressedObjectPic(&gUnknown_083A05CC); - LoadSpritePalettes(gUnknown_083A05DC); - sub_808E978(a); - gMain.state++; - break; - case 2: - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); - LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); - gMain.state++; - break; - case 3: - if (a == 0) - SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gPokedexView->menuIsOpen = 0; - gPokedexView->menuY = 0; - gMain.state++; - break; - case 4: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - SetVBlankCallback(sub_808C0B8); - gMain.state++; - break; - case 5: - REG_WININ = 0x3F3F; - REG_WINOUT = 0x1D3F; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON; - gMain.state++; - break; - case 6: - if (!gPaletteFade.active) - { - gMain.state = 0; - return 1; - } - else - return 0; + case 0: + default: + if (gPaletteFade.active) + return 0; + //_0808D39E + SetVBlankCallback(NULL); + gPokedexView->unk64A = a; + sub_8091060(0); + REG_BG2VOFS = gPokedexView->unk62D; + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM)); + LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800)); + LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800)); + DmaClear16(3, VRAM + 0x6000, 0x500); + if (a == 0) + LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500)); + else + LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500)); + ResetPaletteFade(); + if (a == 0) + gPokedexView->unk64C_1 = 0; + else + gPokedexView->unk64C_1 = 1; + sub_808D640(); + gMain.state = 1; + break; + case 1: + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedObjectPic(&gUnknown_083A05CC); + LoadSpritePalettes(gUnknown_083A05DC); + sub_808E978(a); + gMain.state++; + break; + case 2: + SetUpWindowConfig(&gWindowConfig_81E7048); + InitMenuWindow(&gWindowConfig_81E7048); + LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); + gMain.state++; + break; + case 3: + if (a == 0) + SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gPokedexView->menuIsOpen = 0; + gPokedexView->menuY = 0; + gMain.state++; + break; + case 4: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetVBlankCallback(sub_808C0B8); + gMain.state++; + break; + case 5: + REG_WININ = 0x3F3F; + REG_WINOUT = 0x1D3F; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON; + gMain.state++; + break; + case 6: + if (!gPaletteFade.active) + { + gMain.state = 0; + return 1; + } + else + return 0; } return 0; } @@ -826,136 +826,136 @@ void SortPokedex(u8 dexMode, u8 sortMode) switch (dexMode) { - default: - case DEX_MODE_HOENN: + default: + case DEX_MODE_HOENN: + vars[0] = 202; + vars[1] = 1; + break; + case DEX_MODE_NATIONAL: + if (IsNationalPokedexEnabled()) + { + vars[0] = 386; + vars[1] = 0; + } + else + { vars[0] = 202; vars[1] = 1; - break; - case DEX_MODE_NATIONAL: - if (IsNationalPokedexEnabled()) - { - vars[0] = 386; - vars[1] = 0; - } - else - { - vars[0] = 202; - vars[1] = 1; - } - break; + } + break; } switch (sortMode) { - case 0: + case 0: + { + if (vars[1]) { - if (vars[1]) + for (i = 0; i < vars[0]; i++) { - for (i = 0; i < vars[0]; i++) - { - vars[2] = HoennToNationalOrder(i + 1); - gPokedexView->unk0[i].dexNum = vars[2]; - gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1); - if (gPokedexView->unk0[i].seen) - gPokedexView->unk60C = i + 1; - } + vars[2] = HoennToNationalOrder(i + 1); + gPokedexView->unk0[i].dexNum = vars[2]; + gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0); + gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1); + if (gPokedexView->unk0[i].seen) + gPokedexView->unk60C = i + 1; } - else - { - bool32 r10; - s16 r5; + } + else + { + bool32 r10; + s16 r5; - r10 = r5 = i = 0; - for (i = 0; i < vars[0]; i++) + r10 = r5 = i = 0; + for (i = 0; i < vars[0]; i++) + { + vars[2] = i + 1; + if (sub_8090D90(vars[2], 0)) + r10 = 1; + if (r10) { - vars[2] = i + 1; - if (sub_8090D90(vars[2], 0)) - r10 = 1; - if (r10) - { - asm(""); //Needed to match for some reason - gPokedexView->unk0[r5].dexNum = vars[2]; - gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1); - if (gPokedexView->unk0[r5].seen) - gPokedexView->unk60C = r5 + 1; - r5++; - } + asm(""); //Needed to match for some reason + gPokedexView->unk0[r5].dexNum = vars[2]; + gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0); + gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1); + if (gPokedexView->unk0[r5].seen) + gPokedexView->unk60C = r5 + 1; + r5++; } } - break; } - case 1: - for (i = 0; i < 411; i++) - { - vars[2] = gPokedexOrder_Alphabetical[i]; + break; + } + case 1: + for (i = 0; i < 411; i++) + { + vars[2] = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1); - gPokedexView->unk60C++; - } - } - break; - case 2: - for (i = 385; i >= 0; i--) + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0)) { - vars[2] = gPokedexOrder_Weight[i]; - - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk60C++; } - break; - case 3: - for (i = 0; i < 386; i++) - { - vars[2] = gPokedexOrder_Weight[i]; + } + break; + case 2: + for (i = 385; i >= 0; i--) + { + vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } - } - break; - case 4: - for (i = 385; i >=0; i--) + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - vars[2] = gPokedexOrder_Height[i]; + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; + } + } + break; + case 3: + for (i = 0; i < 386; i++) + { + vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + { + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; } - break; - case 5: - for (i = 0; i < 386; i++) + } + break; + case 4: + for (i = 385; i >=0; i--) + { + vars[2] = gPokedexOrder_Height[i]; + + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - vars[2] = gPokedexOrder_Height[i]; + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; + } + } + break; + case 5: + for (i = 0; i < 386; i++) + { + vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + { + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; } - break; + } + break; } for (i = gPokedexView->unk60C; i < 386; i++) { @@ -969,87 +969,87 @@ void sub_808DBE8(u8 a, u16 b, u16 c) { switch (a) { - case 0: - default: - { - u16 i; - s16 _b = b - 5; + case 0: + default: + { + u16 i; + s16 _b = b - 5; - for (i = 0; i <= 10; i++) - { - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) - sub_808E090(0x11, i * 2, c); - else - { - sub_808E090(0x11, i * 2, c); - if (gPokedexView->unk0[_b].seen) - { - sub_808DEB0(_b, 0x12, i * 2, c); - sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c); - sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2); - } - else - { - sub_808DEB0(_b, 0x12, i * 2, c); - sub_808DF88(0, 0x11, i * 2, c); - sub_808DFE4(0, 0x17, i * 2); - } - } - _b++; - } - break; - } - case 1: + for (i = 0; i <= 10; i++) { - s16 _b = b - 5; - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) - sub_808E090(0x11, gPokedexView->unk630 * 2, c); + sub_808E090(0x11, i * 2, c); else { - sub_808E090(0x11, gPokedexView->unk630 * 2, c); + sub_808E090(0x11, i * 2, c); if (gPokedexView->unk0[_b].seen) { - sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); - sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c); - sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2); + sub_808DEB0(_b, 0x12, i * 2, c); + sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c); + sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2); } else { - sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); - sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c); - sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2); + sub_808DEB0(_b, 0x12, i * 2, c); + sub_808DF88(0, 0x11, i * 2, c); + sub_808DFE4(0, 0x17, i * 2); } } - break; + _b++; } - case 2: + break; + } + case 1: + { + s16 _b = b - 5; + + if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) + sub_808E090(0x11, gPokedexView->unk630 * 2, c); + else { - s16 _b = b + 5; - u16 r2 = gPokedexView->unk630 + 10; + sub_808E090(0x11, gPokedexView->unk630 * 2, c); + if (gPokedexView->unk0[_b].seen) + { + sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); + sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c); + sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2); + } + else + { + sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); + sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c); + sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2); + } + } + break; + } + case 2: + { + s16 _b = b + 5; + u16 r2 = gPokedexView->unk630 + 10; - if (r2 > 15) - r2 -= 16; - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) - sub_808E090(0x11, r2 * 2, c); + if (r2 > 15) + r2 -= 16; + if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) + sub_808E090(0x11, r2 * 2, c); + else + { + sub_808E090(0x11, r2 * 2, c); + if (gPokedexView->unk0[_b].seen) + { + sub_808DEB0(_b, 0x12, r2 * 2, c); + sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c); + sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2); + } else { - sub_808E090(0x11, r2 * 2, c); - if (gPokedexView->unk0[_b].seen) - { - sub_808DEB0(_b, 0x12, r2 * 2, c); - sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c); - sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2); - } - else - { - sub_808DEB0(_b, 0x12, r2 * 2, c); - sub_808DF88(0, 0x11, r2 * 2, c); - sub_808DFE4(0, 0x17, r2 * 2); - } + sub_808DEB0(_b, 0x12, r2 * 2, c); + sub_808DF88(0, 0x11, r2 * 2, c); + sub_808DFE4(0, 0x17, r2 * 2); } - break; } + break; + } } } @@ -1268,26 +1268,26 @@ bool8 sub_808E208(u8 a, u8 b, u8 c) gPokedexView->unk62E--; switch (a) { - case 1: - for (i = 0; i < 4; i++) - { - if (gPokedexView->unk61E[i] != 0xFFFF) - gSprites[gPokedexView->unk61E[i]].data5 += b; - } - foo = 16 * (c - gPokedexView->unk62E) / c; - REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo; - gPokedexView->unk62C -= gPokedexView->unk628; - break; - case 2: - for (i = 0; i < 4; i++) - { - if (gPokedexView->unk61E[i] != 0xFFFF) - gSprites[gPokedexView->unk61E[i]].data5 -= b; - } - foo = 16 * (c - gPokedexView->unk62E) / c; - REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo; - gPokedexView->unk62C += gPokedexView->unk628; - break; + case 1: + for (i = 0; i < 4; i++) + { + if (gPokedexView->unk61E[i] != 0xFFFF) + gSprites[gPokedexView->unk61E[i]].data5 += b; + } + foo = 16 * (c - gPokedexView->unk62E) / c; + REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo; + gPokedexView->unk62C -= gPokedexView->unk628; + break; + case 2: + for (i = 0; i < 4; i++) + { + if (gPokedexView->unk61E[i] != 0xFFFF) + gSprites[gPokedexView->unk61E[i]].data5 -= b; + } + foo = 16 * (c - gPokedexView->unk62E) / c; + REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo; + gPokedexView->unk62C += gPokedexView->unk628; + break; } return 0; } @@ -1307,36 +1307,36 @@ void sub_808E398(u8 a, u16 b) gPokedexView->unk632 = gPokedexView->unk630; switch (a) { - case 1: + case 1: + { + unk = sub_808E888(b - 1); + if (unk != 0xFFFF) { - unk = sub_808E888(b - 1); - if (unk != 0xFFFF) - { - spriteId = sub_808E8C8(unk, 0x60, 0x50); - gSprites[spriteId].callback = sub_808EE28; - gSprites[spriteId].data5 = 0xFFC0; - } - if (gPokedexView->unk630 > 0) - gPokedexView->unk630--; - else - gPokedexView->unk630 = 0xF; - break; + spriteId = sub_808E8C8(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_808EE28; + gSprites[spriteId].data5 = 0xFFC0; } - case 2: + if (gPokedexView->unk630 > 0) + gPokedexView->unk630--; + else + gPokedexView->unk630 = 0xF; + break; + } + case 2: + { + unk = sub_808E888(b + 1); + if (unk != 0xFFFF) { - unk = sub_808E888(b + 1); - if (unk != 0xFFFF) - { - spriteId = sub_808E8C8(unk, 0x60, 0x50); - gSprites[spriteId].callback = sub_808EE28; - gSprites[spriteId].data5 = 0x40; - } - if (gPokedexView->unk630 <= 0xE) - gPokedexView->unk630++; - else - gPokedexView->unk630 = 0; - break; + spriteId = sub_808E8C8(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_808EE28; + gSprites[spriteId].data5 = 0x40; } + if (gPokedexView->unk630 <= 0xE) + gPokedexView->unk630++; + else + gPokedexView->unk630 = 0; + break; + } } } #ifdef NONMATCHING @@ -2206,126 +2206,126 @@ void Task_InitPageScreenMultistep(u8 taskId) { switch (gMain.state) { - case 0: - default: - if (!gPaletteFade.active) - { - u16 r2; - - gPokedexView->unk64A = 1; - gPokedexView->unk64E = 0; - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - r2 = 0; - if (gTasks[taskId].data[1] != 0) - r2 += 0x1000; - if (gTasks[taskId].data[2] != 0) - r2 |= 0x200; - sub_8091060(r2); - gMain.state = 1; - } - break; - case 1: - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); - LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); - sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC); - gMain.state++; - break; - case 2: - sub_80904FC(0xD); - sub_8090584(gPokedexView->selectedScreen, 0xD); - sub_808D640(); - gMain.state++; - break; - case 3: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); - gMain.state++; - break; - case 4: - if (gPokedexView->dexMode == DEX_MODE_HOENN) - sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3); - else - sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3); - //_0808F45A - sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3); - MenuPrint(gDexText_UnknownPoke, 11, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); - if (gUnknown_0202FFBC->owned) - { - sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5); - sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7); - sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); - sub_80917CC(14, 0x3FC); - } - //_0808F50C - else - { - MenuPrint(gUnknown_083A05F8, 2, 13); - LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); - } - gMain.state++; - break; - case 5: - if (gTasks[taskId].data[1] == 0) - { - //_0808F540 - gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); - gSprites[gTasks[taskId].data[4]].oam.priority = 0; - } - gMain.state++; - break; - case 6: + case 0: + default: + if (!gPaletteFade.active) { - u32 r3 = 0; + u16 r2; - if (gTasks[taskId].data[2] != 0) - r3 = 0x14; + gPokedexView->unk64A = 1; + gPokedexView->unk64E = 0; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + r2 = 0; if (gTasks[taskId].data[1] != 0) - { - r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10)); - } - BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); - gMain.state++; - break; + r2 += 0x1000; + if (gTasks[taskId].data[2] != 0) + r2 |= 0x200; + sub_8091060(r2); + gMain.state = 1; } - case 7: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + break; + case 1: + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); + LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); + sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC); + gMain.state++; + break; + case 2: + sub_80904FC(0xD); + sub_8090584(gPokedexView->selectedScreen, 0xD); + sub_808D640(); + gMain.state++; + break; + case 3: + SetUpWindowConfig(&gWindowConfig_81E7064); + InitMenuWindow(&gWindowConfig_81E7064); + gMain.state++; + break; + case 4: + if (gPokedexView->dexMode == DEX_MODE_HOENN) + sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3); + else + sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3); + //_0808F45A + sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3); + MenuPrint(gDexText_UnknownPoke, 11, 5); + MenuPrint(gDexText_UnknownHeight, 16, 7); + MenuPrint(gDexText_UnknownWeight, 16, 9); + if (gUnknown_0202FFBC->owned) + { + sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5); + sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7); + sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9); + MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); + sub_80917CC(14, 0x3FC); + } + //_0808F50C + else + { + MenuPrint(gUnknown_083A05F8, 2, 13); + LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); + } + gMain.state++; + break; + case 5: + if (gTasks[taskId].data[1] == 0) + { + //_0808F540 + gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + } + gMain.state++; + break; + case 6: + { + u32 r3 = 0; + + if (gTasks[taskId].data[2] != 0) + r3 = 0x14; + if (gTasks[taskId].data[1] != 0) + { + r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10)); + } + BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gMain.state++; + break; + } + case 7: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + gMain.state++; + break; + case 8: + if (!gPaletteFade.active) + { gMain.state++; - break; - case 8: - if (!gPaletteFade.active) + if (gTasks[taskId].data[3] == 0) { - gMain.state++; - if (gTasks[taskId].data[3] == 0) - { - StopCryAndClearCrySongs(); - PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA); - } - else - gMain.state++; + StopCryAndClearCrySongs(); + PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA); } - break; - case 9: - if (!IsCryPlayingOrClearCrySongs()) + else gMain.state++; - break; - case 10: - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[2] = 1; - gTasks[taskId].data[3] = 1; - gTasks[taskId].func = Task_PageScreenProcessInput; - gMain.state = 0; - break; + } + break; + case 9: + if (!IsCryPlayingOrClearCrySongs()) + gMain.state++; + break; + case 10: + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[3] = 1; + gTasks[taskId].func = Task_PageScreenProcessInput; + gMain.state = 0; + break; } } @@ -2462,99 +2462,99 @@ void Task_InitCryScreenMultistep(u8 taskId) { switch (gMain.state) { - case 0: - default: - if (!gPaletteFade.active) - { - m4aMPlayStop(&gMPlay_BGM); - gPokedexView->unk64A = 6; - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - sub_8091060(0x200); - gPokedexView->selectedScreen = CRY_SCREEN; - gMain.state = 1; - } - break; - case 1: - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); - LZ77UnCompVram(gUnknown_0839F8A0, (void *)(VRAM + 0x7000)); - gMain.state++; - break; - case 2: - sub_8090540(0xD); - sub_8090644(2, 0xD); - sub_808D640(); - DmaClear16(3, (void *)(VRAM + 0xF800), 0x500); - gMain.state++; - break; - case 3: - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); - ResetPaletteFade(); - gMain.state++; - break; - case 4: - MenuPrint(gDexText_CryOf, 10, 4); - sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2); - gMain.state++; - break; - case 5: - gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); - gSprites[gTasks[taskId].data[4]].oam.priority = 0; - gUnknown_03005E98 = 0; - gMain.state++; - break; - case 6: + case 0: + default: + if (!gPaletteFade.active) { - struct CryRelatedStruct sp8; - - sp8.unk0 = 0x4020; - sp8.unk2 = 0x1F; - sp8.paletteNo = 8; - sp8.yPos = 0x1E; - sp8.xPos = 0xC; - if (sub_8119E3C(&sp8, 0) != 0) - { - gMain.state++; - gUnknown_03005E98 = 0; - } - break; + m4aMPlayStop(&gMPlay_BGM); + gPokedexView->unk64A = 6; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_8091060(0x200); + gPokedexView->selectedScreen = CRY_SCREEN; + gMain.state = 1; } - case 7: - { - struct CryRelatedStruct sp10; + break; + case 1: + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); + LZ77UnCompVram(gUnknown_0839F8A0, (void *)(VRAM + 0x7000)); + gMain.state++; + break; + case 2: + sub_8090540(0xD); + sub_8090644(2, 0xD); + sub_808D640(); + DmaClear16(3, (void *)(VRAM + 0xF800), 0x500); + gMain.state++; + break; + case 3: + SetUpWindowConfig(&gWindowConfig_81E702C); + InitMenuWindow(&gWindowConfig_81E702C); + ResetPaletteFade(); + gMain.state++; + break; + case 4: + MenuPrint(gDexText_CryOf, 10, 4); + sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2); + gMain.state++; + break; + case 5: + gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + gUnknown_03005E98 = 0; + gMain.state++; + break; + case 6: + { + struct CryRelatedStruct sp8; - sp10.unk0 = 0x3000; - sp10.unk2 = 0xE; - sp10.paletteNo = 9; - sp10.xPos = 0x12; - sp10.yPos = 3; - if (ShowPokedexCryScreen(&sp10, 1) != 0) - { - gMain.state++; - } - break; - } - case 8: - BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); + sp8.unk0 = 0x4020; + sp8.unk2 = 0x1F; + sp8.paletteNo = 8; + sp8.yPos = 0x1E; + sp8.xPos = 0xC; + if (sub_8119E3C(&sp8, 0) != 0) + { gMain.state++; - break; - case 9: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gUnknown_03005E98 = 0; + } + break; + } + case 7: + { + struct CryRelatedStruct sp10; + + sp10.unk0 = 0x3000; + sp10.unk2 = 0xE; + sp10.paletteNo = 9; + sp10.xPos = 0x12; + sp10.yPos = 3; + if (ShowPokedexCryScreen(&sp10, 1) != 0) + { gMain.state++; - break; - case 10: - gPokedexView->unk64F = 0; - gMain.state = 0; - gTasks[taskId].func = Task_CryScreenProcessInput; - break; + } + break; + } + case 8: + BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gMain.state++; + break; + case 9: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gMain.state++; + break; + case 10: + gPokedexView->unk64F = 0; + gMain.state = 0; + gTasks[taskId].func = Task_CryScreenProcessInput; + break; } } @@ -2616,15 +2616,15 @@ void sub_808FFBC(u8 taskId) DestroyCryMeterNeedleSprite(); switch (gPokedexView->unk64F) { - default: - case 1: - gTasks[taskId].func = Task_InitPageScreenMultistep; - break; - case 2: - gTasks[taskId].func = Task_InitAreaScreenMultistep; - break; - case 3: - gTasks[taskId].func = Task_InitSizeScreenMultistep; + default: + case 1: + gTasks[taskId].func = Task_InitPageScreenMultistep; + break; + case 2: + gTasks[taskId].func = Task_InitAreaScreenMultistep; + break; + case 3: + gTasks[taskId].func = Task_InitSizeScreenMultistep; } } } @@ -2646,87 +2646,87 @@ void Task_InitSizeScreenMultistep(u8 taskId) switch (gMain.state) { - default: - case 0: - if (!gPaletteFade.active) - { - gPokedexView->unk64A = 7; - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - sub_8091060(0x200); - gPokedexView->selectedScreen = SIZE_SCREEN; - gMain.state = 1; - } - break; - case 1: - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); - LZ77UnCompVram(gUnknown_0839F988, (void *)(VRAM + 0x7000)); - gMain.state++; - break; - case 2: - sub_8090540(0xD); - sub_8090644(3, 0xD); - sub_808D640(); - gMain.state++; - break; - case 3: + default: + case 0: + if (!gPaletteFade.active) { - u8 string[40]; //I hope this is the correct size + gPokedexView->unk64A = 7; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_8091060(0x200); + gPokedexView->selectedScreen = SIZE_SCREEN; + gMain.state = 1; + } + break; + case 1: + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); + LZ77UnCompVram(gUnknown_0839F988, (void *)(VRAM + 0x7000)); + gMain.state++; + break; + case 2: + sub_8090540(0xD); + sub_8090644(3, 0xD); + sub_808D640(); + gMain.state++; + break; + case 3: + { + u8 string[40]; //I hope this is the correct size - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); - string[0] = EOS; - StringAppend(string, gDexText_SizeComparedTo); - StringAppend(string, gSaveBlock2.playerName); - sub_8072BD8(string, 3, 15, 0xC0); - gMain.state++; - break; + SetUpWindowConfig(&gWindowConfig_81E702C); + InitMenuWindow(&gWindowConfig_81E702C); + string[0] = EOS; + StringAppend(string, gDexText_SizeComparedTo); + StringAppend(string, gSaveBlock2.playerName); + sub_8072BD8(string, 3, 15, 0xC0); + gMain.state++; + break; + } + case 4: + ResetPaletteFade(); + gMain.state++; + break; + case 5: + spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 1; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset; + SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale); + LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + gMain.state++; + break; + case 6: + spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 2; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset; + SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale); + LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + gMain.state++; + break; + case 7: + BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gMain.state++; + break; + case 8: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + gMain.state++; + break; + case 9: + if (!gPaletteFade.active) + { + gPokedexView->unk64F = 0; + gMain.state = 0; + gTasks[taskId].func = Task_SizeScreenProcessInput; } - case 4: - ResetPaletteFade(); - gMain.state++; - break; - case 5: - spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0); - gSprites[spriteId].oam.affineMode = 1; - gSprites[spriteId].oam.matrixNum = 1; - gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset; - SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale); - LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); - gMain.state++; - break; - case 6: - spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1); - gSprites[spriteId].oam.affineMode = 1; - gSprites[spriteId].oam.matrixNum = 2; - gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset; - SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale); - LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); - gMain.state++; - break; - case 7: - BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); - gMain.state++; - break; - case 8: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; - gMain.state++; - break; - case 9: - if (!gPaletteFade.active) - { - gPokedexView->unk64F = 0; - gMain.state = 0; - gTasks[taskId].func = Task_SizeScreenProcessInput; - } - break; + break; } } @@ -3094,81 +3094,81 @@ void sub_8090750(u8 taskId) switch (gTasks[taskId].data[0]) { - default: - case 0: - if (!gPaletteFade.active) - { - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - sub_8091060(0x100); - gTasks[taskId].data[0] = 1; - } - break; - case 1: + default: + case 0: + if (!gPaletteFade.active) { - u16 i; - - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000)); - LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); - for (i = 0; i < 0x280; i++) - ((u16 *)(VRAM + 0x7800))[i] += 0x2000; - sub_8091738(gTasks[taskId].data[1], 2, 0x3FC); - ResetPaletteFade(); - LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E); - gTasks[taskId].data[0]++; - break; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_8091060(0x100); + gTasks[taskId].data[0] = 1; } - case 2: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); - DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); - gTasks[taskId].data[0]++; - break; - case 3: - sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0); - if (!IsNationalPokedexEnabled()) - sub_8091154(NationalToHoennOrder(dexNum), 13, 3); - else - sub_8091154(dexNum, 13, 3); - sub_80911C8(dexNum, 16, 3); - MenuPrint(gDexText_UnknownPoke, 11, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); - sub_8091304(&gPokedexEntries[dexNum], 11, 5); - sub_8091458(gPokedexEntries[dexNum].height, 16, 7); - sub_8091564(gPokedexEntries[dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13); - sub_80917CC(14, 0x3FC); - gTasks[taskId].data[0]++; - break; - case 4: - { - u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0); + break; + case 1: + { + u16 i; - gSprites[spriteId].oam.priority = 0; - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); - gTasks[taskId].data[3] = spriteId; - gTasks[taskId].data[0]++; - break; + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); + for (i = 0; i < 0x280; i++) + ((u16 *)(VRAM + 0x7800))[i] += 0x2000; + sub_8091738(gTasks[taskId].data[1], 2, 0x3FC); + ResetPaletteFade(); + LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E); + gTasks[taskId].data[0]++; + break; + } + case 2: + SetUpWindowConfig(&gWindowConfig_81E7064); + InitMenuWindow(&gWindowConfig_81E7064); + DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); + gTasks[taskId].data[0]++; + break; + case 3: + sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0); + if (!IsNationalPokedexEnabled()) + sub_8091154(NationalToHoennOrder(dexNum), 13, 3); + else + sub_8091154(dexNum, 13, 3); + sub_80911C8(dexNum, 16, 3); + MenuPrint(gDexText_UnknownPoke, 11, 5); + MenuPrint(gDexText_UnknownHeight, 16, 7); + MenuPrint(gDexText_UnknownWeight, 16, 9); + sub_8091304(&gPokedexEntries[dexNum], 11, 5); + sub_8091458(gPokedexEntries[dexNum].height, 16, 7); + sub_8091564(gPokedexEntries[dexNum].weight, 16, 9); + MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13); + sub_80917CC(14, 0x3FC); + gTasks[taskId].data[0]++; + break; + case 4: + { + u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0); + + gSprites[spriteId].oam.priority = 0; + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gTasks[taskId].data[3] = spriteId; + gTasks[taskId].data[0]++; + break; + } + case 5: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + gTasks[taskId].data[0]++; + break; + case 6: + if (!gPaletteFade.active) + { + PlayCry1(NationalPokedexNumToSpecies(dexNum), 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].func = sub_8090A3C; } - case 5: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; - gTasks[taskId].data[0]++; - break; - case 6: - if (!gPaletteFade.active) - { - PlayCry1(NationalPokedexNumToSpecies(dexNum), 0); - gTasks[taskId].data[2] = 0; - gTasks[taskId].data[4] = 0; - gTasks[taskId].func = sub_8090A3C; - } - break; + break; } } */ diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 3be11f453..31b66fd9a 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -417,307 +417,307 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) switch (field) { - case MON_DATA_PERSONALITY: - retVal = boxMon->personality; - break; - case MON_DATA_OT_ID: - retVal = boxMon->otId; - break; - case MON_DATA_NICKNAME: + case MON_DATA_PERSONALITY: + retVal = boxMon->personality; + break; + case MON_DATA_OT_ID: + retVal = boxMon->otId; + break; + case MON_DATA_NICKNAME: + { + if (boxMon->isBadEgg) { - if (boxMon->isBadEgg) - { - StringCopy(data, gBadEggNickname); - retVal = StringLength(data); - } - else if (boxMon->isEgg) - { - StringCopy(data, gEggNickname); - retVal = StringLength(data); - } - else - { - retVal = 0; - - while (retVal < POKEMON_NAME_LENGTH && boxMon->nickname[retVal] != EOS) - { - data[retVal] = boxMon->nickname[retVal]; - retVal++; - } - - data[retVal] = EOS; - ConvertInternationalString(data, boxMon->language); - retVal = StringLength(data); - } - break; + StringCopy(data, gBadEggNickname); + retVal = StringLength(data); } - case MON_DATA_LANGUAGE: - retVal = boxMon->language; - break; - case MON_DATA_SANITY_BIT1: - retVal = boxMon->isBadEgg; - break; - case MON_DATA_SANITY_BIT2: - retVal = boxMon->hasSpecies; - break; - case MON_DATA_SANITY_BIT3: - retVal = boxMon->isEgg; - break; - case MON_DATA_OT_NAME: + else if (boxMon->isEgg) + { + StringCopy(data, gEggNickname); + retVal = StringLength(data); + } + else { retVal = 0; - while (retVal < OT_NAME_LENGTH && boxMon->otName[retVal] != EOS) + while (retVal < POKEMON_NAME_LENGTH && boxMon->nickname[retVal] != EOS) { - data[retVal] = boxMon->otName[retVal]; + data[retVal] = boxMon->nickname[retVal]; retVal++; } data[retVal] = EOS; - break; + ConvertInternationalString(data, boxMon->language); + retVal = StringLength(data); } - case MON_DATA_MARKINGS: - retVal = boxMon->markings; - break; - case MON_DATA_CHECKSUM: - retVal = boxMon->checksum; - break; - case MON_DATA_10: - retVal = boxMon->unknown; - break; - case MON_DATA_SPECIES: - retVal = boxMon->isBadEgg ? SPECIES_EGG : substruct0->species; - break; - case MON_DATA_HELD_ITEM: - retVal = substruct0->heldItem; - break; - case MON_DATA_EXP: - retVal = substruct0->experience; - break; - case MON_DATA_PP_BONUSES: - retVal = substruct0->ppBonuses; - break; - case MON_DATA_FRIENDSHIP: - retVal = substruct0->friendship; - break; - case MON_DATA_MOVE1: - case MON_DATA_MOVE2: - case MON_DATA_MOVE3: - case MON_DATA_MOVE4: - retVal = substruct1->moves[field - MON_DATA_MOVE1]; - break; - case MON_DATA_PP1: - case MON_DATA_PP2: - case MON_DATA_PP3: - case MON_DATA_PP4: - retVal = substruct1->pp[field - MON_DATA_PP1]; - break; - case MON_DATA_HP_EV: - retVal = substruct2->hpEV; - break; - case MON_DATA_ATK_EV: - retVal = substruct2->attackEV; - break; - case MON_DATA_DEF_EV: - retVal = substruct2->defenseEV; - break; - case MON_DATA_SPD_EV: - retVal = substruct2->speedEV; - break; - case MON_DATA_SPATK_EV: - retVal = substruct2->spAttackEV; - break; - case MON_DATA_SPDEF_EV: - retVal = substruct2->spDefenseEV; - break; - case MON_DATA_COOL: - retVal = substruct2->cool; - break; - case MON_DATA_BEAUTY: - retVal = substruct2->beauty; - break; - case MON_DATA_CUTE: - retVal = substruct2->cute; - break; - case MON_DATA_SMART: - retVal = substruct2->smart; - break; - case MON_DATA_TOUGH: - retVal = substruct2->tough; - break; - case MON_DATA_SHEEN: - retVal = substruct2->sheen; - break; - case MON_DATA_POKERUS: - retVal = substruct3->pokerus; - break; - case MON_DATA_MET_LOCATION: - retVal = substruct3->metLocation; - break; - case MON_DATA_MET_LEVEL: - retVal = substruct3->metLevel; - break; - case MON_DATA_MET_GAME: - retVal = substruct3->metGame; - break; - case MON_DATA_POKEBALL: - retVal = substruct3->pokeball; - break; - case MON_DATA_OT_GENDER: - retVal = substruct3->otGender; - break; - case MON_DATA_HP_IV: - retVal = substruct3->hpIV; - break; - case MON_DATA_ATK_IV: - retVal = substruct3->attackIV; - break; - case MON_DATA_DEF_IV: - retVal = substruct3->defenseIV; - break; - case MON_DATA_SPD_IV: - retVal = substruct3->speedIV; - break; - case MON_DATA_SPATK_IV: - retVal = substruct3->spAttackIV; - break; - case MON_DATA_SPDEF_IV: - retVal = substruct3->spDefenseIV; - break; - case MON_DATA_IS_EGG: - retVal = substruct3->isEgg; - break; - case MON_DATA_ALT_ABILITY: - retVal = substruct3->altAbility; - break; - case MON_DATA_COOL_RIBBON: - retVal = substruct3->coolRibbon; - break; - case MON_DATA_BEAUTY_RIBBON: - retVal = substruct3->beautyRibbon; - break; - case MON_DATA_CUTE_RIBBON: - retVal = substruct3->cuteRibbon; - break; - case MON_DATA_SMART_RIBBON: - retVal = substruct3->smartRibbon; - break; - case MON_DATA_TOUGH_RIBBON: - retVal = substruct3->toughRibbon; - break; - case MON_DATA_CHAMPION_RIBBON: - retVal = substruct3->championRibbon; - break; - case MON_DATA_WINNING_RIBBON: - retVal = substruct3->winningRibbon; - break; - case MON_DATA_VICTORY_RIBBON: - retVal = substruct3->victoryRibbon; - break; - case MON_DATA_ARTIST_RIBBON: - retVal = substruct3->artistRibbon; - break; - case MON_DATA_EFFORT_RIBBON: - retVal = substruct3->effortRibbon; - break; - case MON_DATA_GIFT_RIBBON_1: - retVal = substruct3->giftRibbon1; - break; - case MON_DATA_GIFT_RIBBON_2: - retVal = substruct3->giftRibbon2; - break; - case MON_DATA_GIFT_RIBBON_3: - retVal = substruct3->giftRibbon3; - break; - case MON_DATA_GIFT_RIBBON_4: - retVal = substruct3->giftRibbon4; - break; - case MON_DATA_GIFT_RIBBON_5: - retVal = substruct3->giftRibbon5; - break; - case MON_DATA_GIFT_RIBBON_6: - retVal = substruct3->giftRibbon6; - break; - case MON_DATA_GIFT_RIBBON_7: - retVal = substruct3->giftRibbon7; - break; - case MON_DATA_FATEFUL_ENCOUNTER: - retVal = substruct3->fatefulEncounter; - break; - case MON_DATA_SPECIES2: - retVal = substruct0->species; - if (substruct0->species && (substruct3->isEgg || boxMon->isBadEgg)) - retVal = SPECIES_EGG; - break; - case MON_DATA_IVS: - retVal = substruct3->hpIV | (substruct3->attackIV << 5) | (substruct3->defenseIV << 10) | (substruct3->speedIV << 15) | (substruct3->spAttackIV << 20) | (substruct3->spDefenseIV << 25); - break; - case MON_DATA_KNOWN_MOVES: - if (substruct0->species && !substruct3->isEgg) - { - u16 *moves = (u16 *)data; - s32 i = 0; - - while (moves[i] != 355) - { - u16 move = moves[i]; - if (substruct1->moves[0] == move - || substruct1->moves[1] == move - || substruct1->moves[2] == move - || substruct1->moves[3] == move) - retVal |= gBitTable[i]; - i++; - } - } - break; - case MON_DATA_RIBBON_COUNT: - retVal = 0; - if (substruct0->species && !substruct3->isEgg) - { - retVal += substruct3->coolRibbon; - retVal += substruct3->beautyRibbon; - retVal += substruct3->cuteRibbon; - retVal += substruct3->smartRibbon; - retVal += substruct3->toughRibbon; - retVal += substruct3->championRibbon; - retVal += substruct3->winningRibbon; - retVal += substruct3->victoryRibbon; - retVal += substruct3->artistRibbon; - retVal += substruct3->effortRibbon; - retVal += substruct3->giftRibbon1; - retVal += substruct3->giftRibbon2; - retVal += substruct3->giftRibbon3; - retVal += substruct3->giftRibbon4; - retVal += substruct3->giftRibbon5; - retVal += substruct3->giftRibbon6; - retVal += substruct3->giftRibbon7; - } - break; - case MON_DATA_RIBBONS: - retVal = 0; - if (substruct0->species && !substruct3->isEgg) + break; + } + case MON_DATA_LANGUAGE: + retVal = boxMon->language; + break; + case MON_DATA_SANITY_BIT1: + retVal = boxMon->isBadEgg; + break; + case MON_DATA_SANITY_BIT2: + retVal = boxMon->hasSpecies; + break; + case MON_DATA_SANITY_BIT3: + retVal = boxMon->isEgg; + break; + case MON_DATA_OT_NAME: + { + retVal = 0; + + while (retVal < OT_NAME_LENGTH && boxMon->otName[retVal] != EOS) + { + data[retVal] = boxMon->otName[retVal]; + retVal++; + } + + data[retVal] = EOS; + break; + } + case MON_DATA_MARKINGS: + retVal = boxMon->markings; + break; + case MON_DATA_CHECKSUM: + retVal = boxMon->checksum; + break; + case MON_DATA_10: + retVal = boxMon->unknown; + break; + case MON_DATA_SPECIES: + retVal = boxMon->isBadEgg ? SPECIES_EGG : substruct0->species; + break; + case MON_DATA_HELD_ITEM: + retVal = substruct0->heldItem; + break; + case MON_DATA_EXP: + retVal = substruct0->experience; + break; + case MON_DATA_PP_BONUSES: + retVal = substruct0->ppBonuses; + break; + case MON_DATA_FRIENDSHIP: + retVal = substruct0->friendship; + break; + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + retVal = substruct1->moves[field - MON_DATA_MOVE1]; + break; + case MON_DATA_PP1: + case MON_DATA_PP2: + case MON_DATA_PP3: + case MON_DATA_PP4: + retVal = substruct1->pp[field - MON_DATA_PP1]; + break; + case MON_DATA_HP_EV: + retVal = substruct2->hpEV; + break; + case MON_DATA_ATK_EV: + retVal = substruct2->attackEV; + break; + case MON_DATA_DEF_EV: + retVal = substruct2->defenseEV; + break; + case MON_DATA_SPD_EV: + retVal = substruct2->speedEV; + break; + case MON_DATA_SPATK_EV: + retVal = substruct2->spAttackEV; + break; + case MON_DATA_SPDEF_EV: + retVal = substruct2->spDefenseEV; + break; + case MON_DATA_COOL: + retVal = substruct2->cool; + break; + case MON_DATA_BEAUTY: + retVal = substruct2->beauty; + break; + case MON_DATA_CUTE: + retVal = substruct2->cute; + break; + case MON_DATA_SMART: + retVal = substruct2->smart; + break; + case MON_DATA_TOUGH: + retVal = substruct2->tough; + break; + case MON_DATA_SHEEN: + retVal = substruct2->sheen; + break; + case MON_DATA_POKERUS: + retVal = substruct3->pokerus; + break; + case MON_DATA_MET_LOCATION: + retVal = substruct3->metLocation; + break; + case MON_DATA_MET_LEVEL: + retVal = substruct3->metLevel; + break; + case MON_DATA_MET_GAME: + retVal = substruct3->metGame; + break; + case MON_DATA_POKEBALL: + retVal = substruct3->pokeball; + break; + case MON_DATA_OT_GENDER: + retVal = substruct3->otGender; + break; + case MON_DATA_HP_IV: + retVal = substruct3->hpIV; + break; + case MON_DATA_ATK_IV: + retVal = substruct3->attackIV; + break; + case MON_DATA_DEF_IV: + retVal = substruct3->defenseIV; + break; + case MON_DATA_SPD_IV: + retVal = substruct3->speedIV; + break; + case MON_DATA_SPATK_IV: + retVal = substruct3->spAttackIV; + break; + case MON_DATA_SPDEF_IV: + retVal = substruct3->spDefenseIV; + break; + case MON_DATA_IS_EGG: + retVal = substruct3->isEgg; + break; + case MON_DATA_ALT_ABILITY: + retVal = substruct3->altAbility; + break; + case MON_DATA_COOL_RIBBON: + retVal = substruct3->coolRibbon; + break; + case MON_DATA_BEAUTY_RIBBON: + retVal = substruct3->beautyRibbon; + break; + case MON_DATA_CUTE_RIBBON: + retVal = substruct3->cuteRibbon; + break; + case MON_DATA_SMART_RIBBON: + retVal = substruct3->smartRibbon; + break; + case MON_DATA_TOUGH_RIBBON: + retVal = substruct3->toughRibbon; + break; + case MON_DATA_CHAMPION_RIBBON: + retVal = substruct3->championRibbon; + break; + case MON_DATA_WINNING_RIBBON: + retVal = substruct3->winningRibbon; + break; + case MON_DATA_VICTORY_RIBBON: + retVal = substruct3->victoryRibbon; + break; + case MON_DATA_ARTIST_RIBBON: + retVal = substruct3->artistRibbon; + break; + case MON_DATA_EFFORT_RIBBON: + retVal = substruct3->effortRibbon; + break; + case MON_DATA_GIFT_RIBBON_1: + retVal = substruct3->giftRibbon1; + break; + case MON_DATA_GIFT_RIBBON_2: + retVal = substruct3->giftRibbon2; + break; + case MON_DATA_GIFT_RIBBON_3: + retVal = substruct3->giftRibbon3; + break; + case MON_DATA_GIFT_RIBBON_4: + retVal = substruct3->giftRibbon4; + break; + case MON_DATA_GIFT_RIBBON_5: + retVal = substruct3->giftRibbon5; + break; + case MON_DATA_GIFT_RIBBON_6: + retVal = substruct3->giftRibbon6; + break; + case MON_DATA_GIFT_RIBBON_7: + retVal = substruct3->giftRibbon7; + break; + case MON_DATA_FATEFUL_ENCOUNTER: + retVal = substruct3->fatefulEncounter; + break; + case MON_DATA_SPECIES2: + retVal = substruct0->species; + if (substruct0->species && (substruct3->isEgg || boxMon->isBadEgg)) + retVal = SPECIES_EGG; + break; + case MON_DATA_IVS: + retVal = substruct3->hpIV | (substruct3->attackIV << 5) | (substruct3->defenseIV << 10) | (substruct3->speedIV << 15) | (substruct3->spAttackIV << 20) | (substruct3->spDefenseIV << 25); + break; + case MON_DATA_KNOWN_MOVES: + if (substruct0->species && !substruct3->isEgg) + { + u16 *moves = (u16 *)data; + s32 i = 0; + + while (moves[i] != 355) { - retVal = substruct3->championRibbon - | (substruct3->coolRibbon << 1) - | (substruct3->beautyRibbon << 4) - | (substruct3->cuteRibbon << 7) - | (substruct3->smartRibbon << 10) - | (substruct3->toughRibbon << 13) - | (substruct3->winningRibbon << 16) - | (substruct3->victoryRibbon << 17) - | (substruct3->artistRibbon << 18) - | (substruct3->effortRibbon << 19) - | (substruct3->giftRibbon1 << 20) - | (substruct3->giftRibbon2 << 21) - | (substruct3->giftRibbon3 << 22) - | (substruct3->giftRibbon4 << 23) - | (substruct3->giftRibbon5 << 24) - | (substruct3->giftRibbon6 << 25) - | (substruct3->giftRibbon7 << 26); + u16 move = moves[i]; + if (substruct1->moves[0] == move + || substruct1->moves[1] == move + || substruct1->moves[2] == move + || substruct1->moves[3] == move) + retVal |= gBitTable[i]; + i++; } - break; - default: - break; + } + break; + case MON_DATA_RIBBON_COUNT: + retVal = 0; + if (substruct0->species && !substruct3->isEgg) + { + retVal += substruct3->coolRibbon; + retVal += substruct3->beautyRibbon; + retVal += substruct3->cuteRibbon; + retVal += substruct3->smartRibbon; + retVal += substruct3->toughRibbon; + retVal += substruct3->championRibbon; + retVal += substruct3->winningRibbon; + retVal += substruct3->victoryRibbon; + retVal += substruct3->artistRibbon; + retVal += substruct3->effortRibbon; + retVal += substruct3->giftRibbon1; + retVal += substruct3->giftRibbon2; + retVal += substruct3->giftRibbon3; + retVal += substruct3->giftRibbon4; + retVal += substruct3->giftRibbon5; + retVal += substruct3->giftRibbon6; + retVal += substruct3->giftRibbon7; + } + break; + case MON_DATA_RIBBONS: + retVal = 0; + if (substruct0->species && !substruct3->isEgg) + { + retVal = substruct3->championRibbon + | (substruct3->coolRibbon << 1) + | (substruct3->beautyRibbon << 4) + | (substruct3->cuteRibbon << 7) + | (substruct3->smartRibbon << 10) + | (substruct3->toughRibbon << 13) + | (substruct3->winningRibbon << 16) + | (substruct3->victoryRibbon << 17) + | (substruct3->artistRibbon << 18) + | (substruct3->effortRibbon << 19) + | (substruct3->giftRibbon1 << 20) + | (substruct3->giftRibbon2 << 21) + | (substruct3->giftRibbon3 << 22) + | (substruct3->giftRibbon4 << 23) + | (substruct3->giftRibbon5 << 24) + | (substruct3->giftRibbon6 << 25) + | (substruct3->giftRibbon7 << 26); + } + break; + default: + break; } if (field > MON_DATA_10) @@ -800,239 +800,239 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const u8 *data) switch (field) { - case MON_DATA_PERSONALITY: - SET32(boxMon->personality); - break; - case MON_DATA_OT_ID: - SET32(boxMon->otId); - break; - case MON_DATA_NICKNAME: - { - s32 i; - for (i = 0; i < POKEMON_NAME_LENGTH; i++) - boxMon->nickname[i] = data[i]; - break; - } - case MON_DATA_LANGUAGE: - SET8(boxMon->language); - break; - case MON_DATA_SANITY_BIT1: - SET8(boxMon->isBadEgg); - break; - case MON_DATA_SANITY_BIT2: - SET8(boxMon->hasSpecies); - break; - case MON_DATA_SANITY_BIT3: - SET8(boxMon->isEgg); - break; - case MON_DATA_OT_NAME: - { - s32 i; - for (i = 0; i < OT_NAME_LENGTH; i++) - boxMon->otName[i] = data[i]; - break; - } - case MON_DATA_MARKINGS: - SET8(boxMon->markings); - break; - case MON_DATA_CHECKSUM: - SET16(boxMon->checksum); - break; - case MON_DATA_10: - SET16(boxMon->unknown); - break; - case MON_DATA_SPECIES: - { - SET16(substruct0->species); - if (substruct0->species) - boxMon->hasSpecies = 1; - else - boxMon->hasSpecies = 0; - break; - } - case MON_DATA_HELD_ITEM: - SET16(substruct0->heldItem); - break; - case MON_DATA_EXP: - SET32(substruct0->experience); - break; - case MON_DATA_PP_BONUSES: - SET8(substruct0->ppBonuses); - break; - case MON_DATA_FRIENDSHIP: - SET8(substruct0->friendship); - break; - case MON_DATA_MOVE1: - case MON_DATA_MOVE2: - case MON_DATA_MOVE3: - case MON_DATA_MOVE4: - SET16(substruct1->moves[field - MON_DATA_MOVE1]); - break; - case MON_DATA_PP1: - case MON_DATA_PP2: - case MON_DATA_PP3: - case MON_DATA_PP4: - SET8(substruct1->pp[field - MON_DATA_PP1]); - break; - case MON_DATA_HP_EV: - SET8(substruct2->hpEV); - break; - case MON_DATA_ATK_EV: - SET8(substruct2->attackEV); - break; - case MON_DATA_DEF_EV: - SET8(substruct2->defenseEV); - break; - case MON_DATA_SPD_EV: - SET8(substruct2->speedEV); - break; - case MON_DATA_SPATK_EV: - SET8(substruct2->spAttackEV); - break; - case MON_DATA_SPDEF_EV: - SET8(substruct2->spDefenseEV); - break; - case MON_DATA_COOL: - SET8(substruct2->cool); - break; - case MON_DATA_BEAUTY: - SET8(substruct2->beauty); - break; - case MON_DATA_CUTE: - SET8(substruct2->cute); - break; - case MON_DATA_SMART: - SET8(substruct2->smart); - break; - case MON_DATA_TOUGH: - SET8(substruct2->tough); - break; - case MON_DATA_SHEEN: - SET8(substruct2->sheen); - break; - case MON_DATA_POKERUS: - SET8(substruct3->pokerus); - break; - case MON_DATA_MET_LOCATION: - SET8(substruct3->metLocation); - break; - case MON_DATA_MET_LEVEL: - { - u8 metLevel = *data; - substruct3->metLevel = metLevel; - break; - } - case MON_DATA_MET_GAME: - SET8(substruct3->metGame); - break; - case MON_DATA_POKEBALL: - { - u8 pokeball = *data; - substruct3->pokeball = pokeball; - break; - } - case MON_DATA_OT_GENDER: - SET8(substruct3->otGender); - break; - case MON_DATA_HP_IV: - SET8(substruct3->hpIV); - break; - case MON_DATA_ATK_IV: - SET8(substruct3->attackIV); - break; - case MON_DATA_DEF_IV: - SET8(substruct3->defenseIV); - break; - case MON_DATA_SPD_IV: - SET8(substruct3->speedIV); - break; - case MON_DATA_SPATK_IV: - SET8(substruct3->spAttackIV); - break; - case MON_DATA_SPDEF_IV: - SET8(substruct3->spDefenseIV); - break; - case MON_DATA_IS_EGG: - SET8(substruct3->isEgg); - if (substruct3->isEgg) - boxMon->isEgg = 1; - else - boxMon->isEgg = 0; - break; - case MON_DATA_ALT_ABILITY: - SET8(substruct3->altAbility); - break; - case MON_DATA_COOL_RIBBON: - SET8(substruct3->coolRibbon); - break; - case MON_DATA_BEAUTY_RIBBON: - SET8(substruct3->beautyRibbon); - break; - case MON_DATA_CUTE_RIBBON: - SET8(substruct3->cuteRibbon); - break; - case MON_DATA_SMART_RIBBON: - SET8(substruct3->smartRibbon); - break; - case MON_DATA_TOUGH_RIBBON: - SET8(substruct3->toughRibbon); - break; - case MON_DATA_CHAMPION_RIBBON: - SET8(substruct3->championRibbon); - break; - case MON_DATA_WINNING_RIBBON: - SET8(substruct3->winningRibbon); - break; - case MON_DATA_VICTORY_RIBBON: - SET8(substruct3->victoryRibbon); - break; - case MON_DATA_ARTIST_RIBBON: - SET8(substruct3->artistRibbon); - break; - case MON_DATA_EFFORT_RIBBON: - SET8(substruct3->effortRibbon); - break; - case MON_DATA_GIFT_RIBBON_1: - SET8(substruct3->giftRibbon1); - break; - case MON_DATA_GIFT_RIBBON_2: - SET8(substruct3->giftRibbon2); - break; - case MON_DATA_GIFT_RIBBON_3: - SET8(substruct3->giftRibbon3); - break; - case MON_DATA_GIFT_RIBBON_4: - SET8(substruct3->giftRibbon4); - break; - case MON_DATA_GIFT_RIBBON_5: - SET8(substruct3->giftRibbon5); - break; - case MON_DATA_GIFT_RIBBON_6: - SET8(substruct3->giftRibbon6); - break; - case MON_DATA_GIFT_RIBBON_7: - SET8(substruct3->giftRibbon7); - break; - case MON_DATA_FATEFUL_ENCOUNTER: - SET8(substruct3->fatefulEncounter); - break; - case MON_DATA_IVS: - { + case MON_DATA_PERSONALITY: + SET32(boxMon->personality); + break; + case MON_DATA_OT_ID: + SET32(boxMon->otId); + break; + case MON_DATA_NICKNAME: + { + s32 i; + for (i = 0; i < POKEMON_NAME_LENGTH; i++) + boxMon->nickname[i] = data[i]; + break; + } + case MON_DATA_LANGUAGE: + SET8(boxMon->language); + break; + case MON_DATA_SANITY_BIT1: + SET8(boxMon->isBadEgg); + break; + case MON_DATA_SANITY_BIT2: + SET8(boxMon->hasSpecies); + break; + case MON_DATA_SANITY_BIT3: + SET8(boxMon->isEgg); + break; + case MON_DATA_OT_NAME: + { + s32 i; + for (i = 0; i < OT_NAME_LENGTH; i++) + boxMon->otName[i] = data[i]; + break; + } + case MON_DATA_MARKINGS: + SET8(boxMon->markings); + break; + case MON_DATA_CHECKSUM: + SET16(boxMon->checksum); + break; + case MON_DATA_10: + SET16(boxMon->unknown); + break; + case MON_DATA_SPECIES: + { + SET16(substruct0->species); + if (substruct0->species) + boxMon->hasSpecies = 1; + else + boxMon->hasSpecies = 0; + break; + } + case MON_DATA_HELD_ITEM: + SET16(substruct0->heldItem); + break; + case MON_DATA_EXP: + SET32(substruct0->experience); + break; + case MON_DATA_PP_BONUSES: + SET8(substruct0->ppBonuses); + break; + case MON_DATA_FRIENDSHIP: + SET8(substruct0->friendship); + break; + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + SET16(substruct1->moves[field - MON_DATA_MOVE1]); + break; + case MON_DATA_PP1: + case MON_DATA_PP2: + case MON_DATA_PP3: + case MON_DATA_PP4: + SET8(substruct1->pp[field - MON_DATA_PP1]); + break; + case MON_DATA_HP_EV: + SET8(substruct2->hpEV); + break; + case MON_DATA_ATK_EV: + SET8(substruct2->attackEV); + break; + case MON_DATA_DEF_EV: + SET8(substruct2->defenseEV); + break; + case MON_DATA_SPD_EV: + SET8(substruct2->speedEV); + break; + case MON_DATA_SPATK_EV: + SET8(substruct2->spAttackEV); + break; + case MON_DATA_SPDEF_EV: + SET8(substruct2->spDefenseEV); + break; + case MON_DATA_COOL: + SET8(substruct2->cool); + break; + case MON_DATA_BEAUTY: + SET8(substruct2->beauty); + break; + case MON_DATA_CUTE: + SET8(substruct2->cute); + break; + case MON_DATA_SMART: + SET8(substruct2->smart); + break; + case MON_DATA_TOUGH: + SET8(substruct2->tough); + break; + case MON_DATA_SHEEN: + SET8(substruct2->sheen); + break; + case MON_DATA_POKERUS: + SET8(substruct3->pokerus); + break; + case MON_DATA_MET_LOCATION: + SET8(substruct3->metLocation); + break; + case MON_DATA_MET_LEVEL: + { + u8 metLevel = *data; + substruct3->metLevel = metLevel; + break; + } + case MON_DATA_MET_GAME: + SET8(substruct3->metGame); + break; + case MON_DATA_POKEBALL: + { + u8 pokeball = *data; + substruct3->pokeball = pokeball; + break; + } + case MON_DATA_OT_GENDER: + SET8(substruct3->otGender); + break; + case MON_DATA_HP_IV: + SET8(substruct3->hpIV); + break; + case MON_DATA_ATK_IV: + SET8(substruct3->attackIV); + break; + case MON_DATA_DEF_IV: + SET8(substruct3->defenseIV); + break; + case MON_DATA_SPD_IV: + SET8(substruct3->speedIV); + break; + case MON_DATA_SPATK_IV: + SET8(substruct3->spAttackIV); + break; + case MON_DATA_SPDEF_IV: + SET8(substruct3->spDefenseIV); + break; + case MON_DATA_IS_EGG: + SET8(substruct3->isEgg); + if (substruct3->isEgg) + boxMon->isEgg = 1; + else + boxMon->isEgg = 0; + break; + case MON_DATA_ALT_ABILITY: + SET8(substruct3->altAbility); + break; + case MON_DATA_COOL_RIBBON: + SET8(substruct3->coolRibbon); + break; + case MON_DATA_BEAUTY_RIBBON: + SET8(substruct3->beautyRibbon); + break; + case MON_DATA_CUTE_RIBBON: + SET8(substruct3->cuteRibbon); + break; + case MON_DATA_SMART_RIBBON: + SET8(substruct3->smartRibbon); + break; + case MON_DATA_TOUGH_RIBBON: + SET8(substruct3->toughRibbon); + break; + case MON_DATA_CHAMPION_RIBBON: + SET8(substruct3->championRibbon); + break; + case MON_DATA_WINNING_RIBBON: + SET8(substruct3->winningRibbon); + break; + case MON_DATA_VICTORY_RIBBON: + SET8(substruct3->victoryRibbon); + break; + case MON_DATA_ARTIST_RIBBON: + SET8(substruct3->artistRibbon); + break; + case MON_DATA_EFFORT_RIBBON: + SET8(substruct3->effortRibbon); + break; + case MON_DATA_GIFT_RIBBON_1: + SET8(substruct3->giftRibbon1); + break; + case MON_DATA_GIFT_RIBBON_2: + SET8(substruct3->giftRibbon2); + break; + case MON_DATA_GIFT_RIBBON_3: + SET8(substruct3->giftRibbon3); + break; + case MON_DATA_GIFT_RIBBON_4: + SET8(substruct3->giftRibbon4); + break; + case MON_DATA_GIFT_RIBBON_5: + SET8(substruct3->giftRibbon5); + break; + case MON_DATA_GIFT_RIBBON_6: + SET8(substruct3->giftRibbon6); + break; + case MON_DATA_GIFT_RIBBON_7: + SET8(substruct3->giftRibbon7); + break; + case MON_DATA_FATEFUL_ENCOUNTER: + SET8(substruct3->fatefulEncounter); + break; + case MON_DATA_IVS: + { #ifdef BUGFIX_SETMONIVS - u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); + u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); #else - u32 ivs = *data; // Bug: Only the HP IV and the lower 3 bits of the Attack IV are read. The rest become 0. + u32 ivs = *data; // Bug: Only the HP IV and the lower 3 bits of the Attack IV are read. The rest become 0. #endif - substruct3->hpIV = ivs & 0x1F; - substruct3->attackIV = (ivs >> 5) & 0x1F; - substruct3->defenseIV = (ivs >> 10) & 0x1F; - substruct3->speedIV = (ivs >> 15) & 0x1F; - substruct3->spAttackIV = (ivs >> 20) & 0x1F; - substruct3->spDefenseIV = (ivs >> 25) & 0x1F; - break; - } - default: - break; + substruct3->hpIV = ivs & 0x1F; + substruct3->attackIV = (ivs >> 5) & 0x1F; + substruct3->defenseIV = (ivs >> 10) & 0x1F; + substruct3->speedIV = (ivs >> 15) & 0x1F; + substruct3->spAttackIV = (ivs >> 20) & 0x1F; + substruct3->spDefenseIV = (ivs >> 25) & 0x1F; + break; + } + default: + break; } if (field > MON_DATA_10) diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 270a52ad5..6b42d3272 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -169,28 +169,28 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) { switch (j) { - case 2: - if (val & 0x10) - val &= 0xEF; - case 0: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 1: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 3: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 7: - if (i == effectByte) - return 0; - break; + case 2: + if (val & 0x10) + val &= 0xEF; + case 0: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 1: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 3: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 7: + if (i == effectByte) + return 0; + break; } } j++; @@ -208,21 +208,21 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) { switch (j) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 7: - if (i == effectByte) - return 0; - break; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 7: + if (i == effectByte) + return 0; + break; } } j++; @@ -1153,26 +1153,26 @@ u16 sub_8040728(void) { switch (gTrainers[gTrainerBattleOpponent].trainerClass) { - case 2: - case 0x31: - return BGM_BATTLE30; - case 3: - case 4: - case 0x32: - case 0x33: - return BGM_BATTLE31; - case 0x19: - return BGM_BATTLE32; - case 0x20: - return BGM_BATTLE33; - case 0x2E: - if (!StringCompare(gTrainers[gTrainerBattleOpponent].trainerName, BattleText_Wally)) - return BGM_BATTLE20; - return BGM_BATTLE35; - case 0x18: - return BGM_BATTLE38; - default: + case 2: + case 0x31: + return BGM_BATTLE30; + case 3: + case 4: + case 0x32: + case 0x33: + return BGM_BATTLE31; + case 0x19: + return BGM_BATTLE32; + case 0x20: + return BGM_BATTLE33; + case 0x2E: + if (!StringCompare(gTrainers[gTrainerBattleOpponent].trainerName, BattleText_Wally)) return BGM_BATTLE20; + return BGM_BATTLE35; + case 0x18: + return BGM_BATTLE38; + default: + return BGM_BATTLE20; } } return BGM_BATTLE27; diff --git a/src/record_mixing.c b/src/record_mixing.c index 58722010f..2e01ead61 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -262,31 +262,31 @@ void Task_RecordMixing_SendPacket(u8 taskId) switch (task->data[TD_STATE]) { - case 0: //Copy record data to send buffer - { - void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; + case 0: //Copy record data to send buffer + { + void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; - memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); - task->data[TD_STATE]++; - break; - } - case 1: - if (GetMultiplayerId() == 0) - sub_8007E9C(1); + memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); + task->data[TD_STATE]++; + break; + } + case 1: + if (GetMultiplayerId() == 0) + sub_8007E9C(1); + task->data[TD_STATE]++; + break; + case 2: + break; + case 3: + task->data[4]++; + if ((u16)task->data[4] == 24) task->data[TD_STATE]++; - break; - case 2: - break; - case 3: - task->data[4]++; - if ((u16)task->data[4] == 24) - task->data[TD_STATE]++; - else - task->data[TD_STATE] = 0; - break; - case 4: - if (!gTasks[task->data[10]].isActive) - task->func = Task_RecordMixing_SendPacket_SwitchToReceive; + else + task->data[TD_STATE] = 0; + break; + case 4: + if (!gTasks[task->data[10]].isActive) + task->func = Task_RecordMixing_SendPacket_SwitchToReceive; } } diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index d46abc74d..0de1e5ca9 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -110,59 +110,59 @@ static void CB2_SaveFailedScreen(void) switch (gMain.state) { - case 0: - default: - SetVBlankCallback(0); - REG_DISPCNT = 0; - REG_BG3CNT = 0; - REG_BG2CNT = 0; - REG_BG1CNT = 0; - REG_BG0CNT = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - DmaFill16(3, 0, VRAM, VRAM_SIZE); - DmaFill32(3, 0, OAM, OAM_SIZE); - DmaFill16(3, 0, PLTT, PLTT_SIZE); - LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); - LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); - LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); - LZ77UnCompVram(&gSaveFailedClockGfx, (void *)(VRAM + 0x10020)); - ResetSpriteData(); - ResetTasks(); - ResetPaletteFade(); - LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); - LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window - MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ime = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = ime; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(VBlankCB); - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG2_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0; - gMain.state++; - break; - case 1: - if (!UpdatePaletteFade()) - { - SetMainCallback2(CB2_WipeSave); - SetVBlankCallback(VBlankCB_UpdateClockGraphics); - } - break; + case 0: + default: + SetVBlankCallback(0); + REG_DISPCNT = 0; + REG_BG3CNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); + LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); + LZ77UnCompVram(&gSaveFailedClockGfx, (void *)(VRAM + 0x10020)); + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); + LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window + MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window + MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + SetVBlankCallback(VBlankCB); + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG2_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0; + gMain.state++; + break; + case 1: + if (!UpdatePaletteFade()) + { + SetMainCallback2(CB2_WipeSave); + SetVBlankCallback(VBlankCB_UpdateClockGraphics); + } + break; } } diff --git a/src/script_menu.c b/src/script_menu.c index eba438397..50941f9ac 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -913,19 +913,19 @@ void task_picbox(u8 taskId) switch (task->data[0]) { - case 0: - task->data[0]++; - break; - case 1: - break; - case 2: - FreeResourcesAndDestroySprite(&gSprites[task->data[2]]); - task->data[0]++; - break; - case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); - DestroyTask(taskId); - break; + case 0: + task->data[0]++; + break; + case 1: + break; + case 2: + FreeResourcesAndDestroySprite(&gSprites[task->data[2]]); + task->data[0]++; + break; + case 3: + MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); + DestroyTask(taskId); + break; } } diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 912458655..b87f5e956 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -73,18 +73,18 @@ void sub_80C4C28(void) switch(specialVar) { - case 0: - var = 3; - break; - case 1: - var = 4; - break; - case 2: - var = 5; - break; - default: - var = 100; - break; + case 0: + var = 3; + break; + case 1: + var = 4; + break; + case 2: + var = 5; + break; + default: + var = 100; + break; } gSpecialVar_0x8004 = var; } @@ -103,22 +103,22 @@ void sub_80C4C78(void) switch(gScriptContestCategory) { - case 0: - var = 8; - break; - case 1: - var = 9; - break; - case 2: - var = 10; - break; - case 3: - var = 11; - break; - case 4: - default: - var = 12; - break; + case 0: + var = 8; + break; + case 1: + var = 9; + break; + case 2: + var = 10; + break; + case 3: + var = 11; + break; + case 4: + default: + var = 12; + break; } returnVar = gSaveBlock1.sbStruct.unkSB2.sb1_2EFC_struct2[var].var; @@ -467,26 +467,26 @@ void sub_80C5190(u8 taskId) switch(task->data[0]) { - case 2: - sprite = &gSprites[task->data[2]]; - FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); - - if(sprite->oam.affineMode) - FreeOamMatrix(sprite->oam.matrixNum); - - DestroySprite(sprite); - task->data[0]++; - break; - case 0: - task->data[0]++; - break; - case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); - DestroyTask(taskId); - break; - case 1: - default: - break; + case 2: + sprite = &gSprites[task->data[2]]; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + + if(sprite->oam.affineMode) + FreeOamMatrix(sprite->oam.matrixNum); + + DestroySprite(sprite); + task->data[0]++; + break; + case 0: + task->data[0]++; + break; + case 3: + MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); + DestroyTask(taskId); + break; + case 1: + default: + break; } } @@ -593,15 +593,15 @@ void CheckForAlivePartyMons(void) switch(var) { - case 1: - gScriptResult = var; - break; - case 0: - gScriptResult = var; - break; - case 2: - gScriptResult = var; - break; + case 1: + gScriptResult = var; + break; + case 0: + gScriptResult = var; + break; + case 2: + gScriptResult = var; + break; } } @@ -663,12 +663,12 @@ void sub_80C5580(void) switch(var) { - case 0: - gScriptResult = 0; - break; - default: - gScriptResult = 1; - break; + case 0: + gScriptResult = 0; + break; + default: + gScriptResult = 1; + break; } SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); @@ -686,14 +686,14 @@ void SetBattleTowerPlayerParty(void) switch(var) { - case 0: // player quit battle tower? - LoadPlayerParty(); - gScriptResult = 0; - break; - default: // load battle tower. - ReducePlayerPartyToThree(); - gScriptResult = 1; - break; + case 0: // player quit battle tower? + LoadPlayerParty(); + gScriptResult = 0; + break; + default: // load battle tower. + ReducePlayerPartyToThree(); + gScriptResult = 1; + break; } SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index ce62f2abb..e1d532b16 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -81,62 +81,62 @@ bool8 sub_80F9ACC(void) { switch(EWRAM_1B000.unk264) { - case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) - { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - } - break; - case 1: - LoadHeldItemIconGraphics(); - EWRAM_1B000.unk264++; - break; - case 2: - CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); - EWRAM_1B000.unk264++; - break; - case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - break; - } - case 4: - PartyMenuPrintMonsLevelOrStatus(); + case 0: + if(EWRAM_1B000.unk266 < gPlayerPartyCount) + { + TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); + EWRAM_1B000.unk266++; + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; + } + break; + case 1: + LoadHeldItemIconGraphics(); + EWRAM_1B000.unk264++; + break; + case 2: + CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); + EWRAM_1B000.unk264++; + break; + case 3: + if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 5: - PrintPartyMenuMonNicknames(); + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; break; - case 6: - sub_80F9C00(); - EWRAM_1B000.unk264++; + } + case 4: + PartyMenuPrintMonsLevelOrStatus(); + EWRAM_1B000.unk264++; + break; + case 5: + PrintPartyMenuMonNicknames(); + EWRAM_1B000.unk264++; + break; + case 6: + sub_80F9C00(); + EWRAM_1B000.unk264++; + break; + case 7: // the only case that can return true. + if(sub_806B58C(EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264 = 0; - return TRUE; - } + } + else + { + EWRAM_1B000.unk266 = 0; + EWRAM_1B000.unk264 = 0; + return TRUE; + } } return FALSE; } @@ -149,15 +149,15 @@ void sub_80F9C00(void) { switch(sub_80AE47C(&gPlayerParty[i])) { - case 0: - case 3: - case 4: - sub_806BC3C(i, 0x7E); - break; - case 1: - case 2: - sub_806BC3C(i, 0x70); - break; + case 0: + case 3: + case 4: + sub_806BC3C(i, 0x7E); + break; + case 1: + case 2: + sub_806BC3C(i, 0x70); + break; } } } @@ -168,18 +168,18 @@ void sub_80F9C6C(u8 var) { switch(sub_806BD80(var)) { - case 1: - PlaySE(5); - gUnknown_02038694 = sub_806CA38(var); - gSpecialVar_0x8004 = gUnknown_02038694; - sub_8123138(var); - break; - case 2: - PlaySE(5); - gUnknown_02038694 = 0xFF; - gSpecialVar_0x8004 = 0xFF; - sub_8123138(var); - break; + case 1: + PlaySE(5); + gUnknown_02038694 = sub_806CA38(var); + gSpecialVar_0x8004 = gUnknown_02038694; + sub_8123138(var); + break; + case 2: + PlaySE(5); + gUnknown_02038694 = 0xFF; + gSpecialVar_0x8004 = 0xFF; + sub_8123138(var); + break; } } } @@ -188,62 +188,62 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case { switch(EWRAM_1B000.unk264) { - case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) - { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - } - break; - case 1: - LoadHeldItemIconGraphics(); - EWRAM_1B000.unk264++; - break; - case 2: - CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); - EWRAM_1B000.unk264++; - break; - case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - break; - } - case 4: - PartyMenuPrintMonsLevelOrStatus(); + case 0: + if(EWRAM_1B000.unk266 < gPlayerPartyCount) + { + TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); + EWRAM_1B000.unk266++; + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; + } + break; + case 1: + LoadHeldItemIconGraphics(); + EWRAM_1B000.unk264++; + break; + case 2: + CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); + EWRAM_1B000.unk264++; + break; + case 3: + if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 5: - PrintPartyMenuMonNicknames(); + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; break; - case 6: - sub_80F9E1C(); - EWRAM_1B000.unk264++; + } + case 4: + PartyMenuPrintMonsLevelOrStatus(); + EWRAM_1B000.unk264++; + break; + case 5: + PrintPartyMenuMonNicknames(); + EWRAM_1B000.unk264++; + break; + case 6: + sub_80F9E1C(); + EWRAM_1B000.unk264++; + break; + case 7: // the only case that can return true. + if(sub_806B58C(EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264 = 0; - return TRUE; - } + } + else + { + EWRAM_1B000.unk266 = 0; + EWRAM_1B000.unk264 = 0; + return TRUE; + } } return FALSE; } @@ -267,16 +267,16 @@ void sub_80F9E64(u8 var) { switch(sub_806BD80(var)) { - case 1: - PlaySE(5); - gSpecialVar_0x8004 = sub_806CA38(var); - gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); - sub_8123138(var); - break; - case 2: - PlaySE(5); - gSpecialVar_0x8004 = 0xFF; - sub_8123138(var); + case 1: + PlaySE(5); + gSpecialVar_0x8004 = sub_806CA38(var); + gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); + sub_8123138(var); + break; + case 2: + PlaySE(5); + gSpecialVar_0x8004 = 0xFF; + sub_8123138(var); } } } diff --git a/src/secret_base.c b/src/secret_base.c index 2769806f6..c210a55d2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -237,24 +237,24 @@ void sub_80BBA48(u8 taskid) { u16 curbaseid; switch (gTasks[taskid].data[0]) { - case 0: - gTasks[taskid].data[0] = 1; - break; - case 1: - if (!gPaletteFade.active) { - gTasks[taskid].data[0] = 2; - } - break; - case 2: - curbaseid = VarGet(VAR_0x4054); - if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) - gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; - sub_80BBA14(); - warp_in(); - gUnknown_0300485C = sub_8080990; - SetMainCallback2(CB2_LoadMap); - DestroyTask(taskid); - break; + case 0: + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + curbaseid = VarGet(VAR_0x4054); + if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) + gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; + sub_80BBA14(); + warp_in(); + gUnknown_0300485C = sub_8080990; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + break; } } @@ -782,23 +782,23 @@ bool8 sub_80BC050(void) void sub_80BC074(u8 taskid) { switch (gTasks[taskid].data[0]) { - case 0: - ScriptContext2_Enable(); - gTasks[taskid].data[0] = 1; - break; - case 1: - if (!gPaletteFade.active) { - gTasks[taskid].data[0] = 2; - } - break; - case 2: - copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); - warp_in(); - gUnknown_0300485C = mapldr_default; - SetMainCallback2(CB2_LoadMap); - ScriptContext2_Disable(); - DestroyTask(taskid); - break; + case 0: + ScriptContext2_Enable(); + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); + warp_in(); + gUnknown_0300485C = mapldr_default; + SetMainCallback2(CB2_LoadMap); + ScriptContext2_Disable(); + DestroyTask(taskid); + break; } } diff --git a/src/shop.c b/src/shop.c index 780dff02a..9f4a360df 100644 --- a/src/shop.c +++ b/src/shop.c @@ -342,17 +342,17 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4) switch(tempVar4) { - case 0: // _080B335C - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; - case 1: // _080B3364 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); - break; - case 2: // _080B3398 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; + case 0: // _080B335C + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; + case 1: // _080B3364 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); + break; + case 2: // _080B3398 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; } } diff --git a/src/start_menu.c b/src/start_menu.c index 37d361c0b..8d7e50ea5 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -227,30 +227,30 @@ static bool32 InitStartMenuMultistep(s16 *step, s16 *index) { switch (*step) { - case 1: - BuildStartMenuActions(); + case 1: + BuildStartMenuActions(); + (*step)++; + break; + case 2: + MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3); + *index = 0; + (*step)++; + break; + case 3: + if (GetSafariZoneFlag()) + DisplaySafariBallsWindow(); + (*step)++; + break; + case 4: + if (PrintStartMenuItemsMultistep(index, 2)) (*step)++; - break; - case 2: - MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3); - *index = 0; - (*step)++; - break; - case 3: - if (GetSafariZoneFlag()) - DisplaySafariBallsWindow(); - (*step)++; - break; - case 4: - if (PrintStartMenuItemsMultistep(index, 2)) - (*step)++; - break; - case 0: - (*step)++; - break; - case 5: - sStartMenuCursorPos = InitMenu(0, 0x17, 2, sNumStartMenuActions, sStartMenuCursorPos, 6); - return TRUE; + break; + case 0: + (*step)++; + break; + case 5: + sStartMenuCursorPos = InitMenu(0, 0x17, 2, sNumStartMenuActions, sStartMenuCursorPos, 6); + return TRUE; } return FALSE; } @@ -288,14 +288,14 @@ void sub_80712B4(u8 taskId) switch (task->data[0]) { - case 0: - gCallback_03004AE8 = StartMenu_InputProcessCallback; - task->data[0]++; - break; - case 1: - if (gCallback_03004AE8() == 1) - DestroyTask(taskId); - break; + case 0: + gCallback_03004AE8 = StartMenu_InputProcessCallback; + task->data[0]++; + break; + case 1: + if (gCallback_03004AE8() == 1) + DestroyTask(taskId); + break; } } @@ -475,20 +475,20 @@ static u8 SaveCallback2(void) { switch (RunSaveDialogCallback()) { - case SAVE_IN_PROGRESS: - return FALSE; - case SAVE_CANCELED: - //Go back to start menu - MenuZeroFillScreen(); - InitStartMenu(); - gCallback_03004AE8 = StartMenu_InputProcessCallback; - return FALSE; - case SAVE_SUCCESS: - case SAVE_ERROR: - MenuZeroFillScreen(); - sub_8064E2C(); - ScriptContext2_Disable(); - return TRUE; + case SAVE_IN_PROGRESS: + return FALSE; + case SAVE_CANCELED: + //Go back to start menu + MenuZeroFillScreen(); + InitStartMenu(); + gCallback_03004AE8 = StartMenu_InputProcessCallback; + return FALSE; + case SAVE_SUCCESS: + case SAVE_ERROR: + MenuZeroFillScreen(); + sub_8064E2C(); + ScriptContext2_Disable(); + return TRUE; } return FALSE; } @@ -532,15 +532,15 @@ static void Task_SaveDialog(u8 taskId) switch (status) { - case SAVE_CANCELED: - case SAVE_ERROR: - gScriptResult = 0; - break; - case SAVE_SUCCESS: - gScriptResult = status; - break; - case SAVE_IN_PROGRESS: - return; + case SAVE_CANCELED: + case SAVE_ERROR: + gScriptResult = 0; + break; + case SAVE_SUCCESS: + gScriptResult = status; + break; + case SAVE_IN_PROGRESS: + return; } DestroyTask(taskId); EnableBothScriptContexts(); @@ -602,29 +602,29 @@ static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void) { switch (ProcessMenuInputNoWrap_()) { - case 0: //YES - HideSaveDialog(); - switch (gSaveFileStatus) + case 0: //YES + HideSaveDialog(); + switch (gSaveFileStatus) + { + case 0: + case 2: + if (gDifferentSaveFile == FALSE) { - case 0: - case 2: - if (gDifferentSaveFile == FALSE) - { - saveDialogCallback = SaveDialogCB_SaveFileExists; - return SAVE_IN_PROGRESS; - } - saveDialogCallback = SaveDialogCB_DisplaySavingMessage; - return SAVE_IN_PROGRESS; - default: - saveDialogCallback = SaveDialogCB_SaveFileExists; - return SAVE_IN_PROGRESS; + saveDialogCallback = SaveDialogCB_SaveFileExists; + return SAVE_IN_PROGRESS; } - break; - case -1: //B button - case 1: //NO - HideSaveDialog(); - sub_8071700(); - return SAVE_CANCELED; + saveDialogCallback = SaveDialogCB_DisplaySavingMessage; + return SAVE_IN_PROGRESS; + default: + saveDialogCallback = SaveDialogCB_SaveFileExists; + return SAVE_IN_PROGRESS; + } + break; + case -1: //B button + case 1: //NO + HideSaveDialog(); + sub_8071700(); + return SAVE_CANCELED; } return SAVE_IN_PROGRESS; } @@ -648,15 +648,15 @@ static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void) { switch (ProcessMenuInputNoWrap_()) { - case 0: //YES - HideSaveDialog(); - saveDialogCallback = SaveDialogCB_DisplaySavingMessage; - break; - case -1: //B button - case 1: //NO - HideSaveDialog(); - sub_8071700(); - return SAVE_CANCELED; + case 0: //YES + HideSaveDialog(); + saveDialogCallback = SaveDialogCB_DisplaySavingMessage; + break; + case -1: //B button + case 1: //NO + HideSaveDialog(); + sub_8071700(); + return SAVE_CANCELED; } return SAVE_IN_PROGRESS; } @@ -749,55 +749,55 @@ static bool32 sub_80719FC(u8 *step) { switch (*step) { - case 0: + case 0: + { + u8 *addr; + u32 size; + + REG_DISPCNT = 0; + SetVBlankCallback(NULL); + remove_some_task(); + DmaClear16(3, PLTT, PLTT_SIZE); + addr = (void *)VRAM; + size = 0x18000; + while (1) { - u8 *addr; - u32 size; - - REG_DISPCNT = 0; - SetVBlankCallback(NULL); - remove_some_task(); - DmaClear16(3, PLTT, PLTT_SIZE); - addr = (void *)VRAM; - size = 0x18000; - while (1) + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } + DmaFill16(3, 0, addr, size); + break; } - break; } - case 1: - ResetSpriteData(); - ResetTasks(); - ResetPaletteFade(); - dp12_8087EA4(); - break; - case 2: - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; - break; - case 3: - { - u32 savedIme; - - BlendPalettes(-1, 0x10, 0); - SetVBlankCallback(sub_80719F0); - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= 1; - REG_IME = savedIme; - break; - } - case 4: - return TRUE; + break; + } + case 1: + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + dp12_8087EA4(); + break; + case 2: + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; + break; + case 3: + { + u32 savedIme; + + BlendPalettes(-1, 0x10, 0); + SetVBlankCallback(sub_80719F0); + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIme; + break; + } + case 4: + return TRUE; } (*step)++; return FALSE; @@ -826,31 +826,31 @@ static void Task_8071B64(u8 taskId) { switch (*step) { - case 0: - MenuDisplayMessageBox(); - MenuPrint(gSystemText_Saving, 2, 15); - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - (*step)++; - break; - case 1: - SetSecretBase2Field_9_AndHideBG(); - sub_8125E2C(); - (*step)++; - break; - case 2: - if (!sub_8125E6C()) - break; - ClearSecretBase2Field_9_2(); - (*step)++; - break; - case 3: - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - (*step)++; - break; - case 4: - SetMainCallback2(gMain.savedCallback); - DestroyTask(taskId); + case 0: + MenuDisplayMessageBox(); + MenuPrint(gSystemText_Saving, 2, 15); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + (*step)++; + break; + case 1: + SetSecretBase2Field_9_AndHideBG(); + sub_8125E2C(); + (*step)++; + break; + case 2: + if (!sub_8125E6C()) break; + ClearSecretBase2Field_9_2(); + (*step)++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + (*step)++; + break; + case 4: + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskId); + break; } } } diff --git a/src/starter_choose.c b/src/starter_choose.c index 6ef410d21..4b857dba6 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -448,26 +448,26 @@ static void Task_StarterChoose5(u8 taskId) switch (ProcessMenuInputNoWrap_()) { - case 0: // YES - //Return the starter choice and exit. - gScriptResult = gTasks[taskId].tStarterSelection; - SetMainCallback2(gMain.savedCallback); - break; - case 1: // NO - case -1: // B button - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(21, 7, 27, 12); - - spriteId = gTasks[taskId].tPkmnSpriteId; - FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); - FreeOamMatrix(gSprites[spriteId].oam.matrixNum); - DestroySprite(&gSprites[spriteId]); - - spriteId = gTasks[taskId].tCircleSpriteId; - FreeOamMatrix(gSprites[spriteId].oam.matrixNum); - DestroySprite(&gSprites[spriteId]); - gTasks[taskId].func = Task_StarterChoose6; - break; + case 0: // YES + //Return the starter choice and exit. + gScriptResult = gTasks[taskId].tStarterSelection; + SetMainCallback2(gMain.savedCallback); + break; + case 1: // NO + case -1: // B button + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(21, 7, 27, 12); + + spriteId = gTasks[taskId].tPkmnSpriteId; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); + FreeOamMatrix(gSprites[spriteId].oam.matrixNum); + DestroySprite(&gSprites[spriteId]); + + spriteId = gTasks[taskId].tCircleSpriteId; + FreeOamMatrix(gSprites[spriteId].oam.matrixNum); + DestroySprite(&gSprites[spriteId]); + gTasks[taskId].func = Task_StarterChoose6; + break; } } diff --git a/src/text.c b/src/text.c index 7be72833a..02cafea48 100644 --- a/src/text.c +++ b/src/text.c @@ -1755,21 +1755,21 @@ u16 InitWindowTileData(struct Window *win, u16 startOffset) case 1: switch (win->config->fontNum) { - case 0: - case 3: - retVal = LoadFixedWidthFont(win, startOffset); - break; - case 1: - case 2: - retVal = LoadFixedWidthFont_Font1Latin(win, startOffset); - break; - case 4: - case 5: - retVal = LoadFixedWidthFont_Font4Latin(win, startOffset); - break; - case 6: - retVal = LoadFixedWidthFont_Braille(win, startOffset); - break; + case 0: + case 3: + retVal = LoadFixedWidthFont(win, startOffset); + break; + case 1: + case 2: + retVal = LoadFixedWidthFont_Font1Latin(win, startOffset); + break; + case 4: + case 5: + retVal = LoadFixedWidthFont_Font4Latin(win, startOffset); + break; + case 6: + retVal = LoadFixedWidthFont_Braille(win, startOffset); + break; } break; } @@ -1888,30 +1888,30 @@ static void MultistepLoadFont_LoadGlyph(struct Window *win, u16 startOffset, u8 switch (win->config->fontNum) { - case 0: - case 3: - buffer = win->tileData + 32 * startOffset + 64 * glyph; - LoadFixedWidthGlyph(win, glyph, buffer); - break; - case 1: - case 2: - buffer = win->tileData + 32 * (glyph + startOffset); - ApplyColors_UnshadowedFont( - &sFont1LatinGlyphs[8 * glyph], - (u32 *)buffer, - win->foregroundColor, - win->backgroundColor); - break; - case 4: - case 5: - buffer = win->tileData + 32 * (glyph + startOffset); - ApplyColors_ShadowedFont( - &gFont4LatinGlyphs[8 * glyph], - buffer, - win->foregroundColor, - win->shadowColor, - win->backgroundColor); - break; + case 0: + case 3: + buffer = win->tileData + 32 * startOffset + 64 * glyph; + LoadFixedWidthGlyph(win, glyph, buffer); + break; + case 1: + case 2: + buffer = win->tileData + 32 * (glyph + startOffset); + ApplyColors_UnshadowedFont( + &sFont1LatinGlyphs[8 * glyph], + (u32 *)buffer, + win->foregroundColor, + win->backgroundColor); + break; + case 4: + case 5: + buffer = win->tileData + 32 * (glyph + startOffset); + ApplyColors_ShadowedFont( + &gFont4LatinGlyphs[8 * glyph], + buffer, + win->foregroundColor, + win->shadowColor, + win->backgroundColor); + break; } } diff --git a/src/tv.c b/src/tv.c index ea1f13047..dfda14d82 100644 --- a/src/tv.c +++ b/src/tv.c @@ -157,61 +157,61 @@ extern u8 GabbyAndTyGetBattleNum(void); void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { switch (GabbyAndTyGetBattleNum()) { - case 1: - gSpecialVar_0x8004 = 0xE; - gSpecialVar_0x8005 = 0xD; - break; - case 2: - gSpecialVar_0x8004 = 0x5; - gSpecialVar_0x8005 = 0x6; - break; - case 3: - gSpecialVar_0x8004 = 0x12; - gSpecialVar_0x8005 = 0x11; - break; - case 4: - gSpecialVar_0x8004 = 0x15; - gSpecialVar_0x8005 = 0x16; - break; - case 5: - gSpecialVar_0x8004 = 0x8; - gSpecialVar_0x8005 = 0x9; - break; - case 6: - gSpecialVar_0x8004 = 0x13; - gSpecialVar_0x8005 = 0x14; - break; - case 7: - gSpecialVar_0x8004 = 0x17; - gSpecialVar_0x8005 = 0x18; - break; - case 8: - gSpecialVar_0x8004 = 0xA; - gSpecialVar_0x8005 = 0xB; - break; + case 1: + gSpecialVar_0x8004 = 0xE; + gSpecialVar_0x8005 = 0xD; + break; + case 2: + gSpecialVar_0x8004 = 0x5; + gSpecialVar_0x8005 = 0x6; + break; + case 3: + gSpecialVar_0x8004 = 0x12; + gSpecialVar_0x8005 = 0x11; + break; + case 4: + gSpecialVar_0x8004 = 0x15; + gSpecialVar_0x8005 = 0x16; + break; + case 5: + gSpecialVar_0x8004 = 0x8; + gSpecialVar_0x8005 = 0x9; + break; + case 6: + gSpecialVar_0x8004 = 0x13; + gSpecialVar_0x8005 = 0x14; + break; + case 7: + gSpecialVar_0x8004 = 0x17; + gSpecialVar_0x8005 = 0x18; + break; + case 8: + gSpecialVar_0x8004 = 0xA; + gSpecialVar_0x8005 = 0xB; + break; } } void sub_80BDE48(void) { switch (gSpecialVar_0x8005) { - case TVSHOW_FAN_CLUB_LETTER: - sub_80BE5FC(); - break; - case TVSHOW_RECENT_HAPPENINGS: - sub_80BE65C(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80BE6A0(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - nullsub_21(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80BE188(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80BE320(); - break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80BE5FC(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BE65C(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BE6A0(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_21(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BE188(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BE320(); + break; } } @@ -1025,28 +1025,28 @@ bool8 IsPriceDiscounted(u8 arg0) { switch (arg0) { - case 1: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) - { - return TRUE; - } - else - { - return FALSE; - } - break; - case 3: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) - { - return TRUE; - } - else - { - return FALSE; - } - break; - default: + case 1: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) + { + return TRUE; + } + else + { + return FALSE; + } + break; + case 3: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + { return TRUE; + } + else + { + return FALSE; + } + break; + default: + return TRUE; } } @@ -1098,18 +1098,18 @@ void sub_80BEF10(u8 strvaridx, u8 rank) { switch (rank) { - case NORMAL_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); - break; - case SUPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); - break; - case HYPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); - break; - case MASTER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); - break; + case NORMAL_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); + break; + case SUPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); + break; + case HYPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); + break; + case MASTER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); + break; } } @@ -1117,21 +1117,21 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) { switch (category) { - case CONTEST_COOL: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); - break; - case CONTEST_BEAUTY: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); - break; - case CONTEST_CUTE: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); - break; - case CONTEST_SMART: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); - break; - case CONTEST_TOUGH: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); - break; + case CONTEST_COOL: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); + break; + case CONTEST_BEAUTY: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); + break; + case CONTEST_CUTE: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); + break; + case CONTEST_SMART: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); + break; + case CONTEST_TOUGH: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); + break; } } @@ -1260,27 +1260,27 @@ void sub_80BF2C4(void) { gScriptResult = 0; switch (gSpecialVar_0x8005) { - case TVSHOW_FAN_CLUB_LETTER: - sub_80BF334(); - break; - case TVSHOW_RECENT_HAPPENINGS: - sub_80BF3A4(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80BF3DC(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80BF46C(); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80BF478(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80BF484(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80BF4BC(); - break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80BF334(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BF3A4(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BF3DC(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80BF46C(); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80BF478(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BF484(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BF4BC(); + break; } } @@ -1827,18 +1827,18 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) } ewramTVShows = &gUnknown_02007000; switch (arg2) { - case 0: - sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); - break; - case 1: - sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); - break; - case 2: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); - break; - case 3: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); - break; + case 0: + sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 1: + sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 2: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); + break; + case 3: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); + break; } sub_80BF588(gSaveBlock1.tvShows.shows); sub_80C04A0(); @@ -1899,15 +1899,15 @@ bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 i value = FALSE; switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00); switch (switchval) { - case 2: - value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); - break; - case 3: - value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); - break; - case 4: - value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); - break; + case 2: + value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 3: + value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 4: + value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; } if (value == TRUE) { sub_80BF55C(tv2->shows, gUnknown_03000722); @@ -2102,50 +2102,50 @@ void sub_80C01D4(void) { u8 i; for (i=0; i<24; i++) { switch (gSaveBlock1.tvShows.shows[i].common.var00) { - case 0: - break; - case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); - break; - case TVSHOW_RECENT_HAPPENINGS: - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); - break; - case TVSHOW_SMART_SHOPPER: - break; - case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); - break; - case TVSHOW_FISHING_ADVICE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); - break; - case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); - break; - case TVSHOW_MASS_OUTBREAK: - break; - default: - sub_80C03A8(i); + case 0: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); + break; + case TVSHOW_RECENT_HAPPENINGS: + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); + break; + case TVSHOW_SMART_SHOPPER: + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); + break; + case TVSHOW_MASS_OUTBREAK: + break; + default: + sub_80C03A8(i); } } } @@ -2508,45 +2508,45 @@ void sub_80C0788(void) { void DoTVShow(void) { if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { - case TVSHOW_FAN_CLUB_LETTER: - DoTVShowPokemonFanClubLetter(); - break; - case TVSHOW_RECENT_HAPPENINGS: - DoTVShowRecentHappenings(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - DoTVShowPokemonFanClubOpinions(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - nullsub_22(); - break; - case TVSHOW_MASS_OUTBREAK: - DoTVShowPokemonNewsMassOutbreak(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - DoTVShowBravoTrainerPokemonProfile(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - DoTVShowBravoTrainerBattleTowerProfile(); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - DoTVShowPokemonTodaySuccessfulCapture(); - break; - case TVSHOW_SMART_SHOPPER: - DoTVShowTodaysSmartShopper(); - break; - case TVSHOW_NAME_RATER_SHOW: - DoTVShowTheNameRaterShow(); - break; - case TVSHOW_POKEMON_TODAY_FAILED: - DoTVShowPokemonTodayFailedCapture(); - break; - case TVSHOW_FISHING_ADVICE: - DoTVShowPokemonAngler(); - break; - case TVSHOW_WORLD_OF_MASTERS: - DoTVShowTheWorldOfMasters(); - break; + case TVSHOW_FAN_CLUB_LETTER: + DoTVShowPokemonFanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + DoTVShowRecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + DoTVShowPokemonFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_22(); + break; + case TVSHOW_MASS_OUTBREAK: + DoTVShowPokemonNewsMassOutbreak(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + DoTVShowBravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + DoTVShowBravoTrainerBattleTowerProfile(); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + DoTVShowPokemonTodaySuccessfulCapture(); + break; + case TVSHOW_SMART_SHOPPER: + DoTVShowTodaysSmartShopper(); + break; + case TVSHOW_NAME_RATER_SHOW: + DoTVShowTheNameRaterShow(); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + DoTVShowPokemonTodayFailedCapture(); + break; + case TVSHOW_FISHING_ADVICE: + DoTVShowPokemonAngler(); + break; + case TVSHOW_WORLD_OF_MASTERS: + DoTVShowTheWorldOfMasters(); + break; } } } @@ -2571,91 +2571,91 @@ void DoTVShowTheNameRaterShow(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; - break; - case 1: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - if (tvShow->nameRaterShow.random == 0) { - gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { - gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { - gUnknown_020387E8 = 11; - } - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - if (tvShow->nameRaterShow.random == 0) { - gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { - gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { - gUnknown_020387E8 = 11; - } - break; - case 9: - case 10: - case 11: - sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - gUnknown_020387E8 = 12; - break; - case 13: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - gUnknown_020387E8 = 14; - break; - case 14: - sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); - sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - gUnknown_020387E8 = 18; - break; - case 15: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); - gUnknown_020387E8 = 16; - break; - case 16: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); - gUnknown_020387E8 = 17; - break; - case 17: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); - gUnknown_020387E8 = 18; - break; - case 12: - switchval = 18; - gUnknown_020387E8 = 18; - case 18: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; + break; + case 1: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 9: + case 10: + case 11: + sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = 12; + break; + case 13: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 14; + break; + case 14: + sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); + sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 18; + break; + case 15: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 16; + break; + case 16: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 17; + break; + case 17: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); + gUnknown_020387E8 = 18; + break; + case 12: + switchval = 18; + gUnknown_020387E8 = 18; + case 18: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + TVShowDone(); + break; } ShowFieldMessage(gTVNameRaterTextGroup[switchval]); } @@ -2667,64 +2667,64 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { - gUnknown_020387E8 = 5; - } else { - gUnknown_020387E8 = 1; - } - break; - case 1: - gUnknown_020387E8 = 2; - break; - case 2: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); - sub_80BF088(2, tvShow->pokemonToday.var12); - if (tvShow->pokemonToday.var12 < 4) { - gUnknown_020387E8 = 3; - } else { - gUnknown_020387E8 = 4; - } - break; - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 = 6; - break; - case 4: - gUnknown_020387E8 = 6; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - gUnknown_020387E8 = 6; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 += (Random() % 4) + 1; - break; - case 7: - case 8: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - sub_80BF638(2, tvShow->pokemonToday.species); - gUnknown_020387E8 = 11; - break; - case 9: - case 10: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 = 11; - break; - case 11: - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 1; + } + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); + sub_80BF088(2, tvShow->pokemonToday.var12); + if (tvShow->pokemonToday.var12 < 4) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 6; + break; + case 4: + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 7: + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + sub_80BF638(2, tvShow->pokemonToday.species); + gUnknown_020387E8 = 11; + break; + case 9: + case 10: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 11; + break; + case 11: + TVShowDone(); + break; } ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]); } @@ -2737,40 +2737,40 @@ void DoTVShowPokemonTodayFailedCapture(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); - gUnknown_020387E8 = 1; - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); - if (tvShow->pokemonTodayFailed.var11 == 1) { - gUnknown_020387E8 = 3; - } else { - gUnknown_020387E8 = 2; - } - break; - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80BF088(1, tvShow->pokemonTodayFailed.var10); - rval = (Random() % 3); - if (rval == 0) { - gUnknown_020387E8 = 5; - } else { - gUnknown_020387E8 = 4; - } - break; - case 4: - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - gUnknown_020387E8 = 6; - break; - case 6: - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); + if (tvShow->pokemonTodayFailed.var11 == 1) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 2; + } + break; + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80BF088(1, tvShow->pokemonTodayFailed.var10); + rval = (Random() % 3); + if (rval == 0) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 4; + } + break; + case 4: + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowDone(); + break; } ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]); } @@ -2783,46 +2783,46 @@ void DoTVShowPokemonFanClubLetter(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); - gUnknown_020387E8 = 50; - break; - case 1: - rval = (Random() % 4) + 1; - if (rval == 1) { - gUnknown_020387E8 = 2; - } else { - gUnknown_020387E8 = rval + 2; - } - break; - case 2: - gUnknown_020387E8 = 51; - break; - case 3: - gUnknown_020387E8 += (Random() % 3) + 1; - break; - case 4: - case 5: - case 6: - sub_80BF79C(tvShow); - gUnknown_020387E8 = 7; - break; - case 7: - rval = (Random() % 0x1f) + 0x46; - sub_80BF088(2, rval); - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 1; - return; - case 51: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 3; - return; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); + gUnknown_020387E8 = 50; + break; + case 1: + rval = (Random() % 4) + 1; + if (rval == 1) { + gUnknown_020387E8 = 2; + } else { + gUnknown_020387E8 = rval + 2; + } + break; + case 2: + gUnknown_020387E8 = 51; + break; + case 3: + gUnknown_020387E8 += (Random() % 3) + 1; + break; + case 4: + case 5: + case 6: + sub_80BF79C(tvShow); + gUnknown_020387E8 = 7; + break; + case 7: + rval = (Random() % 0x1f) + 0x46; + sub_80BF088(2, rval); + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + case 51: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 3; + return; } ShowFieldMessage(gTVFanClubTextGroup[switchval]); } @@ -2834,27 +2834,27 @@ void DoTVShowRecentHappenings(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); - sub_80BF79C(tvShow); - gUnknown_020387E8 = 50; - break; - case 1: - gUnknown_020387E8 += 1 + (Random() % 3); - break; - case 2: - case 3: - case 4: - gUnknown_020387E8 = 5; - break; - case 5: - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 1; - return; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); + sub_80BF79C(tvShow); + gUnknown_020387E8 = 50; + break; + case 1: + gUnknown_020387E8 += 1 + (Random() % 3); + break; + case 2: + case 3: + case 4: + gUnknown_020387E8 = 5; + break; + case 5: + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; } ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]); } @@ -2866,25 +2866,25 @@ void DoTVShowPokemonFanClubOpinions(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); - gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; - break; - case 1: - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); - gUnknown_020387E8 = 4; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); + gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; + break; + case 1: + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); + gUnknown_020387E8 = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); + TVShowDone(); + break; } ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]); } @@ -2914,50 +2914,50 @@ void DoTVShowInSearchOfTrainers(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.val9 > 1) { - gUnknown_020387E8 = 1; - } else { - gUnknown_020387E8 = 2; - } - break; - case 1: + case 0: + sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); + if (gSaveBlock1.gabbyAndTyData.val9 > 1) { + gUnknown_020387E8 = 1; + } else { gUnknown_020387E8 = 2; - break; - case 2: - if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { - gUnknown_020387E8 = 4; - } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { - gUnknown_020387E8 = 5; - } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { - gUnknown_020387E8 = 6; - } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { - gUnknown_020387E8 = 7; - } else { - gUnknown_020387E8 = 3; - } - break; - case 3: - StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gUnknown_020387E8 = 8; - break; - case 4: - case 5: - case 6: - case 7: - gUnknown_020387E8 = 8; - break; - case 8: - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); - StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gScriptResult = 1; - gUnknown_020387E8 = 0;; - TakeTVShowInSearchOfTrainersOffTheAir(); - break; + } + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { + gUnknown_020387E8 = 4; + } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { + gUnknown_020387E8 = 5; + } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { + gUnknown_020387E8 = 6; + } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { + gUnknown_020387E8 = 7; + } else { + gUnknown_020387E8 = 3; + } + break; + case 3: + StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gUnknown_020387E8 = 8; + break; + case 4: + case 5: + case 6: + case 7: + gUnknown_020387E8 = 8; + break; + case 8: + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); + StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gScriptResult = 1; + gUnknown_020387E8 = 0;; + TakeTVShowInSearchOfTrainersOffTheAir(); + break; } ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]); } @@ -2974,18 +2974,18 @@ void DoTVShowPokemonAngler(void) { } switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var03); - TVShowDone(); - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var02); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var03); + TVShowDone(); + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var02); + TVShowDone(); + break; } ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]); } @@ -2997,24 +2997,24 @@ void DoTVShowTheWorldOfMasters(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80BF088(1, tvShow->worldOfMasters.var06); - sub_80BF088(2, tvShow->worldOfMasters.var02); - gUnknown_020387E8 = 1; - break; - case 1: - StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); - gUnknown_020387E8 = 2; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80BF088(1, tvShow->worldOfMasters.var06); + sub_80BF088(2, tvShow->worldOfMasters.var02); + gUnknown_020387E8 = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); + TVShowDone(); + break; } ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]); } diff --git a/src/wallclock.c b/src/wallclock.c index 0f3665c65..de007c1b3 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -428,17 +428,17 @@ static void Task_SetClock4(u8 taskId) { switch (ProcessMenuInputNoWrap_()) { - case 0: //YES - PlaySE(SE_SELECT); - gTasks[taskId].func = Task_SetClock5; //Move on - return; - case -1: //B button - case 1: //NO - sub_8072DEC(); - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - MenuZeroFillWindowRect(2, 16, 27, 19); - gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock + case 0: //YES + PlaySE(SE_SELECT); + gTasks[taskId].func = Task_SetClock5; //Move on + return; + case -1: //B button + case 1: //NO + sub_8072DEC(); + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + MenuZeroFillWindowRect(2, 16, 27, 19); + gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock } } @@ -501,18 +501,18 @@ static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed) switch (direction) { - case MVMT_BACKWARD: - if (angle) - angle = angle - delta; - else - angle = 360 - delta; - break; - case MVMT_FORWARD: - if (angle < 360 - delta) - angle = angle + delta; - else - angle = 0; - break; + case MVMT_BACKWARD: + if (angle) + angle = angle - delta; + else + angle = 360 - delta; + break; + case MVMT_FORWARD: + if (angle < 360 - delta) + angle = angle + delta; + else + angle = 0; + break; } return angle; } @@ -522,32 +522,32 @@ static u8 AdvanceClock(u8 taskId, u8 direction) { switch (direction) { - case MVMT_BACKWARD: - if (gTasks[taskId].tMinutes > 0) - gTasks[taskId].tMinutes--; + case MVMT_BACKWARD: + if (gTasks[taskId].tMinutes > 0) + gTasks[taskId].tMinutes--; + else + { + gTasks[taskId].tMinutes = 59; + if (gTasks[taskId].tHours > 0) + gTasks[taskId].tHours--; else - { - gTasks[taskId].tMinutes = 59; - if (gTasks[taskId].tHours > 0) - gTasks[taskId].tHours--; - else - gTasks[taskId].tHours = 23; - UpdateClockPeriod(taskId, direction); - } - break; - case MVMT_FORWARD: - if (gTasks[taskId].tMinutes < 59) - gTasks[taskId].tMinutes++; + gTasks[taskId].tHours = 23; + UpdateClockPeriod(taskId, direction); + } + break; + case MVMT_FORWARD: + if (gTasks[taskId].tMinutes < 59) + gTasks[taskId].tMinutes++; + else + { + gTasks[taskId].tMinutes = 0; + if (gTasks[taskId].tHours < 23) + gTasks[taskId].tHours++; else - { - gTasks[taskId].tMinutes = 0; - if (gTasks[taskId].tHours < 23) - gTasks[taskId].tHours++; - else - gTasks[taskId].tHours = 0; - UpdateClockPeriod(taskId, direction); - } - break; + gTasks[taskId].tHours = 0; + UpdateClockPeriod(taskId, direction); + } + break; } return 0; } @@ -559,28 +559,28 @@ static void UpdateClockPeriod(u8 taskId, u8 direction) switch (direction) { - case MVMT_BACKWARD: - switch (hours) - { - case 11: - gTasks[taskId].tPeriod = PERIOD_AM; - break; - case 23: - gTasks[taskId].tPeriod = PERIOD_PM; - break; - } + case MVMT_BACKWARD: + switch (hours) + { + case 11: + gTasks[taskId].tPeriod = PERIOD_AM; break; - case MVMT_FORWARD: - switch (hours) - { - case 0: - gTasks[taskId].tPeriod = PERIOD_AM; - break; - case 12: - gTasks[taskId].tPeriod = PERIOD_PM; - break; - } + case 23: + gTasks[taskId].tPeriod = PERIOD_PM; break; + } + break; + case MVMT_FORWARD: + switch (hours) + { + case 0: + gTasks[taskId].tPeriod = PERIOD_AM; + break; + case 12: + gTasks[taskId].tPeriod = PERIOD_PM; + break; + } + break; } } -- cgit v1.2.3 From 7c4f99560812cd5a8eedb124a9bc99c3f4243438 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 11:37:35 +0200 Subject: Remove duplicate strings.h declarations --- include/menu.h | 6 +++--- src/battle_party_menu.c | 11 +---------- src/battle_setup.c | 9 ++++----- src/berry_tag_screen.c | 5 +---- src/coins.c | 3 +-- src/contest_painting.c | 38 +------------------------------------- src/item.c | 2 +- src/item_use.c | 18 +----------------- src/main_menu.c | 22 +++++----------------- src/mauville_old_man.c | 3 +-- src/menu.c | 8 +++----- src/party_menu.c | 45 +-------------------------------------------- src/player_pc.c | 9 ++------- src/pokedex.c | 7 +------ src/save_failed_screen.c | 8 +------- src/shop.c | 5 ++--- src/start_menu.c | 7 +++---- src/starter_choose.c | 4 +--- src/string_util.c | 29 ++++++++--------------------- 19 files changed, 41 insertions(+), 198 deletions(-) diff --git a/include/menu.h b/include/menu.h index 6a11ffdc2..5b0f35a27 100644 --- a/include/menu.h +++ b/include/menu.h @@ -5,7 +5,7 @@ struct MenuAction { - u8 *text; + const u8 *text; u8 (*func)(); }; @@ -50,7 +50,7 @@ void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); -u8 sub_8072A18(u8 *, u8, u16, u8, u32); +u8 sub_8072A18(const u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(u8 *, u8, u16, u8, u8, u32); void MenuPrint_RightAligned(u8 *, u8, u8); @@ -59,7 +59,7 @@ void sub_8072BD8(u8 *, u8, u8, u16); u8 *sub_8072C14(u8 *, s32, u8, u8); u8 *sub_8072C44(u8 *, s32, u8, u8); u8 *sub_8072C74(u8 *, const u8 *, u8, u8); -u8 sub_8072CA4(u8 *s); +u8 sub_8072CA4(const u8 *s); u8 sub_8072CBC(void); void sub_8072CD4(u8 *, u8 *, u8 *); u32 MenuUpdateWindowText_OverrideLineLength(u8); diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 690ef99be..359517ecd 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -8,6 +8,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" @@ -58,16 +59,6 @@ extern u8 gUnknown_0202E8F6; extern u8 gUnknown_02038473; extern u8 gUnknown_020384F0; extern void (*gUnknown_03004AE4)(); //don't know types yet -extern const u8 gOtherText_CantSwitchPokeWithYours[]; -extern const u8 gOtherText_NoEnergyLeft[]; -extern const u8 gOtherText_EGGCantBattle[]; -extern const u8 gOtherText_AlreadySelected[]; -extern const u8 gOtherText_CantBeSwitched[]; -extern const u8 gOtherText_AlreadyBattle[]; -extern const u8 OtherText_Summary[]; -extern const u8 gOtherText_CancelNoTerminator[]; -extern const u8 OtherText_Shift[]; -extern const u8 OtherText_SendOut[]; static void Task_809527C(u8); static void Task_80952B4(u8); diff --git a/src/battle_setup.c b/src/battle_setup.c index 0753fba70..61b9bb1e9 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -23,6 +23,7 @@ #include "species.h" #include "starter_choose.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" #include "trainer.h" @@ -45,8 +46,6 @@ EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL; EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL; EWRAM_DATA u8 *gTrainerBattleEndScript = NULL; -extern u8 gOtherText_CancelWithTerminator[]; - extern u16 gBattleTypeFlags; extern u16 gScriptLastTalked; extern u8 gUnknown_02024D26; @@ -1169,12 +1168,12 @@ void PlayTrainerEncounterMusic(void) } //Returns an empty string if a null pointer was passed, otherwise returns str -u8 *SanitizeString(u8 *str) +u8 *SanitizeString(const u8 *str) { if (str) - return str; + return (u8 *) str; else - return gOtherText_CancelWithTerminator; + return (u8 *) gOtherText_CancelWithTerminator; } u8 *sub_808281C(void) diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 511b88c5a..f0bcb4f27 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -12,6 +12,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" @@ -38,10 +39,6 @@ extern u16 gUnknown_030041B4; extern const struct SpriteSheet gUnknown_083C1F74; extern const struct SpritePalette gUnknown_083C1F7C; -extern u8 gOtherText_ThreeQuestions2[]; -extern u8 gOtherText_Size[]; -extern u8 gOtherText_Firm[]; -extern u8 gContestStatsText_Unknown1[]; extern u8 *gUnknown_0841192C[]; extern u8 gBerryCheck_Gfx[]; diff --git a/src/coins.c b/src/coins.c index 193ea249e..3c6356612 100644 --- a/src/coins.c +++ b/src/coins.c @@ -2,11 +2,10 @@ #include "coins.h" #include "menu.h" #include "string_util.h" +#include "strings.h" #define MAX_COINS 9999 -extern u8 gOtherText_Coins2[]; - void UpdateCoinsWindow(s32 a, u8 b, u8 c) { PrintCoins(a, 4, b + 2, c + 1); diff --git a/src/contest_painting.c b/src/contest_painting.c index 2ef50ee17..c970deaf2 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -8,6 +8,7 @@ #include "rng.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "text.h" extern u8 unk_2000000[]; @@ -28,43 +29,6 @@ extern const struct MonCoords gMonFrontPicCoords[]; extern const struct SpriteSheet gMonBackPicTable[]; extern const struct MonCoords gMonBackPicCoords[]; extern void *gUnknown_081FAF4C[]; -extern const u8 OtherText_Cool[]; -extern const u8 OtherText_Beauty2[]; -extern const u8 OtherText_Cute[]; -extern const u8 OtherText_Smart[]; -extern const u8 OtherText_Tough[]; -extern const u8 OtherText_NonstopSuperCool[]; -extern const u8 OtherText_Terminator6[]; -extern const u8 OtherText_GoodLookingPoke[]; -extern const u8 OtherText_Terminator7[]; -extern const u8 OtherText_MarvelousGreat[]; -extern const u8 OtherText_Terminator8[]; -extern const u8 OtherText_CenturyLastVenus[]; -extern const u8 OtherText_Terminator9[]; -extern const u8 OtherText_Terminator10[]; -extern const u8 OtherText_DazzlingSmile[]; -extern const u8 OtherText_PokeCenterIdol[]; -extern const u8 OtherText_Terminator11[]; -extern const u8 OtherText_LovelyAndSweet[]; -extern const u8 OtherText_Terminator12[]; -extern const u8 OtherText_ThePretty[]; -extern const u8 OtherText_WinningPortrait[]; -extern const u8 OtherText_GiveUsWink[]; -extern const u8 OtherText_Terminator13[]; -extern const u8 OtherText_SmartnessMaestro[]; -extern const u8 OtherText_Terminator14[]; -extern const u8 OtherText_ChosenPokeAmong[]; -extern const u8 OtherText_Terminator15[]; -extern const u8 OtherText_TheExcellent[]; -extern const u8 OtherText_ItsMomentOfElegance[]; -extern const u8 OtherText_PowerfullyMuscular[]; -extern const u8 OtherText_Terminator16[]; -extern const u8 OtherText_StrongErEst[]; -extern const u8 OtherText_Terminator17[]; -extern const u8 OtherText_MightyTough[]; -extern const u8 OtherText_Exclamation[]; -extern const u8 gContestText_ContestWinner[]; -extern const u8 gOtherText_Unknown1[]; static const u16 gPictureFramePalettes[][16] = { diff --git a/src/item.c b/src/item.c index 7257c3649..ad2b9aed3 100644 --- a/src/item.c +++ b/src/item.c @@ -1,10 +1,10 @@ #include "global.h" #include "item.h" #include "string_util.h" +#include "strings.h" extern struct Berry *GetBerryInfo(u8 berry); -extern u8 gOtherText_Berry2[]; extern u8 gUnknown_02038560; extern struct Item gItems[]; diff --git a/src/item_use.c b/src/item_use.c index 4047ade5c..a310df2ce 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -22,6 +22,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "vars.h" @@ -74,23 +75,6 @@ extern u8 GetItemEffectType(); extern void sub_808B020(void); extern void sub_810B96C(void); -extern u8 gOtherText_DadsAdvice[]; -extern u8 gOtherText_CantGetOffBike[]; -extern u8 gOtherText_NoResponse[]; -extern u8 gOtherText_ItemfinderResponding[]; -extern u8 gOtherText_ItemfinderItemUnderfoot[]; -extern u8 gOtherText_Coins3[]; -extern u8 gOtherText_BootedHM[]; -extern u8 gOtherText_BootedTM[]; -extern u8 gOtherText_ContainsMove[]; -extern u8 gOtherText_UsedItem[]; -extern u8 gOtherText_RepelLingers[]; -extern u8 gOtherText_UsedFlute[]; -extern u8 gOtherText_UsedRepel[]; -extern u8 gOtherText_BoxIsFull[]; -extern u8 gOtherText_WontHaveAnyEffect[]; -extern u8 gOtherText_SnapConfusion[]; - extern u16 gScriptItemId; extern u16 gBattleTypeFlags; diff --git a/src/main_menu.c b/src/main_menu.c index 50fefc471..e5ab0c822 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -15,6 +15,7 @@ #include "sound.h" #include "species.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" #include "title_screen.h" @@ -41,18 +42,6 @@ extern const u8 gBirchSpeech_WhatsYourName[]; extern u8 gBirchSpeech_SoItsPlayer[]; extern u8 gBirchSpeech_AhOkayYouArePlayer[]; extern u8 gBirchSpeech_AreYouReady[]; -extern u8 gSaveFileDeletedMessage[]; -extern u8 gSaveFileCorruptMessage[]; -extern u8 gBoardNotInstalledMessage[]; -extern u8 gBatteryDryMessage[]; -extern u8 gMainMenuString_Continue[]; -extern u8 gMainMenuString_NewGame[]; -extern u8 gMainMenuString_MysteryEvents[]; -extern u8 gMainMenuString_Option[]; -extern u8 gMainMenuString_Player[]; -extern u8 gMainMenuString_Time[]; -extern u8 gMainMenuString_Pokedex[]; -extern u8 gMainMenuString_Badges[]; extern const struct MonCoords gMonFrontPicCoords[]; extern const struct SpriteSheet gMonFrontPicTable[]; @@ -68,7 +57,6 @@ extern const u8 gUnknown_081E764C[]; extern const u8 gBirchIntroShadowGfx[]; extern const u8 gUnknown_081E7834[]; extern const u8 gUnknown_081E796C[]; -extern const u8 gSystemText_NewPara[]; extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[]; @@ -115,7 +103,7 @@ static void Task_MainMenuProcessKeyInput(u8 taskId); static void Task_MainMenuPressedA(u8 taskId); static void Task_MainMenuPressedB(u8 taskId); static void HighlightCurrentMenuItem(u8 layout, u8 menuItem); -static void PrintMainMenuItem(u8 *text, u8 left, u8 top); +static void PrintMainMenuItem(const u8 *text, u8 left, u8 top); static void PrintSaveFileInfo(void); static void PrintPlayerName(void); static void PrintPlayTime(void); @@ -657,7 +645,7 @@ void HighlightCurrentMenuItem(u8 layout, u8 menuItem) } } -void PrintMainMenuItem(u8 *text, u8 left, u8 top) +void PrintMainMenuItem(const u8 *text, u8 left, u8 top) { u8 i; u8 buffer[32]; @@ -1646,9 +1634,9 @@ static void SetPresetPlayerName(u8 index) u8 *name; if (gSaveBlock2.playerGender == MALE) - name = gMalePresetNames[index].text; + name = (u8 *) gMalePresetNames[index].text; else - name = gFemalePresetNames[index].text; + name = (u8 *) gFemalePresetNames[index].text; for (i = 0; i < 7; i++) gSaveBlock2.playerName[i] = name[i]; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 11dadf380..d6cbbce53 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -4,6 +4,7 @@ #include "rng.h" #include "script.h" #include "string_util.h" +#include "strings.h" extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; @@ -14,8 +15,6 @@ extern void sub_80F83D0(void); extern void sub_80F7F80(u8); extern u16 sub_80EB8EC(void); extern void sub_80F7DC0(void); -extern u8 gOtherText_Is[]; -extern u8 gOtherText_DontYouAgree[]; extern u32 gUnknown_083E5388[]; extern u32 gUnknown_083E53A8[]; diff --git a/src/menu.c b/src/menu.c index 3759d22c9..f9b9dbf0b 100644 --- a/src/menu.c +++ b/src/menu.c @@ -6,6 +6,7 @@ #include "script.h" #include "songs.h" #include "sound.h" +#include "strings.h" #include "text.h" #include "text_window.h" @@ -22,9 +23,6 @@ struct Menu u8 columnXCoords[8]; }; -extern u8 OtherText_Yes[]; -extern u8 OtherText_No[]; - static void MultistepInitMenuWindowInternal(const struct WindowConfig *, u16); static void InitMenuWindowInternal(const struct WindowConfig *, u16); static bool8 sub_80723D4(void); @@ -603,7 +601,7 @@ u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) return sub_8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); } -u8 sub_8072A18(u8 *text, u8 left, u16 top, u8 width, u32 a5) +u8 sub_8072A18(const u8 *text, u8 left, u16 top, u8 width, u32 a5) { return sub_8004FD0(gMenuWindowPtr, 0, text, gMenuTextTileOffset, left, top, width, a5); } @@ -659,7 +657,7 @@ u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4) return AlignString(gMenuWindowPtr, a1, a2, a3, a4); } -u8 sub_8072CA4(u8 *str) +u8 sub_8072CA4(const u8 *str) { return GetStringWidth(gMenuWindowPtr, str); } diff --git a/src/party_menu.c b/src/party_menu.c index 8eb181f46..82f234ae4 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5,6 +5,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "sprite.h" #include "palette.h" @@ -86,50 +87,6 @@ extern const u16 gUnknown_08376504[]; extern void (*const gUnknown_08376B54[])(u8); extern const u8 *const gUnknown_08376D04[DATA_COUNT]; extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; -extern const u8 gOtherText_TallPlusAndRightArrow[]; -extern const u8 gOtherText_WontHaveAnyEffect[]; -extern const u8 gOtherText_ElevatedTo[]; -extern const u8 gOtherText_MailMustBeRemoved[]; -extern const u8 gOtherText_AlreadyHolding[]; -extern const u8 gOtherText_TakenAndReplaced[]; -extern const u8 gOtherText_BagFullCannotRemoveItem[]; -extern const u8 gOtherText_WasGivenToHold[]; -extern const u8 gOtherText_PokeHoldingItemCantMail[]; -extern const u8 gOtherText_MailTransferredMailbox[]; -extern const u8 gOtherText_NotHoldingAnything[]; -extern const u8 gOtherText_ReceivedTheThingFrom[]; -extern const u8 gOtherText_SendRemovedMailPrompt[]; -extern const u8 gOtherText_MailTaken[]; -extern const u8 gOtherText_MailWasSent[]; -extern const u8 gOtherText_MailboxIsFull[]; -extern const u8 gOtherText_MailRemovedMessageLost[]; -extern const u8 gOtherText_WantsToLearn[]; -extern const u8 gOtherText_NotCompatible[]; -extern const u8 gOtherText_AlreadyKnows[]; -extern const u8 gOtherText_LearnedMove[]; -extern const u8 gOtherText_WhichMoveToForget2[]; -extern const u8 gOtherText_ForgetMove123_2[]; -extern const u8 gOtherText_StopTryingTo[]; -extern const u8 gOtherText_DidNotLearnMove2[]; -extern const u8 gOtherText_RegainedHealth[]; -extern const u8 gOtherText_HPRestoredBy[]; -extern const u8 gOtherText_CuredPoisoning[]; -extern const u8 gOtherText_WokeUp[]; -extern const u8 gOtherText_BurnHealed[]; -extern const u8 gOtherText_ThawedOut[]; -extern const u8 gOtherText_CuredParalysis[]; -extern const u8 gOtherText_SnapConfusion[]; -extern const u8 gOtherText_GotOverLove[]; -extern const u8 gOtherText_BecameHealthy[]; -extern const u8 gOtherText_Hp2[]; -extern const u8 gOtherText_Attack[]; -extern const u8 gOtherText_Defense[]; -extern const u8 gOtherText_Speed[]; -extern const u8 gOtherText_SpAtk2[]; -extern const u8 gOtherText_SpDef2[]; -extern const u8 gOtherText_WasRaised[]; -extern const u8 gOtherText_PPIncreased[]; -extern const u8 gOtherText_PPRestored[]; extern const u8 gMoveNames[][13]; extern const u8 *const gItemEffectTable[]; diff --git a/src/player_pc.c b/src/player_pc.c index f0f0709b1..a34863be4 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -10,6 +10,7 @@ #include "script.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #define NEW_GAME_PC_ITEMS(i, type) ((u16)(gNewGamePCItems + type)[i * 2]) @@ -21,7 +22,7 @@ enum QUANTITY, }; -extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); +extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); extern void DoPlayerPCDecoration(u8); extern void BuyMenuFreeMemory(void); extern void DestroyVerticalScrollIndicator(u8); @@ -40,13 +41,8 @@ extern void sub_80F98DC(int); extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args -extern u8 gOtherText_NoItems[]; - extern u16 gNewGamePCItems[]; -extern u8 gOtherText_WhatWillYouDo[]; -extern u8 gOtherText_NoMailHere[]; - extern u8 *gUnknown_02039314; extern struct MenuAction gUnknown_08406298[]; @@ -57,7 +53,6 @@ extern u8 gUnknown_08406327[]; extern u8 gUnknown_08406330[]; extern u8 gUnknown_0840631E[]; extern u8 gUnknown_08406318[]; -extern u8 gOtherText_CancelNoTerminator[]; extern u8 gUnknown_030007B4; extern u8 unk_201FE00[]; diff --git a/src/pokedex.c b/src/pokedex.c index 5ea1f9938..057fa2d49 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -12,6 +12,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" // I'm #define-ing these just for now so I can keep using the old unkXXX member names @@ -90,12 +91,6 @@ extern u8 gUnknown_08E96ACC[]; extern u8 gUnknown_08E96B58[]; extern struct PokedexEntry gPokedexEntries[]; -extern u8 gDexText_UnknownPoke[]; -extern u8 gDexText_UnknownHeight[]; -extern u8 gDexText_UnknownWeight[]; -extern u8 gDexText_CryOf[]; -extern u8 gDexText_SizeComparedTo[]; -extern u8 gDexText_RegisterComplete[]; extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index d46abc74d..af5c385f5 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -7,6 +7,7 @@ #include "palette.h" #include "save.h" #include "sprite.h" +#include "strings.h" #include "task.h" #include "text.h" @@ -36,13 +37,6 @@ extern u32 gGameContinueCallback; extern u8 gBirchHelpGfx[]; -extern u8 gSystemText_SaveFailedBackupCheck[]; -extern u8 gSystemText_CheckCompleteSaveAttempt[]; -extern u8 gSystemText_BackupDamagedGameContinue[]; -extern u8 gSystemText_SaveCompletedPressA[]; -extern u8 gSystemText_SaveCompletedGameEnd[]; -extern u8 gSystemText_GameplayEnded[]; - extern u8 gBirchGrassTilemap[]; extern u8 gBirchBagTilemap[]; extern u8 gBirchBagGrassPal[0x40]; diff --git a/src/shop.c b/src/shop.c index 780dff02a..ea3840f60 100644 --- a/src/shop.c +++ b/src/shop.c @@ -9,6 +9,7 @@ #include "script.h" #include "sound.h" #include "sprite.h" +#include "strings.h" #include "task.h" struct UnknownShopStruct @@ -28,8 +29,6 @@ extern struct MenuAction gUnknown_083CC6D0[]; extern u8 gUnknown_083CC6E8[]; extern u8 gUnknown_083CC6EB[]; -extern u8 gOtherText_CanIHelpYou[]; -extern u8 gOtherText_AnythingElse[]; extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; @@ -38,7 +37,7 @@ extern u16 gUnknown_083CC710[2]; extern void sub_80A6300(void); extern void sub_80BE3BC(void); -extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); +extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); extern u8 sub_807D770(void); extern void pal_fill_black(void); extern void sub_80B3764(int, int); diff --git a/src/start_menu.c b/src/start_menu.c index 37d361c0b..c95c8b3f0 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -21,6 +21,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "trainer_card.h" @@ -54,10 +55,8 @@ EWRAM_DATA static u8 sNumStartMenuActions = 0; EWRAM_DATA static u8 sCurrentStartMenuActions[10] = {0}; //Text strings -extern u8 gSystemText_Saving[]; extern u8 gSaveText_PlayerSavedTheGame[]; extern u8 gSaveText_DontTurnOff[]; -extern u8 gSystemText_SaveErrorExchangeBackup[]; extern u8 gSaveText_ThereIsAlreadyAFile[]; extern u8 gSaveText_ThereIsADifferentFile[]; extern u8 gSaveText_WouldYouLikeToSave[]; @@ -113,7 +112,7 @@ static u8 SaveCallback1(void); static u8 SaveCallback2(void); static void sub_807160C(void); static u8 RunSaveDialogCallback(void); -static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void)); +static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)); static void Task_SaveDialog(u8 taskId); static void sub_8071700(void); static void HideSaveDialog(void); @@ -517,7 +516,7 @@ void InitSaveDialog(void) CreateTask(Task_SaveDialog, 0x50); } -static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void)) +static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)) { StringExpandPlaceholders(gStringVar4, ptr); MenuDisplayMessageBox(); diff --git a/src/starter_choose.c b/src/starter_choose.c index 6ef410d21..358fe8fca 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -11,6 +11,7 @@ #include "species.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "trig.h" @@ -20,14 +21,11 @@ struct MonCoords }; extern void * const gUnknown_081FAF4C[]; -extern const u8 gOtherText_DoYouChoosePoke[]; extern u16 gScriptResult; extern const u8 gSpeciesNames[][11]; -extern const u8 gOtherText_Poke[]; extern const struct SpriteSheet gMonFrontPicTable[]; extern const struct MonCoords gMonFrontPicCoords[]; extern const struct SpritePalette gMonPaletteTable[]; -extern const u8 gOtherText_BirchInTrouble[]; extern struct SpriteTemplate gUnknown_02024E8C; //-------------------------------------------------- diff --git a/src/string_util.c b/src/string_util.c index 957d70153..9686256a1 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -1,5 +1,6 @@ #include "global.h" #include "string_util.h" +#include "strings.h" #include "text.h" u8 gUnknownStringVar[16]; @@ -23,20 +24,6 @@ static const s32 sPowersOfTen[] = 1000000000, }; -extern u8 gExpandedPlaceholder_Empty[]; -extern u8 gExpandedPlaceholder_Kun[]; -extern u8 gExpandedPlaceholder_Chan[]; -extern u8 gExpandedPlaceholder_Sapphire[]; -extern u8 gExpandedPlaceholder_Ruby[]; -extern u8 gExpandedPlaceholder_Aqua[]; -extern u8 gExpandedPlaceholder_Magma[]; -extern u8 gExpandedPlaceholder_Archie[]; -extern u8 gExpandedPlaceholder_Maxie[]; -extern u8 gExpandedPlaceholder_Kyogre[]; -extern u8 gExpandedPlaceholder_Groudon[]; -extern u8 gExpandedPlaceholder_Brendan[]; -extern u8 gExpandedPlaceholder_May[]; - u8 *StringCopy10(u8 *dest, const u8 *src) { u8 i; @@ -473,17 +460,17 @@ static u8 *ExpandPlaceholder_StringVar3(void) static u8 *ExpandPlaceholder_KunChan(void) { if (gSaveBlock2.playerGender == MALE) - return gExpandedPlaceholder_Kun; + return (u8 *) gExpandedPlaceholder_Kun; else - return gExpandedPlaceholder_Chan; + return (u8 *) gExpandedPlaceholder_Chan; } static u8 *ExpandPlaceholder_RivalName(void) { if (gSaveBlock2.playerGender == MALE) - return gExpandedPlaceholder_May; + return (u8 *) gExpandedPlaceholder_May; else - return gExpandedPlaceholder_Brendan; + return (u8 *) gExpandedPlaceholder_Brendan; } #define VERSION_DEPENDENT_PLACEHOLDER_LIST \ @@ -497,11 +484,11 @@ static u8 *ExpandPlaceholder_RivalName(void) #ifdef SAPPHIRE #define X(ph, r, s) \ -static u8 *ExpandPlaceholder_##ph(void) { return gExpandedPlaceholder_##s; } +static u8 *ExpandPlaceholder_##ph(void) { return (u8 *) gExpandedPlaceholder_##s; } VERSION_DEPENDENT_PLACEHOLDER_LIST #else #define X(ph, r, s) \ -static u8 *ExpandPlaceholder_##ph(void) { return gExpandedPlaceholder_##r; } +static u8 *ExpandPlaceholder_##ph(void) { return (u8 *) gExpandedPlaceholder_##r; } VERSION_DEPENDENT_PLACEHOLDER_LIST #endif @@ -530,7 +517,7 @@ u8 *GetExpandedPlaceholder(u32 id) }; if (id >= ARRAY_COUNT(funcs)) - return gExpandedPlaceholder_Empty; + return (u8 *) gExpandedPlaceholder_Empty; else return funcs[id](); } -- cgit v1.2.3 From d2b87517b156ec037891b2636d68a27d0d9b261b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 18:40:52 -0400 Subject: sub_805D634 --- asm/field_map_obj.s | 173 ---------------------------------------------------- src/field_map_obj.c | 65 +++++++++++++++++++- 2 files changed, 64 insertions(+), 174 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index cda87b2c5..d9ac3249a 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805D634 -sub_805D634: @ 805D634 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D650 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D654 @ =sub_805D658 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D650: .4byte gMapObjects -_0805D654: .4byte sub_805D658 - thumb_func_end sub_805D634 - - thumb_func_start sub_805D658 -sub_805D658: @ 805D658 - push {r4,lr} - ldr r3, _0805D674 @ =gUnknown_083752F8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D674: .4byte gUnknown_083752F8 - thumb_func_end sub_805D658 - - thumb_func_start sub_805D678 -sub_805D678: @ 805D678 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D678 - - thumb_func_start sub_805D68C -sub_805D68C: @ 805D68C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D68C - - thumb_func_start sub_805D6B8 -sub_805D6B8: @ 805D6B8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D6EE - ldr r4, _0805D6F8 @ =gUnknown_0837520C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D6EE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D6F8: .4byte gUnknown_0837520C - thumb_func_end sub_805D6B8 - - thumb_func_start sub_805D6FC -sub_805D6FC: @ 805D6FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D71A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D722 -_0805D71A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D724 -_0805D722: - movs r0, 0 -_0805D724: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D6FC - - thumb_func_start sub_805D72C -sub_805D72C: @ 805D72C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D770 @ =gUnknown_083752C0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x2 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D75C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D75C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D770: .4byte gUnknown_083752C0 - thumb_func_end sub_805D72C - thumb_func_start sub_805D774 sub_805D774: @ 805D774 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index a637d5767..951f3724f 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -42,6 +42,7 @@ extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -2286,7 +2287,69 @@ u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805D634(struct Sprite *sprite); + +u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D634(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D658); +} + +u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752F8[sprite->data1](mapObject, sprite); +} + +u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D68C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D6B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752C0, 2); + direction = sub_805CD60(mapObject, 2); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805D774(struct Sprite *sprite); void sub_805D8B4(struct Sprite *sprite); void sub_805D9F4(struct Sprite *sprite); -- cgit v1.2.3 From b2d1cdc930aed54dbce33630fc7c52d4ab009972 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 18:50:23 -0400 Subject: sub_805D774 --- asm/field_map_obj.s | 173 ---------------------------------------------------- src/field_map_obj.c | 67 +++++++++++++++++++- 2 files changed, 66 insertions(+), 174 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d9ac3249a..2c5e54298 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805D774 -sub_805D774: @ 805D774 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D790 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D794 @ =sub_805D798 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D790: .4byte gMapObjects -_0805D794: .4byte sub_805D798 - thumb_func_end sub_805D774 - - thumb_func_start sub_805D798 -sub_805D798: @ 805D798 - push {r4,lr} - ldr r3, _0805D7B4 @ =gUnknown_0837530C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D7B4: .4byte gUnknown_0837530C - thumb_func_end sub_805D798 - - thumb_func_start sub_805D7B8 -sub_805D7B8: @ 805D7B8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D7B8 - - thumb_func_start sub_805D7CC -sub_805D7CC: @ 805D7CC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D7CC - - thumb_func_start sub_805D7F8 -sub_805D7F8: @ 805D7F8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D82E - ldr r4, _0805D838 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D82E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D838: .4byte gUnknown_0837521C - thumb_func_end sub_805D7F8 - - thumb_func_start sub_805D83C -sub_805D83C: @ 805D83C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D85A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D862 -_0805D85A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D864 -_0805D862: - movs r0, 0 -_0805D864: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D83C - - thumb_func_start sub_805D86C -sub_805D86C: @ 805D86C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D8B0 @ =gUnknown_08375320 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x3 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D89C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D89C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D8B0: .4byte gUnknown_08375320 - thumb_func_end sub_805D86C - thumb_func_start sub_805D8B4 sub_805D8B4: @ 805D8B4 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 951f3724f..83bff1026 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -43,6 +43,7 @@ extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1559,6 +1560,7 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *); extern const s16 gUnknown_0837520C[]; +extern const s16 gUnknown_0837521C[]; extern void sub_8064820(struct Sprite *, s16); u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) @@ -1587,6 +1589,7 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) extern const u8 gUnknown_08375240[4]; extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_083752C0[2]; +extern const u8 gUnknown_08375320[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -2350,7 +2353,69 @@ u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805D774(struct Sprite *sprite); + +u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D774(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D798); +} + +u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837530C[sprite->data1](mapObject, sprite); +} + +u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D7CC(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D7F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375320, 2); + direction = sub_805CD60(mapObject, 3); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805D8B4(struct Sprite *sprite); void sub_805D9F4(struct Sprite *sprite); void sub_805DB34(struct Sprite *sprite); -- cgit v1.2.3 From d35dc5bd698b8e359669ac0e5bc74b2df0e58bd8 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 12:46:28 +0200 Subject: Add strings2.h --- include/menu.h | 4 +- include/strings2.h | 322 +++++++++++++++++++++++++++++++++++++++++++ src/battle_records.c | 4 +- src/calculate_base_damage.c | 2 +- src/clear_save_data_menu.c | 3 +- src/diploma.c | 5 +- src/easy_chat.c | 3 +- src/field_player_avatar.c | 6 +- src/field_region_map.c | 3 +- src/link.c | 3 +- src/mail.c | 3 +- src/menu.c | 4 +- src/mystery_event_menu.c | 8 +- src/naming_screen.c | 5 +- src/option_menu.c | 25 +--- src/pokemon_2.c | 2 +- src/pokemon_size_record.c | 2 +- src/pokemon_summary_screen.c | 13 +- src/record_mixing.c | 3 +- src/save_menu_util.c | 6 +- src/start_menu.c | 12 +- src/trainer_card.c | 13 +- src/wallclock.c | 2 +- 23 files changed, 348 insertions(+), 105 deletions(-) create mode 100644 include/strings2.h diff --git a/include/menu.h b/include/menu.h index 5b0f35a27..cb5efa448 100644 --- a/include/menu.h +++ b/include/menu.h @@ -23,7 +23,7 @@ void MenuZeroFillWindowRect(u8, u8, u8, u8); void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8); void MenuZeroFillScreen(void); void MenuDrawTextWindow(u8, u8, u8, u8); -void sub_8071F40(u8 *); +void sub_8071F40(const u8 *); void sub_8071F60(u8, u8, u8, u8); u16 unref_sub_8071F98(u8, u8); void unref_sub_8071FBC(u16, u8, u8, u8, u8); @@ -55,7 +55,7 @@ u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(u8 *, u8, u16, u8, u8, u32); void MenuPrint_RightAligned(u8 *, u8, u8); void sub_8072B80(u8 *, u8, u8, u8 *); -void sub_8072BD8(u8 *, u8, u8, u16); +void sub_8072BD8(const u8 *, u8, u8, u16); u8 *sub_8072C14(u8 *, s32, u8, u8); u8 *sub_8072C44(u8 *, s32, u8, u8); u8 *sub_8072C74(u8 *, const u8 *, u8, u8); diff --git a/include/strings2.h b/include/strings2.h new file mode 100644 index 000000000..600bb2d31 --- /dev/null +++ b/include/strings2.h @@ -0,0 +1,322 @@ +#ifndef GUARD_STRINGS2_H +#define GUARD_STRINGS2_H + +// ??? +extern const u8 gOtherText_TopSpeed[]; + +// berry_blender +extern const u8 gMultiText_BerryBlenderMaxSpeedRecord[]; +extern const u8 gMultiText_2P3P4P[]; +extern const u8 gMultiText_Saving[]; + +// link +extern const u8 gMultiText_LinkError[]; + +// option_menu +extern const u8 gSystemText_OptionMenu[]; +extern const u8 gSystemText_TextSpeed[]; +extern const u8 gSystemText_BattleScene[]; +extern const u8 gSystemText_BattleStyle[]; +extern const u8 gSystemText_Sound[]; +extern const u8 gSystemText_Frame[]; +extern const u8 gSystemText_Cancel[]; +extern const u8 gSystemText_ButtonMode[]; +extern const u8 gSystemText_Slow[]; +extern const u8 gSystemText_Mid[]; +extern const u8 gSystemText_Fast[]; +extern const u8 gSystemText_On[]; +extern const u8 gSystemText_Off[]; +extern const u8 gSystemText_Shift[]; +extern const u8 gSystemText_Set[]; +extern const u8 gSystemText_Mono[]; +extern const u8 gSystemText_Stereo[]; +extern const u8 gSystemText_Type[]; +extern const u8 gSystemText_Terminator[]; +extern const u8 gSystemText_Normal[]; +extern const u8 gSystemText_LR[]; +extern const u8 gSystemText_LA[]; + +// start_menu +extern const u8 SystemText_Pokedex[]; +extern const u8 SystemText_Pokemon[]; +extern const u8 SystemText_BAG[]; +extern const u8 SystemText_Pokenav[]; +extern const u8 SystemText_Player[]; +extern const u8 SystemText_Save[]; +extern const u8 SystemText_Option[]; +extern const u8 SystemText_Exit[]; +extern const u8 SystemText_Retire[]; +extern const u8 gOtherText_SafariStock[]; + +// mystery_event_menu +extern const u8 gSystemText_LinkStandby[]; +extern const u8 gSystemText_LoadEventPressA[]; +extern const u8 gSystemText_LoadingEvent[]; +extern const u8 gSystemText_DontCutLink[]; +extern const u8 gSystemText_EventLoadSuccess[]; +extern const u8 gSystemText_LoadingError[]; + +// field_region_map +extern const u8 gOtherText_Hoenn[]; + +// field_player_avatar +extern const u8 gOtherText_OhABite[]; +extern const u8 gOtherText_PokeOnHook[]; +extern const u8 gOtherText_NotEvenANibble[]; +extern const u8 gOtherText_ItGotAway[]; + +// trade +extern const u8 gTradeText_WillBeSent[]; +extern const u8 gTradeText_ByeBye[]; +extern const u8 gTradeText_SentOverPoke[]; +extern const u8 gTradeText_TakeGoodCare[]; +extern const u8 TradeText_Cancel[]; +extern const u8 TradeText_ChoosePoke[]; +extern const u8 TradeText_Summary1[]; +extern const u8 TradeText_Trade1[]; +extern const u8 TradeText_CancelTradePrompt[]; +extern const u8 TradeText_PressBToExit[]; +extern const u8 TradeText_Summary2[]; +extern const u8 TradeText_Trade2[]; +extern const u8 TradeText_LinkStandby[]; +extern const u8 TradeText_TradeCancelled[]; +extern const u8 TradeText_OnlyPoke[]; +extern const u8 TradeText_NonTradablePoke[]; +extern const u8 TradeText_WaitingForFriend[]; +extern const u8 TradeText_WantToTrade[]; +extern const u8 gTradeText_TradeOkayPrompt[]; +extern const u8 gOtherText_Terminator2[]; +extern const u8 gOtherText_ControlAndMiscText[]; +extern const u8 gOtherText_FourQuestions[]; + +// easy_chat +extern const u8 gEasyChatGroupName_Pokemon[]; +extern const u8 gEasyChatGroupName_Trainer[]; +extern const u8 gEasyChatGroupName_Status[]; +extern const u8 gEasyChatGroupName_Battle[]; +extern const u8 gEasyChatGroupName_Greetings[]; +extern const u8 gEasyChatGroupName_People[]; +extern const u8 gEasyChatGroupName_Voices[]; +extern const u8 gEasyChatGroupName_Speech[]; +extern const u8 gEasyChatGroupName_Endings[]; +extern const u8 gEasyChatGroupName_Feelings[]; +extern const u8 gEasyChatGroupName_Conditions[]; +extern const u8 gEasyChatGroupName_Actions[]; +extern const u8 gEasyChatGroupName_Lifestyle[]; +extern const u8 gEasyChatGroupName_Hobbies[]; +extern const u8 gEasyChatGroupName_Time[]; +extern const u8 gEasyChatGroupName_Misc[]; +extern const u8 gEasyChatGroupName_Adjectives[]; +extern const u8 gEasyChatGroupName_Events[]; +extern const u8 gEasyChatGroupName_Move1[]; +extern const u8 gEasyChatGroupName_Move2[]; +extern const u8 gEasyChatGroupName_TrendySaying[]; +extern const u8 gEasyChatGroupName_Pokemon2[]; +extern const u8 gOtherText_ThreeQuestions[]; + +// mail +extern const u8 gOtherText_From[]; + +// record_mixing +extern const u8 gOtherText_MixingRecordsWithFriend[]; +extern const u8 gOtherText_MixingComplete[]; + +// trainer_card +extern const u8 gOtherText_TrainersTrainerCard[]; +extern const u8 gOtherText_FirstHOF[]; +extern const u8 gOtherText_LinkCableBattles[]; +extern const u8 gOtherText_BattleTowerWinRecord[]; +extern const u8 gOtherText_ContestRecord[]; +extern const u8 gOtherText_MixingRecord[]; +extern const u8 gOtherText_TradeRecord[]; +extern const u8 gOtherText_Boy[]; +extern const u8 gOtherText_Girl[]; + +// save_menu_util +extern const u8 gOtherText_Player[]; +extern const u8 gOtherText_Badges[]; +extern const u8 gOtherText_Pokedex[]; +extern const u8 gOtherText_PlayTime[]; + +// naming_screen +extern const u8 gOtherText_SentToPC[]; +extern const u8 OtherText_YourName[]; +extern const u8 OtherText_BoxName[]; +extern const u8 OtherText_PokeName[]; + +// pokemon_size_record +extern const u8 gOtherText_Marco[]; + +// roulette +extern const u8 gOtherText_Coins[]; + +// battle_records +extern const u8 gOtherText_BattleResults[]; +extern const u8 gOtherText_WinRecord[]; +extern const u8 gOtherText_WinLoseDraw[]; +extern const u8 gOtherText_SevenDashes[]; +extern const u8 gOtherText_FourDashes[]; +extern const u8 gOtherText_BattleTowerResults[]; +extern const u8 gOtherText_Lv50[]; +extern const u8 gOtherText_Lv100[]; +extern const u8 gOtherText_WinStreak[]; +extern const u8 gOtherText_Current[]; +extern const u8 gOtherText_Record[]; +extern const u8 gOtherText_Prev[]; + +// slot_machine +extern const u8 gOtherText_QuitGamePrompt[]; +extern const u8 gOtherText_MaxCoins[]; +extern const u8 gOtherText_OutOfCoins[]; +extern const u8 gOtherText_DontHaveThreeCoins[]; +extern const u8 gOtherText_ReelTime[]; + +// daycare +extern const u8 DaycareText_GetAlongVeryWell[]; +extern const u8 DaycareText_GetAlong[]; +extern const u8 DaycareText_DontLikeOther[]; +extern const u8 DaycareText_PlayOther[]; +extern const u8 gOtherText_NewLine2[]; +extern const u8 gOtherText_CancelAndLv[]; + +// pokemon_2 +extern const u8 gEggNickname[]; + +// egg_hatch +extern const u8 gOtherText_HatchedFromEgg[]; +extern const u8 gOtherText_NickHatchPrompt[]; + +// learn_move +extern const u8 OtherText_Battle[]; +extern const u8 OtherText_Contest[]; + +// ??? +extern const u8 OtherText_Type[]; +extern const u8 OtherText_PP[]; + +// learn_move +extern const u8 OtherText_Power[]; +extern const u8 OtherText_Accuracy[]; +extern const u8 OtherText_Appeal[]; +extern const u8 OtherText_Jam[]; +extern const u8 gOtherText_TeachWhichMove[]; +extern const u8 gOtherText_TeachSpecificMove[]; +extern const u8 gOtherText_PokeLearnedMove[]; +extern const u8 gOtherText_DeleteOlderMove[]; +extern const u8 gOtherText_StopLearningMove[]; +extern const u8 gOtherText_ForgotMove123[]; +extern const u8 gOtherText_ForgotOrDidNotLearnMove[]; +extern const u8 gOtherText_GiveUpTeachingMove[]; +extern const u8 gOtherText_WhichMoveToForget[]; + +// clear_save_data_menu +extern const u8 gSystemText_ClearAllSaveDataPrompt[]; +extern const u8 gSystemText_ClearingData[]; + +// contest_link_80C2020 +extern const u8 gContestText_AnnounceResults[]; +extern const u8 gContestText_PreliminaryResults[]; +extern const u8 gContestText_Round2Results[]; +extern const u8 gContestText_PokeWon[]; +extern const u8 gOtherText_LinkStandby[]; + +// landmark +extern const u8 gLandmarkName_FlowerShop[]; +extern const u8 gLandmarkName_PetalburgWoods[]; +extern const u8 gLandmarkName_MrBrineysCottage[]; +extern const u8 gLandmarkName_AbandonedShip[]; +extern const u8 gLandmarkName_SeashoreHouse[]; +extern const u8 gLandmarkName_SlateportBeach[]; +extern const u8 gLandmarkName_CyclingRoad[]; +extern const u8 gLandmarkName_NewMauville[]; +extern const u8 gLandmarkName_TrickHouse[]; +extern const u8 gLandmarkName_OldLadysRestShop[]; +extern const u8 gLandmarkName_Desert[]; +extern const u8 gLandmarkName_WinstrateFamily[]; +extern const u8 gLandmarkName_CableCar[]; +extern const u8 gLandmarkName_GlassWorkshop[]; +extern const u8 gLandmarkName_WeatherInstitute[]; +extern const u8 gLandmarkName_MeteorFalls[]; +extern const u8 gLandmarkName_TunnelersRestHouse[]; +extern const u8 gLandmarkName_RusturfTunnel[]; +extern const u8 gLandmarkName_PokemonDayCare[]; +extern const u8 gLandmarkName_SafariZoneEntrance[]; +extern const u8 gLandmarkName_MtPyre[]; +extern const u8 gLandmarkName_ShoalCave[]; +extern const u8 gLandmarkName_SeafloorCavern[]; +extern const u8 gLandmarkName_GraniteCave[]; +extern const u8 gLandmarkName_OceanCurrent[]; +extern const u8 gLandmarkName_LanettesHouse[]; +extern const u8 gLandmarkName_FieryPath[]; +extern const u8 gLandmarkName_JaggedPass[]; +extern const u8 gLandmarkName_SkyPillar[]; +extern const u8 gLandmarkName_BerryMastersHouse[]; +extern const u8 gLandmarkName_IslandCave[]; +extern const u8 gLandmarkName_DesertRuins[]; +extern const u8 gLandmarkName_ScorchedSlab[]; +extern const u8 gLandmarkName_AncientTomb[]; +extern const u8 gLandmarkName_SealedChamber[]; +extern const u8 gLandmarkName_FossilManiacsHouse[]; +extern const u8 gLandmarkName_HuntersHouse[]; + +// pokemon_summary_screen +extern const u8 gOtherText_Terminator4[]; +extern const u8 gOtherText_Nature[]; +extern const u8 gOtherText_Comma[]; +extern const u8 gOtherText_Met[]; +extern const u8 gOtherText_Egg2[]; +extern const u8 gOtherText_ObtainedInTrade[]; +extern const u8 gOtherText_FatefulEncounter[]; +extern const u8 gOtherText_Met2[]; +extern const u8 gOtherText_EggDayCare[]; +extern const u8 gOtherText_EggNicePlace[]; +extern const u8 gOtherText_EggObtainedInTrade[]; +extern const u8 gOtherText_EggHotSprings[]; + +// evolution_scene, trade +extern const u8 gOtherText_LinkStandby2[]; + +// evolution_scene +extern const u8 gOtherText_YesNoAndPlayer[]; + +// diploma +extern const u8 gOtherText_HoennDex[]; +extern const u8 gOtherText_NationalDex[]; +extern const u8 gOtherText_DiplomaCertificationGameFreak[]; + +// cable_club +extern const u8 gOtherText_PLink[]; + +// berry_blender +extern const u8 gOtherText_YesNoTerminating[]; +extern const u8 gOtherText_LinkNotFound[]; +extern const u8 gOtherText_BlenderChooseBerry[]; +extern const u8 gOtherText_PokeBlockMade[]; +extern const u8 gOtherText_PressAToStart[]; +extern const u8 gOtherText_PleaseWait[]; +extern const u8 gOtherText_LinkStandby3[]; +extern const u8 gOtherText_BlendAnotherBerryPrompt[]; +extern const u8 gOtherText_OutOfBerries[]; +extern const u8 gOtherText_CaseIsFull[]; +extern const u8 gOtherText_NoBerriesForBlend[]; +extern const u8 gOtherText_OtherCaseIsFull[]; +extern const u8 gOtherText_ResultsOfBlending[]; +extern const u8 gOtherText_Berry[]; +extern const u8 gOtherText_RequiredTime[]; +extern const u8 gOtherText_Min[]; +extern const u8 gOtherText_Sec[]; +extern const u8 gOtherText_MaxSpeed[]; +extern const u8 gOtherText_RPM[]; +extern const u8 gOtherText_Ranking[]; +extern const u8 gOtherText_BlockLevelIs[]; +extern const u8 gOtherText_BlockFeelIs[]; +extern const u8 gOtherText_Period[]; + +// reset_rtc_screen +extern const u8 gOtherText_Day[]; +extern const u8 gOtherText_OK[]; + +// wallclock +extern const u8 gOtherText_CorrectTimePrompt[]; + +#endif // GUARD_STRINGS2_H diff --git a/src/battle_records.c b/src/battle_records.c index 3290bbebe..35fd3284b 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -1,8 +1,6 @@ #include "global.h" #include "menu.h" - -extern const u8 gOtherText_BattleResults[]; -extern const u8 gOtherText_WinLoseDraw[]; +#include "strings2.h" void PrintLinkBattleWinsLossesDraws(void *); diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 293e2f24d..45dc59094 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -11,6 +11,7 @@ #include "species.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "text.h" extern u8 gPlayerPartyCount; @@ -34,7 +35,6 @@ extern u16 gTrainerBattleOpponent; extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; -extern u8 gEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; extern u8 gSpeciesNames[][11]; diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index 21cd643ef..2d0e3a551 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -7,10 +7,9 @@ #include "songs.h" #include "sound.h" #include "sprite.h" +#include "strings2.h" #include "task.h" -extern u8 gSystemText_ClearAllSaveDataPrompt[]; -extern u8 gSystemText_ClearingData[]; extern const struct MenuAction gMenuYesNoItems[]; static void VBlankCB_ClearSaveDataScreen(void); diff --git a/src/diploma.c b/src/diploma.c index c32b72a70..80adac8f7 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -7,13 +7,10 @@ #include "rom4.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" -extern u8 gOtherText_NationalDex[]; -extern u8 gOtherText_HoennDex[]; -extern u8 gOtherText_DiplomaCertificationGameFreak[]; - static void VBlankCB(void); static void MainCB2(void); static void Task_DiplomaFadeIn(u8); diff --git a/src/easy_chat.c b/src/easy_chat.c index 86719a2ae..678b25a0e 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -7,6 +7,7 @@ #include "rng.h" #include "string_util.h" #include "strings.h" +#include "strings2.h" #include "text.h" u8 sub_80EB37C(u16); @@ -28,8 +29,6 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; -extern const u8 gOtherText_ThreeQuestions[]; - #ifdef NONMATCHING u8 *sub_80EB3FC(u8 *dst, u16 word) { int group, wordIndex; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 6a0fe1dce..c1b892f15 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -16,14 +16,10 @@ #include "script.h" #include "songs.h" #include "sound.h" +#include "strings2.h" #include "task.h" #include "wild_encounter.h" -extern u8 gOtherText_OhABite[]; -extern u8 gOtherText_PokeOnHook[]; -extern u8 gOtherText_NotEvenANibble[]; -extern u8 gOtherText_ItGotAway[]; - extern u32 gUnknown_0202FF84[]; //Functions diff --git a/src/field_region_map.c b/src/field_region_map.c index ec630ad00..66e3d968c 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -5,6 +5,7 @@ #include "palette.h" #include "sprite.h" #include "text.h" +#include "strings2.h" extern void sub_80FA8EC(u32, u8); extern void sub_80FAB10(void); @@ -29,8 +30,6 @@ struct UnkStruct extern struct UnkStruct unk_2000000; -extern u8 gOtherText_Hoenn[]; - void CB2_FieldInitRegionMap(void); void CB2_FieldRegionMap(void); void VBlankCB_FieldRegionMap(void); diff --git a/src/link.c b/src/link.c index 224c0ae1c..7cf2fc611 100644 --- a/src/link.c +++ b/src/link.c @@ -10,6 +10,7 @@ #include "songs.h" #include "sound.h" #include "sprite.h" +#include "strings2.h" #include "task.h" #include "text.h" @@ -39,8 +40,6 @@ extern u16 gScriptItemId; extern u16 word_3004858; -extern u8 gMultiText_LinkError[]; - static void InitLinkTestBG(u8, u8, u8, u8); void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); diff --git a/src/mail.c b/src/mail.c index 807864332..4ec107011 100644 --- a/src/mail.c +++ b/src/mail.c @@ -8,6 +8,7 @@ #include "rom4.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" @@ -70,8 +71,6 @@ extern u16 gUnknown_083E562C[][2]; extern struct MailLayout gUnknown_083E5730[]; extern struct MailLayout gUnknown_083E57A4[]; -extern u8 gOtherText_From[]; - static u8 sub_80F8A28(void); static void sub_80F8D50(void); static void sub_80F8DA0(void); diff --git a/src/menu.c b/src/menu.c index f9b9dbf0b..61eaebb6f 100644 --- a/src/menu.c +++ b/src/menu.c @@ -173,7 +173,7 @@ void MenuDrawTextWindow(u8 left, u8 top, u8 right, u8 bottom) DrawTextWindow(gMenuWindowPtr, left, top, right, bottom); } -void sub_8071F40(u8 *str) +void sub_8071F40(const u8 *str) { MenuDrawTextWindow(2, 14, 28, 19); MenuPrint(str, 3, 15); @@ -637,7 +637,7 @@ void sub_8072B80(u8 *a1, u8 a2, u8 a3, u8 *a4) sub_8003460(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3); } -void sub_8072BD8(u8 *a1, u8 a2, u8 a3, u16 a4) +void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4) { sub_8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4); } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 97deb348c..e219354ff 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -10,19 +10,13 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" extern u8 unk_2000000[]; extern u8 gUnknown_02039338; -extern u8 gSystemText_LinkStandby[]; -extern u8 gSystemText_LoadEventPressA[]; -extern u8 gSystemText_LoadingEvent[]; -extern u8 gSystemText_DontCutLink[]; -extern u8 gSystemText_EventLoadSuccess[]; -extern u8 gSystemText_LoadingError[]; - static void VBlankCB(void); static bool8 CheckLanguageMatch(void); static bool8 GetEventLoadMessage(u8 *dest, u32 status); diff --git a/src/naming_screen.c b/src/naming_screen.c index b14c690e2..8c90686ee 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -8,6 +8,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" #include "trig.h" @@ -48,7 +49,6 @@ extern const struct SpriteTemplate gSpriteTemplate_83CE670; extern const struct SpriteTemplate gSpriteTemplate_83CE688; extern const struct SpriteSheet gUnknown_083CE6A0[]; extern const struct SpritePalette gUnknown_083CE708[]; -extern const u8 gOtherText_SentToPC[]; extern const u8 gNamingScreenMenu_Gfx[]; extern u16 gMenuMessageBoxContentTileOffset; extern const u16 gNamingScreenPalettes[]; @@ -57,9 +57,6 @@ extern const u16 gUnknown_083CEBF8[]; extern const u16 gUnknown_083CF0A8[]; extern const u16 gUnknown_08E86258[]; extern const u8 gSpeciesNames[][11]; -extern const u8 OtherText_YourName[]; -extern const u8 OtherText_BoxName[]; -extern const u8 OtherText_PokeName[]; static void C2_NamingScreen(void); static void sub_80B5AA0(void); diff --git a/src/option_menu.c b/src/option_menu.c index 613012972..40870e3ce 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -4,6 +4,7 @@ #include "menu.h" #include "palette.h" #include "sprite.h" +#include "strings2.h" #include "task.h" extern void SetPokemonCryStereo(u32 val); @@ -33,28 +34,6 @@ enum { extern u8 gUnknown_0839F63C[]; extern u8 gUnknown_0839F5FC[]; //palette -extern u8 gSystemText_Normal[]; -extern u8 gSystemText_LR[]; -extern u8 gSystemText_LA[]; -extern u8 gSystemText_Terminator[]; -extern u8 gSystemText_Type[]; -extern u8 gSystemText_Mono[]; -extern u8 gSystemText_Stereo[]; -extern u8 gSystemText_Shift[]; -extern u8 gSystemText_Set[]; -extern u8 gSystemText_On[]; -extern u8 gSystemText_Off[]; -extern u8 gSystemText_Slow[]; -extern u8 gSystemText_Mid[]; -extern u8 gSystemText_Fast[]; -extern u8 gSystemText_OptionMenu[]; -extern u8 gSystemText_TextSpeed[]; -extern u8 gSystemText_BattleScene[]; -extern u8 gSystemText_BattleStyle[]; -extern u8 gSystemText_Sound[]; -extern u8 gSystemText_ButtonMode[]; -extern u8 gSystemText_Frame[]; -extern u8 gSystemText_Cancel[]; static void Task_OptionMenuFadeIn(u8 taskId); static void Task_OptionMenuProcessInput(u8 taskId); @@ -323,7 +302,7 @@ static void HighlightOptionMenuItem(u8 index) REG_WIN1V = WIN_RANGE_(index * 16 + 40, index * 16 + 56); } -static void DrawOptionMenuChoice(u8 *text, u8 x, u8 y, u8 style) +static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style) { u8 dst[16]; u16 i; diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 3be11f453..54efc0fc8 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -8,6 +8,7 @@ #include "sprite.h" #include "string_util.h" #include "text.h" +#include "strings2.h" extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[6]; @@ -34,7 +35,6 @@ extern u16 gTrainerBattleOpponent; extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; -extern u8 gEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; extern u8 gSpeciesNames[][11]; diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 6540858c1..3406a818b 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -3,6 +3,7 @@ #include "event_data.h" #include "species.h" #include "string_util.h" +#include "strings2.h" #include "text.h" extern u16 SpeciesToNationalPokedexNum(u16); @@ -15,7 +16,6 @@ struct UnknownStruct u16 unk4; }; -extern u8 gOtherText_Marco[]; extern u16 gScriptResult; extern u8 gSpeciesNames[][11]; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 5f96512f0..56a56e455 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -4,22 +4,11 @@ #include "menu.h" #include "pokemon.h" #include "string_util.h" +#include "strings2.h" extern struct Pokemon *unk_2018000; extern u8 *(gNatureNames[]); -extern const u8 gOtherText_Terminator4[]; -extern const u8 gOtherText_Nature[]; - -extern const u8 gOtherText_Met[]; -extern const u8 gOtherText_Egg2[]; -extern const u8 gOtherText_ObtainedInTrade[]; -extern const u8 gOtherText_FatefulEncounter[]; -extern const u8 gOtherText_Met2[]; -extern const u8 gOtherText_EggDayCare[]; -extern const u8 gOtherText_EggNicePlace[]; -extern const u8 gOtherText_EggObtainedInTrade[]; -extern const u8 gOtherText_EggHotSprings[]; u8 *sub_80A1E9C(u8 *dest, u8 *src, u8); u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon); diff --git a/src/record_mixing.c b/src/record_mixing.c index 58722010f..1ce088586 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -10,6 +10,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings2.h" #include "task.h" extern void *recordMixingSecretBases; @@ -28,8 +29,6 @@ extern u16 gSpecialVar_0x8005; extern u32 gUnknown_03005D2C; extern u8 gUnknown_03000718; extern u8 gUnknown_0300071C[]; -extern u8 gOtherText_MixingComplete[]; -extern u8 gOtherText_MixingRecordsWithFriend[]; extern bool8 gReceivedRemoteLinkPlayers; #define BUFFER_CHUNK_SIZE 200 diff --git a/src/save_menu_util.c b/src/save_menu_util.c index 7899fabb1..8910bb300 100644 --- a/src/save_menu_util.c +++ b/src/save_menu_util.c @@ -5,11 +5,7 @@ #include "menu.h" #include "pokedex.h" #include "string_util.h" - -extern u8 gOtherText_Player[]; -extern u8 gOtherText_Badges[]; -extern u8 gOtherText_Pokedex[]; -extern u8 gOtherText_PlayTime[]; +#include "strings2.h" void HandleDrawSaveWindowInfo(s16 left, s16 top) { diff --git a/src/start_menu.c b/src/start_menu.c index c95c8b3f0..fb9013f7c 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -22,6 +22,7 @@ #include "sprite.h" #include "string_util.h" #include "strings.h" +#include "strings2.h" #include "task.h" #include "trainer_card.h" @@ -60,17 +61,6 @@ extern u8 gSaveText_DontTurnOff[]; extern u8 gSaveText_ThereIsAlreadyAFile[]; extern u8 gSaveText_ThereIsADifferentFile[]; extern u8 gSaveText_WouldYouLikeToSave[]; -extern u8 gOtherText_SafariStock[]; -extern u8 SystemText_Pokedex[]; -extern u8 SystemText_Pokemon[]; -extern u8 SystemText_BAG[]; -extern u8 SystemText_Pokenav[]; -extern u8 SystemText_Player[]; -extern u8 SystemText_Save[]; -extern u8 SystemText_Option[]; -extern u8 SystemText_Exit[]; -extern u8 SystemText_Retire[]; -extern u8 SystemText_Player[]; static u8 StartMenu_PokedexCallback(void); static u8 StartMenu_PokemonCallback(void); diff --git a/src/trainer_card.c b/src/trainer_card.c index e6ed79c15..ef3a2d857 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -14,6 +14,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" typedef void (*Callback)(void); @@ -64,16 +65,6 @@ extern u16 gUnknown_083B5F4C[]; extern u16 gUnknown_08E8CFC0[]; extern u16 gUnknown_08E8D9C0[]; -extern u8 gOtherText_TrainersTrainerCard[]; -extern u8 gOtherText_FirstHOF[]; -extern u8 gOtherText_LinkCableBattles[]; -extern u8 gOtherText_BattleTowerWinRecord[]; -extern u8 gOtherText_ContestRecord[]; -extern u8 gOtherText_MixingRecord[]; -extern u8 gOtherText_TradeRecord[]; -extern u8 gOtherText_Boy[]; -extern u8 gOtherText_Girl[]; - extern bool8 (*const gUnknown_083B5EBC[])(struct Task *); extern bool8 (*const gUnknown_083B5ED8[])(struct Task *); @@ -1831,7 +1822,7 @@ static void TrainerCard_Back_PrintPokemonTrades(void) void unref_sub_8094588(u16 left, u16 top) { - u8 *text = gOtherText_Boy; + const u8 *text = gOtherText_Boy; if (gSaveBlock2.playerGender == FEMALE) { diff --git a/src/wallclock.c b/src/wallclock.c index 0f3665c65..e8f6dbf1d 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -8,6 +8,7 @@ #include "rtc.h" #include "songs.h" #include "sound.h" +#include "strings2.h" #include "task.h" #include "trig.h" @@ -15,7 +16,6 @@ extern u16 gSpecialVar_0x8004; extern u8 gMiscClock_Gfx[]; extern u8 gUnknown_08E95774[]; extern u8 gUnknown_08E954B0[]; -extern u8 gOtherText_CorrectTimePrompt[]; extern const struct MenuAction gMenuYesNoItems[]; extern u16 gMiscClockMale_Pal[]; extern u16 gMiscClockFemale_Pal[]; -- cgit v1.2.3 From 6f2cd1e2da53cb0c4a4f4465d8ad72532050174d Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 13:25:26 +0200 Subject: Add data2 header --- include/data2.h | 46 +++++++++++++++++++++++++++++++++++++++ include/script_pokemon_80C4.h | 5 ----- src/battle_2.c | 28 +++++------------------- src/battle_ai.c | 3 +-- src/battle_setup.c | 4 ++-- src/calculate_base_damage.c | 6 +---- src/contest_painting.c | 13 +---------- src/credits.c | 14 +++--------- src/decompress.c | 5 +---- src/easy_chat.c | 3 +-- src/intro.c | 20 ++++------------- src/item_use.c | 3 +-- src/main_menu.c | 14 +++--------- src/matsuda_debug_menu.c | 2 +- src/mori_debug_menu.c | 3 +-- src/naming_screen.c | 2 +- src/party_menu.c | 2 +- src/pokedex.c | 1 - src/pokemon_1.c | 2 +- src/pokemon_2.c | 6 +---- src/pokemon_3.c | 6 +---- src/pokemon_size_record.c | 2 +- src/pokenav.c | 3 +-- src/rom3.c | 1 - src/rom_8077ABC.c | 14 +----------- src/scrcmd.c | 4 +--- src/script_pokemon_util_80C4BF0.c | 7 ++---- src/script_pokemon_util_80F99CC.c | 3 +-- src/smokescreen.c | 4 +--- src/starter_choose.c | 13 ++--------- src/tv.c | 4 +--- 31 files changed, 87 insertions(+), 156 deletions(-) create mode 100644 include/data2.h diff --git a/include/data2.h b/include/data2.h new file mode 100644 index 000000000..987c7cb2e --- /dev/null +++ b/include/data2.h @@ -0,0 +1,46 @@ +#ifndef GUARD_DATA2_H +#define GUARD_DATA2_H + +#include "sprite.h" + +struct UnknownStructD2 { + u32 unk0; + u32 unk4; + u32 unk8; +}; + +struct MonCoords +{ + // This would use a bitfield, but sub_8079F44 + // uses it as a u8 and casting won't match. + u8 coords; // u8 x:4, y:4; + u8 y_offset; +}; + +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; +extern const union AnimCmd *const gSpriteAnimTable_81E7C64[]; +extern struct MonCoords gMonFrontPicCoords[]; +extern struct MonCoords gMonBackPicCoords[]; +extern struct SpriteSheet gMonFrontPicTable[]; +extern struct SpriteSheet gMonBackPicTable[]; +extern const struct SpritePalette gMonPaletteTable[]; +extern const struct SpritePalette gMonShinyPaletteTable[]; +extern const union AnimCmd *const *const gUnknown_081EC2A4[]; +extern const union AnimCmd *const *const gUnknown_081ECACC[]; +extern struct MonCoords gTrainerBackPicCoords[]; +extern struct SpriteSheet gTrainerBackPicTable[]; +extern struct SpritePalette gTrainerBackPicPaletteTable[]; +extern u8 gEnemyMonElevation[]; +extern const u8 gTrainerClassNames[][13]; +extern const struct Trainer gTrainers[]; +extern u8 gSpeciesNames[][11]; +extern u8 gMoveNames[][13]; +extern const struct UnknownStructD2 gUnknown_081F9674; +extern const u8 gUnknown_081F96C8[]; +extern struct SpriteSheet gUnknown_081FAEA4; +extern struct SpritePalette gUnknown_081FAEAC; +extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; +extern void *gUnknown_081FAF4C[]; +extern struct BattleMove gBattleMoves[]; + +#endif // GUARD_DATA2_H diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h index 6d4e689b5..629980a2d 100644 --- a/include/script_pokemon_80C4.h +++ b/include/script_pokemon_80C4.h @@ -1,11 +1,6 @@ #ifndef GUARD_SCRIPTPOKE80C4_H #define GUARD_SCRIPTPOKE80C4_H -struct MonCoords -{ - u8 x, y; -}; - void sub_80C5190(u8); void sub_80C5580(void); void SetBattleTowerPlayerParty(void); diff --git a/src/battle_2.c b/src/battle_2.c index f2ce737d6..709fc5ad3 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "battle.h" +#include "data2.h" #include "main.h" #include "text.h" #include "palette.h" @@ -17,18 +18,6 @@ #include "trig.h" #include "abilities.h" -struct MonCoords -{ - u8 x, y; -}; - -struct UnknownStruct5 -{ - u32 unk0; - u32 unk4; - u32 unk8; -}; - struct UnknownStruct6 { u16 unk0[0xA0]; @@ -138,14 +127,7 @@ struct UnknownStruct13 u8 filler4[12]; }; -extern const struct UnknownStruct5 gUnknown_081F9674; -extern const u8 gUnknown_081F96C8[]; -extern void *const gUnknown_081FAF4C[]; extern const u16 gUnknown_08D004E0[]; -extern const struct Trainer gTrainers[]; -extern const u8 gSpeciesNames[][11]; -extern const struct BattleMove gBattleMoves[]; -extern const struct MonCoords gMonFrontPicCoords[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; extern const struct BaseStats gBaseStats[]; extern const u32 gBitTable[]; @@ -1524,19 +1506,19 @@ void sub_8010384(struct Sprite *sprite) else unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters - yOffset = gMonFrontPicCoords[unownSpecies].y; + yOffset = gMonFrontPicCoords[unownSpecies].y_offset; } else if (species == SPECIES_CASTFORM) { - yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y; + yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y_offset; } else if (species > NUM_SPECIES) { - yOffset = gMonFrontPicCoords[SPECIES_NONE].y; + yOffset = gMonFrontPicCoords[SPECIES_NONE].y_offset; } else { - yOffset = gMonFrontPicCoords[species].y; + yOffset = gMonFrontPicCoords[species].y_offset; } sprite->data3 = 8 - yOffset / 8; diff --git a/src/battle_ai.c b/src/battle_ai.c index 9bbaf908e..f10c6a013 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -4,6 +4,7 @@ #include "asm.h" #include "battle.h" #include "battle_move_effects.h" +#include "data2.h" #include "item.h" #include "moves.h" #include "pokemon.h" @@ -36,8 +37,6 @@ extern u8 gCritMultiplier; extern u16 gTrainerBattleOpponent; extern u32 gBitTable[]; extern u8 *BattleAIs[]; -extern struct Trainer gTrainers[]; -extern struct BattleMove gBattleMoves[]; extern struct BaseStats gBaseStats[]; /* diff --git a/src/battle_setup.c b/src/battle_setup.c index 61b9bb1e9..a70157a43 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -2,6 +2,7 @@ #include "battle_setup.h" #include "asm.h" #include "battle.h" +#include "data2.h" #include "event_data.h" #include "field_control_avatar.h" #include "field_map_obj_helpers.h" @@ -34,7 +35,6 @@ extern void (*gUnknown_0300485C)(void); extern struct Pokemon gEnemyParty[]; extern struct Pokemon gPlayerParty[]; -extern struct Trainer gTrainers[]; EWRAM_DATA u16 gTrainerBattleMode = 0; EWRAM_DATA u16 gTrainerBattleOpponent = 0; @@ -752,7 +752,7 @@ u8 GetWildBattleTransition(void) u8 GetTrainerBattleTransition(void) { - struct Trainer *trainer; + const struct Trainer *trainer; u8 minPartyCount; u8 flashVar; u8 level; diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 45dc59094..7868a2c67 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -2,6 +2,7 @@ #include "abilities.h" #include "battle.h" #include "berry.h" +#include "data2.h" #include "event_data.h" #include "hold_effects.h" #include "item.h" @@ -37,12 +38,7 @@ extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; -extern u8 gSpeciesNames[][11]; -extern struct BattleMove gBattleMoves[]; extern struct SpriteTemplate gSpriteTemplate_8208288[]; -extern union AmimCmd *gSpriteAnimTable_81E7C64[]; -extern union AnimCmd **gUnknown_081EC2A4[]; -extern union AnimCmd **gUnknown_081ECACC[]; extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; extern u8 gSecretBaseTrainerClasses[]; diff --git a/src/contest_painting.c b/src/contest_painting.c index c970deaf2..d7bacb905 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -1,6 +1,7 @@ #include "global.h" #include "contest_painting.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "main.h" #include "menu.h" @@ -24,11 +25,6 @@ extern struct Unk2015E00 unk_2015e00; extern struct Unk3000756 gUnknown_03000756; extern struct Unk03005E20 gUnknown_03005E20; extern struct ContestEntry *gUnknown_03005E8C; -extern const struct SpriteSheet gMonFrontPicTable[]; -extern const struct MonCoords gMonFrontPicCoords[]; -extern const struct SpriteSheet gMonBackPicTable[]; -extern const struct MonCoords gMonBackPicCoords[]; -extern void *gUnknown_081FAF4C[]; static const u16 gPictureFramePalettes[][16] = { @@ -345,13 +341,6 @@ static void VBlankCB_ContestPainting(void) TransferPlttBuffer(); } - -struct MonCoords -{ - u8 x; - u8 y; -}; - #ifdef NONMATCHING static void sub_8106AC4(u16 species, u8 arg1) { diff --git a/src/credits.c b/src/credits.c index ca5553c2e..de1d52361 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "m4a.h" @@ -20,11 +21,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52"); asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); -struct MonCoords -{ - u8 x, y; -}; - extern void *species_and_otid_get_pal(u32, u16, u16); enum @@ -173,10 +169,6 @@ extern s16 gUnknown_0203935C; extern u8 gReservedSpritePaletteCount; -// data/data2 -extern struct MonCoords gMonFrontPicCoords[]; -extern struct SpriteSheet gMonFrontPicTable[]; - // data/starter_choose extern u16 gBirchBagGrassPal[32]; extern u8 gBirchGrassTilemap[]; @@ -1520,8 +1512,8 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) LoadSpecialPokePic( &gMonFrontPicTable[species], - gMonFrontPicCoords[species].x, - gMonFrontPicCoords[species].y, + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[position], species, diff --git a/src/decompress.c b/src/decompress.c index 12be8a055..37aa1e8d5 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -1,15 +1,12 @@ #include "global.h" #include "decompress.h" #include "asm.h" +#include "data2.h" #include "species.h" #include "text.h" #define WRAM 0x02000000 -extern struct SpriteSheet gMonFrontPicTable[]; -extern struct SpriteSheet gMonBackPicTable[]; -extern void *gUnknown_081FAF4C[]; - void sub_800D238(const void *src, void *dest) { LZ77UnCompWram(src, dest); diff --git a/src/easy_chat.c b/src/easy_chat.c index 678b25a0e..b21b00368 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1,6 +1,7 @@ #include "global.h" #include "easy_chat.h" #include "asm.h" +#include "data2.h" #include "event_data.h" #include "field_message_box.h" #include "pokedex.h" @@ -22,8 +23,6 @@ static u16 sub_80EB9D8(void); static u16 sub_80EB960(void); u16 sub_80EB72C(u16); -extern const u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; extern void *gEasyChatGroupWords[]; extern const u8 gEasyChatGroupSizes[]; diff --git a/src/intro.c b/src/intro.c index 2a62892ba..ad2f6213c 100644 --- a/src/intro.c +++ b/src/intro.c @@ -2,6 +2,7 @@ #include "gba/m4a_internal.h" #include "intro.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "libgncmultiboot.h" #include "link.h" @@ -21,12 +22,6 @@ extern void *species_and_otid_get_pal(/*TODO: arg types*/); extern void sub_8143680(int, u8); -struct MonCoords -{ - u8 x, y; -}; - - extern struct SpriteTemplate gUnknown_02024E8C; extern u16 gUnknown_02039318; extern u16 gUnknown_0203931A; @@ -36,13 +31,6 @@ extern u32 gIntroFrameCounter; extern struct GcmbStruct gMultibootProgramStruct; extern u16 gSaveFileStatus; extern u8 gReservedSpritePaletteCount; -extern struct SpriteSheet gMonFrontPicTable[]; -extern struct MonCoords gMonFrontPicCoords[]; -extern struct SpriteSheet gMonBackPicTable[]; -extern struct MonCoords gMonBackPicCoords[]; -extern struct SpriteSheet gTrainerBackPicTable[]; -extern struct MonCoords gTrainerBackPicCoords[]; -extern struct SpritePalette gTrainerBackPicPaletteTable[]; extern const u8 gInterfaceGfx_PokeBall[]; extern const u16 gInterfacePal_PokeBall[]; extern const struct SpriteSheet gIntro2BrendanSpriteSheet; @@ -1797,9 +1785,9 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front) u8 spriteId; if (front) - LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); + LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); else - LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].x, gMonBackPicCoords[species].y, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); + LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); pal = species_and_otid_get_pal(species, 0, 0xFFFF); LoadCompressedPalette(pal, 0x100 + d * 0x10, 0x20); sub_8143648(d, d); @@ -1813,7 +1801,7 @@ static u8 sub_813CFA8(u16 a, u16 b, u16 c, u16 d) { u8 spriteId; - DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].x, gTrainerBackPicCoords[a].y, (void *)0x2000000, gUnknown_0840B5A0[d], a); + DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].coords, gTrainerBackPicCoords[a].y_offset, (void *)0x2000000, gUnknown_0840B5A0[d], a); LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + d * 0x10, 0x20); sub_8143680(d, d); gUnknown_02024E8C.anims = gUnknown_0840B064; diff --git a/src/item_use.c b/src/item_use.c index a310df2ce..b65c24c31 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -3,6 +3,7 @@ #include "battle.h" #include "berry.h" #include "coins.h" +#include "data2.h" #include "event_data.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" @@ -30,8 +31,6 @@ extern void (* gUnknown_03005D00)(u8); extern void (* gUnknown_0300485C)(void); extern void (* gUnknown_03004AE4)(u8); -extern u8 gMoveNames[][13]; - extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_02024E6C; diff --git a/src/main_menu.c b/src/main_menu.c index e5ab0c822..b2d08698b 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1,6 +1,7 @@ #include "global.h" #include "main_menu.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "menu.h" @@ -22,11 +23,6 @@ #define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24)) -struct MonCoords -{ - u8 x, y; -}; - extern struct PaletteFadeControl gPaletteFade; extern u16 gSaveFileStatus; @@ -43,11 +39,7 @@ extern u8 gBirchSpeech_SoItsPlayer[]; extern u8 gBirchSpeech_AhOkayYouArePlayer[]; extern u8 gBirchSpeech_AreYouReady[]; -extern const struct MonCoords gMonFrontPicCoords[]; -extern const struct SpriteSheet gMonFrontPicTable[]; -extern const struct SpritePalette gMonPaletteTable[]; extern struct SpriteTemplate gUnknown_02024E8C; -extern void * const gUnknown_081FAF4C[]; extern u16 gUnknown_081E795C[]; extern const struct MenuAction gUnknown_081E79B0[]; extern const struct MenuAction gMalePresetNames[]; @@ -1400,8 +1392,8 @@ u8 CreateAzurillSprite(u8 x, u8 y) { DecompressPicFromTable_2( &gMonFrontPicTable[SPECIES_AZURILL], - gMonFrontPicCoords[SPECIES_AZURILL].x, - gMonFrontPicCoords[SPECIES_AZURILL].y, + gMonFrontPicCoords[SPECIES_AZURILL].coords, + gMonFrontPicCoords[SPECIES_AZURILL].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], SPECIES_AZURILL); diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index d2ca754bb..588d32795 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -2,6 +2,7 @@ #include "matsuda_debug_menu.h" #include "asm.h" #include "contest.h" +#include "data2.h" #include "link.h" #include "main.h" #include "menu.h" @@ -55,7 +56,6 @@ extern struct SpriteTemplate gSpriteTemplate_83C92CC; extern void (*gUnknown_083C92E4[][2])(struct Sprite *, s8); extern u32 gUnknown_083C9400[2]; -extern u8 gMoveNames[][13]; extern u8 gMatsudaDebugMenu_UnknownByteArray[]; extern u8* gMatsudaDebugMenuTextList1[]; diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index fd0ad773b..18c65b7e6 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -1,6 +1,7 @@ #include "global.h" #include "mori_debug_menu.h" #include "asm.h" +#include "data2.h" #include "link.h" #include "main.h" #include "menu.h" @@ -20,8 +21,6 @@ extern u8 gUnknown_0839B257[]; extern const struct MenuAction gMoriDebugMenuActions[]; -extern u8 gSpeciesNames[][11]; - void unref_sub_8083CF0(void) { int i; diff --git a/src/naming_screen.c b/src/naming_screen.c index 8c90686ee..53ee5ff19 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1,6 +1,7 @@ #include "global.h" #include "naming_screen.h" #include "asm.h" +#include "data2.h" #include "main.h" #include "menu.h" #include "palette.h" @@ -56,7 +57,6 @@ extern const u16 gUnknown_083CE748[]; extern const u16 gUnknown_083CEBF8[]; extern const u16 gUnknown_083CF0A8[]; extern const u16 gUnknown_08E86258[]; -extern const u8 gSpeciesNames[][11]; static void C2_NamingScreen(void); static void sub_80B5AA0(void); diff --git a/src/party_menu.c b/src/party_menu.c index 82f234ae4..ee6bcf2a9 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "menu.h" #include "pokemon.h" #include "songs.h" @@ -87,7 +88,6 @@ extern const u16 gUnknown_08376504[]; extern void (*const gUnknown_08376B54[])(u8); extern const u8 *const gUnknown_08376D04[DATA_COUNT]; extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; -extern const u8 gMoveNames[][13]; extern const u8 *const gItemEffectTable[]; extern bool8 IsDoubleBattle(void); diff --git a/src/pokedex.c b/src/pokedex.c index 057fa2d49..467782d84 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -103,7 +103,6 @@ extern u16 NationalToHoennOrder(u16); extern u16 gPokedexOrder_Alphabetical[]; extern u16 gPokedexOrder_Weight[]; extern u16 gPokedexOrder_Height[]; -extern u8 gSpeciesNames[][11]; u16 NationalPokedexNumToSpecies(u16); diff --git a/src/pokemon_1.c b/src/pokemon_1.c index 204fa7b9a..dacbb81c3 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "items.h" #include "main.h" #include "pokemon.h" @@ -25,7 +26,6 @@ extern u8 byte_2024E88; extern u32 gExperienceTables[8][101]; extern struct BaseStats gBaseStats[]; -extern struct BattleMove gBattleMoves[]; extern const u16 *gLevelUpLearnsets[]; void ZeroBoxMonData(struct BoxPokemon *boxMon) diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 54efc0fc8..27f27cf02 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "event_data.h" #include "main.h" #include "pokemon.h" @@ -37,13 +38,8 @@ extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; -extern u8 gSpeciesNames[][11]; -extern struct BattleMove gBattleMoves[]; extern const struct SpriteTemplate gSpriteTemplate_8208288[]; -extern const union AmimCmd *const gSpriteAnimTable_81E7C64[]; //array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.) -extern const union AnimCmd *const *const gUnknown_081EC2A4[]; -extern const union AnimCmd *const *const gUnknown_081ECACC[]; extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; extern u8 gSecretBaseTrainerClasses[]; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 270a52ad5..e6d803f3f 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "battle.h" +#include "data2.h" #include "event_data.h" #include "hold_effects.h" #include "item.h" @@ -74,9 +75,6 @@ extern u8 gEnemyMonIndex; extern u8 gUnknown_02024C0B; extern u8 gUnknown_02024E6C; extern struct SpindaSpot gSpindaSpotGraphics[]; -extern void *gUnknown_081FAF4C[]; -extern u8 gSpeciesNames[][11]; -extern struct Trainer gTrainers[]; extern s8 gNatureStatTable[][5]; extern s8 gUnknown_082082FE[][3]; extern u16 gTrainerBattleOpponent; @@ -88,8 +86,6 @@ extern u32 gTMHMLearnsets[][2]; extern const u16 *gLevelUpLearnsets[]; extern u8 gBattleMonForms[]; extern const u8 BattleText_Wally[]; -extern const struct SpritePalette gMonPaletteTable[]; -extern const struct SpritePalette gMonShinyPaletteTable[]; extern const u16 gHMMoves[]; extern s8 gUnknown_083F7E28[]; extern u8 byte_2024C06; diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 3406a818b..b2f8a1569 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -1,5 +1,6 @@ #include "global.h" #include "pokemon_size_record.h" +#include "data2.h" #include "event_data.h" #include "species.h" #include "string_util.h" @@ -17,7 +18,6 @@ struct UnknownStruct }; extern u16 gScriptResult; -extern u8 gSpeciesNames[][11]; static const struct UnknownStruct sBigMonSizeTable[] = { diff --git a/src/pokenav.c b/src/pokenav.c index 60e7c73e1..f50f039f8 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "data2.h" #include "string_util.h" struct UnkPokenavStruct_Sub { @@ -17,8 +18,6 @@ struct UnkPokenavStruct { extern struct UnkPokenavStruct *gUnknown_083DFEC4; -extern const struct Trainer gTrainers[]; -extern const u8 gTrainerClassNames[][13]; void sub_80F700C(u8 *arg0, u16 arg1) { struct Trainer *trainer; diff --git a/src/rom3.c b/src/rom3.c index ef7b9a7ed..be6ae0b27 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -15,7 +15,6 @@ extern u8 unk_2000000[]; extern u16 gBattleTypeFlags; extern const u32 gBitTable[]; extern u16 gBattleWeather; -extern const struct BattleMove gBattleMoves[]; extern struct BattlePokemon gBattleMons[]; extern u8 gUnknown_020238C4; diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 437c62400..9561db690 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle.h" #include "blend_palette.h" +#include "data2.h" #include "decompress.h" #include "palette.h" #include "species.h" @@ -40,13 +41,6 @@ struct TransformStatus { u16 species; }; -struct MonCoords { - // This would use a bitfield, but sub_8079F44 - // uses it as a u8 and casting won't match. - u8 coords; // u8 x:4, y:4; - u8 y_offset; -}; - struct Struct_gUnknown_0837F578 { u8 field_0; u8 field_1; @@ -101,11 +95,8 @@ extern struct Struct_unk_2019348 unk_2019348; extern struct TransformStatus gTransformStatuses[]; extern u16 gBattleMonPartyPositions[]; extern u16 gBattleTypeFlags; -extern struct MonCoords gMonBackPicCoords[]; -extern struct MonCoords gMonFrontPicCoords[]; extern u32 gTransformPersonalities[NUM_BATTLE_SLOTS]; extern u8 gBattleMonForms[NUM_BATTLE_SLOTS]; -extern u8 gEnemyMonElevation[]; extern u16 gUnknown_0202F7CA[]; extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; extern u8 gBattleAnimPlayerMonIndex; @@ -116,9 +107,6 @@ extern u8 gUnknown_02024A68; // gNumBattleMons? extern struct OamMatrix gOamMatrices[]; extern struct Struct_2017810 unk_2017810[]; extern u8 gUnknown_0202F7BE; -extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; -extern struct SpriteSheet gMonFrontPicTable[]; -extern struct SpriteSheet gMonBackPicTable[]; extern u8 IsContest(); extern bool8 sub_8078874(u8); diff --git a/src/scrcmd.c b/src/scrcmd.c index 136181bd3..33867b58a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -6,6 +6,7 @@ #include "clock.h" #include "coins.h" #include "contest_painting.h" +#include "data2.h" #include "decoration.h" #include "event_data.h" #include "field_door.h" @@ -59,9 +60,6 @@ extern SpecialFunc gSpecials[]; extern u8 *gStdScripts[]; extern u8 *gStdScripts_End[]; -extern u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; - extern u8 * const gUnknown_083CE048[]; extern struct Decoration gDecorations[]; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 912458655..54a48b84e 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -3,6 +3,7 @@ #include "battle.h" #include "berry.h" #include "contest.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "items.h" @@ -21,9 +22,6 @@ #define CONTEST_ENTRY_PIC_LEFT 10 #define CONTEST_ENTRY_PIC_TOP 3 -extern const struct SpriteSheet gMonFrontPicTable[]; -extern struct MonCoords gMonFrontPicCoords[]; - extern void sub_80C46EC(void); extern void sub_80C4740(void); extern void sub_80C48F4(void); @@ -35,7 +33,6 @@ extern void sub_8042044(struct Pokemon *mon, u16, u8); extern void sub_8121E10(void); extern void sub_8121E34(void); -extern void *gUnknown_081FAF4C[]; extern struct SpriteTemplate gUnknown_02024E8C; extern struct SpritePalette *sub_80409C8(u16, u32, u32); @@ -437,7 +434,7 @@ void ShowContestEntryMonPic(void) gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; HandleLoadSpecialPokePic((struct SpriteSheet *)&gMonFrontPicTable[species].data, - gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, + gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species, var1); paletteData = sub_80409C8(species, var2, var1); LoadCompressedObjectPalette(paletteData); diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index ce62f2abb..02c0bad20 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "battle_party_menu.h" +#include "data2.h" #include "palette.h" #include "pokemon.h" #include "rom4.h" @@ -17,8 +18,6 @@ extern u16 gSpecialVar_0x8005; extern u8 gUnknown_02038694; extern u16 gScriptResult; -extern u8 gMoveNames[][13]; - extern void (*gUnknown_0300485C)(void); extern void OpenPartyMenu(u8, u8); diff --git a/src/smokescreen.c b/src/smokescreen.c index 1d3a14a5b..0406c1cb3 100644 --- a/src/smokescreen.c +++ b/src/smokescreen.c @@ -1,4 +1,5 @@ #include "global.h" +#include "data2.h" #include "decompress.h" #include "sprite.h" @@ -6,9 +7,6 @@ extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); static void sub_8046388(struct Sprite *); -extern struct SpriteSheet gUnknown_081FAEA4; -extern struct SpritePalette gUnknown_081FAEAC; -extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; u8 sub_8046234(s16 x, s16 y, u8 a3) { diff --git a/src/starter_choose.c b/src/starter_choose.c index 358fe8fca..957342248 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -1,6 +1,7 @@ #include "global.h" #include "starter_choose.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "main.h" #include "menu.h" @@ -15,17 +16,7 @@ #include "task.h" #include "trig.h" -struct MonCoords -{ - u8 x, y; -}; - -extern void * const gUnknown_081FAF4C[]; extern u16 gScriptResult; -extern const u8 gSpeciesNames[][11]; -extern const struct SpriteSheet gMonFrontPicTable[]; -extern const struct MonCoords gMonFrontPicCoords[]; -extern const struct SpritePalette gMonPaletteTable[]; extern struct SpriteTemplate gUnknown_02024E8C; //-------------------------------------------------- @@ -565,7 +556,7 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y) DecompressPicFromTable_2( &gMonFrontPicTable[species], - gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, + gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species); LoadCompressedObjectPalette(&gMonPaletteTable[species]); diff --git a/src/tv.c b/src/tv.c index ea1f13047..51fb2e971 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "tv.h" +#include "data2.h" #include "event_data.h" #include "field_message_box.h" #include "flags.h" @@ -69,9 +70,6 @@ extern u8 gUnknown_020387E8; extern struct UnkTvStruct gUnknown_03005D38; -extern u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; - extern u8 *gTVBravoTrainerTextGroup[]; extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; extern u8 *gTVSmartShopperTextGroup[]; -- cgit v1.2.3 From 3f7d0a195afd90c182cd631e14f5acb5d29be34b Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 13:31:26 +0200 Subject: Define gSineTable in trig.h --- include/trig.h | 2 ++ src/intro.c | 1 - src/pokedex.c | 2 +- src/trig.c | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/trig.h b/include/trig.h index 5a948e1ef..03d8c453e 100644 --- a/include/trig.h +++ b/include/trig.h @@ -1,6 +1,8 @@ #ifndef GUARD_TRIG_H #define GUARD_TRIG_H +extern s16 gSineTable[]; + s16 Sin(s16 index, s16 amplitude); s16 Cos(s16 index, s16 amplitude); s16 Sin2(u16 angle); diff --git a/src/intro.c b/src/intro.c index ad2f6213c..c76bc9260 100644 --- a/src/intro.c +++ b/src/intro.c @@ -44,7 +44,6 @@ extern const u16 gIntroCopyright_Pal[]; extern const u16 gIntroCopyright_Tilemap[]; extern const u16 gUnknown_08393E64[]; extern void *const gUnknown_0840B5A0[]; -extern const s16 gSineTable[]; //-------------------------------------------------- // Graphics Data diff --git a/src/pokedex.c b/src/pokedex.c index 467782d84..7bf35e5d5 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -14,6 +14,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "trig.h" // I'm #define-ing these just for now so I can keep using the old unkXXX member names #define unk60E selectedPokemon @@ -78,7 +79,6 @@ extern struct SpriteTemplate gSpriteTemplate_83A056C; extern struct SpriteTemplate gSpriteTemplate_83A0584; extern struct SpriteTemplate gSpriteTemplate_83A059C; extern struct SpriteTemplate gSpriteTemplate_83A05B4; -extern s16 gSineTable[]; extern struct PokedexListItem *gUnknown_0202FFBC; extern IntrCallback gUnknown_03005CEC; extern u8 gUnknown_08E96BD4[]; diff --git a/src/trig.c b/src/trig.c index 8b75b3838..d64231087 100644 --- a/src/trig.c +++ b/src/trig.c @@ -1,7 +1,6 @@ #include "global.h" #include "trig.h" -extern s16 gSineTable[]; extern s16 gSineDegreeTable[]; // amplitude * sin(index*(π/128)) -- cgit v1.2.3 From a41524202a94e3af834453195cc28ccc1d55134e Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 19:41:36 -0400 Subject: Finish this block of nearly-identical callbacks --- asm/field_map_obj.s | 1212 --------------------------------------------------- src/field_map_obj.c | 479 ++++++++++++++++++-- 2 files changed, 454 insertions(+), 1237 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 2c5e54298..ee600d59d 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5,1218 +5,6 @@ .syntax unified .text - - thumb_func_start sub_805D8B4 -sub_805D8B4: @ 805D8B4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D8D0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D8D4 @ =sub_805D8D8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D8D0: .4byte gMapObjects -_0805D8D4: .4byte sub_805D8D8 - thumb_func_end sub_805D8B4 - - thumb_func_start sub_805D8D8 -sub_805D8D8: @ 805D8D8 - push {r4,lr} - ldr r3, _0805D8F4 @ =gUnknown_08375324 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D8F4: .4byte gUnknown_08375324 - thumb_func_end sub_805D8D8 - - thumb_func_start sub_805D8F8 -sub_805D8F8: @ 805D8F8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D8F8 - - thumb_func_start sub_805D90C -sub_805D90C: @ 805D90C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D90C - - thumb_func_start sub_805D938 -sub_805D938: @ 805D938 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D96E - ldr r4, _0805D978 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D96E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D978: .4byte gUnknown_0837521C - thumb_func_end sub_805D938 - - thumb_func_start sub_805D97C -sub_805D97C: @ 805D97C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D99A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D9A2 -_0805D99A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D9A4 -_0805D9A2: - movs r0, 0 -_0805D9A4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D97C - - thumb_func_start sub_805D9AC -sub_805D9AC: @ 805D9AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D9F0 @ =gUnknown_08375338 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x4 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D9DC - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D9DC: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D9F0: .4byte gUnknown_08375338 - thumb_func_end sub_805D9AC - - thumb_func_start sub_805D9F4 -sub_805D9F4: @ 805D9F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DA10 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DA14 @ =sub_805DA18 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DA10: .4byte gMapObjects -_0805DA14: .4byte sub_805DA18 - thumb_func_end sub_805D9F4 - - thumb_func_start sub_805DA18 -sub_805DA18: @ 805DA18 - push {r4,lr} - ldr r3, _0805DA34 @ =gUnknown_0837533C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DA34: .4byte gUnknown_0837533C - thumb_func_end sub_805DA18 - - thumb_func_start sub_805DA38 -sub_805DA38: @ 805DA38 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DA38 - - thumb_func_start sub_805DA4C -sub_805DA4C: @ 805DA4C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DA4C - - thumb_func_start sub_805DA78 -sub_805DA78: @ 805DA78 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DAAE - ldr r4, _0805DAB8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DAAE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DAB8: .4byte gUnknown_0837521C - thumb_func_end sub_805DA78 - - thumb_func_start sub_805DABC -sub_805DABC: @ 805DABC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DADA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DAE2 -_0805DADA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DAE4 -_0805DAE2: - movs r0, 0 -_0805DAE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DABC - - thumb_func_start sub_805DAEC -sub_805DAEC: @ 805DAEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DB30 @ =gUnknown_08375350 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x5 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DB1C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DB1C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DB30: .4byte gUnknown_08375350 - thumb_func_end sub_805DAEC - - thumb_func_start sub_805DB34 -sub_805DB34: @ 805DB34 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DB50 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DB54 @ =sub_805DB58 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DB50: .4byte gMapObjects -_0805DB54: .4byte sub_805DB58 - thumb_func_end sub_805DB34 - - thumb_func_start sub_805DB58 -sub_805DB58: @ 805DB58 - push {r4,lr} - ldr r3, _0805DB74 @ =gUnknown_08375354 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DB74: .4byte gUnknown_08375354 - thumb_func_end sub_805DB58 - - thumb_func_start sub_805DB78 -sub_805DB78: @ 805DB78 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DB78 - - thumb_func_start sub_805DB8C -sub_805DB8C: @ 805DB8C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DB8C - - thumb_func_start sub_805DBB8 -sub_805DBB8: @ 805DBB8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DBEE - ldr r4, _0805DBF8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DBEE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DBF8: .4byte gUnknown_0837521C - thumb_func_end sub_805DBB8 - - thumb_func_start sub_805DBFC -sub_805DBFC: @ 805DBFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DC1A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DC22 -_0805DC1A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DC24 -_0805DC22: - movs r0, 0 -_0805DC24: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DBFC - - thumb_func_start sub_805DC2C -sub_805DC2C: @ 805DC2C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DC70 @ =gUnknown_08375368 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x6 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DC5C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DC5C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DC70: .4byte gUnknown_08375368 - thumb_func_end sub_805DC2C - - thumb_func_start sub_805DC74 -sub_805DC74: @ 805DC74 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DC90 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DC94 @ =sub_805DC98 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DC90: .4byte gMapObjects -_0805DC94: .4byte sub_805DC98 - thumb_func_end sub_805DC74 - - thumb_func_start sub_805DC98 -sub_805DC98: @ 805DC98 - push {r4,lr} - ldr r3, _0805DCB4 @ =gUnknown_0837536C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DCB4: .4byte gUnknown_0837536C - thumb_func_end sub_805DC98 - - thumb_func_start sub_805DCB8 -sub_805DCB8: @ 805DCB8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DCB8 - - thumb_func_start sub_805DCCC -sub_805DCCC: @ 805DCCC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DCCC - - thumb_func_start sub_805DCF8 -sub_805DCF8: @ 805DCF8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DD2E - ldr r4, _0805DD38 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DD2E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DD38: .4byte gUnknown_0837521C - thumb_func_end sub_805DCF8 - - thumb_func_start sub_805DD3C -sub_805DD3C: @ 805DD3C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DD5A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DD62 -_0805DD5A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DD64 -_0805DD62: - movs r0, 0 -_0805DD64: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DD3C - - thumb_func_start sub_805DD6C -sub_805DD6C: @ 805DD6C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DDB0 @ =gUnknown_08375380 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x7 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DD9C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DD9C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DDB0: .4byte gUnknown_08375380 - thumb_func_end sub_805DD6C - - thumb_func_start sub_805DDB4 -sub_805DDB4: @ 805DDB4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DDD0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DDD4 @ =sub_805DDD8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DDD0: .4byte gMapObjects -_0805DDD4: .4byte sub_805DDD8 - thumb_func_end sub_805DDB4 - - thumb_func_start sub_805DDD8 -sub_805DDD8: @ 805DDD8 - push {r4,lr} - ldr r3, _0805DDF4 @ =gUnknown_08375384 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DDF4: .4byte gUnknown_08375384 - thumb_func_end sub_805DDD8 - - thumb_func_start sub_805DDF8 -sub_805DDF8: @ 805DDF8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DDF8 - - thumb_func_start sub_805DE0C -sub_805DE0C: @ 805DE0C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DE0C - - thumb_func_start sub_805DE38 -sub_805DE38: @ 805DE38 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DE6E - ldr r4, _0805DE78 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DE6E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DE78: .4byte gUnknown_0837521C - thumb_func_end sub_805DE38 - - thumb_func_start sub_805DE7C -sub_805DE7C: @ 805DE7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DE9A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DEA2 -_0805DE9A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DEA4 -_0805DEA2: - movs r0, 0 -_0805DEA4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DE7C - - thumb_func_start sub_805DEAC -sub_805DEAC: @ 805DEAC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DEF0 @ =gUnknown_08375398 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x8 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DEDC - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DEDC: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DEF0: .4byte gUnknown_08375398 - thumb_func_end sub_805DEAC - - thumb_func_start sub_805DEF4 -sub_805DEF4: @ 805DEF4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DF10 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DF14 @ =sub_805DF18 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DF10: .4byte gMapObjects -_0805DF14: .4byte sub_805DF18 - thumb_func_end sub_805DEF4 - - thumb_func_start sub_805DF18 -sub_805DF18: @ 805DF18 - push {r4,lr} - ldr r3, _0805DF34 @ =gUnknown_0837539C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DF34: .4byte gUnknown_0837539C - thumb_func_end sub_805DF18 - - thumb_func_start sub_805DF38 -sub_805DF38: @ 805DF38 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DF38 - - thumb_func_start sub_805DF4C -sub_805DF4C: @ 805DF4C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DF4C - - thumb_func_start sub_805DF78 -sub_805DF78: @ 805DF78 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DFAE - ldr r4, _0805DFB8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DFAE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DFB8: .4byte gUnknown_0837521C - thumb_func_end sub_805DF78 - - thumb_func_start sub_805DFBC -sub_805DFBC: @ 805DFBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DFDA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DFE2 -_0805DFDA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DFE4 -_0805DFE2: - movs r0, 0 -_0805DFE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DFBC - - thumb_func_start sub_805DFEC -sub_805DFEC: @ 805DFEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E030 @ =gUnknown_083753B0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x9 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E01C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805E01C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E030: .4byte gUnknown_083753B0 - thumb_func_end sub_805DFEC - - thumb_func_start sub_805E034 -sub_805E034: @ 805E034 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E050 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E054 @ =sub_805E058 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E050: .4byte gMapObjects -_0805E054: .4byte sub_805E058 - thumb_func_end sub_805E034 - - thumb_func_start sub_805E058 -sub_805E058: @ 805E058 - push {r4,lr} - ldr r3, _0805E074 @ =gUnknown_083753B4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E074: .4byte gUnknown_083753B4 - thumb_func_end sub_805E058 - - thumb_func_start sub_805E078 -sub_805E078: @ 805E078 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E078 - - thumb_func_start sub_805E08C -sub_805E08C: @ 805E08C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E08C - - thumb_func_start sub_805E0B8 -sub_805E0B8: @ 805E0B8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E0EE - ldr r4, _0805E0F8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805E0EE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E0F8: .4byte gUnknown_0837521C - thumb_func_end sub_805E0B8 - - thumb_func_start sub_805E0FC -sub_805E0FC: @ 805E0FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805E11A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E122 -_0805E11A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805E124 -_0805E122: - movs r0, 0 -_0805E124: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E0FC - - thumb_func_start sub_805E12C -sub_805E12C: @ 805E12C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E170 @ =gUnknown_083753C8 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0xA - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E15C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805E15C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E170: .4byte gUnknown_083753C8 - thumb_func_end sub_805E12C - thumb_func_start sub_805E174 sub_805E174: @ 805E174 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 83bff1026..394f3c43d 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -44,6 +44,13 @@ extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1590,6 +1597,13 @@ extern const u8 gUnknown_08375240[4]; extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_083752C0[2]; extern const u8 gUnknown_08375320[2]; +extern const u8 gUnknown_08375338[2]; +extern const u8 gUnknown_08375350[2]; +extern const u8 gUnknown_08375368[2]; +extern const u8 gUnknown_08375380[2]; +extern const u8 gUnknown_08375398[2]; +extern const u8 gUnknown_083753B0[2]; +extern const u8 gUnknown_083753C8[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -2416,19 +2430,449 @@ u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805D8B4(struct Sprite *sprite); -void sub_805D9F4(struct Sprite *sprite); -void sub_805DB34(struct Sprite *sprite); -void sub_805DC74(struct Sprite *sprite); -void sub_805DDB4(struct Sprite *sprite); -void sub_805DEF4(struct Sprite *sprite); -void sub_805E034(struct Sprite *sprite); + +u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D8B4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D8D8); +} + +u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375324[sprite->data1](mapObject, sprite); +} + +u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D90C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D938(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375338, 2); + direction = sub_805CD60(mapObject, 4); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D9F4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DA18); +} + +u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837533C[sprite->data1](mapObject, sprite); +} + +u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DA4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DA78(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375350, 2); + direction = sub_805CD60(mapObject, 5); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DB34(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DB58); +} + +u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375354[sprite->data1](mapObject, sprite); +} + +u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DB8C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DBB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375368, 2); + direction = sub_805CD60(mapObject, 6); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DC74(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DC98); +} + +u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837536C[sprite->data1](mapObject, sprite); +} + +u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DCCC(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DCF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375380, 4); + direction = sub_805CD60(mapObject, 7); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DDB4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DDD8); +} + +u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375384[sprite->data1](mapObject, sprite); +} + +u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DE0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DE38(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375398, 4); + direction = sub_805CD60(mapObject, 8); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DEF4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DF18); +} + +u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837539C[sprite->data1](mapObject, sprite); +} + +u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DF4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DF78(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_083753B0, 4); + direction = sub_805CD60(mapObject, 9); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805E034(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805E058); +} + +u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083753B4[sprite->data1](mapObject, sprite); +} + +u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E08C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805E0B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_083753C8, 4); + direction = sub_805CD60(mapObject, 10); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805E174(struct Sprite *sprite); void sub_805E278(struct Sprite *sprite); void sub_805E37C(struct Sprite *sprite); -void sub_805E37C(struct Sprite *sprite); -void sub_805E37C(struct Sprite *sprite); -void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); void sub_805E6F4(struct Sprite *sprite); @@ -2454,27 +2898,12 @@ void sub_805F158(struct Sprite *sprite); void sub_805F1E4(struct Sprite *sprite); void sub_805F270(struct Sprite *sprite); void sub_805F2FC(struct Sprite *sprite); -void sub_805F2FC(struct Sprite *sprite); -void sub_805F2FC(struct Sprite *sprite); -void sub_805F2FC(struct Sprite *sprite); void FieldObjectCB_TreeDisguise(struct Sprite *sprite); void FieldObjectCB_MountainDisguise(struct Sprite *sprite); void sub_805F8E0(struct Sprite *sprite); -void sub_805F8E0(struct Sprite *sprite); -void sub_805F8E0(struct Sprite *sprite); -void sub_805F8E0(struct Sprite *sprite); void FieldObjectCB_Hidden1(struct Sprite *sprite); void sub_805FB20(struct Sprite *sprite); -void sub_805FB20(struct Sprite *sprite); -void sub_805FB20(struct Sprite *sprite); -void sub_805FB20(struct Sprite *sprite); -void sub_805FB90(struct Sprite *sprite); void sub_805FB90(struct Sprite *sprite); -void sub_805FB90(struct Sprite *sprite); -void sub_805FB90(struct Sprite *sprite); -void sub_805FC00(struct Sprite *sprite); -void sub_805FC00(struct Sprite *sprite); -void sub_805FC00(struct Sprite *sprite); void sub_805FC00(struct Sprite *sprite); void sub_805FC70(struct Sprite *sprite); -- cgit v1.2.3 From cb975fbf00519c90c05c0dfaaf3f7a22ad8449ab Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 08:34:47 -0400 Subject: sub_805E174 --- asm/field_map_obj.s | 142 ------------------------------------------------ include/field_map_obj.h | 31 +++++++++++ src/field_map_obj.c | 84 ++++++++++++++++++---------- 3 files changed, 86 insertions(+), 171 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ee600d59d..c3b867525 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5,148 +5,6 @@ .syntax unified .text - thumb_func_start sub_805E174 -sub_805E174: @ 805E174 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E190 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E194 @ =sub_805E198 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E190: .4byte gMapObjects -_0805E194: .4byte sub_805E198 - thumb_func_end sub_805E174 - - thumb_func_start sub_805E198 -sub_805E198: @ 805E198 - push {r4,lr} - ldr r3, _0805E1B4 @ =gUnknown_083753CC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E1B4: .4byte gUnknown_083753CC - thumb_func_end sub_805E198 - - thumb_func_start sub_805E1B8 -sub_805E1B8: @ 805E1B8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E1B8 - - thumb_func_start sub_805E1E4 -sub_805E1E4: @ 805E1E4 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E1FE - adds r0, r4, 0 - movs r1, 0x30 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x30] -_0805E1FE: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E1E4 - - thumb_func_start sub_805E208 -sub_805E208: @ 805E208 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805E226 - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E22A -_0805E226: - movs r0, 0x3 - strh r0, [r5, 0x30] -_0805E22A: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E208 - - thumb_func_start sub_805E234 -sub_805E234: @ 805E234 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E274 @ =gUnknown_083753DC - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E260 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_0805E260: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E274: .4byte gUnknown_083753DC - thumb_func_end sub_805E234 thumb_func_start sub_805E278 sub_805E278: @ 805E278 diff --git a/include/field_map_obj.h b/include/field_map_obj.h index ca0852a96..4c2d4c705 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -8,4 +8,35 @@ void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)()); +extern const u8 gUnknown_08375240[4]; +extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); + +extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083752A0[2]; +extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083752C0[2]; +extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375320[2]; +extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375338[2]; +extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375350[2]; +extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375368[2]; +extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375380[2]; +extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375398[2]; +extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083753B0[2]; +extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083753C8[2]; +extern u8 (*const gUnknown_083753CC[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083753DC[5]; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 394f3c43d..475620c28 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -35,22 +35,6 @@ void GetFieldObjectMovingCameraOffset(s16 *, s16 *); void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); -extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); -extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1593,17 +1577,6 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -extern const u8 gUnknown_08375240[4]; -extern const u8 gUnknown_083752A0[2]; -extern const u8 gUnknown_083752C0[2]; -extern const u8 gUnknown_08375320[2]; -extern const u8 gUnknown_08375338[2]; -extern const u8 gUnknown_08375350[2]; -extern const u8 gUnknown_08375368[2]; -extern const u8 gUnknown_08375380[2]; -extern const u8 gUnknown_08375398[2]; -extern const u8 gUnknown_083753B0[2]; -extern const u8 gUnknown_083753C8[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -2744,7 +2717,6 @@ u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite); void sub_805DEF4(struct Sprite *sprite) @@ -2870,7 +2842,61 @@ u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805E174(struct Sprite *sprite); + +u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805E174(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805E198); +} + +u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083753CC[sprite->data1](mapObject, sprite); +} + +u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, 0x30); + sprite->data1 = 2; + } + return 0; +} + +u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[5]; + memcpy(directions, gUnknown_083753DC, 5); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[mapObject->mapobj_unk_18]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 0; + return 1; +} + void sub_805E278(struct Sprite *sprite); void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); -- cgit v1.2.3 From 4f9110a54cd4ac21d3493b2cb60b42ee848863d6 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 22 May 2017 14:40:21 -0400 Subject: Create and propagate field map object callback declaration macro --- .gitignore | 1 - .gitmodules | 3 + asm/field_map_obj.s | 143 ------------------------ include/field_map_obj.h | 20 +--- src/field_map_obj.c | 284 +++++++++++++++--------------------------------- tools/agbcc | 1 + 6 files changed, 92 insertions(+), 360 deletions(-) create mode 100644 .gitmodules create mode 160000 tools/agbcc diff --git a/.gitignore b/.gitignore index 78af8c737..13752b437 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ *.bat sound/**/*.bin src/*.s -tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..7dbd4ef6d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tools/agbcc"] + path = tools/agbcc + url = git@github.com:pret/agbcc diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index c3b867525..3db00279d 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,149 +6,6 @@ .text - thumb_func_start sub_805E278 -sub_805E278: @ 805E278 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E294 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E298 @ =sub_805E29C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E294: .4byte gMapObjects -_0805E298: .4byte sub_805E29C - thumb_func_end sub_805E278 - - thumb_func_start sub_805E29C -sub_805E29C: @ 805E29C - push {r4,lr} - ldr r3, _0805E2B8 @ =gUnknown_083753E4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E2B8: .4byte gUnknown_083753E4 - thumb_func_end sub_805E29C - - thumb_func_start sub_805E2BC -sub_805E2BC: @ 805E2BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E2BC - - thumb_func_start sub_805E2E8 -sub_805E2E8: @ 805E2E8 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E302 - adds r0, r4, 0 - movs r1, 0x30 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x30] -_0805E302: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E2E8 - - thumb_func_start sub_805E30C -sub_805E30C: @ 805E30C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805E32A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E32E -_0805E32A: - movs r0, 0x3 - strh r0, [r5, 0x30] -_0805E32E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E30C - - thumb_func_start sub_805E338 -sub_805E338: @ 805E338 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E378 @ =gUnknown_083753F4 - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E364 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_0805E364: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E378: .4byte gUnknown_083753F4 - thumb_func_end sub_805E338 - thumb_func_start sub_805E37C sub_805E37C: @ 805E37C push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 4c2d4c705..4f9b6f5af 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -6,37 +6,23 @@ void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); -void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)()); +void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)(struct MapObject *, struct Sprite *)); +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375240[4]; extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); -extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083752A0[2]; -extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083752C0[2]; -extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375320[2]; -extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375338[2]; -extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375350[2]; -extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375368[2]; -extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375380[2]; -extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375398[2]; -extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083753B0[2]; -extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083753C8[2]; -extern u8 (*const gUnknown_083753CC[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083753DC[5]; +extern const u8 gUnknown_083753F4[5]; #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 475620c28..2c949c191 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -12,6 +12,30 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; +#define fieldmap_object_cb(setup, callback, table) \ +extern u8 (*const table[])(struct MapObject *, struct Sprite *);\ +u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return table[sprite->data1](mapObject, sprite);\ +} + +#define fieldmap_object_null_cb(setup, callback) \ +u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return 0;\ +} + + extern void strange_npc_table_clear(void); extern void ClearPlayerAvatarInfo(void); extern void npc_load_two_palettes__no_record(u16, u8); @@ -1505,33 +1529,8 @@ u16 npc_paltag_by_palslot(u8 a) return 0x11FF; } -u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805C884(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8); -} - -u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite) -{ - return 0; -} - -u8 sub_805C8D0(struct MapObject *, struct Sprite *); - -void sub_805C8AC(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8D0); -} - -extern u8 (*const gUnknown_08375224[])(); - -u8 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375224[sprite->data1](mapObject, sprite); -} - -void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); +fieldmap_object_null_cb(sub_805C884, sub_805C8A8); +fieldmap_object_cb(sub_805C8AC, sub_805C8D0, gUnknown_08375224); u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) { @@ -1849,17 +1848,7 @@ u8 sub_805CD60(struct MapObject *mapObject, u8 a1) return gUnknown_08375244[a1](x, y, x2, y2); } -u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805CDE8(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805CE0C); -} - -u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375270[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805CDE8, sub_805CE0c, gUnknown_08375270); u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) { @@ -1911,17 +1900,7 @@ u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805CF28(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805CF4C); -} - -u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375284[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805CF28, sub_805CF4C, gUnknown_08375284); u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite) { @@ -1991,17 +1970,7 @@ u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D0AC(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D0D0); -} - -u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752A4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D0AC, sub_805D0D0, gUnknown_083752A4); u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2071,17 +2040,7 @@ u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D230(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D254); -} - -u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752C4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D230, sub_805D254, gUnknown_083752C4); u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2108,6 +2067,7 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) } u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); void FieldObjectCB_BerryTree(struct Sprite *sprite) { @@ -2215,17 +2175,7 @@ u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D4F4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D518); -} - -u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752E4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D4F4, sub_805D518, gUnknown_083752E4); u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2277,18 +2227,7 @@ u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D634(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D658); -} - -u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752F8[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D634, sub_805D658, gUnknown_083752F8); u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2340,18 +2279,7 @@ u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D774(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D798); -} - -u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837530C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D774, sub_805D798, gUnknown_0837530C); u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2403,18 +2331,7 @@ u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D8B4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D8D8); -} - -u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375324[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D8B4, sub_805D8D8, gUnknown_08375324); u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2466,18 +2383,7 @@ u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D9F4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DA18); -} - -u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837533C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D9F4, sub_805DA18, gUnknown_0837533C); u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2529,18 +2435,7 @@ u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DB34(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DB58); -} - -u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375354[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DB34, sub_805DB58, gUnknown_08375354); u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2592,18 +2487,7 @@ u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DC74(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DC98); -} - -u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837536C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DC74, sub_805DC98, gUnknown_0837536C); u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2655,17 +2539,7 @@ u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DDB4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DDD8); -} - -u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375384[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DDB4, sub_805DDD8, gUnknown_08375384); u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2717,17 +2591,7 @@ u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DEF4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DF18); -} - -u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837539C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DEF4, sub_805DF18, gUnknown_0837539C); u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2779,18 +2643,7 @@ u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805E034(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805E058); -} - -u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083753B4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805E034, sub_805E058, gUnknown_083753B4); u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2842,20 +2695,53 @@ u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +fieldmap_object_cb(sub_805E174, sub_805E198, gUnknown_083753CC); + +u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} -u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite); +u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, 0x30); + sprite->data1 = 2; + } + return 0; +} -void sub_805E174(struct Sprite *sprite) +u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) { - meta_step(&gMapObjects[sprite->data0], sprite, sub_805E198); + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 3; + } + return 0; } -u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) { - return gUnknown_083753CC[sprite->data1](mapObject, sprite); + u8 direction; + u8 directions[5]; + memcpy(directions, gUnknown_083753DC, 5); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[mapObject->mapobj_unk_18]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 0; + return 1; } -u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) +fieldmap_object_cb(sub_805E278, sub_803E29C, gUnknown_083753E4); + +u8 sub_805E2BC(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); @@ -2863,7 +2749,7 @@ u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E2E8(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite)) { @@ -2873,7 +2759,7 @@ u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E30C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { @@ -2882,11 +2768,11 @@ u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite) { u8 direction; u8 directions[5]; - memcpy(directions, gUnknown_083753DC, 5); + memcpy(directions, gUnknown_083753F4, 5); direction = sub_805CD60(mapObject, 0); if (direction == 0) { @@ -2897,7 +2783,7 @@ u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805E278(struct Sprite *sprite); + void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); diff --git a/tools/agbcc b/tools/agbcc new file mode 160000 index 000000000..928b19519 --- /dev/null +++ b/tools/agbcc @@ -0,0 +1 @@ +Subproject commit 928b1951972d7ff8c46347b3dce9e254cf6c215c -- cgit v1.2.3 From 1751ad0b6723c6deb4ec4d7f5d949278c76c8e66 Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 22 May 2017 14:46:28 -0400 Subject: Fix building. Again. --- include/field_map_obj.h | 23 +++++++++++++++++++++++ src/field_map_obj.c | 23 ----------------------- src/field_player_avatar.c | 12 +----------- 3 files changed, 24 insertions(+), 34 deletions(-) diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 4f9b6f5af..00fda8358 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -3,6 +3,29 @@ #include "sprite.h" +#define fieldmap_object_cb(setup, callback, table) \ +extern u8 (*const table[])(struct MapObject *, struct Sprite *);\ +static u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return table[sprite->data1](mapObject, sprite);\ +} + +#define fieldmap_object_null_cb(setup, callback) \ +static u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return 0;\ +} + void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 2c949c191..b75f16d54 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -12,29 +12,6 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; -#define fieldmap_object_cb(setup, callback, table) \ -extern u8 (*const table[])(struct MapObject *, struct Sprite *);\ -u8 callback(struct MapObject *, struct Sprite *);\ -void setup(struct Sprite *sprite)\ -{\ - meta_step(&gMapObjects[sprite->data0], sprite, callback);\ -}\ -u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ -{\ - return table[sprite->data1](mapObject, sprite);\ -} - -#define fieldmap_object_null_cb(setup, callback) \ -u8 callback(struct MapObject *, struct Sprite *);\ -void setup(struct Sprite *sprite)\ -{\ - meta_step(&gMapObjects[sprite->data0], sprite, callback);\ -}\ -u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ -{\ - return 0;\ -} - extern void strange_npc_table_clear(void); extern void ClearPlayerAvatarInfo(void); diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 71ff40435..13c1cd277 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -27,7 +27,6 @@ extern u8 gOtherText_ItGotAway[]; extern u32 gUnknown_0202FF84[]; //Functions -static u8 sub_80587D8(void); static bool8 sub_8058854(struct MapObject *, u8); static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); @@ -246,16 +245,7 @@ static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) = sub_805A1B8, }; - -void sub_80587B4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8); -} - -static u8 sub_80587D8(void) -{ - return 0; -} +fieldmap_object_null_cb(sub_80587B4, sub_80587D8); void player_step(u8 direction, u16 newKeys, u16 heldKeys) { -- cgit v1.2.3 From 9d851873cd284af172581c413f0bab4a2f695c8e Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 22 May 2017 17:21:17 -0400 Subject: Another chunk of library-like functions --- asm/field_map_obj.s | 285 ------------------------------------------ include/field_ground_effect.h | 10 ++ include/field_map_obj.h | 4 + include/fieldmap.h | 4 + src/field_map_obj.c | 105 +++++++++++++++- 5 files changed, 121 insertions(+), 287 deletions(-) create mode 100644 include/field_ground_effect.h diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 3db00279d..5de921af9 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -3517,291 +3517,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_805FE28 -sub_805FE28: @ 805FE28 - push {r4,lr} - adds r3, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r0, 0x1] - lsls r0, 27 - lsrs r4, r0, 31 - cmp r4, 0 - bne _0805FE5E - adds r0, r3, 0 - adds r0, 0x2A - strb r2, [r0] - adds r0, 0x1 - ldrb r2, [r0] - adds r1, r0, 0 - cmp r2, 0x1 - bne _0805FE50 - movs r0, 0x2 - strb r0, [r1] - b _0805FE56 -_0805FE50: - cmp r2, 0x3 - bne _0805FE56 - strb r4, [r1] -_0805FE56: - ldrb r1, [r1] - adds r0, r3, 0 - bl SeekSpriteAnim -_0805FE5E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_805FE28 - - thumb_func_start sub_805FE64 -sub_805FE64: @ 805FE64 - push {lr} - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r0, 0x1] - lsls r0, 27 - cmp r0, 0 - blt _0805FE8C - adds r0, r1, 0 - adds r0, 0x2A - strb r2, [r0] - movs r2, 0x3 - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _0805FE84 - movs r2, 0x1 -_0805FE84: - adds r0, r1, 0 - adds r1, r2, 0 - bl SeekSpriteAnim -_0805FE8C: - pop {r0} - bx r0 - thumb_func_end sub_805FE64 - - thumb_func_start sub_805FE90 -sub_805FE90: @ 805FE90 - push {lr} - lsls r1, 16 - lsrs r1, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - asrs r0, 16 - lsls r2, 16 - asrs r2, 16 - cmp r0, r2 - ble _0805FEAA - movs r0, 0x3 - b _0805FEC0 -_0805FEAA: - cmp r0, r2 - bge _0805FEB2 - movs r0, 0x4 - b _0805FEC0 -_0805FEB2: - lsls r1, 16 - lsls r0, r3, 16 - cmp r1, r0 - bgt _0805FEBE - movs r0, 0x1 - b _0805FEC0 -_0805FEBE: - movs r0, 0x2 -_0805FEC0: - pop {r1} - bx r1 - thumb_func_end sub_805FE90 - - thumb_func_start npc_set_running_behaviour_etc -npc_set_running_behaviour_etc: @ 805FEC4 - push {r4,lr} - mov r12, r0 - lsls r1, 24 - lsrs r1, 24 - movs r3, 0 - strb r1, [r0, 0x6] - adds r0, 0x21 - strb r3, [r0] - adds r0, 0x1 - strb r3, [r0] - ldr r4, _0805FF08 @ =gSprites - mov r0, r12 - ldrb r2, [r0, 0x4] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r2, r4, 0 - adds r2, 0x1C - adds r0, r2 - ldr r2, _0805FF0C @ =gUnknown_0836DA88 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - str r1, [r0] - mov r0, r12 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805FF08: .4byte gSprites -_0805FF0C: .4byte gUnknown_0836DA88 - thumb_func_end npc_set_running_behaviour_etc - - thumb_func_start npc_running_behaviour_by_direction -npc_running_behaviour_by_direction: @ 805FF10 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FF1C @ =gUnknown_0837567B - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FF1C: .4byte gUnknown_0837567B - thumb_func_end npc_running_behaviour_by_direction - - thumb_func_start sub_805FF20 -sub_805FF20: @ 805FF20 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - lsls r5, r1, 24 - lsrs r5, 24 - ldrh r1, [r6, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r6, 0x12] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - adds r3, r5, 0 - bl npc_block_way - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805FF20 - - thumb_func_start npc_block_way -npc_block_way: @ 805FF60 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - lsrs r7, r3, 24 - mov r8, r7 - lsrs r0, r1, 16 - mov r9, r0 - asrs r5, r1, 16 - lsrs r0, r2, 16 - mov r10, r0 - asrs r4, r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl IsCoordOutsideFieldObjectMovementRect - lsls r0, 24 - cmp r0, 0 - beq _0805FF96 - movs r0, 0x1 - b _08060016 -_0805FF96: - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridIsImpassableAt - lsls r0, 24 - cmp r0, 0 - bne _0805FFD8 - adds r0, r5, 0 - adds r1, r4, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0805FFD8 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - adds r3, r7, 0 - bl IsMetatileDirectionallyImpassable - lsls r0, 24 - cmp r0, 0 - bne _0805FFD8 - ldrb r0, [r6, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _0805FFDC - mov r0, r8 - bl CanCameraMoveInDirection - cmp r0, 0 - bne _0805FFDC -_0805FFD8: - movs r0, 0x2 - b _08060016 -_0805FFDC: - ldrb r0, [r6, 0xB] - lsls r0, 28 - lsrs r0, 28 - mov r2, r9 - lsls r1, r2, 16 - asrs r5, r1, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r4, r1, 16 - adds r1, r5, 0 - adds r2, r4, 0 - bl IsZCoordMismatchAt - lsls r0, 24 - cmp r0, 0 - beq _08060000 - movs r0, 0x3 - b _08060016 -_08060000: - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl CheckForCollisionBetweenFieldObjects - lsls r0, 24 - cmp r0, 0 - bne _08060014 - movs r0, 0 - b _08060016 -_08060014: - movs r0, 0x4 -_08060016: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end npc_block_way - thumb_func_start sub_8060024 sub_8060024: @ 8060024 push {r4-r7,lr} diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h new file mode 100644 index 000000000..590923041 --- /dev/null +++ b/include/field_ground_effect.h @@ -0,0 +1,10 @@ +// +// Created by Scott Norton on 5/22/17. +// + +#ifndef POKERUBY_FIELD_GROUND_EFFECT_H +#define POKERUBY_FIELD_GROUND_EFFECT_H + +bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y); + +#endif //POKERUBY_FIELD_GROUND_EFFECT_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 00fda8358..4f611aab2 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -26,6 +26,8 @@ static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ return 0;\ } +bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); + void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); @@ -48,4 +50,6 @@ extern const u8 gUnknown_083753C8[2]; extern const u8 gUnknown_083753DC[5]; extern const u8 gUnknown_083753F4[5]; +extern const u8 gUnknown_0837567B[9]; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 936d27b4a..87f113122 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -1,6 +1,10 @@ #ifndef GUARD_FIELDMAP2_H #define GUARD_FIELDMAP2_H +#include "field_map_obj.h" struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection); +int GetMapBorderIdAt(int x, int y); +bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); +int CanCameraMoveInDirection(int direction); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index b75f16d54..7c332c505 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1,10 +1,12 @@ #include "global.h" #include "field_map_obj.h" +#include "fieldmap.h" #include "asm.h" #include "berry.h" #include "event_data.h" #include "field_player_avatar.h" #include "field_effect.h" +#include "field_ground_effect.h" #include "palette.h" #include "rom4.h" #include "rng.h" @@ -20,14 +22,14 @@ extern void npc_load_two_palettes__and_record(u16, u8); extern void sub_8060388(s16, s16, s16 *, s16 *); extern void sub_80634D0(); extern void pal_patch_for_npc(u16, u16); -extern void sub_80603CC(); +extern void sub_80603CC(s16, s16, s16 *, s16 *); extern void CameraObjectReset1(void); void sub_805AAB0(void); u8 GetFieldObjectIdByLocalId(u8); u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8); u8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *); -void FieldObjectHandleDynamicGraphicsId(); +void FieldObjectHandleDynamicGraphicsId(struct MapObject *); void RemoveFieldObjectInternal(struct MapObject *); u16 GetFieldObjectFlagIdByFieldObjectId(u8); void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables); @@ -2897,3 +2899,102 @@ u8 get_run_image_anim_num(u8 direction) { return gUnknown_08375672[direction]; } + +void sub_805FE28(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum) +{ + if (!mapObject->mapobj_bit_12) + { + sprite->animNum = animNum; + if (sprite->animCmdIndex == 1) + { + sprite->animCmdIndex = 2; + } else if (sprite->animCmdIndex == 3) + { + sprite->animCmdIndex = 0; + } + SeekSpriteAnim(sprite, sprite->animCmdIndex); + } +} + +void sub_805FE64(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum) +{ + u8 animCmdIndex; + if (!mapObject->mapobj_bit_12) + { + sprite->animNum = animNum; + animCmdIndex = 3; + if (sprite->animCmdIndex < 2) + { + animCmdIndex = 1; + } + SeekSpriteAnim(sprite, animCmdIndex); + } +} + +u8 sub_805FE90(s16 a0, s16 a1, s16 a2, s16 a3) +{ + if (a0 > a2) + { + return DIR_WEST; + } else if (a0 < a2) + { + return DIR_EAST; + } else if (a1 > a3) + { + return DIR_NORTH; + } else + { + return DIR_SOUTH; + } +} + +void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern) +{ + mapObject->animPattern = animPattern; + mapObject->mapobj_unk_21 = 0; + mapObject->animId = 0; + gSprites[mapObject->spriteId].callback = gUnknown_0836DA88[animPattern]; + gSprites[mapObject->spriteId].data1 = 0; +} + +u8 npc_running_behaviour_by_direction(u8 direction) +{ + return gUnknown_0837567B[direction]; +} + +u8 sub_805FF20(struct MapObject *mapObject, u8 direction) +{ + s16 x; + s16 y; + x = mapObject->coords2.x; + y = mapObject->coords2.y; + MoveCoords(direction, &x, &y); + return npc_block_way(mapObject, x, y, direction); +} + +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y); + +u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +{ + if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y)) + { + return 1; + } + if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) + { + return 2; + } + if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) + { + return 2; + } + if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) + { + return 3; + } + if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) + { + return 4; + } + return 0; +} -- cgit v1.2.3 From 70b04997a09a45552a257623867acc1a8be6141e Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 22 May 2017 19:31:47 -0400 Subject: IsCoordOutsideFieldObjectMovementRect and others --- asm/field_map_obj.s | 167 ------------------------------------------------ include/asm.inc.h | 8 +++ include/field_map_obj.h | 1 - include/fieldmap.h | 2 +- src/field_map_obj.c | 57 +++++++++++++++-- 5 files changed, 62 insertions(+), 173 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 5de921af9..ee5aa61c0 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -3517,173 +3517,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8060024 -sub_8060024: @ 8060024 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsrs r0, r1, 16 - mov r9, r0 - asrs r6, r1, 16 - lsrs r0, r2, 16 - mov r10, r0 - asrs r5, r2, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl IsCoordOutsideFieldObjectMovementRect - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r4, r1, 31 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridIsImpassableAt - lsls r0, 24 - cmp r0, 0 - bne _0806009C - adds r0, r6, 0 - adds r1, r5, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0806009C - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - mov r3, r8 - bl IsMetatileDirectionallyImpassable - lsls r0, 24 - cmp r0, 0 - bne _0806009C - ldrb r0, [r7, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _080600A0 - mov r0, r8 - bl CanCameraMoveInDirection - cmp r0, 0 - bne _080600A0 -_0806009C: - movs r0, 0x2 - orrs r4, r0 -_080600A0: - ldrb r0, [r7, 0xB] - lsls r0, 28 - lsrs r0, 28 - mov r2, r9 - lsls r1, r2, 16 - asrs r6, r1, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r5, r1, 16 - adds r1, r6, 0 - adds r2, r5, 0 - bl IsZCoordMismatchAt - lsls r0, 24 - cmp r0, 0 - beq _080600C8 - movs r0, 0x4 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080600C8: - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl CheckForCollisionBetweenFieldObjects - lsls r0, 24 - cmp r0, 0 - beq _080600E0 - movs r0, 0x8 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080600E0: - adds r0, r4, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8060024 - - thumb_func_start IsCoordOutsideFieldObjectMovementRect -IsCoordOutsideFieldObjectMovementRect: @ 80600F0 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r3, r1, 16 - lsls r2, 16 - lsrs r5, r2, 16 - ldrb r1, [r4, 0x19] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _08060128 - lsls r1, 28 - lsrs r2, r1, 28 - ldrh r0, [r4, 0xC] - subs r2, r0, r2 - lsrs r1, 28 - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r2, 16 - lsls r0, r3, 16 - asrs r3, r0, 16 - cmp r2, r0 - bgt _08060154 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r3 - blt _08060154 -_08060128: - ldrb r1, [r4, 0x19] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - beq _08060158 - lsls r1, 24 - lsrs r2, r1, 28 - ldrh r0, [r4, 0xE] - subs r2, r0, r2 - lsrs r1, 28 - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r2, 16 - lsls r0, r5, 16 - asrs r3, r0, 16 - cmp r2, r0 - bgt _08060154 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r3 - bge _08060158 -_08060154: - movs r0, 0x1 - b _0806015A -_08060158: - movs r0, 0 -_0806015A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end IsCoordOutsideFieldObjectMovementRect - thumb_func_start IsMetatileDirectionallyImpassable IsMetatileDirectionallyImpassable: @ 8060160 push {r4-r7,lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index 3db79b128..8921d14cd 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -1,6 +1,14 @@ // src/rom3.o void sub_800C35C(void); +struct UnkStruct8060024 { + u8 outsideMovementRect:1; + u8 tileIsImpassable:1; + u8 elevationMismatch:1; + u8 pathBlockedByObject:1; + u8 pad_04:4; +}; + // asm/battle_2.o void sub_800E7C4(void); u8 b_first_side(u8, u8, u8); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 4f611aab2..c160f1c72 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -26,7 +26,6 @@ static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ return 0;\ } -bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); diff --git a/include/fieldmap.h b/include/fieldmap.h index 87f113122..530e15798 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -4,7 +4,7 @@ struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection); int GetMapBorderIdAt(int x, int y); -bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); +extern bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); int CanCameraMoveInDirection(int direction); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 7c332c505..755de7611 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2972,19 +2972,20 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction) return npc_block_way(mapObject, x, y, direction); } -bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y); +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y); +bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); +bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) { - if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y)) + if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) { return 1; } if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) { return 2; - } - if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) + } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) { return 2; } @@ -2998,3 +2999,51 @@ u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) } return 0; } + +u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +{ + u8 flags; + flags = 0; + if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) + { + flags |= 1; + } + if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))) + { + flags |= 2; + } + if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) + { + flags |= 4; + } + if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) + { + flags |= 8; + } + return flags; +} + +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y) +{ + s16 minv; + s16 maxv; + if (mapObject->mapobj_unk_19 != 0) + { + minv = mapObject->coords1.x - (mapObject->mapobj_unk_19); + maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19); + if (minv > x || maxv < x) + { + return 1; + } + } + if (mapObject->mapobj_unk_19b != 0) + { + minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b); + maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b); + if (minv > y || maxv < y) + { + return 1; + } + } + return 0; +} -- cgit v1.2.3 From 3872e196ffde5bf6732e3052fa0f39c02814b616 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 21:34:17 -0400 Subject: sub_805E37C and helpers --- .idea/codeStyleSettings.xml | 35 ++++++++ asm/field_map_obj.s | 215 +++----------------------------------------- src/field_map_obj.c | 67 +++++++++++++- 3 files changed, 112 insertions(+), 205 deletions(-) create mode 100755 .idea/codeStyleSettings.xml mode change 100644 => 100755 src/field_map_obj.c diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml new file mode 100755 index 000000000..dee6609ca --- /dev/null +++ b/.idea/codeStyleSettings.xml @@ -0,0 +1,35 @@ + + + + + + \ No newline at end of file diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ee5aa61c0..ddde64c0c 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,210 +6,17 @@ .text - thumb_func_start sub_805E37C -sub_805E37C: @ 805E37C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E398 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E39C @ =sub_805E3A0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E398: .4byte gMapObjects -_0805E39C: .4byte sub_805E3A0 - thumb_func_end sub_805E37C - - thumb_func_start sub_805E3A0 -sub_805E3A0: @ 805E3A0 - push {r4,lr} - ldr r3, _0805E3BC @ =gUnknown_083753FC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E3BC: .4byte gUnknown_083753FC - thumb_func_end sub_805E3A0 - - thumb_func_start sub_805E3C0 -sub_805E3C0: @ 805E3C0 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E3C0 - - thumb_func_start sub_805E3D4 -sub_805E3D4: @ 805E3D4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _0805E408 @ =gUnknown_0836DC09 - ldrb r1, [r4, 0x6] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E3F6 - adds r0, r1, 0 - bl GetOppositeDirection - lsls r0, 24 - lsrs r1, r0, 24 -_0805E3F6: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E408: .4byte gUnknown_0836DC09 - thumb_func_end sub_805E3D4 - - thumb_func_start sub_805E40C -sub_805E40C: @ 805E40C - push {r4-r7,lr} - adds r4, r0, 0 - adds r7, r1, 0 - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0 - beq _0805E43C - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bne _0805E43C - movs r0, 0 - strb r0, [r2] - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetDirection -_0805E43C: - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - cmp r5, 0x1 - bne _0805E492 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r5, r0, 24 -_0805E492: - cmp r5, 0 - beq _0805E4A4 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - lsls r0, 24 - lsrs r6, r0, 24 -_0805E4A4: - adds r0, r4, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x3 - strh r0, [r7, 0x30] - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805E40C - - thumb_func_start sub_805E4C4 -sub_805E4C4: @ 805E4C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E4E2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805E4E2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E4C4 - - thumb_func_start sub_805E4EC -sub_805E4EC: @ 805E4EC - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E4EC + @ thumb_func_start sub_805E4EC +@ sub_805E4EC: @ 805E4EC + @ push {r4,lr} + @ adds r4, r1, 0 + @ bl npc_reset + @ movs r0, 0x1 + @ strh r0, [r4, 0x30] + @ pop {r4} + @ pop {r1} + @ bx r1 + @ thumb_func_end sub_805E4EC thumb_func_start MoveFieldObjectInNextDirectionInSequence MoveFieldObjectInNextDirectionInSequence: @ 805E500 diff --git a/src/field_map_obj.c b/src/field_map_obj.c old mode 100644 new mode 100755 index 755de7611..d186eea66 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2762,8 +2762,73 @@ u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +fieldmap_object_cb(sub_805E37C, sub_805E3A0, gUnknown_083753FC); + +u8 sub_805E3C0(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E3D4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + direction = gUnknown_0836DC09[mapObject->animPattern]; + if (mapObject->mapobj_unk_21 != 0) + { + direction = GetOppositeDirection(direction); + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 2; + return 1; +} + +u8 sub_805E40C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 v0; + u8 goSpeed0AnimId; + if (mapObject->mapobj_unk_21 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 0; + FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18)); + } + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + if (v0 == 1) + { + mapObject->mapobj_unk_21 ++; + FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18)); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + } + if (v0 != 0) + { + goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18); + } + FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 3; + return 1; +} + +u8 sub_805E4C4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + +u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} -void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); void sub_805E6F4(struct Sprite *sprite); -- cgit v1.2.3 From e616c995756179014da2784b1d4505d0a6ca5573 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 21:55:50 -0400 Subject: A handful more functions in the midst of field map object callbacks --- asm/field_map_obj.s | 123 ---------------------------------------------------- src/field_map_obj.c | 38 ++++++++++++++++ 2 files changed, 38 insertions(+), 123 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ddde64c0c..ea60b8293 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,129 +6,6 @@ .text - @ thumb_func_start sub_805E4EC -@ sub_805E4EC: @ 805E4EC - @ push {r4,lr} - @ adds r4, r1, 0 - @ bl npc_reset - @ movs r0, 0x1 - @ strh r0, [r4, 0x30] - @ pop {r4} - @ pop {r1} - @ bx r1 - @ thumb_func_end sub_805E4EC - - thumb_func_start MoveFieldObjectInNextDirectionInSequence -MoveFieldObjectInNextDirectionInSequence: @ 805E500 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - mov r8, r1 - adds r7, r2, 0 - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x3 - bne _0805E522 - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bne _0805E522 - movs r0, 0 - strb r0, [r2] -_0805E522: - adds r5, r4, 0 - adds r5, 0x21 - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl FieldObjectSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805E57C - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl FieldObjectSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r0, 24 -_0805E57C: - cmp r0, 0 - beq _0805E58E - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - lsls r0, 24 - lsrs r6, r0, 24 -_0805E58E: - adds r0, r4, 0 - mov r1, r8 - adds r2, r6, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - mov r1, r8 - strh r0, [r1, 0x30] - movs r0, 0x1 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MoveFieldObjectInNextDirectionInSequence - - thumb_func_start sub_805E5B4 -sub_805E5B4: @ 805E5B4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E5D2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805E5D2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E5B4 - thumb_func_start sub_805E5DC sub_805E5DC: @ 805E5DC push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index d186eea66..845f84a34 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2829,6 +2829,44 @@ u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +u8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, struct Sprite *sprite, u8 *directionSequence) +{ + u8 v0; + u8 goSpeed0AnimId; + if (mapObject->mapobj_unk_21 == 3 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 0; + } + FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + if (v0 == 1) + { + mapObject->mapobj_unk_21 ++; + FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + } + if (v0 != 0) + { + goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18); + } + FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 2; + return 1; +} + +u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); void sub_805E6F4(struct Sprite *sprite); -- cgit v1.2.3 From c3b7235a94f3ea8e6f0ac9f62c6551aef7520d37 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 22:30:35 -0400 Subject: Halfway mark on asm/field_map_obj.s --- asm/field_map_obj.s | 308 ------------------------------------------------ include/field_map_obj.h | 4 + src/field_map_obj.c | 56 ++++++++- 3 files changed, 57 insertions(+), 311 deletions(-) mode change 100644 => 100755 include/field_map_obj.h diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ea60b8293..d4f3040f5 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,314 +6,6 @@ .text - thumb_func_start sub_805E5DC -sub_805E5DC: @ 805E5DC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E5F8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E5FC @ =sub_805E600 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E5F8: .4byte gMapObjects -_0805E5FC: .4byte sub_805E600 - thumb_func_end sub_805E5DC - - thumb_func_start sub_805E600 -sub_805E600: @ 805E600 - push {r4,lr} - ldr r3, _0805E61C @ =gUnknown_0837540C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E61C: .4byte gUnknown_0837540C - thumb_func_end sub_805E600 - - thumb_func_start sub_805E620 -sub_805E620: @ 805E620 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E664 @ =gUnknown_08375418 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805E64C - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E64C - movs r0, 0x3 - strb r0, [r2] -_0805E64C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E664: .4byte gUnknown_08375418 - thumb_func_end sub_805E620 - - thumb_func_start sub_805E668 -sub_805E668: @ 805E668 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E684 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E688 @ =sub_805E68C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E684: .4byte gMapObjects -_0805E688: .4byte sub_805E68C - thumb_func_end sub_805E668 - - thumb_func_start sub_805E68C -sub_805E68C: @ 805E68C - push {r4,lr} - ldr r3, _0805E6A8 @ =gUnknown_0837541C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E6A8: .4byte gUnknown_0837541C - thumb_func_end sub_805E68C - - thumb_func_start sub_805E6AC -sub_805E6AC: @ 805E6AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E6F0 @ =gUnknown_08375428 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E6D8 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E6D8 - movs r0, 0x2 - strb r0, [r2] -_0805E6D8: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E6F0: .4byte gUnknown_08375428 - thumb_func_end sub_805E6AC - - thumb_func_start sub_805E6F4 -sub_805E6F4: @ 805E6F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E710 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E714 @ =sub_805E718 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E710: .4byte gMapObjects -_0805E714: .4byte sub_805E718 - thumb_func_end sub_805E6F4 - - thumb_func_start sub_805E718 -sub_805E718: @ 805E718 - push {r4,lr} - ldr r3, _0805E734 @ =gUnknown_0837542C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E734: .4byte gUnknown_0837542C - thumb_func_end sub_805E718 - - thumb_func_start sub_805E738 -sub_805E738: @ 805E738 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E77C @ =gUnknown_08375438 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E764 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E764 - movs r0, 0x2 - strb r0, [r2] -_0805E764: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E77C: .4byte gUnknown_08375438 - thumb_func_end sub_805E738 - - thumb_func_start sub_805E780 -sub_805E780: @ 805E780 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E79C @ =gMapObjects - adds r0, r2 - ldr r2, _0805E7A0 @ =sub_805E7A4 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E79C: .4byte gMapObjects -_0805E7A0: .4byte sub_805E7A4 - thumb_func_end sub_805E780 - - thumb_func_start sub_805E7A4 -sub_805E7A4: @ 805E7A4 - push {r4,lr} - ldr r3, _0805E7C0 @ =gUnknown_0837543C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E7C0: .4byte gUnknown_0837543C - thumb_func_end sub_805E7A4 - - thumb_func_start sub_805E7C4 -sub_805E7C4: @ 805E7C4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E808 @ =gUnknown_08375448 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805E7F0 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E7F0 - movs r0, 0x3 - strb r0, [r2] -_0805E7F0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E808: .4byte gUnknown_08375448 - thumb_func_end sub_805E7C4 - thumb_func_start sub_805E80C sub_805E80C: @ 805E80C push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h old mode 100644 new mode 100755 index c160f1c72..e66ffa28f --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -48,6 +48,10 @@ extern const u8 gUnknown_083753B0[2]; extern const u8 gUnknown_083753C8[2]; extern const u8 gUnknown_083753DC[5]; extern const u8 gUnknown_083753F4[5]; +extern const u8 gUnknown_08375418[4]; +extern const u8 gUnknown_08375428[4]; +extern const u8 gUnknown_08375438[4]; +extern const u8 gUnknown_08375448[4]; extern const u8 gUnknown_0837567B[9]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 845f84a34..f91328805 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2867,10 +2867,60 @@ u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -void sub_805E5DC(struct Sprite *sprite); -void sub_805E668(struct Sprite *sprite); -void sub_805E6F4(struct Sprite *sprite); +fieldmap_object_cb(sub_805E5DC, sub_805E600, gUnknown_0837540C); + +u8 sub_805E620(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375418, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E668, sub_805E68C, gUnknown_0837541C); + +u8 sub_805E6AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375428, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E6F4, sub_805E718, gUnknown_0837542C); + +u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375438, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + void sub_805E780(struct Sprite *sprite); + +fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C); + +u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375448, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + void sub_805E80C(struct Sprite *sprite); void sub_805E898(struct Sprite *sprite); void sub_805E924(struct Sprite *sprite); -- cgit v1.2.3 From 0f733d5b6d9944390a46b41e0f176835aedce6e8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 23:05:23 -0400 Subject: Remove agbcc submodule --- .gitignore | 1 + tools/agbcc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 160000 tools/agbcc diff --git a/.gitignore b/.gitignore index 13752b437..78af8c737 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ *.bat sound/**/*.bin src/*.s +tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map diff --git a/tools/agbcc b/tools/agbcc deleted file mode 160000 index 928b19519..000000000 --- a/tools/agbcc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 928b1951972d7ff8c46347b3dce9e254cf6c215c -- cgit v1.2.3 From 1f84228a0118c0ff3f5320647591a52af1b6e147 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 23 May 2017 08:52:21 -0400 Subject: Knock off twenty more field object callbacks --- asm/field_map_obj.s | 1540 ----------------------------------------------- include/field_map_obj.h | 20 + src/field_map_obj.c | 284 ++++++++- 3 files changed, 282 insertions(+), 1562 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d4f3040f5..4359ea6e8 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,1546 +6,6 @@ .text - thumb_func_start sub_805E80C -sub_805E80C: @ 805E80C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E828 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E82C @ =sub_805E830 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E828: .4byte gMapObjects -_0805E82C: .4byte sub_805E830 - thumb_func_end sub_805E80C - - thumb_func_start sub_805E830 -sub_805E830: @ 805E830 - push {r4,lr} - ldr r3, _0805E84C @ =gUnknown_0837544C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E84C: .4byte gUnknown_0837544C - thumb_func_end sub_805E830 - - thumb_func_start sub_805E850 -sub_805E850: @ 805E850 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E894 @ =gUnknown_08375458 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805E87C - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E87C - movs r0, 0x3 - strb r0, [r2] -_0805E87C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E894: .4byte gUnknown_08375458 - thumb_func_end sub_805E850 - - thumb_func_start sub_805E898 -sub_805E898: @ 805E898 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E8B4 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E8B8 @ =sub_805E8BC - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E8B4: .4byte gMapObjects -_0805E8B8: .4byte sub_805E8BC - thumb_func_end sub_805E898 - - thumb_func_start sub_805E8BC -sub_805E8BC: @ 805E8BC - push {r4,lr} - ldr r3, _0805E8D8 @ =gUnknown_0837545C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E8D8: .4byte gUnknown_0837545C - thumb_func_end sub_805E8BC - - thumb_func_start sub_805E8DC -sub_805E8DC: @ 805E8DC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E920 @ =gUnknown_08375468 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E908 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E908 - movs r0, 0x2 - strb r0, [r2] -_0805E908: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E920: .4byte gUnknown_08375468 - thumb_func_end sub_805E8DC - - thumb_func_start sub_805E924 -sub_805E924: @ 805E924 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E940 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E944 @ =sub_805E948 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E940: .4byte gMapObjects -_0805E944: .4byte sub_805E948 - thumb_func_end sub_805E924 - - thumb_func_start sub_805E948 -sub_805E948: @ 805E948 - push {r4,lr} - ldr r3, _0805E964 @ =gUnknown_0837546C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E964: .4byte gUnknown_0837546C - thumb_func_end sub_805E948 - - thumb_func_start sub_805E968 -sub_805E968: @ 805E968 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E9AC @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E994 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E994 - movs r0, 0x2 - strb r0, [r2] -_0805E994: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E9AC: .4byte gUnknown_08375240 - thumb_func_end sub_805E968 - - thumb_func_start sub_805E9B0 -sub_805E9B0: @ 805E9B0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E9CC @ =gMapObjects - adds r0, r2 - ldr r2, _0805E9D0 @ =sub_805E9D4 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E9CC: .4byte gMapObjects -_0805E9D0: .4byte sub_805E9D4 - thumb_func_end sub_805E9B0 - - thumb_func_start sub_805E9D4 -sub_805E9D4: @ 805E9D4 - push {r4,lr} - ldr r3, _0805E9F0 @ =gUnknown_08375478 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E9F0: .4byte gUnknown_08375478 - thumb_func_end sub_805E9D4 - - thumb_func_start sub_805E9F4 -sub_805E9F4: @ 805E9F4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EA38 @ =gUnknown_08375484 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EA20 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EA20 - movs r0, 0x3 - strb r0, [r2] -_0805EA20: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EA38: .4byte gUnknown_08375484 - thumb_func_end sub_805E9F4 - - thumb_func_start sub_805EA3C -sub_805EA3C: @ 805EA3C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EA58 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EA5C @ =sub_805EA60 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EA58: .4byte gMapObjects -_0805EA5C: .4byte sub_805EA60 - thumb_func_end sub_805EA3C - - thumb_func_start sub_805EA60 -sub_805EA60: @ 805EA60 - push {r4,lr} - ldr r3, _0805EA7C @ =gUnknown_08375488 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EA7C: .4byte gUnknown_08375488 - thumb_func_end sub_805EA60 - - thumb_func_start sub_805EA80 -sub_805EA80: @ 805EA80 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EAC4 @ =gUnknown_08375494 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EAAC - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EAAC - movs r0, 0x3 - strb r0, [r2] -_0805EAAC: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EAC4: .4byte gUnknown_08375494 - thumb_func_end sub_805EA80 - - thumb_func_start sub_805EAC8 -sub_805EAC8: @ 805EAC8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EAE4 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EAE8 @ =sub_805EAEC - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EAE4: .4byte gMapObjects -_0805EAE8: .4byte sub_805EAEC - thumb_func_end sub_805EAC8 - - thumb_func_start sub_805EAEC -sub_805EAEC: @ 805EAEC - push {r4,lr} - ldr r3, _0805EB08 @ =gUnknown_08375498 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EB08: .4byte gUnknown_08375498 - thumb_func_end sub_805EAEC - - thumb_func_start sub_805EB0C -sub_805EB0C: @ 805EB0C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EB50 @ =gUnknown_083754A4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805EB38 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EB38 - movs r0, 0x2 - strb r0, [r2] -_0805EB38: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EB50: .4byte gUnknown_083754A4 - thumb_func_end sub_805EB0C - - thumb_func_start sub_805EB54 -sub_805EB54: @ 805EB54 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EB70 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EB74 @ =sub_805EB78 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EB70: .4byte gMapObjects -_0805EB74: .4byte sub_805EB78 - thumb_func_end sub_805EB54 - - thumb_func_start sub_805EB78 -sub_805EB78: @ 805EB78 - push {r4,lr} - ldr r3, _0805EB94 @ =gUnknown_083754A8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EB94: .4byte gUnknown_083754A8 - thumb_func_end sub_805EB78 - - thumb_func_start sub_805EB98 -sub_805EB98: @ 805EB98 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EBDC @ =gUnknown_083754B4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805EBC4 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EBC4 - movs r0, 0x2 - strb r0, [r2] -_0805EBC4: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EBDC: .4byte gUnknown_083754B4 - thumb_func_end sub_805EB98 - - thumb_func_start sub_805EBE0 -sub_805EBE0: @ 805EBE0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EBFC @ =gMapObjects - adds r0, r2 - ldr r2, _0805EC00 @ =sub_805EC04 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EBFC: .4byte gMapObjects -_0805EC00: .4byte sub_805EC04 - thumb_func_end sub_805EBE0 - - thumb_func_start sub_805EC04 -sub_805EC04: @ 805EC04 - push {r4,lr} - ldr r3, _0805EC20 @ =gUnknown_083754B8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EC20: .4byte gUnknown_083754B8 - thumb_func_end sub_805EC04 - - thumb_func_start sub_805EC24 -sub_805EC24: @ 805EC24 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EC68 @ =gUnknown_083754C4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EC50 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EC50 - movs r0, 0x3 - strb r0, [r2] -_0805EC50: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EC68: .4byte gUnknown_083754C4 - thumb_func_end sub_805EC24 - - thumb_func_start sub_805EC6C -sub_805EC6C: @ 805EC6C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EC88 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EC8C @ =sub_805EC90 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EC88: .4byte gMapObjects -_0805EC8C: .4byte sub_805EC90 - thumb_func_end sub_805EC6C - - thumb_func_start sub_805EC90 -sub_805EC90: @ 805EC90 - push {r4,lr} - ldr r3, _0805ECAC @ =gUnknown_083754C8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805ECAC: .4byte gUnknown_083754C8 - thumb_func_end sub_805EC90 - - thumb_func_start sub_805ECB0 -sub_805ECB0: @ 805ECB0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805ECF4 @ =gUnknown_083754D4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805ECDC - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805ECDC - movs r0, 0x3 - strb r0, [r2] -_0805ECDC: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805ECF4: .4byte gUnknown_083754D4 - thumb_func_end sub_805ECB0 - - thumb_func_start sub_805ECF8 -sub_805ECF8: @ 805ECF8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805ED14 @ =gMapObjects - adds r0, r2 - ldr r2, _0805ED18 @ =sub_805ED1C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805ED14: .4byte gMapObjects -_0805ED18: .4byte sub_805ED1C - thumb_func_end sub_805ECF8 - - thumb_func_start sub_805ED1C -sub_805ED1C: @ 805ED1C - push {r4,lr} - ldr r3, _0805ED38 @ =gUnknown_083754D8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805ED38: .4byte gUnknown_083754D8 - thumb_func_end sub_805ED1C - - thumb_func_start sub_805ED3C -sub_805ED3C: @ 805ED3C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805ED80 @ =gUnknown_083754E4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805ED68 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805ED68 - movs r0, 0x2 - strb r0, [r2] -_0805ED68: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805ED80: .4byte gUnknown_083754E4 - thumb_func_end sub_805ED3C - - thumb_func_start sub_805ED84 -sub_805ED84: @ 805ED84 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EDA0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EDA4 @ =sub_805EDA8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EDA0: .4byte gMapObjects -_0805EDA4: .4byte sub_805EDA8 - thumb_func_end sub_805ED84 - - thumb_func_start sub_805EDA8 -sub_805EDA8: @ 805EDA8 - push {r4,lr} - ldr r3, _0805EDC4 @ =gUnknown_083754E8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EDC4: .4byte gUnknown_083754E8 - thumb_func_end sub_805EDA8 - - thumb_func_start sub_805EDC8 -sub_805EDC8: @ 805EDC8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EE0C @ =gUnknown_083754F4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805EDF4 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EDF4 - movs r0, 0x2 - strb r0, [r2] -_0805EDF4: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EE0C: .4byte gUnknown_083754F4 - thumb_func_end sub_805EDC8 - - thumb_func_start sub_805EE10 -sub_805EE10: @ 805EE10 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EE2C @ =gMapObjects - adds r0, r2 - ldr r2, _0805EE30 @ =sub_805EE34 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EE2C: .4byte gMapObjects -_0805EE30: .4byte sub_805EE34 - thumb_func_end sub_805EE10 - - thumb_func_start sub_805EE34 -sub_805EE34: @ 805EE34 - push {r4,lr} - ldr r3, _0805EE50 @ =gUnknown_083754F8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EE50: .4byte gUnknown_083754F8 - thumb_func_end sub_805EE34 - - thumb_func_start sub_805EE54 -sub_805EE54: @ 805EE54 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EE98 @ =gUnknown_08375504 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EE80 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EE80 - movs r0, 0x3 - strb r0, [r2] -_0805EE80: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EE98: .4byte gUnknown_08375504 - thumb_func_end sub_805EE54 - - thumb_func_start sub_805EE9C -sub_805EE9C: @ 805EE9C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EEB8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EEBC @ =sub_805EEC0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EEB8: .4byte gMapObjects -_0805EEBC: .4byte sub_805EEC0 - thumb_func_end sub_805EE9C - - thumb_func_start sub_805EEC0 -sub_805EEC0: @ 805EEC0 - push {r4,lr} - ldr r3, _0805EEDC @ =gUnknown_08375508 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EEDC: .4byte gUnknown_08375508 - thumb_func_end sub_805EEC0 - - thumb_func_start sub_805EEE0 -sub_805EEE0: @ 805EEE0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EF24 @ =gUnknown_08375514 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EF0C - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EF0C - movs r0, 0x3 - strb r0, [r2] -_0805EF0C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EF24: .4byte gUnknown_08375514 - thumb_func_end sub_805EEE0 - - thumb_func_start sub_805EF28 -sub_805EF28: @ 805EF28 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EF44 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EF48 @ =sub_805EF4C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EF44: .4byte gMapObjects -_0805EF48: .4byte sub_805EF4C - thumb_func_end sub_805EF28 - - thumb_func_start sub_805EF4C -sub_805EF4C: @ 805EF4C - push {r4,lr} - ldr r3, _0805EF68 @ =gUnknown_08375518 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EF68: .4byte gUnknown_08375518 - thumb_func_end sub_805EF4C - - thumb_func_start sub_805EF6C -sub_805EF6C: @ 805EF6C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EFB0 @ =gUnknown_08375524 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EF98 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EF98 - movs r0, 0x3 - strb r0, [r2] -_0805EF98: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EFB0: .4byte gUnknown_08375524 - thumb_func_end sub_805EF6C - - thumb_func_start sub_805EFB4 -sub_805EFB4: @ 805EFB4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EFD0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EFD4 @ =sub_805EFD8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EFD0: .4byte gMapObjects -_0805EFD4: .4byte sub_805EFD8 - thumb_func_end sub_805EFB4 - - thumb_func_start sub_805EFD8 -sub_805EFD8: @ 805EFD8 - push {r4,lr} - ldr r3, _0805EFF4 @ =gUnknown_08375528 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EFF4: .4byte gUnknown_08375528 - thumb_func_end sub_805EFD8 - - thumb_func_start sub_805EFF8 -sub_805EFF8: @ 805EFF8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F03C @ =gUnknown_08375534 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F024 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F024 - movs r0, 0x3 - strb r0, [r2] -_0805F024: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F03C: .4byte gUnknown_08375534 - thumb_func_end sub_805EFF8 - - thumb_func_start sub_805F040 -sub_805F040: @ 805F040 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F05C @ =gMapObjects - adds r0, r2 - ldr r2, _0805F060 @ =sub_805F064 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F05C: .4byte gMapObjects -_0805F060: .4byte sub_805F064 - thumb_func_end sub_805F040 - - thumb_func_start sub_805F064 -sub_805F064: @ 805F064 - push {r4,lr} - ldr r3, _0805F080 @ =gUnknown_08375538 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F080: .4byte gUnknown_08375538 - thumb_func_end sub_805F064 - - thumb_func_start sub_805F084 -sub_805F084: @ 805F084 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F0C8 @ =gUnknown_08375544 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F0B0 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F0B0 - movs r0, 0x3 - strb r0, [r2] -_0805F0B0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F0C8: .4byte gUnknown_08375544 - thumb_func_end sub_805F084 - - thumb_func_start sub_805F0CC -sub_805F0CC: @ 805F0CC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F0E8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805F0EC @ =sub_805F0F0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F0E8: .4byte gMapObjects -_0805F0EC: .4byte sub_805F0F0 - thumb_func_end sub_805F0CC - - thumb_func_start sub_805F0F0 -sub_805F0F0: @ 805F0F0 - push {r4,lr} - ldr r3, _0805F10C @ =gUnknown_08375548 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F10C: .4byte gUnknown_08375548 - thumb_func_end sub_805F0F0 - - thumb_func_start sub_805F110 -sub_805F110: @ 805F110 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F154 @ =gUnknown_08375554 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F13C - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F13C - movs r0, 0x3 - strb r0, [r2] -_0805F13C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F154: .4byte gUnknown_08375554 - thumb_func_end sub_805F110 - - thumb_func_start sub_805F158 -sub_805F158: @ 805F158 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F174 @ =gMapObjects - adds r0, r2 - ldr r2, _0805F178 @ =sub_805F17C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F174: .4byte gMapObjects -_0805F178: .4byte sub_805F17C - thumb_func_end sub_805F158 - - thumb_func_start sub_805F17C -sub_805F17C: @ 805F17C - push {r4,lr} - ldr r3, _0805F198 @ =gUnknown_08375558 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F198: .4byte gUnknown_08375558 - thumb_func_end sub_805F17C - - thumb_func_start sub_805F19C -sub_805F19C: @ 805F19C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F1E0 @ =gUnknown_08375564 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F1C8 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F1C8 - movs r0, 0x3 - strb r0, [r2] -_0805F1C8: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F1E0: .4byte gUnknown_08375564 - thumb_func_end sub_805F19C - - thumb_func_start sub_805F1E4 -sub_805F1E4: @ 805F1E4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F200 @ =gMapObjects - adds r0, r2 - ldr r2, _0805F204 @ =sub_805F208 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F200: .4byte gMapObjects -_0805F204: .4byte sub_805F208 - thumb_func_end sub_805F1E4 - - thumb_func_start sub_805F208 -sub_805F208: @ 805F208 - push {r4,lr} - ldr r3, _0805F224 @ =gUnknown_08375568 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F224: .4byte gUnknown_08375568 - thumb_func_end sub_805F208 - - thumb_func_start sub_805F228 -sub_805F228: @ 805F228 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F26C @ =gUnknown_08375574 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F254 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F254 - movs r0, 0x3 - strb r0, [r2] -_0805F254: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F26C: .4byte gUnknown_08375574 - thumb_func_end sub_805F228 - - thumb_func_start sub_805F270 -sub_805F270: @ 805F270 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F28C @ =gMapObjects - adds r0, r2 - ldr r2, _0805F290 @ =sub_805F294 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F28C: .4byte gMapObjects -_0805F290: .4byte sub_805F294 - thumb_func_end sub_805F270 - - thumb_func_start sub_805F294 -sub_805F294: @ 805F294 - push {r4,lr} - ldr r3, _0805F2B0 @ =gUnknown_08375578 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F2B0: .4byte gUnknown_08375578 - thumb_func_end sub_805F294 - - thumb_func_start sub_805F2B4 -sub_805F2B4: @ 805F2B4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F2F8 @ =gUnknown_08375584 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F2E0 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F2E0 - movs r0, 0x3 - strb r0, [r2] -_0805F2E0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F2F8: .4byte gUnknown_08375584 - thumb_func_end sub_805F2B4 - thumb_func_start sub_805F2FC sub_805F2FC: @ 805F2FC push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index e66ffa28f..559183cd3 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -52,6 +52,26 @@ extern const u8 gUnknown_08375418[4]; extern const u8 gUnknown_08375428[4]; extern const u8 gUnknown_08375438[4]; extern const u8 gUnknown_08375448[4]; +extern const u8 gUnknown_08375458[4]; +extern const u8 gUnknown_08375468[4]; +extern const u8 gUnknown_08375240[4]; +extern const u8 gUnknown_08375484[4]; +extern const u8 gUnknown_08375494[4]; +extern const u8 gUnknown_083754A4[4]; +extern const u8 gUnknown_083754B4[4]; +extern const u8 gUnknown_083754C4[4]; +extern const u8 gUnknown_083754D4[4]; +extern const u8 gUnknown_083754E4[4]; +extern const u8 gUnknown_083754F4[4]; +extern const u8 gUnknown_08375504[4]; +extern const u8 gUnknown_08375514[4]; +extern const u8 gUnknown_08375524[4]; +extern const u8 gUnknown_08375534[4]; +extern const u8 gUnknown_08375544[4]; +extern const u8 gUnknown_08375554[4]; +extern const u8 gUnknown_08375564[4]; +extern const u8 gUnknown_08375574[4]; +extern const u8 gUnknown_08375584[4]; extern const u8 gUnknown_0837567B[9]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f91328805..1f48c9aad 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2906,8 +2906,6 @@ u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite) return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); } -void sub_805E780(struct Sprite *sprite); - fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C); u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite) @@ -2921,26 +2919,268 @@ u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite) return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); } -void sub_805E80C(struct Sprite *sprite); -void sub_805E898(struct Sprite *sprite); -void sub_805E924(struct Sprite *sprite); -void sub_805E9B0(struct Sprite *sprite); -void sub_805EA3C(struct Sprite *sprite); -void sub_805EAC8(struct Sprite *sprite); -void sub_805EB54(struct Sprite *sprite); -void sub_805EBE0(struct Sprite *sprite); -void sub_805EC6C(struct Sprite *sprite); -void sub_805ECF8(struct Sprite *sprite); -void sub_805ED84(struct Sprite *sprite); -void sub_805EE10(struct Sprite *sprite); -void sub_805EE9C(struct Sprite *sprite); -void sub_805EF28(struct Sprite *sprite); -void sub_805EFB4(struct Sprite *sprite); -void sub_805F040(struct Sprite *sprite); -void sub_805F0CC(struct Sprite *sprite); -void sub_805F158(struct Sprite *sprite); -void sub_805F1E4(struct Sprite *sprite); -void sub_805F270(struct Sprite *sprite); + + +fieldmap_object_cb(sub_805E80C, sub_805E830, gUnknown_0837544C); + +u8 sub_805E850(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375458, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E898, sub_805E8BC, gUnknown_0837545C); + +u8 sub_805E8DC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375468, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E924, sub_805E948, gUnknown_0837546C); + +u8 sub_805E968(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E9B0, sub_805E9D4, gUnknown_08375478); + +u8 sub_805E9F4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375484, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EA3C, sub_805EA60, gUnknown_08375488); + +u8 sub_805EA80(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375494, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EAC8, sub_805EAEC, gUnknown_08375498); + +u8 sub_805EB0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754A4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EB54, sub_805EB78, gUnknown_083754A8); + +u8 sub_805EB98(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754B4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EBE0, sub_805EC04, gUnknown_083754B8); + +u8 sub_805EC24(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754C4, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EC6C, sub_805EC90, gUnknown_083754C8); + +u8 sub_805ECB0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754D4, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805ECF8, sub_805ED1C, gUnknown_083754D8); + +u8 sub_805ED3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754E4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805ED84, sub_805EDA8, gUnknown_083754E8); + +u8 sub_805EDC8(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754F4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EE10, sub_805EE34, gUnknown_083754F8); + +u8 sub_805EE54(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375504, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EE9C, sub_805EEC0, gUnknown_08375508); + +u8 sub_805EEE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375514, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EF28, sub_805EF4C, gUnknown_08375518); + +u8 sub_805EF6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375524, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EFB4, sub_805EFD8, gUnknown_08375528); + +u8 sub_805EFF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375534, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F040, sub_805F064, gUnknown_08375538); + +u8 sub_805F084(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375544, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F0CC, sub_805F0F0, gUnknown_08375548); + +u8 sub_805F110(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375554, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F158, sub_805F17C, gUnknown_08375558); + +u8 sub_805F19C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375564, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F1E4, sub_805F208, gUnknown_08375568); + +u8 sub_805F228(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375574, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F270, sub_805F294, gUnknown_08375578); + +u8 sub_805F2B4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375584, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +}; + void sub_805F2FC(struct Sprite *sprite); void FieldObjectCB_TreeDisguise(struct Sprite *sprite); void FieldObjectCB_MountainDisguise(struct Sprite *sprite); -- cgit v1.2.3 From 06265cbe852d4d21e4ad18012723a56e54f5fe1e Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 10:16:08 -0400 Subject: IsMetatileDirectionallyImpassable, CheckForCollisionBetweenFieldObjects --- .gitignore | 1 + asm/field_map_obj.s | 114 ------------------------------------------ include/field_ground_effect.h | 1 + include/field_map_obj.h | 2 + src/field_map_obj.c | 31 ++++++++++++ 5 files changed, 35 insertions(+), 114 deletions(-) diff --git a/.gitignore b/.gitignore index 78af8c737..5b70a4586 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ types_*.taghl *.sa* Thumbs.db build/* +.idea/codeStyleSettings.xml diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 4359ea6e8..eef8c69c7 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,120 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start IsMetatileDirectionallyImpassable -IsMetatileDirectionallyImpassable: @ 8060160 - push {r4-r7,lr} - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 24 - ldr r1, _080601A8 @ =gUnknown_08375684 - lsrs r3, 22 - subs r5, r3, 0x4 - adds r1, r5, r1 - ldrb r0, [r0, 0x1E] - ldr r1, [r1] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080601A2 - ldr r4, _080601AC @ =gUnknown_08375694 - adds r4, r5, r4 - lsls r0, r6, 16 - asrs r0, 16 - lsls r1, r7, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _080601B0 -_080601A2: - movs r0, 0x1 - b _080601B2 - .align 2, 0 -_080601A8: .4byte gUnknown_08375684 -_080601AC: .4byte gUnknown_08375694 -_080601B0: - movs r0, 0 -_080601B2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end IsMetatileDirectionallyImpassable - - thumb_func_start CheckForCollisionBetweenFieldObjects -CheckForCollisionBetweenFieldObjects: @ 80601B8 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r7, r1, 16 - movs r4, 0 - lsls r2, 16 - asrs r5, r2, 16 -_080601C6: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _0806021C @ =gMapObjects - adds r2, r0, r1 - ldrb r0, [r2] - lsls r0, 31 - cmp r0, 0 - beq _08060220 - cmp r2, r6 - beq _08060220 - movs r0, 0x10 - ldrsh r1, [r2, r0] - lsls r0, r7, 16 - asrs r3, r0, 16 - cmp r1, r3 - bne _080601F0 - movs r1, 0x12 - ldrsh r0, [r2, r1] - cmp r0, r5 - beq _08060200 -_080601F0: - movs r1, 0x14 - ldrsh r0, [r2, r1] - cmp r0, r3 - bne _08060220 - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r5 - bne _08060220 -_08060200: - ldrb r0, [r6, 0xB] - lsls r0, 28 - lsrs r0, 28 - ldrb r1, [r2, 0xB] - lsls r1, 28 - lsrs r1, 28 - bl AreZCoordsCompatible - lsls r0, 24 - cmp r0, 0 - beq _08060220 - movs r0, 0x1 - b _0806022C - .align 2, 0 -_0806021C: .4byte gMapObjects -_08060220: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080601C6 - movs r0, 0 -_0806022C: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckForCollisionBetweenFieldObjects - thumb_func_start sub_8060234 sub_8060234: @ 8060234 push {lr} diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h index 590923041..8a69426b3 100644 --- a/include/field_ground_effect.h +++ b/include/field_ground_effect.h @@ -6,5 +6,6 @@ #define POKERUBY_FIELD_GROUND_EFFECT_H bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y); +bool8 AreZCoordsCompatible(u8 z1, u8 z2); #endif //POKERUBY_FIELD_GROUND_EFFECT_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 559183cd3..80add1403 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -35,6 +35,8 @@ void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375240[4]; extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); +extern bool8 (*const gUnknown_08375684[4])(u8); +extern bool8 (*const gUnknown_08375694[4])(u8); extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_083752C0[2]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 1f48c9aad..c94b5a180 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3440,3 +3440,34 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, } return 0; } + +bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +{ + if (gUnknown_08375684[direction - 1](mapObject->mapobj_unk_1E) || gUnknown_08375694[direction - 1](MapGridGetMetatileBehaviorAt(x, y))) + { + return 1; + } + return 0; +} + +bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y) +{ + struct MapObject *mapObject2; + u8 i; + for (i=0; i<16; i++) + { + mapObject2 = &gMapObjects[i]; + if (mapObject2->active && mapObject2 != mapObject) + { + if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y)) + { + continue; + } + if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0)) + { + return 1; + } + } + } + return 0; +} -- cgit v1.2.3 From 506013fe4cf2fc368ed4a175223c1883a88416f2 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 11:13:36 -0400 Subject: Another set of functions related to adjusting coordinates --- asm/field_map_obj.s | 227 ------------------------------------------------ include/field_map_obj.h | 2 + src/field_map_obj.c | 65 ++++++++++++++ 3 files changed, 67 insertions(+), 227 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index eef8c69c7..6878512e6 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,233 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8060234 -sub_8060234: @ 8060234 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08060280 - ldr r3, _08060278 @ =gSprites - ldr r2, _0806027C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x3C] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08060280 - movs r0, 0x1 - b _08060282 - .align 2, 0 -_08060278: .4byte gSprites -_0806027C: .4byte gMapObjects -_08060280: - movs r0, 0 -_08060282: - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8060234 - - thumb_func_start sub_8060288 -sub_8060288: @ 8060288 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _080602C6 - ldr r3, _080602CC @ =gSprites - ldr r2, _080602D0 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x3C] - movs r0, 0x4 - orrs r0, r2 - strh r0, [r1, 0x3C] -_080602C6: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080602CC: .4byte gSprites -_080602D0: .4byte gMapObjects - thumb_func_end sub_8060288 - - thumb_func_start MoveCoords -MoveCoords: @ 80602D4 - push {r4,lr} - lsls r0, 24 - ldr r3, _080602F4 @ =gDirectionToVector - lsrs r0, 22 - adds r0, r3 - ldrh r3, [r0] - ldrh r4, [r1] - adds r3, r4 - strh r3, [r1] - ldrh r0, [r0, 0x2] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080602F4: .4byte gDirectionToVector - thumb_func_end MoveCoords - - thumb_func_start unref_sub_80602F8 -unref_sub_80602F8: @ 80602F8 - push {r4,lr} - lsls r0, 24 - ldr r3, _0806031C @ =gDirectionToVector - lsrs r0, 22 - adds r0, r3 - ldrh r3, [r0] - lsls r3, 4 - ldrh r4, [r1] - adds r3, r4 - strh r3, [r1] - ldrh r0, [r0, 0x2] - lsls r0, 4 - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806031C: .4byte gDirectionToVector - thumb_func_end unref_sub_80602F8 - - thumb_func_start sub_8060320 -sub_8060320: @ 8060320 - push {r4-r7,lr} - adds r4, r1, 0 - ldr r1, [sp, 0x14] - lsls r0, 24 - lsls r3, 16 - lsrs r3, 16 - adds r7, r3, 0 - lsls r1, 16 - lsrs r6, r1, 16 - mov r12, r6 - ldr r1, _08060384 @ =gDirectionToVector - lsrs r0, 22 - adds r5, r0, r1 - movs r0, 0 - ldrsh r1, [r5, r0] - cmp r1, 0 - ble _0806034C - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r4] - adds r0, r3 - strh r0, [r4] -_0806034C: - cmp r1, 0 - bge _0806035A - ldrh r1, [r4] - lsls r0, r7, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r4] -_0806035A: - movs r0, 0x2 - ldrsh r1, [r5, r0] - cmp r1, 0 - ble _0806036C - lsls r0, r6, 16 - asrs r0, 16 - ldrh r3, [r2] - adds r0, r3 - strh r0, [r2] -_0806036C: - cmp r1, 0 - bge _0806037C - ldrh r1, [r2] - mov r3, r12 - lsls r0, r3, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r2] -_0806037C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08060384: .4byte gDirectionToVector - thumb_func_end sub_8060320 - - thumb_func_start sub_8060388 -sub_8060388: @ 8060388 - push {r4,r5,lr} - ldr r5, _080603C0 @ =gSaveBlock1 - ldrh r4, [r5] - lsls r0, 16 - asrs r0, 16 - subs r0, r4 - lsls r0, 4 - strh r0, [r2] - ldrh r0, [r5, 0x2] - lsls r1, 16 - asrs r1, 16 - subs r1, r0 - lsls r1, 4 - strh r1, [r3] - ldr r1, _080603C4 @ =gUnknown_0300489C - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r1, _080603C8 @ =gUnknown_03004898 - ldrh r0, [r3] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080603C0: .4byte gSaveBlock1 -_080603C4: .4byte gUnknown_0300489C -_080603C8: .4byte gUnknown_03004898 - thumb_func_end sub_8060388 - thumb_func_start sub_80603CC sub_80603CC: @ 80603CC push {r4-r7,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 80add1403..3a56ed636 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -77,4 +77,6 @@ extern const u8 gUnknown_08375584[4]; extern const u8 gUnknown_0837567B[9]; +extern const struct Coords16 gDirectionToVector[]; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index c94b5a180..8ca2970ab 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3471,3 +3471,68 @@ bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s } return 0; } + +bool8 sub_8060234(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 mapObjectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) + { + if (gSprites[gMapObjects[mapObjectId].spriteId].data7 & 2) + { + return 1; + } + } + return 0; +} + +void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 mapObjectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) + { + gSprites[gMapObjects[mapObjectId].spriteId].data7 |= 4; + } +} + +void MoveCoords(u8 direction, s16 *x, s16 *y) +{ + *x += gDirectionToVector[direction].x; + *y += gDirectionToVector[direction].y; +} + +void unref_sub_80602F8(u8 direction, s16 *x, s16 *y) +{ + *x += gDirectionToVector[direction].x << 4; + *y += gDirectionToVector[direction].y << 4; +} + +void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY) +{ + if (gDirectionToVector[direction].x > 0) + { + *x += deltaX; + } + if (gDirectionToVector[direction].x < 0) + { + *x -= deltaX; + } + if (gDirectionToVector[direction].y > 0) + { + *y += deltaY; + } + if (gDirectionToVector[direction].y < 0) + { + *y -= deltaY; + } +} + +extern s16 gUnknown_03004898; +extern s16 gUnknown_0300489C; + +void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2) +{ + *x2 = (x1 - gSaveBlock1.pos.x) << 4; + *y2 = (y1 - gSaveBlock1.pos.y) << 4; + *x2 -= gUnknown_0300489C; + *y2 -= gUnknown_03004898; +} -- cgit v1.2.3 From dd7f59cde93529e3e63bd2df0d096d1718835873 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 12:06:33 -0400 Subject: Some more functions related to FMO camera and special anims --- asm/field_map_obj.s | 259 ------------------------------------------------ include/field_camera.h | 10 ++ include/field_map_obj.h | 4 + src/field_camera.c | 10 -- src/field_map_obj.c | 102 ++++++++++++++++++- 5 files changed, 111 insertions(+), 274 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 6878512e6..95e8c7949 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,265 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_80603CC -sub_80603CC: @ 80603CC - push {r4-r7,lr} - adds r7, r2, 0 - mov r12, r3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r0, _0806045C @ =gUnknown_0300489C - ldrh r0, [r0] - negs r0, r0 - ldr r1, _08060460 @ =gUnknown_03004880 - ldr r2, [r1, 0x10] - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _08060464 @ =gUnknown_03004898 - ldrh r0, [r0] - negs r0, r0 - ldr r1, [r1, 0x14] - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r2, 0 - ble _08060406 - lsls r0, r3, 16 - movs r3, 0x80 - lsls r3, 13 - adds r0, r3 - lsrs r3, r0, 16 -_08060406: - cmp r2, 0 - bge _08060412 - lsls r0, r3, 16 - ldr r2, _08060468 @ =0xfff00000 - adds r0, r2 - lsrs r3, r0, 16 -_08060412: - cmp r1, 0 - ble _08060420 - lsls r0, r4, 16 - movs r2, 0x80 - lsls r2, 13 - adds r0, r2 - lsrs r4, r0, 16 -_08060420: - cmp r1, 0 - bge _0806042C - lsls r0, r4, 16 - ldr r1, _08060468 @ =0xfff00000 - adds r0, r1 - lsrs r4, r0, 16 -_0806042C: - ldr r2, _0806046C @ =gSaveBlock1 - ldrh r1, [r2] - lsls r0, r5, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - lsls r1, r3, 16 - asrs r1, 16 - adds r1, r0 - strh r1, [r7] - ldrh r1, [r2, 0x2] - lsls r0, r6, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - lsls r1, r4, 16 - asrs r1, 16 - adds r1, r0 - mov r2, r12 - strh r1, [r2] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806045C: .4byte gUnknown_0300489C -_08060460: .4byte gUnknown_03004880 -_08060464: .4byte gUnknown_03004898 -_08060468: .4byte 0xfff00000 -_0806046C: .4byte gSaveBlock1 - thumb_func_end sub_80603CC - - thumb_func_start sub_8060470 -sub_8060470: @ 8060470 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - mov r8, r1 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - mov r2, r8 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r2, r6, 0 - mov r3, r8 - bl sub_80603CC - lsls r4, 16 - asrs r4, 16 - ldrh r0, [r6] - adds r4, r0 - strh r4, [r6] - lsls r5, 16 - asrs r5, 16 - mov r1, r8 - ldrh r1, [r1] - adds r5, r1 - mov r2, r8 - strh r5, [r2] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8060470 - - thumb_func_start GetFieldObjectMovingCameraOffset -GetFieldObjectMovingCameraOffset: @ 80604BC - push {lr} - adds r2, r0, 0 - movs r0, 0 - strh r0, [r2] - strh r0, [r1] - ldr r3, _080604F8 @ =gUnknown_03004880 - ldr r0, [r3, 0x10] - cmp r0, 0 - ble _080604D2 - movs r0, 0x1 - strh r0, [r2] -_080604D2: - ldr r0, [r3, 0x10] - cmp r0, 0 - bge _080604DE - ldrh r0, [r2] - subs r0, 0x1 - strh r0, [r2] -_080604DE: - ldr r2, [r3, 0x14] - cmp r2, 0 - ble _080604EA - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080604EA: - cmp r2, 0 - bge _080604F4 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_080604F4: - pop {r0} - bx r0 - .align 2, 0 -_080604F8: .4byte gUnknown_03004880 - thumb_func_end GetFieldObjectMovingCameraOffset - - thumb_func_start FieldObjectMoveDestCoords -FieldObjectMoveDestCoords: @ 80604FC - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - ldrh r4, [r0, 0x10] - strh r4, [r2] - ldrh r0, [r0, 0x12] - strh r0, [r3] - adds r0, r1, 0 - adds r1, r2, 0 - adds r2, r3, 0 - bl MoveCoords - pop {r4} - pop {r0} - bx r0 - thumb_func_end FieldObjectMoveDestCoords - - thumb_func_start FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive -FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive: @ 806051C - push {lr} - ldrb r1, [r0] - movs r0, 0x42 - ands r0, r1 - cmp r0, 0 - bne _0806052C - movs r0, 0 - b _0806052E -_0806052C: - movs r0, 0x1 -_0806052E: - pop {r1} - bx r1 - thumb_func_end FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - - thumb_func_start FieldObjectIsSpecialAnimActive -FieldObjectIsSpecialAnimActive: @ 8060534 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _0806054A - ldrb r0, [r1, 0x1C] - cmp r0, 0xFF - beq _0806054A - movs r0, 0x1 - b _0806054C -_0806054A: - movs r0, 0 -_0806054C: - pop {r1} - bx r1 - thumb_func_end FieldObjectIsSpecialAnimActive - - thumb_func_start FieldObjectSetSpecialAnim -FieldObjectSetSpecialAnim: @ 8060550 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _08060590 - adds r0, r4, 0 - bl UnfreezeMapObject - strb r5, [r4, 0x1C] - ldrb r0, [r4] - movs r1, 0x40 - orrs r0, r1 - movs r1, 0x7F - ands r0, r1 - strb r0, [r4] - ldr r2, _0806058C @ =gSprites - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x32] - movs r0, 0 - b _08060592 - .align 2, 0 -_0806058C: .4byte gSprites -_08060590: - movs r0, 0x1 -_08060592: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end FieldObjectSetSpecialAnim - thumb_func_start FieldObjectForceSetSpecialAnim FieldObjectForceSetSpecialAnim: @ 8060598 push {r4,r5,lr} diff --git a/include/field_camera.h b/include/field_camera.h index 51c370d0a..9021b579e 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -1,6 +1,16 @@ #ifndef GUARD_FIELD_CAMERA_H #define GUARD_FIELD_CAMERA_H +struct CameraSomething +{ + void (*callback)(struct CameraSomething *); + u32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; +}; + void move_tilemap_camera_to_upper_left_corner(void); void sub_8057A58(void); void sub_8057B14(u16 *a, u16 *b); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 3a56ed636..44212ac47 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -79,4 +79,8 @@ extern const u8 gUnknown_0837567B[9]; extern const struct Coords16 gDirectionToVector[]; +extern struct CameraSomething gUnknown_03004880; +extern s16 gUnknown_03004898; +extern s16 gUnknown_0300489C; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_camera.c b/src/field_camera.c index 442bc095b..acb30e21e 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -25,16 +25,6 @@ extern s16 gUnknown_0300059A; extern u8 gUnknown_0300059C; extern void (*gUnknown_030005A0)(void); -struct CameraSomething -{ - void (*callback)(struct CameraSomething *); - u32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; -}; - extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 8ca2970ab..bd77ad2be 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1,5 +1,6 @@ #include "global.h" #include "field_map_obj.h" +#include "field_map_obj_helpers.h" #include "fieldmap.h" #include "asm.h" #include "berry.h" @@ -11,6 +12,7 @@ #include "rom4.h" #include "rng.h" #include "sprite.h" +#include "field_camera.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -22,7 +24,6 @@ extern void npc_load_two_palettes__and_record(u16, u8); extern void sub_8060388(s16, s16, s16 *, s16 *); extern void sub_80634D0(); extern void pal_patch_for_npc(u16, u16); -extern void sub_80603CC(s16, s16, s16 *, s16 *); extern void CameraObjectReset1(void); void sub_805AAB0(void); @@ -614,7 +615,7 @@ u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c } extern void sub_8064970(struct Sprite *); -extern void sub_8060470(); +extern void sub_8060470(s16 *, s16 *, s16, s16); extern void InitObjectPriorityByZCoord(); u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) @@ -3526,9 +3527,6 @@ void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY) } } -extern s16 gUnknown_03004898; -extern s16 gUnknown_0300489C; - void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2) { *x2 = (x1 - gSaveBlock1.pos.x) << 4; @@ -3536,3 +3534,97 @@ void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2) *x2 -= gUnknown_0300489C; *y2 -= gUnknown_03004898; } + +void sub_80603CC(s16 x1, s16 y1, s16 *x2, s16 *y2) +{ + s16 x3; + s16 y3; + x3 = -gUnknown_0300489C - gUnknown_03004880.unk10; + y3 = -gUnknown_03004898 - gUnknown_03004880.unk14; + if (gUnknown_03004880.unk10 > 0) + { + x3 += 0x10; + } + if (gUnknown_03004880.unk10 < 0) + { + x3 -= 0x10; + } + if (gUnknown_03004880.unk14 > 0) + { + y3 += 0x10; + } + if (gUnknown_03004880.unk14 < 0) + { + y3 -= 0x10; + } + *x2 = ((x1 - gSaveBlock1.pos.x) << 4) + x3; + *y2 = ((y1 - gSaveBlock1.pos.y) << 4) + y3; +} + +void sub_8060470(s16 *x, s16 *y, s16 dx, s16 dy) +{ + sub_80603CC(*x, *y, x, y); + *x += dx; + *y += dy; +} + +void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y) +{ + *x = 0; + *y = 0; + if (gUnknown_03004880.unk10 > 0) + { + (*x)++; + } + if (gUnknown_03004880.unk10 < 0) + { + (*x)--; + } + if (gUnknown_03004880.unk14 > 0) + { + (*y)++; + } + if (gUnknown_03004880.unk14 < 0) + { + (*y)--; + } +} + +void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y) +{ + *x = mapObject->coords2.x; + *y = mapObject->coords2.y; + MoveCoords(direction, x, y); +} + +bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_1 || mapObject->mapobj_bit_6) + { + return TRUE; + } + return FALSE; +} + +bool8 FieldObjectIsSpecialAnimActive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6 && mapObject->mapobj_unk_1C != 0xff) + { + return TRUE; + } + return FALSE; +} + +bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId) +{ + if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject)) + { + return TRUE; + } + UnfreezeMapObject(mapObject); + mapObject->mapobj_unk_1C = specialAnimId; + mapObject->mapobj_bit_6 = 1; + mapObject->mapobj_bit_7 = 0; + gSprites[mapObject->spriteId].data2 = 0; + return FALSE; +} -- cgit v1.2.3 From a4611579b45aa7aeeabd16eaff2cdf27b59cdd99 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 13:18:23 -0400 Subject: Special anims; meta_step --- asm/field_map_obj.s | 165 ---------------------------------------------------- src/field_map_obj.c | 81 +++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 166 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 95e8c7949..039828e6d 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,171 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start FieldObjectForceSetSpecialAnim -FieldObjectForceSetSpecialAnim: @ 8060598 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - bl FieldObjectClearAnimIfSpecialAnimActive - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetSpecialAnim - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end FieldObjectForceSetSpecialAnim - - thumb_func_start FieldObjectClearAnimIfSpecialAnimActive -FieldObjectClearAnimIfSpecialAnimActive: @ 80605B4 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _080605C6 - adds r0, r1, 0 - bl FieldObjectClearAnim -_080605C6: - pop {r0} - bx r0 - thumb_func_end FieldObjectClearAnimIfSpecialAnimActive - - thumb_func_start FieldObjectClearAnim -FieldObjectClearAnim: @ 80605CC - movs r1, 0xFF - strb r1, [r0, 0x1C] - ldrb r2, [r0] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - movs r2, 0x7F - ands r1, r2 - strb r1, [r0] - ldr r3, _080605FC @ =gSprites - ldrb r2, [r0, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - movs r2, 0 - strh r2, [r1, 0x30] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x32] - bx lr - .align 2, 0 -_080605FC: .4byte gSprites - thumb_func_end FieldObjectClearAnim - - thumb_func_start FieldObjectCheckIfSpecialAnimFinishedOrInactive -FieldObjectCheckIfSpecialAnimFinishedOrInactive: @ 8060600 - push {lr} - ldrb r1, [r0] - lsls r0, r1, 25 - cmp r0, 0 - blt _0806060E - movs r0, 0x10 - b _08060610 -_0806060E: - lsrs r0, r1, 7 -_08060610: - pop {r1} - bx r1 - thumb_func_end FieldObjectCheckIfSpecialAnimFinishedOrInactive - - thumb_func_start FieldObjectClearAnimIfSpecialAnimFinished -FieldObjectClearAnimIfSpecialAnimFinished: @ 8060614 - push {r4,r5,lr} - adds r5, r0, 0 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0806062E - cmp r4, 0x10 - beq _0806062E - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimActive -_0806062E: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end FieldObjectClearAnimIfSpecialAnimFinished - - thumb_func_start FieldObjectGetSpecialAnim -FieldObjectGetSpecialAnim: @ 8060638 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08060648 - movs r0, 0xFF - b _0806064A -_08060648: - ldrb r0, [r1, 0x1C] -_0806064A: - pop {r1} - bx r1 - thumb_func_end FieldObjectGetSpecialAnim - - thumb_func_start meta_step -meta_step: @ 8060650 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl DoGroundEffects_OnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80634A0 - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimActive - lsls r0, 24 - cmp r0, 0 - beq _0806067A - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectExecSpecialAnim - b _08060690 -_0806067A: - ldrb r0, [r4, 0x1] - lsls r0, 31 - cmp r0, 0 - bne _08060690 -_08060682: - adds r0, r4, 0 - adds r1, r5, 0 - bl _call_via_r6 - lsls r0, 24 - cmp r0, 0 - bne _08060682 -_08060690: - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnFinishStep - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_obj_transfer_image_anim_pause_flag - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80634D0 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectUpdateSubpriority - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end meta_step - thumb_func_start GetFaceDirectionAnimId GetFaceDirectionAnimId: @ 80606C0 push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index bd77ad2be..29dbc4bd0 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -22,7 +22,7 @@ extern void ClearPlayerAvatarInfo(void); extern void npc_load_two_palettes__no_record(u16, u8); extern void npc_load_two_palettes__and_record(u16, u8); extern void sub_8060388(s16, s16, s16 *, s16 *); -extern void sub_80634D0(); +extern void sub_80634D0(struct MapObject *, struct Sprite *); extern void pal_patch_for_npc(u16, u16); extern void CameraObjectReset1(void); @@ -3628,3 +3628,82 @@ bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId) gSprites[mapObject->spriteId].data2 = 0; return FALSE; } + +void FieldObjectForceSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId) +{ + FieldObjectClearAnimIfSpecialAnimActive(mapObject); + FieldObjectSetSpecialAnim(mapObject, specialAnimId); +} + +void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6) + { + FieldObjectClearAnim(mapObject); + } +} + +void FieldObjectClearAnim(struct MapObject *mapObject) +{ + mapObject->mapobj_unk_1C = 0xFF; + mapObject->mapobj_bit_6 = 0; + mapObject->mapobj_bit_7 = 0; + gSprites[mapObject->spriteId].data1 = 0; + gSprites[mapObject->spriteId].data2 = 0; +} + +bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6) + return mapObject->mapobj_bit_7; + return 0x10; +} + +bool8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *mapObject) +{ + u8 specialAnimStatus; + specialAnimStatus = FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject); + if (specialAnimStatus != 0 && specialAnimStatus != 0x10) + { + FieldObjectClearAnimIfSpecialAnimActive(mapObject); + } + return specialAnimStatus; +} + +u8 FieldObjectGetSpecialAnim(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6) + { + return mapObject->mapobj_unk_1C; + } + return 0xFF; +} + +extern void DoGroundEffects_OnSpawn(struct MapObject *mapObject, struct Sprite *sprite); +extern void DoGroundEffects_OnBeginStep(struct MapObject *mapObject, struct Sprite *sprite); +extern void DoGroundEffects_OnFinishStep(struct MapObject *mapObject, struct Sprite *sprite); +extern void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite); +void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite); +void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite); +void FieldObjectUpdateSubpriority(struct MapObject *mapObject, struct Sprite *sprite); + +void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback)(struct MapObject *, struct Sprite *)) +{ + DoGroundEffects_OnSpawn(mapObject, sprite); + sub_80634A0(mapObject, sprite); + if (FieldObjectIsSpecialAnimActive(mapObject)) + { + FieldObjectExecSpecialAnim(mapObject, sprite); + } else + { + if (!mapObject->mapobj_bit_8) + { + while (callback(mapObject, sprite)); + } + } + DoGroundEffects_OnBeginStep(mapObject, sprite); + DoGroundEffects_OnFinishStep(mapObject, sprite); + npc_obj_transfer_image_anim_pause_flag(mapObject, sprite); + sub_80634D0(mapObject, sprite); + FieldObjectUpdateSubpriority(mapObject, sprite); +} -- cgit v1.2.3 From c4ec5255085223ca39ed43387b2b74d62e1ee93f Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 13:50:14 -0400 Subject: Another chunk of largely-identical FMO functions --- asm/field_map_obj.s | 697 ---------------------------------------------------- include/asm.inc.h | 2 +- src/field_map_obj.c | 357 +++++++++++++++++++++++++++ 3 files changed, 358 insertions(+), 698 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 039828e6d..ea685d6ec 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,703 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start GetFaceDirectionAnimId -GetFaceDirectionAnimId: @ 80606C0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080606E8 @ =gUnknown_083756C8 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080606D8 - movs r4, 0 -_080606D8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080606E8: .4byte gUnknown_083756C8 - thumb_func_end GetFaceDirectionAnimId - - thumb_func_start GetSimpleGoAnimId -GetSimpleGoAnimId: @ 80606EC - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060714 @ =gUnknown_083756CD - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060704 - movs r4, 0 -_08060704: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060714: .4byte gUnknown_083756CD - thumb_func_end GetSimpleGoAnimId - - thumb_func_start GetGoSpeed0AnimId -GetGoSpeed0AnimId: @ 8060718 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060740 @ =gUnknown_083756D2 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060730 - movs r4, 0 -_08060730: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060740: .4byte gUnknown_083756D2 - thumb_func_end GetGoSpeed0AnimId - - thumb_func_start sub_8060744 -sub_8060744: @ 8060744 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806076C @ =gUnknown_083756D7 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806075C - movs r4, 0 -_0806075C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806076C: .4byte gUnknown_083756D7 - thumb_func_end sub_8060744 - - thumb_func_start d2s_08064034 -d2s_08064034: @ 8060770 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060798 @ =gUnknown_083756DC - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060788 - movs r4, 0 -_08060788: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060798: .4byte gUnknown_083756DC - thumb_func_end d2s_08064034 - - thumb_func_start sub_806079C -sub_806079C: @ 806079C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080607C4 @ =gUnknown_083756E1 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080607B4 - movs r4, 0 -_080607B4: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080607C4: .4byte gUnknown_083756E1 - thumb_func_end sub_806079C - - thumb_func_start sub_80607C8 -sub_80607C8: @ 80607C8 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080607F0 @ =gUnknown_083756E6 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080607E0 - movs r4, 0 -_080607E0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080607F0: .4byte gUnknown_083756E6 - thumb_func_end sub_80607C8 - - thumb_func_start sub_80607F4 -sub_80607F4: @ 80607F4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806081C @ =gUnknown_083756EB - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806080C - movs r4, 0 -_0806080C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806081C: .4byte gUnknown_083756EB - thumb_func_end sub_80607F4 - - thumb_func_start GetJumpLedgeAnimId -GetJumpLedgeAnimId: @ 8060820 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060848 @ =gUnknown_083756F0 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060838 - movs r4, 0 -_08060838: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060848: .4byte gUnknown_083756F0 - thumb_func_end GetJumpLedgeAnimId - - thumb_func_start sub_806084C -sub_806084C: @ 806084C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060874 @ =gUnknown_083756F5 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060864 - movs r4, 0 -_08060864: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060874: .4byte gUnknown_083756F5 - thumb_func_end sub_806084C - - thumb_func_start sub_8060878 -sub_8060878: @ 8060878 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080608A0 @ =gUnknown_083756FA - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060890 - movs r4, 0 -_08060890: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080608A0: .4byte gUnknown_083756FA - thumb_func_end sub_8060878 - - thumb_func_start sub_80608A4 -sub_80608A4: @ 80608A4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080608CC @ =gUnknown_083756FF - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080608BC - movs r4, 0 -_080608BC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080608CC: .4byte gUnknown_083756FF - thumb_func_end sub_80608A4 - - thumb_func_start sub_80608D0 -sub_80608D0: @ 80608D0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080608F8 @ =gUnknown_08375704 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080608E8 - movs r4, 0 -_080608E8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080608F8: .4byte gUnknown_08375704 - thumb_func_end sub_80608D0 - - thumb_func_start GetStepInPlaceDelay32AnimId -GetStepInPlaceDelay32AnimId: @ 80608FC - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060924 @ =gUnknown_08375709 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060914 - movs r4, 0 -_08060914: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060924: .4byte gUnknown_08375709 - thumb_func_end GetStepInPlaceDelay32AnimId - - thumb_func_start GetStepInPlaceDelay16AnimId -GetStepInPlaceDelay16AnimId: @ 8060928 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060950 @ =gUnknown_0837570E - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060940 - movs r4, 0 -_08060940: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060950: .4byte gUnknown_0837570E - thumb_func_end GetStepInPlaceDelay16AnimId - - thumb_func_start GetStepInPlaceDelay8AnimId -GetStepInPlaceDelay8AnimId: @ 8060954 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806097C @ =gUnknown_08375713 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806096C - movs r4, 0 -_0806096C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806097C: .4byte gUnknown_08375713 - thumb_func_end GetStepInPlaceDelay8AnimId - - thumb_func_start GetStepInPlaceDelay4AnimId -GetStepInPlaceDelay4AnimId: @ 8060980 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080609A8 @ =gUnknown_08375718 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060998 - movs r4, 0 -_08060998: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080609A8: .4byte gUnknown_08375718 - thumb_func_end GetStepInPlaceDelay4AnimId - - thumb_func_start FieldObjectFaceOppositeDirection -FieldObjectFaceOppositeDirection: @ 80609AC - push {r4,lr} - adds r4, r0, 0 - lsls r0, r1, 24 - lsrs r0, 24 - bl GetOppositeDirection - lsls r0, 24 - lsrs r0, 24 - bl GetFaceDirectionAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end FieldObjectFaceOppositeDirection - - thumb_func_start sub_80609D8 -sub_80609D8: @ 80609D8 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A00 @ =gUnknown_0837571D - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080609F0 - movs r4, 0 -_080609F0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A00: .4byte gUnknown_0837571D - thumb_func_end sub_80609D8 - - thumb_func_start sub_8060A04 -sub_8060A04: @ 8060A04 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A2C @ =gUnknown_08375722 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060A1C - movs r4, 0 -_08060A1C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A2C: .4byte gUnknown_08375722 - thumb_func_end sub_8060A04 - - thumb_func_start sub_8060A30 -sub_8060A30: @ 8060A30 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A58 @ =gUnknown_08375727 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060A48 - movs r4, 0 -_08060A48: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A58: .4byte gUnknown_08375727 - thumb_func_end sub_8060A30 - - thumb_func_start sub_8060A5C -sub_8060A5C: @ 8060A5C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A84 @ =gUnknown_0837572C - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060A74 - movs r4, 0 -_08060A74: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A84: .4byte gUnknown_0837572C - thumb_func_end sub_8060A5C - - thumb_func_start sub_8060A88 -sub_8060A88: @ 8060A88 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060AB0 @ =gUnknown_08375731 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060AA0 - movs r4, 0 -_08060AA0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060AB0: .4byte gUnknown_08375731 - thumb_func_end sub_8060A88 - - thumb_func_start sub_8060AB4 -sub_8060AB4: @ 8060AB4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060ADC @ =gUnknown_08375736 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060ACC - movs r4, 0 -_08060ACC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060ADC: .4byte gUnknown_08375736 - thumb_func_end sub_8060AB4 - - thumb_func_start sub_8060AE0 -sub_8060AE0: @ 8060AE0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B08 @ =gUnknown_0837573B - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060AF8 - movs r4, 0 -_08060AF8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B08: .4byte gUnknown_0837573B - thumb_func_end sub_8060AE0 - - thumb_func_start sub_8060B0C -sub_8060B0C: @ 8060B0C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B34 @ =gUnknown_08375740 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060B24 - movs r4, 0 -_08060B24: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B34: .4byte gUnknown_08375740 - thumb_func_end sub_8060B0C - - thumb_func_start sub_8060B38 -sub_8060B38: @ 8060B38 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B60 @ =gUnknown_08375745 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060B50 - movs r4, 0 -_08060B50: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B60: .4byte gUnknown_08375745 - thumb_func_end sub_8060B38 - - thumb_func_start sub_8060B64 -sub_8060B64: @ 8060B64 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B8C @ =gUnknown_0837574A - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060B7C - movs r4, 0 -_08060B7C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B8C: .4byte gUnknown_0837574A - thumb_func_end sub_8060B64 - thumb_func_start GetOppositeDirection GetOppositeDirection: @ 8060B90 push {r4,lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index 8921d14cd..9bd8324ad 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -128,7 +128,7 @@ u8 sub_80608D0(u8); u8 GetStepInPlaceDelay32AnimId(u8 a); u8 GetStepInPlaceDelay16AnimId(u8); u8 GetStepInPlaceDelay8AnimId(u8 a); -u8 FieldObjectFaceOppositeDirection(void *, u8); +u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 sub_80609D8(u8); u8 sub_8060A04(u8); u8 sub_8060A30(u8); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 29dbc4bd0..211bc919f 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3707,3 +3707,360 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback sub_80634D0(mapObject, sprite); FieldObjectUpdateSubpriority(mapObject, sprite); } + + +const u8 gUnknown_083756C8[5]; + +u8 GetFaceDirectionAnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756C8, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756CD[5]; + +u8 GetSimpleGoAnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756CD, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756D2[5]; + +u8 GetGoSpeed0AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756D2, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756D7[5]; + +u8 sub_8060744(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756D7, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756DC[5]; + +u8 d2s_08064034(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756DC, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756E1[5]; + +u8 sub_806079C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756E1, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756E6[5]; + +u8 sub_80607C8(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756E6, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756EB[5]; + +u8 sub_80607F4(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756EB, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756F0[5]; + +u8 GetJumpLedgeAnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756F0, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756F5[5]; + +u8 sub_806084C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756F5, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756FA[5]; + +u8 sub_8060878(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756FA, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756FF[5]; + +u8 sub_80608A4(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756FF, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375704[5]; + +u8 sub_80608D0(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375704, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375709[5]; + +u8 GetStepInPlaceDelay32AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375709, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837570E[5]; + +u8 GetStepInPlaceDelay16AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837570E, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375713[5]; + +u8 GetStepInPlaceDelay8AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375713, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375718[5]; + +u8 GetStepInPlaceDelay4AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375718, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction) +{ + return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction))); +} + +const u8 gUnknown_0837571D[5]; + +u8 sub_80609D8(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837571D, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375722[5]; + +u8 sub_8060A04(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375722, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375727[5]; + +u8 sub_8060A30(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375727, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837572C[5]; + +u8 sub_8060A5C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837572C, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375731[5]; + +u8 sub_8060A88(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375731, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375736[5]; + +u8 sub_8060AB4(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375736, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837573B[5]; + +u8 sub_8060AE0(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837573B, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375740[5]; + +u8 sub_8060B0C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375740, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375745[5]; + +u8 sub_8060B38(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375745, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837574A[5]; + +u8 sub_8060B64(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837574A, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} -- cgit v1.2.3 From 29aac6bde0ea201bd8eebedbbbc1b4a012d574e4 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 14:27:22 -0400 Subject: up through state_to_direction, which is nonmatching (help, registers are misbehaving) --- asm/field_map_obj.s | 84 ------------------------------------------------- include/field_map_obj.h | 4 +++ src/field_map_obj.c | 70 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 84 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ea685d6ec..86f53d9e8 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,90 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start GetOppositeDirection -GetOppositeDirection: @ 8060B90 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060BB4 @ =gUnknown_0837574F - mov r0, sp - movs r2, 0x8 - bl memcpy - subs r1, r4, 0x1 - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0x7 - bhi _08060BB8 - mov r2, sp - adds r0, r2, r1 - ldrb r0, [r0] - b _08060BBA - .align 2, 0 -_08060BB4: .4byte gUnknown_0837574F -_08060BB8: - adds r0, r4, 0 -_08060BBA: - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetOppositeDirection - - thumb_func_start zffu_offset_calc -zffu_offset_calc: @ 8060BC4 - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08060BD8 @ =gUnknown_08375757 - lsrs r0, 22 - subs r0, 0x5 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - bx lr - .align 2, 0 -_08060BD8: .4byte gUnknown_08375757 - thumb_func_end zffu_offset_calc - - thumb_func_start state_to_direction -state_to_direction: @ 8060BDC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r1, 0 - beq _08060BFC - cmp r2, 0 - beq _08060BFC - cmp r1, 0x4 - bhi _08060BFC - cmp r2, 0x4 - bls _08060C00 -_08060BFC: - movs r0, 0 - b _08060C12 -_08060C00: - adds r1, r2, 0 - bl zffu_offset_calc - ldr r2, _08060C18 @ =gUnknown_08375767 - lsls r1, r4, 2 - subs r1, 0x5 - adds r0, r1 - adds r0, r2 - ldrb r0, [r0] -_08060C12: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060C18: .4byte gUnknown_08375767 - thumb_func_end state_to_direction - thumb_func_start FieldObjectExecSpecialAnim FieldObjectExecSpecialAnim: @ 8060C1C push {r4,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 44212ac47..07aba90e5 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -76,6 +76,10 @@ extern const u8 gUnknown_08375574[4]; extern const u8 gUnknown_08375584[4]; extern const u8 gUnknown_0837567B[9]; +extern const u8 gUnknown_0837574F[8]; + +extern const u8 gUnknown_08375757[4][4]; +extern const u8 gUnknown_08375767[4][4]; extern const struct Coords16 gDirectionToVector[]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 211bc919f..108f9cc20 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4064,3 +4064,73 @@ u8 sub_8060B64(u8 index) } return directions[index]; } + +u8 GetOppositeDirection(u8 direction) +{ + u8 directions[8]; + memcpy(directions, gUnknown_0837574F, 8); + if (direction == 0 || direction > 8) + { + return direction; + } + return directions[direction - 1]; +} + +int zffu_offset_calc(u8 a0, u8 a1) +{ + return gUnknown_08375757[a0 - 1][a1 - 1]; +} + +#ifdef NONMATCHING +u8 state_to_direction(u8 a0, u8 a1, u8 a2) +{ + int zffuOffset; + if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) + { + return 0; + } + zffuOffset = zffu_offset_calc(a1, a2); + return gUnknown_08375767[a0 - 1][zffuOffset - 1]; +} +#else +__attribute__((naked)) +u8 state_to_direction(u8 a0, u8 a1, u8 a2) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r0, r1, 0\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + cmp r1, 0\n\ + beq _08060BFC\n\ + cmp r2, 0\n\ + beq _08060BFC\n\ + cmp r1, 0x4\n\ + bhi _08060BFC\n\ + cmp r2, 0x4\n\ + bls _08060C00\n\ +_08060BFC:\n\ + movs r0, 0\n\ + b _08060C12\n\ +_08060C00:\n\ + adds r1, r2, 0\n\ + bl zffu_offset_calc\n\ + ldr r2, _08060C18 @ =gUnknown_08375767\n\ + lsls r1, r4, 2\n\ + subs r1, 0x5\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ +_08060C12:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08060C18: .4byte gUnknown_08375767\n\ +.syntax divided\n"); +} +#endif -- cgit v1.2.3 From d857f57da015325e17e8c7d08bf4a923e0f9a2dd Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 15:26:25 -0400 Subject: Some more field map object functions; asm/field_map_obj.s down to 7k lines --- asm/field_map_obj.s | 318 ---------------------------------------- include/field_map_obj.h | 2 + include/field_map_obj_helpers.h | 1 + src/field_map_obj.c | 104 +++++++++++++ 4 files changed, 107 insertions(+), 318 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 86f53d9e8..167a5cd13 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,324 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start FieldObjectExecSpecialAnim -FieldObjectExecSpecialAnim: @ 8060C1C - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08060C50 @ =gUnknown_08375778 - ldrb r0, [r4, 0x1C] - lsls r0, 2 - adds r0, r2 - movs r3, 0x32 - ldrsh r2, [r1, r3] - ldr r0, [r0] - lsls r2, 2 - adds r2, r0 - ldr r2, [r2] - adds r0, r4, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - beq _08060C48 - ldrb r0, [r4] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4] -_08060C48: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08060C50: .4byte gUnknown_08375778 - thumb_func_end FieldObjectExecSpecialAnim - - thumb_func_start FieldObjectExecRegularAnim -FieldObjectExecRegularAnim: @ 8060C54 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08060C80 @ =gUnknown_08375778 - ldrb r0, [r4, 0x1C] - lsls r0, 2 - adds r0, r1 - movs r2, 0x32 - ldrsh r1, [r5, r2] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - adds r0, r4, 0 - adds r1, r5, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - bne _08060C84 - movs r0, 0 - b _08060C8E - .align 2, 0 -_08060C80: .4byte gUnknown_08375778 -_08060C84: - movs r0, 0xFF - strb r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08060C8E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end FieldObjectExecRegularAnim - - thumb_func_start FieldObjectSetRegularAnim -FieldObjectSetRegularAnim: @ 8060C94 - movs r3, 0 - strb r2, [r0, 0x1C] - strh r3, [r1, 0x32] - bx lr - thumb_func_end FieldObjectSetRegularAnim - - thumb_func_start an_look_any -an_look_any: @ 8060C9C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r1, r2, 24 - lsrs r1, 24 - bl FieldObjectSetDirection - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE64 - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end an_look_any - - thumb_func_start sub_8060CE0 -sub_8060CE0: @ 8060CE0 - push {lr} - movs r2, 0x1 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060CE0 - - thumb_func_start sub_8060CF0 -sub_8060CF0: @ 8060CF0 - push {lr} - movs r2, 0x2 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060CF0 - - thumb_func_start sub_8060D00 -sub_8060D00: @ 8060D00 - push {lr} - movs r2, 0x3 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060D00 - - thumb_func_start sub_8060D10 -sub_8060D10: @ 8060D10 - push {lr} - movs r2, 0x4 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060D10 - - thumb_func_start sub_8060D20 -sub_8060D20: @ 8060D20 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - mov r8, r0 - mov r9, r1 - adds r4, r2, 0 - adds r6, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - ldrh r1, [r0, 0x10] - mov r0, sp - strh r1, [r0] - mov r1, r8 - ldrh r0, [r1, 0x12] - mov r5, sp - adds r5, 0x2 - strh r0, [r5] - mov r0, r8 - adds r1, r4, 0 - bl FieldObjectSetDirection - adds r0, r4, 0 - mov r1, sp - adds r2, r5, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - mov r0, r8 - bl npc_coords_shift - mov r0, r9 - adds r1, r4, 0 - adds r2, r6, 0 - bl oamt_npc_ministep_reset - mov r2, r9 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x4 - orrs r0, r1 - mov r2, r8 - strb r0, [r2] - movs r0, 0x1 - mov r1, r9 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8060D20 - - thumb_func_start do_go_anim -do_go_anim: @ 8060DA4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r5, r0, 0 - mov r8, r1 - adds r4, r3, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r4, 24 - lsrs r4, 24 - mov r1, sp - ldr r0, _08060DFC @ =gUnknown_083759C0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6} - stm r1!, {r3,r6} - adds r0, r5, 0 - mov r1, r8 - adds r3, r4, 0 - bl sub_8060D20 - lsls r4, 2 - mov r7, sp - adds r1, r7, r4 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - ldr r1, [r1] - bl _call_via_r1 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - mov r1, r8 - bl sub_805FE28 - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08060DFC: .4byte gUnknown_083759C0 - thumb_func_end do_go_anim - - thumb_func_start do_run_anim -do_run_anim: @ 8060E00 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0x1 - bl sub_8060D20 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_run_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE28 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end do_run_anim - - thumb_func_start npc_obj_ministep_stop_on_arrival -npc_obj_ministep_stop_on_arrival: @ 8060E30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl obj_npc_ministep - lsls r0, 24 - cmp r0, 0 - bne _08060E46 - movs r0, 0 - b _08060E62 -_08060E46: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08060E62: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end npc_obj_ministep_stop_on_arrival - thumb_func_start sub_8060E68 sub_8060E68: @ 8060E68 push {r4-r6,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 07aba90e5..8b8ef78ea 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -83,6 +83,8 @@ extern const u8 gUnknown_08375767[4][4]; extern const struct Coords16 gDirectionToVector[]; +extern u8 (**const gUnknown_08375778[])(struct MapObject *, struct Sprite *); + extern struct CameraSomething gUnknown_03004880; extern s16 gUnknown_03004898; extern s16 gUnknown_0300489C; diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index daae74ae9..2481e143d 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -8,5 +8,6 @@ void UnfreezeMapObjects(void); void sub_806487C(struct Sprite *sprite, bool8 invisible); void sub_8064990(u8, u8); void UnfreezeMapObject(struct MapObject *mapObject); +void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 108f9cc20..ae5d65ce2 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4085,6 +4085,7 @@ int zffu_offset_calc(u8 a0, u8 a1) u8 state_to_direction(u8 a0, u8 a1, u8 a2) { int zffuOffset; + asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call.") if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) { return 0; @@ -4134,3 +4135,106 @@ _08060C18: .4byte gUnknown_08375767\n\ .syntax divided\n"); } #endif + +void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite)) + { + mapObject->mapobj_bit_7 = 1; + } +} + +bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite)) + { + mapObject->mapobj_unk_1C = 0xFF; + sprite->data2 = 0; + return 1; + } + return 0; +} + +void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId) +{ + mapObject->mapobj_unk_1C = animId; + sprite->data2 = 0; +} + +void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + FieldObjectSetDirection(mapObject, direction); + npc_coords_shift_still(mapObject); + sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); + sprite->animPaused = 1; + sprite->data2 = 1; +} + +u8 sub_8060CE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_SOUTH); + return 1; +} + +u8 sub_8060CF0(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_NORTH); + return 1; +} + +u8 sub_8060D00(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_WEST); + return 1; +} + +u8 sub_8060D10(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_EAST); + return 1; +} + +void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2) +{ + s16 x; + s16 y; + x = mapObject->coords2.x; + y = mapObject->coords2.y; + FieldObjectSetDirection(mapObject, direction); + MoveCoords(direction, &x, &y); + npc_coords_shift(mapObject, x, y); + oamt_npc_ministep_reset(sprite, direction, a2); + sprite->animPaused = 0; + mapObject->mapobj_bit_2 = 1; + sprite->data2 = 1; +} + +extern u8 (*const gUnknown_083759C0[5])(u8); + +void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2) +{ + u8 (*functions[5])(u8); + memcpy(functions, gUnknown_083759C0, sizeof(gUnknown_083759C0)); + sub_8060D20(mapObject, sprite, direction, a2); + sub_805FE28(mapObject, sprite, functions[a2](mapObject->mapobj_unk_18)); +} + +void do_run_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + sub_8060D20(mapObject, sprite, direction, 1); + sub_805FE28(mapObject, sprite, get_run_image_anim_num(mapObject->mapobj_unk_18)); +} + +bool8 obj_npc_ministep(struct Sprite *); + +bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (obj_npc_ministep(sprite)) + { + npc_coords_shift_still(mapObject); + mapObject->mapobj_bit_3 = 1; + sprite->animPaused = 1; + return 1; + } + return 0; +} -- cgit v1.2.3 From 8186d7027ce53c74663056b8a533efff4cb8b300 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 19:21:07 -0400 Subject: Another chunk of functions with similar (and, in some cases, identical) decompilation --- asm/field_map_obj.s | 259 ---------------------------------------- include/field_map_obj_helpers.h | 2 + src/field_map_obj.c | 106 ++++++++++++++++ 3 files changed, 108 insertions(+), 259 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 167a5cd13..2eff32e9e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,265 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8060E68 -sub_8060E68: @ 8060E68 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r6, r0, 0 - mov r8, r1 - lsls r5, r2, 24 - lsrs r5, 24 - ldrh r1, [r6, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r6, 0x12] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - adds r0, r6, 0 - adds r1, r5, 0 - bl FieldObjectSetDirection - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - bl npc_coords_shift - mov r0, r8 - adds r1, r5, 0 - bl sub_806467C - mov r2, r8 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x1 - mov r1, r8 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8060E68 - - thumb_func_start sub_8060ED8 -sub_8060ED8: @ 8060ED8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - bl sub_8060E68 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE28 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8060ED8 - - thumb_func_start an_walk_any_2 -an_walk_any_2: @ 8060F04 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_806468C - lsls r0, 24 - cmp r0, 0 - bne _08060F1A - movs r0, 0 - b _08060F36 -_08060F1A: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08060F36: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end an_walk_any_2 - - thumb_func_start sub_8060F3C -sub_8060F3C: @ 8060F3C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8060F5C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060F3C - - thumb_func_start sub_8060F5C -sub_8060F5C: @ 8060F5C - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08060F6E - movs r0, 0 - b _08060F74 -_08060F6E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08060F74: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060F5C - - thumb_func_start sub_8060F7C -sub_8060F7C: @ 8060F7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8060F9C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060F7C - - thumb_func_start sub_8060F9C -sub_8060F9C: @ 8060F9C - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08060FAE - movs r0, 0 - b _08060FB4 -_08060FAE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08060FB4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060F9C - - thumb_func_start sub_8060FBC -sub_8060FBC: @ 8060FBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8060FDC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060FBC - - thumb_func_start sub_8060FDC -sub_8060FDC: @ 8060FDC - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08060FEE - movs r0, 0 - b _08060FF4 -_08060FEE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08060FF4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060FDC - - thumb_func_start sub_8060FFC -sub_8060FFC: @ 8060FFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806101C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060FFC - - thumb_func_start sub_806101C -sub_806101C: @ 806101C - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _0806102E - movs r0, 0 - b _08061034 -_0806102E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061034: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806101C - thumb_func_start sub_806103C sub_806103C: @ 806103C push {r4,r5,lr} diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index 2481e143d..a61dcc63c 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -9,5 +9,7 @@ void sub_806487C(struct Sprite *sprite, bool8 invisible); void sub_8064990(u8, u8); void UnfreezeMapObject(struct MapObject *mapObject); void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); +void sub_806467C(struct Sprite *sprite, u8 direction); +bool8 sub_806468C(struct Sprite *sprite); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index ae5d65ce2..cb68b0140 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4238,3 +4238,109 @@ bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprit } return 0; } + +void sub_8060E68(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + x = mapObject->coords2.x; + y = mapObject->coords2.y; + FieldObjectSetDirection(mapObject, direction); + MoveCoords(direction, &x, &y); + npc_coords_shift(mapObject, x, y); + sub_806467C(sprite, direction); + sprite->animPaused = 0; + mapObject->mapobj_bit_2 = 1; + sprite->data2 = 1; +} + +void sub_8060ED8(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + sub_8060E68(mapObject, sprite, direction); + sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); +} + +bool8 an_walk_any_2(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_806468C(sprite)) + { + npc_coords_shift_still(mapObject); + mapObject->mapobj_bit_3 = 1; + sprite->animPaused = 1; + return TRUE; + } + return FALSE; +} + +bool8 sub_8060F5C(struct MapObject *, struct Sprite *); + +bool8 sub_8060F3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_SOUTH); + return sub_8060F5C(mapObject, sprite); +} + +bool8 sub_8060F5C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8060F9C(struct MapObject *, struct Sprite *); + +bool8 sub_8060F7C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_NORTH); + return sub_8060F9C(mapObject, sprite); +} + +bool8 sub_8060F9C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8060FDC(struct MapObject *, struct Sprite *); + +bool8 sub_8060FBC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_WEST); + return sub_8060FDC(mapObject, sprite); +} + +bool8 sub_8060FDC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806101C(struct MapObject *, struct Sprite *); + +bool8 sub_8060FFC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_EAST); + return sub_806101C(mapObject, sprite); +} + +bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + -- cgit v1.2.3 From 057cd5931d50d846dfb8d9be01ef79a0648ce019 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 19:29:49 -0400 Subject: Yet another chunk of functions with similar (and, in some cases, identical) decompilation --- asm/field_map_obj.s | 152 ---------------------------------------------------- src/field_map_obj.c | 72 +++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 152 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 2eff32e9e..6051dc6e6 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,158 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_806103C -sub_806103C: @ 806103C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806105C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806103C - - thumb_func_start sub_806105C -sub_806105C: @ 806105C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806106E - movs r0, 0 - b _08061074 -_0806106E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061074: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806105C - - thumb_func_start sub_806107C -sub_806107C: @ 806107C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806109C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806107C - - thumb_func_start sub_806109C -sub_806109C: @ 806109C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080610AE - movs r0, 0 - b _080610B4 -_080610AE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080610B4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806109C - - thumb_func_start sub_80610BC -sub_80610BC: @ 80610BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80610DC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80610BC - - thumb_func_start sub_80610DC -sub_80610DC: @ 80610DC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080610EE - movs r0, 0 - b _080610F4 -_080610EE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080610F4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80610DC - - thumb_func_start sub_80610FC -sub_80610FC: @ 80610FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806111C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80610FC - - thumb_func_start sub_806111C -sub_806111C: @ 806111C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806112E - movs r0, 0 - b _08061134 -_0806112E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061134: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806111C - thumb_func_start sub_806113C sub_806113C: @ 806113C push {r4-r7,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index cb68b0140..21dcb90bc 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4344,3 +4344,75 @@ bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite) return FALSE; } +bool8 sub_806105C(struct MapObject *, struct Sprite *); + +bool8 sub_806103C(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_SOUTH, 0); + return sub_806105C(mapObject, sprite); +} + +bool8 sub_806105C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806109C(struct MapObject *, struct Sprite *); + +bool8 sub_806107C(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_NORTH, 0); + return sub_806109C(mapObject, sprite); +} + +bool8 sub_806109C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80610DC(struct MapObject *, struct Sprite *); + +bool8 sub_80610BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_WEST, 0); + return sub_80610DC(mapObject, sprite); +} + +bool8 sub_80610DC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806111C(struct MapObject *, struct Sprite *); + +bool8 sub_80610FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_EAST, 0); + return sub_806111C(mapObject, sprite); +} + +bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + -- cgit v1.2.3 From 46a3ee4ae04764e9ad37c8ed7fdf760832eb0175 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 23 May 2017 20:38:42 -0400 Subject: Fix building --- include/field_map_obj.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 8b8ef78ea..2bd875f17 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -86,7 +86,7 @@ extern const struct Coords16 gDirectionToVector[]; extern u8 (**const gUnknown_08375778[])(struct MapObject *, struct Sprite *); extern struct CameraSomething gUnknown_03004880; -extern s16 gUnknown_03004898; -extern s16 gUnknown_0300489C; +extern u16 gUnknown_03004898; +extern u16 gUnknown_0300489C; #endif // GUARD_FIELD_MAP_OBJ_H -- cgit v1.2.3 From e2c3b401a238cd263c15f9ae8b417bca1fcd8d97 Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 23 May 2017 22:31:15 -0400 Subject: Remove ide config file Fixes 3872e196ffde5bf6732e3052fa0f39c02814b616 --- .gitignore | 4 ++-- .idea/codeStyleSettings.xml | 35 ----------------------------------- 2 files changed, 2 insertions(+), 37 deletions(-) delete mode 100755 .idea/codeStyleSettings.xml diff --git a/.gitignore b/.gitignore index 5b70a4586..f5c95dbc1 100644 --- a/.gitignore +++ b/.gitignore @@ -35,5 +35,5 @@ types_*.taghl *.dump *.sa* Thumbs.db -build/* -.idea/codeStyleSettings.xml +build/ +.idea/ diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml deleted file mode 100755 index dee6609ca..000000000 --- a/.idea/codeStyleSettings.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - \ No newline at end of file -- cgit v1.2.3 From c271797ecd3ce97420bcaa680c6a4bebeb60d8fc Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 23 May 2017 22:32:52 -0400 Subject: Fix ld warnings for undeclared externs. --- src/field_map_obj.c | 54 ++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 21dcb90bc..8c85e7b6d 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3709,7 +3709,7 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback } -const u8 gUnknown_083756C8[5]; +extern const u8 gUnknown_083756C8[5]; u8 GetFaceDirectionAnimId(u8 index) { @@ -3722,7 +3722,7 @@ u8 GetFaceDirectionAnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756CD[5]; +extern const u8 gUnknown_083756CD[5]; u8 GetSimpleGoAnimId(u8 index) { @@ -3735,7 +3735,7 @@ u8 GetSimpleGoAnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756D2[5]; +extern const u8 gUnknown_083756D2[5]; u8 GetGoSpeed0AnimId(u8 index) { @@ -3748,7 +3748,7 @@ u8 GetGoSpeed0AnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756D7[5]; +extern const u8 gUnknown_083756D7[5]; u8 sub_8060744(u8 index) { @@ -3761,7 +3761,7 @@ u8 sub_8060744(u8 index) return directions[index]; } -const u8 gUnknown_083756DC[5]; +extern const u8 gUnknown_083756DC[5]; u8 d2s_08064034(u8 index) { @@ -3774,7 +3774,7 @@ u8 d2s_08064034(u8 index) return directions[index]; } -const u8 gUnknown_083756E1[5]; +extern const u8 gUnknown_083756E1[5]; u8 sub_806079C(u8 index) { @@ -3787,7 +3787,7 @@ u8 sub_806079C(u8 index) return directions[index]; } -const u8 gUnknown_083756E6[5]; +extern const u8 gUnknown_083756E6[5]; u8 sub_80607C8(u8 index) { @@ -3800,7 +3800,7 @@ u8 sub_80607C8(u8 index) return directions[index]; } -const u8 gUnknown_083756EB[5]; +extern const u8 gUnknown_083756EB[5]; u8 sub_80607F4(u8 index) { @@ -3813,7 +3813,7 @@ u8 sub_80607F4(u8 index) return directions[index]; } -const u8 gUnknown_083756F0[5]; +extern const u8 gUnknown_083756F0[5]; u8 GetJumpLedgeAnimId(u8 index) { @@ -3826,7 +3826,7 @@ u8 GetJumpLedgeAnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756F5[5]; +extern const u8 gUnknown_083756F5[5]; u8 sub_806084C(u8 index) { @@ -3839,7 +3839,7 @@ u8 sub_806084C(u8 index) return directions[index]; } -const u8 gUnknown_083756FA[5]; +extern const u8 gUnknown_083756FA[5]; u8 sub_8060878(u8 index) { @@ -3852,7 +3852,7 @@ u8 sub_8060878(u8 index) return directions[index]; } -const u8 gUnknown_083756FF[5]; +extern const u8 gUnknown_083756FF[5]; u8 sub_80608A4(u8 index) { @@ -3865,7 +3865,7 @@ u8 sub_80608A4(u8 index) return directions[index]; } -const u8 gUnknown_08375704[5]; +extern const u8 gUnknown_08375704[5]; u8 sub_80608D0(u8 index) { @@ -3878,7 +3878,7 @@ u8 sub_80608D0(u8 index) return directions[index]; } -const u8 gUnknown_08375709[5]; +extern const u8 gUnknown_08375709[5]; u8 GetStepInPlaceDelay32AnimId(u8 index) { @@ -3891,7 +3891,7 @@ u8 GetStepInPlaceDelay32AnimId(u8 index) return directions[index]; } -const u8 gUnknown_0837570E[5]; +extern const u8 gUnknown_0837570E[5]; u8 GetStepInPlaceDelay16AnimId(u8 index) { @@ -3904,7 +3904,7 @@ u8 GetStepInPlaceDelay16AnimId(u8 index) return directions[index]; } -const u8 gUnknown_08375713[5]; +extern const u8 gUnknown_08375713[5]; u8 GetStepInPlaceDelay8AnimId(u8 index) { @@ -3917,7 +3917,7 @@ u8 GetStepInPlaceDelay8AnimId(u8 index) return directions[index]; } -const u8 gUnknown_08375718[5]; +extern const u8 gUnknown_08375718[5]; u8 GetStepInPlaceDelay4AnimId(u8 index) { @@ -3935,7 +3935,7 @@ u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction) return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction))); } -const u8 gUnknown_0837571D[5]; +extern const u8 gUnknown_0837571D[5]; u8 sub_80609D8(u8 index) { @@ -3948,7 +3948,7 @@ u8 sub_80609D8(u8 index) return directions[index]; } -const u8 gUnknown_08375722[5]; +extern const u8 gUnknown_08375722[5]; u8 sub_8060A04(u8 index) { @@ -3961,7 +3961,7 @@ u8 sub_8060A04(u8 index) return directions[index]; } -const u8 gUnknown_08375727[5]; +extern const u8 gUnknown_08375727[5]; u8 sub_8060A30(u8 index) { @@ -3974,7 +3974,7 @@ u8 sub_8060A30(u8 index) return directions[index]; } -const u8 gUnknown_0837572C[5]; +extern const u8 gUnknown_0837572C[5]; u8 sub_8060A5C(u8 index) { @@ -3987,7 +3987,7 @@ u8 sub_8060A5C(u8 index) return directions[index]; } -const u8 gUnknown_08375731[5]; +extern const u8 gUnknown_08375731[5]; u8 sub_8060A88(u8 index) { @@ -4000,7 +4000,7 @@ u8 sub_8060A88(u8 index) return directions[index]; } -const u8 gUnknown_08375736[5]; +extern const u8 gUnknown_08375736[5]; u8 sub_8060AB4(u8 index) { @@ -4013,7 +4013,7 @@ u8 sub_8060AB4(u8 index) return directions[index]; } -const u8 gUnknown_0837573B[5]; +extern const u8 gUnknown_0837573B[5]; u8 sub_8060AE0(u8 index) { @@ -4026,7 +4026,7 @@ u8 sub_8060AE0(u8 index) return directions[index]; } -const u8 gUnknown_08375740[5]; +extern const u8 gUnknown_08375740[5]; u8 sub_8060B0C(u8 index) { @@ -4039,7 +4039,7 @@ u8 sub_8060B0C(u8 index) return directions[index]; } -const u8 gUnknown_08375745[5]; +extern const u8 gUnknown_08375745[5]; u8 sub_8060B38(u8 index) { @@ -4052,7 +4052,7 @@ u8 sub_8060B38(u8 index) return directions[index]; } -const u8 gUnknown_0837574A[5]; +extern const u8 gUnknown_0837574A[5]; u8 sub_8060B64(u8 index) { -- cgit v1.2.3 From 629ee584a5490a587aff4e8f1485d8e35bd14a38 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 17 May 2017 01:36:12 -0500 Subject: fix up party_menu.c and decompile some more functions --- asm/party_menu.s | 515 ------------------------------------------------------- src/party_menu.c | 457 +++++++++++++++++++++++++----------------------- 2 files changed, 244 insertions(+), 728 deletions(-) diff --git a/asm/party_menu.s b/asm/party_menu.s index 534d4aaa4..bf00aa168 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -10308,521 +10308,6 @@ _08070084: .4byte 0xfffff280 .section .text_80701DC - thumb_func_start sub_80701DC -sub_80701DC: @ 80701DC - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r6, _08070280 @ =0x0201b000 - ldr r0, _08070284 @ =0x0000027e - adds r7, r6, r0 - movs r1, 0 - ldrsh r0, [r7, r1] - cmp r0, 0x1 - bne _0807023E - movs r0, 0x80 - lsls r0, 5 - adds r4, r6, r0 - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl AddBagItem - ldrb r1, [r4, 0x5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08070288 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _0807023A - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldrb r1, [r4, 0x5] - lsls r1, 1 - adds r0, r1 - ldr r1, _0807028C @ =gUnknown_083769A8 - adds r0, r1 - movs r1, 0x3 - bl task_pc_turn_off - ldr r0, _08070290 @ =0x00000261 - adds r1, r6, r0 - movs r0, 0x2 - strb r0, [r1] -_0807023A: - movs r0, 0 - strh r0, [r7] -_0807023E: - ldr r4, _08070294 @ =0x0201c000 - ldrb r0, [r4, 0x5] - adds r0, 0x1 - strb r0, [r4, 0x5] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - bne _080702D8 - ldr r1, _08070298 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - ldr r1, _0807029C @ =0xfffff280 - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _080702B0 - ldr r1, _080702A0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080702A4 @ =TaskDummy - str r1, [r0] - ldr r0, _080702A8 @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - ldr r0, _080702AC @ =sub_806FB0C - movs r1, 0x8 - bl CreateTask - b _080702C6 - .align 2, 0 -_08070280: .4byte 0x0201b000 -_08070284: .4byte 0x0000027e -_08070288: .4byte gPlayerParty -_0807028C: .4byte gUnknown_083769A8 -_08070290: .4byte 0x00000261 -_08070294: .4byte 0x0201c000 -_08070298: .4byte gUnknown_0202E8F4 -_0807029C: .4byte 0xfffff280 -_080702A0: .4byte gTasks -_080702A4: .4byte TaskDummy -_080702A8: .4byte gOtherText_WontHaveAnyEffect -_080702AC: .4byte sub_806FB0C -_080702B0: - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl RemoveBagItem - ldr r1, _080702D0 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, [r4, 0x10] - str r1, [r0] -_080702C6: - ldr r1, _080702D4 @ =gLastFieldPokeMenuOpened - movs r0, 0 - strb r0, [r1] - b _080702DE - .align 2, 0 -_080702D0: .4byte gTasks -_080702D4: .4byte gLastFieldPokeMenuOpened -_080702D8: - adds r0, r5, 0 - bl sub_8070088 -_080702DE: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80701DC - - thumb_func_start CreateItemUseMoveMenu -CreateItemUseMoveMenu: @ 80702E4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r6, 0 - movs r0, 0x13 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r5, 0 - movs r0, 0x64 - adds r7, r4, 0 - muls r7, r0 - ldr r0, _0807036C @ =gPlayerParty - mov r8, r0 -_0807030C: - adds r1, r5, 0 - adds r1, 0xD - mov r2, r8 - adds r0, r7, r2 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0xD - muls r0, r4 - ldr r1, _08070370 @ =gMoveNames - adds r0, r1 - lsls r2, r5, 25 - movs r1, 0xB0 - lsls r1, 20 - adds r2, r1 - lsrs r2, 24 - movs r1, 0x14 - bl MenuPrint - cmp r4, 0 - beq _08070340 - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 -_08070340: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _0807030C - movs r0, 0 - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x14 - movs r2, 0xB - adds r3, r6, 0 - bl InitMenu - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807036C: .4byte gPlayerParty -_08070370: .4byte gMoveNames - thumb_func_end CreateItemUseMoveMenu - - thumb_func_start Task_HandleItemUseMoveMenuInput -Task_HandleItemUseMoveMenuInput: @ 8070374 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - adds r4, r2, 0 - ldr r0, _08070398 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0807039C - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _080703E4 - .align 2, 0 -_08070398: .4byte gMain -_0807039C: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080703B2 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _080703E4 -_080703B2: - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080703CC - ldr r0, _080703C8 @ =gUnknown_08376B54 - ldr r1, [r0] - adds r0, r2, 0 - bl _call_via_r1 - b _080703E4 - .align 2, 0 -_080703C8: .4byte gUnknown_08376B54 -_080703CC: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080703E4 - movs r0, 0x5 - bl PlaySE - ldr r0, _080703EC @ =gUnknown_08376B54 - ldr r1, [r0, 0x4] - adds r0, r4, 0 - bl _call_via_r1 -_080703E4: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080703EC: .4byte gUnknown_08376B54 - thumb_func_end Task_HandleItemUseMoveMenuInput - - thumb_func_start DoPPRecoveryItemEffect -DoPPRecoveryItemEffect: @ 80703F0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - mov r9, r2 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - cmp r5, 0xAF - bne _08070410 - ldr r0, _0807040C @ =gSaveBlock1 + 0x3676 - b _0807041C - .align 2, 0 -_0807040C: .4byte gSaveBlock1 + 0x3676 -_08070410: - ldr r1, _08070464 @ =gItemEffectTable - adds r0, r5, 0 - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] -_0807041C: - mov r8, r0 - ldr r7, _08070468 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r7 - ldr r0, _0807046C @ =TaskDummy - str r0, [r1] - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r6, 0 - adds r1, r5, 0 - mov r2, r9 - bl sub_806E8D0 - mov r0, r8 - ldrb r1, [r0, 0x4] - movs r0, 0x10 - ands r0, r1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _08070470 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r7 - strh r1, [r0, 0x1E] - adds r0, r4, 0 - bl DoRecoverPP - b _08070498 - .align 2, 0 -_08070464: .4byte gItemEffectTable -_08070468: .4byte gTasks -_0807046C: .4byte TaskDummy -_08070470: - movs r0, 0x5 - bl PlaySE - movs r0, 0xA - movs r1, 0x3 - bl sub_806D538 - ldr r0, _080704A4 @ =0x0201c000 - ldrb r0, [r0, 0x5] - bl CreateItemUseMoveMenu - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r7 - ldr r1, _080704A8 @ =Task_HandleItemUseMoveMenuInput - str r1, [r0] - ldr r1, _080704AC @ =gMain - movs r0, 0 - strh r0, [r1, 0x2E] -_08070498: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080704A4: .4byte 0x0201c000 -_080704A8: .4byte Task_HandleItemUseMoveMenuInput -_080704AC: .4byte gMain - thumb_func_end DoPPRecoveryItemEffect - - thumb_func_start ItemUseMoveMenu_HandleMoveSelection -ItemUseMoveMenu_HandleMoveSelection: @ 80704B0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8072DEC - movs r0, 0x13 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - bl sub_806D5A4 - bl GetMenuCursorPos - ldr r2, _080704EC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x1E] - adds r0, r4, 0 - bl DoRecoverPP - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080704EC: .4byte gTasks - thumb_func_end ItemUseMoveMenu_HandleMoveSelection - - thumb_func_start ItemUseMoveMenu_HandleCancel -ItemUseMoveMenu_HandleCancel: @ 80704F0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8072DEC - movs r0, 0x13 - movs r1, 0xA - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r0, _08070528 @ =gMain - ldr r1, _0807052C @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0807053C - ldr r2, _08070530 @ =gTasks - ldr r0, _08070534 @ =0x0201c000 - ldrb r1, [r0, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _08070538 @ =SetUpBattlePokemonMenu - b _0807054C - .align 2, 0 -_08070528: .4byte gMain -_0807052C: .4byte 0x0000043d -_08070530: .4byte gTasks -_08070534: .4byte 0x0201c000 -_08070538: .4byte SetUpBattlePokemonMenu -_0807053C: - ldr r2, _08070564 @ =gTasks - ldr r0, _08070568 @ =0x0201c000 - ldrb r1, [r0, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, _0807056C @ =sub_808B0C0 -_0807054C: - str r1, [r0] - movs r0, 0x3 - movs r1, 0 - bl sub_806D538 - adds r0, r4, 0 - bl DestroyTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070564: .4byte gTasks -_08070568: .4byte 0x0201c000 -_0807056C: .4byte sub_808B0C0 - thumb_func_end ItemUseMoveMenu_HandleCancel - - thumb_func_start DoRecoverPP -DoRecoverPP: @ 8070570 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - ldr r6, _080705A8 @ =0x0201c000 - ldrb r0, [r6, 0x5] - ldrh r1, [r6, 0x6] - ldr r3, _080705AC @ =gTasks - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 3 - adds r7, r2, r3 - ldrb r2, [r7, 0x1E] - bl ExecuteTableBasedItemEffect__ - lsls r0, 24 - cmp r0, 0 - beq _080705B8 - ldr r0, _080705B0 @ =gUnknown_0202E8F4 - strb r5, [r0] - movs r0, 0x5 - bl PlaySE - ldr r0, _080705B4 @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - b _080705F8 - .align 2, 0 -_080705A8: .4byte 0x0201c000 -_080705AC: .4byte gTasks -_080705B0: .4byte gUnknown_0202E8F4 -_080705B4: .4byte gOtherText_WontHaveAnyEffect -_080705B8: - ldr r1, _0807060C @ =gUnknown_0202E8F4 - movs r0, 0x1 - strb r0, [r1] - movs r0, 0x1 - bl PlaySE - ldrh r0, [r6, 0x6] - movs r1, 0x1 - bl RemoveBagItem - ldr r0, [r6] - movs r2, 0x1E - ldrsh r1, [r7, r2] - adds r1, 0xD - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _08070610 @ =gStringVar1 - movs r1, 0xD - muls r1, r5 - ldr r2, _08070614 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldrh r0, [r6, 0x6] - bl GetMedicineItemEffectMessage - ldr r0, _08070618 @ =gStringVar4 - movs r1, 0x1 - bl sub_806E834 -_080705F8: - ldr r0, _0807061C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08070620 @ =sub_806FB0C - str r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0807060C: .4byte gUnknown_0202E8F4 -_08070610: .4byte gStringVar1 -_08070614: .4byte gMoveNames -_08070618: .4byte gStringVar4 -_0807061C: .4byte gTasks -_08070620: .4byte sub_806FB0C - thumb_func_end DoRecoverPP - thumb_func_start DoPPUpItemEffect DoPPUpItemEffect: @ 8070624 push {r4,lr} diff --git a/src/party_menu.c b/src/party_menu.c index d473eae6d..b38e89376 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5,46 +5,99 @@ #include "sound.h" #include "string_util.h" #include "task.h" +#include "sprite.h" +#include "palette.h" +#include "event_data.h" +#include "main.h" #define DATA_COUNT (6) struct Unk201C000 { /*0x00*/ struct Pokemon *pokemon; - /*0x04*/ u8 var04; - /*0x05*/ u8 var05; - /*0x06*/ u16 var06; - u8 pad_08[10]; - /*0x12*/ u16 var12; + /*0x04*/ u8 unk4; + /*0x05*/ u8 unk5; + /*0x06*/ u16 unk6; + /*0x08*/ u8 pad_08[4]; + /*0x0C*/ s32 var0C; + /*0x10*/ TaskFunc unk10; }; -struct Unk201B260 +struct Unk201B000 { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - u8 pad_02[2]; - /*0x04*/ s16 var04[DATA_COUNT * 2]; - u8 pad_1C[2]; - /*0x1E*/ u16 var1E; - /*0x20*/ u16 var20; + u8 filler0[0x260]; + u8 unk260; + u8 unk261; + u8 filler262[2]; + s16 unk264[DATA_COUNT * 2]; + u8 filler27C[2]; + s16 unk27E; + s16 unk280; + u16 unk282; }; -extern struct Unk201B260 unk_201B260; -extern struct Unk201C000 unk_201C000; +struct UnknownStruct5 +{ + u8 unk0; + u8 unk1; + u16 *unk4; +}; + +extern u8 ewram[]; +#define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) +#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) + extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F6; +extern u8 gUnknown_0202E8FA; +extern u8 gLastFieldPokeMenuOpened; -extern u8 gUnknown_083769A8[][12]; +//extern const u16 gUnknown_083769A8[][6]; +//extern const u8 gUnknown_083769A8[][12]; +extern const u8 gUnknown_083769A8[]; extern u8 gUnknown_08376D1C[DATA_COUNT]; extern u8 *gUnknown_08376D04[DATA_COUNT]; +extern void (*const gUnknown_08376B54[])(u8); +extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; extern u8 gOtherText_TallPlusAndRightArrow[]; +extern u8 gOtherText_WontHaveAnyEffect[]; +extern const u8 gMoveNames[][13]; +extern u8 *const gItemEffectTable[]; + +extern bool8 IsDoubleBattle(void); +extern void AddBagItem(); +extern void RemoveBagItem(); +extern void SetUpBattlePokemonMenu(u8); +extern void sub_808B0C0(u8); -void task_pc_turn_off(u8 *u8, int i); +void task_pc_turn_off(); static void sub_806E884(u8 taskId); void sub_806F8AC(u8 taskId); +void sub_806FB0C(u8 taskId); void PartyMenuUpdateLevelOrStatus(struct Pokemon *, u8); -u8 ExecuteTableBasedItemEffect__(u8 u8, u16 u16, int i); +u8 ExecuteTableBasedItemEffect__(u8, u16, u8); void sub_80701DC(u8 taskId); +void DoRecoverPP(u8); +void sub_806D538(); +void sub_806D5A4(void); +void sub_806E8D0(); +void GetMedicineItemEffectMessage(); + +/* +void sub_806AEDC(void) +{ + const struct UnknownStruct5 *r5; + s32 i; + + AnimateSprites(); + BuildOamBuffer(); + r5 = gUnknown_08376BB4[gUnknown_0202E8FA]; + for (i = 0; i < 6; i++) + sub_800142C(r5[i].unk0 * 8, r5[i].unk1 * 8, r5[i].unk4, 0, (i << 5) | 0x200); + RunTasks(); + UpdatePaletteFade(); +} +*/ u8 sub_806E834(u8 *message, u8 arg1) { @@ -80,208 +133,194 @@ static void sub_806E884(u8 taskId) asm(".section .text_b"); -#ifdef NONMATCHING void sub_8070088(u8 taskId) { - u8 dummyTaskId; - struct Task *task2; + u8 taskId2; gTasks[taskId].func = TaskDummy; - - if (GetMonData(&gPlayerParty[unk_201C000.var04], MON_DATA_SPECIES) == 0) + if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) == 0) { gTasks[taskId].func = sub_80701DC; - return; } + else + { + s16 *taskData; + + taskId2 = CreateTask(TaskDummy, 5); + taskData = gTasks[taskId2].data; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; + taskData[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + taskData[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, 0)) + { + DestroyTask(taskId2); + gTasks[taskId].func = sub_80701DC; + } + else + { + gUnknown_0202E8F4 = 1; + MenuZeroFillWindowRect(3, 14, 26, 19); + PlaySE(SE_KAIFUKU); + PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9); + ewram1B000.unk261 = 2; + taskData[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - taskData[11]; + taskData[14] = 1; + ewram1B000.unk27E = 1; + ewram1B000.unk280 = 1; + ewram1B000.unk282 = taskData[11]; + ewram1C000.var0C = -32768; + gTasks[taskId2].func = sub_806F8AC; + } + } +} - dummyTaskId = CreateTask(TaskDummy, 5); - task2 = &gTasks[dummyTaskId]; +void sub_80701DC(u8 taskId) +{ + if (ewram1B000.unk27E == 1) + { + AddBagItem(ewram1C000.unk6, 1); + if (GetMonData(&gPlayerParty[ewram1C000.unk5], MON_DATA_SPECIES) != 0) + { + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 3); + ewram1B000.unk261 = 2; + } + ewram1B000.unk27E = 0; + } + ewram1C000.unk5++; + if (ewram1C000.unk5 == 6) + { + gUnknown_0202E8F4 = 0; + if (ewram1B000.unk280 == 0) + { + gTasks[taskId].func = TaskDummy; + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + CreateTask(sub_806FB0C, 8); + } + else + { + RemoveBagItem(ewram1C000.unk6, 1); + gTasks[taskId].func = ewram1C000.unk10; + } + gLastFieldPokeMenuOpened = 0; + } + else + { + sub_8070088(taskId); + } +} - task2->data[10] = GetMonData(unk_201C000.pokemon, MON_DATA_MAX_HP); - task2->data[11] = GetMonData(unk_201C000.pokemon, MON_DATA_HP); +void CreateItemUseMoveMenu(u8 partyMonIndex) +{ + u8 r6; + u8 i; - if (ExecuteTableBasedItemEffect__(unk_201C000.var05, unk_201C000.var06, 0)) + r6 = 0; + MenuDrawTextWindow(19, 10, 29, 19); + for (i = 0; i < 4; i++) { - DestroyTask(dummyTaskId); - gTasks[taskId].func = sub_80701DC; - return; + u16 move = GetMonData(&gPlayerParty[partyMonIndex], MON_DATA_MOVE1 + i); + + MenuPrint(gMoveNames[move], 20, i * 2 + 11); + if (move != 0) + r6++; } + InitMenu(0, 20, 11, r6, 0, 9); +} - gUnknown_0202E8F4 = 1; - MenuZeroFillWindowRect(3, 14, 26, 19); - PlaySE(SE_KAIFUKU); - PartyMenuUpdateLevelOrStatus(unk_201C000.pokemon, unk_201C000.var05); +void Task_HandleItemUseMoveMenuInput(u8 taskId) +{ + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } + else if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + MoveMenuCursor(1); + } + else if (gMain.newKeys & A_BUTTON) + { + gUnknown_08376B54[0](taskId); + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_08376B54[1](taskId); + } +} - task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle()][unk_201C000.var05], 9); - unk_201B260.var01 = 2; // u8 +void DoPPRecoveryItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + u8 *itemEffect; + u8 taskId2; - task2->data[12] = GetMonData(unk_201C000.pokemon, MON_DATA_HP) - task2->data[11]; - task2->data[14] = 1; - unk_201B260.var1E = 1; // u16 - unk_201B260.var20 = 1; // u16 + if (b == 0xAF) + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; + else + itemEffect = gItemEffectTable[b - 13]; + gTasks[taskId].func = TaskDummy; + taskId2 = CreateTask(TaskDummy, 5); + sub_806E8D0(taskId, b, c); + if (!(itemEffect[4] & 0x10)) + { + gTasks[taskId2].data[11] = 0; + DoRecoverPP(taskId2); + } + else + { + PlaySE(SE_SELECT); + sub_806D538(10, 3); + CreateItemUseMoveMenu(ewram1C000.unk5); + gTasks[taskId2].func = Task_HandleItemUseMoveMenuInput; + gMain.newKeys = 0; + } +} - unk_201C000.var12 = -0x8000; - task2->func = sub_806F8AC; +void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) +{ + sub_8072DEC(); + MenuZeroFillWindowRect(19, 10, 29, 19); + sub_806D5A4(); + gTasks[taskId].data[11] = GetMenuCursorPos(); + DoRecoverPP(taskId); } -#else -__attribute__((naked)) -void sub_8070088(void) + +void ItemUseMoveMenu_HandleCancel(u8 taskId) { - asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r1, _08070120 @ =gTasks\n\ - mov r10, r1\n\ - lsls r1, r0, 2\n\ - adds r1, r0\n\ - lsls r1, 3\n\ - mov r2, r10\n\ - adds r7, r1, r2\n\ - ldr r5, _08070124 @ =TaskDummy\n\ - str r5, [r7]\n\ - ldr r4, _08070128 @ =0x0201c000\n\ - ldrb r0, [r4, 0x5]\n\ - movs r1, 0x64\n\ - mov r9, r1\n\ - mov r2, r9\n\ - muls r2, r0\n\ - adds r0, r2, 0\n\ - ldr r1, _0807012C @ =gPlayerParty\n\ - mov r8, r1\n\ - add r0, r8\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _08070118\n\ - adds r0, r5, 0\n\ - movs r1, 0x5\n\ - bl CreateTask\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - str r0, [sp]\n\ - mov r0, r10\n\ - adds r0, 0x8\n\ - ldr r2, [sp]\n\ - adds r6, r2, r0\n\ - ldrb r0, [r4, 0x5]\n\ - mov r1, r9\n\ - muls r1, r0\n\ - adds r0, r1, 0\n\ - add r0, r8\n\ - str r0, [r4]\n\ - movs r1, 0x3A\n\ - bl GetMonData\n\ - strh r0, [r6, 0x14]\n\ - ldr r0, [r4]\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - strh r0, [r6, 0x16]\n\ - ldrb r0, [r4, 0x5]\n\ - ldrh r1, [r4, 0x6]\n\ - movs r2, 0\n\ - bl ExecuteTableBasedItemEffect__\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _08070134\n\ - adds r0, r5, 0\n\ - bl DestroyTask\n\ -_08070118:\n\ - ldr r0, _08070130 @ =sub_80701DC\n\ - str r0, [r7]\n\ - b _080701B0\n\ - .align 2, 0\n\ -_08070120: .4byte gTasks\n\ -_08070124: .4byte TaskDummy\n\ -_08070128: .4byte 0x0201c000\n\ -_0807012C: .4byte gPlayerParty\n\ -_08070130: .4byte sub_80701DC\n\ -_08070134:\n\ - ldr r1, _080701C0 @ =gUnknown_0202E8F4\n\ - movs r0, 0x1\n\ - strb r0, [r1]\n\ - movs r0, 0x3\n\ - movs r1, 0xE\n\ - movs r2, 0x1A\n\ - movs r3, 0x13\n\ - bl MenuZeroFillWindowRect\n\ - movs r0, 0x1\n\ - bl PlaySE\n\ - ldr r0, [r4]\n\ - ldrb r1, [r4, 0x5]\n\ - bl PartyMenuUpdateLevelOrStatus\n\ - bl IsDoubleBattle\n\ - adds r1, r0, 0\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - lsls r0, r1, 1\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - ldrb r1, [r4, 0x5]\n\ - lsls r1, 1\n\ - adds r0, r1\n\ - ldr r1, _080701C4 @ =gUnknown_083769A8\n\ - adds r0, r1\n\ - movs r1, 0x9\n\ - bl task_pc_turn_off\n\ - ldr r2, _080701C8 @ =0xfffff261\n\ - adds r1, r4, r2\n\ - movs r0, 0x2\n\ - strb r0, [r1]\n\ - ldr r0, [r4]\n\ - movs r1, 0x39\n\ - bl GetMonData\n\ - ldrh r1, [r6, 0x16]\n\ - subs r0, r1\n\ - strh r0, [r6, 0x18]\n\ - movs r0, 0x1\n\ - strh r0, [r6, 0x1C]\n\ - ldr r1, _080701CC @ =0xfffff27e\n\ - adds r0, r4, r1\n\ - movs r1, 0x1\n\ - strh r1, [r0]\n\ - ldr r2, _080701D0 @ =0xfffff280\n\ - adds r0, r4, r2\n\ - strh r1, [r0]\n\ - ldrh r1, [r6, 0x16]\n\ - adds r2, 0x2\n\ - adds r0, r4, r2\n\ - strh r1, [r0]\n\ - ldr r0, _080701D4 @ =0xffff8000\n\ - str r0, [r4, 0xC]\n\ - ldr r1, [sp]\n\ - add r1, r10\n\ - ldr r0, _080701D8 @ =sub_806F8AC\n\ - str r0, [r1]\n\ -_080701B0:\n\ - add sp, 0x4\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\ - .align 2, 0\n\ -_080701C0: .4byte gUnknown_0202E8F4\n\ -_080701C4: .4byte gUnknown_083769A8\n\ -_080701C8: .4byte 0xfffff261\n\ -_080701CC: .4byte 0xfffff27e\n\ -_080701D0: .4byte 0xfffff280\n\ -_080701D4: .4byte 0xffff8000\n\ -_080701D8: .4byte sub_806F8AC\n\ - .syntax divided\n"); + sub_8072DEC(); + MenuZeroFillWindowRect(19, 10, 29, 19); + if (gMain.inBattle) + gTasks[ewram1C000.unk4].func = SetUpBattlePokemonMenu; + else + gTasks[ewram1C000.unk4].func = sub_808B0C0; + sub_806D538(3, 0); + DestroyTask(taskId); } -#endif +void DoRecoverPP(u8 taskId) +{ + u16 r5 = 0; + + if (ExecuteTableBasedItemEffect__(ewram1C000.unk5, ewram1C000.unk6, gTasks[taskId].data[11])) + { + gUnknown_0202E8F4 = r5; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + } + else + { + gUnknown_0202E8F4 = 1; + PlaySE(SE_KAIFUKU); + RemoveBagItem(ewram1C000.unk6, 1); + r5 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + gTasks[taskId].data[11]); + StringCopy(gStringVar1, gMoveNames[r5]); + GetMedicineItemEffectMessage(ewram1C000.unk6); + sub_806E834(gStringVar4, 1); + } + gTasks[taskId].func = sub_806FB0C; +} asm(".section .text_c"); @@ -296,35 +335,27 @@ void sub_8070848(u8 taskId) u8 x; u8 y; u32 stat; - struct Pokemon **pokemon; - pokemon = &unk_201C000.pokemon; - asm("" ::: "r0"); - stat = GetMonData(*pokemon, gUnknown_08376D1C[i]); + stat = GetMonData(ewram1C000.pokemon, gUnknown_08376D1C[i]); - unk_201B260.var04[i + DATA_COUNT] = stat; - unk_201B260.var04[i] = stat - unk_201B260.var04[i]; + ewram1B000.unk264[i + DATA_COUNT] = stat; + ewram1B000.unk264[i] = stat - ewram1B000.unk264[i]; x = (i / 3) * 9 + 11; y = ((i % 3) << 1) + 1; MenuPrint_PixelCoords(gUnknown_08376D04[i], (x + 1) * 8, y * 8, 1); - if (i == 2) - { MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0); - } else - { MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1); - } - gStringVar1[0] = 0xFC; + gStringVar1[0] = EXT_CTRL_CODE_BEGIN; gStringVar1[1] = 0x14; gStringVar1[2] = 0x06; - ConvertIntToDecimalStringN(gStringVar1 + 3, unk_201B260.var04[i], 1, 2); + ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.unk264[i], 1, 2); MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0); } -- cgit v1.2.3 From acd08a46a52bca689914d018430777bd6e2710d6 Mon Sep 17 00:00:00 2001 From: camthesaxman Date: Wed, 17 May 2017 17:40:04 -0500 Subject: fill holes in party_menu.c and add battle_interface.h header --- asm/party_menu.s | 3110 -------------------------------------------- include/asm.inc.h | 2 +- include/battle_interface.h | 36 + include/menu.h | 2 +- include/songs.h | 4 +- ld_script.txt | 4 - src/battle_interface.c | 32 +- src/battle_party_menu.c | 1 - src/menu.c | 2 +- src/party_menu.c | 1182 ++++++++++++++++- 10 files changed, 1201 insertions(+), 3174 deletions(-) create mode 100644 include/battle_interface.h diff --git a/asm/party_menu.s b/asm/party_menu.s index bf00aa168..053d8b8b0 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -7446,3116 +7446,6 @@ PartyMenuGetPopupMenuFunc: @ 806E81C bx lr thumb_func_end PartyMenuGetPopupMenuFunc - .section .text_806E884 - - - - thumb_func_start sub_806E8D0 -sub_806E8D0: @ 806E8D0 - push {r4,r5,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 16 - lsrs r5, 16 - ldr r4, _0806E8FC @ =0x0201c000 - str r2, [r4, 0x10] - strb r0, [r4, 0x4] - bl sub_806CA38 - strb r0, [r4, 0x5] - strh r5, [r4, 0x6] - ldrb r1, [r4, 0x5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0806E900 @ =gPlayerParty - adds r0, r1 - str r0, [r4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806E8FC: .4byte 0x0201c000 -_0806E900: .4byte gPlayerParty - thumb_func_end sub_806E8D0 - - thumb_func_start PartyMenuUpdateMonHeldItem -PartyMenuUpdateMonHeldItem: @ 806E904 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r1, 16 - lsrs r4, r1, 16 - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E93C - adds r0, r5, 0 - adds r1, r4, 0 - bl GiveMailToMon - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _0806E930 - movs r0, 0x1 - b _0806E958 -_0806E930: - ldr r1, _0806E938 @ =gUnknown_0202E8F4 - movs r0, 0x2 - b _0806E940 - .align 2, 0 -_0806E938: .4byte gUnknown_0202E8F4 -_0806E93C: - ldr r1, _0806E960 @ =gUnknown_0202E8F4 - movs r0, 0x1 -_0806E940: - strb r0, [r1] - mov r0, sp - strb r4, [r0] - mov r1, sp - lsrs r0, r4, 8 - strb r0, [r1, 0x1] - adds r0, r5, 0 - movs r1, 0xC - mov r2, sp - bl SetMonData - movs r0, 0 -_0806E958: - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0806E960: .4byte gUnknown_0202E8F4 - thumb_func_end PartyMenuUpdateMonHeldItem - - thumb_func_start PartyMenuTryGiveMonHeldItem -PartyMenuTryGiveMonHeldItem: @ 806E964 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r8, r2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - mov r9, r5 - ldr r2, _0806E9D4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r6, r1, r2 - ldr r1, _0806E9D8 @ =TaskDummy - str r1, [r6] - adds r1, r5, 0 - mov r2, r8 - bl sub_806E8D0 - ldr r4, _0806E9DC @ =0x0201c000 - ldr r0, [r4] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r2, r0, 16 - adds r7, r2, 0 - ldr r1, _0806E9E0 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - ldr r0, _0806E9E4 @ =gUnknown_0202E8F8 - mov r10, r0 - movs r0, 0 - mov r1, r10 - strh r0, [r1] - cmp r2, 0 - beq _0806EA44 - adds r0, r2, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806E9F0 - ldr r0, _0806E9E8 @ =gOtherText_MailMustBeRemoved - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806E9EC @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask - b _0806EA78 - .align 2, 0 -_0806E9D4: .4byte gTasks -_0806E9D8: .4byte TaskDummy -_0806E9DC: .4byte 0x0201c000 -_0806E9E0: .4byte gUnknown_0202E8F4 -_0806E9E4: .4byte gUnknown_0202E8F8 -_0806E9E8: .4byte gOtherText_MailMustBeRemoved -_0806E9EC: .4byte party_menu_link_mon_held_item_object -_0806E9F0: - ldr r0, [r4] - ldr r1, _0806EA30 @ =gStringVar1 - bl GetMonNickname - ldr r1, _0806EA34 @ =gStringVar2 - adds r0, r7, 0 - bl CopyItemName - ldr r4, _0806EA38 @ =gStringVar4 - ldr r1, _0806EA3C @ =gOtherText_AlreadyHolding - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806EA40 @ =Task_ConfirmGiveHeldItem - movs r1, 0x5 - bl CreateTask - adds r0, r5, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EA78 - mov r0, r10 - strh r7, [r0] - b _0806EA78 - .align 2, 0 -_0806EA30: .4byte gStringVar1 -_0806EA34: .4byte gStringVar2 -_0806EA38: .4byte gStringVar4 -_0806EA3C: .4byte gOtherText_AlreadyHolding -_0806EA40: .4byte Task_ConfirmGiveHeldItem -_0806EA44: - ldr r0, [r4] - adds r1, r5, 0 - bl PartyMenuUpdateMonHeldItem - adds r0, r5, 0 - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0806EA66 - mov r1, r8 - str r1, [r6] - b _0806EA78 -_0806EA66: - ldrb r0, [r4, 0x5] - mov r1, r9 - movs r2, 0x1 - bl DisplayGiveHeldItemMessage - ldr r0, _0806EA88 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask -_0806EA78: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806EA88: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonHeldItem - - thumb_func_start party_menu_link_mon_held_item_object -party_menu_link_mon_held_item_object: @ 806EA8C - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0806EAC0 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806EABA - ldr r4, _0806EAC4 @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl SetHeldItemIconVisibility - ldr r2, _0806EAC8 @ =gTasks - ldrb r1, [r4, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0x10] - str r1, [r0] - adds r0, r5, 0 - bl DestroyTask -_0806EABA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EAC0: .4byte gUnknown_0202E8F6 -_0806EAC4: .4byte 0x0201c000 -_0806EAC8: .4byte gTasks - thumb_func_end party_menu_link_mon_held_item_object - - thumb_func_start PartyMenuTryGiveMonHeldItem_806EACC -PartyMenuTryGiveMonHeldItem_806EACC: @ 806EACC - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806EB74 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _0806EB30 @ =0x0201c000 - ldr r0, [r4] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r5, r0, 16 - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl RemoveBagItem - adds r0, r5, 0 - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EB5C - ldr r0, [r4] - ldrh r1, [r4, 0x6] - bl PartyMenuUpdateMonHeldItem - ldrh r0, [r4, 0x6] - bl ItemIsMail - lsls r0, 24 - cmp r0, 0 - beq _0806EB34 - ldrb r0, [r4, 0x5] - adds r1, r5, 0 - movs r2, 0x1 - bl DisplayTakeHeldItemMessage - b _0806EB9A - .align 2, 0 -_0806EB30: .4byte 0x0201c000 -_0806EB34: - ldrh r0, [r4, 0x6] - ldr r1, _0806EB50 @ =gStringVar1 - bl CopyItemName - ldr r4, _0806EB54 @ =gStringVar4 - ldr r1, _0806EB58 @ =gOtherText_TakenAndReplaced - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - b _0806EB9A - .align 2, 0 -_0806EB50: .4byte gStringVar1 -_0806EB54: .4byte gStringVar4 -_0806EB58: .4byte gOtherText_TakenAndReplaced -_0806EB5C: - ldr r0, _0806EB70 @ =gOtherText_BagFullCannotRemoveItem - movs r1, 0 - bl sub_806E834 - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl AddBagItem - b _0806EB9A - .align 2, 0 -_0806EB70: .4byte gOtherText_BagFullCannotRemoveItem -_0806EB74: - cmp r1, 0x1 - beq _0806EB80 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EBA8 -_0806EB80: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EB8E - movs r0, 0x5 - bl PlaySE -_0806EB8E: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect -_0806EB9A: - ldr r0, _0806EBB0 @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EBB4 @ =party_menu_link_mon_held_item_object - str r0, [r1] -_0806EBA8: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806EBB0: .4byte gTasks -_0806EBB4: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonHeldItem_806EACC - - thumb_func_start Task_ConfirmGiveHeldItem -Task_ConfirmGiveHeldItem: @ 806EBB8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806EBE4 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806EBDE - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806EBE8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EBEC @ =PartyMenuTryGiveMonHeldItem_806EACC - str r0, [r1] -_0806EBDE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EBE4: .4byte gUnknown_0202E8F6 -_0806EBE8: .4byte gTasks -_0806EBEC: .4byte PartyMenuTryGiveMonHeldItem_806EACC - thumb_func_end Task_ConfirmGiveHeldItem - - thumb_func_start DisplayGiveHeldItemMessage -DisplayGiveHeldItemMessage: @ 806EBF0 - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806EC30 @ =gPlayerParty - adds r0, r1 - ldr r1, _0806EC34 @ =gStringVar1 - bl GetMonNickname - ldr r1, _0806EC38 @ =gStringVar2 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _0806EC3C @ =gStringVar4 - ldr r1, _0806EC40 @ =gOtherText_WasGivenToHold - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806E834 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EC30: .4byte gPlayerParty -_0806EC34: .4byte gStringVar1 -_0806EC38: .4byte gStringVar2 -_0806EC3C: .4byte gStringVar4 -_0806EC40: .4byte gOtherText_WasGivenToHold - thumb_func_end DisplayGiveHeldItemMessage - - thumb_func_start PartyMenuTryGiveMonMail -PartyMenuTryGiveMonMail: @ 806EC44 - push {r4,r5,lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806ECA0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _0806ECA4 @ =TaskDummy - str r3, [r1] - movs r1, 0 - bl sub_806E8D0 - ldr r5, _0806ECA8 @ =0x0201c000 - ldr r0, [r5] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - ldr r2, _0806ECAC @ =gUnknown_0202E8F4 - movs r1, 0 - strb r1, [r2] - movs r1, 0xF8 - lsls r1, 6 - adds r2, r5, r1 - ldrb r1, [r2] - adds r1, 0x6 - ldrb r2, [r2, 0x2] - adds r1, r2 - lsls r2, r1, 3 - adds r2, r1 - lsls r2, 2 - ldr r1, _0806ECB0 @ =gSaveBlock1 + 0x2B4C - adds r4, r2, r1 - cmp r0, 0 - beq _0806ECBC - ldr r0, _0806ECB4 @ =gOtherText_PokeHoldingItemCantMail - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806ECB8 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask - b _0806ECDA - .align 2, 0 -_0806ECA0: .4byte gTasks -_0806ECA4: .4byte TaskDummy -_0806ECA8: .4byte 0x0201c000 -_0806ECAC: .4byte gUnknown_0202E8F4 -_0806ECB0: .4byte gSaveBlock1 + 0x2B4C -_0806ECB4: .4byte gOtherText_PokeHoldingItemCantMail -_0806ECB8: .4byte party_menu_link_mon_held_item_object -_0806ECBC: - ldr r0, [r5] - adds r1, r4, 0 - bl GiveMailToMon2 - adds r0, r4, 0 - bl ClearMailStruct - ldr r0, _0806ECE0 @ =gOtherText_MailTransferredMailbox - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806ECE4 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask -_0806ECDA: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806ECE0: .4byte gOtherText_MailTransferredMailbox -_0806ECE4: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonMail - - thumb_func_start PartyMenuTryGiveMonHeldItem_806ECE8 -PartyMenuTryGiveMonHeldItem_806ECE8: @ 806ECE8 - push {r4-r6,lr} - sub sp, 0x4 - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806ED38 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _0806ED3C @ =TaskDummy - str r3, [r1] - movs r1, 0 - bl sub_806E8D0 - ldr r5, _0806ED40 @ =0x0201c000 - ldr r0, [r5] - movs r1, 0xC - bl GetMonData - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, r4, 0 - cmp r4, 0 - bne _0806ED50 - ldr r4, _0806ED44 @ =gStringVar4 - ldr r1, _0806ED48 @ =gOtherText_NotHoldingAnything - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0 - bl sub_806E834 - ldr r0, _0806ED4C @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask - b _0806EDA2 - .align 2, 0 -_0806ED38: .4byte gTasks -_0806ED3C: .4byte TaskDummy -_0806ED40: .4byte 0x0201c000 -_0806ED44: .4byte gStringVar4 -_0806ED48: .4byte gOtherText_NotHoldingAnything -_0806ED4C: .4byte party_menu_link_mon_held_item_object -_0806ED50: - mov r0, sp - movs r1, 0 - strb r1, [r0] - strb r1, [r0, 0x1] - adds r0, r4, 0 - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806ED92 - adds r0, r4, 0 - bl ItemIsMail - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806ED7C - ldr r0, [r5] - bl TakeMailFromMon -_0806ED7C: - ldrb r0, [r5, 0x5] - adds r1, r6, 0 - movs r2, 0 - bl DisplayTakeHeldItemMessage - ldr r0, [r5] - movs r1, 0xC - mov r2, sp - bl SetMonData - b _0806ED9A -_0806ED92: - ldr r0, _0806EDAC @ =gOtherText_BagFullCannotRemoveItem - movs r1, 0 - bl sub_806E834 -_0806ED9A: - ldr r0, _0806EDB0 @ =party_menu_link_mon_held_item_object - movs r1, 0x5 - bl CreateTask -_0806EDA2: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806EDAC: .4byte gOtherText_BagFullCannotRemoveItem -_0806EDB0: .4byte party_menu_link_mon_held_item_object - thumb_func_end PartyMenuTryGiveMonHeldItem_806ECE8 - - thumb_func_start DisplayTakeHeldItemMessage -DisplayTakeHeldItemMessage: @ 806EDB4 - push {r4,r5,lr} - adds r4, r1, 0 - adds r5, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _0806EDF4 @ =gPlayerParty - adds r0, r1 - ldr r1, _0806EDF8 @ =gStringVar1 - bl GetMonNickname - ldr r1, _0806EDFC @ =gStringVar2 - adds r0, r4, 0 - bl CopyItemName - ldr r4, _0806EE00 @ =gStringVar4 - ldr r1, _0806EE04 @ =gOtherText_ReceivedTheThingFrom - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806E834 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EDF4: .4byte gPlayerParty -_0806EDF8: .4byte gStringVar1 -_0806EDFC: .4byte gStringVar2 -_0806EE00: .4byte gStringVar4 -_0806EE04: .4byte gOtherText_ReceivedTheThingFrom - thumb_func_end DisplayTakeHeldItemMessage - - thumb_func_start DoTakeMail -DoTakeMail: @ 806EE08 - push {r4,lr} - adds r2, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _0806EE48 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _0806EE4C @ =TaskDummy - str r3, [r1] - movs r1, 0 - bl sub_806E8D0 - ldr r4, _0806EE50 @ =0x0201c000 - ldr r0, [r4] - movs r1, 0xC - bl GetMonData - strh r0, [r4, 0x6] - ldr r0, _0806EE54 @ =gOtherText_SendRemovedMailPrompt - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806EE58 @ =Task_ConfirmTakeHeldMail - movs r1, 0x5 - bl CreateTask - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EE48: .4byte gTasks -_0806EE4C: .4byte TaskDummy -_0806EE50: .4byte 0x0201c000 -_0806EE54: .4byte gOtherText_SendRemovedMailPrompt -_0806EE58: .4byte Task_ConfirmTakeHeldMail - thumb_func_end DoTakeMail - - thumb_func_start Task_LoseMailMessage -Task_LoseMailMessage: @ 806EE5C - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806EEB0 - ldr r5, _0806EE90 @ =0x0201c000 - ldrh r0, [r5, 0x6] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0806EE98 - ldr r0, [r5] - bl TakeMailFromMon - ldr r0, _0806EE94 @ =gOtherText_MailTaken - movs r1, 0 - bl sub_806E834 - b _0806EEA0 - .align 2, 0 -_0806EE90: .4byte 0x0201c000 -_0806EE94: .4byte gOtherText_MailTaken -_0806EE98: - ldr r0, _0806EEAC @ =gOtherText_BagFullCannotRemoveItem - movs r1, 0 - bl sub_806E834 -_0806EEA0: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - b _0806EEDE - .align 2, 0 -_0806EEAC: .4byte gOtherText_BagFullCannotRemoveItem -_0806EEB0: - cmp r1, 0x1 - beq _0806EEBC - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EEF0 -_0806EEBC: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EECA - movs r0, 0x5 - bl PlaySE -_0806EECA: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0xE - movs r2, 0x1D - movs r3, 0x13 -_0806EEDE: - bl MenuZeroFillWindowRect - ldr r0, _0806EEF8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EEFC @ =party_menu_link_mon_held_item_object - str r0, [r1] -_0806EEF0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806EEF8: .4byte gTasks -_0806EEFC: .4byte party_menu_link_mon_held_item_object - thumb_func_end Task_LoseMailMessage - - thumb_func_start Task_ConfirmLoseMailMessage -Task_ConfirmLoseMailMessage: @ 806EF00 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806EF2C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806EF26 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806EF30 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EF34 @ =Task_LoseMailMessage - str r0, [r1] -_0806EF26: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EF2C: .4byte gUnknown_0202E8F6 -_0806EF30: .4byte gTasks -_0806EF34: .4byte Task_LoseMailMessage - thumb_func_end Task_ConfirmLoseMailMessage - - thumb_func_start Task_TakeHeldMail -Task_TakeHeldMail: @ 806EF38 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806EF9C - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806EF70 @ =0x0201c000 - ldr r0, [r0] - bl TakeMailFromMon2 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0806EF78 - ldr r0, _0806EF74 @ =gOtherText_MailWasSent - movs r1, 0 - bl sub_806E834 - b _0806EF80 - .align 2, 0 -_0806EF70: .4byte 0x0201c000 -_0806EF74: .4byte gOtherText_MailWasSent -_0806EF78: - ldr r0, _0806EF90 @ =gOtherText_MailboxIsFull - movs r1, 0 - bl sub_806E834 -_0806EF80: - ldr r0, _0806EF94 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806EF98 @ =party_menu_link_mon_held_item_object - str r0, [r1] - b _0806EFD8 - .align 2, 0 -_0806EF90: .4byte gOtherText_MailboxIsFull -_0806EF94: .4byte gTasks -_0806EF98: .4byte party_menu_link_mon_held_item_object -_0806EF9C: - cmp r1, 0x1 - beq _0806EFA8 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EFD8 -_0806EFA8: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806EFB6 - movs r0, 0x5 - bl PlaySE -_0806EFB6: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806EFE0 @ =gOtherText_MailRemovedMessageLost - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806EFE4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806EFE8 @ =Task_ConfirmLoseMailMessage - str r1, [r0] -_0806EFD8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806EFE0: .4byte gOtherText_MailRemovedMessageLost -_0806EFE4: .4byte gTasks -_0806EFE8: .4byte Task_ConfirmLoseMailMessage - thumb_func_end Task_TakeHeldMail - - thumb_func_start Task_ConfirmTakeHeldMail -Task_ConfirmTakeHeldMail: @ 806EFEC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F018 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F012 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806F01C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F020 @ =Task_TakeHeldMail - str r0, [r1] -_0806F012: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F018: .4byte gUnknown_0202E8F6 -_0806F01C: .4byte gTasks -_0806F020: .4byte Task_TakeHeldMail - thumb_func_end Task_ConfirmTakeHeldMail - - thumb_func_start ItemIdToBattleMoveId -ItemIdToBattleMoveId: @ 806F024 - lsls r0, 16 - ldr r1, _0806F034 @ =0xfedf0000 - adds r0, r1 - ldr r1, _0806F038 @ =gUnknown_08376504 - lsrs r0, 15 - adds r0, r1 - ldrh r0, [r0] - bx lr - .align 2, 0 -_0806F034: .4byte 0xfedf0000 -_0806F038: .4byte gUnknown_08376504 - thumb_func_end ItemIdToBattleMoveId - - thumb_func_start pokemon_has_move -pokemon_has_move: @ 806F03C - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r5, r1, 16 - movs r4, 0 -_0806F046: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r6, 0 - bl GetMonData - cmp r0, r5 - bne _0806F058 - movs r0, 0x1 - b _0806F064 -_0806F058: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _0806F046 - movs r0, 0 -_0806F064: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end pokemon_has_move - - thumb_func_start TeachMonTMMove -TeachMonTMMove: @ 806F06C - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - movs r0, 0x5 - bl PlaySE - ldr r1, _0806F0A8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F0AC @ =TaskDummy - str r1, [r0] - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_806E8D0 - ldr r0, _0806F0B0 @ =Task_TeamMonTMMove - movs r1, 0x5 - bl CreateTask - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F0A8: .4byte gTasks -_0806F0AC: .4byte TaskDummy -_0806F0B0: .4byte Task_TeamMonTMMove - thumb_func_end TeachMonTMMove - - thumb_func_start Task_TeamMonTMMove -Task_TeamMonTMMove: @ 806F0B4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, r6, 0 - ldr r5, _0806F114 @ =0x0201c000 - ldr r0, [r5] - ldr r1, _0806F118 @ =gStringVar1 - bl GetMonNickname - ldrh r0, [r5, 0x6] - bl ItemIdToBattleMoveId - movs r4, 0 - strh r0, [r5, 0x8] - ldr r0, _0806F11C @ =gStringVar2 - ldrh r2, [r5, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F120 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r1, _0806F124 @ =0xfffff282 - adds r0, r5, r1 - strh r4, [r0] - ldr r0, [r5] - ldrh r1, [r5, 0x8] - bl pokemon_has_move - lsls r0, 24 - cmp r0, 0 - beq _0806F138 - ldr r4, _0806F128 @ =gStringVar4 - ldr r1, _0806F12C @ =gOtherText_AlreadyKnows - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F130 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F134 @ =party_menu_link_mon_held_item_object - b _0806F1B6 - .align 2, 0 -_0806F114: .4byte 0x0201c000 -_0806F118: .4byte gStringVar1 -_0806F11C: .4byte gStringVar2 -_0806F120: .4byte gMoveNames -_0806F124: .4byte 0xfffff282 -_0806F128: .4byte gStringVar4 -_0806F12C: .4byte gOtherText_AlreadyKnows -_0806F130: .4byte gTasks -_0806F134: .4byte party_menu_link_mon_held_item_object -_0806F138: - ldr r0, [r5] - ldrb r1, [r5, 0x6] - subs r1, 0x21 - lsls r1, 24 - lsrs r1, 24 - bl CanMonLearnTMHM - cmp r0, 0 - bne _0806F17C - ldr r4, _0806F16C @ =gStringVar4 - ldr r1, _0806F170 @ =gOtherText_NotCompatible - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F174 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F178 @ =party_menu_link_mon_held_item_object - b _0806F1B6 - .align 2, 0 -_0806F16C: .4byte gStringVar4 -_0806F170: .4byte gOtherText_NotCompatible -_0806F174: .4byte gTasks -_0806F178: .4byte party_menu_link_mon_held_item_object -_0806F17C: - ldr r0, [r5] - ldrh r1, [r5, 0x8] - bl GiveMoveToMon - lsls r0, 16 - ldr r1, _0806F194 @ =0xffff0000 - cmp r0, r1 - beq _0806F198 - adds r0, r6, 0 - bl Task_TeamMonTMMove2 - b _0806F1B8 - .align 2, 0 -_0806F194: .4byte 0xffff0000 -_0806F198: - ldr r4, _0806F1C0 @ =gStringVar4 - ldr r1, _0806F1C4 @ =gOtherText_WantsToLearn - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F1C8 @ =gTasks - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F1CC @ =sub_806F358 -_0806F1B6: - str r1, [r0] -_0806F1B8: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806F1C0: .4byte gStringVar4 -_0806F1C4: .4byte gOtherText_WantsToLearn -_0806F1C8: .4byte gTasks -_0806F1CC: .4byte sub_806F358 - thumb_func_end Task_TeamMonTMMove - - thumb_func_start Task_TeamMonTMMove2 -Task_TeamMonTMMove2: @ 806F1D0 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0806F234 @ =gStringVar2 - ldr r5, _0806F238 @ =0x0201c000 - ldrh r2, [r5, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F23C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F240 @ =gStringVar4 - ldr r1, _0806F244 @ =gOtherText_LearnedMove - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, [r5] - movs r1, 0x4 - bl AdjustFriendship - ldr r1, _0806F248 @ =0xfffff282 - adds r0, r5, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0806F220 - ldrh r1, [r5, 0x6] - movs r0, 0xA9 - lsls r0, 1 - cmp r1, r0 - bhi _0806F220 - adds r0, r1, 0 - movs r1, 0x1 - bl RemoveBagItem -_0806F220: - ldr r0, _0806F24C @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F250 @ =Task_TeamMonTMMove3 - str r0, [r1] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F234: .4byte gStringVar2 -_0806F238: .4byte 0x0201c000 -_0806F23C: .4byte gMoveNames -_0806F240: .4byte gStringVar4 -_0806F244: .4byte gOtherText_LearnedMove -_0806F248: .4byte 0xfffff282 -_0806F24C: .4byte gTasks -_0806F250: .4byte Task_TeamMonTMMove3 - thumb_func_end Task_TeamMonTMMove2 - - thumb_func_start Task_TeamMonTMMove3 -Task_TeamMonTMMove3: @ 806F254 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F27C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F276 - ldr r0, _0806F280 @ =0x0000016f - bl PlayFanfare - ldr r1, _0806F284 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F288 @ =Task_TeamMonTMMove4 - str r1, [r0] -_0806F276: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F27C: .4byte gUnknown_0202E8F6 -_0806F280: .4byte 0x0000016f -_0806F284: .4byte gTasks -_0806F288: .4byte Task_TeamMonTMMove4 - thumb_func_end Task_TeamMonTMMove3 - - thumb_func_start Task_TeamMonTMMove4 -Task_TeamMonTMMove4: @ 806F28C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl IsFanfareTaskInactive - lsls r0, 24 - cmp r0, 0 - beq _0806F2F2 - ldr r0, _0806F2D0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0806F2B2 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0806F2F2 -_0806F2B2: - ldr r4, _0806F2D4 @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl SetHeldItemIconVisibility - ldr r1, _0806F2D8 @ =0xfffff282 - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _0806F2DC - adds r0, r5, 0 - bl sub_8070C54 - b _0806F2F2 - .align 2, 0 -_0806F2D0: .4byte gMain -_0806F2D4: .4byte 0x0201c000 -_0806F2D8: .4byte 0xfffff282 -_0806F2DC: - ldr r2, _0806F2F8 @ =gTasks - ldrb r1, [r4, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0x10] - str r1, [r0] - adds r0, r6, 0 - bl DestroyTask -_0806F2F2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F2F8: .4byte gTasks - thumb_func_end Task_TeamMonTMMove4 - - thumb_func_start sub_806F2FC -sub_806F2FC: @ 806F2FC - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - ldr r0, _0806F32C @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F34E - ldr r4, _0806F330 @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl SetHeldItemIconVisibility - ldr r1, _0806F334 @ =0xfffff282 - adds r0, r4, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0x1 - bne _0806F338 - adds r0, r5, 0 - bl sub_8070C54 - b _0806F34E - .align 2, 0 -_0806F32C: .4byte gUnknown_0202E8F6 -_0806F330: .4byte 0x0201c000 -_0806F334: .4byte 0xfffff282 -_0806F338: - ldr r2, _0806F354 @ =gTasks - ldrb r1, [r4, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0x10] - str r1, [r0] - adds r0, r6, 0 - bl DestroyTask -_0806F34E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F354: .4byte gTasks - thumb_func_end sub_806F2FC - - thumb_func_start sub_806F358 -sub_806F358: @ 806F358 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F384 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F37E - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806F388 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F38C @ =sub_806F390 - str r0, [r1] -_0806F37E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F384: .4byte gUnknown_0202E8F6 -_0806F388: .4byte gTasks -_0806F38C: .4byte sub_806F390 - thumb_func_end sub_806F358 - - thumb_func_start sub_806F390 -sub_806F390: @ 806F390 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806F3D4 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806F3C8 @ =gOtherText_WhichMoveToForget2 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F3CC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F3D0 @ =sub_806F44C - str r1, [r0] - b _0806F3F4 - .align 2, 0 -_0806F3C8: .4byte gOtherText_WhichMoveToForget2 -_0806F3CC: .4byte gTasks -_0806F3D0: .4byte sub_806F44C -_0806F3D4: - cmp r1, 0x1 - beq _0806F3E0 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F3F4 -_0806F3E0: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F3EE - movs r0, 0x5 - bl PlaySE -_0806F3EE: - adds r0, r5, 0 - bl StopTryingToTeachMove_806F614 -_0806F3F4: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_806F390 - - thumb_func_start sub_806F3FC -sub_806F3FC: @ 806F3FC - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0806F438 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806F430 - ldr r0, _0806F43C @ =gPlayerParty - ldr r4, _0806F440 @ =0x0201c000 - ldrb r1, [r4, 0x5] - ldr r2, _0806F444 @ =gPlayerPartyCount - ldrb r2, [r2] - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0806F448 @ =sub_808B564 - ldrh r4, [r4, 0x8] - str r4, [sp] - bl sub_809D9F0 - adds r0, r5, 0 - bl DestroyTask -_0806F430: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F438: .4byte gPaletteFade -_0806F43C: .4byte gPlayerParty -_0806F440: .4byte 0x0201c000 -_0806F444: .4byte gPlayerPartyCount -_0806F448: .4byte sub_808B564 - thumb_func_end sub_806F3FC - - thumb_func_start sub_806F44C -sub_806F44C: @ 806F44C - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F484 @ =gUnknown_0202E8F6 - ldrb r1, [r0] - cmp r1, 0 - bne _0806F47A - movs r0, 0x1 - negs r0, r0 - str r1, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0806F488 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F48C @ =sub_806F3FC - str r1, [r0] -_0806F47A: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F484: .4byte gUnknown_0202E8F6 -_0806F488: .4byte gTasks -_0806F48C: .4byte sub_806F3FC - thumb_func_end sub_806F44C - - thumb_func_start TaughtMove -TaughtMove: @ 806F490 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0806F50C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806F506 - ldr r1, _0806F510 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F514 @ =TaskDummy - str r1, [r0] - ldr r0, _0806F518 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0806F51C @ =sub_808B508 - adds r0, r3, 0 - bl sub_806E8D0 - bl sub_809FA30 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r5, _0806F520 @ =0x0201c000 - ldr r0, [r5] - adds r1, 0xD - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, [r5] - ldr r1, _0806F524 @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F528 @ =gStringVar2 - movs r1, 0xD - muls r1, r4 - ldr r2, _0806F52C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F530 @ =gStringVar4 - ldr r1, _0806F534 @ =gOtherText_ForgetMove123_2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806F538 @ =TMMoveUpdateMoveSlot - movs r1, 0x5 - bl CreateTask -_0806F506: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F50C: .4byte gPaletteFade -_0806F510: .4byte gTasks -_0806F514: .4byte TaskDummy -_0806F518: .4byte gScriptItemId -_0806F51C: .4byte sub_808B508 -_0806F520: .4byte 0x0201c000 -_0806F524: .4byte gStringVar1 -_0806F528: .4byte gStringVar2 -_0806F52C: .4byte gMoveNames -_0806F530: .4byte gStringVar4 -_0806F534: .4byte gOtherText_ForgetMove123_2 -_0806F538: .4byte TMMoveUpdateMoveSlot - thumb_func_end TaughtMove - - thumb_func_start TMMoveUpdateMoveSlot -TMMoveUpdateMoveSlot: @ 806F53C - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _0806F580 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F57A - ldr r4, _0806F584 @ =0x0201c000 - ldr r5, [r4] - bl sub_809FA30 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl RemoveMonPPBonus - ldr r5, [r4] - ldrh r4, [r4, 0x8] - bl sub_809FA30 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl SetMonMoveSlot - adds r0, r6, 0 - bl Task_TeamMonTMMove2 -_0806F57A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F580: .4byte gUnknown_0202E8F6 -_0806F584: .4byte 0x0201c000 - thumb_func_end TMMoveUpdateMoveSlot - - thumb_func_start StopTryingToTeachMove_806F588 -StopTryingToTeachMove_806F588: @ 806F588 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r0, _0806F5E8 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0806F5E0 - ldr r1, _0806F5EC @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F5F0 @ =TaskDummy - str r1, [r0] - ldr r0, _0806F5F4 @ =gScriptItemId - ldrh r1, [r0] - ldr r2, _0806F5F8 @ =sub_808B508 - adds r0, r3, 0 - bl sub_806E8D0 - ldr r0, _0806F5FC @ =gStringVar2 - ldr r1, _0806F600 @ =0x0201c000 - ldrh r2, [r1, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F604 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F608 @ =gStringVar4 - ldr r1, _0806F60C @ =gOtherText_StopTryingTo - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0806F610 @ =StopTryingToTeachMove_806F67C - movs r1, 0x5 - bl CreateTask -_0806F5E0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F5E8: .4byte gPaletteFade -_0806F5EC: .4byte gTasks -_0806F5F0: .4byte TaskDummy -_0806F5F4: .4byte gScriptItemId -_0806F5F8: .4byte sub_808B508 -_0806F5FC: .4byte gStringVar2 -_0806F600: .4byte 0x0201c000 -_0806F604: .4byte gMoveNames -_0806F608: .4byte gStringVar4 -_0806F60C: .4byte gOtherText_StopTryingTo -_0806F610: .4byte StopTryingToTeachMove_806F67C - thumb_func_end StopTryingToTeachMove_806F588 - - thumb_func_start StopTryingToTeachMove_806F614 -StopTryingToTeachMove_806F614: @ 806F614 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r0, _0806F660 @ =gStringVar2 - ldr r1, _0806F664 @ =0x0201c000 - ldrh r2, [r1, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F668 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F66C @ =gStringVar4 - ldr r1, _0806F670 @ =gOtherText_StopTryingTo - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F674 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F678 @ =StopTryingToTeachMove_806F67C - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0806F660: .4byte gStringVar2 -_0806F664: .4byte 0x0201c000 -_0806F668: .4byte gMoveNames -_0806F66C: .4byte gStringVar4 -_0806F670: .4byte gOtherText_StopTryingTo -_0806F674: .4byte gTasks -_0806F678: .4byte StopTryingToTeachMove_806F67C - thumb_func_end StopTryingToTeachMove_806F614 - - thumb_func_start StopTryingToTeachMove_806F67C -StopTryingToTeachMove_806F67C: @ 806F67C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806F6A8 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806F6A2 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r0, _0806F6AC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0806F6B0 @ =StopTryingToTeachMove_806F6B4 - str r0, [r1] -_0806F6A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806F6A8: .4byte gUnknown_0202E8F6 -_0806F6AC: .4byte gTasks -_0806F6B0: .4byte StopTryingToTeachMove_806F6B4 - thumb_func_end StopTryingToTeachMove_806F67C - - thumb_func_start StopTryingToTeachMove_806F6B4 -StopTryingToTeachMove_806F6B4: @ 806F6B4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r6, r5, 0 - bl ProcessMenuInputNoWrap_ - lsls r0, 24 - asrs r1, r0, 24 - cmp r1, 0 - bne _0806F730 - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _0806F710 @ =0x0201c000 - ldr r0, [r4] - ldr r1, _0806F714 @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F718 @ =gStringVar2 - ldrh r2, [r4, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F71C @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F720 @ =gStringVar4 - ldr r1, _0806F724 @ =gOtherText_DidNotLearnMove2 - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F728 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F72C @ =sub_806F2FC - b _0806F78E - .align 2, 0 -_0806F710: .4byte 0x0201c000 -_0806F714: .4byte gStringVar1 -_0806F718: .4byte gStringVar2 -_0806F71C: .4byte gMoveNames -_0806F720: .4byte gStringVar4 -_0806F724: .4byte gOtherText_DidNotLearnMove2 -_0806F728: .4byte gTasks -_0806F72C: .4byte sub_806F2FC -_0806F730: - cmp r1, 0x1 - beq _0806F73C - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F790 -_0806F73C: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0806F74A - movs r0, 0x5 - bl PlaySE -_0806F74A: - movs r0, 0x17 - movs r1, 0x8 - movs r2, 0x1D - movs r3, 0xD - bl MenuZeroFillWindowRect - ldr r4, _0806F798 @ =0x0201c000 - ldr r0, [r4] - ldr r1, _0806F79C @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F7A0 @ =gStringVar2 - ldrh r2, [r4, 0x8] - movs r1, 0xD - muls r1, r2 - ldr r2, _0806F7A4 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r4, _0806F7A8 @ =gStringVar4 - ldr r1, _0806F7AC @ =gOtherText_WantsToLearn - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806F7B0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F7B4 @ =sub_806F358 -_0806F78E: - str r1, [r0] -_0806F790: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0806F798: .4byte 0x0201c000 -_0806F79C: .4byte gStringVar1 -_0806F7A0: .4byte gStringVar2 -_0806F7A4: .4byte gMoveNames -_0806F7A8: .4byte gStringVar4 -_0806F7AC: .4byte gOtherText_WantsToLearn -_0806F7B0: .4byte gTasks -_0806F7B4: .4byte sub_806F358 - thumb_func_end StopTryingToTeachMove_806F6B4 - - thumb_func_start IsHMMove -IsHMMove: @ 806F7B8 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldr r3, _0806F7D4 @ =gUnknown_08376504 -_0806F7C2: - adds r0, r1, 0 - adds r0, 0x32 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r2 - bne _0806F7D8 - movs r0, 0x1 - b _0806F7E4 - .align 2, 0 -_0806F7D4: .4byte gUnknown_08376504 -_0806F7D8: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x7 - bls _0806F7C2 - movs r0, 0 -_0806F7E4: - pop {r1} - bx r1 - thumb_func_end IsHMMove - - thumb_func_start sub_806F7E8 -sub_806F7E8: @ 806F7E8 - push {r4-r6,lr} - adds r5, r1, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r3, r0, 2 - adds r3, r0 - lsls r3, 3 - ldr r0, _0806F898 @ =gTasks + 0x8 - adds r3, r0 - movs r0, 0x14 - ldrsh r1, [r3, r0] - str r1, [r5] - movs r4, 0x16 - ldrsh r0, [r3, r4] - str r0, [r5, 0x4] - movs r4, 0x18 - ldrsh r0, [r3, r4] - lsls r2, 24 - asrs r2, 24 - muls r0, r2 - str r0, [r5, 0x8] - movs r0, 0x80 - lsls r0, 1 - str r0, [r5, 0x10] - ldr r6, _0806F89C @ =0x0201b000 - ldr r2, _0806F8A0 @ =0x00000282 - adds r0, r6, r2 - movs r4, 0 - ldrsh r0, [r0, r4] - bl GetHPBarLevel - lsls r0, 24 - lsrs r2, r0, 24 - adds r3, r2, 0 - cmp r2, 0x2 - bls _0806F83E - ldrb r0, [r5, 0xC] - movs r1, 0x20 - negs r1, r1 - ands r1, r0 - movs r0, 0x4 - orrs r1, r0 - strb r1, [r5, 0xC] -_0806F83E: - cmp r2, 0x2 - bne _0806F850 - ldrb r0, [r5, 0xC] - movs r1, 0x20 - negs r1, r1 - ands r1, r0 - movs r0, 0x5 - orrs r1, r0 - strb r1, [r5, 0xC] -_0806F850: - cmp r3, 0x1 - bhi _0806F862 - ldrb r0, [r5, 0xC] - movs r1, 0x20 - negs r1, r1 - ands r1, r0 - movs r0, 0x6 - orrs r1, r0 - strb r1, [r5, 0xC] -_0806F862: - ldr r4, _0806F8A4 @ =gUnknown_08376858 - bl IsDoubleBattle - movs r2, 0x80 - lsls r2, 5 - adds r1, r6, r2 - ldrb r2, [r1, 0x5] - lsls r2, 2 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 3 - adds r2, r1 - adds r2, r4 - ldr r2, [r2] - ldr r4, _0806F8A8 @ =0x0000100c - adds r1, r6, r4 - adds r0, r5, 0 - movs r3, 0 - bl sub_80460C8 - lsls r0, 16 - asrs r0, 16 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806F898: .4byte gTasks + 0x8 -_0806F89C: .4byte 0x0201b000 -_0806F8A0: .4byte 0x00000282 -_0806F8A4: .4byte gUnknown_08376858 -_0806F8A8: .4byte 0x0000100c - thumb_func_end sub_806F7E8 - - thumb_func_start sub_806F8AC -sub_806F8AC: @ 806F8AC - push {r4-r7,lr} - sub sp, 0x18 - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0x1 - negs r4, r4 - adds r0, r6, 0 - mov r1, sp - adds r2, r4, 0 - bl sub_806F7E8 - ldr r1, _0806F8F4 @ =0x0201b000 - ldr r2, _0806F8F8 @ =0x00000282 - adds r5, r1, r2 - strh r0, [r5] - lsls r0, 16 - asrs r0, 16 - cmp r0, r4 - beq _0806F8D4 - b _0806F9F0 -_0806F8D4: - movs r0, 0x80 - lsls r0, 5 - adds r1, r0 - movs r0, 0 - str r0, [r1, 0xC] - ldr r0, [sp, 0x8] - negs r3, r0 - ldr r2, [sp, 0x4] - adds r0, r3, r2 - ldr r1, [sp] - cmp r0, r1 - ble _0806F8FC - subs r1, r2 - add r0, sp, 0x14 - strh r1, [r0] - b _0806F900 - .align 2, 0 -_0806F8F4: .4byte 0x0201b000 -_0806F8F8: .4byte 0x00000282 -_0806F8FC: - add r0, sp, 0x14 - strh r3, [r0] -_0806F900: - adds r5, r0, 0 - ldr r1, _0806F940 @ =gBattleMoveDamage - ldrh r0, [r5] - negs r0, r0 - str r0, [r1] - ldr r0, _0806F944 @ =0x0201c000 - ldr r0, [r0] - ldr r1, _0806F948 @ =gStringVar1 - bl GetMonNickname - ldr r0, _0806F94C @ =gStringVar2 - ldrh r1, [r5] - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r2, _0806F950 @ =gTasks - lsls r1, r6, 2 - adds r0, r1, r6 - lsls r0, 3 - adds r0, r2 - movs r2, 0x24 - ldrsh r0, [r0, r2] - adds r7, r1, 0 - cmp r0, 0 - bne _0806F95C - ldr r0, _0806F954 @ =gStringVar4 - ldr r1, _0806F958 @ =gOtherText_HPRestoredBy - bl StringExpandPlaceholders - b _0806F964 - .align 2, 0 -_0806F940: .4byte gBattleMoveDamage -_0806F944: .4byte 0x0201c000 -_0806F948: .4byte gStringVar1 -_0806F94C: .4byte gStringVar2 -_0806F950: .4byte gTasks -_0806F954: .4byte gStringVar4 -_0806F958: .4byte gOtherText_HPRestoredBy -_0806F95C: - ldr r0, _0806F9D4 @ =gStringVar4 - ldr r1, _0806F9D8 @ =gOtherText_RegainedHealth - bl StringExpandPlaceholders -_0806F964: - ldr r4, _0806F9DC @ =0x0201c000 - ldrb r0, [r4, 0x4] - ldrb r1, [r4, 0x5] - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - bl SetMonIconAnim - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldrb r1, [r4, 0x5] - lsls r1, 1 - adds r0, r1 - ldr r1, _0806F9E0 @ =gUnknown_083769A8 - adds r0, r1 - movs r1, 0x7 - bl task_pc_turn_off - ldr r0, _0806F9E4 @ =0xfffff261 - adds r1, r4, r0 - movs r0, 0x2 - strb r0, [r1] - ldr r0, _0806F9D4 @ =gStringVar4 - movs r1, 0x1 - bl sub_806E834 - ldr r1, [sp, 0x4] - ldrh r0, [r5] - adds r0, r1 - strh r0, [r5] - ldr r0, [r4] - movs r1, 0x39 - adds r2, r5, 0 - bl SetMonData - ldrh r0, [r4, 0x6] - movs r1, 0x1 - bl RemoveBagItem - bl sub_8032638 - ldr r1, _0806F9E8 @ =gTasks - adds r0, r7, r6 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806F9EC @ =sub_806FB44 - str r1, [r0] - b _0806FA10 - .align 2, 0 -_0806F9D4: .4byte gStringVar4 -_0806F9D8: .4byte gOtherText_RegainedHealth -_0806F9DC: .4byte 0x0201c000 -_0806F9E0: .4byte gUnknown_083769A8 -_0806F9E4: .4byte 0xfffff261 -_0806F9E8: .4byte gTasks -_0806F9EC: .4byte sub_806FB44 -_0806F9F0: - movs r2, 0x80 - lsls r2, 5 - adds r0, r1, r2 - ldrb r4, [r0, 0x5] - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r5] - ldr r3, [sp] - lsls r3, 16 - lsrs r3, 16 - adds r0, r4, 0 - bl PartyMenuDoPrintHP -_0806FA10: - add sp, 0x18 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806F8AC - - thumb_func_start sub_806FA18 -sub_806FA18: @ 806FA18 - push {r4-r7,lr} - sub sp, 0x14 - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - mov r1, sp - movs r2, 0x1 - bl sub_806F7E8 - ldr r6, _0806FAC4 @ =0x0201b000 - ldr r1, _0806FAC8 @ =0x00000282 - adds r7, r6, r1 - strh r0, [r7] - lsls r0, 16 - asrs r0, 16 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _0806FAE4 - movs r0, 0x1 - bl PlaySE - movs r0, 0x80 - lsls r0, 5 - adds r4, r6, r0 - movs r0, 0 - str r0, [r4, 0xC] - ldr r2, _0806FACC @ =gTasks - lsls r3, r5, 2 - adds r3, r5 - lsls r3, 3 - adds r5, r3, r2 - ldrh r0, [r5, 0x1E] - ldrh r1, [r5, 0x20] - subs r0, r1 - strh r0, [r5, 0x1E] - ldr r0, [r4] - adds r2, r3 - adds r2, 0x1E - movs r1, 0x39 - bl SetMonData - ldrb r0, [r4, 0x4] - ldr r1, _0806FAD0 @ =0xfffe6000 - adds r6, r1 - ldrb r1, [r6, 0x1] - bl GetMonIconSpriteId_maybe - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - bl SetMonIconAnim - ldr r2, _0806FAD4 @ =gSprites - ldrb r1, [r6, 0x2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strb r0, [r4, 0x5] - ldrb r1, [r4, 0x5] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0806FAD8 @ =gPlayerParty - adds r0, r1 - str r0, [r4] - movs r1, 0x3A - bl GetMonData - strh r0, [r5, 0x1C] - ldr r0, [r4] - movs r1, 0x39 - bl GetMonData - strh r0, [r5, 0x1E] - ldr r0, _0806FADC @ =0xffff8000 - str r0, [r4, 0xC] - ldr r0, [r4, 0x10] - str r0, [r4, 0x14] - ldr r0, _0806FAE0 @ =sub_806F8AC - str r0, [r5] - ldrh r0, [r5, 0x1E] - strh r0, [r7] - b _0806FB04 - .align 2, 0 -_0806FAC4: .4byte 0x0201b000 -_0806FAC8: .4byte 0x00000282 -_0806FACC: .4byte gTasks -_0806FAD0: .4byte 0xfffe6000 -_0806FAD4: .4byte gSprites -_0806FAD8: .4byte gPlayerParty -_0806FADC: .4byte 0xffff8000 -_0806FAE0: .4byte sub_806F8AC -_0806FAE4: - movs r1, 0x80 - lsls r1, 5 - adds r0, r6, r1 - ldrb r4, [r0, 0x5] - bl IsDoubleBattle - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldrh r2, [r7] - ldr r3, [sp] - lsls r3, 16 - lsrs r3, 16 - adds r0, r4, 0 - bl PartyMenuDoPrintHP -_0806FB04: - add sp, 0x14 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_806FA18 - - thumb_func_start sub_806FB0C -sub_806FB0C: @ 806FB0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806FB38 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806FB32 - ldr r3, _0806FB3C @ =gTasks - ldr r2, _0806FB40 @ =0x0201c000 - ldrb r1, [r2, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r3 - ldr r1, [r2, 0x10] - str r1, [r0] - adds r0, r4, 0 - bl DestroyTask -_0806FB32: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806FB38: .4byte gUnknown_0202E8F6 -_0806FB3C: .4byte gTasks -_0806FB40: .4byte 0x0201c000 - thumb_func_end sub_806FB0C - - thumb_func_start sub_806FB44 -sub_806FB44: @ 806FB44 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0806FB70 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _0806FB6A - ldr r3, _0806FB74 @ =gTasks - ldr r2, _0806FB78 @ =0x0201c000 - ldrb r1, [r2, 0x4] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r3 - ldr r1, [r2, 0x14] - str r1, [r0] - adds r0, r4, 0 - bl DestroyTask -_0806FB6A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806FB70: .4byte gUnknown_0202E8F6 -_0806FB74: .4byte gTasks -_0806FB78: .4byte 0x0201c000 - thumb_func_end sub_806FB44 - - thumb_func_start IsHPRecoveryItem -IsHPRecoveryItem: @ 806FB7C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0xAF - bne _0806FB90 - ldr r0, _0806FB8C @ =gSaveBlock1 + 0x3676 - b _0806FB9A - .align 2, 0 -_0806FB8C: .4byte gSaveBlock1 + 0x3676 -_0806FB90: - ldr r1, _0806FBA8 @ =gItemEffectTable - subs r0, 0xD - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] -_0806FB9A: - ldrb r1, [r0, 0x4] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0806FBAC - movs r0, 0 - b _0806FBAE - .align 2, 0 -_0806FBA8: .4byte gItemEffectTable -_0806FBAC: - movs r0, 0x1 -_0806FBAE: - pop {r1} - bx r1 - thumb_func_end IsHPRecoveryItem - - thumb_func_start PartyMenuUpdateLevelOrStatus -PartyMenuUpdateLevelOrStatus: @ 806FBB4 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl PartyMenuClearLevelStatusTilemap - adds r0, r4, 0 - adds r1, r5, 0 - bl PartyMenuPrintMonLevelOrStatus - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end PartyMenuUpdateLevelOrStatus - - thumb_func_start GetMedicineItemEffectMessage -GetMedicineItemEffectMessage: @ 806FBD0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x3 - cmp r0, 0x12 - bls _0806FBE6 - b _0806FD7C -_0806FBE6: - lsls r0, 2 - ldr r1, _0806FBF0 @ =_0806FBF4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0806FBF0: .4byte _0806FBF4 - .align 2, 0 -_0806FBF4: - .4byte _0806FC40 - .4byte _0806FC54 - .4byte _0806FC68 - .4byte _0806FC7C - .4byte _0806FC90 - .4byte _0806FCA4 - .4byte _0806FCB8 - .4byte _0806FD7C - .4byte _0806FCCC - .4byte _0806FCF0 - .4byte _0806FCE0 - .4byte _0806FD20 - .4byte _0806FD30 - .4byte _0806FD10 - .4byte _0806FD00 - .4byte _0806FD7C - .4byte _0806FD54 - .4byte _0806FD54 - .4byte _0806FD68 -_0806FC40: - ldr r0, _0806FC4C @ =gStringVar4 - ldr r1, _0806FC50 @ =gOtherText_CuredPoisoning - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC4C: .4byte gStringVar4 -_0806FC50: .4byte gOtherText_CuredPoisoning -_0806FC54: - ldr r0, _0806FC60 @ =gStringVar4 - ldr r1, _0806FC64 @ =gOtherText_WokeUp - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC60: .4byte gStringVar4 -_0806FC64: .4byte gOtherText_WokeUp -_0806FC68: - ldr r0, _0806FC74 @ =gStringVar4 - ldr r1, _0806FC78 @ =gOtherText_BurnHealed - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC74: .4byte gStringVar4 -_0806FC78: .4byte gOtherText_BurnHealed -_0806FC7C: - ldr r0, _0806FC88 @ =gStringVar4 - ldr r1, _0806FC8C @ =gOtherText_ThawedOut - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC88: .4byte gStringVar4 -_0806FC8C: .4byte gOtherText_ThawedOut -_0806FC90: - ldr r0, _0806FC9C @ =gStringVar4 - ldr r1, _0806FCA0 @ =gOtherText_CuredParalysis - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FC9C: .4byte gStringVar4 -_0806FCA0: .4byte gOtherText_CuredParalysis -_0806FCA4: - ldr r0, _0806FCB0 @ =gStringVar4 - ldr r1, _0806FCB4 @ =gOtherText_SnapConfusion - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FCB0: .4byte gStringVar4 -_0806FCB4: .4byte gOtherText_SnapConfusion -_0806FCB8: - ldr r0, _0806FCC4 @ =gStringVar4 - ldr r1, _0806FCC8 @ =gOtherText_GotOverLove - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FCC4: .4byte gStringVar4 -_0806FCC8: .4byte gOtherText_GotOverLove -_0806FCCC: - ldr r0, _0806FCD8 @ =gStringVar4 - ldr r1, _0806FCDC @ =gOtherText_BecameHealthy - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FCD8: .4byte gStringVar4 -_0806FCDC: .4byte gOtherText_BecameHealthy -_0806FCE0: - ldr r0, _0806FCE8 @ =gStringVar2 - ldr r1, _0806FCEC @ =gOtherText_Hp2 - b _0806FD34 - .align 2, 0 -_0806FCE8: .4byte gStringVar2 -_0806FCEC: .4byte gOtherText_Hp2 -_0806FCF0: - ldr r0, _0806FCF8 @ =gStringVar2 - ldr r1, _0806FCFC @ =gOtherText_Attack - b _0806FD34 - .align 2, 0 -_0806FCF8: .4byte gStringVar2 -_0806FCFC: .4byte gOtherText_Attack -_0806FD00: - ldr r0, _0806FD08 @ =gStringVar2 - ldr r1, _0806FD0C @ =gOtherText_Defense - b _0806FD34 - .align 2, 0 -_0806FD08: .4byte gStringVar2 -_0806FD0C: .4byte gOtherText_Defense -_0806FD10: - ldr r0, _0806FD18 @ =gStringVar2 - ldr r1, _0806FD1C @ =gOtherText_Speed - b _0806FD34 - .align 2, 0 -_0806FD18: .4byte gStringVar2 -_0806FD1C: .4byte gOtherText_Speed -_0806FD20: - ldr r0, _0806FD28 @ =gStringVar2 - ldr r1, _0806FD2C @ =gOtherText_SpAtk2 - b _0806FD34 - .align 2, 0 -_0806FD28: .4byte gStringVar2 -_0806FD2C: .4byte gOtherText_SpAtk2 -_0806FD30: - ldr r0, _0806FD44 @ =gStringVar2 - ldr r1, _0806FD48 @ =gOtherText_SpDef2 -_0806FD34: - bl StringCopy - ldr r0, _0806FD4C @ =gStringVar4 - ldr r1, _0806FD50 @ =gOtherText_WasRaised - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FD44: .4byte gStringVar2 -_0806FD48: .4byte gOtherText_SpDef2 -_0806FD4C: .4byte gStringVar4 -_0806FD50: .4byte gOtherText_WasRaised -_0806FD54: - ldr r0, _0806FD60 @ =gStringVar4 - ldr r1, _0806FD64 @ =gOtherText_PPIncreased - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FD60: .4byte gStringVar4 -_0806FD64: .4byte gOtherText_PPIncreased -_0806FD68: - ldr r0, _0806FD74 @ =gStringVar4 - ldr r1, _0806FD78 @ =gOtherText_PPRestored - bl StringExpandPlaceholders - b _0806FD84 - .align 2, 0 -_0806FD74: .4byte gStringVar4 -_0806FD78: .4byte gOtherText_PPRestored -_0806FD7C: - ldr r0, _0806FD88 @ =gStringVar4 - ldr r1, _0806FD8C @ =gOtherText_WontHaveAnyEffect - bl StringExpandPlaceholders -_0806FD84: - pop {r0} - bx r0 - .align 2, 0 -_0806FD88: .4byte gStringVar4 -_0806FD8C: .4byte gOtherText_WontHaveAnyEffect - thumb_func_end GetMedicineItemEffectMessage - - thumb_func_start IsMedicineIneffective -IsMedicineIneffective: @ 806FD90 - push {r4,lr} - adds r4, r0, 0 - lsls r0, r1, 16 - lsrs r0, 16 - bl GetItemEffectType - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bne _0806FDBC - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r1, _0806FDB8 @ =0x0000012f - cmp r0, r1 - bne _0806FDBC - movs r0, 0x1 - b _0806FDBE - .align 2, 0 -_0806FDB8: .4byte 0x0000012f -_0806FDBC: - movs r0, 0 -_0806FDBE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end IsMedicineIneffective - - thumb_func_start ExecuteTableBasedItemEffect__ -ExecuteTableBasedItemEffect__: @ 806FDC4 - push {r4-r6,lr} - lsls r0, 24 - lsrs r3, r0, 24 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r0, _0806FDF0 @ =gMain - ldr r1, _0806FDF4 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0806FDFC - movs r0, 0x64 - muls r0, r3 - ldr r1, _0806FDF8 @ =gPlayerParty - adds r0, r1 - adds r1, r5, 0 - adds r2, r3, 0 - b _0806FE16 - .align 2, 0 -_0806FDF0: .4byte gMain -_0806FDF4: .4byte 0x0000043d -_0806FDF8: .4byte gPlayerParty -_0806FDFC: - movs r0, 0x64 - adds r4, r3, 0 - muls r4, r0 - ldr r0, _0806FE28 @ =gPlayerParty - adds r4, r0 - adds r0, r3, 0 - bl sub_8094C20 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 -_0806FE16: - adds r3, r6, 0 - bl ExecuteTableBasedItemEffect_ - lsls r0, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806FE28: .4byte gPlayerParty - thumb_func_end ExecuteTableBasedItemEffect__ - - thumb_func_start UseMedicine -UseMedicine: @ 806FE2C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r4, r0, 0 - adds r5, r2, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 16 - lsrs r6, r1, 16 - movs r0, 0 - mov r9, r0 - ldr r1, _0806FED4 @ =gTasks - mov r10, r1 - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - add r1, r10 - ldr r0, _0806FED8 @ =TaskDummy - str r0, [r1] - movs r1, 0x5 - bl CreateTask - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl sub_806E8D0 - ldr r5, _0806FEDC @ =0x0201c000 - ldr r0, [r5] - adds r1, r6, 0 - bl IsMedicineIneffective - lsls r0, 24 - cmp r0, 0 - bne _0806FEE0 - adds r0, r6, 0 - bl IsHPRecoveryItem - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r2, r7, 2 - mov r8, r2 - cmp r0, 0x1 - bne _0806FEC2 - ldr r0, [r5] - movs r1, 0x3A - bl GetMonData - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - mov r2, r10 - adds r4, r1, r2 - strh r0, [r4, 0x1C] - ldr r0, [r5] - movs r1, 0x39 - bl GetMonData - strh r0, [r4, 0x1E] - movs r3, 0x1C - ldrsh r1, [r4, r3] - lsls r0, 16 - asrs r0, 16 - cmp r1, r0 - bne _0806FEC2 - movs r0, 0 - mov r9, r0 - mov r1, r9 - strh r1, [r4, 0x1C] - strh r1, [r4, 0x1E] -_0806FEC2: - ldr r0, _0806FEDC @ =0x0201c000 - ldrb r0, [r0, 0x5] - adds r1, r6, 0 - movs r2, 0 - bl ExecuteTableBasedItemEffect__ - lsls r0, 24 - lsrs r0, 24 - b _0806FEE6 - .align 2, 0 -_0806FED4: .4byte gTasks -_0806FED8: .4byte TaskDummy -_0806FEDC: .4byte 0x0201c000 -_0806FEE0: - movs r0, 0x1 - lsls r2, r7, 2 - mov r8, r2 -_0806FEE6: - cmp r0, 0 - beq _0806FF14 - ldr r1, _0806FF08 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldr r0, _0806FF0C @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - ldr r1, _0806FF10 @ =gTasks - mov r3, r8 - adds r0, r3, r7 - b _08070002 - .align 2, 0 -_0806FF08: .4byte gUnknown_0202E8F4 -_0806FF0C: .4byte gOtherText_WontHaveAnyEffect -_0806FF10: .4byte gTasks -_0806FF14: - ldr r1, _0806FF30 @ =gUnknown_0202E8F4 - movs r0, 0x1 - strb r0, [r1] - adds r0, r6, 0 - bl IsBlueYellowRedFlute - lsls r0, 24 - cmp r0, 0 - bne _0806FF34 - movs r0, 0x1 - bl PlaySE - b _0806FF3A - .align 2, 0 -_0806FF30: .4byte gUnknown_0202E8F4 -_0806FF34: - movs r0, 0x75 - bl PlaySE -_0806FF3A: - ldr r4, _0806FF88 @ =0x0201c000 - ldr r0, [r4] - bl GetMonStatusAndPokerus - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x6 - beq _0806FF4E - cmp r0, 0 - bne _0806FF56 -_0806FF4E: - ldr r0, [r4] - ldrb r1, [r4, 0x5] - bl PartyMenuUpdateLevelOrStatus -_0806FF56: - mov r0, r9 - cmp r0, 0x1 - bne _0806FFC8 - ldr r4, _0806FF88 @ =0x0201c000 - ldr r0, [r4] - movs r1, 0x39 - bl GetMonData - ldr r2, _0806FF8C @ =gTasks - mov r3, r8 - adds r1, r3, r7 - lsls r1, 3 - adds r2, r1, r2 - ldrh r1, [r2, 0x1E] - subs r0, r1 - strh r0, [r2, 0x20] - ldr r0, _0806FF90 @ =0xffff8000 - str r0, [r4, 0xC] - movs r1, 0x1E - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _0806FF94 - mov r3, r9 - strh r3, [r2, 0x24] - b _0806FF98 - .align 2, 0 -_0806FF88: .4byte 0x0201c000 -_0806FF8C: .4byte gTasks -_0806FF90: .4byte 0xffff8000 -_0806FF94: - movs r0, 0 - strh r0, [r2, 0x24] -_0806FF98: - ldr r2, _0806FFB8 @ =0x0201c000 - ldr r0, [r2, 0x10] - str r0, [r2, 0x14] - ldr r1, _0806FFBC @ =gTasks - mov r3, r8 - adds r0, r3, r7 - lsls r0, 3 - adds r0, r1 - ldr r1, _0806FFC0 @ =sub_806F8AC - str r1, [r0] - ldrh r0, [r0, 0x1E] - ldr r1, _0806FFC4 @ =0xfffff282 - adds r2, r1 - strh r0, [r2] - b _0807000A - .align 2, 0 -_0806FFB8: .4byte 0x0201c000 -_0806FFBC: .4byte gTasks -_0806FFC0: .4byte sub_806F8AC -_0806FFC4: .4byte 0xfffff282 -_0806FFC8: - ldr r4, _08070018 @ =0x0201c000 - ldr r0, [r4] - ldr r1, _0807001C @ =gStringVar1 - bl GetMonNickname - adds r0, r6, 0 - bl IsBlueYellowRedFlute - lsls r0, 24 - cmp r0, 0 - bne _0806FFE6 - adds r0, r6, 0 - movs r1, 0x1 - bl RemoveBagItem -_0806FFE6: - adds r0, r6, 0 - bl GetMedicineItemEffectMessage - ldrb r0, [r4, 0x5] - ldr r1, [r4] - bl TryPrintPartyMenuMonNickname - ldr r0, _08070020 @ =gStringVar4 - movs r1, 0x1 - bl sub_806E834 - ldr r1, _08070024 @ =gTasks - mov r2, r8 - adds r0, r2, r7 -_08070002: - lsls r0, 3 - adds r0, r1 - ldr r1, _08070028 @ =sub_806FB0C - str r1, [r0] -_0807000A: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070018: .4byte 0x0201c000 -_0807001C: .4byte gStringVar1 -_08070020: .4byte gStringVar4 -_08070024: .4byte gTasks -_08070028: .4byte sub_806FB0C - thumb_func_end UseMedicine - - thumb_func_start IsBlueYellowRedFlute -IsBlueYellowRedFlute: @ 807002C - push {lr} - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x27 - beq _0807003E - cmp r0, 0x29 - beq _0807003E - cmp r0, 0x28 - bne _08070042 -_0807003E: - movs r0, 0x1 - b _08070044 -_08070042: - movs r0, 0 -_08070044: - pop {r1} - bx r1 - thumb_func_end IsBlueYellowRedFlute - - thumb_func_start sub_8070048 -sub_8070048: @ 8070048 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08070078 @ =0x0201c000 - str r2, [r3, 0x10] - movs r4, 0 - strb r0, [r3, 0x4] - movs r2, 0 - strh r1, [r3, 0x6] - strb r2, [r3, 0x5] - ldr r1, _0807007C @ =sub_80701DC - str r1, [r3, 0x14] - ldr r2, _08070080 @ =0xfffff27e - adds r1, r3, r2 - strh r4, [r1] - ldr r1, _08070084 @ =0xfffff280 - adds r3, r1 - strh r4, [r3] - bl sub_8070088 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08070078: .4byte 0x0201c000 -_0807007C: .4byte sub_80701DC -_08070080: .4byte 0xfffff27e -_08070084: .4byte 0xfffff280 - thumb_func_end sub_8070048 - - .section .text_80701DC - - thumb_func_start DoPPUpItemEffect -DoPPUpItemEffect: @ 8070624 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - ldr r4, _0807066C @ =gTasks - lsls r3, r0, 2 - adds r3, r0 - lsls r3, 3 - adds r3, r4 - ldr r4, _08070670 @ =TaskDummy - str r4, [r3] - bl sub_806E8D0 - movs r0, 0x5 - bl PlaySE - movs r0, 0xB - movs r1, 0x3 - bl sub_806D538 - ldr r0, _08070674 @ =0x0201c000 - ldrb r0, [r0, 0x5] - bl CreateItemUseMoveMenu - ldr r0, _08070678 @ =Task_HandleItemUseMoveMenuInput - movs r1, 0x5 - bl CreateTask - ldr r1, _0807067C @ =gMain - movs r0, 0 - strh r0, [r1, 0x2E] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807066C: .4byte gTasks -_08070670: .4byte TaskDummy -_08070674: .4byte 0x0201c000 -_08070678: .4byte Task_HandleItemUseMoveMenuInput -_0807067C: .4byte gMain - thumb_func_end DoPPUpItemEffect - - thumb_func_start DoRareCandyItemEffect -DoRareCandyItemEffect: @ 8070680 - push {r4-r7,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r3, _080706E0 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r3 - ldr r3, _080706E4 @ =TaskDummy - str r3, [r1] - adds r1, r6, 0 - bl sub_806E8D0 - ldr r5, _080706E8 @ =0x0201c000 - ldr r0, [r5] - movs r1, 0x38 - bl GetMonData - cmp r0, 0x64 - beq _080706F4 - movs r4, 0 - ldr r0, _080706EC @ =0xfffff264 - adds r7, r5, r0 -_080706B2: - ldr r0, [r5] - ldr r1, _080706F0 @ =gUnknown_08376D1C - adds r1, r4, r1 - ldrb r1, [r1] - bl GetMonData - lsls r1, r4, 1 - adds r1, r7, r1 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x5 - bls _080706B2 - ldr r0, _080706E8 @ =0x0201c000 - ldrb r0, [r0, 0x5] - adds r1, r6, 0 - movs r2, 0 - bl ExecuteTableBasedItemEffect__ - lsls r0, 24 - lsrs r0, 24 - b _080706F6 - .align 2, 0 -_080706E0: .4byte gTasks -_080706E4: .4byte TaskDummy -_080706E8: .4byte 0x0201c000 -_080706EC: .4byte 0xfffff264 -_080706F0: .4byte gUnknown_08376D1C -_080706F4: - movs r0, 0x1 -_080706F6: - cmp r0, 0 - beq _08070724 - ldr r1, _08070718 @ =gUnknown_0202E8F4 - movs r0, 0 - strb r0, [r1] - movs r0, 0x5 - bl PlaySE - ldr r0, _0807071C @ =gOtherText_WontHaveAnyEffect - movs r1, 0x1 - bl sub_806E834 - ldr r0, _08070720 @ =sub_806FB0C - movs r1, 0x5 - bl CreateTask - b _0807077C - .align 2, 0 -_08070718: .4byte gUnknown_0202E8F4 -_0807071C: .4byte gOtherText_WontHaveAnyEffect -_08070720: .4byte sub_806FB0C -_08070724: - ldr r1, _08070784 @ =gUnknown_0202E8F4 - movs r0, 0x1 - strb r0, [r1] - movs r0, 0 - bl PlayFanfareByFanfareNum - ldr r4, _08070788 @ =0x0201c000 - ldrb r0, [r4, 0x5] - ldr r1, [r4] - bl sub_8070A20 - adds r0, r6, 0 - movs r1, 0x1 - bl RemoveBagItem - ldr r0, [r4] - ldr r1, _0807078C @ =gStringVar1 - bl GetMonNickname - ldr r0, [r4] - movs r1, 0x38 - bl GetMonData - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08070790 @ =gStringVar2 - movs r2, 0 - movs r3, 0x3 - bl ConvertIntToDecimalStringN - ldr r4, _08070794 @ =gStringVar4 - ldr r1, _08070798 @ =gOtherText_ElevatedTo - adds r0, r4, 0 - bl StringExpandPlaceholders - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806E834 - ldr r0, _0807079C @ =Task_RareCandy1 - movs r1, 0x5 - bl CreateTask -_0807077C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08070784: .4byte gUnknown_0202E8F4 -_08070788: .4byte 0x0201c000 -_0807078C: .4byte gStringVar1 -_08070790: .4byte gStringVar2 -_08070794: .4byte gStringVar4 -_08070798: .4byte gOtherText_ElevatedTo -_0807079C: .4byte Task_RareCandy1 - thumb_func_end DoRareCandyItemEffect - - thumb_func_start Task_RareCandy1 -Task_RareCandy1: @ 80707A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - bl WaitFanfare - lsls r0, 24 - cmp r0, 0 - beq _080707E8 - ldr r0, _080707F0 @ =gUnknown_0202E8F6 - ldrb r0, [r0] - cmp r0, 0 - bne _080707E8 - ldr r0, _080707F4 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080707CE - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080707E8 -_080707CE: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_8070848 - ldr r0, _080707F8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080707FC @ =Task_RareCandy2 - str r0, [r1] -_080707E8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080707F0: .4byte gUnknown_0202E8F6 -_080707F4: .4byte gMain -_080707F8: .4byte gTasks -_080707FC: .4byte Task_RareCandy2 - thumb_func_end Task_RareCandy1 - - thumb_func_start Task_RareCandy2 -Task_RareCandy2: @ 8070800 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0807083C @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0807081A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08070834 -_0807081A: - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_8070968 - ldr r0, _08070840 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08070844 @ =Task_RareCandy3 - str r0, [r1] -_08070834: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0807083C: .4byte gMain -_08070840: .4byte gTasks -_08070844: .4byte Task_RareCandy3 - thumb_func_end Task_RareCandy2 - .section .text_8070968 thumb_func_start sub_8070968 diff --git a/include/asm.inc.h b/include/asm.inc.h index 3c1d52ffe..3db79b128 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -158,7 +158,7 @@ bool8 pokemon_has_move(struct Pokemon *, u16); void sub_806FA18(u8 taskId); // src/party_menu.o -void sub_806E834(); +u8 sub_806E834(const u8 *message, u8 arg1); // src/rom_8077ABC.o u8 battle_side_get_owner(u8); diff --git a/include/battle_interface.h b/include/battle_interface.h new file mode 100644 index 000000000..e85f87a30 --- /dev/null +++ b/include/battle_interface.h @@ -0,0 +1,36 @@ +#ifndef GUARD_BATTLE_INTERFACE_H +#define GUARD_BATTLE_INTERFACE_H + +struct BattleInterfaceStruct1 +{ + s32 unk0; + s32 unk4; + s32 unk8; + u32 unkC_0:5; + u32 unk10; +}; + +struct BattleInterfaceStruct2 +{ + u16 unk0; + u32 unk4; +}; + +u8 battle_make_oam_normal_battle(u8); +u8 battle_make_oam_safari_battle(void); +void sub_8043D84(u8, u8, u32, u32, u32); +void sub_8043DB0(u8); +void sub_8043DFC(u8); +void nullsub_11(); +void sub_8043EB4(u8); +void sub_8043F44(u8); +void sub_804454C(void); +u8 sub_8044804(u8, const struct BattleInterfaceStruct2 *, u8, u8); +void sub_8044CA0(u8); +void sub_8045A5C(u8, struct Pokemon *, u8); +s32 sub_8045C78(u8, u8, u8, u8); +s16 sub_80460C8(struct BattleInterfaceStruct1 *, int *, void *, int); +u8 GetScaledHPFraction(s16, s16, u8); +int GetHPBarLevel(s16, s16); + +#endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/menu.h b/include/menu.h index c3dcbc969..6a11ffdc2 100644 --- a/include/menu.h +++ b/include/menu.h @@ -49,7 +49,7 @@ void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], u8*); void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); -u8 MenuPrint_PixelCoords(u8 *, u8, u16, u8); +u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); u8 sub_8072A18(u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(u8 *, u8, u16, u8, u8, u32); diff --git a/include/songs.h b/include/songs.h index 244bb9808..c465ac562 100644 --- a/include/songs.h +++ b/include/songs.h @@ -120,7 +120,7 @@ enum /*0x72*/ SE_TB_START, /*0x73*/ SE_TB_KON, /*0x74*/ SE_TB_KARA, - SE_BIDORO, + /*0x75*/ SE_BIDORO, SE_W085, SE_W085B, SE_W231, @@ -269,7 +269,7 @@ enum BGM_GIM, BGM_NAMINORI, BGM_DAN01, - BGM_FANFA1, + /*0x16F*/ BGM_FANFA1, BGM_ME_ASA, BGM_ME_BACHI, BGM_FANFA4, diff --git a/ld_script.txt b/ld_script.txt index be5c78907..dac5fb782 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -108,10 +108,6 @@ SECTIONS { asm/reset_rtc_screen.o(.text); asm/party_menu.o(.text); src/party_menu.o(.text); - asm/party_menu.o(.text_806E884); - src/party_menu.o(.text_b); - asm/party_menu.o(.text_80701DC); - src/party_menu.o(.text_c); asm/party_menu.o(.text_8070968); src/start_menu.o(.text); src/menu.o(.text); diff --git a/src/battle_interface.c b/src/battle_interface.c index 9938c4b54..ba3cba894 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -8,6 +8,7 @@ #include "songs.h" #include "battle.h" #include "palette.h" +#include "battle_interface.h" struct UnknownStruct5 { @@ -35,15 +36,6 @@ struct UnknownStruct7 u8 filler0[0x180]; }; -struct UnknownStruct9 -{ - s32 unk0; - u32 unk4; - u32 unk8; - u32 unkC_0:5; - u32 unk10; -}; - extern u8 ewram[]; #define ewram520 ((struct UnknownStruct7 *)(ewram + 0x00520)) #define ewram16088 (*(u8 *) (ewram + 0x16088)) @@ -109,9 +101,8 @@ extern void load_gfxc_health_bar(); static void sub_8043D5C(struct Sprite *); static const void *sub_8043CDC(u8); -void sub_8044210(u8, s16, u8); +static void sub_8044210(u8, s16, u8); static void draw_status_ailment_maybe(u8); -void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c); extern void sub_8045180(struct Sprite *); static void sub_8045110(struct Sprite *); static void sub_8045048(struct Sprite *); @@ -119,12 +110,11 @@ static void sub_8044F70(u8 taskId); static void sub_8044E74(u8 taskId); static void sub_8044ECC(u8 taskId); static u8 sub_80457E8(u8, u8); -s32 sub_8045C78(u8, u8, u8, u8); static int sub_8045F58(s32, s32, int, int *, u8, u16); static u8 GetScaledExpFraction(int, int, int, u8); static void sub_8045D58(u8, u8); static u8 sub_804602C(int, int, int, int *, u8 *, u8); -static void sub_8046128(struct UnknownStruct9 *a, int *b, void *c); +static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, void *c); static int do_nothing(s16 unused1, s16 unused2, int unused3) { @@ -937,7 +927,7 @@ _0804420C: .4byte 0x04000008\n\ } #endif -void sub_8044210(u8 a, s16 b, u8 c) +static void sub_8044210(u8 a, s16 b, u8 c) { u8 str[0x14]; u8 *ptr; @@ -1377,15 +1367,9 @@ void sub_804454C(void) } } -struct UnknownStruct8 -{ - u16 unk0; - u32 unk4; -}; - // This function almost matches except for just two instructions around 0x08044B52 that are swapped. #ifdef NONMATCHING -u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) +u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) { u8 r7; s16 x; @@ -1594,7 +1578,7 @@ u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) } #else __attribute__((naked)) -u8 sub_8044804(u8 a, const struct UnknownStruct8 *b, u8 c, u8 d) +u8 sub_8044804(u8 a, const struct BattleInterfaceStruct2 *b, u8 c, u8 d) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -3005,7 +2989,7 @@ static u8 sub_804602C(int a, int b, int c, int *d, u8 *e, u8 f) return r3; } -s16 sub_80460C8(struct UnknownStruct9 *a, int *b, void *c, int d) +s16 sub_80460C8(struct BattleInterfaceStruct1 *a, int *b, void *c, int d) { u16 r7; s16 r1; @@ -3020,7 +3004,7 @@ s16 sub_80460C8(struct UnknownStruct9 *a, int *b, void *c, int d) return r7; } -static void sub_8046128(struct UnknownStruct9 *a, int *b, void *c) +static void sub_8046128(struct BattleInterfaceStruct1 *a, int *b, void *c) { u8 sp8[6]; u16 sp10[6]; diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 820d16465..690ef99be 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -40,7 +40,6 @@ extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, con extern void ShowPokemonSummaryScreen(struct Pokemon *, u8, u8, void (*)(u8), int); extern void sub_806E7D0(u8, const struct PartyPopupMenu *); extern u8 *sub_8040D08(); -extern void sub_806E834(); extern u8 sub_8094C20(); extern void sub_8040B8C(void); extern u8 pokemon_order_func(u8); diff --git a/src/menu.c b/src/menu.c index ba98ff057..3759d22c9 100644 --- a/src/menu.c +++ b/src/menu.c @@ -598,7 +598,7 @@ s8 ProcessMenuInputNoWrap_(void) return ProcessMenuInputNoWrap(); } -u8 MenuPrint_PixelCoords(u8 *text, u8 left, u16 top, u8 a4) +u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) { return sub_8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); } diff --git a/src/party_menu.c b/src/party_menu.c index b38e89376..8eb181f46 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1,4 +1,5 @@ #include "global.h" +#include "asm.h" #include "menu.h" #include "pokemon.h" #include "songs.h" @@ -9,18 +10,17 @@ #include "palette.h" #include "event_data.h" #include "main.h" +#include "item.h" +#include "battle_interface.h" +#include "species.h" #define DATA_COUNT (6) -struct Unk201C000 +struct Unk2001000 { - /*0x00*/ struct Pokemon *pokemon; - /*0x04*/ u8 unk4; - /*0x05*/ u8 unk5; - /*0x06*/ u16 unk6; - /*0x08*/ u8 pad_08[4]; - /*0x0C*/ s32 var0C; - /*0x10*/ TaskFunc unk10; + u8 unk0; + u8 unk1; + u8 unk2; }; struct Unk201B000 @@ -33,7 +33,26 @@ struct Unk201B000 u8 filler27C[2]; s16 unk27E; s16 unk280; - u16 unk282; + s16 unk282; +}; + +struct Unk201C000 +{ + /*0x00*/ struct Pokemon *pokemon; + /*0x04*/ u8 unk4; + /*0x05*/ u8 unk5; + /*0x06*/ u16 unk6; + /*0x08*/ u16 unk8; + /*0x0A*/ u8 pad_0A[2]; + /*0x0C*/ s32 unkC; + /*0x10*/ TaskFunc unk10; + /*0x14*/ TaskFunc unk14; +}; + +struct Unk201F000 +{ + u8 filler0[0xE00]; + u8 unkE00[3]; // not sure if this is an array or struct, or how big it is }; struct UnknownStruct5 @@ -44,44 +63,143 @@ struct UnknownStruct5 }; extern u8 ewram[]; +#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000)) #define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000)) #define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000)) +#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000)) extern u8 gUnknown_0202E8F4; extern u8 gUnknown_0202E8F6; +extern u16 gUnknown_0202E8F8; extern u8 gUnknown_0202E8FA; extern u8 gLastFieldPokeMenuOpened; +extern u8 gPlayerPartyCount; +extern u16 gScriptItemId; +extern s32 gBattleMoveDamage; //extern const u16 gUnknown_083769A8[][6]; //extern const u8 gUnknown_083769A8[][12]; +extern void *const gUnknown_08376858[][6]; extern const u8 gUnknown_083769A8[]; -extern u8 gUnknown_08376D1C[DATA_COUNT]; -extern u8 *gUnknown_08376D04[DATA_COUNT]; +extern const u8 gUnknown_08376D1C[DATA_COUNT]; +extern const u16 gUnknown_08376504[]; extern void (*const gUnknown_08376B54[])(u8); +extern const u8 *const gUnknown_08376D04[DATA_COUNT]; extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; -extern u8 gOtherText_TallPlusAndRightArrow[]; -extern u8 gOtherText_WontHaveAnyEffect[]; +extern const u8 gOtherText_TallPlusAndRightArrow[]; +extern const u8 gOtherText_WontHaveAnyEffect[]; +extern const u8 gOtherText_ElevatedTo[]; +extern const u8 gOtherText_MailMustBeRemoved[]; +extern const u8 gOtherText_AlreadyHolding[]; +extern const u8 gOtherText_TakenAndReplaced[]; +extern const u8 gOtherText_BagFullCannotRemoveItem[]; +extern const u8 gOtherText_WasGivenToHold[]; +extern const u8 gOtherText_PokeHoldingItemCantMail[]; +extern const u8 gOtherText_MailTransferredMailbox[]; +extern const u8 gOtherText_NotHoldingAnything[]; +extern const u8 gOtherText_ReceivedTheThingFrom[]; +extern const u8 gOtherText_SendRemovedMailPrompt[]; +extern const u8 gOtherText_MailTaken[]; +extern const u8 gOtherText_MailWasSent[]; +extern const u8 gOtherText_MailboxIsFull[]; +extern const u8 gOtherText_MailRemovedMessageLost[]; +extern const u8 gOtherText_WantsToLearn[]; +extern const u8 gOtherText_NotCompatible[]; +extern const u8 gOtherText_AlreadyKnows[]; +extern const u8 gOtherText_LearnedMove[]; +extern const u8 gOtherText_WhichMoveToForget2[]; +extern const u8 gOtherText_ForgetMove123_2[]; +extern const u8 gOtherText_StopTryingTo[]; +extern const u8 gOtherText_DidNotLearnMove2[]; +extern const u8 gOtherText_RegainedHealth[]; +extern const u8 gOtherText_HPRestoredBy[]; +extern const u8 gOtherText_CuredPoisoning[]; +extern const u8 gOtherText_WokeUp[]; +extern const u8 gOtherText_BurnHealed[]; +extern const u8 gOtherText_ThawedOut[]; +extern const u8 gOtherText_CuredParalysis[]; +extern const u8 gOtherText_SnapConfusion[]; +extern const u8 gOtherText_GotOverLove[]; +extern const u8 gOtherText_BecameHealthy[]; +extern const u8 gOtherText_Hp2[]; +extern const u8 gOtherText_Attack[]; +extern const u8 gOtherText_Defense[]; +extern const u8 gOtherText_Speed[]; +extern const u8 gOtherText_SpAtk2[]; +extern const u8 gOtherText_SpDef2[]; +extern const u8 gOtherText_WasRaised[]; +extern const u8 gOtherText_PPIncreased[]; +extern const u8 gOtherText_PPRestored[]; extern const u8 gMoveNames[][13]; -extern u8 *const gItemEffectTable[]; +extern const u8 *const gItemEffectTable[]; extern bool8 IsDoubleBattle(void); -extern void AddBagItem(); -extern void RemoveBagItem(); extern void SetUpBattlePokemonMenu(u8); extern void sub_808B0C0(u8); +extern u8 GiveMailToMon(struct Pokemon *, u16); +extern bool8 ItemIsMail(u16); +extern void ClearMailStruct(struct MailStruct *); +extern u8 GiveMailToMon2(struct Pokemon *, struct MailStruct *); +extern void TakeMailFromMon(struct Pokemon *); +extern u8 TakeMailFromMon2(struct Pokemon *); +extern u32 CanMonLearnTMHM(struct Pokemon *, u8); +extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32); +extern void sub_808B564(); +extern u8 sub_809FA30(void); +extern void sub_808B508(u8); +extern void sub_8032638(); +extern u8 sub_8094C20(); +extern bool8 ExecuteTableBasedItemEffect_(); +extern u8 GetMonStatusAndPokerus(); +u8 sub_806CA38(u8); void task_pc_turn_off(); static void sub_806E884(u8 taskId); void sub_806F8AC(u8 taskId); void sub_806FB0C(u8 taskId); void PartyMenuUpdateLevelOrStatus(struct Pokemon *, u8); -u8 ExecuteTableBasedItemEffect__(u8, u16, u8); +bool8 ExecuteTableBasedItemEffect__(u8, u16, u8); void sub_80701DC(u8 taskId); void DoRecoverPP(u8); +void Task_RareCandy1(u8); +void Task_RareCandy2(u8); +void Task_RareCandy3(u8); void sub_806D538(); void sub_806D5A4(void); -void sub_806E8D0(); -void GetMedicineItemEffectMessage(); +void sub_806E8D0(u8 taskId, u16 b, TaskFunc c); +void GetMedicineItemEffectMessage(u16); +void sub_8070A20(); +void sub_8070848(u8 taskId); +void sub_8070968(); +void party_menu_link_mon_held_item_object(u8); +void Task_ConfirmGiveHeldItem(u8); +void DisplayGiveHeldItemMessage(u8, u16, u8); +void SetHeldItemIconVisibility(); +void DisplayTakeHeldItemMessage(u8, u16, u8); +void Task_ConfirmTakeHeldMail(u8); +void Task_TeamMonTMMove(u8); +void Task_TeamMonTMMove2(u8); +void Task_TeamMonTMMove3(u8); +void Task_TeamMonTMMove4(u8); +void sub_806F358(u8); +void sub_806F390(u8); +void sub_806F44C(u8); +void TMMoveUpdateMoveSlot(u8); +void StopTryingToTeachMove_806F614(u8); +void StopTryingToTeachMove_806F67C(u8); +void StopTryingToTeachMove_806F6B4(u8); +void sub_806FB44(u8); +void sub_8070C54(); +void SetMonIconAnim(); +u8 GetMonIconSpriteId_maybe(); +void PartyMenuDoPrintHP(u8, int, u16, u16); +void PartyMenuClearLevelStatusTilemap(); +void PartyMenuPrintMonLevelOrStatus(); +u8 GetItemEffectType(); +bool8 IsBlueYellowRedFlute(u16); +void TryPrintPartyMenuMonNickname(); +void sub_8070088(u8); + /* void sub_806AEDC(void) @@ -99,7 +217,7 @@ void sub_806AEDC(void) } */ -u8 sub_806E834(u8 *message, u8 arg1) +u8 sub_806E834(const u8 *message, u8 arg1) { u8 taskId; @@ -116,22 +234,953 @@ u8 sub_806E834(u8 *message, u8 arg1) static void sub_806E884(u8 taskId) { - if (MenuUpdateWindowText() == 0) + if (MenuUpdateWindowText()) { - return; + gUnknown_0202E8F6 = 0; + if (gTasks[taskId].data[0] == 0) + MenuZeroFillWindowRect(3, 14, 26, 19); + DestroyTask(taskId); } +} + +void sub_806E8D0(u8 taskId, u16 b, TaskFunc c) +{ + ewram1C000.unk10 = c; + ewram1C000.unk4 = taskId; + ewram1C000.unk5 = sub_806CA38(taskId); + ewram1C000.unk6 = b; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; +} - gUnknown_0202E8F6 = 0; +bool8 PartyMenuUpdateMonHeldItem(struct Pokemon *pkmn, u16 item) +{ + u8 itemData[2]; - if (gTasks[taskId].data[0] == 0) + if (ItemIsMail(item) == TRUE) { - MenuZeroFillWindowRect(3, 14, 26, 19); + if (GiveMailToMon(pkmn, item) == 0xFF) + return TRUE; + gUnknown_0202E8F4 = 2; + } + else + { + gUnknown_0202E8F4 = 1; } - DestroyTask(taskId); + itemData[0] = item; + itemData[1] = item >> 8; + SetMonData(pkmn, MON_DATA_HELD_ITEM, itemData); + return FALSE; +} + +void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c) +{ + u16 currentItem; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, newItem, c); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + gUnknown_0202E8F4 = 0; + gUnknown_0202E8F8 = 0; + if (currentItem != 0) + { + if (ItemIsMail(currentItem) == TRUE) + { + sub_806E834(gOtherText_MailMustBeRemoved, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + GetMonNickname(ewram1C000.pokemon, gStringVar1); + CopyItemName(currentItem, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyHolding); + sub_806E834(gStringVar4, 1); + CreateTask(Task_ConfirmGiveHeldItem, 5); + if (ItemIsMail(newItem) == TRUE) + gUnknown_0202E8F8 = currentItem; + } + } + else + { + PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, newItem); + RemoveBagItem(newItem, 1); + if (ItemIsMail(newItem)) + { + gTasks[taskId].func = c; + } + else + { + DisplayGiveHeldItemMessage(ewram1C000.unk5, newItem, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + } +} + +void party_menu_link_mon_held_item_object(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } +} + +void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + u16 currentItem; + + MenuZeroFillWindowRect(23, 8, 29, 13); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + RemoveBagItem(ewram1C000.unk6, 1); + if (AddBagItem(currentItem, 1) == TRUE) + { + PartyMenuUpdateMonHeldItem(ewram1C000.pokemon, ewram1C000.unk6); + if (ItemIsMail(ewram1C000.unk6)) + { + DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 1); + } + else + { + CopyItemName(ewram1C000.unk6, gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_TakenAndReplaced); + sub_806E834(gStringVar4, 1); + } + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + AddBagItem(ewram1C000.unk6, 1); + } + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + } + gTasks[taskId].func = party_menu_link_mon_held_item_object; +} + +void Task_ConfirmGiveHeldItem(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = PartyMenuTryGiveMonHeldItem_806EACC; + } +} + +void DisplayGiveHeldItemMessage(u8 a, u16 b, u8 c) +{ + GetMonNickname(&gPlayerParty[a], gStringVar1); + CopyItemName(b, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasGivenToHold); + sub_806E834(gStringVar4, c); +} + + +// Not sure about this one for now. +/* +void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func) +{ + u16 currentItem; + struct MailStruct *r4; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + gUnknown_0202E8F4 = 0; + r4 = &gSaveBlock1.mail[ewram1F000.unkE00[0] + ewram1F000.unkE00[2]]; + if (currentItem != 0) + { + sub_806E834(gOtherText_PokeHoldingItemCantMail, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + GiveMailToMon2(ewram1C000.pokemon, r4); + ClearMailStruct(r4); + sub_806E834(gOtherText_MailTransferredMailbox, 1); + CreateTask(party_menu_link_mon_held_item_object, 5); + } +} +*/ +__attribute__((naked)) +void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func) +{ + asm(".syntax unified\n\ + push {r4,r5,lr}\n\ + adds r2, r1, 0\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + ldr r3, _0806ECA0 @ =gTasks\n\ + lsls r1, r0, 2\n\ + adds r1, r0\n\ + lsls r1, 3\n\ + adds r1, r3\n\ + ldr r3, _0806ECA4 @ =TaskDummy\n\ + str r3, [r1]\n\ + movs r1, 0\n\ + bl sub_806E8D0\n\ + ldr r5, _0806ECA8 @ =0x0201c000\n\ + ldr r0, [r5]\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + lsls r0, 16\n\ + ldr r2, _0806ECAC @ =gUnknown_0202E8F4\n\ + movs r1, 0\n\ + strb r1, [r2]\n\ + movs r1, 0xF8\n\ + lsls r1, 6\n\ + adds r2, r5, r1\n\ + ldrb r1, [r2]\n\ + adds r1, 0x6\n\ + ldrb r2, [r2, 0x2]\n\ + adds r1, r2\n\ + lsls r2, r1, 3\n\ + adds r2, r1\n\ + lsls r2, 2\n\ + ldr r1, _0806ECB0 @ =gSaveBlock1 + 0x2B4C\n\ + adds r4, r2, r1\n\ + cmp r0, 0\n\ + beq _0806ECBC\n\ + ldr r0, _0806ECB4 @ =gOtherText_PokeHoldingItemCantMail\n\ + movs r1, 0x1\n\ + bl sub_806E834\n\ + ldr r0, _0806ECB8 @ =party_menu_link_mon_held_item_object\n\ + movs r1, 0x5\n\ + bl CreateTask\n\ + b _0806ECDA\n\ + .align 2, 0\n\ +_0806ECA0: .4byte gTasks\n\ +_0806ECA4: .4byte TaskDummy\n\ +_0806ECA8: .4byte 0x0201c000\n\ +_0806ECAC: .4byte gUnknown_0202E8F4\n\ +_0806ECB0: .4byte gSaveBlock1 + 0x2B4C\n\ +_0806ECB4: .4byte gOtherText_PokeHoldingItemCantMail\n\ +_0806ECB8: .4byte party_menu_link_mon_held_item_object\n\ +_0806ECBC:\n\ + ldr r0, [r5]\n\ + adds r1, r4, 0\n\ + bl GiveMailToMon2\n\ + adds r0, r4, 0\n\ + bl ClearMailStruct\n\ + ldr r0, _0806ECE0 @ =gOtherText_MailTransferredMailbox\n\ + movs r1, 0x1\n\ + bl sub_806E834\n\ + ldr r0, _0806ECE4 @ =party_menu_link_mon_held_item_object\n\ + movs r1, 0x5\n\ + bl CreateTask\n\ +_0806ECDA:\n\ + pop {r4,r5}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0806ECE0: .4byte gOtherText_MailTransferredMailbox\n\ +_0806ECE4: .4byte party_menu_link_mon_held_item_object\n\ + .syntax divided\n"); +} + +void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func) +{ + u16 currentItem; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + if (currentItem == 0) + { + StringExpandPlaceholders(gStringVar4, gOtherText_NotHoldingAnything); + sub_806E834(gStringVar4, 0); + CreateTask(party_menu_link_mon_held_item_object, 5); + } + else + { + u8 itemData[2]; + + itemData[0] = 0; + itemData[1] = 0; + if (AddBagItem(currentItem, 1) == TRUE) + { + if (ItemIsMail(currentItem) == TRUE) + TakeMailFromMon(ewram1C000.pokemon); + DisplayTakeHeldItemMessage(ewram1C000.unk5, currentItem, 0); + SetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM, itemData); + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + } + CreateTask(party_menu_link_mon_held_item_object, 5); + } +} + +void DisplayTakeHeldItemMessage(u8 a, u16 b, u8 c) +{ + GetMonNickname(&gPlayerParty[a], gStringVar1); + CopyItemName(b, gStringVar2); + StringExpandPlaceholders(gStringVar4, gOtherText_ReceivedTheThingFrom); + sub_806E834(gStringVar4, c); +} + +void DoTakeMail(u8 taskId, TaskFunc func) +{ + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, 0, func); + ewram1C000.unk6 = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM); + sub_806E834(gOtherText_SendRemovedMailPrompt, 1); + CreateTask(Task_ConfirmTakeHeldMail, 5); +} + +void Task_LoseMailMessage(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + if (AddBagItem(ewram1C000.unk6, 1) == TRUE) + { + TakeMailFromMon(ewram1C000.pokemon); + sub_806E834(gOtherText_MailTaken, 0); + } + else + { + sub_806E834(gOtherText_BagFullCannotRemoveItem, 0); + } + MenuZeroFillWindowRect(23, 8, 29, 13); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + MenuZeroFillWindowRect(0, 14, 29, 19); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } +} + +void Task_ConfirmLoseMailMessage(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = Task_LoseMailMessage; + } +} + +void Task_TakeHeldMail(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF) + sub_806E834(gOtherText_MailWasSent, 0); + else + sub_806E834(gOtherText_MailboxIsFull, 0); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + sub_806E834(gOtherText_MailRemovedMessageLost, 1); + gTasks[taskId].func = Task_ConfirmLoseMailMessage; + } +} + +void Task_ConfirmTakeHeldMail(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = Task_TakeHeldMail; + } +} + +u16 ItemIdToBattleMoveId(u16 item) +{ + u16 moveId = item - 289; + + return gUnknown_08376504[moveId]; +} + +bool8 pokemon_has_move(struct Pokemon *pkmn, u16 move) +{ + u8 i; + + for (i = 0; i < 4; i++) + { + if (GetMonData(pkmn, MON_DATA_MOVE1 + i) == move) + return TRUE; + } + return FALSE; +} + +void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func) +{ + PlaySE(SE_SELECT); + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, move, func); + CreateTask(Task_TeamMonTMMove, 5); +} + +void Task_TeamMonTMMove(u8 taskId) +{ + GetMonNickname(ewram1C000.pokemon, gStringVar1); + ewram1C000.unk8 = ItemIdToBattleMoveId(ewram1C000.unk6); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + ewram1B000.unk282 = 0; + if (pokemon_has_move(ewram1C000.pokemon, ewram1C000.unk8)) + { + StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyKnows); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33)) + { + StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = party_menu_link_mon_held_item_object; + } + else + { + if (GiveMoveToMon(ewram1C000.pokemon, ewram1C000.unk8) != 0xFFFF) + { + Task_TeamMonTMMove2(taskId); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F358; + } + } + } +} + +void Task_TeamMonTMMove2(u8 taskId) +{ + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove); + sub_806E834(gStringVar4, 1); + AdjustFriendship(ewram1C000.pokemon, 4); + if (ewram1B000.unk282 == 0 && ewram1C000.unk6 <= 0x152) + RemoveBagItem(ewram1C000.unk6, 1); + gTasks[taskId].func = Task_TeamMonTMMove3; +} + +void Task_TeamMonTMMove3(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + PlayFanfare(BGM_FANFA1); + gTasks[taskId].func = Task_TeamMonTMMove4; + } +} + +void Task_TeamMonTMMove4(u8 taskId) +{ + if (IsFanfareTaskInactive()) + { + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + if (ewram1B000.unk282 == 1) + { + sub_8070C54(taskId); + } + else + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } + } + } +} + +void sub_806F2FC(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + SetHeldItemIconVisibility(ewram1C000.unk4, ewram1C000.unk5); + if (ewram1B000.unk282 == 1) + { + sub_8070C54(taskId); + } + else + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } + } } -asm(".section .text_b"); +void sub_806F358(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = sub_806F390; + } +} + +void sub_806F390(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + sub_806E834(gOtherText_WhichMoveToForget2, 1); + gTasks[taskId].func = sub_806F44C; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + StopTryingToTeachMove_806F614(taskId); + } +} + +void sub_806F3FC(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_809D9F0(gPlayerParty, ewram1C000.unk5, gPlayerPartyCount - 1, sub_808B564, ewram1C000.unk8); + DestroyTask(taskId); + } +} + +void sub_806F44C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_806F3FC; + } +} + +void TaughtMove(u8 taskId) +{ + if (!gPaletteFade.active) + { + u8 moveIndex; + u16 r4; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, gScriptItemId, sub_808B508); + moveIndex = sub_809FA30(); + r4 = GetMonData(ewram1C000.pokemon, MON_DATA_MOVE1 + moveIndex); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[r4]); + StringExpandPlaceholders(gStringVar4, gOtherText_ForgetMove123_2); + sub_806E834(gStringVar4, 1); + CreateTask(TMMoveUpdateMoveSlot, 5); + } +} + +void TMMoveUpdateMoveSlot(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + RemoveMonPPBonus(ewram1C000.pokemon, sub_809FA30()); + SetMonMoveSlot(ewram1C000.pokemon, ewram1C000.unk8, sub_809FA30()); + Task_TeamMonTMMove2(taskId); + } +} + +void StopTryingToTeachMove_806F588(u8 taskId) +{ + if (!gPaletteFade.active) + { + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, gScriptItemId, sub_808B508); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); + sub_806E834(gStringVar4, 1); + CreateTask(StopTryingToTeachMove_806F67C, 5); + } +} + +void StopTryingToTeachMove_806F614(u8 taskId) +{ + MenuZeroFillWindowRect(23, 8, 29, 13); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = StopTryingToTeachMove_806F67C; +} + +void StopTryingToTeachMove_806F67C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + DisplayYesNoMenu(23, 8, 1); + gTasks[taskId].func = StopTryingToTeachMove_806F6B4; + } +} + +void StopTryingToTeachMove_806F6B4(u8 taskId) +{ + s8 selection = ProcessMenuInputNoWrap_(); + + if (selection == 0) + { + MenuZeroFillWindowRect(23, 8, 29, 13); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F2FC; + } + else + { + if (selection != 1 && selection != -1) + return; + if (selection == -1) + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]); + StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn); + sub_806E834(gStringVar4, 1); + gTasks[taskId].func = sub_806F358; + } +} + +bool8 IsHMMove(u16 move) +{ + u8 i; + + for (i = 0; i < 8; i++) + { + if (gUnknown_08376504[50 + i] == move) + return TRUE; + } + return FALSE; +} + +s16 sub_806F7E8(u8 taskId, struct BattleInterfaceStruct1 *b, s8 c) +{ + s16 *taskData; + u8 hpBarLevel; + void *vramPtr; + + taskData = gTasks[taskId].data; + + b->unk0 = taskData[10]; + b->unk4 = taskData[11]; + b->unk8 = taskData[12] * c; + b->unk10 = 0x100; + hpBarLevel = GetHPBarLevel(ewram1B000.unk282, b->unk0); + if (hpBarLevel > 2) + b->unkC_0 = 4; + if (hpBarLevel == 2) + b->unkC_0 = 5; + if (hpBarLevel < 2) + b->unkC_0 = 6; + vramPtr = gUnknown_08376858[IsDoubleBattle()][ewram1C000.unk5]; + return sub_80460C8(b, &ewram1C000.unkC, vramPtr, 0); +} + +void sub_806F8AC(u8 taskId) +{ + struct BattleInterfaceStruct1 sp0; + u16 sp14; + + ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, -1); + if (ewram1B000.unk282 == -1) + { + ewram1C000.unkC = 0; + if (-sp0.unk8 + sp0.unk4 > sp0.unk0) + sp14 = sp0.unk0 - sp0.unk4; + else + sp14 = -sp0.unk8; + gBattleMoveDamage = -sp14; + GetMonNickname(ewram1C000.pokemon, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, sp14, 0, 3); + if (gTasks[taskId].data[14] == 0) + StringExpandPlaceholders(gStringVar4, gOtherText_HPRestoredBy); + else + StringExpandPlaceholders(gStringVar4, gOtherText_RegainedHealth); + SetMonIconAnim(GetMonIconSpriteId_maybe(ewram1C000.unk4, ewram1C000.unk5), ewram1C000.pokemon); + task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 7); + ewram1B000.unk261 = 2; + sub_806E834(gStringVar4, 1); + sp14 += sp0.unk4; + SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&sp14); + RemoveBagItem(ewram1C000.unk6, 1); + sub_8032638(); + gTasks[taskId].func = sub_806FB44; + } + else + { + PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); + } +} + +void sub_806FA18(u8 taskId) +{ + struct BattleInterfaceStruct1 sp0; + + ewram1B000.unk282 = sub_806F7E8(taskId, &sp0, 1); + if (ewram1B000.unk282 == -1) + { + PlaySE(SE_KAIFUKU); + ewram1C000.unkC = 0; + gTasks[taskId].data[11] -= gTasks[taskId].data[12]; + SetMonData(ewram1C000.pokemon, MON_DATA_HP, (u8 *)&gTasks[taskId].data[11]); + SetMonIconAnim(GetMonIconSpriteId_maybe(ewram1C000.unk4, ewram01000.unk1), ewram1C000.pokemon); + ewram1C000.unk5 = gSprites[ewram01000.unk2].data0; + ewram1C000.pokemon = &gPlayerParty[ewram1C000.unk5]; + gTasks[taskId].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + gTasks[taskId].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + ewram1C000.unkC = -32768; + ewram1C000.unk14 = ewram1C000.unk10; + gTasks[taskId].func = sub_806F8AC; + ewram1B000.unk282 = gTasks[taskId].data[11]; + } + else + { + PartyMenuDoPrintHP(ewram1C000.unk5, IsDoubleBattle(), ewram1B000.unk282, sp0.unk0); + } +} + +void sub_806FB0C(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk10; + DestroyTask(taskId); + } +} + +void sub_806FB44(u8 taskId) +{ + if (gUnknown_0202E8F6 == 0) + { + gTasks[ewram1C000.unk4].func = ewram1C000.unk14; + DestroyTask(taskId); + } +} + +bool8 IsHPRecoveryItem(u16 item) +{ + const u8 *itemEffect; + + if (item == 0xAF) + itemEffect = gSaveBlock1.enigmaBerry.itemEffect; + else + itemEffect = gItemEffectTable[item - 13]; + + if (itemEffect[4] & 4) + return TRUE; + else + return FALSE; +} + +void PartyMenuUpdateLevelOrStatus(struct Pokemon *pkmn, u8 b) +{ + PartyMenuClearLevelStatusTilemap(b); + PartyMenuPrintMonLevelOrStatus(b, pkmn); +} + +void GetMedicineItemEffectMessage(u16 item) +{ + switch (GetItemEffectType(item)) + { + case 3: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning); + break; + case 4: + StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp); + break; + case 5: + StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed); + break; + case 6: + StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut); + break; + case 7: + StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis); + break; + case 8: + StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion); + break; + case 9: + StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove); + break; + case 11: + StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy); + break; + case 13: + StringCopy(gStringVar2, gOtherText_Hp2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 12: + StringCopy(gStringVar2, gOtherText_Attack); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 17: + StringCopy(gStringVar2, gOtherText_Defense); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 16: + StringCopy(gStringVar2, gOtherText_Speed); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 14: + StringCopy(gStringVar2, gOtherText_SpAtk2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 15: + StringCopy(gStringVar2, gOtherText_SpDef2); + StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised); + break; + case 19: + case 20: + StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased); + break; + case 21: + StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored); + break; + default: + StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect); + break; + } +} + +bool8 IsMedicineIneffective(struct Pokemon *pkmn, u16 item) +{ + if (GetItemEffectType(item) == 13 + && GetMonData(pkmn, MON_DATA_SPECIES) == SPECIES_SHEDINJA) + return TRUE; + else + return FALSE; +} + +bool8 ExecuteTableBasedItemEffect__(u8 a, u16 b, u8 c) +{ + if (gMain.inBattle) + return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, sub_8094C20(a), c); + else + return ExecuteTableBasedItemEffect_(&gPlayerParty[a], b, a, c); +} + +void UseMedicine(u8 taskId, u16 item, TaskFunc func) +{ + u8 r7; + bool8 r9 = FALSE; + bool8 r0; + + gTasks[taskId].func = TaskDummy; + r7 = CreateTask(TaskDummy, 5); + sub_806E8D0(taskId, item, func); + if (!IsMedicineIneffective(ewram1C000.pokemon, item)) + { + r9 = IsHPRecoveryItem(item); + if (r9 == TRUE) + { + gTasks[r7].data[10] = GetMonData(ewram1C000.pokemon, MON_DATA_MAX_HP); + gTasks[r7].data[11] = GetMonData(ewram1C000.pokemon, MON_DATA_HP); + if (gTasks[r7].data[10] == gTasks[r7].data[11]) + { + r9 = FALSE; + gTasks[r7].data[10] = 0; + gTasks[r7].data[11] = 0; + } + } + r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, item, 0); + } + else + { + r0 = TRUE; + } + + if (r0) + { + gUnknown_0202E8F4 = 0; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + gTasks[r7].func = sub_806FB0C; + } + else + { + u8 statusAndPkrs; + + gUnknown_0202E8F4 = 1; + if (!IsBlueYellowRedFlute(item)) + PlaySE(SE_KAIFUKU); + else + PlaySE(SE_BIDORO); + statusAndPkrs = GetMonStatusAndPokerus(ewram1C000.pokemon); + if (statusAndPkrs == 6 || statusAndPkrs == 0) + PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5); + if (r9 == TRUE) + { + gTasks[r7].data[12] = GetMonData(ewram1C000.pokemon, MON_DATA_HP) - gTasks[r7].data[11]; + ewram1C000.unkC = -32768; + if (gTasks[r7].data[11] == 0) + gTasks[r7].data[14] = 1; + else + gTasks[r7].data[14] = 0; + ewram1C000.unk14 = ewram1C000.unk10; + gTasks[r7].func = sub_806F8AC; + ewram1B000.unk282 = gTasks[r7].data[11]; + } + else + { + GetMonNickname(ewram1C000.pokemon, gStringVar1); + if (!IsBlueYellowRedFlute(item)) + RemoveBagItem(item, 1); + GetMedicineItemEffectMessage(item); + TryPrintPartyMenuMonNickname(ewram1C000.unk5, ewram1C000.pokemon); + sub_806E834(gStringVar4, 1); + gTasks[r7].func = sub_806FB0C; + } + } +} + +bool8 IsBlueYellowRedFlute(u16 item) +{ + if (item == 0x27 + || item == 0x29 + || item == 0x28) + return TRUE; + else + return FALSE; +} + +void sub_8070048(u8 taskId, u16 item, TaskFunc func) +{ + ewram1C000.unk10 = func; + ewram1C000.unk4 = taskId; + ewram1C000.unk6 = item; + ewram1C000.unk5 = 0; + ewram1C000.unk14 = sub_80701DC; + ewram1B000.unk27E = 0; + ewram1B000.unk280 = 0; + sub_8070088(taskId); +} void sub_8070088(u8 taskId) { @@ -169,7 +1218,7 @@ void sub_8070088(u8 taskId) ewram1B000.unk27E = 1; ewram1B000.unk280 = 1; ewram1B000.unk282 = taskData[11]; - ewram1C000.var0C = -32768; + ewram1C000.unkC = -32768; gTasks[taskId2].func = sub_806F8AC; } } @@ -253,7 +1302,7 @@ void Task_HandleItemUseMoveMenuInput(u8 taskId) void DoPPRecoveryItemEffect(u8 taskId, u16 b, TaskFunc c) { - u8 *itemEffect; + const u8 *itemEffect; u8 taskId2; if (b == 0xAF) @@ -322,7 +1371,80 @@ void DoRecoverPP(u8 taskId) gTasks[taskId].func = sub_806FB0C; } -asm(".section .text_c"); +void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, b, c); + PlaySE(SE_SELECT); + sub_806D538(11, 3); + CreateItemUseMoveMenu(ewram1C000.unk5); + CreateTask(Task_HandleItemUseMoveMenuInput, 5); + gMain.newKeys = 0; +} + +void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c) +{ + u8 i; + bool8 r0; + + gTasks[taskId].func = TaskDummy; + sub_806E8D0(taskId, b, c); + + if (GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL) != 100) + { + for (i = 0; i < 6; i++) + ewram1B000.unk264[i] = GetMonData(ewram1C000.pokemon, gUnknown_08376D1C[i]); + r0 = ExecuteTableBasedItemEffect__(ewram1C000.unk5, b, 0); + } + else + r0 = TRUE; + + if (r0) + { + gUnknown_0202E8F4 = 0; + PlaySE(SE_SELECT); + sub_806E834(gOtherText_WontHaveAnyEffect, 1); + CreateTask(sub_806FB0C, 5); + } + else + { + u8 level; + + gUnknown_0202E8F4 = 1; + PlayFanfareByFanfareNum(0); + sub_8070A20(ewram1C000.unk5, ewram1C000.pokemon); + RemoveBagItem(b, 1); + GetMonNickname(ewram1C000.pokemon, gStringVar1); + level = GetMonData(ewram1C000.pokemon, MON_DATA_LEVEL); + ConvertIntToDecimalStringN(gStringVar2, level, 0, 3); + StringExpandPlaceholders(gStringVar4, gOtherText_ElevatedTo); + sub_806E834(gStringVar4, 1); + CreateTask(Task_RareCandy1, 5); + } +} + +void Task_RareCandy1(u8 taskId) +{ + if (WaitFanfare(0) && gUnknown_0202E8F6 == 0) + { + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_8070848(taskId); + gTasks[taskId].func = Task_RareCandy2; + } + } +} + +void Task_RareCandy2(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + PlaySE(SE_SELECT); + sub_8070968(taskId); + gTasks[taskId].func = Task_RareCandy3; + } +} void sub_8070848(u8 taskId) { -- cgit v1.2.3 From 3ba95b67bc2565dd61e3879deaa7543d7bf53b4e Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sat, 20 May 2017 17:49:54 +0200 Subject: Decrease indentation level of switches --- src/battle_2.c | 62 +- src/battle_interface.c | 34 +- src/braille_puzzles.c | 74 +- src/clear_save_data_menu.c | 138 ++-- src/field_camera.c | 96 +-- src/field_control_avatar.c | 68 +- src/field_poison.c | 48 +- src/field_special_scene.c | 122 +-- src/fldeff_cut.c | 86 +- src/intro.c | 100 +-- src/item_use.c | 178 ++--- src/matsuda_debug_menu.c | 70 +- src/mauville_old_man.c | 30 +- src/mystery_event_menu.c | 402 +++++----- src/option_menu.c | 296 +++---- src/player_pc.c | 38 +- src/pokedex.c | 1560 ++++++++++++++++++------------------- src/pokemon_2.c | 1036 ++++++++++++------------ src/pokemon_3.c | 112 +-- src/record_mixing.c | 46 +- src/save_failed_screen.c | 106 +-- src/script_menu.c | 26 +- src/script_pokemon_util_80C4BF0.c | 142 ++-- src/script_pokemon_util_80F99CC.c | 266 +++---- src/secret_base.c | 70 +- src/shop.c | 24 +- src/start_menu.c | 306 ++++---- src/starter_choose.c | 40 +- src/text.c | 78 +- src/tv.c | 1106 +++++++++++++------------- src/wallclock.c | 134 ++-- 31 files changed, 3447 insertions(+), 3447 deletions(-) diff --git a/src/battle_2.c b/src/battle_2.c index f2ce737d6..12fd4182d 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -2562,39 +2562,39 @@ void sub_8012324(void) r5 = battle_get_per_side_status(gUnknown_02024A60); switch (gUnknown_02024D1E[gUnknown_02024A60]) { - case 0: - ewram[0x016068 + gUnknown_02024A60] = 6; - if (!(gBattleTypeFlags & 0x40) - && (r5 & 2) - && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)]) - && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4) - break; - //_080123F8 - if (ewram160A6 & gBitTable[gUnknown_02024A60]) - { - gUnknown_02024C18[gUnknown_02024A60] = 13; - if (!(gBattleTypeFlags & 0x40)) - gUnknown_02024D1E[gUnknown_02024A60] = 4; - //_08012454 - else - gUnknown_02024D1E[gUnknown_02024A60] = 3; - break; - } - //_08012468 - if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000) - || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000)) - { - gUnknown_02024C18[gUnknown_02024A60] = 0; - gUnknown_02024D1E[gUnknown_02024A60] = 3; - } + case 0: + ewram[0x016068 + gUnknown_02024A60] = 6; + if (!(gBattleTypeFlags & 0x40) + && (r5 & 2) + && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)]) + && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4) + break; + //_080123F8 + if (ewram160A6 & gBitTable[gUnknown_02024A60]) + { + gUnknown_02024C18[gUnknown_02024A60] = 13; + if (!(gBattleTypeFlags & 0x40)) + gUnknown_02024D1E[gUnknown_02024A60] = 4; + //_08012454 else - { - dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8)); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); - gUnknown_02024D1E[gUnknown_02024A60]++; - } + gUnknown_02024D1E[gUnknown_02024A60] = 3; break; - case 1: + } + //_08012468 + if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000) + || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000)) + { + gUnknown_02024C18[gUnknown_02024A60] = 0; + gUnknown_02024D1E[gUnknown_02024A60] = 3; + } + else + { + dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8)); + dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + gUnknown_02024D1E[gUnknown_02024A60]++; + } + break; + case 1: } } } diff --git a/src/battle_interface.c b/src/battle_interface.c index ba3cba894..61a6a5853 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -2409,23 +2409,23 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn) gender = 100; switch (gender) { - default: - ptr[0] = 0xB; - ptr[1] = EOS; - ptr += 1; - break; - case MON_MALE: - ptr[0] = 0xB; - ptr[1] = CHAR_MALE; - ptr[2] = EOS; - ptr += 2; - break; - case MON_FEMALE: - ptr[0] = 0xA; - ptr[1] = CHAR_FEMALE; - ptr[2] = EOS; - ptr += 2; - break; + default: + ptr[0] = 0xB; + ptr[1] = EOS; + ptr += 1; + break; + case MON_MALE: + ptr[0] = 0xB; + ptr[1] = CHAR_MALE; + ptr[2] = EOS; + ptr += 2; + break; + case MON_FEMALE: + ptr[0] = 0xA; + ptr[1] = CHAR_FEMALE; + ptr[2] = EOS; + ptr += 2; + break; } ptr[0] = EXT_CTRL_CODE_BEGIN; ptr[1] = 0x13; diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 220e8420c..2ee4f91bb 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -151,50 +151,50 @@ void Task_BrailleWait(u8 taskId) switch (data[0]) { - case 0: - data[1] = 7200; - data[0] = 1; - break; - case 1: - if (BrailleWait_CheckButtonPress() != FALSE) + case 0: + data[1] = 7200; + data[0] = 1; + break; + case 1: + if (BrailleWait_CheckButtonPress() != FALSE) + { + MenuZeroFillScreen(); + PlaySE(5); + data[0] = 2; + } + else + { + data[1] = data[1] - 1; + if (data[1] == 0) { MenuZeroFillScreen(); - PlaySE(5); - data[0] = 2; - } - else - { - data[1] = data[1] - 1; - if (data[1] == 0) - { - MenuZeroFillScreen(); - data[0] = 3; - data[1] = 30; - } - } - break; - case 2: - if (BrailleWait_CheckButtonPress() == FALSE) - { - data[1] = data[1] - 1; - if (data[1] == 0) - data[0] = 4; - break; + data[0] = 3; + data[1] = 30; } - sub_8064E2C(); - DestroyTask(taskId); - ScriptContext2_Disable(); - break; - case 3: + } + break; + case 2: + if (BrailleWait_CheckButtonPress() == FALSE) + { data[1] = data[1] - 1; if (data[1] == 0) data[0] = 4; break; - case 4: - sub_8064E2C(); - ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber); - DestroyTask(taskId); - break; + } + sub_8064E2C(); + DestroyTask(taskId); + ScriptContext2_Disable(); + break; + case 3: + data[1] = data[1] - 1; + if (data[1] == 0) + data[0] = 4; + break; + case 4: + sub_8064E2C(); + ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber); + DestroyTask(taskId); + break; } } diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index 21cd643ef..c519e1a30 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -99,65 +99,65 @@ static u8 InitClearSaveDataScreen(void) switch (gMain.state) { - case 0: - default: - SetVBlankCallback(NULL); - - REG_DISPCNT = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WININ = 0; - REG_WINOUT = 0; - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - - DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); - DmaFill32(3, 0, (void *)OAM, OAM_SIZE); - DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); - - ResetPaletteFade(); - - gPlttBufferUnfaded[0] = 0x7fff; - gPlttBufferFaded[0] = 0x7fff; - gPlttBufferUnfaded[1] = 0x3945; - gPlttBufferFaded[1] = 0x3945; - - for (i = 0; i < 0x10; i++) - ((u16 *)(VRAM + 0x20))[i] = 0x1111; - - for (i = 0; i < 0x500; i++) - ((u16 *)(VRAM + 0x3800))[i] = 0x0001; - - ResetTasks(); - ResetSpriteData(); - - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); - - ime = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = ime; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - - SetVBlankCallback(VBlankCB_InitClearSaveDataScreen); - - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG3_ON; - gMain.state = 1; + case 0: + default: + SetVBlankCallback(NULL); + + REG_DISPCNT = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WININ = 0; + REG_WINOUT = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + + DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE); + DmaFill32(3, 0, (void *)OAM, OAM_SIZE); + DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); + + ResetPaletteFade(); + + gPlttBufferUnfaded[0] = 0x7fff; + gPlttBufferFaded[0] = 0x7fff; + gPlttBufferUnfaded[1] = 0x3945; + gPlttBufferFaded[1] = 0x3945; + + for (i = 0; i < 0x10; i++) + ((u16 *)(VRAM + 0x20))[i] = 0x1111; + + for (i = 0; i < 0x500; i++) + ((u16 *)(VRAM + 0x3800))[i] = 0x0001; + + ResetTasks(); + ResetSpriteData(); + + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff); + + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + + SetVBlankCallback(VBlankCB_InitClearSaveDataScreen); + + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG3_ON; + gMain.state = 1; + return 0; + case 1: + UpdatePaletteFade(); + if (gPaletteFade.active) return 0; - case 1: - UpdatePaletteFade(); - if (gPaletteFade.active) - return 0; - SetMainCallback2(CB2_ClearSaveDataScreen); - return 1; + SetMainCallback2(CB2_ClearSaveDataScreen); + return 1; } } @@ -165,16 +165,16 @@ static void CB2_SoftReset(void) { switch (gMain.state) { - case 0: - default: - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff); - gMain.state = 1; - break; - case 1: - UpdatePaletteFade(); - if (gPaletteFade.active) - return; - DoSoftReset(); - break; + case 0: + default: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff); + gMain.state = 1; + break; + case 1: + UpdatePaletteFade(); + if (gPaletteFade.active) + return; + DoSoftReset(); + break; } } diff --git a/src/field_camera.c b/src/field_camera.c index 442bc095b..182e180ab 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -258,54 +258,54 @@ static void DrawMetatile(s32 a, u16 *b, u16 c) { switch (a) { - case 2: - gBGTilemapBuffers[3][c] = b[0]; - gBGTilemapBuffers[3][c + 1] = b[1]; - gBGTilemapBuffers[3][c + 0x20] = b[2]; - gBGTilemapBuffers[3][c + 0x21] = b[3]; - - gBGTilemapBuffers[2][c] = 0; - gBGTilemapBuffers[2][c + 1] = 0; - gBGTilemapBuffers[2][c + 0x20] = 0; - gBGTilemapBuffers[2][c + 0x21] = 0; - - gBGTilemapBuffers[1][c] = b[4]; - gBGTilemapBuffers[1][c + 1] = b[5]; - gBGTilemapBuffers[1][c + 0x20] = b[6]; - gBGTilemapBuffers[1][c + 0x21] = b[7]; - break; - case 1: - gBGTilemapBuffers[3][c] = b[0]; - gBGTilemapBuffers[3][c + 1] = b[1]; - gBGTilemapBuffers[3][c + 0x20] = b[2]; - gBGTilemapBuffers[3][c + 0x21] = b[3]; - - gBGTilemapBuffers[2][c] = b[4]; - gBGTilemapBuffers[2][c + 1] = b[5]; - gBGTilemapBuffers[2][c + 0x20] = b[6]; - gBGTilemapBuffers[2][c + 0x21] = b[7]; - - gBGTilemapBuffers[1][c] = 0; - gBGTilemapBuffers[1][c + 1] = 0; - gBGTilemapBuffers[1][c + 0x20] = 0; - gBGTilemapBuffers[1][c + 0x21] = 0; - break; - case 0: - gBGTilemapBuffers[3][c] = 0x3014; - gBGTilemapBuffers[3][c + 1] = 0x3014; - gBGTilemapBuffers[3][c + 0x20] = 0x3014; - gBGTilemapBuffers[3][c + 0x21] = 0x3014; - - gBGTilemapBuffers[2][c] = b[0]; - gBGTilemapBuffers[2][c + 1] = b[1]; - gBGTilemapBuffers[2][c + 0x20] = b[2]; - gBGTilemapBuffers[2][c + 0x21] = b[3]; - - gBGTilemapBuffers[1][c] = b[4]; - gBGTilemapBuffers[1][c + 1] = b[5]; - gBGTilemapBuffers[1][c + 0x20] = b[6]; - gBGTilemapBuffers[1][c + 0x21] = b[7]; - break; + case 2: + gBGTilemapBuffers[3][c] = b[0]; + gBGTilemapBuffers[3][c + 1] = b[1]; + gBGTilemapBuffers[3][c + 0x20] = b[2]; + gBGTilemapBuffers[3][c + 0x21] = b[3]; + + gBGTilemapBuffers[2][c] = 0; + gBGTilemapBuffers[2][c + 1] = 0; + gBGTilemapBuffers[2][c + 0x20] = 0; + gBGTilemapBuffers[2][c + 0x21] = 0; + + gBGTilemapBuffers[1][c] = b[4]; + gBGTilemapBuffers[1][c + 1] = b[5]; + gBGTilemapBuffers[1][c + 0x20] = b[6]; + gBGTilemapBuffers[1][c + 0x21] = b[7]; + break; + case 1: + gBGTilemapBuffers[3][c] = b[0]; + gBGTilemapBuffers[3][c + 1] = b[1]; + gBGTilemapBuffers[3][c + 0x20] = b[2]; + gBGTilemapBuffers[3][c + 0x21] = b[3]; + + gBGTilemapBuffers[2][c] = b[4]; + gBGTilemapBuffers[2][c + 1] = b[5]; + gBGTilemapBuffers[2][c + 0x20] = b[6]; + gBGTilemapBuffers[2][c + 0x21] = b[7]; + + gBGTilemapBuffers[1][c] = 0; + gBGTilemapBuffers[1][c + 1] = 0; + gBGTilemapBuffers[1][c + 0x20] = 0; + gBGTilemapBuffers[1][c + 0x21] = 0; + break; + case 0: + gBGTilemapBuffers[3][c] = 0x3014; + gBGTilemapBuffers[3][c + 1] = 0x3014; + gBGTilemapBuffers[3][c + 0x20] = 0x3014; + gBGTilemapBuffers[3][c + 0x21] = 0x3014; + + gBGTilemapBuffers[2][c] = b[0]; + gBGTilemapBuffers[2][c + 1] = b[1]; + gBGTilemapBuffers[2][c + 0x20] = b[2]; + gBGTilemapBuffers[2][c + 0x21] = b[3]; + + gBGTilemapBuffers[1][c] = b[4]; + gBGTilemapBuffers[1][c + 1] = b[5]; + gBGTilemapBuffers[1][c + 0x20] = b[6]; + gBGTilemapBuffers[1][c + 0x21] = b[7]; + break; } } diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index c5f2c08e7..8220a144b 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -342,41 +342,41 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse return gUnknown_081C6C02; switch (bgEvent->kind) { - case 0: - default: - return bgEvent->bgUnion.script; - case 1: - if (c != 2) - return NULL; - break; - case 2: - if (c != 1) - return NULL; - break; - case 3: - if (c != 4) - return NULL; - break; - case 4: - if (c != 3) - return NULL; - break; - case 5: - case 6: - case 7: - gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258; - gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script; - if (FlagGet(gSpecialVar_0x8004) == TRUE) - return NULL; - return HiddenItemScript; - case 8: - if (c == 2) - { - gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script; - if (sub_80BC050()) - return gUnknown_081A2C51; - } + case 0: + default: + return bgEvent->bgUnion.script; + case 1: + if (c != 2) + return NULL; + break; + case 2: + if (c != 1) + return NULL; + break; + case 3: + if (c != 4) return NULL; + break; + case 4: + if (c != 3) + return NULL; + break; + case 5: + case 6: + case 7: + gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258; + gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script; + if (FlagGet(gSpecialVar_0x8004) == TRUE) + return NULL; + return HiddenItemScript; + case 8: + if (c == 2) + { + gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script; + if (sub_80BC050()) + return gUnknown_081A2C51; + } + return NULL; } return bgEvent->bgUnion.script; } diff --git a/src/field_poison.c b/src/field_poison.c index 8e49080b0..4d4d4b975 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -72,32 +72,32 @@ void Task_WhiteOut(u8 taskId) switch (taskData[TD_STATE]) { - case 0: //Check if Pokemon have fainted due to poison - while (taskData[TD_PARTY_MEMBER] < 6) + case 0: //Check if Pokemon have fainted due to poison + while (taskData[TD_PARTY_MEMBER] < 6) + { + if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER])) { - if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER])) - { - MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]); - ShowFieldMessage(fieldPoisonText_PokemonFainted); - taskData[TD_STATE]++; - return; - } - taskData[TD_PARTY_MEMBER]++; + MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]); + ShowFieldMessage(fieldPoisonText_PokemonFainted); + taskData[TD_STATE]++; + return; } - taskData[TD_STATE] = 2; - break; - case 1: //Wait for message box to disappear - if (IsFieldMessageBoxHidden()) - taskData[TD_STATE]--; //Check next party member - break; - case 2: //Done checking Pokemon - if (AllMonsFainted()) - gScriptResult = 1; - else - gScriptResult = 0; - EnableBothScriptContexts(); - DestroyTask(taskId); - break; + taskData[TD_PARTY_MEMBER]++; + } + taskData[TD_STATE] = 2; + break; + case 1: //Wait for message box to disappear + if (IsFieldMessageBoxHidden()) + taskData[TD_STATE]--; //Check next party member + break; + case 2: //Done checking Pokemon + if (AllMonsFainted()) + gScriptResult = 1; + else + gScriptResult = 0; + EnableBothScriptContexts(); + DestroyTask(taskId); + break; } } diff --git a/src/field_special_scene.c b/src/field_special_scene.c index 59280b743..9e06ede81 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -143,64 +143,64 @@ void Task_HandleTruckSequence(u8 taskId) { s16 *data = gTasks[taskId].data; - switch (data[0]) - { - /* - Each case has a timer which is handled with data[1], incrementing - until it reaches the if function's condition, which sets the next task up. - */ - case 0: - data[1]++; - if (data[1] == SECONDS(1.5)) - { - SetCameraPanningCallback(0); - data[1] = 0; // reset the timer. - data[2] = CreateTask(Task_Truck1, 0xA); - data[0] = 1; // run the next case. - PlaySE(SE_TRACK_MOVE); - } - break; - case 1: - data[1]++; - if (data[1] == SECONDS(2.5)) - { - pal_fill_black(); - data[1] = 0; - data[0] = 2; - } - break; - case 2: - data[1]++; - if (!gPaletteFade.active && data[1] > SECONDS(5)) - { - data[1] = 0; - DestroyTask(data[2]); - data[3] = CreateTask(Task_Truck2, 0xA); - data[0] = 3; - PlaySE(SE_TRACK_STOP); - } - break; - case 3: - if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) - { - InstallCameraPanAheadCallback(); - data[1] = 0; - data[0] = 4; - } - break; - case 4: - data[1]++; - if (data[1] == 90) - { - PlaySE(SE_TRACK_HAIK); - data[1] = 0; - data[0] = 5; - } - break; - case 5: - data[1]++; - if (data[1] == 120) - { + switch (data[0]) + { + /* + Each case has a timer which is handled with data[1], incrementing + until it reaches the if function's condition, which sets the next task up. + */ + case 0: + data[1]++; + if (data[1] == SECONDS(1.5)) + { + SetCameraPanningCallback(0); + data[1] = 0; // reset the timer. + data[2] = CreateTask(Task_Truck1, 0xA); + data[0] = 1; // run the next case. + PlaySE(SE_TRACK_MOVE); + } + break; + case 1: + data[1]++; + if (data[1] == SECONDS(2.5)) + { + pal_fill_black(); + data[1] = 0; + data[0] = 2; + } + break; + case 2: + data[1]++; + if (!gPaletteFade.active && data[1] > SECONDS(5)) + { + data[1] = 0; + DestroyTask(data[2]); + data[3] = CreateTask(Task_Truck2, 0xA); + data[0] = 3; + PlaySE(SE_TRACK_STOP); + } + break; + case 3: + if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?) + { + InstallCameraPanAheadCallback(); + data[1] = 0; + data[0] = 4; + } + break; + case 4: + data[1]++; + if (data[1] == 90) + { + PlaySE(SE_TRACK_HAIK); + data[1] = 0; + data[0] = 5; + } + break; + case 5: + data[1]++; + if (data[1] == 120) + { MapGridSetMetatileIdAt(11, 8, 520); MapGridSetMetatileIdAt(11, 9, 528); MapGridSetMetatileIdAt(11, 10, 536); @@ -208,9 +208,9 @@ void Task_HandleTruckSequence(u8 taskId) PlaySE(SE_TRACK_DOOR); DestroyTask(taskId); ScriptContext2_Disable(); - } - break; - } + } + break; + } } void ExecuteTruckSequence(void) diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 77c8752d1..8fde74852 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -160,37 +160,37 @@ void sub_80A27A8(s16 x, s16 y) switch(metatileId) { - case 0x208: - case 0x15: - case 0xD: - MapGridSetMetatileIdAt(x, y, 0x1); - break; - case 0x1C6: - MapGridSetMetatileIdAt(x, y, 0x1CE); - break; - case 0x1C7: - MapGridSetMetatileIdAt(x, y, 0x1CF); - break; - case 0x281: - MapGridSetMetatileIdAt(x, y, 0x279); - break; - case 0x282: - MapGridSetMetatileIdAt(x, y, 0x27A); - break; - case 0x283: - MapGridSetMetatileIdAt(x, y, 0x27B); - break; - case 0x206: - case 0x207: - MapGridSetMetatileIdAt(x, y, 0x271); - break; - case 0x212: - case 0x20A: - MapGridSetMetatileIdAt(x, y, 0x218); - break; - case 0x25: - MapGridSetMetatileIdAt(x, y, 0xE); - break; + case 0x208: + case 0x15: + case 0xD: + MapGridSetMetatileIdAt(x, y, 0x1); + break; + case 0x1C6: + MapGridSetMetatileIdAt(x, y, 0x1CE); + break; + case 0x1C7: + MapGridSetMetatileIdAt(x, y, 0x1CF); + break; + case 0x281: + MapGridSetMetatileIdAt(x, y, 0x279); + break; + case 0x282: + MapGridSetMetatileIdAt(x, y, 0x27A); + break; + case 0x283: + MapGridSetMetatileIdAt(x, y, 0x27B); + break; + case 0x206: + case 0x207: + MapGridSetMetatileIdAt(x, y, 0x271); + break; + case 0x212: + case 0x20A: + MapGridSetMetatileIdAt(x, y, 0x218); + break; + case 0x25: + MapGridSetMetatileIdAt(x, y, 0xE); + break; } } @@ -223,18 +223,18 @@ void sub_80A28F4(s16 x, s16 y) { switch((u8)sub_80A28A0(currentXsigned, y + 1)) { - case 1: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x208); - break; - case 2: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x281); - break; - case 3: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x282); - break; - case 4: - MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x283); - break; + case 1: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x208); + break; + case 2: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x281); + break; + case 3: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x282); + break; + case 4: + MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x283); + break; } } if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY) == 1) diff --git a/src/intro.c b/src/intro.c index 2a62892ba..56eaa11e8 100644 --- a/src/intro.c +++ b/src/intro.c @@ -2084,29 +2084,29 @@ static void sub_813D788(struct Sprite *sprite) { switch (sprite->data0) { - case 0: - StartSpriteAnimIfDifferent(sprite, 0); - sprite->pos1.x--; - break; - case 1: - StartSpriteAnimIfDifferent(sprite, 0); - if (gIntroFrameCounter & 7) - return; + case 0: + StartSpriteAnimIfDifferent(sprite, 0); + sprite->pos1.x--; + break; + case 1: + StartSpriteAnimIfDifferent(sprite, 0); + if (gIntroFrameCounter & 7) + return; + sprite->pos1.x++; + break; + case 2: + StartSpriteAnimIfDifferent(sprite, 2); + if (sprite->pos1.x <= 120 || (gIntroFrameCounter & 7)) sprite->pos1.x++; - break; - case 2: - StartSpriteAnimIfDifferent(sprite, 2); - if (sprite->pos1.x <= 120 || (gIntroFrameCounter & 7)) - sprite->pos1.x++; - break; - case 3: - StartSpriteAnimIfDifferent(sprite, 3); - break; - case 4: - StartSpriteAnimIfDifferent(sprite, 0); - if (sprite->pos1.x > -32) - sprite->pos1.x -= 2; - break; + break; + case 3: + StartSpriteAnimIfDifferent(sprite, 3); + break; + case 4: + StartSpriteAnimIfDifferent(sprite, 0); + if (sprite->pos1.x > -32) + sprite->pos1.x -= 2; + break; } if (gIntroFrameCounter & 7) return; @@ -2118,16 +2118,16 @@ static void sub_813D788(struct Sprite *sprite) { switch (Random() & 3) { - case 0: - sprite->pos2.y = -1; - break; - case 1: - sprite->pos2.y = 1; - break; - case 2: - case 3: - sprite->pos2.y = 0; - break; + case 0: + sprite->pos2.y = -1; + break; + case 1: + sprite->pos2.y = 1; + break; + case 2: + case 3: + sprite->pos2.y = 0; + break; } } } @@ -2136,24 +2136,24 @@ static void sub_813D880(struct Sprite *sprite) { switch (sprite->data0) { - case 0: - break; - case 1: - if (sprite->pos2.x + sprite->pos1.x < 304) - sprite->pos2.x += 8; - else - sprite->data0 = 2; - break; - case 2: - if (sprite->pos2.x + sprite->pos1.x > 120) - sprite->pos2.x -= 1; - else - sprite->data0 = 3; - break; - case 3: - if (sprite->pos2.x > 0) - sprite->pos2.x -= 2; - break; + case 0: + break; + case 1: + if (sprite->pos2.x + sprite->pos1.x < 304) + sprite->pos2.x += 8; + else + sprite->data0 = 2; + break; + case 2: + if (sprite->pos2.x + sprite->pos1.x > 120) + sprite->pos2.x -= 1; + else + sprite->data0 = 3; + break; + case 3: + if (sprite->pos2.x > 0) + sprite->pos2.x -= 2; + break; } sprite->pos2.y = Sin((u8)sprite->data1, 8) - gUnknown_0203935A; sprite->data1 += 4; diff --git a/src/item_use.c b/src/item_use.c index 4047ade5c..116a57226 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -180,13 +180,13 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text) switch (playerMenuStatus) { - case 0: // Item Menu - MenuZeroFillWindowRect(0, 13, 13, 20); - DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); - break; - default: // Field - DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); - break; + case 0: // Item Menu + MenuZeroFillWindowRect(0, 13, 13, 20); + DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1); + break; + default: // Field + DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0); + break; } } @@ -439,33 +439,33 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y) switch(connection->direction) { - // same weird temp variable behavior seen in HiddenItemAtPos - case 2: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = mapHeader->mapData->height - 7; - localY = localLength + y; // additions are reversed for some reason - break; - case 1: - localOffset = connection->offset + 7; - localX = x - localOffset; - localLength = gMapHeader.mapData->height + 7; - localY = y - localLength; - break; - case 3: - localLength = mapHeader->mapData->width - 7; - localX = localLength + x; // additions are reversed for some reason - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - case 4: - localLength = gMapHeader.mapData->width + 7; - localX = x - localLength; - localOffset = connection->offset + 7; - localY = y - localOffset; - break; - default: - return FALSE; + // same weird temp variable behavior seen in HiddenItemAtPos + case 2: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = mapHeader->mapData->height - 7; + localY = localLength + y; // additions are reversed for some reason + break; + case 1: + localOffset = connection->offset + 7; + localX = x - localOffset; + localLength = gMapHeader.mapData->height + 7; + localY = y - localLength; + break; + case 3: + localLength = mapHeader->mapData->width - 7; + localX = localLength + x; // additions are reversed for some reason + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + case 4: + localLength = gMapHeader.mapData->width + 7; + localX = x - localLength; + localOffset = connection->offset + 7; + localY = y - localOffset; + break; + default: + return FALSE; } return HiddenItemAtPos(mapHeader->events, localX, localY); } @@ -1188,42 +1188,42 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId) { switch(GetItemEffectType(gScriptItemId) - 1) { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - case 10: - case 11: - case 12: - case 13: - case 14: - case 15: - case 16: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_Medicine(taskId); - break; - case 9: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_SacredAsh(taskId); - break; - case 0: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_RareCandy(taskId); - break; - case 18: - case 19: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_PPUp(taskId); - break; - case 20: - gTasks[taskId].data[15] = 1; - ItemUseOutOfBattle_PPRecovery(taskId); - break; - default: - gTasks[taskId].data[15] = 4; - ItemUseOutOfBattle_CannotUse(taskId); + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 10: + case 11: + case 12: + case 13: + case 14: + case 15: + case 16: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_Medicine(taskId); + break; + case 9: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_SacredAsh(taskId); + break; + case 0: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_RareCandy(taskId); + break; + case 18: + case 19: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPUp(taskId); + break; + case 20: + gTasks[taskId].data[15] = 1; + ItemUseOutOfBattle_PPRecovery(taskId); + break; + default: + gTasks[taskId].data[15] = 4; + ItemUseOutOfBattle_CannotUse(taskId); } } @@ -1231,25 +1231,25 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId) { switch(GetItemEffectType(gScriptItemId)) { - case 0: - ItemUseInBattle_StatIncrease(taskId); - break; - case 2: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - case 9: - case 11: - ItemUseInBattle_Medicine(taskId); - break; - case 21: - ItemUseInBattle_PPRecovery(taskId); - break; - default: - ItemUseOutOfBattle_CannotUse(taskId); + case 0: + ItemUseInBattle_StatIncrease(taskId); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: + case 11: + ItemUseInBattle_Medicine(taskId); + break; + case 21: + ItemUseInBattle_PPRecovery(taskId); + break; + default: + ItemUseOutOfBattle_CannotUse(taskId); } } diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index d2ca754bb..09ee5fc66 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -528,41 +528,41 @@ void sub_80AA754(struct Sprite *sprite) { switch (gMain.newAndRepeatedKeys) { - case 0x10: - case 0x20: - sprite->data0 ^= 1; - break; - case 0x40: - if (sprite->data1 == 0) - sprite->data1 = 8; - else - sprite->data1--; - break; - case 0x80: - if (sprite->data1 == 8) - sprite->data1 = 0; - else - sprite->data1++; - break; - case 0x1: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x2: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x100: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x200: - gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10); - sub_80AA614(sprite->data2, sprite->data3); - break; - case 0x8: - sub_80AAD08(sprite, 1); - break; + case DPAD_RIGHT: + case DPAD_LEFT: + sprite->data0 ^= 1; + break; + case DPAD_UP: + if (sprite->data1 == 0) + sprite->data1 = 8; + else + sprite->data1--; + break; + case DPAD_DOWN: + if (sprite->data1 == 8) + sprite->data1 = 0; + else + sprite->data1++; + break; + case A_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case B_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1); + sub_80AA614(sprite->data2, sprite->data3); + break; + case R_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case L_BUTTON: + gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10); + sub_80AA614(sprite->data2, sprite->data3); + break; + case START_BUTTON: + sub_80AAD08(sprite, 1); + break; } sprite->pos1.x = gUnknown_083C9296[sprite->data0 + sprite->data1 * 2]; sprite->pos1.y = gUnknown_083C92A8[sprite->data1]; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 11dadf380..2fa889a15 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -65,21 +65,21 @@ void SetMauvilleOldMan(void) switch(var) { - case 0: - sub_80F7A34(); - break; - case 1: - sub_80F7A6C(); - break; - case 2: - sub_80F7A98(); - break; - case 3: - sub_80F7A7C(); - break; - case 4: - sub_80F7A88(); - break; + case 0: + sub_80F7A34(); + break; + case 1: + sub_80F7A6C(); + break; + case 2: + sub_80F7A98(); + break; + case 3: + sub_80F7A7C(); + break; + case 4: + sub_80F7A88(); + break; } sub_80F83D0(); } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 97deb348c..fa2e42b91 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -91,240 +91,240 @@ static void CB2_MysteryEventMenu(void) switch (gMain.state) { - case 0: - MenuDrawTextWindow(0, 14, 29, 19); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); - gMain.state++; + case 0: + MenuDrawTextWindow(0, 14, 29, 19); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); + gMain.state++; + break; + case 1: + if (gPaletteFade.active) break; - case 1: - if (gPaletteFade.active) - break; - sub_8072044(gSystemText_LinkStandby); + sub_8072044(gSystemText_LinkStandby); + gMain.state++; + break; + case 2: + if (MenuUpdateWindowText()) + { gMain.state++; - break; - case 2: - if (MenuUpdateWindowText()) - { - gMain.state++; - gLinkType = 21761; - OpenLink(); - } - break; - case 3: - if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) - { - PlaySE(SE_PIN); - sub_8072044(gSystemText_LoadEventPressA); - gMain.state++; - } - if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; - } - break; - case 4: - if (MenuUpdateWindowText()) - gMain.state++; - break; + gLinkType = 21761; + OpenLink(); + } + break; + case 3: + if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4) + { + PlaySE(SE_PIN); + sub_8072044(gSystemText_LoadEventPressA); + gMain.state++; + } + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; + } + break; + case 4: + if (MenuUpdateWindowText()) + gMain.state++; + break; #ifdef NONMATCHING - case 5: - if (GetLinkPlayerCount_2() != 2) + case 5: + if (GetLinkPlayerCount_2() != 2) + { + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + gMain.state = 13; + break; + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8007F4C(); + MenuDrawTextWindow(6, 5, 23, 8); + MenuPrint(gSystemText_LoadingEvent, 7, 6); + gMain.state++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; + } + break; + case 6: + if (IsLinkConnectionEstablished()) + { + if (!gReceivedRemoteLinkPlayers) + break; + + if (GetLinkPlayerDataExchangeStatusTimed() == 3) { + sub_800832C(); + MenuZeroFillWindowRect(6, 5, 23, 8); GetEventLoadMessage(gStringVar4, 1); sub_8072044(gStringVar4); gMain.state = 13; break; } - if (gMain.newKeys & A_BUTTON) + else if (CheckLanguageMatch()) { - PlaySE(SE_SELECT); - sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); + sub_8072044(gSystemText_DontCutLink); gMain.state++; + break; } - else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; - } - break; - case 6: - if (IsLinkConnectionEstablished()) - { - if (!gReceivedRemoteLinkPlayers) - break; - - if (GetLinkPlayerDataExchangeStatusTimed() == 3) - { - sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - gMain.state = 13; - break; - } - else if (CheckLanguageMatch()) - { - sub_8072044(gSystemText_DontCutLink); - gMain.state++; - break; - } - else - { - CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - gMain.state = 13; - break; - } - } - if (gMain.newKeys & B_BUTTON) + else { - PlaySE(SE_SELECT); CloseLink(); - gMain.state = 15; + MenuZeroFillWindowRect(6, 5, 23, 8); + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + gMain.state = 13; break; } + } + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; break; + } + break; #else - case 5: - if (GetLinkPlayerCount_2() != 2) - { - goto label; - } - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - sub_8007F4C(); - MenuDrawTextWindow(6, 5, 23, 8); - MenuPrint(gSystemText_LoadingEvent, 7, 6); - gMain.state++; - } - else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; - } - break; - case 6: - if (IsLinkConnectionEstablished()) - { - register u8 *ptr asm("r0"); - register u32 offset1 asm("r2"); - register u32 offset2 asm("r1"); - - if (!gReceivedRemoteLinkPlayers) - break; + case 5: + if (GetLinkPlayerCount_2() != 2) + { + goto label; + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sub_8007F4C(); + MenuDrawTextWindow(6, 5, 23, 8); + MenuPrint(gSystemText_LoadingEvent, 7, 6); + gMain.state++; + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; + } + break; + case 6: + if (IsLinkConnectionEstablished()) + { + register u8 *ptr asm("r0"); + register u32 offset1 asm("r2"); + register u32 offset2 asm("r1"); - if (GetLinkPlayerDataExchangeStatusTimed() == 3) - { - sub_800832C(); - MenuZeroFillWindowRect(6, 5, 23, 8); - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - ptr = (u8 *)&gMain; - offset1 = offsetof(struct Main, state); - asm("" ::: "r1"); - ptr += offset1; - *ptr = 13; - } - else if (CheckLanguageMatch()) - { - register u8 *ptr2 asm("r1"); - register int offset3 asm("r0"); - register int dummy asm("r2"); - sub_8072044(gSystemText_DontCutLink); - ptr2 = (u8 *)&gMain; - offset3 = offsetof(struct Main, state); - if (dummy) - dummy++; - ptr2 += offset3; - (*ptr2)++; - break; - } - else - { - CloseLink(); - MenuZeroFillWindowRect(6, 5, 23, 8); - label: - GetEventLoadMessage(gStringVar4, 1); - sub_8072044(gStringVar4); - ptr = (u8 *)&gMain; - offset2 = offsetof(struct Main, state); - ptr += offset2; - *ptr = 13; - } + if (!gReceivedRemoteLinkPlayers) break; + + if (GetLinkPlayerDataExchangeStatusTimed() == 3) + { + sub_800832C(); + MenuZeroFillWindowRect(6, 5, 23, 8); + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + ptr = (u8 *)&gMain; + offset1 = offsetof(struct Main, state); + asm("" ::: "r1"); + ptr += offset1; + *ptr = 13; } - if (gMain.newKeys & B_BUTTON) + else if (CheckLanguageMatch()) { - PlaySE(SE_SELECT); - CloseLink(); - gMain.state = 15; + register u8 *ptr2 asm("r1"); + register int offset3 asm("r0"); + register int dummy asm("r2"); + sub_8072044(gSystemText_DontCutLink); + ptr2 = (u8 *)&gMain; + offset3 = offsetof(struct Main, state); + if (dummy) + dummy++; + ptr2 += offset3; + (*ptr2)++; break; } - break; -#endif - case 7: - if (MenuUpdateWindowText()) - gMain.state++; - break; - case 8: - if (GetBlockReceivedStatus()) + else { - ResetBlockReceivedFlags(); - gMain.state++; + CloseLink(); + MenuZeroFillWindowRect(6, 5, 23, 8); + label: + GetEventLoadMessage(gStringVar4, 1); + sub_8072044(gStringVar4); + ptr = (u8 *)&gMain; + offset2 = offsetof(struct Main, state); + ptr += offset2; + *ptr = 13; } break; - case 9: - gMain.state++; + } + if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + CloseLink(); + gMain.state = 15; break; - case 10: - sub_800832C(); + } + break; +#endif + case 7: + if (MenuUpdateWindowText()) gMain.state++; - break; - case 11: - if (gReceivedRemoteLinkPlayers) - break; - unkVal = sub_812613C(unk_2000000); - CpuFill32(0, unk_2000000, 0x7D4); - if (!GetEventLoadMessage(gStringVar4, unkVal)) - TrySavingData(NORMAL_SAVE); + break; + case 8: + if (GetBlockReceivedStatus()) + { + ResetBlockReceivedFlags(); gMain.state++; + } + break; + case 9: + gMain.state++; + break; + case 10: + sub_800832C(); + gMain.state++; + break; + case 11: + if (gReceivedRemoteLinkPlayers) break; - case 12: - sub_8072044(gStringVar4); + unkVal = sub_812613C(unk_2000000); + CpuFill32(0, unk_2000000, 0x7D4); + if (!GetEventLoadMessage(gStringVar4, unkVal)) + TrySavingData(NORMAL_SAVE); + gMain.state++; + break; + case 12: + sub_8072044(gStringVar4); + gMain.state++; + break; + case 13: + MenuZeroFillWindowRect(6, 5, 23, 8); + if (MenuUpdateWindowText()) + { gMain.state++; - break; - case 13: - MenuZeroFillWindowRect(6, 5, 23, 8); - if (MenuUpdateWindowText()) - { - gMain.state++; - gUnknown_02039338 = 0; - } - break; - case 14: - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - gMain.state++; - } - break; - case 15: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + gUnknown_02039338 = 0; + } + break; + case 14: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); gMain.state++; - break; - case 16: - if (!gPaletteFade.active) - DoSoftReset(); - break; + } + break; + case 15: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); + gMain.state++; + break; + case 16: + if (!gPaletteFade.active) + DoSoftReset(); + break; } if (gLinkStatus & 0x40) diff --git a/src/option_menu.c b/src/option_menu.c index 613012972..49ad98196 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -93,135 +93,135 @@ void CB2_InitOptionMenu(void) { switch (gMain.state) { - default: - case 0: + default: + case 0: + { + u8 *addr; + u32 size; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + addr = (u8 *)VRAM; + size = 0x18000; + while (1) { - u8 *addr; - u32 size; - - SetVBlankCallback(NULL); - REG_DISPCNT = 0; - REG_BG2CNT = 0; - REG_BG1CNT = 0; - REG_BG0CNT = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - addr = (u8 *)VRAM; - size = 0x18000; - while (1) + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } + DmaFill16(3, 0, addr, size); + break; } - DmaClear32(3, OAM, OAM_SIZE); - DmaClear16(3, PLTT, PLTT_SIZE); - gMain.state++; - break; - } - case 1: - ResetPaletteFade(); - remove_some_task(); - ResetTasks(); - ResetSpriteData(); - gMain.state++; - break; - case 2: - SetUpWindowConfig(&gWindowConfig_81E71B4); - gMain.state++; - break; - case 3: - MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4); - gMain.state++; - break; - case 4: - if (!MultistepInitMenuWindowContinue()) - return; - gMain.state++; - break; - case 5: - LoadPalette(gUnknown_0839F5FC, 0x80, 0x40); - CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40); - gMain.state++; - break; - case 6: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - gMain.state++; - break; - case 7: - { - u16 savedIme; - - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_WININ = 0x1111; - REG_WINOUT = 0x31; - REG_BLDCNT = 0xE1; - REG_BLDALPHA = 0; - REG_BLDY = 7; - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = savedIme; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(VBlankCB); - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | - DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; - gMain.state++; - break; - } - case 8: - { - u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0); - - gTasks[taskId].data[TD_MENUSELECTION] = 0; - gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed; - gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff; - gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle; - gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound; - gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode; - gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType; - - MenuDrawTextWindow(2, 0, 27, 3); - MenuDrawTextWindow(2, 4, 27, 19); - - MenuPrint(gSystemText_OptionMenu, 4, 1); - MenuPrint(gSystemText_TextSpeed, 4, 5); - MenuPrint(gSystemText_BattleScene, 4, 7); - MenuPrint(gSystemText_BattleStyle, 4, 9); - MenuPrint(gSystemText_Sound, 4, 11); - MenuPrint(gSystemText_ButtonMode, 4, 13); - MenuPrint(gSystemText_Frame, 4, 15); - MenuPrint(gSystemText_Cancel, 4, 17); - - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); - - REG_WIN0H = WIN_RANGE(17, 223); - REG_WIN0V = WIN_RANGE(1, 31); - - HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); - gMain.state++; - break; } - case 9: - SetMainCallback2(MainCB); + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state++; + break; + } + case 1: + ResetPaletteFade(); + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + gMain.state++; + break; + case 2: + SetUpWindowConfig(&gWindowConfig_81E71B4); + gMain.state++; + break; + case 3: + MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4); + gMain.state++; + break; + case 4: + if (!MultistepInitMenuWindowContinue()) return; + gMain.state++; + break; + case 5: + LoadPalette(gUnknown_0839F5FC, 0x80, 0x40); + CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40); + gMain.state++; + break; + case 6: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + gMain.state++; + break; + case 7: + { + u16 savedIme; + + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x1111; + REG_WINOUT = 0x31; + REG_BLDCNT = 0xE1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = savedIme; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + SetVBlankCallback(VBlankCB); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON | + DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + gMain.state++; + break; + } + case 8: + { + u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0); + + gTasks[taskId].data[TD_MENUSELECTION] = 0; + gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed; + gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff; + gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle; + gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound; + gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode; + gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType; + + MenuDrawTextWindow(2, 0, 27, 3); + MenuDrawTextWindow(2, 4, 27, 19); + + MenuPrint(gSystemText_OptionMenu, 4, 1); + MenuPrint(gSystemText_TextSpeed, 4, 5); + MenuPrint(gSystemText_BattleScene, 4, 7); + MenuPrint(gSystemText_BattleStyle, 4, 9); + MenuPrint(gSystemText_Sound, 4, 11); + MenuPrint(gSystemText_ButtonMode, 4, 13); + MenuPrint(gSystemText_Frame, 4, 15); + MenuPrint(gSystemText_Cancel, 4, 17); + + TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); + BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); + BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); + Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); + ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); + FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); + + REG_WIN0H = WIN_RANGE(17, 223); + REG_WIN0V = WIN_RANGE(1, 31); + + HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]); + gMain.state++; + break; + } + case 9: + SetMainCallback2(MainCB); + return; } } @@ -264,30 +264,30 @@ static void Task_OptionMenuProcessInput(u8 taskId) { switch (gTasks[taskId].data[TD_MENUSELECTION]) { - case MENUITEM_TEXTSPEED: - gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]); - TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); - break; - case MENUITEM_BATTLESCENE: - gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]); - BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); - break; - case MENUITEM_BATTLESTYLE: - gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]); - BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); - break; - case MENUITEM_SOUND: - gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]); - Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); - break; - case MENUITEM_BUTTONMODE: - gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]); - ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); - break; - case MENUITEM_FRAMETYPE: - gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]); - FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); - break; + case MENUITEM_TEXTSPEED: + gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]); + TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]); + break; + case MENUITEM_BATTLESCENE: + gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]); + BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]); + break; + case MENUITEM_BATTLESTYLE: + gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]); + BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]); + break; + case MENUITEM_SOUND: + gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]); + Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]); + break; + case MENUITEM_BUTTONMODE: + gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]); + ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]); + break; + case MENUITEM_FRAMETYPE: + gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]); + FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]); + break; } } } diff --git a/src/player_pc.c b/src/player_pc.c index f0f0709b1..048c79862 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -784,17 +784,17 @@ void sub_813ABE8(u8 taskId) switch(GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1) { - case 0: - case 1: - case 3: - sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; - case 4: - sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; - case 2: - sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; + case 0: + case 1: + case 3: + sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; + case 4: + sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; + case 2: + sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); + break; } } else @@ -809,15 +809,15 @@ beforeLabel: switch(data[1]) { - default: - CreateVerticalScrollIndicators(0, 0xB8, 8); - break; + default: + CreateVerticalScrollIndicators(0, 0xB8, 8); + break; weirdCase: - sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1); - goto beforeLabel; - case 0: - DestroyVerticalScrollIndicator(0); - break; + sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1); + goto beforeLabel; + case 0: + DestroyVerticalScrollIndicator(0); + break; } if(data[1] + data[4] <= data[2]) diff --git a/src/pokedex.c b/src/pokedex.c index 5ea1f9938..03a7d916a 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -207,97 +207,97 @@ void CB2_InitPokedex(void) { switch (gMain.state) { - case 0: - default: - { - u8 *addr; - u32 size; + case 0: + default: + { + u8 *addr; + u32 size; - SetVBlankCallback(NULL); - sub_8091060(0); - addr = (u8 *)VRAM; - size = VRAM_SIZE; - while (1) + SetVBlankCallback(NULL); + sub_8091060(0); + addr = (u8 *)VRAM; + size = VRAM_SIZE; + while (1) + { + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } + DmaFill16(3, 0, addr, size); + break; } - DmaClear32(3, OAM, OAM_SIZE); - DmaClear16(3, PLTT, PLTT_SIZE); - gMain.state = 1; - break; } + DmaClear32(3, OAM, OAM_SIZE); + DmaClear16(3, PLTT, PLTT_SIZE); + gMain.state = 1; + break; + } + case 1: + remove_some_task(); + ResetTasks(); + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + SetUpWindowConfig(&gWindowConfig_81E7048); + InitMenuWindow(&gWindowConfig_81E7048); + gMain.state++; + break; + case 2: + switch (Random() & 3) + { + case 0: + default: + gPokedexView = (struct PokedexView *)0x02018000; + break; case 1: - remove_some_task(); - ResetTasks(); - ResetSpriteData(); - ResetPaletteFade(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 8; - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); - gMain.state++; + gPokedexView = (struct PokedexView *)0x02018800; break; case 2: - switch (Random() & 3) - { - case 0: - default: - gPokedexView = (struct PokedexView *)0x02018000; - break; - case 1: - gPokedexView = (struct PokedexView *)0x02018800; - break; - case 2: - gPokedexView = (struct PokedexView *)0x02019000; - break; - case 3: - gPokedexView = (struct PokedexView *)0x02019800; - break; - } - ClearPokedexView(gPokedexView); - CreateTask(Task_PokedexShowMainScreen, 0); - gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1; - if (!IsNationalPokedexEnabled()) - gPokedexView->dexMode = DEX_MODE_HOENN; - gPokedexView->dexOrder = gSaveBlock2.pokedex.order; - gPokedexView->selectedPokemon = gUnknown_0202FFB8; - gPokedexView->unk62C = gUnknown_0202FFBA; - gPokedexView->selectedScreen = PAGE_SCREEN; - gPokedexView->unk64E = 0; - if (!IsNationalPokedexEnabled()) - { - gPokedexView->unk61A = GetHoennPokedexCount(0); - gPokedexView->unk61C = GetHoennPokedexCount(1); - } - else - { - gPokedexView->unk61A = GetNationalPokedexCount(0); - gPokedexView->unk61C = GetNationalPokedexCount(1); - } - gPokedexView->unk62D = 8; - gMain.state++; + gPokedexView = (struct PokedexView *)0x02019000; break; case 3: + gPokedexView = (struct PokedexView *)0x02019800; + break; + } + ClearPokedexView(gPokedexView); + CreateTask(Task_PokedexShowMainScreen, 0); + gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1; + if (!IsNationalPokedexEnabled()) + gPokedexView->dexMode = DEX_MODE_HOENN; + gPokedexView->dexOrder = gSaveBlock2.pokedex.order; + gPokedexView->selectedPokemon = gUnknown_0202FFB8; + gPokedexView->unk62C = gUnknown_0202FFBA; + gPokedexView->selectedScreen = PAGE_SCREEN; + gPokedexView->unk64E = 0; + if (!IsNationalPokedexEnabled()) { - u16 savedIme; - - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= 1; - REG_IME = savedIme; - REG_DISPSTAT |= 8; - SetVBlankCallback(sub_808C0B8); - SetMainCallback2(MainCB); - SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); - m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80); + gPokedexView->unk61A = GetHoennPokedexCount(0); + gPokedexView->unk61C = GetHoennPokedexCount(1); + } + else + { + gPokedexView->unk61A = GetNationalPokedexCount(0); + gPokedexView->unk61C = GetNationalPokedexCount(1); } + gPokedexView->unk62D = 8; + gMain.state++; + break; + case 3: + { + u16 savedIme; + + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIme; + REG_DISPSTAT |= 8; + SetVBlankCallback(sub_808C0B8); + SetMainCallback2(MainCB); + SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80); + } } } @@ -423,29 +423,29 @@ void Task_PokedexMainScreenMenu(u8 taskId) { switch (gPokedexView->menuCursorPos) { - case 0: //BACK TO LIST - default: - gMain.newKeys |= START_BUTTON; //Exit menu - break; - case 1: //LIST TOP - gPokedexView->selectedPokemon = 0; - gPokedexView->unk62C = 0x40; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; //Exit menu - break; - case 2: //LIST BOTTOM - gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; - gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; //Exit menu - break; - case 3: //CLOSE POKEDEX - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_ClosePokedex; - PlaySE(SE_PC_OFF); - break; + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 1: //LIST TOP + gPokedexView->selectedPokemon = 0; + gPokedexView->unk62C = 0x40; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 2: //LIST BOTTOM + gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; + gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; //Exit menu + break; + case 3: //CLOSE POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_ClosePokedex; + PlaySE(SE_PC_OFF); + break; } } @@ -614,34 +614,34 @@ void Task_PokedexResultsScreenMenu(u8 taskId) { switch (gPokedexView->menuCursorPos) { - case 0: //BACK TO LIST - default: - gMain.newKeys |= START_BUTTON; - break; - case 1: //LIST TOP - gPokedexView->selectedPokemon = 0; - gPokedexView->unk62C = 0x40; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; - break; - case 2: //LIST BOTTOM - gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; - gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; - sub_808E82C(); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gMain.newKeys |= START_BUTTON; - break; - case 3: //BACK TO POKEDEX - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; - PlaySE(SE_TRACK_DOOR); - break; - case 4: //CLOSE POKEDEX - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex; - PlaySE(SE_PC_OFF); - break; + case 0: //BACK TO LIST + default: + gMain.newKeys |= START_BUTTON; + break; + case 1: //LIST TOP + gPokedexView->selectedPokemon = 0; + gPokedexView->unk62C = 0x40; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 2: //LIST BOTTOM + gPokedexView->selectedPokemon = gPokedexView->unk60C - 1; + gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30; + sub_808E82C(); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gMain.newKeys |= START_BUTTON; + break; + case 3: //BACK TO POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen; + PlaySE(SE_TRACK_DOOR); + break; + case 4: //CLOSE POKEDEX + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex; + PlaySE(SE_PC_OFF); + break; } } @@ -726,83 +726,83 @@ bool8 sub_808D344(u8 a) { switch (gMain.state) { - case 0: - default: - if (gPaletteFade.active) - return 0; - //_0808D39E - SetVBlankCallback(NULL); - gPokedexView->unk64A = a; - sub_8091060(0); - REG_BG2VOFS = gPokedexView->unk62D; - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM)); - LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800)); - LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800)); - DmaClear16(3, VRAM + 0x6000, 0x500); - if (a == 0) - LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500)); - else - LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500)); - ResetPaletteFade(); - if (a == 0) - gPokedexView->unk64C_1 = 0; - else - gPokedexView->unk64C_1 = 1; - sub_808D640(); - gMain.state = 1; - break; - case 1: - ResetSpriteData(); - FreeAllSpritePalettes(); - gReservedSpritePaletteCount = 8; - LoadCompressedObjectPic(&gUnknown_083A05CC); - LoadSpritePalettes(gUnknown_083A05DC); - sub_808E978(a); - gMain.state++; - break; - case 2: - SetUpWindowConfig(&gWindowConfig_81E7048); - InitMenuWindow(&gWindowConfig_81E7048); - LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); - gMain.state++; - break; - case 3: - if (a == 0) - SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); - sub_808E0CC(gPokedexView->selectedPokemon, 0xE); - gPokedexView->menuIsOpen = 0; - gPokedexView->menuY = 0; - gMain.state++; - break; - case 4: - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - SetVBlankCallback(sub_808C0B8); - gMain.state++; - break; - case 5: - REG_WININ = 0x3F3F; - REG_WINOUT = 0x1D3F; - REG_WIN0H = 0; - REG_WIN0V = 0; - REG_WIN1H = 0; - REG_WIN1V = 0; - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON; - gMain.state++; - break; - case 6: - if (!gPaletteFade.active) - { - gMain.state = 0; - return 1; - } - else - return 0; + case 0: + default: + if (gPaletteFade.active) + return 0; + //_0808D39E + SetVBlankCallback(NULL); + gPokedexView->unk64A = a; + sub_8091060(0); + REG_BG2VOFS = gPokedexView->unk62D; + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM)); + LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800)); + LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800)); + DmaClear16(3, VRAM + 0x6000, 0x500); + if (a == 0) + LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500)); + else + LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500)); + ResetPaletteFade(); + if (a == 0) + gPokedexView->unk64C_1 = 0; + else + gPokedexView->unk64C_1 = 1; + sub_808D640(); + gMain.state = 1; + break; + case 1: + ResetSpriteData(); + FreeAllSpritePalettes(); + gReservedSpritePaletteCount = 8; + LoadCompressedObjectPic(&gUnknown_083A05CC); + LoadSpritePalettes(gUnknown_083A05DC); + sub_808E978(a); + gMain.state++; + break; + case 2: + SetUpWindowConfig(&gWindowConfig_81E7048); + InitMenuWindow(&gWindowConfig_81E7048); + LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80)); + gMain.state++; + break; + case 3: + if (a == 0) + SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder); + sub_808E0CC(gPokedexView->selectedPokemon, 0xE); + gPokedexView->menuIsOpen = 0; + gPokedexView->menuY = 0; + gMain.state++; + break; + case 4: + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetVBlankCallback(sub_808C0B8); + gMain.state++; + break; + case 5: + REG_WININ = 0x3F3F; + REG_WINOUT = 0x1D3F; + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON; + gMain.state++; + break; + case 6: + if (!gPaletteFade.active) + { + gMain.state = 0; + return 1; + } + else + return 0; } return 0; } @@ -826,136 +826,136 @@ void SortPokedex(u8 dexMode, u8 sortMode) switch (dexMode) { - default: - case DEX_MODE_HOENN: + default: + case DEX_MODE_HOENN: + vars[0] = 202; + vars[1] = 1; + break; + case DEX_MODE_NATIONAL: + if (IsNationalPokedexEnabled()) + { + vars[0] = 386; + vars[1] = 0; + } + else + { vars[0] = 202; vars[1] = 1; - break; - case DEX_MODE_NATIONAL: - if (IsNationalPokedexEnabled()) - { - vars[0] = 386; - vars[1] = 0; - } - else - { - vars[0] = 202; - vars[1] = 1; - } - break; + } + break; } switch (sortMode) { - case 0: + case 0: + { + if (vars[1]) { - if (vars[1]) + for (i = 0; i < vars[0]; i++) { - for (i = 0; i < vars[0]; i++) - { - vars[2] = HoennToNationalOrder(i + 1); - gPokedexView->unk0[i].dexNum = vars[2]; - gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1); - if (gPokedexView->unk0[i].seen) - gPokedexView->unk60C = i + 1; - } + vars[2] = HoennToNationalOrder(i + 1); + gPokedexView->unk0[i].dexNum = vars[2]; + gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0); + gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1); + if (gPokedexView->unk0[i].seen) + gPokedexView->unk60C = i + 1; } - else - { - bool32 r10; - s16 r5; + } + else + { + bool32 r10; + s16 r5; - r10 = r5 = i = 0; - for (i = 0; i < vars[0]; i++) + r10 = r5 = i = 0; + for (i = 0; i < vars[0]; i++) + { + vars[2] = i + 1; + if (sub_8090D90(vars[2], 0)) + r10 = 1; + if (r10) { - vars[2] = i + 1; - if (sub_8090D90(vars[2], 0)) - r10 = 1; - if (r10) - { - asm(""); //Needed to match for some reason - gPokedexView->unk0[r5].dexNum = vars[2]; - gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1); - if (gPokedexView->unk0[r5].seen) - gPokedexView->unk60C = r5 + 1; - r5++; - } + asm(""); //Needed to match for some reason + gPokedexView->unk0[r5].dexNum = vars[2]; + gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0); + gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1); + if (gPokedexView->unk0[r5].seen) + gPokedexView->unk60C = r5 + 1; + r5++; } } - break; } - case 1: - for (i = 0; i < 411; i++) - { - vars[2] = gPokedexOrder_Alphabetical[i]; + break; + } + case 1: + for (i = 0; i < 411; i++) + { + vars[2] = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1); - gPokedexView->unk60C++; - } - } - break; - case 2: - for (i = 385; i >= 0; i--) + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0)) { - vars[2] = gPokedexOrder_Weight[i]; - - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk60C++; } - break; - case 3: - for (i = 0; i < 386; i++) - { - vars[2] = gPokedexOrder_Weight[i]; + } + break; + case 2: + for (i = 385; i >= 0; i--) + { + vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } - } - break; - case 4: - for (i = 385; i >=0; i--) + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - vars[2] = gPokedexOrder_Height[i]; + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; + } + } + break; + case 3: + for (i = 0; i < 386; i++) + { + vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + { + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; } - break; - case 5: - for (i = 0; i < 386; i++) + } + break; + case 4: + for (i = 385; i >=0; i--) + { + vars[2] = gPokedexOrder_Height[i]; + + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) { - vars[2] = gPokedexOrder_Height[i]; + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; + } + } + break; + case 5: + for (i = 0; i < 386; i++) + { + vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) - { - gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; - gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = 1; - gPokedexView->unk60C++; - } + if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + { + gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; + gPokedexView->unk0[gPokedexView->unk60C].seen = 1; + gPokedexView->unk0[gPokedexView->unk60C].owned = 1; + gPokedexView->unk60C++; } - break; + } + break; } for (i = gPokedexView->unk60C; i < 386; i++) { @@ -969,87 +969,87 @@ void sub_808DBE8(u8 a, u16 b, u16 c) { switch (a) { - case 0: - default: - { - u16 i; - s16 _b = b - 5; + case 0: + default: + { + u16 i; + s16 _b = b - 5; - for (i = 0; i <= 10; i++) - { - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) - sub_808E090(0x11, i * 2, c); - else - { - sub_808E090(0x11, i * 2, c); - if (gPokedexView->unk0[_b].seen) - { - sub_808DEB0(_b, 0x12, i * 2, c); - sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c); - sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2); - } - else - { - sub_808DEB0(_b, 0x12, i * 2, c); - sub_808DF88(0, 0x11, i * 2, c); - sub_808DFE4(0, 0x17, i * 2); - } - } - _b++; - } - break; - } - case 1: + for (i = 0; i <= 10; i++) { - s16 _b = b - 5; - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) - sub_808E090(0x11, gPokedexView->unk630 * 2, c); + sub_808E090(0x11, i * 2, c); else { - sub_808E090(0x11, gPokedexView->unk630 * 2, c); + sub_808E090(0x11, i * 2, c); if (gPokedexView->unk0[_b].seen) { - sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); - sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c); - sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2); + sub_808DEB0(_b, 0x12, i * 2, c); + sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c); + sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2); } else { - sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); - sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c); - sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2); + sub_808DEB0(_b, 0x12, i * 2, c); + sub_808DF88(0, 0x11, i * 2, c); + sub_808DFE4(0, 0x17, i * 2); } } - break; + _b++; } - case 2: + break; + } + case 1: + { + s16 _b = b - 5; + + if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) + sub_808E090(0x11, gPokedexView->unk630 * 2, c); + else { - s16 _b = b + 5; - u16 r2 = gPokedexView->unk630 + 10; + sub_808E090(0x11, gPokedexView->unk630 * 2, c); + if (gPokedexView->unk0[_b].seen) + { + sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); + sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c); + sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2); + } + else + { + sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c); + sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c); + sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2); + } + } + break; + } + case 2: + { + s16 _b = b + 5; + u16 r2 = gPokedexView->unk630 + 10; - if (r2 > 15) - r2 -= 16; - if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) - sub_808E090(0x11, r2 * 2, c); + if (r2 > 15) + r2 -= 16; + if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF) + sub_808E090(0x11, r2 * 2, c); + else + { + sub_808E090(0x11, r2 * 2, c); + if (gPokedexView->unk0[_b].seen) + { + sub_808DEB0(_b, 0x12, r2 * 2, c); + sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c); + sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2); + } else { - sub_808E090(0x11, r2 * 2, c); - if (gPokedexView->unk0[_b].seen) - { - sub_808DEB0(_b, 0x12, r2 * 2, c); - sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c); - sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2); - } - else - { - sub_808DEB0(_b, 0x12, r2 * 2, c); - sub_808DF88(0, 0x11, r2 * 2, c); - sub_808DFE4(0, 0x17, r2 * 2); - } + sub_808DEB0(_b, 0x12, r2 * 2, c); + sub_808DF88(0, 0x11, r2 * 2, c); + sub_808DFE4(0, 0x17, r2 * 2); } - break; } + break; + } } } @@ -1268,26 +1268,26 @@ bool8 sub_808E208(u8 a, u8 b, u8 c) gPokedexView->unk62E--; switch (a) { - case 1: - for (i = 0; i < 4; i++) - { - if (gPokedexView->unk61E[i] != 0xFFFF) - gSprites[gPokedexView->unk61E[i]].data5 += b; - } - foo = 16 * (c - gPokedexView->unk62E) / c; - REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo; - gPokedexView->unk62C -= gPokedexView->unk628; - break; - case 2: - for (i = 0; i < 4; i++) - { - if (gPokedexView->unk61E[i] != 0xFFFF) - gSprites[gPokedexView->unk61E[i]].data5 -= b; - } - foo = 16 * (c - gPokedexView->unk62E) / c; - REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo; - gPokedexView->unk62C += gPokedexView->unk628; - break; + case 1: + for (i = 0; i < 4; i++) + { + if (gPokedexView->unk61E[i] != 0xFFFF) + gSprites[gPokedexView->unk61E[i]].data5 += b; + } + foo = 16 * (c - gPokedexView->unk62E) / c; + REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo; + gPokedexView->unk62C -= gPokedexView->unk628; + break; + case 2: + for (i = 0; i < 4; i++) + { + if (gPokedexView->unk61E[i] != 0xFFFF) + gSprites[gPokedexView->unk61E[i]].data5 -= b; + } + foo = 16 * (c - gPokedexView->unk62E) / c; + REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo; + gPokedexView->unk62C += gPokedexView->unk628; + break; } return 0; } @@ -1307,36 +1307,36 @@ void sub_808E398(u8 a, u16 b) gPokedexView->unk632 = gPokedexView->unk630; switch (a) { - case 1: + case 1: + { + unk = sub_808E888(b - 1); + if (unk != 0xFFFF) { - unk = sub_808E888(b - 1); - if (unk != 0xFFFF) - { - spriteId = sub_808E8C8(unk, 0x60, 0x50); - gSprites[spriteId].callback = sub_808EE28; - gSprites[spriteId].data5 = 0xFFC0; - } - if (gPokedexView->unk630 > 0) - gPokedexView->unk630--; - else - gPokedexView->unk630 = 0xF; - break; + spriteId = sub_808E8C8(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_808EE28; + gSprites[spriteId].data5 = 0xFFC0; } - case 2: + if (gPokedexView->unk630 > 0) + gPokedexView->unk630--; + else + gPokedexView->unk630 = 0xF; + break; + } + case 2: + { + unk = sub_808E888(b + 1); + if (unk != 0xFFFF) { - unk = sub_808E888(b + 1); - if (unk != 0xFFFF) - { - spriteId = sub_808E8C8(unk, 0x60, 0x50); - gSprites[spriteId].callback = sub_808EE28; - gSprites[spriteId].data5 = 0x40; - } - if (gPokedexView->unk630 <= 0xE) - gPokedexView->unk630++; - else - gPokedexView->unk630 = 0; - break; + spriteId = sub_808E8C8(unk, 0x60, 0x50); + gSprites[spriteId].callback = sub_808EE28; + gSprites[spriteId].data5 = 0x40; } + if (gPokedexView->unk630 <= 0xE) + gPokedexView->unk630++; + else + gPokedexView->unk630 = 0; + break; + } } } #ifdef NONMATCHING @@ -2206,126 +2206,126 @@ void Task_InitPageScreenMultistep(u8 taskId) { switch (gMain.state) { - case 0: - default: - if (!gPaletteFade.active) - { - u16 r2; - - gPokedexView->unk64A = 1; - gPokedexView->unk64E = 0; - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - r2 = 0; - if (gTasks[taskId].data[1] != 0) - r2 += 0x1000; - if (gTasks[taskId].data[2] != 0) - r2 |= 0x200; - sub_8091060(r2); - gMain.state = 1; - } - break; - case 1: - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); - LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); - sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC); - gMain.state++; - break; - case 2: - sub_80904FC(0xD); - sub_8090584(gPokedexView->selectedScreen, 0xD); - sub_808D640(); - gMain.state++; - break; - case 3: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); - gMain.state++; - break; - case 4: - if (gPokedexView->dexMode == DEX_MODE_HOENN) - sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3); - else - sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3); - //_0808F45A - sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3); - MenuPrint(gDexText_UnknownPoke, 11, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); - if (gUnknown_0202FFBC->owned) - { - sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5); - sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7); - sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); - sub_80917CC(14, 0x3FC); - } - //_0808F50C - else - { - MenuPrint(gUnknown_083A05F8, 2, 13); - LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); - } - gMain.state++; - break; - case 5: - if (gTasks[taskId].data[1] == 0) - { - //_0808F540 - gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); - gSprites[gTasks[taskId].data[4]].oam.priority = 0; - } - gMain.state++; - break; - case 6: + case 0: + default: + if (!gPaletteFade.active) { - u32 r3 = 0; + u16 r2; - if (gTasks[taskId].data[2] != 0) - r3 = 0x14; + gPokedexView->unk64A = 1; + gPokedexView->unk64E = 0; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + r2 = 0; if (gTasks[taskId].data[1] != 0) - { - r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10)); - } - BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); - gMain.state++; - break; + r2 += 0x1000; + if (gTasks[taskId].data[2] != 0) + r2 |= 0x200; + sub_8091060(r2); + gMain.state = 1; } - case 7: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + break; + case 1: + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); + LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); + sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC); + gMain.state++; + break; + case 2: + sub_80904FC(0xD); + sub_8090584(gPokedexView->selectedScreen, 0xD); + sub_808D640(); + gMain.state++; + break; + case 3: + SetUpWindowConfig(&gWindowConfig_81E7064); + InitMenuWindow(&gWindowConfig_81E7064); + gMain.state++; + break; + case 4: + if (gPokedexView->dexMode == DEX_MODE_HOENN) + sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3); + else + sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3); + //_0808F45A + sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3); + MenuPrint(gDexText_UnknownPoke, 11, 5); + MenuPrint(gDexText_UnknownHeight, 16, 7); + MenuPrint(gDexText_UnknownWeight, 16, 9); + if (gUnknown_0202FFBC->owned) + { + sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5); + sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7); + sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9); + MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13); + sub_80917CC(14, 0x3FC); + } + //_0808F50C + else + { + MenuPrint(gUnknown_083A05F8, 2, 13); + LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E); + } + gMain.state++; + break; + case 5: + if (gTasks[taskId].data[1] == 0) + { + //_0808F540 + gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + } + gMain.state++; + break; + case 6: + { + u32 r3 = 0; + + if (gTasks[taskId].data[2] != 0) + r3 = 0x14; + if (gTasks[taskId].data[1] != 0) + { + r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10)); + } + BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gMain.state++; + break; + } + case 7: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + gMain.state++; + break; + case 8: + if (!gPaletteFade.active) + { gMain.state++; - break; - case 8: - if (!gPaletteFade.active) + if (gTasks[taskId].data[3] == 0) { - gMain.state++; - if (gTasks[taskId].data[3] == 0) - { - StopCryAndClearCrySongs(); - PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA); - } - else - gMain.state++; + StopCryAndClearCrySongs(); + PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA); } - break; - case 9: - if (!IsCryPlayingOrClearCrySongs()) + else gMain.state++; - break; - case 10: - gTasks[taskId].data[0] = 0; - gTasks[taskId].data[1] = 0; - gTasks[taskId].data[2] = 1; - gTasks[taskId].data[3] = 1; - gTasks[taskId].func = Task_PageScreenProcessInput; - gMain.state = 0; - break; + } + break; + case 9: + if (!IsCryPlayingOrClearCrySongs()) + gMain.state++; + break; + case 10: + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 1; + gTasks[taskId].data[3] = 1; + gTasks[taskId].func = Task_PageScreenProcessInput; + gMain.state = 0; + break; } } @@ -2462,99 +2462,99 @@ void Task_InitCryScreenMultistep(u8 taskId) { switch (gMain.state) { - case 0: - default: - if (!gPaletteFade.active) - { - m4aMPlayStop(&gMPlay_BGM); - gPokedexView->unk64A = 6; - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - sub_8091060(0x200); - gPokedexView->selectedScreen = CRY_SCREEN; - gMain.state = 1; - } - break; - case 1: - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); - LZ77UnCompVram(gUnknown_0839F8A0, (void *)(VRAM + 0x7000)); - gMain.state++; - break; - case 2: - sub_8090540(0xD); - sub_8090644(2, 0xD); - sub_808D640(); - DmaClear16(3, (void *)(VRAM + 0xF800), 0x500); - gMain.state++; - break; - case 3: - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); - ResetPaletteFade(); - gMain.state++; - break; - case 4: - MenuPrint(gDexText_CryOf, 10, 4); - sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2); - gMain.state++; - break; - case 5: - gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); - gSprites[gTasks[taskId].data[4]].oam.priority = 0; - gUnknown_03005E98 = 0; - gMain.state++; - break; - case 6: + case 0: + default: + if (!gPaletteFade.active) { - struct CryRelatedStruct sp8; - - sp8.unk0 = 0x4020; - sp8.unk2 = 0x1F; - sp8.paletteNo = 8; - sp8.yPos = 0x1E; - sp8.xPos = 0xC; - if (sub_8119E3C(&sp8, 0) != 0) - { - gMain.state++; - gUnknown_03005E98 = 0; - } - break; + m4aMPlayStop(&gMPlay_BGM); + gPokedexView->unk64A = 6; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_8091060(0x200); + gPokedexView->selectedScreen = CRY_SCREEN; + gMain.state = 1; } - case 7: - { - struct CryRelatedStruct sp10; + break; + case 1: + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); + LZ77UnCompVram(gUnknown_0839F8A0, (void *)(VRAM + 0x7000)); + gMain.state++; + break; + case 2: + sub_8090540(0xD); + sub_8090644(2, 0xD); + sub_808D640(); + DmaClear16(3, (void *)(VRAM + 0xF800), 0x500); + gMain.state++; + break; + case 3: + SetUpWindowConfig(&gWindowConfig_81E702C); + InitMenuWindow(&gWindowConfig_81E702C); + ResetPaletteFade(); + gMain.state++; + break; + case 4: + MenuPrint(gDexText_CryOf, 10, 4); + sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2); + gMain.state++; + break; + case 5: + gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0); + gSprites[gTasks[taskId].data[4]].oam.priority = 0; + gUnknown_03005E98 = 0; + gMain.state++; + break; + case 6: + { + struct CryRelatedStruct sp8; - sp10.unk0 = 0x3000; - sp10.unk2 = 0xE; - sp10.paletteNo = 9; - sp10.xPos = 0x12; - sp10.yPos = 3; - if (ShowPokedexCryScreen(&sp10, 1) != 0) - { - gMain.state++; - } - break; - } - case 8: - BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); + sp8.unk0 = 0x4020; + sp8.unk2 = 0x1F; + sp8.paletteNo = 8; + sp8.yPos = 0x1E; + sp8.xPos = 0xC; + if (sub_8119E3C(&sp8, 0) != 0) + { gMain.state++; - break; - case 9: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gUnknown_03005E98 = 0; + } + break; + } + case 7: + { + struct CryRelatedStruct sp10; + + sp10.unk0 = 0x3000; + sp10.unk2 = 0xE; + sp10.paletteNo = 9; + sp10.xPos = 0x12; + sp10.yPos = 3; + if (ShowPokedexCryScreen(&sp10, 1) != 0) + { gMain.state++; - break; - case 10: - gPokedexView->unk64F = 0; - gMain.state = 0; - gTasks[taskId].func = Task_CryScreenProcessInput; - break; + } + break; + } + case 8: + BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gMain.state++; + break; + case 9: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON; + gMain.state++; + break; + case 10: + gPokedexView->unk64F = 0; + gMain.state = 0; + gTasks[taskId].func = Task_CryScreenProcessInput; + break; } } @@ -2616,15 +2616,15 @@ void sub_808FFBC(u8 taskId) DestroyCryMeterNeedleSprite(); switch (gPokedexView->unk64F) { - default: - case 1: - gTasks[taskId].func = Task_InitPageScreenMultistep; - break; - case 2: - gTasks[taskId].func = Task_InitAreaScreenMultistep; - break; - case 3: - gTasks[taskId].func = Task_InitSizeScreenMultistep; + default: + case 1: + gTasks[taskId].func = Task_InitPageScreenMultistep; + break; + case 2: + gTasks[taskId].func = Task_InitAreaScreenMultistep; + break; + case 3: + gTasks[taskId].func = Task_InitSizeScreenMultistep; } } } @@ -2646,87 +2646,87 @@ void Task_InitSizeScreenMultistep(u8 taskId) switch (gMain.state) { - default: - case 0: - if (!gPaletteFade.active) - { - gPokedexView->unk64A = 7; - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - sub_8091060(0x200); - gPokedexView->selectedScreen = SIZE_SCREEN; - gMain.state = 1; - } - break; - case 1: - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); - LZ77UnCompVram(gUnknown_0839F988, (void *)(VRAM + 0x7000)); - gMain.state++; - break; - case 2: - sub_8090540(0xD); - sub_8090644(3, 0xD); - sub_808D640(); - gMain.state++; - break; - case 3: + default: + case 0: + if (!gPaletteFade.active) { - u8 string[40]; //I hope this is the correct size + gPokedexView->unk64A = 7; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_8091060(0x200); + gPokedexView->selectedScreen = SIZE_SCREEN; + gMain.state = 1; + } + break; + case 1: + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM); + LZ77UnCompVram(gUnknown_0839F988, (void *)(VRAM + 0x7000)); + gMain.state++; + break; + case 2: + sub_8090540(0xD); + sub_8090644(3, 0xD); + sub_808D640(); + gMain.state++; + break; + case 3: + { + u8 string[40]; //I hope this is the correct size - SetUpWindowConfig(&gWindowConfig_81E702C); - InitMenuWindow(&gWindowConfig_81E702C); - string[0] = EOS; - StringAppend(string, gDexText_SizeComparedTo); - StringAppend(string, gSaveBlock2.playerName); - sub_8072BD8(string, 3, 15, 0xC0); - gMain.state++; - break; + SetUpWindowConfig(&gWindowConfig_81E702C); + InitMenuWindow(&gWindowConfig_81E702C); + string[0] = EOS; + StringAppend(string, gDexText_SizeComparedTo); + StringAppend(string, gSaveBlock2.playerName); + sub_8072BD8(string, 3, 15, 0xC0); + gMain.state++; + break; + } + case 4: + ResetPaletteFade(); + gMain.state++; + break; + case 5: + spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 1; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset; + SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale); + LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + gMain.state++; + break; + case 6: + spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1); + gSprites[spriteId].oam.affineMode = 1; + gSprites[spriteId].oam.matrixNum = 2; + gSprites[spriteId].oam.priority = 0; + gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset; + SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale); + LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); + gMain.state++; + break; + case 7: + BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gMain.state++; + break; + case 8: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + gMain.state++; + break; + case 9: + if (!gPaletteFade.active) + { + gPokedexView->unk64F = 0; + gMain.state = 0; + gTasks[taskId].func = Task_SizeScreenProcessInput; } - case 4: - ResetPaletteFade(); - gMain.state++; - break; - case 5: - spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0); - gSprites[spriteId].oam.affineMode = 1; - gSprites[spriteId].oam.matrixNum = 1; - gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset; - SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale); - LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); - gMain.state++; - break; - case 6: - spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1); - gSprites[spriteId].oam.affineMode = 1; - gSprites[spriteId].oam.matrixNum = 2; - gSprites[spriteId].oam.priority = 0; - gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset; - SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale); - LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20); - gMain.state++; - break; - case 7: - BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); - gMain.state++; - break; - case 8: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; - gMain.state++; - break; - case 9: - if (!gPaletteFade.active) - { - gPokedexView->unk64F = 0; - gMain.state = 0; - gTasks[taskId].func = Task_SizeScreenProcessInput; - } - break; + break; } } @@ -3094,81 +3094,81 @@ void sub_8090750(u8 taskId) switch (gTasks[taskId].data[0]) { - default: - case 0: - if (!gPaletteFade.active) - { - gUnknown_03005CEC = gMain.vblankCallback; - SetVBlankCallback(NULL); - sub_8091060(0x100); - gTasks[taskId].data[0] = 1; - } - break; - case 1: + default: + case 0: + if (!gPaletteFade.active) { - u16 i; - - LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000)); - LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); - for (i = 0; i < 0x280; i++) - ((u16 *)(VRAM + 0x7800))[i] += 0x2000; - sub_8091738(gTasks[taskId].data[1], 2, 0x3FC); - ResetPaletteFade(); - LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E); - gTasks[taskId].data[0]++; - break; + gUnknown_03005CEC = gMain.vblankCallback; + SetVBlankCallback(NULL); + sub_8091060(0x100); + gTasks[taskId].data[0] = 1; } - case 2: - SetUpWindowConfig(&gWindowConfig_81E7064); - InitMenuWindow(&gWindowConfig_81E7064); - DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); - gTasks[taskId].data[0]++; - break; - case 3: - sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0); - if (!IsNationalPokedexEnabled()) - sub_8091154(NationalToHoennOrder(dexNum), 13, 3); - else - sub_8091154(dexNum, 13, 3); - sub_80911C8(dexNum, 16, 3); - MenuPrint(gDexText_UnknownPoke, 11, 5); - MenuPrint(gDexText_UnknownHeight, 16, 7); - MenuPrint(gDexText_UnknownWeight, 16, 9); - sub_8091304(&gPokedexEntries[dexNum], 11, 5); - sub_8091458(gPokedexEntries[dexNum].height, 16, 7); - sub_8091564(gPokedexEntries[dexNum].weight, 16, 9); - MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13); - sub_80917CC(14, 0x3FC); - gTasks[taskId].data[0]++; - break; - case 4: - { - u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0); + break; + case 1: + { + u16 i; - gSprites[spriteId].oam.priority = 0; - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - SetVBlankCallback(gUnknown_03005CEC); - gTasks[taskId].data[3] = spriteId; - gTasks[taskId].data[0]++; - break; + LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000)); + LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800)); + for (i = 0; i < 0x280; i++) + ((u16 *)(VRAM + 0x7800))[i] += 0x2000; + sub_8091738(gTasks[taskId].data[1], 2, 0x3FC); + ResetPaletteFade(); + LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E); + gTasks[taskId].data[0]++; + break; + } + case 2: + SetUpWindowConfig(&gWindowConfig_81E7064); + InitMenuWindow(&gWindowConfig_81E7064); + DmaClear16(3, (void *)(VRAM + 0xC000), 0x200); + gTasks[taskId].data[0]++; + break; + case 3: + sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0); + if (!IsNationalPokedexEnabled()) + sub_8091154(NationalToHoennOrder(dexNum), 13, 3); + else + sub_8091154(dexNum, 13, 3); + sub_80911C8(dexNum, 16, 3); + MenuPrint(gDexText_UnknownPoke, 11, 5); + MenuPrint(gDexText_UnknownHeight, 16, 7); + MenuPrint(gDexText_UnknownWeight, 16, 9); + sub_8091304(&gPokedexEntries[dexNum], 11, 5); + sub_8091458(gPokedexEntries[dexNum].height, 16, 7); + sub_8091564(gPokedexEntries[dexNum].weight, 16, 9); + MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13); + sub_80917CC(14, 0x3FC); + gTasks[taskId].data[0]++; + break; + case 4: + { + u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0); + + gSprites[spriteId].oam.priority = 0; + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + SetVBlankCallback(gUnknown_03005CEC); + gTasks[taskId].data[3] = spriteId; + gTasks[taskId].data[0]++; + break; + } + case 5: + REG_BLDCNT = 0; + REG_BLDALPHA = 0; + REG_BLDY = 0; + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; + gTasks[taskId].data[0]++; + break; + case 6: + if (!gPaletteFade.active) + { + PlayCry1(NationalPokedexNumToSpecies(dexNum), 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[4] = 0; + gTasks[taskId].func = sub_8090A3C; } - case 5: - REG_BLDCNT = 0; - REG_BLDALPHA = 0; - REG_BLDY = 0; - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON; - gTasks[taskId].data[0]++; - break; - case 6: - if (!gPaletteFade.active) - { - PlayCry1(NationalPokedexNumToSpecies(dexNum), 0); - gTasks[taskId].data[2] = 0; - gTasks[taskId].data[4] = 0; - gTasks[taskId].func = sub_8090A3C; - } - break; + break; } } */ diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 3be11f453..31b66fd9a 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -417,307 +417,307 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data) switch (field) { - case MON_DATA_PERSONALITY: - retVal = boxMon->personality; - break; - case MON_DATA_OT_ID: - retVal = boxMon->otId; - break; - case MON_DATA_NICKNAME: + case MON_DATA_PERSONALITY: + retVal = boxMon->personality; + break; + case MON_DATA_OT_ID: + retVal = boxMon->otId; + break; + case MON_DATA_NICKNAME: + { + if (boxMon->isBadEgg) { - if (boxMon->isBadEgg) - { - StringCopy(data, gBadEggNickname); - retVal = StringLength(data); - } - else if (boxMon->isEgg) - { - StringCopy(data, gEggNickname); - retVal = StringLength(data); - } - else - { - retVal = 0; - - while (retVal < POKEMON_NAME_LENGTH && boxMon->nickname[retVal] != EOS) - { - data[retVal] = boxMon->nickname[retVal]; - retVal++; - } - - data[retVal] = EOS; - ConvertInternationalString(data, boxMon->language); - retVal = StringLength(data); - } - break; + StringCopy(data, gBadEggNickname); + retVal = StringLength(data); } - case MON_DATA_LANGUAGE: - retVal = boxMon->language; - break; - case MON_DATA_SANITY_BIT1: - retVal = boxMon->isBadEgg; - break; - case MON_DATA_SANITY_BIT2: - retVal = boxMon->hasSpecies; - break; - case MON_DATA_SANITY_BIT3: - retVal = boxMon->isEgg; - break; - case MON_DATA_OT_NAME: + else if (boxMon->isEgg) + { + StringCopy(data, gEggNickname); + retVal = StringLength(data); + } + else { retVal = 0; - while (retVal < OT_NAME_LENGTH && boxMon->otName[retVal] != EOS) + while (retVal < POKEMON_NAME_LENGTH && boxMon->nickname[retVal] != EOS) { - data[retVal] = boxMon->otName[retVal]; + data[retVal] = boxMon->nickname[retVal]; retVal++; } data[retVal] = EOS; - break; + ConvertInternationalString(data, boxMon->language); + retVal = StringLength(data); } - case MON_DATA_MARKINGS: - retVal = boxMon->markings; - break; - case MON_DATA_CHECKSUM: - retVal = boxMon->checksum; - break; - case MON_DATA_10: - retVal = boxMon->unknown; - break; - case MON_DATA_SPECIES: - retVal = boxMon->isBadEgg ? SPECIES_EGG : substruct0->species; - break; - case MON_DATA_HELD_ITEM: - retVal = substruct0->heldItem; - break; - case MON_DATA_EXP: - retVal = substruct0->experience; - break; - case MON_DATA_PP_BONUSES: - retVal = substruct0->ppBonuses; - break; - case MON_DATA_FRIENDSHIP: - retVal = substruct0->friendship; - break; - case MON_DATA_MOVE1: - case MON_DATA_MOVE2: - case MON_DATA_MOVE3: - case MON_DATA_MOVE4: - retVal = substruct1->moves[field - MON_DATA_MOVE1]; - break; - case MON_DATA_PP1: - case MON_DATA_PP2: - case MON_DATA_PP3: - case MON_DATA_PP4: - retVal = substruct1->pp[field - MON_DATA_PP1]; - break; - case MON_DATA_HP_EV: - retVal = substruct2->hpEV; - break; - case MON_DATA_ATK_EV: - retVal = substruct2->attackEV; - break; - case MON_DATA_DEF_EV: - retVal = substruct2->defenseEV; - break; - case MON_DATA_SPD_EV: - retVal = substruct2->speedEV; - break; - case MON_DATA_SPATK_EV: - retVal = substruct2->spAttackEV; - break; - case MON_DATA_SPDEF_EV: - retVal = substruct2->spDefenseEV; - break; - case MON_DATA_COOL: - retVal = substruct2->cool; - break; - case MON_DATA_BEAUTY: - retVal = substruct2->beauty; - break; - case MON_DATA_CUTE: - retVal = substruct2->cute; - break; - case MON_DATA_SMART: - retVal = substruct2->smart; - break; - case MON_DATA_TOUGH: - retVal = substruct2->tough; - break; - case MON_DATA_SHEEN: - retVal = substruct2->sheen; - break; - case MON_DATA_POKERUS: - retVal = substruct3->pokerus; - break; - case MON_DATA_MET_LOCATION: - retVal = substruct3->metLocation; - break; - case MON_DATA_MET_LEVEL: - retVal = substruct3->metLevel; - break; - case MON_DATA_MET_GAME: - retVal = substruct3->metGame; - break; - case MON_DATA_POKEBALL: - retVal = substruct3->pokeball; - break; - case MON_DATA_OT_GENDER: - retVal = substruct3->otGender; - break; - case MON_DATA_HP_IV: - retVal = substruct3->hpIV; - break; - case MON_DATA_ATK_IV: - retVal = substruct3->attackIV; - break; - case MON_DATA_DEF_IV: - retVal = substruct3->defenseIV; - break; - case MON_DATA_SPD_IV: - retVal = substruct3->speedIV; - break; - case MON_DATA_SPATK_IV: - retVal = substruct3->spAttackIV; - break; - case MON_DATA_SPDEF_IV: - retVal = substruct3->spDefenseIV; - break; - case MON_DATA_IS_EGG: - retVal = substruct3->isEgg; - break; - case MON_DATA_ALT_ABILITY: - retVal = substruct3->altAbility; - break; - case MON_DATA_COOL_RIBBON: - retVal = substruct3->coolRibbon; - break; - case MON_DATA_BEAUTY_RIBBON: - retVal = substruct3->beautyRibbon; - break; - case MON_DATA_CUTE_RIBBON: - retVal = substruct3->cuteRibbon; - break; - case MON_DATA_SMART_RIBBON: - retVal = substruct3->smartRibbon; - break; - case MON_DATA_TOUGH_RIBBON: - retVal = substruct3->toughRibbon; - break; - case MON_DATA_CHAMPION_RIBBON: - retVal = substruct3->championRibbon; - break; - case MON_DATA_WINNING_RIBBON: - retVal = substruct3->winningRibbon; - break; - case MON_DATA_VICTORY_RIBBON: - retVal = substruct3->victoryRibbon; - break; - case MON_DATA_ARTIST_RIBBON: - retVal = substruct3->artistRibbon; - break; - case MON_DATA_EFFORT_RIBBON: - retVal = substruct3->effortRibbon; - break; - case MON_DATA_GIFT_RIBBON_1: - retVal = substruct3->giftRibbon1; - break; - case MON_DATA_GIFT_RIBBON_2: - retVal = substruct3->giftRibbon2; - break; - case MON_DATA_GIFT_RIBBON_3: - retVal = substruct3->giftRibbon3; - break; - case MON_DATA_GIFT_RIBBON_4: - retVal = substruct3->giftRibbon4; - break; - case MON_DATA_GIFT_RIBBON_5: - retVal = substruct3->giftRibbon5; - break; - case MON_DATA_GIFT_RIBBON_6: - retVal = substruct3->giftRibbon6; - break; - case MON_DATA_GIFT_RIBBON_7: - retVal = substruct3->giftRibbon7; - break; - case MON_DATA_FATEFUL_ENCOUNTER: - retVal = substruct3->fatefulEncounter; - break; - case MON_DATA_SPECIES2: - retVal = substruct0->species; - if (substruct0->species && (substruct3->isEgg || boxMon->isBadEgg)) - retVal = SPECIES_EGG; - break; - case MON_DATA_IVS: - retVal = substruct3->hpIV | (substruct3->attackIV << 5) | (substruct3->defenseIV << 10) | (substruct3->speedIV << 15) | (substruct3->spAttackIV << 20) | (substruct3->spDefenseIV << 25); - break; - case MON_DATA_KNOWN_MOVES: - if (substruct0->species && !substruct3->isEgg) - { - u16 *moves = (u16 *)data; - s32 i = 0; - - while (moves[i] != 355) - { - u16 move = moves[i]; - if (substruct1->moves[0] == move - || substruct1->moves[1] == move - || substruct1->moves[2] == move - || substruct1->moves[3] == move) - retVal |= gBitTable[i]; - i++; - } - } - break; - case MON_DATA_RIBBON_COUNT: - retVal = 0; - if (substruct0->species && !substruct3->isEgg) - { - retVal += substruct3->coolRibbon; - retVal += substruct3->beautyRibbon; - retVal += substruct3->cuteRibbon; - retVal += substruct3->smartRibbon; - retVal += substruct3->toughRibbon; - retVal += substruct3->championRibbon; - retVal += substruct3->winningRibbon; - retVal += substruct3->victoryRibbon; - retVal += substruct3->artistRibbon; - retVal += substruct3->effortRibbon; - retVal += substruct3->giftRibbon1; - retVal += substruct3->giftRibbon2; - retVal += substruct3->giftRibbon3; - retVal += substruct3->giftRibbon4; - retVal += substruct3->giftRibbon5; - retVal += substruct3->giftRibbon6; - retVal += substruct3->giftRibbon7; - } - break; - case MON_DATA_RIBBONS: - retVal = 0; - if (substruct0->species && !substruct3->isEgg) + break; + } + case MON_DATA_LANGUAGE: + retVal = boxMon->language; + break; + case MON_DATA_SANITY_BIT1: + retVal = boxMon->isBadEgg; + break; + case MON_DATA_SANITY_BIT2: + retVal = boxMon->hasSpecies; + break; + case MON_DATA_SANITY_BIT3: + retVal = boxMon->isEgg; + break; + case MON_DATA_OT_NAME: + { + retVal = 0; + + while (retVal < OT_NAME_LENGTH && boxMon->otName[retVal] != EOS) + { + data[retVal] = boxMon->otName[retVal]; + retVal++; + } + + data[retVal] = EOS; + break; + } + case MON_DATA_MARKINGS: + retVal = boxMon->markings; + break; + case MON_DATA_CHECKSUM: + retVal = boxMon->checksum; + break; + case MON_DATA_10: + retVal = boxMon->unknown; + break; + case MON_DATA_SPECIES: + retVal = boxMon->isBadEgg ? SPECIES_EGG : substruct0->species; + break; + case MON_DATA_HELD_ITEM: + retVal = substruct0->heldItem; + break; + case MON_DATA_EXP: + retVal = substruct0->experience; + break; + case MON_DATA_PP_BONUSES: + retVal = substruct0->ppBonuses; + break; + case MON_DATA_FRIENDSHIP: + retVal = substruct0->friendship; + break; + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + retVal = substruct1->moves[field - MON_DATA_MOVE1]; + break; + case MON_DATA_PP1: + case MON_DATA_PP2: + case MON_DATA_PP3: + case MON_DATA_PP4: + retVal = substruct1->pp[field - MON_DATA_PP1]; + break; + case MON_DATA_HP_EV: + retVal = substruct2->hpEV; + break; + case MON_DATA_ATK_EV: + retVal = substruct2->attackEV; + break; + case MON_DATA_DEF_EV: + retVal = substruct2->defenseEV; + break; + case MON_DATA_SPD_EV: + retVal = substruct2->speedEV; + break; + case MON_DATA_SPATK_EV: + retVal = substruct2->spAttackEV; + break; + case MON_DATA_SPDEF_EV: + retVal = substruct2->spDefenseEV; + break; + case MON_DATA_COOL: + retVal = substruct2->cool; + break; + case MON_DATA_BEAUTY: + retVal = substruct2->beauty; + break; + case MON_DATA_CUTE: + retVal = substruct2->cute; + break; + case MON_DATA_SMART: + retVal = substruct2->smart; + break; + case MON_DATA_TOUGH: + retVal = substruct2->tough; + break; + case MON_DATA_SHEEN: + retVal = substruct2->sheen; + break; + case MON_DATA_POKERUS: + retVal = substruct3->pokerus; + break; + case MON_DATA_MET_LOCATION: + retVal = substruct3->metLocation; + break; + case MON_DATA_MET_LEVEL: + retVal = substruct3->metLevel; + break; + case MON_DATA_MET_GAME: + retVal = substruct3->metGame; + break; + case MON_DATA_POKEBALL: + retVal = substruct3->pokeball; + break; + case MON_DATA_OT_GENDER: + retVal = substruct3->otGender; + break; + case MON_DATA_HP_IV: + retVal = substruct3->hpIV; + break; + case MON_DATA_ATK_IV: + retVal = substruct3->attackIV; + break; + case MON_DATA_DEF_IV: + retVal = substruct3->defenseIV; + break; + case MON_DATA_SPD_IV: + retVal = substruct3->speedIV; + break; + case MON_DATA_SPATK_IV: + retVal = substruct3->spAttackIV; + break; + case MON_DATA_SPDEF_IV: + retVal = substruct3->spDefenseIV; + break; + case MON_DATA_IS_EGG: + retVal = substruct3->isEgg; + break; + case MON_DATA_ALT_ABILITY: + retVal = substruct3->altAbility; + break; + case MON_DATA_COOL_RIBBON: + retVal = substruct3->coolRibbon; + break; + case MON_DATA_BEAUTY_RIBBON: + retVal = substruct3->beautyRibbon; + break; + case MON_DATA_CUTE_RIBBON: + retVal = substruct3->cuteRibbon; + break; + case MON_DATA_SMART_RIBBON: + retVal = substruct3->smartRibbon; + break; + case MON_DATA_TOUGH_RIBBON: + retVal = substruct3->toughRibbon; + break; + case MON_DATA_CHAMPION_RIBBON: + retVal = substruct3->championRibbon; + break; + case MON_DATA_WINNING_RIBBON: + retVal = substruct3->winningRibbon; + break; + case MON_DATA_VICTORY_RIBBON: + retVal = substruct3->victoryRibbon; + break; + case MON_DATA_ARTIST_RIBBON: + retVal = substruct3->artistRibbon; + break; + case MON_DATA_EFFORT_RIBBON: + retVal = substruct3->effortRibbon; + break; + case MON_DATA_GIFT_RIBBON_1: + retVal = substruct3->giftRibbon1; + break; + case MON_DATA_GIFT_RIBBON_2: + retVal = substruct3->giftRibbon2; + break; + case MON_DATA_GIFT_RIBBON_3: + retVal = substruct3->giftRibbon3; + break; + case MON_DATA_GIFT_RIBBON_4: + retVal = substruct3->giftRibbon4; + break; + case MON_DATA_GIFT_RIBBON_5: + retVal = substruct3->giftRibbon5; + break; + case MON_DATA_GIFT_RIBBON_6: + retVal = substruct3->giftRibbon6; + break; + case MON_DATA_GIFT_RIBBON_7: + retVal = substruct3->giftRibbon7; + break; + case MON_DATA_FATEFUL_ENCOUNTER: + retVal = substruct3->fatefulEncounter; + break; + case MON_DATA_SPECIES2: + retVal = substruct0->species; + if (substruct0->species && (substruct3->isEgg || boxMon->isBadEgg)) + retVal = SPECIES_EGG; + break; + case MON_DATA_IVS: + retVal = substruct3->hpIV | (substruct3->attackIV << 5) | (substruct3->defenseIV << 10) | (substruct3->speedIV << 15) | (substruct3->spAttackIV << 20) | (substruct3->spDefenseIV << 25); + break; + case MON_DATA_KNOWN_MOVES: + if (substruct0->species && !substruct3->isEgg) + { + u16 *moves = (u16 *)data; + s32 i = 0; + + while (moves[i] != 355) { - retVal = substruct3->championRibbon - | (substruct3->coolRibbon << 1) - | (substruct3->beautyRibbon << 4) - | (substruct3->cuteRibbon << 7) - | (substruct3->smartRibbon << 10) - | (substruct3->toughRibbon << 13) - | (substruct3->winningRibbon << 16) - | (substruct3->victoryRibbon << 17) - | (substruct3->artistRibbon << 18) - | (substruct3->effortRibbon << 19) - | (substruct3->giftRibbon1 << 20) - | (substruct3->giftRibbon2 << 21) - | (substruct3->giftRibbon3 << 22) - | (substruct3->giftRibbon4 << 23) - | (substruct3->giftRibbon5 << 24) - | (substruct3->giftRibbon6 << 25) - | (substruct3->giftRibbon7 << 26); + u16 move = moves[i]; + if (substruct1->moves[0] == move + || substruct1->moves[1] == move + || substruct1->moves[2] == move + || substruct1->moves[3] == move) + retVal |= gBitTable[i]; + i++; } - break; - default: - break; + } + break; + case MON_DATA_RIBBON_COUNT: + retVal = 0; + if (substruct0->species && !substruct3->isEgg) + { + retVal += substruct3->coolRibbon; + retVal += substruct3->beautyRibbon; + retVal += substruct3->cuteRibbon; + retVal += substruct3->smartRibbon; + retVal += substruct3->toughRibbon; + retVal += substruct3->championRibbon; + retVal += substruct3->winningRibbon; + retVal += substruct3->victoryRibbon; + retVal += substruct3->artistRibbon; + retVal += substruct3->effortRibbon; + retVal += substruct3->giftRibbon1; + retVal += substruct3->giftRibbon2; + retVal += substruct3->giftRibbon3; + retVal += substruct3->giftRibbon4; + retVal += substruct3->giftRibbon5; + retVal += substruct3->giftRibbon6; + retVal += substruct3->giftRibbon7; + } + break; + case MON_DATA_RIBBONS: + retVal = 0; + if (substruct0->species && !substruct3->isEgg) + { + retVal = substruct3->championRibbon + | (substruct3->coolRibbon << 1) + | (substruct3->beautyRibbon << 4) + | (substruct3->cuteRibbon << 7) + | (substruct3->smartRibbon << 10) + | (substruct3->toughRibbon << 13) + | (substruct3->winningRibbon << 16) + | (substruct3->victoryRibbon << 17) + | (substruct3->artistRibbon << 18) + | (substruct3->effortRibbon << 19) + | (substruct3->giftRibbon1 << 20) + | (substruct3->giftRibbon2 << 21) + | (substruct3->giftRibbon3 << 22) + | (substruct3->giftRibbon4 << 23) + | (substruct3->giftRibbon5 << 24) + | (substruct3->giftRibbon6 << 25) + | (substruct3->giftRibbon7 << 26); + } + break; + default: + break; } if (field > MON_DATA_10) @@ -800,239 +800,239 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const u8 *data) switch (field) { - case MON_DATA_PERSONALITY: - SET32(boxMon->personality); - break; - case MON_DATA_OT_ID: - SET32(boxMon->otId); - break; - case MON_DATA_NICKNAME: - { - s32 i; - for (i = 0; i < POKEMON_NAME_LENGTH; i++) - boxMon->nickname[i] = data[i]; - break; - } - case MON_DATA_LANGUAGE: - SET8(boxMon->language); - break; - case MON_DATA_SANITY_BIT1: - SET8(boxMon->isBadEgg); - break; - case MON_DATA_SANITY_BIT2: - SET8(boxMon->hasSpecies); - break; - case MON_DATA_SANITY_BIT3: - SET8(boxMon->isEgg); - break; - case MON_DATA_OT_NAME: - { - s32 i; - for (i = 0; i < OT_NAME_LENGTH; i++) - boxMon->otName[i] = data[i]; - break; - } - case MON_DATA_MARKINGS: - SET8(boxMon->markings); - break; - case MON_DATA_CHECKSUM: - SET16(boxMon->checksum); - break; - case MON_DATA_10: - SET16(boxMon->unknown); - break; - case MON_DATA_SPECIES: - { - SET16(substruct0->species); - if (substruct0->species) - boxMon->hasSpecies = 1; - else - boxMon->hasSpecies = 0; - break; - } - case MON_DATA_HELD_ITEM: - SET16(substruct0->heldItem); - break; - case MON_DATA_EXP: - SET32(substruct0->experience); - break; - case MON_DATA_PP_BONUSES: - SET8(substruct0->ppBonuses); - break; - case MON_DATA_FRIENDSHIP: - SET8(substruct0->friendship); - break; - case MON_DATA_MOVE1: - case MON_DATA_MOVE2: - case MON_DATA_MOVE3: - case MON_DATA_MOVE4: - SET16(substruct1->moves[field - MON_DATA_MOVE1]); - break; - case MON_DATA_PP1: - case MON_DATA_PP2: - case MON_DATA_PP3: - case MON_DATA_PP4: - SET8(substruct1->pp[field - MON_DATA_PP1]); - break; - case MON_DATA_HP_EV: - SET8(substruct2->hpEV); - break; - case MON_DATA_ATK_EV: - SET8(substruct2->attackEV); - break; - case MON_DATA_DEF_EV: - SET8(substruct2->defenseEV); - break; - case MON_DATA_SPD_EV: - SET8(substruct2->speedEV); - break; - case MON_DATA_SPATK_EV: - SET8(substruct2->spAttackEV); - break; - case MON_DATA_SPDEF_EV: - SET8(substruct2->spDefenseEV); - break; - case MON_DATA_COOL: - SET8(substruct2->cool); - break; - case MON_DATA_BEAUTY: - SET8(substruct2->beauty); - break; - case MON_DATA_CUTE: - SET8(substruct2->cute); - break; - case MON_DATA_SMART: - SET8(substruct2->smart); - break; - case MON_DATA_TOUGH: - SET8(substruct2->tough); - break; - case MON_DATA_SHEEN: - SET8(substruct2->sheen); - break; - case MON_DATA_POKERUS: - SET8(substruct3->pokerus); - break; - case MON_DATA_MET_LOCATION: - SET8(substruct3->metLocation); - break; - case MON_DATA_MET_LEVEL: - { - u8 metLevel = *data; - substruct3->metLevel = metLevel; - break; - } - case MON_DATA_MET_GAME: - SET8(substruct3->metGame); - break; - case MON_DATA_POKEBALL: - { - u8 pokeball = *data; - substruct3->pokeball = pokeball; - break; - } - case MON_DATA_OT_GENDER: - SET8(substruct3->otGender); - break; - case MON_DATA_HP_IV: - SET8(substruct3->hpIV); - break; - case MON_DATA_ATK_IV: - SET8(substruct3->attackIV); - break; - case MON_DATA_DEF_IV: - SET8(substruct3->defenseIV); - break; - case MON_DATA_SPD_IV: - SET8(substruct3->speedIV); - break; - case MON_DATA_SPATK_IV: - SET8(substruct3->spAttackIV); - break; - case MON_DATA_SPDEF_IV: - SET8(substruct3->spDefenseIV); - break; - case MON_DATA_IS_EGG: - SET8(substruct3->isEgg); - if (substruct3->isEgg) - boxMon->isEgg = 1; - else - boxMon->isEgg = 0; - break; - case MON_DATA_ALT_ABILITY: - SET8(substruct3->altAbility); - break; - case MON_DATA_COOL_RIBBON: - SET8(substruct3->coolRibbon); - break; - case MON_DATA_BEAUTY_RIBBON: - SET8(substruct3->beautyRibbon); - break; - case MON_DATA_CUTE_RIBBON: - SET8(substruct3->cuteRibbon); - break; - case MON_DATA_SMART_RIBBON: - SET8(substruct3->smartRibbon); - break; - case MON_DATA_TOUGH_RIBBON: - SET8(substruct3->toughRibbon); - break; - case MON_DATA_CHAMPION_RIBBON: - SET8(substruct3->championRibbon); - break; - case MON_DATA_WINNING_RIBBON: - SET8(substruct3->winningRibbon); - break; - case MON_DATA_VICTORY_RIBBON: - SET8(substruct3->victoryRibbon); - break; - case MON_DATA_ARTIST_RIBBON: - SET8(substruct3->artistRibbon); - break; - case MON_DATA_EFFORT_RIBBON: - SET8(substruct3->effortRibbon); - break; - case MON_DATA_GIFT_RIBBON_1: - SET8(substruct3->giftRibbon1); - break; - case MON_DATA_GIFT_RIBBON_2: - SET8(substruct3->giftRibbon2); - break; - case MON_DATA_GIFT_RIBBON_3: - SET8(substruct3->giftRibbon3); - break; - case MON_DATA_GIFT_RIBBON_4: - SET8(substruct3->giftRibbon4); - break; - case MON_DATA_GIFT_RIBBON_5: - SET8(substruct3->giftRibbon5); - break; - case MON_DATA_GIFT_RIBBON_6: - SET8(substruct3->giftRibbon6); - break; - case MON_DATA_GIFT_RIBBON_7: - SET8(substruct3->giftRibbon7); - break; - case MON_DATA_FATEFUL_ENCOUNTER: - SET8(substruct3->fatefulEncounter); - break; - case MON_DATA_IVS: - { + case MON_DATA_PERSONALITY: + SET32(boxMon->personality); + break; + case MON_DATA_OT_ID: + SET32(boxMon->otId); + break; + case MON_DATA_NICKNAME: + { + s32 i; + for (i = 0; i < POKEMON_NAME_LENGTH; i++) + boxMon->nickname[i] = data[i]; + break; + } + case MON_DATA_LANGUAGE: + SET8(boxMon->language); + break; + case MON_DATA_SANITY_BIT1: + SET8(boxMon->isBadEgg); + break; + case MON_DATA_SANITY_BIT2: + SET8(boxMon->hasSpecies); + break; + case MON_DATA_SANITY_BIT3: + SET8(boxMon->isEgg); + break; + case MON_DATA_OT_NAME: + { + s32 i; + for (i = 0; i < OT_NAME_LENGTH; i++) + boxMon->otName[i] = data[i]; + break; + } + case MON_DATA_MARKINGS: + SET8(boxMon->markings); + break; + case MON_DATA_CHECKSUM: + SET16(boxMon->checksum); + break; + case MON_DATA_10: + SET16(boxMon->unknown); + break; + case MON_DATA_SPECIES: + { + SET16(substruct0->species); + if (substruct0->species) + boxMon->hasSpecies = 1; + else + boxMon->hasSpecies = 0; + break; + } + case MON_DATA_HELD_ITEM: + SET16(substruct0->heldItem); + break; + case MON_DATA_EXP: + SET32(substruct0->experience); + break; + case MON_DATA_PP_BONUSES: + SET8(substruct0->ppBonuses); + break; + case MON_DATA_FRIENDSHIP: + SET8(substruct0->friendship); + break; + case MON_DATA_MOVE1: + case MON_DATA_MOVE2: + case MON_DATA_MOVE3: + case MON_DATA_MOVE4: + SET16(substruct1->moves[field - MON_DATA_MOVE1]); + break; + case MON_DATA_PP1: + case MON_DATA_PP2: + case MON_DATA_PP3: + case MON_DATA_PP4: + SET8(substruct1->pp[field - MON_DATA_PP1]); + break; + case MON_DATA_HP_EV: + SET8(substruct2->hpEV); + break; + case MON_DATA_ATK_EV: + SET8(substruct2->attackEV); + break; + case MON_DATA_DEF_EV: + SET8(substruct2->defenseEV); + break; + case MON_DATA_SPD_EV: + SET8(substruct2->speedEV); + break; + case MON_DATA_SPATK_EV: + SET8(substruct2->spAttackEV); + break; + case MON_DATA_SPDEF_EV: + SET8(substruct2->spDefenseEV); + break; + case MON_DATA_COOL: + SET8(substruct2->cool); + break; + case MON_DATA_BEAUTY: + SET8(substruct2->beauty); + break; + case MON_DATA_CUTE: + SET8(substruct2->cute); + break; + case MON_DATA_SMART: + SET8(substruct2->smart); + break; + case MON_DATA_TOUGH: + SET8(substruct2->tough); + break; + case MON_DATA_SHEEN: + SET8(substruct2->sheen); + break; + case MON_DATA_POKERUS: + SET8(substruct3->pokerus); + break; + case MON_DATA_MET_LOCATION: + SET8(substruct3->metLocation); + break; + case MON_DATA_MET_LEVEL: + { + u8 metLevel = *data; + substruct3->metLevel = metLevel; + break; + } + case MON_DATA_MET_GAME: + SET8(substruct3->metGame); + break; + case MON_DATA_POKEBALL: + { + u8 pokeball = *data; + substruct3->pokeball = pokeball; + break; + } + case MON_DATA_OT_GENDER: + SET8(substruct3->otGender); + break; + case MON_DATA_HP_IV: + SET8(substruct3->hpIV); + break; + case MON_DATA_ATK_IV: + SET8(substruct3->attackIV); + break; + case MON_DATA_DEF_IV: + SET8(substruct3->defenseIV); + break; + case MON_DATA_SPD_IV: + SET8(substruct3->speedIV); + break; + case MON_DATA_SPATK_IV: + SET8(substruct3->spAttackIV); + break; + case MON_DATA_SPDEF_IV: + SET8(substruct3->spDefenseIV); + break; + case MON_DATA_IS_EGG: + SET8(substruct3->isEgg); + if (substruct3->isEgg) + boxMon->isEgg = 1; + else + boxMon->isEgg = 0; + break; + case MON_DATA_ALT_ABILITY: + SET8(substruct3->altAbility); + break; + case MON_DATA_COOL_RIBBON: + SET8(substruct3->coolRibbon); + break; + case MON_DATA_BEAUTY_RIBBON: + SET8(substruct3->beautyRibbon); + break; + case MON_DATA_CUTE_RIBBON: + SET8(substruct3->cuteRibbon); + break; + case MON_DATA_SMART_RIBBON: + SET8(substruct3->smartRibbon); + break; + case MON_DATA_TOUGH_RIBBON: + SET8(substruct3->toughRibbon); + break; + case MON_DATA_CHAMPION_RIBBON: + SET8(substruct3->championRibbon); + break; + case MON_DATA_WINNING_RIBBON: + SET8(substruct3->winningRibbon); + break; + case MON_DATA_VICTORY_RIBBON: + SET8(substruct3->victoryRibbon); + break; + case MON_DATA_ARTIST_RIBBON: + SET8(substruct3->artistRibbon); + break; + case MON_DATA_EFFORT_RIBBON: + SET8(substruct3->effortRibbon); + break; + case MON_DATA_GIFT_RIBBON_1: + SET8(substruct3->giftRibbon1); + break; + case MON_DATA_GIFT_RIBBON_2: + SET8(substruct3->giftRibbon2); + break; + case MON_DATA_GIFT_RIBBON_3: + SET8(substruct3->giftRibbon3); + break; + case MON_DATA_GIFT_RIBBON_4: + SET8(substruct3->giftRibbon4); + break; + case MON_DATA_GIFT_RIBBON_5: + SET8(substruct3->giftRibbon5); + break; + case MON_DATA_GIFT_RIBBON_6: + SET8(substruct3->giftRibbon6); + break; + case MON_DATA_GIFT_RIBBON_7: + SET8(substruct3->giftRibbon7); + break; + case MON_DATA_FATEFUL_ENCOUNTER: + SET8(substruct3->fatefulEncounter); + break; + case MON_DATA_IVS: + { #ifdef BUGFIX_SETMONIVS - u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); + u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24); #else - u32 ivs = *data; // Bug: Only the HP IV and the lower 3 bits of the Attack IV are read. The rest become 0. + u32 ivs = *data; // Bug: Only the HP IV and the lower 3 bits of the Attack IV are read. The rest become 0. #endif - substruct3->hpIV = ivs & 0x1F; - substruct3->attackIV = (ivs >> 5) & 0x1F; - substruct3->defenseIV = (ivs >> 10) & 0x1F; - substruct3->speedIV = (ivs >> 15) & 0x1F; - substruct3->spAttackIV = (ivs >> 20) & 0x1F; - substruct3->spDefenseIV = (ivs >> 25) & 0x1F; - break; - } - default: - break; + substruct3->hpIV = ivs & 0x1F; + substruct3->attackIV = (ivs >> 5) & 0x1F; + substruct3->defenseIV = (ivs >> 10) & 0x1F; + substruct3->speedIV = (ivs >> 15) & 0x1F; + substruct3->spAttackIV = (ivs >> 20) & 0x1F; + substruct3->spDefenseIV = (ivs >> 25) & 0x1F; + break; + } + default: + break; } if (field > MON_DATA_10) diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 270a52ad5..6b42d3272 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -169,28 +169,28 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) { switch (j) { - case 2: - if (val & 0x10) - val &= 0xEF; - case 0: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 1: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 3: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 7: - if (i == effectByte) - return 0; - break; + case 2: + if (val & 0x10) + val &= 0xEF; + case 0: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 1: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 3: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 7: + if (i == effectByte) + return 0; + break; } } j++; @@ -208,21 +208,21 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit) { switch (j) { - case 0: - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - if (i == effectByte && (val & effectBit)) - return offset; - offset++; - break; - case 7: - if (i == effectByte) - return 0; - break; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + if (i == effectByte && (val & effectBit)) + return offset; + offset++; + break; + case 7: + if (i == effectByte) + return 0; + break; } } j++; @@ -1153,26 +1153,26 @@ u16 sub_8040728(void) { switch (gTrainers[gTrainerBattleOpponent].trainerClass) { - case 2: - case 0x31: - return BGM_BATTLE30; - case 3: - case 4: - case 0x32: - case 0x33: - return BGM_BATTLE31; - case 0x19: - return BGM_BATTLE32; - case 0x20: - return BGM_BATTLE33; - case 0x2E: - if (!StringCompare(gTrainers[gTrainerBattleOpponent].trainerName, BattleText_Wally)) - return BGM_BATTLE20; - return BGM_BATTLE35; - case 0x18: - return BGM_BATTLE38; - default: + case 2: + case 0x31: + return BGM_BATTLE30; + case 3: + case 4: + case 0x32: + case 0x33: + return BGM_BATTLE31; + case 0x19: + return BGM_BATTLE32; + case 0x20: + return BGM_BATTLE33; + case 0x2E: + if (!StringCompare(gTrainers[gTrainerBattleOpponent].trainerName, BattleText_Wally)) return BGM_BATTLE20; + return BGM_BATTLE35; + case 0x18: + return BGM_BATTLE38; + default: + return BGM_BATTLE20; } } return BGM_BATTLE27; diff --git a/src/record_mixing.c b/src/record_mixing.c index 58722010f..2e01ead61 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -262,31 +262,31 @@ void Task_RecordMixing_SendPacket(u8 taskId) switch (task->data[TD_STATE]) { - case 0: //Copy record data to send buffer - { - void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; + case 0: //Copy record data to send buffer + { + void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4]; - memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); - task->data[TD_STATE]++; - break; - } - case 1: - if (GetMultiplayerId() == 0) - sub_8007E9C(1); + memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE); + task->data[TD_STATE]++; + break; + } + case 1: + if (GetMultiplayerId() == 0) + sub_8007E9C(1); + task->data[TD_STATE]++; + break; + case 2: + break; + case 3: + task->data[4]++; + if ((u16)task->data[4] == 24) task->data[TD_STATE]++; - break; - case 2: - break; - case 3: - task->data[4]++; - if ((u16)task->data[4] == 24) - task->data[TD_STATE]++; - else - task->data[TD_STATE] = 0; - break; - case 4: - if (!gTasks[task->data[10]].isActive) - task->func = Task_RecordMixing_SendPacket_SwitchToReceive; + else + task->data[TD_STATE] = 0; + break; + case 4: + if (!gTasks[task->data[10]].isActive) + task->func = Task_RecordMixing_SendPacket_SwitchToReceive; } } diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index d46abc74d..0de1e5ca9 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -110,59 +110,59 @@ static void CB2_SaveFailedScreen(void) switch (gMain.state) { - case 0: - default: - SetVBlankCallback(0); - REG_DISPCNT = 0; - REG_BG3CNT = 0; - REG_BG2CNT = 0; - REG_BG1CNT = 0; - REG_BG0CNT = 0; - REG_BG3HOFS = 0; - REG_BG3VOFS = 0; - REG_BG2HOFS = 0; - REG_BG2VOFS = 0; - REG_BG1HOFS = 0; - REG_BG1VOFS = 0; - REG_BG0HOFS = 0; - REG_BG0VOFS = 0; - DmaFill16(3, 0, VRAM, VRAM_SIZE); - DmaFill32(3, 0, OAM, OAM_SIZE); - DmaFill16(3, 0, PLTT, PLTT_SIZE); - LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); - LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); - LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); - LZ77UnCompVram(&gSaveFailedClockGfx, (void *)(VRAM + 0x10020)); - ResetSpriteData(); - ResetTasks(); - ResetPaletteFade(); - LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); - LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); - SetUpWindowConfig(&gWindowConfig_81E6C3C); - InitMenuWindow(&gWindowConfig_81E6CE4); - MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window - MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window - MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); - ime = REG_IME; - REG_IME = 0; - REG_IE |= INTR_FLAG_VBLANK; - REG_IME = ime; - REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; - SetVBlankCallback(VBlankCB); - REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; - REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG2_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0; - gMain.state++; - break; - case 1: - if (!UpdatePaletteFade()) - { - SetMainCallback2(CB2_WipeSave); - SetVBlankCallback(VBlankCB_UpdateClockGraphics); - } - break; + case 0: + default: + SetVBlankCallback(0); + REG_DISPCNT = 0; + REG_BG3CNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM); + LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000)); + LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800)); + LZ77UnCompVram(&gSaveFailedClockGfx, (void *)(VRAM + 0x10020)); + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); + LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window + MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window + MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + ime = REG_IME; + REG_IME = 0; + REG_IE |= INTR_FLAG_VBLANK; + REG_IME = ime; + REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; + SetVBlankCallback(VBlankCB); + REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256; + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG2_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0; + gMain.state++; + break; + case 1: + if (!UpdatePaletteFade()) + { + SetMainCallback2(CB2_WipeSave); + SetVBlankCallback(VBlankCB_UpdateClockGraphics); + } + break; } } diff --git a/src/script_menu.c b/src/script_menu.c index eba438397..50941f9ac 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -913,19 +913,19 @@ void task_picbox(u8 taskId) switch (task->data[0]) { - case 0: - task->data[0]++; - break; - case 1: - break; - case 2: - FreeResourcesAndDestroySprite(&gSprites[task->data[2]]); - task->data[0]++; - break; - case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); - DestroyTask(taskId); - break; + case 0: + task->data[0]++; + break; + case 1: + break; + case 2: + FreeResourcesAndDestroySprite(&gSprites[task->data[2]]); + task->data[0]++; + break; + case 3: + MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); + DestroyTask(taskId); + break; } } diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index 912458655..b87f5e956 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -73,18 +73,18 @@ void sub_80C4C28(void) switch(specialVar) { - case 0: - var = 3; - break; - case 1: - var = 4; - break; - case 2: - var = 5; - break; - default: - var = 100; - break; + case 0: + var = 3; + break; + case 1: + var = 4; + break; + case 2: + var = 5; + break; + default: + var = 100; + break; } gSpecialVar_0x8004 = var; } @@ -103,22 +103,22 @@ void sub_80C4C78(void) switch(gScriptContestCategory) { - case 0: - var = 8; - break; - case 1: - var = 9; - break; - case 2: - var = 10; - break; - case 3: - var = 11; - break; - case 4: - default: - var = 12; - break; + case 0: + var = 8; + break; + case 1: + var = 9; + break; + case 2: + var = 10; + break; + case 3: + var = 11; + break; + case 4: + default: + var = 12; + break; } returnVar = gSaveBlock1.sbStruct.unkSB2.sb1_2EFC_struct2[var].var; @@ -467,26 +467,26 @@ void sub_80C5190(u8 taskId) switch(task->data[0]) { - case 2: - sprite = &gSprites[task->data[2]]; - FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); - - if(sprite->oam.affineMode) - FreeOamMatrix(sprite->oam.matrixNum); - - DestroySprite(sprite); - task->data[0]++; - break; - case 0: - task->data[0]++; - break; - case 3: - MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); - DestroyTask(taskId); - break; - case 1: - default: - break; + case 2: + sprite = &gSprites[task->data[2]]; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum)); + + if(sprite->oam.affineMode) + FreeOamMatrix(sprite->oam.matrixNum); + + DestroySprite(sprite); + task->data[0]++; + break; + case 0: + task->data[0]++; + break; + case 3: + MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10); + DestroyTask(taskId); + break; + case 1: + default: + break; } } @@ -593,15 +593,15 @@ void CheckForAlivePartyMons(void) switch(var) { - case 1: - gScriptResult = var; - break; - case 0: - gScriptResult = var; - break; - case 2: - gScriptResult = var; - break; + case 1: + gScriptResult = var; + break; + case 0: + gScriptResult = var; + break; + case 2: + gScriptResult = var; + break; } } @@ -663,12 +663,12 @@ void sub_80C5580(void) switch(var) { - case 0: - gScriptResult = 0; - break; - default: - gScriptResult = 1; - break; + case 0: + gScriptResult = 0; + break; + default: + gScriptResult = 1; + break; } SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); @@ -686,14 +686,14 @@ void SetBattleTowerPlayerParty(void) switch(var) { - case 0: // player quit battle tower? - LoadPlayerParty(); - gScriptResult = 0; - break; - default: // load battle tower. - ReducePlayerPartyToThree(); - gScriptResult = 1; - break; + case 0: // player quit battle tower? + LoadPlayerParty(); + gScriptResult = 0; + break; + default: // load battle tower. + ReducePlayerPartyToThree(); + gScriptResult = 1; + break; } SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index ce62f2abb..e1d532b16 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -81,62 +81,62 @@ bool8 sub_80F9ACC(void) { switch(EWRAM_1B000.unk264) { - case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) - { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - } - break; - case 1: - LoadHeldItemIconGraphics(); - EWRAM_1B000.unk264++; - break; - case 2: - CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); - EWRAM_1B000.unk264++; - break; - case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - break; - } - case 4: - PartyMenuPrintMonsLevelOrStatus(); + case 0: + if(EWRAM_1B000.unk266 < gPlayerPartyCount) + { + TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); + EWRAM_1B000.unk266++; + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; + } + break; + case 1: + LoadHeldItemIconGraphics(); + EWRAM_1B000.unk264++; + break; + case 2: + CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); + EWRAM_1B000.unk264++; + break; + case 3: + if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 5: - PrintPartyMenuMonNicknames(); + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; break; - case 6: - sub_80F9C00(); - EWRAM_1B000.unk264++; + } + case 4: + PartyMenuPrintMonsLevelOrStatus(); + EWRAM_1B000.unk264++; + break; + case 5: + PrintPartyMenuMonNicknames(); + EWRAM_1B000.unk264++; + break; + case 6: + sub_80F9C00(); + EWRAM_1B000.unk264++; + break; + case 7: // the only case that can return true. + if(sub_806B58C(EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264 = 0; - return TRUE; - } + } + else + { + EWRAM_1B000.unk266 = 0; + EWRAM_1B000.unk264 = 0; + return TRUE; + } } return FALSE; } @@ -149,15 +149,15 @@ void sub_80F9C00(void) { switch(sub_80AE47C(&gPlayerParty[i])) { - case 0: - case 3: - case 4: - sub_806BC3C(i, 0x7E); - break; - case 1: - case 2: - sub_806BC3C(i, 0x70); - break; + case 0: + case 3: + case 4: + sub_806BC3C(i, 0x7E); + break; + case 1: + case 2: + sub_806BC3C(i, 0x70); + break; } } } @@ -168,18 +168,18 @@ void sub_80F9C6C(u8 var) { switch(sub_806BD80(var)) { - case 1: - PlaySE(5); - gUnknown_02038694 = sub_806CA38(var); - gSpecialVar_0x8004 = gUnknown_02038694; - sub_8123138(var); - break; - case 2: - PlaySE(5); - gUnknown_02038694 = 0xFF; - gSpecialVar_0x8004 = 0xFF; - sub_8123138(var); - break; + case 1: + PlaySE(5); + gUnknown_02038694 = sub_806CA38(var); + gSpecialVar_0x8004 = gUnknown_02038694; + sub_8123138(var); + break; + case 2: + PlaySE(5); + gUnknown_02038694 = 0xFF; + gSpecialVar_0x8004 = 0xFF; + sub_8123138(var); + break; } } } @@ -188,62 +188,62 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case { switch(EWRAM_1B000.unk264) { - case 0: - if(EWRAM_1B000.unk266 < gPlayerPartyCount) - { - TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); - EWRAM_1B000.unk266++; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - } - break; - case 1: - LoadHeldItemIconGraphics(); - EWRAM_1B000.unk264++; - break; - case 2: - CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); - EWRAM_1B000.unk264++; - break; - case 3: - if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264++; - break; - } - case 4: - PartyMenuPrintMonsLevelOrStatus(); + case 0: + if(EWRAM_1B000.unk266 < gPlayerPartyCount) + { + TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]); + EWRAM_1B000.unk266++; + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; + } + break; + case 1: + LoadHeldItemIconGraphics(); + EWRAM_1B000.unk264++; + break; + case 2: + CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260); + EWRAM_1B000.unk264++; + break; + case 3: + if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 5: - PrintPartyMenuMonNicknames(); + } + else + { + EWRAM_1B000.unk266 = 0; EWRAM_1B000.unk264++; break; - case 6: - sub_80F9E1C(); - EWRAM_1B000.unk264++; + } + case 4: + PartyMenuPrintMonsLevelOrStatus(); + EWRAM_1B000.unk264++; + break; + case 5: + PrintPartyMenuMonNicknames(); + EWRAM_1B000.unk264++; + break; + case 6: + sub_80F9E1C(); + EWRAM_1B000.unk264++; + break; + case 7: // the only case that can return true. + if(sub_806B58C(EWRAM_1B000.unk266) != 1) + { + EWRAM_1B000.unk266++; break; - case 7: // the only case that can return true. - if(sub_806B58C(EWRAM_1B000.unk266) != 1) - { - EWRAM_1B000.unk266++; - break; - } - else - { - EWRAM_1B000.unk266 = 0; - EWRAM_1B000.unk264 = 0; - return TRUE; - } + } + else + { + EWRAM_1B000.unk266 = 0; + EWRAM_1B000.unk264 = 0; + return TRUE; + } } return FALSE; } @@ -267,16 +267,16 @@ void sub_80F9E64(u8 var) { switch(sub_806BD80(var)) { - case 1: - PlaySE(5); - gSpecialVar_0x8004 = sub_806CA38(var); - gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); - sub_8123138(var); - break; - case 2: - PlaySE(5); - gSpecialVar_0x8004 = 0xFF; - sub_8123138(var); + case 1: + PlaySE(5); + gSpecialVar_0x8004 = sub_806CA38(var); + gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]); + sub_8123138(var); + break; + case 2: + PlaySE(5); + gSpecialVar_0x8004 = 0xFF; + sub_8123138(var); } } } diff --git a/src/secret_base.c b/src/secret_base.c index 2769806f6..c210a55d2 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -237,24 +237,24 @@ void sub_80BBA48(u8 taskid) { u16 curbaseid; switch (gTasks[taskid].data[0]) { - case 0: - gTasks[taskid].data[0] = 1; - break; - case 1: - if (!gPaletteFade.active) { - gTasks[taskid].data[0] = 2; - } - break; - case 2: - curbaseid = VarGet(VAR_0x4054); - if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) - gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; - sub_80BBA14(); - warp_in(); - gUnknown_0300485C = sub_8080990; - SetMainCallback2(CB2_LoadMap); - DestroyTask(taskid); - break; + case 0: + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + curbaseid = VarGet(VAR_0x4054); + if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) + gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; + sub_80BBA14(); + warp_in(); + gUnknown_0300485C = sub_8080990; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + break; } } @@ -782,23 +782,23 @@ bool8 sub_80BC050(void) void sub_80BC074(u8 taskid) { switch (gTasks[taskid].data[0]) { - case 0: - ScriptContext2_Enable(); - gTasks[taskid].data[0] = 1; - break; - case 1: - if (!gPaletteFade.active) { - gTasks[taskid].data[0] = 2; - } - break; - case 2: - copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); - warp_in(); - gUnknown_0300485C = mapldr_default; - SetMainCallback2(CB2_LoadMap); - ScriptContext2_Disable(); - DestroyTask(taskid); - break; + case 0: + ScriptContext2_Enable(); + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); + warp_in(); + gUnknown_0300485C = mapldr_default; + SetMainCallback2(CB2_LoadMap); + ScriptContext2_Disable(); + DestroyTask(taskid); + break; } } diff --git a/src/shop.c b/src/shop.c index 780dff02a..9f4a360df 100644 --- a/src/shop.c +++ b/src/shop.c @@ -342,17 +342,17 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4) switch(tempVar4) { - case 0: // _080B335C - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; - case 1: // _080B3364 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); - break; - case 2: // _080B3398 - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); - BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); - break; + case 0: // _080B335C + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; + case 1: // _080B3364 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4); + break; + case 2: // _080B3398 + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3); + BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4); + break; } } diff --git a/src/start_menu.c b/src/start_menu.c index 37d361c0b..8d7e50ea5 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -227,30 +227,30 @@ static bool32 InitStartMenuMultistep(s16 *step, s16 *index) { switch (*step) { - case 1: - BuildStartMenuActions(); + case 1: + BuildStartMenuActions(); + (*step)++; + break; + case 2: + MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3); + *index = 0; + (*step)++; + break; + case 3: + if (GetSafariZoneFlag()) + DisplaySafariBallsWindow(); + (*step)++; + break; + case 4: + if (PrintStartMenuItemsMultistep(index, 2)) (*step)++; - break; - case 2: - MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3); - *index = 0; - (*step)++; - break; - case 3: - if (GetSafariZoneFlag()) - DisplaySafariBallsWindow(); - (*step)++; - break; - case 4: - if (PrintStartMenuItemsMultistep(index, 2)) - (*step)++; - break; - case 0: - (*step)++; - break; - case 5: - sStartMenuCursorPos = InitMenu(0, 0x17, 2, sNumStartMenuActions, sStartMenuCursorPos, 6); - return TRUE; + break; + case 0: + (*step)++; + break; + case 5: + sStartMenuCursorPos = InitMenu(0, 0x17, 2, sNumStartMenuActions, sStartMenuCursorPos, 6); + return TRUE; } return FALSE; } @@ -288,14 +288,14 @@ void sub_80712B4(u8 taskId) switch (task->data[0]) { - case 0: - gCallback_03004AE8 = StartMenu_InputProcessCallback; - task->data[0]++; - break; - case 1: - if (gCallback_03004AE8() == 1) - DestroyTask(taskId); - break; + case 0: + gCallback_03004AE8 = StartMenu_InputProcessCallback; + task->data[0]++; + break; + case 1: + if (gCallback_03004AE8() == 1) + DestroyTask(taskId); + break; } } @@ -475,20 +475,20 @@ static u8 SaveCallback2(void) { switch (RunSaveDialogCallback()) { - case SAVE_IN_PROGRESS: - return FALSE; - case SAVE_CANCELED: - //Go back to start menu - MenuZeroFillScreen(); - InitStartMenu(); - gCallback_03004AE8 = StartMenu_InputProcessCallback; - return FALSE; - case SAVE_SUCCESS: - case SAVE_ERROR: - MenuZeroFillScreen(); - sub_8064E2C(); - ScriptContext2_Disable(); - return TRUE; + case SAVE_IN_PROGRESS: + return FALSE; + case SAVE_CANCELED: + //Go back to start menu + MenuZeroFillScreen(); + InitStartMenu(); + gCallback_03004AE8 = StartMenu_InputProcessCallback; + return FALSE; + case SAVE_SUCCESS: + case SAVE_ERROR: + MenuZeroFillScreen(); + sub_8064E2C(); + ScriptContext2_Disable(); + return TRUE; } return FALSE; } @@ -532,15 +532,15 @@ static void Task_SaveDialog(u8 taskId) switch (status) { - case SAVE_CANCELED: - case SAVE_ERROR: - gScriptResult = 0; - break; - case SAVE_SUCCESS: - gScriptResult = status; - break; - case SAVE_IN_PROGRESS: - return; + case SAVE_CANCELED: + case SAVE_ERROR: + gScriptResult = 0; + break; + case SAVE_SUCCESS: + gScriptResult = status; + break; + case SAVE_IN_PROGRESS: + return; } DestroyTask(taskId); EnableBothScriptContexts(); @@ -602,29 +602,29 @@ static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void) { switch (ProcessMenuInputNoWrap_()) { - case 0: //YES - HideSaveDialog(); - switch (gSaveFileStatus) + case 0: //YES + HideSaveDialog(); + switch (gSaveFileStatus) + { + case 0: + case 2: + if (gDifferentSaveFile == FALSE) { - case 0: - case 2: - if (gDifferentSaveFile == FALSE) - { - saveDialogCallback = SaveDialogCB_SaveFileExists; - return SAVE_IN_PROGRESS; - } - saveDialogCallback = SaveDialogCB_DisplaySavingMessage; - return SAVE_IN_PROGRESS; - default: - saveDialogCallback = SaveDialogCB_SaveFileExists; - return SAVE_IN_PROGRESS; + saveDialogCallback = SaveDialogCB_SaveFileExists; + return SAVE_IN_PROGRESS; } - break; - case -1: //B button - case 1: //NO - HideSaveDialog(); - sub_8071700(); - return SAVE_CANCELED; + saveDialogCallback = SaveDialogCB_DisplaySavingMessage; + return SAVE_IN_PROGRESS; + default: + saveDialogCallback = SaveDialogCB_SaveFileExists; + return SAVE_IN_PROGRESS; + } + break; + case -1: //B button + case 1: //NO + HideSaveDialog(); + sub_8071700(); + return SAVE_CANCELED; } return SAVE_IN_PROGRESS; } @@ -648,15 +648,15 @@ static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void) { switch (ProcessMenuInputNoWrap_()) { - case 0: //YES - HideSaveDialog(); - saveDialogCallback = SaveDialogCB_DisplaySavingMessage; - break; - case -1: //B button - case 1: //NO - HideSaveDialog(); - sub_8071700(); - return SAVE_CANCELED; + case 0: //YES + HideSaveDialog(); + saveDialogCallback = SaveDialogCB_DisplaySavingMessage; + break; + case -1: //B button + case 1: //NO + HideSaveDialog(); + sub_8071700(); + return SAVE_CANCELED; } return SAVE_IN_PROGRESS; } @@ -749,55 +749,55 @@ static bool32 sub_80719FC(u8 *step) { switch (*step) { - case 0: + case 0: + { + u8 *addr; + u32 size; + + REG_DISPCNT = 0; + SetVBlankCallback(NULL); + remove_some_task(); + DmaClear16(3, PLTT, PLTT_SIZE); + addr = (void *)VRAM; + size = 0x18000; + while (1) { - u8 *addr; - u32 size; - - REG_DISPCNT = 0; - SetVBlankCallback(NULL); - remove_some_task(); - DmaClear16(3, PLTT, PLTT_SIZE); - addr = (void *)VRAM; - size = 0x18000; - while (1) + DmaFill16(3, 0, addr, 0x1000); + addr += 0x1000; + size -= 0x1000; + if (size <= 0x1000) { - DmaFill16(3, 0, addr, 0x1000); - addr += 0x1000; - size -= 0x1000; - if (size <= 0x1000) - { - DmaFill16(3, 0, addr, size); - break; - } + DmaFill16(3, 0, addr, size); + break; } - break; } - case 1: - ResetSpriteData(); - ResetTasks(); - ResetPaletteFade(); - dp12_8087EA4(); - break; - case 2: - SetUpWindowConfig(&gWindowConfig_81E6CE4); - InitMenuWindow(&gWindowConfig_81E6CE4); - REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; - break; - case 3: - { - u32 savedIme; - - BlendPalettes(-1, 0x10, 0); - SetVBlankCallback(sub_80719F0); - savedIme = REG_IME; - REG_IME = 0; - REG_IE |= 1; - REG_IME = savedIme; - break; - } - case 4: - return TRUE; + break; + } + case 1: + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + dp12_8087EA4(); + break; + case 2: + SetUpWindowConfig(&gWindowConfig_81E6CE4); + InitMenuWindow(&gWindowConfig_81E6CE4); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; + break; + case 3: + { + u32 savedIme; + + BlendPalettes(-1, 0x10, 0); + SetVBlankCallback(sub_80719F0); + savedIme = REG_IME; + REG_IME = 0; + REG_IE |= 1; + REG_IME = savedIme; + break; + } + case 4: + return TRUE; } (*step)++; return FALSE; @@ -826,31 +826,31 @@ static void Task_8071B64(u8 taskId) { switch (*step) { - case 0: - MenuDisplayMessageBox(); - MenuPrint(gSystemText_Saving, 2, 15); - BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); - (*step)++; - break; - case 1: - SetSecretBase2Field_9_AndHideBG(); - sub_8125E2C(); - (*step)++; - break; - case 2: - if (!sub_8125E6C()) - break; - ClearSecretBase2Field_9_2(); - (*step)++; - break; - case 3: - BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); - (*step)++; - break; - case 4: - SetMainCallback2(gMain.savedCallback); - DestroyTask(taskId); + case 0: + MenuDisplayMessageBox(); + MenuPrint(gSystemText_Saving, 2, 15); + BeginNormalPaletteFade(-1, 0, 0x10, 0, 0); + (*step)++; + break; + case 1: + SetSecretBase2Field_9_AndHideBG(); + sub_8125E2C(); + (*step)++; + break; + case 2: + if (!sub_8125E6C()) break; + ClearSecretBase2Field_9_2(); + (*step)++; + break; + case 3: + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); + (*step)++; + break; + case 4: + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskId); + break; } } } diff --git a/src/starter_choose.c b/src/starter_choose.c index 6ef410d21..4b857dba6 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -448,26 +448,26 @@ static void Task_StarterChoose5(u8 taskId) switch (ProcessMenuInputNoWrap_()) { - case 0: // YES - //Return the starter choice and exit. - gScriptResult = gTasks[taskId].tStarterSelection; - SetMainCallback2(gMain.savedCallback); - break; - case 1: // NO - case -1: // B button - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(21, 7, 27, 12); - - spriteId = gTasks[taskId].tPkmnSpriteId; - FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); - FreeOamMatrix(gSprites[spriteId].oam.matrixNum); - DestroySprite(&gSprites[spriteId]); - - spriteId = gTasks[taskId].tCircleSpriteId; - FreeOamMatrix(gSprites[spriteId].oam.matrixNum); - DestroySprite(&gSprites[spriteId]); - gTasks[taskId].func = Task_StarterChoose6; - break; + case 0: // YES + //Return the starter choice and exit. + gScriptResult = gTasks[taskId].tStarterSelection; + SetMainCallback2(gMain.savedCallback); + break; + case 1: // NO + case -1: // B button + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(21, 7, 27, 12); + + spriteId = gTasks[taskId].tPkmnSpriteId; + FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum)); + FreeOamMatrix(gSprites[spriteId].oam.matrixNum); + DestroySprite(&gSprites[spriteId]); + + spriteId = gTasks[taskId].tCircleSpriteId; + FreeOamMatrix(gSprites[spriteId].oam.matrixNum); + DestroySprite(&gSprites[spriteId]); + gTasks[taskId].func = Task_StarterChoose6; + break; } } diff --git a/src/text.c b/src/text.c index 7be72833a..02cafea48 100644 --- a/src/text.c +++ b/src/text.c @@ -1755,21 +1755,21 @@ u16 InitWindowTileData(struct Window *win, u16 startOffset) case 1: switch (win->config->fontNum) { - case 0: - case 3: - retVal = LoadFixedWidthFont(win, startOffset); - break; - case 1: - case 2: - retVal = LoadFixedWidthFont_Font1Latin(win, startOffset); - break; - case 4: - case 5: - retVal = LoadFixedWidthFont_Font4Latin(win, startOffset); - break; - case 6: - retVal = LoadFixedWidthFont_Braille(win, startOffset); - break; + case 0: + case 3: + retVal = LoadFixedWidthFont(win, startOffset); + break; + case 1: + case 2: + retVal = LoadFixedWidthFont_Font1Latin(win, startOffset); + break; + case 4: + case 5: + retVal = LoadFixedWidthFont_Font4Latin(win, startOffset); + break; + case 6: + retVal = LoadFixedWidthFont_Braille(win, startOffset); + break; } break; } @@ -1888,30 +1888,30 @@ static void MultistepLoadFont_LoadGlyph(struct Window *win, u16 startOffset, u8 switch (win->config->fontNum) { - case 0: - case 3: - buffer = win->tileData + 32 * startOffset + 64 * glyph; - LoadFixedWidthGlyph(win, glyph, buffer); - break; - case 1: - case 2: - buffer = win->tileData + 32 * (glyph + startOffset); - ApplyColors_UnshadowedFont( - &sFont1LatinGlyphs[8 * glyph], - (u32 *)buffer, - win->foregroundColor, - win->backgroundColor); - break; - case 4: - case 5: - buffer = win->tileData + 32 * (glyph + startOffset); - ApplyColors_ShadowedFont( - &gFont4LatinGlyphs[8 * glyph], - buffer, - win->foregroundColor, - win->shadowColor, - win->backgroundColor); - break; + case 0: + case 3: + buffer = win->tileData + 32 * startOffset + 64 * glyph; + LoadFixedWidthGlyph(win, glyph, buffer); + break; + case 1: + case 2: + buffer = win->tileData + 32 * (glyph + startOffset); + ApplyColors_UnshadowedFont( + &sFont1LatinGlyphs[8 * glyph], + (u32 *)buffer, + win->foregroundColor, + win->backgroundColor); + break; + case 4: + case 5: + buffer = win->tileData + 32 * (glyph + startOffset); + ApplyColors_ShadowedFont( + &gFont4LatinGlyphs[8 * glyph], + buffer, + win->foregroundColor, + win->shadowColor, + win->backgroundColor); + break; } } diff --git a/src/tv.c b/src/tv.c index ea1f13047..dfda14d82 100644 --- a/src/tv.c +++ b/src/tv.c @@ -157,61 +157,61 @@ extern u8 GabbyAndTyGetBattleNum(void); void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { switch (GabbyAndTyGetBattleNum()) { - case 1: - gSpecialVar_0x8004 = 0xE; - gSpecialVar_0x8005 = 0xD; - break; - case 2: - gSpecialVar_0x8004 = 0x5; - gSpecialVar_0x8005 = 0x6; - break; - case 3: - gSpecialVar_0x8004 = 0x12; - gSpecialVar_0x8005 = 0x11; - break; - case 4: - gSpecialVar_0x8004 = 0x15; - gSpecialVar_0x8005 = 0x16; - break; - case 5: - gSpecialVar_0x8004 = 0x8; - gSpecialVar_0x8005 = 0x9; - break; - case 6: - gSpecialVar_0x8004 = 0x13; - gSpecialVar_0x8005 = 0x14; - break; - case 7: - gSpecialVar_0x8004 = 0x17; - gSpecialVar_0x8005 = 0x18; - break; - case 8: - gSpecialVar_0x8004 = 0xA; - gSpecialVar_0x8005 = 0xB; - break; + case 1: + gSpecialVar_0x8004 = 0xE; + gSpecialVar_0x8005 = 0xD; + break; + case 2: + gSpecialVar_0x8004 = 0x5; + gSpecialVar_0x8005 = 0x6; + break; + case 3: + gSpecialVar_0x8004 = 0x12; + gSpecialVar_0x8005 = 0x11; + break; + case 4: + gSpecialVar_0x8004 = 0x15; + gSpecialVar_0x8005 = 0x16; + break; + case 5: + gSpecialVar_0x8004 = 0x8; + gSpecialVar_0x8005 = 0x9; + break; + case 6: + gSpecialVar_0x8004 = 0x13; + gSpecialVar_0x8005 = 0x14; + break; + case 7: + gSpecialVar_0x8004 = 0x17; + gSpecialVar_0x8005 = 0x18; + break; + case 8: + gSpecialVar_0x8004 = 0xA; + gSpecialVar_0x8005 = 0xB; + break; } } void sub_80BDE48(void) { switch (gSpecialVar_0x8005) { - case TVSHOW_FAN_CLUB_LETTER: - sub_80BE5FC(); - break; - case TVSHOW_RECENT_HAPPENINGS: - sub_80BE65C(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80BE6A0(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - nullsub_21(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80BE188(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80BE320(); - break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80BE5FC(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BE65C(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BE6A0(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_21(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BE188(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BE320(); + break; } } @@ -1025,28 +1025,28 @@ bool8 IsPriceDiscounted(u8 arg0) { switch (arg0) { - case 1: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) - { - return TRUE; - } - else - { - return FALSE; - } - break; - case 3: - if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) - { - return TRUE; - } - else - { - return FALSE; - } - break; - default: + case 1: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) + { + return TRUE; + } + else + { + return FALSE; + } + break; + case 3: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + { return TRUE; + } + else + { + return FALSE; + } + break; + default: + return TRUE; } } @@ -1098,18 +1098,18 @@ void sub_80BEF10(u8 strvaridx, u8 rank) { switch (rank) { - case NORMAL_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); - break; - case SUPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); - break; - case HYPER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); - break; - case MASTER_RANK: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); - break; + case NORMAL_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); + break; + case SUPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); + break; + case HYPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); + break; + case MASTER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); + break; } } @@ -1117,21 +1117,21 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) { switch (category) { - case CONTEST_COOL: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); - break; - case CONTEST_BEAUTY: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); - break; - case CONTEST_CUTE: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); - break; - case CONTEST_SMART: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); - break; - case CONTEST_TOUGH: - StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); - break; + case CONTEST_COOL: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); + break; + case CONTEST_BEAUTY: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); + break; + case CONTEST_CUTE: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); + break; + case CONTEST_SMART: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); + break; + case CONTEST_TOUGH: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); + break; } } @@ -1260,27 +1260,27 @@ void sub_80BF2C4(void) { gScriptResult = 0; switch (gSpecialVar_0x8005) { - case TVSHOW_FAN_CLUB_LETTER: - sub_80BF334(); - break; - case TVSHOW_RECENT_HAPPENINGS: - sub_80BF3A4(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80BF3DC(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80BF46C(); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80BF478(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80BF484(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80BF4BC(); - break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80BF334(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BF3A4(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BF3DC(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80BF46C(); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80BF478(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BF484(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BF4BC(); + break; } } @@ -1827,18 +1827,18 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) } ewramTVShows = &gUnknown_02007000; switch (arg2) { - case 0: - sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); - break; - case 1: - sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); - break; - case 2: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); - break; - case 3: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); - break; + case 0: + sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 1: + sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 2: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); + break; + case 3: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); + break; } sub_80BF588(gSaveBlock1.tvShows.shows); sub_80C04A0(); @@ -1899,15 +1899,15 @@ bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 i value = FALSE; switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00); switch (switchval) { - case 2: - value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); - break; - case 3: - value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); - break; - case 4: - value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); - break; + case 2: + value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 3: + value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 4: + value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; } if (value == TRUE) { sub_80BF55C(tv2->shows, gUnknown_03000722); @@ -2102,50 +2102,50 @@ void sub_80C01D4(void) { u8 i; for (i=0; i<24; i++) { switch (gSaveBlock1.tvShows.shows[i].common.var00) { - case 0: - break; - case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); - break; - case TVSHOW_RECENT_HAPPENINGS: - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); - break; - case TVSHOW_SMART_SHOPPER: - break; - case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); - break; - case TVSHOW_FISHING_ADVICE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); - break; - case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); - break; - case TVSHOW_MASS_OUTBREAK: - break; - default: - sub_80C03A8(i); + case 0: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); + break; + case TVSHOW_RECENT_HAPPENINGS: + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); + break; + case TVSHOW_SMART_SHOPPER: + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); + break; + case TVSHOW_MASS_OUTBREAK: + break; + default: + sub_80C03A8(i); } } } @@ -2508,45 +2508,45 @@ void sub_80C0788(void) { void DoTVShow(void) { if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { - case TVSHOW_FAN_CLUB_LETTER: - DoTVShowPokemonFanClubLetter(); - break; - case TVSHOW_RECENT_HAPPENINGS: - DoTVShowRecentHappenings(); - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - DoTVShowPokemonFanClubOpinions(); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - nullsub_22(); - break; - case TVSHOW_MASS_OUTBREAK: - DoTVShowPokemonNewsMassOutbreak(); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - DoTVShowBravoTrainerPokemonProfile(); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - DoTVShowBravoTrainerBattleTowerProfile(); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - DoTVShowPokemonTodaySuccessfulCapture(); - break; - case TVSHOW_SMART_SHOPPER: - DoTVShowTodaysSmartShopper(); - break; - case TVSHOW_NAME_RATER_SHOW: - DoTVShowTheNameRaterShow(); - break; - case TVSHOW_POKEMON_TODAY_FAILED: - DoTVShowPokemonTodayFailedCapture(); - break; - case TVSHOW_FISHING_ADVICE: - DoTVShowPokemonAngler(); - break; - case TVSHOW_WORLD_OF_MASTERS: - DoTVShowTheWorldOfMasters(); - break; + case TVSHOW_FAN_CLUB_LETTER: + DoTVShowPokemonFanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + DoTVShowRecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + DoTVShowPokemonFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_22(); + break; + case TVSHOW_MASS_OUTBREAK: + DoTVShowPokemonNewsMassOutbreak(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + DoTVShowBravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + DoTVShowBravoTrainerBattleTowerProfile(); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + DoTVShowPokemonTodaySuccessfulCapture(); + break; + case TVSHOW_SMART_SHOPPER: + DoTVShowTodaysSmartShopper(); + break; + case TVSHOW_NAME_RATER_SHOW: + DoTVShowTheNameRaterShow(); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + DoTVShowPokemonTodayFailedCapture(); + break; + case TVSHOW_FISHING_ADVICE: + DoTVShowPokemonAngler(); + break; + case TVSHOW_WORLD_OF_MASTERS: + DoTVShowTheWorldOfMasters(); + break; } } } @@ -2571,91 +2571,91 @@ void DoTVShowTheNameRaterShow(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; - break; - case 1: - case 3: - case 4: - case 5: - case 6: - case 7: - case 8: - if (tvShow->nameRaterShow.random == 0) { - gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { - gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { - gUnknown_020387E8 = 11; - } - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - if (tvShow->nameRaterShow.random == 0) { - gUnknown_020387E8 = 9; - } else if (tvShow->nameRaterShow.random == 1) { - gUnknown_020387E8 = 10; - } else if (tvShow->nameRaterShow.random == 2) { - gUnknown_020387E8 = 11; - } - break; - case 9: - case 10: - case 11: - sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - gUnknown_020387E8 = 12; - break; - case 13: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - gUnknown_020387E8 = 14; - break; - case 14: - sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); - sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - gUnknown_020387E8 = 18; - break; - case 15: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); - gUnknown_020387E8 = 16; - break; - case 16: - sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); - gUnknown_020387E8 = 17; - break; - case 17: - sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); - TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); - sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); - StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); - gUnknown_020387E8 = 18; - break; - case 12: - switchval = 18; - gUnknown_020387E8 = 18; - case 18: - TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); - TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; + break; + case 1: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 9: + case 10: + case 11: + sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = 12; + break; + case 13: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 14; + break; + case 14: + sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); + sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 18; + break; + case 15: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 16; + break; + case 16: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 17; + break; + case 17: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); + gUnknown_020387E8 = 18; + break; + case 12: + switchval = 18; + gUnknown_020387E8 = 18; + case 18: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + TVShowDone(); + break; } ShowFieldMessage(gTVNameRaterTextGroup[switchval]); } @@ -2667,64 +2667,64 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { - gUnknown_020387E8 = 5; - } else { - gUnknown_020387E8 = 1; - } - break; - case 1: - gUnknown_020387E8 = 2; - break; - case 2: - StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); - sub_80BF088(2, tvShow->pokemonToday.var12); - if (tvShow->pokemonToday.var12 < 4) { - gUnknown_020387E8 = 3; - } else { - gUnknown_020387E8 = 4; - } - break; - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 = 6; - break; - case 4: - gUnknown_020387E8 = 6; - break; - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - gUnknown_020387E8 = 6; - break; - case 6: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 += (Random() % 4) + 1; - break; - case 7: - case 8: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - sub_80BF638(2, tvShow->pokemonToday.species); - gUnknown_020387E8 = 11; - break; - case 9: - case 10: - StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); - TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); - gUnknown_020387E8 = 11; - break; - case 11: - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 1; + } + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); + sub_80BF088(2, tvShow->pokemonToday.var12); + if (tvShow->pokemonToday.var12 < 4) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 6; + break; + case 4: + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 7: + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + sub_80BF638(2, tvShow->pokemonToday.species); + gUnknown_020387E8 = 11; + break; + case 9: + case 10: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 11; + break; + case 11: + TVShowDone(); + break; } ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]); } @@ -2737,40 +2737,40 @@ void DoTVShowPokemonTodayFailedCapture(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); - gUnknown_020387E8 = 1; - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); - if (tvShow->pokemonTodayFailed.var11 == 1) { - gUnknown_020387E8 = 3; - } else { - gUnknown_020387E8 = 2; - } - break; - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - sub_80BF088(1, tvShow->pokemonTodayFailed.var10); - rval = (Random() % 3); - if (rval == 0) { - gUnknown_020387E8 = 5; - } else { - gUnknown_020387E8 = 4; - } - break; - case 4: - case 5: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); - gUnknown_020387E8 = 6; - break; - case 6: - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); + if (tvShow->pokemonTodayFailed.var11 == 1) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 2; + } + break; + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80BF088(1, tvShow->pokemonTodayFailed.var10); + rval = (Random() % 3); + if (rval == 0) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 4; + } + break; + case 4: + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowDone(); + break; } ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]); } @@ -2783,46 +2783,46 @@ void DoTVShowPokemonFanClubLetter(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); - gUnknown_020387E8 = 50; - break; - case 1: - rval = (Random() % 4) + 1; - if (rval == 1) { - gUnknown_020387E8 = 2; - } else { - gUnknown_020387E8 = rval + 2; - } - break; - case 2: - gUnknown_020387E8 = 51; - break; - case 3: - gUnknown_020387E8 += (Random() % 3) + 1; - break; - case 4: - case 5: - case 6: - sub_80BF79C(tvShow); - gUnknown_020387E8 = 7; - break; - case 7: - rval = (Random() % 0x1f) + 0x46; - sub_80BF088(2, rval); - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 1; - return; - case 51: - ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 3; - return; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); + gUnknown_020387E8 = 50; + break; + case 1: + rval = (Random() % 4) + 1; + if (rval == 1) { + gUnknown_020387E8 = 2; + } else { + gUnknown_020387E8 = rval + 2; + } + break; + case 2: + gUnknown_020387E8 = 51; + break; + case 3: + gUnknown_020387E8 += (Random() % 3) + 1; + break; + case 4: + case 5: + case 6: + sub_80BF79C(tvShow); + gUnknown_020387E8 = 7; + break; + case 7: + rval = (Random() % 0x1f) + 0x46; + sub_80BF088(2, rval); + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + case 51: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 3; + return; } ShowFieldMessage(gTVFanClubTextGroup[switchval]); } @@ -2834,27 +2834,27 @@ void DoTVShowRecentHappenings(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); - sub_80BF79C(tvShow); - gUnknown_020387E8 = 50; - break; - case 1: - gUnknown_020387E8 += 1 + (Random() % 3); - break; - case 2: - case 3: - case 4: - gUnknown_020387E8 = 5; - break; - case 5: - TVShowDone(); - break; - case 50: - ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); - ShowFieldMessage(gStringVar4); - gUnknown_020387E8 = 1; - return; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); + sub_80BF79C(tvShow); + gUnknown_020387E8 = 50; + break; + case 1: + gUnknown_020387E8 += 1 + (Random() % 3); + break; + case 2: + case 3: + case 4: + gUnknown_020387E8 = 5; + break; + case 5: + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; } ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]); } @@ -2866,25 +2866,25 @@ void DoTVShowPokemonFanClubOpinions(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); - gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; - break; - case 1: - case 2: - case 3: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); - gUnknown_020387E8 = 4; - break; - case 4: - TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); - sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); + gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; + break; + case 1: + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); + gUnknown_020387E8 = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); + TVShowDone(); + break; } ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]); } @@ -2914,50 +2914,50 @@ void DoTVShowInSearchOfTrainers(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.val9 > 1) { - gUnknown_020387E8 = 1; - } else { - gUnknown_020387E8 = 2; - } - break; - case 1: + case 0: + sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); + if (gSaveBlock1.gabbyAndTyData.val9 > 1) { + gUnknown_020387E8 = 1; + } else { gUnknown_020387E8 = 2; - break; - case 2: - if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { - gUnknown_020387E8 = 4; - } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { - gUnknown_020387E8 = 5; - } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { - gUnknown_020387E8 = 6; - } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { - gUnknown_020387E8 = 7; - } else { - gUnknown_020387E8 = 3; - } - break; - case 3: - StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gUnknown_020387E8 = 8; - break; - case 4: - case 5: - case 6: - case 7: - gUnknown_020387E8 = 8; - break; - case 8: - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); - StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); - gScriptResult = 1; - gUnknown_020387E8 = 0;; - TakeTVShowInSearchOfTrainersOffTheAir(); - break; + } + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { + gUnknown_020387E8 = 4; + } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { + gUnknown_020387E8 = 5; + } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { + gUnknown_020387E8 = 6; + } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { + gUnknown_020387E8 = 7; + } else { + gUnknown_020387E8 = 3; + } + break; + case 3: + StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gUnknown_020387E8 = 8; + break; + case 4: + case 5: + case 6: + case 7: + gUnknown_020387E8 = 8; + break; + case 8: + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); + StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gScriptResult = 1; + gUnknown_020387E8 = 0;; + TakeTVShowInSearchOfTrainersOffTheAir(); + break; } ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]); } @@ -2974,18 +2974,18 @@ void DoTVShowPokemonAngler(void) { } switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var03); - TVShowDone(); - break; - case 1: - TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); - StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); - sub_80BF088(2, tvShow->pokemonAngler.var02); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var03); + TVShowDone(); + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var02); + TVShowDone(); + break; } ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]); } @@ -2997,24 +2997,24 @@ void DoTVShowTheWorldOfMasters(void) { gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { - case 0: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80BF088(1, tvShow->worldOfMasters.var06); - sub_80BF088(2, tvShow->worldOfMasters.var02); - gUnknown_020387E8 = 1; - break; - case 1: - StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); - gUnknown_020387E8 = 2; - break; - case 2: - TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, - tvShow->worldOfMasters.language); - sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); - StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); - TVShowDone(); - break; + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80BF088(1, tvShow->worldOfMasters.var06); + sub_80BF088(2, tvShow->worldOfMasters.var02); + gUnknown_020387E8 = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); + TVShowDone(); + break; } ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]); } diff --git a/src/wallclock.c b/src/wallclock.c index 0f3665c65..de007c1b3 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -428,17 +428,17 @@ static void Task_SetClock4(u8 taskId) { switch (ProcessMenuInputNoWrap_()) { - case 0: //YES - PlaySE(SE_SELECT); - gTasks[taskId].func = Task_SetClock5; //Move on - return; - case -1: //B button - case 1: //NO - sub_8072DEC(); - PlaySE(SE_SELECT); - MenuZeroFillWindowRect(23, 8, 29, 13); - MenuZeroFillWindowRect(2, 16, 27, 19); - gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock + case 0: //YES + PlaySE(SE_SELECT); + gTasks[taskId].func = Task_SetClock5; //Move on + return; + case -1: //B button + case 1: //NO + sub_8072DEC(); + PlaySE(SE_SELECT); + MenuZeroFillWindowRect(23, 8, 29, 13); + MenuZeroFillWindowRect(2, 16, 27, 19); + gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock } } @@ -501,18 +501,18 @@ static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed) switch (direction) { - case MVMT_BACKWARD: - if (angle) - angle = angle - delta; - else - angle = 360 - delta; - break; - case MVMT_FORWARD: - if (angle < 360 - delta) - angle = angle + delta; - else - angle = 0; - break; + case MVMT_BACKWARD: + if (angle) + angle = angle - delta; + else + angle = 360 - delta; + break; + case MVMT_FORWARD: + if (angle < 360 - delta) + angle = angle + delta; + else + angle = 0; + break; } return angle; } @@ -522,32 +522,32 @@ static u8 AdvanceClock(u8 taskId, u8 direction) { switch (direction) { - case MVMT_BACKWARD: - if (gTasks[taskId].tMinutes > 0) - gTasks[taskId].tMinutes--; + case MVMT_BACKWARD: + if (gTasks[taskId].tMinutes > 0) + gTasks[taskId].tMinutes--; + else + { + gTasks[taskId].tMinutes = 59; + if (gTasks[taskId].tHours > 0) + gTasks[taskId].tHours--; else - { - gTasks[taskId].tMinutes = 59; - if (gTasks[taskId].tHours > 0) - gTasks[taskId].tHours--; - else - gTasks[taskId].tHours = 23; - UpdateClockPeriod(taskId, direction); - } - break; - case MVMT_FORWARD: - if (gTasks[taskId].tMinutes < 59) - gTasks[taskId].tMinutes++; + gTasks[taskId].tHours = 23; + UpdateClockPeriod(taskId, direction); + } + break; + case MVMT_FORWARD: + if (gTasks[taskId].tMinutes < 59) + gTasks[taskId].tMinutes++; + else + { + gTasks[taskId].tMinutes = 0; + if (gTasks[taskId].tHours < 23) + gTasks[taskId].tHours++; else - { - gTasks[taskId].tMinutes = 0; - if (gTasks[taskId].tHours < 23) - gTasks[taskId].tHours++; - else - gTasks[taskId].tHours = 0; - UpdateClockPeriod(taskId, direction); - } - break; + gTasks[taskId].tHours = 0; + UpdateClockPeriod(taskId, direction); + } + break; } return 0; } @@ -559,28 +559,28 @@ static void UpdateClockPeriod(u8 taskId, u8 direction) switch (direction) { - case MVMT_BACKWARD: - switch (hours) - { - case 11: - gTasks[taskId].tPeriod = PERIOD_AM; - break; - case 23: - gTasks[taskId].tPeriod = PERIOD_PM; - break; - } + case MVMT_BACKWARD: + switch (hours) + { + case 11: + gTasks[taskId].tPeriod = PERIOD_AM; break; - case MVMT_FORWARD: - switch (hours) - { - case 0: - gTasks[taskId].tPeriod = PERIOD_AM; - break; - case 12: - gTasks[taskId].tPeriod = PERIOD_PM; - break; - } + case 23: + gTasks[taskId].tPeriod = PERIOD_PM; break; + } + break; + case MVMT_FORWARD: + switch (hours) + { + case 0: + gTasks[taskId].tPeriod = PERIOD_AM; + break; + case 12: + gTasks[taskId].tPeriod = PERIOD_PM; + break; + } + break; } } -- cgit v1.2.3 From 8ba066d303825722a78ffbc67cecc0f4598f6f1e Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 11:37:35 +0200 Subject: Remove duplicate strings.h declarations --- include/menu.h | 6 +++--- src/battle_party_menu.c | 11 +---------- src/battle_setup.c | 9 ++++----- src/berry_tag_screen.c | 5 +---- src/coins.c | 3 +-- src/contest_painting.c | 38 +------------------------------------- src/item.c | 2 +- src/item_use.c | 18 +----------------- src/main_menu.c | 22 +++++----------------- src/mauville_old_man.c | 3 +-- src/menu.c | 8 +++----- src/party_menu.c | 45 +-------------------------------------------- src/player_pc.c | 9 ++------- src/pokedex.c | 7 +------ src/save_failed_screen.c | 8 +------- src/shop.c | 5 ++--- src/start_menu.c | 7 +++---- src/starter_choose.c | 4 +--- src/string_util.c | 29 ++++++++--------------------- 19 files changed, 41 insertions(+), 198 deletions(-) diff --git a/include/menu.h b/include/menu.h index 6a11ffdc2..5b0f35a27 100644 --- a/include/menu.h +++ b/include/menu.h @@ -5,7 +5,7 @@ struct MenuAction { - u8 *text; + const u8 *text; u8 (*func)(); }; @@ -50,7 +50,7 @@ void InitYesNoMenu(u8, u8, u8); void DisplayYesNoMenu(u8, u8, u32); s8 ProcessMenuInputNoWrap_(void); u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); -u8 sub_8072A18(u8 *, u8, u16, u8, u32); +u8 sub_8072A18(const u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(u8 *, u8, u16, u8, u8, u32); void MenuPrint_RightAligned(u8 *, u8, u8); @@ -59,7 +59,7 @@ void sub_8072BD8(u8 *, u8, u8, u16); u8 *sub_8072C14(u8 *, s32, u8, u8); u8 *sub_8072C44(u8 *, s32, u8, u8); u8 *sub_8072C74(u8 *, const u8 *, u8, u8); -u8 sub_8072CA4(u8 *s); +u8 sub_8072CA4(const u8 *s); u8 sub_8072CBC(void); void sub_8072CD4(u8 *, u8 *, u8 *); u32 MenuUpdateWindowText_OverrideLineLength(u8); diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 690ef99be..359517ecd 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -8,6 +8,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" @@ -58,16 +59,6 @@ extern u8 gUnknown_0202E8F6; extern u8 gUnknown_02038473; extern u8 gUnknown_020384F0; extern void (*gUnknown_03004AE4)(); //don't know types yet -extern const u8 gOtherText_CantSwitchPokeWithYours[]; -extern const u8 gOtherText_NoEnergyLeft[]; -extern const u8 gOtherText_EGGCantBattle[]; -extern const u8 gOtherText_AlreadySelected[]; -extern const u8 gOtherText_CantBeSwitched[]; -extern const u8 gOtherText_AlreadyBattle[]; -extern const u8 OtherText_Summary[]; -extern const u8 gOtherText_CancelNoTerminator[]; -extern const u8 OtherText_Shift[]; -extern const u8 OtherText_SendOut[]; static void Task_809527C(u8); static void Task_80952B4(u8); diff --git a/src/battle_setup.c b/src/battle_setup.c index 0753fba70..61b9bb1e9 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -23,6 +23,7 @@ #include "species.h" #include "starter_choose.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" #include "trainer.h" @@ -45,8 +46,6 @@ EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL; EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL; EWRAM_DATA u8 *gTrainerBattleEndScript = NULL; -extern u8 gOtherText_CancelWithTerminator[]; - extern u16 gBattleTypeFlags; extern u16 gScriptLastTalked; extern u8 gUnknown_02024D26; @@ -1169,12 +1168,12 @@ void PlayTrainerEncounterMusic(void) } //Returns an empty string if a null pointer was passed, otherwise returns str -u8 *SanitizeString(u8 *str) +u8 *SanitizeString(const u8 *str) { if (str) - return str; + return (u8 *) str; else - return gOtherText_CancelWithTerminator; + return (u8 *) gOtherText_CancelWithTerminator; } u8 *sub_808281C(void) diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index 511b88c5a..f0bcb4f27 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -12,6 +12,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" @@ -38,10 +39,6 @@ extern u16 gUnknown_030041B4; extern const struct SpriteSheet gUnknown_083C1F74; extern const struct SpritePalette gUnknown_083C1F7C; -extern u8 gOtherText_ThreeQuestions2[]; -extern u8 gOtherText_Size[]; -extern u8 gOtherText_Firm[]; -extern u8 gContestStatsText_Unknown1[]; extern u8 *gUnknown_0841192C[]; extern u8 gBerryCheck_Gfx[]; diff --git a/src/coins.c b/src/coins.c index 193ea249e..3c6356612 100644 --- a/src/coins.c +++ b/src/coins.c @@ -2,11 +2,10 @@ #include "coins.h" #include "menu.h" #include "string_util.h" +#include "strings.h" #define MAX_COINS 9999 -extern u8 gOtherText_Coins2[]; - void UpdateCoinsWindow(s32 a, u8 b, u8 c) { PrintCoins(a, 4, b + 2, c + 1); diff --git a/src/contest_painting.c b/src/contest_painting.c index 2ef50ee17..c970deaf2 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -8,6 +8,7 @@ #include "rng.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "text.h" extern u8 unk_2000000[]; @@ -28,43 +29,6 @@ extern const struct MonCoords gMonFrontPicCoords[]; extern const struct SpriteSheet gMonBackPicTable[]; extern const struct MonCoords gMonBackPicCoords[]; extern void *gUnknown_081FAF4C[]; -extern const u8 OtherText_Cool[]; -extern const u8 OtherText_Beauty2[]; -extern const u8 OtherText_Cute[]; -extern const u8 OtherText_Smart[]; -extern const u8 OtherText_Tough[]; -extern const u8 OtherText_NonstopSuperCool[]; -extern const u8 OtherText_Terminator6[]; -extern const u8 OtherText_GoodLookingPoke[]; -extern const u8 OtherText_Terminator7[]; -extern const u8 OtherText_MarvelousGreat[]; -extern const u8 OtherText_Terminator8[]; -extern const u8 OtherText_CenturyLastVenus[]; -extern const u8 OtherText_Terminator9[]; -extern const u8 OtherText_Terminator10[]; -extern const u8 OtherText_DazzlingSmile[]; -extern const u8 OtherText_PokeCenterIdol[]; -extern const u8 OtherText_Terminator11[]; -extern const u8 OtherText_LovelyAndSweet[]; -extern const u8 OtherText_Terminator12[]; -extern const u8 OtherText_ThePretty[]; -extern const u8 OtherText_WinningPortrait[]; -extern const u8 OtherText_GiveUsWink[]; -extern const u8 OtherText_Terminator13[]; -extern const u8 OtherText_SmartnessMaestro[]; -extern const u8 OtherText_Terminator14[]; -extern const u8 OtherText_ChosenPokeAmong[]; -extern const u8 OtherText_Terminator15[]; -extern const u8 OtherText_TheExcellent[]; -extern const u8 OtherText_ItsMomentOfElegance[]; -extern const u8 OtherText_PowerfullyMuscular[]; -extern const u8 OtherText_Terminator16[]; -extern const u8 OtherText_StrongErEst[]; -extern const u8 OtherText_Terminator17[]; -extern const u8 OtherText_MightyTough[]; -extern const u8 OtherText_Exclamation[]; -extern const u8 gContestText_ContestWinner[]; -extern const u8 gOtherText_Unknown1[]; static const u16 gPictureFramePalettes[][16] = { diff --git a/src/item.c b/src/item.c index 7257c3649..ad2b9aed3 100644 --- a/src/item.c +++ b/src/item.c @@ -1,10 +1,10 @@ #include "global.h" #include "item.h" #include "string_util.h" +#include "strings.h" extern struct Berry *GetBerryInfo(u8 berry); -extern u8 gOtherText_Berry2[]; extern u8 gUnknown_02038560; extern struct Item gItems[]; diff --git a/src/item_use.c b/src/item_use.c index 116a57226..cc961836b 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -22,6 +22,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "vars.h" @@ -74,23 +75,6 @@ extern u8 GetItemEffectType(); extern void sub_808B020(void); extern void sub_810B96C(void); -extern u8 gOtherText_DadsAdvice[]; -extern u8 gOtherText_CantGetOffBike[]; -extern u8 gOtherText_NoResponse[]; -extern u8 gOtherText_ItemfinderResponding[]; -extern u8 gOtherText_ItemfinderItemUnderfoot[]; -extern u8 gOtherText_Coins3[]; -extern u8 gOtherText_BootedHM[]; -extern u8 gOtherText_BootedTM[]; -extern u8 gOtherText_ContainsMove[]; -extern u8 gOtherText_UsedItem[]; -extern u8 gOtherText_RepelLingers[]; -extern u8 gOtherText_UsedFlute[]; -extern u8 gOtherText_UsedRepel[]; -extern u8 gOtherText_BoxIsFull[]; -extern u8 gOtherText_WontHaveAnyEffect[]; -extern u8 gOtherText_SnapConfusion[]; - extern u16 gScriptItemId; extern u16 gBattleTypeFlags; diff --git a/src/main_menu.c b/src/main_menu.c index 50fefc471..e5ab0c822 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -15,6 +15,7 @@ #include "sound.h" #include "species.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "text.h" #include "title_screen.h" @@ -41,18 +42,6 @@ extern const u8 gBirchSpeech_WhatsYourName[]; extern u8 gBirchSpeech_SoItsPlayer[]; extern u8 gBirchSpeech_AhOkayYouArePlayer[]; extern u8 gBirchSpeech_AreYouReady[]; -extern u8 gSaveFileDeletedMessage[]; -extern u8 gSaveFileCorruptMessage[]; -extern u8 gBoardNotInstalledMessage[]; -extern u8 gBatteryDryMessage[]; -extern u8 gMainMenuString_Continue[]; -extern u8 gMainMenuString_NewGame[]; -extern u8 gMainMenuString_MysteryEvents[]; -extern u8 gMainMenuString_Option[]; -extern u8 gMainMenuString_Player[]; -extern u8 gMainMenuString_Time[]; -extern u8 gMainMenuString_Pokedex[]; -extern u8 gMainMenuString_Badges[]; extern const struct MonCoords gMonFrontPicCoords[]; extern const struct SpriteSheet gMonFrontPicTable[]; @@ -68,7 +57,6 @@ extern const u8 gUnknown_081E764C[]; extern const u8 gBirchIntroShadowGfx[]; extern const u8 gUnknown_081E7834[]; extern const u8 gUnknown_081E796C[]; -extern const u8 gSystemText_NewPara[]; extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[]; @@ -115,7 +103,7 @@ static void Task_MainMenuProcessKeyInput(u8 taskId); static void Task_MainMenuPressedA(u8 taskId); static void Task_MainMenuPressedB(u8 taskId); static void HighlightCurrentMenuItem(u8 layout, u8 menuItem); -static void PrintMainMenuItem(u8 *text, u8 left, u8 top); +static void PrintMainMenuItem(const u8 *text, u8 left, u8 top); static void PrintSaveFileInfo(void); static void PrintPlayerName(void); static void PrintPlayTime(void); @@ -657,7 +645,7 @@ void HighlightCurrentMenuItem(u8 layout, u8 menuItem) } } -void PrintMainMenuItem(u8 *text, u8 left, u8 top) +void PrintMainMenuItem(const u8 *text, u8 left, u8 top) { u8 i; u8 buffer[32]; @@ -1646,9 +1634,9 @@ static void SetPresetPlayerName(u8 index) u8 *name; if (gSaveBlock2.playerGender == MALE) - name = gMalePresetNames[index].text; + name = (u8 *) gMalePresetNames[index].text; else - name = gFemalePresetNames[index].text; + name = (u8 *) gFemalePresetNames[index].text; for (i = 0; i < 7; i++) gSaveBlock2.playerName[i] = name[i]; diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c index 2fa889a15..d6fb33917 100644 --- a/src/mauville_old_man.c +++ b/src/mauville_old_man.c @@ -4,6 +4,7 @@ #include "rng.h" #include "script.h" #include "string_util.h" +#include "strings.h" extern u16 gScriptResult; extern u16 gSpecialVar_0x8004; @@ -14,8 +15,6 @@ extern void sub_80F83D0(void); extern void sub_80F7F80(u8); extern u16 sub_80EB8EC(void); extern void sub_80F7DC0(void); -extern u8 gOtherText_Is[]; -extern u8 gOtherText_DontYouAgree[]; extern u32 gUnknown_083E5388[]; extern u32 gUnknown_083E53A8[]; diff --git a/src/menu.c b/src/menu.c index 3759d22c9..f9b9dbf0b 100644 --- a/src/menu.c +++ b/src/menu.c @@ -6,6 +6,7 @@ #include "script.h" #include "songs.h" #include "sound.h" +#include "strings.h" #include "text.h" #include "text_window.h" @@ -22,9 +23,6 @@ struct Menu u8 columnXCoords[8]; }; -extern u8 OtherText_Yes[]; -extern u8 OtherText_No[]; - static void MultistepInitMenuWindowInternal(const struct WindowConfig *, u16); static void InitMenuWindowInternal(const struct WindowConfig *, u16); static bool8 sub_80723D4(void); @@ -603,7 +601,7 @@ u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4) return sub_8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4); } -u8 sub_8072A18(u8 *text, u8 left, u16 top, u8 width, u32 a5) +u8 sub_8072A18(const u8 *text, u8 left, u16 top, u8 width, u32 a5) { return sub_8004FD0(gMenuWindowPtr, 0, text, gMenuTextTileOffset, left, top, width, a5); } @@ -659,7 +657,7 @@ u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4) return AlignString(gMenuWindowPtr, a1, a2, a3, a4); } -u8 sub_8072CA4(u8 *str) +u8 sub_8072CA4(const u8 *str) { return GetStringWidth(gMenuWindowPtr, str); } diff --git a/src/party_menu.c b/src/party_menu.c index 8eb181f46..82f234ae4 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -5,6 +5,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "sprite.h" #include "palette.h" @@ -86,50 +87,6 @@ extern const u16 gUnknown_08376504[]; extern void (*const gUnknown_08376B54[])(u8); extern const u8 *const gUnknown_08376D04[DATA_COUNT]; extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; -extern const u8 gOtherText_TallPlusAndRightArrow[]; -extern const u8 gOtherText_WontHaveAnyEffect[]; -extern const u8 gOtherText_ElevatedTo[]; -extern const u8 gOtherText_MailMustBeRemoved[]; -extern const u8 gOtherText_AlreadyHolding[]; -extern const u8 gOtherText_TakenAndReplaced[]; -extern const u8 gOtherText_BagFullCannotRemoveItem[]; -extern const u8 gOtherText_WasGivenToHold[]; -extern const u8 gOtherText_PokeHoldingItemCantMail[]; -extern const u8 gOtherText_MailTransferredMailbox[]; -extern const u8 gOtherText_NotHoldingAnything[]; -extern const u8 gOtherText_ReceivedTheThingFrom[]; -extern const u8 gOtherText_SendRemovedMailPrompt[]; -extern const u8 gOtherText_MailTaken[]; -extern const u8 gOtherText_MailWasSent[]; -extern const u8 gOtherText_MailboxIsFull[]; -extern const u8 gOtherText_MailRemovedMessageLost[]; -extern const u8 gOtherText_WantsToLearn[]; -extern const u8 gOtherText_NotCompatible[]; -extern const u8 gOtherText_AlreadyKnows[]; -extern const u8 gOtherText_LearnedMove[]; -extern const u8 gOtherText_WhichMoveToForget2[]; -extern const u8 gOtherText_ForgetMove123_2[]; -extern const u8 gOtherText_StopTryingTo[]; -extern const u8 gOtherText_DidNotLearnMove2[]; -extern const u8 gOtherText_RegainedHealth[]; -extern const u8 gOtherText_HPRestoredBy[]; -extern const u8 gOtherText_CuredPoisoning[]; -extern const u8 gOtherText_WokeUp[]; -extern const u8 gOtherText_BurnHealed[]; -extern const u8 gOtherText_ThawedOut[]; -extern const u8 gOtherText_CuredParalysis[]; -extern const u8 gOtherText_SnapConfusion[]; -extern const u8 gOtherText_GotOverLove[]; -extern const u8 gOtherText_BecameHealthy[]; -extern const u8 gOtherText_Hp2[]; -extern const u8 gOtherText_Attack[]; -extern const u8 gOtherText_Defense[]; -extern const u8 gOtherText_Speed[]; -extern const u8 gOtherText_SpAtk2[]; -extern const u8 gOtherText_SpDef2[]; -extern const u8 gOtherText_WasRaised[]; -extern const u8 gOtherText_PPIncreased[]; -extern const u8 gOtherText_PPRestored[]; extern const u8 gMoveNames[][13]; extern const u8 *const gItemEffectTable[]; diff --git a/src/player_pc.c b/src/player_pc.c index 048c79862..c012afb02 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -10,6 +10,7 @@ #include "script.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" #define NEW_GAME_PC_ITEMS(i, type) ((u16)(gNewGamePCItems + type)[i * 2]) @@ -21,7 +22,7 @@ enum QUANTITY, }; -extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); +extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); extern void DoPlayerPCDecoration(u8); extern void BuyMenuFreeMemory(void); extern void DestroyVerticalScrollIndicator(u8); @@ -40,13 +41,8 @@ extern void sub_80F98DC(int); extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args -extern u8 gOtherText_NoItems[]; - extern u16 gNewGamePCItems[]; -extern u8 gOtherText_WhatWillYouDo[]; -extern u8 gOtherText_NoMailHere[]; - extern u8 *gUnknown_02039314; extern struct MenuAction gUnknown_08406298[]; @@ -57,7 +53,6 @@ extern u8 gUnknown_08406327[]; extern u8 gUnknown_08406330[]; extern u8 gUnknown_0840631E[]; extern u8 gUnknown_08406318[]; -extern u8 gOtherText_CancelNoTerminator[]; extern u8 gUnknown_030007B4; extern u8 unk_201FE00[]; diff --git a/src/pokedex.c b/src/pokedex.c index 03a7d916a..51552789b 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -12,6 +12,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings.h" #include "task.h" // I'm #define-ing these just for now so I can keep using the old unkXXX member names @@ -90,12 +91,6 @@ extern u8 gUnknown_08E96ACC[]; extern u8 gUnknown_08E96B58[]; extern struct PokedexEntry gPokedexEntries[]; -extern u8 gDexText_UnknownPoke[]; -extern u8 gDexText_UnknownHeight[]; -extern u8 gDexText_UnknownWeight[]; -extern u8 gDexText_CryOf[]; -extern u8 gDexText_SizeComparedTo[]; -extern u8 gDexText_RegisterComplete[]; extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume); extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16); diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index 0de1e5ca9..a3de0bd00 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -7,6 +7,7 @@ #include "palette.h" #include "save.h" #include "sprite.h" +#include "strings.h" #include "task.h" #include "text.h" @@ -36,13 +37,6 @@ extern u32 gGameContinueCallback; extern u8 gBirchHelpGfx[]; -extern u8 gSystemText_SaveFailedBackupCheck[]; -extern u8 gSystemText_CheckCompleteSaveAttempt[]; -extern u8 gSystemText_BackupDamagedGameContinue[]; -extern u8 gSystemText_SaveCompletedPressA[]; -extern u8 gSystemText_SaveCompletedGameEnd[]; -extern u8 gSystemText_GameplayEnded[]; - extern u8 gBirchGrassTilemap[]; extern u8 gBirchBagTilemap[]; extern u8 gBirchBagGrassPal[0x40]; diff --git a/src/shop.c b/src/shop.c index 9f4a360df..81c403e92 100644 --- a/src/shop.c +++ b/src/shop.c @@ -9,6 +9,7 @@ #include "script.h" #include "sound.h" #include "sprite.h" +#include "strings.h" #include "task.h" struct UnknownShopStruct @@ -28,8 +29,6 @@ extern struct MenuAction gUnknown_083CC6D0[]; extern u8 gUnknown_083CC6E8[]; extern u8 gUnknown_083CC6EB[]; -extern u8 gOtherText_CanIHelpYou[]; -extern u8 gOtherText_AnythingElse[]; extern u8 gBuyMenuFrame_Gfx[]; extern u16 gBuyMenuFrame_Tilemap[]; @@ -38,7 +37,7 @@ extern u16 gUnknown_083CC710[2]; extern void sub_80A6300(void); extern void sub_80BE3BC(void); -extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16); +extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); extern u8 sub_807D770(void); extern void pal_fill_black(void); extern void sub_80B3764(int, int); diff --git a/src/start_menu.c b/src/start_menu.c index 8d7e50ea5..231e4d608 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -21,6 +21,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "trainer_card.h" @@ -54,10 +55,8 @@ EWRAM_DATA static u8 sNumStartMenuActions = 0; EWRAM_DATA static u8 sCurrentStartMenuActions[10] = {0}; //Text strings -extern u8 gSystemText_Saving[]; extern u8 gSaveText_PlayerSavedTheGame[]; extern u8 gSaveText_DontTurnOff[]; -extern u8 gSystemText_SaveErrorExchangeBackup[]; extern u8 gSaveText_ThereIsAlreadyAFile[]; extern u8 gSaveText_ThereIsADifferentFile[]; extern u8 gSaveText_WouldYouLikeToSave[]; @@ -113,7 +112,7 @@ static u8 SaveCallback1(void); static u8 SaveCallback2(void); static void sub_807160C(void); static u8 RunSaveDialogCallback(void); -static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void)); +static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)); static void Task_SaveDialog(u8 taskId); static void sub_8071700(void); static void HideSaveDialog(void); @@ -517,7 +516,7 @@ void InitSaveDialog(void) CreateTask(Task_SaveDialog, 0x50); } -static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void)) +static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void)) { StringExpandPlaceholders(gStringVar4, ptr); MenuDisplayMessageBox(); diff --git a/src/starter_choose.c b/src/starter_choose.c index 4b857dba6..35647473c 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -11,6 +11,7 @@ #include "species.h" #include "sprite.h" #include "string_util.h" +#include "strings.h" #include "task.h" #include "trig.h" @@ -20,14 +21,11 @@ struct MonCoords }; extern void * const gUnknown_081FAF4C[]; -extern const u8 gOtherText_DoYouChoosePoke[]; extern u16 gScriptResult; extern const u8 gSpeciesNames[][11]; -extern const u8 gOtherText_Poke[]; extern const struct SpriteSheet gMonFrontPicTable[]; extern const struct MonCoords gMonFrontPicCoords[]; extern const struct SpritePalette gMonPaletteTable[]; -extern const u8 gOtherText_BirchInTrouble[]; extern struct SpriteTemplate gUnknown_02024E8C; //-------------------------------------------------- diff --git a/src/string_util.c b/src/string_util.c index 957d70153..9686256a1 100644 --- a/src/string_util.c +++ b/src/string_util.c @@ -1,5 +1,6 @@ #include "global.h" #include "string_util.h" +#include "strings.h" #include "text.h" u8 gUnknownStringVar[16]; @@ -23,20 +24,6 @@ static const s32 sPowersOfTen[] = 1000000000, }; -extern u8 gExpandedPlaceholder_Empty[]; -extern u8 gExpandedPlaceholder_Kun[]; -extern u8 gExpandedPlaceholder_Chan[]; -extern u8 gExpandedPlaceholder_Sapphire[]; -extern u8 gExpandedPlaceholder_Ruby[]; -extern u8 gExpandedPlaceholder_Aqua[]; -extern u8 gExpandedPlaceholder_Magma[]; -extern u8 gExpandedPlaceholder_Archie[]; -extern u8 gExpandedPlaceholder_Maxie[]; -extern u8 gExpandedPlaceholder_Kyogre[]; -extern u8 gExpandedPlaceholder_Groudon[]; -extern u8 gExpandedPlaceholder_Brendan[]; -extern u8 gExpandedPlaceholder_May[]; - u8 *StringCopy10(u8 *dest, const u8 *src) { u8 i; @@ -473,17 +460,17 @@ static u8 *ExpandPlaceholder_StringVar3(void) static u8 *ExpandPlaceholder_KunChan(void) { if (gSaveBlock2.playerGender == MALE) - return gExpandedPlaceholder_Kun; + return (u8 *) gExpandedPlaceholder_Kun; else - return gExpandedPlaceholder_Chan; + return (u8 *) gExpandedPlaceholder_Chan; } static u8 *ExpandPlaceholder_RivalName(void) { if (gSaveBlock2.playerGender == MALE) - return gExpandedPlaceholder_May; + return (u8 *) gExpandedPlaceholder_May; else - return gExpandedPlaceholder_Brendan; + return (u8 *) gExpandedPlaceholder_Brendan; } #define VERSION_DEPENDENT_PLACEHOLDER_LIST \ @@ -497,11 +484,11 @@ static u8 *ExpandPlaceholder_RivalName(void) #ifdef SAPPHIRE #define X(ph, r, s) \ -static u8 *ExpandPlaceholder_##ph(void) { return gExpandedPlaceholder_##s; } +static u8 *ExpandPlaceholder_##ph(void) { return (u8 *) gExpandedPlaceholder_##s; } VERSION_DEPENDENT_PLACEHOLDER_LIST #else #define X(ph, r, s) \ -static u8 *ExpandPlaceholder_##ph(void) { return gExpandedPlaceholder_##r; } +static u8 *ExpandPlaceholder_##ph(void) { return (u8 *) gExpandedPlaceholder_##r; } VERSION_DEPENDENT_PLACEHOLDER_LIST #endif @@ -530,7 +517,7 @@ u8 *GetExpandedPlaceholder(u32 id) }; if (id >= ARRAY_COUNT(funcs)) - return gExpandedPlaceholder_Empty; + return (u8 *) gExpandedPlaceholder_Empty; else return funcs[id](); } -- cgit v1.2.3 From 17d352b0f8f2e17c02fac0b8e3e2238b7cd44f37 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 12:46:28 +0200 Subject: Add strings2.h --- include/menu.h | 4 +- include/strings2.h | 322 +++++++++++++++++++++++++++++++++++++++++++ src/battle_records.c | 4 +- src/calculate_base_damage.c | 2 +- src/clear_save_data_menu.c | 3 +- src/diploma.c | 5 +- src/easy_chat.c | 3 +- src/field_player_avatar.c | 6 +- src/field_region_map.c | 3 +- src/link.c | 3 +- src/mail.c | 3 +- src/menu.c | 4 +- src/mystery_event_menu.c | 8 +- src/naming_screen.c | 5 +- src/option_menu.c | 25 +--- src/pokemon_2.c | 2 +- src/pokemon_size_record.c | 2 +- src/pokemon_summary_screen.c | 13 +- src/record_mixing.c | 3 +- src/save_menu_util.c | 6 +- src/start_menu.c | 12 +- src/trainer_card.c | 13 +- src/wallclock.c | 2 +- 23 files changed, 348 insertions(+), 105 deletions(-) create mode 100644 include/strings2.h diff --git a/include/menu.h b/include/menu.h index 5b0f35a27..cb5efa448 100644 --- a/include/menu.h +++ b/include/menu.h @@ -23,7 +23,7 @@ void MenuZeroFillWindowRect(u8, u8, u8, u8); void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8); void MenuZeroFillScreen(void); void MenuDrawTextWindow(u8, u8, u8, u8); -void sub_8071F40(u8 *); +void sub_8071F40(const u8 *); void sub_8071F60(u8, u8, u8, u8); u16 unref_sub_8071F98(u8, u8); void unref_sub_8071FBC(u16, u8, u8, u8, u8); @@ -55,7 +55,7 @@ u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); int sub_8072AB0(u8 *, u8, u16, u8, u8, u32); void MenuPrint_RightAligned(u8 *, u8, u8); void sub_8072B80(u8 *, u8, u8, u8 *); -void sub_8072BD8(u8 *, u8, u8, u16); +void sub_8072BD8(const u8 *, u8, u8, u16); u8 *sub_8072C14(u8 *, s32, u8, u8); u8 *sub_8072C44(u8 *, s32, u8, u8); u8 *sub_8072C74(u8 *, const u8 *, u8, u8); diff --git a/include/strings2.h b/include/strings2.h new file mode 100644 index 000000000..600bb2d31 --- /dev/null +++ b/include/strings2.h @@ -0,0 +1,322 @@ +#ifndef GUARD_STRINGS2_H +#define GUARD_STRINGS2_H + +// ??? +extern const u8 gOtherText_TopSpeed[]; + +// berry_blender +extern const u8 gMultiText_BerryBlenderMaxSpeedRecord[]; +extern const u8 gMultiText_2P3P4P[]; +extern const u8 gMultiText_Saving[]; + +// link +extern const u8 gMultiText_LinkError[]; + +// option_menu +extern const u8 gSystemText_OptionMenu[]; +extern const u8 gSystemText_TextSpeed[]; +extern const u8 gSystemText_BattleScene[]; +extern const u8 gSystemText_BattleStyle[]; +extern const u8 gSystemText_Sound[]; +extern const u8 gSystemText_Frame[]; +extern const u8 gSystemText_Cancel[]; +extern const u8 gSystemText_ButtonMode[]; +extern const u8 gSystemText_Slow[]; +extern const u8 gSystemText_Mid[]; +extern const u8 gSystemText_Fast[]; +extern const u8 gSystemText_On[]; +extern const u8 gSystemText_Off[]; +extern const u8 gSystemText_Shift[]; +extern const u8 gSystemText_Set[]; +extern const u8 gSystemText_Mono[]; +extern const u8 gSystemText_Stereo[]; +extern const u8 gSystemText_Type[]; +extern const u8 gSystemText_Terminator[]; +extern const u8 gSystemText_Normal[]; +extern const u8 gSystemText_LR[]; +extern const u8 gSystemText_LA[]; + +// start_menu +extern const u8 SystemText_Pokedex[]; +extern const u8 SystemText_Pokemon[]; +extern const u8 SystemText_BAG[]; +extern const u8 SystemText_Pokenav[]; +extern const u8 SystemText_Player[]; +extern const u8 SystemText_Save[]; +extern const u8 SystemText_Option[]; +extern const u8 SystemText_Exit[]; +extern const u8 SystemText_Retire[]; +extern const u8 gOtherText_SafariStock[]; + +// mystery_event_menu +extern const u8 gSystemText_LinkStandby[]; +extern const u8 gSystemText_LoadEventPressA[]; +extern const u8 gSystemText_LoadingEvent[]; +extern const u8 gSystemText_DontCutLink[]; +extern const u8 gSystemText_EventLoadSuccess[]; +extern const u8 gSystemText_LoadingError[]; + +// field_region_map +extern const u8 gOtherText_Hoenn[]; + +// field_player_avatar +extern const u8 gOtherText_OhABite[]; +extern const u8 gOtherText_PokeOnHook[]; +extern const u8 gOtherText_NotEvenANibble[]; +extern const u8 gOtherText_ItGotAway[]; + +// trade +extern const u8 gTradeText_WillBeSent[]; +extern const u8 gTradeText_ByeBye[]; +extern const u8 gTradeText_SentOverPoke[]; +extern const u8 gTradeText_TakeGoodCare[]; +extern const u8 TradeText_Cancel[]; +extern const u8 TradeText_ChoosePoke[]; +extern const u8 TradeText_Summary1[]; +extern const u8 TradeText_Trade1[]; +extern const u8 TradeText_CancelTradePrompt[]; +extern const u8 TradeText_PressBToExit[]; +extern const u8 TradeText_Summary2[]; +extern const u8 TradeText_Trade2[]; +extern const u8 TradeText_LinkStandby[]; +extern const u8 TradeText_TradeCancelled[]; +extern const u8 TradeText_OnlyPoke[]; +extern const u8 TradeText_NonTradablePoke[]; +extern const u8 TradeText_WaitingForFriend[]; +extern const u8 TradeText_WantToTrade[]; +extern const u8 gTradeText_TradeOkayPrompt[]; +extern const u8 gOtherText_Terminator2[]; +extern const u8 gOtherText_ControlAndMiscText[]; +extern const u8 gOtherText_FourQuestions[]; + +// easy_chat +extern const u8 gEasyChatGroupName_Pokemon[]; +extern const u8 gEasyChatGroupName_Trainer[]; +extern const u8 gEasyChatGroupName_Status[]; +extern const u8 gEasyChatGroupName_Battle[]; +extern const u8 gEasyChatGroupName_Greetings[]; +extern const u8 gEasyChatGroupName_People[]; +extern const u8 gEasyChatGroupName_Voices[]; +extern const u8 gEasyChatGroupName_Speech[]; +extern const u8 gEasyChatGroupName_Endings[]; +extern const u8 gEasyChatGroupName_Feelings[]; +extern const u8 gEasyChatGroupName_Conditions[]; +extern const u8 gEasyChatGroupName_Actions[]; +extern const u8 gEasyChatGroupName_Lifestyle[]; +extern const u8 gEasyChatGroupName_Hobbies[]; +extern const u8 gEasyChatGroupName_Time[]; +extern const u8 gEasyChatGroupName_Misc[]; +extern const u8 gEasyChatGroupName_Adjectives[]; +extern const u8 gEasyChatGroupName_Events[]; +extern const u8 gEasyChatGroupName_Move1[]; +extern const u8 gEasyChatGroupName_Move2[]; +extern const u8 gEasyChatGroupName_TrendySaying[]; +extern const u8 gEasyChatGroupName_Pokemon2[]; +extern const u8 gOtherText_ThreeQuestions[]; + +// mail +extern const u8 gOtherText_From[]; + +// record_mixing +extern const u8 gOtherText_MixingRecordsWithFriend[]; +extern const u8 gOtherText_MixingComplete[]; + +// trainer_card +extern const u8 gOtherText_TrainersTrainerCard[]; +extern const u8 gOtherText_FirstHOF[]; +extern const u8 gOtherText_LinkCableBattles[]; +extern const u8 gOtherText_BattleTowerWinRecord[]; +extern const u8 gOtherText_ContestRecord[]; +extern const u8 gOtherText_MixingRecord[]; +extern const u8 gOtherText_TradeRecord[]; +extern const u8 gOtherText_Boy[]; +extern const u8 gOtherText_Girl[]; + +// save_menu_util +extern const u8 gOtherText_Player[]; +extern const u8 gOtherText_Badges[]; +extern const u8 gOtherText_Pokedex[]; +extern const u8 gOtherText_PlayTime[]; + +// naming_screen +extern const u8 gOtherText_SentToPC[]; +extern const u8 OtherText_YourName[]; +extern const u8 OtherText_BoxName[]; +extern const u8 OtherText_PokeName[]; + +// pokemon_size_record +extern const u8 gOtherText_Marco[]; + +// roulette +extern const u8 gOtherText_Coins[]; + +// battle_records +extern const u8 gOtherText_BattleResults[]; +extern const u8 gOtherText_WinRecord[]; +extern const u8 gOtherText_WinLoseDraw[]; +extern const u8 gOtherText_SevenDashes[]; +extern const u8 gOtherText_FourDashes[]; +extern const u8 gOtherText_BattleTowerResults[]; +extern const u8 gOtherText_Lv50[]; +extern const u8 gOtherText_Lv100[]; +extern const u8 gOtherText_WinStreak[]; +extern const u8 gOtherText_Current[]; +extern const u8 gOtherText_Record[]; +extern const u8 gOtherText_Prev[]; + +// slot_machine +extern const u8 gOtherText_QuitGamePrompt[]; +extern const u8 gOtherText_MaxCoins[]; +extern const u8 gOtherText_OutOfCoins[]; +extern const u8 gOtherText_DontHaveThreeCoins[]; +extern const u8 gOtherText_ReelTime[]; + +// daycare +extern const u8 DaycareText_GetAlongVeryWell[]; +extern const u8 DaycareText_GetAlong[]; +extern const u8 DaycareText_DontLikeOther[]; +extern const u8 DaycareText_PlayOther[]; +extern const u8 gOtherText_NewLine2[]; +extern const u8 gOtherText_CancelAndLv[]; + +// pokemon_2 +extern const u8 gEggNickname[]; + +// egg_hatch +extern const u8 gOtherText_HatchedFromEgg[]; +extern const u8 gOtherText_NickHatchPrompt[]; + +// learn_move +extern const u8 OtherText_Battle[]; +extern const u8 OtherText_Contest[]; + +// ??? +extern const u8 OtherText_Type[]; +extern const u8 OtherText_PP[]; + +// learn_move +extern const u8 OtherText_Power[]; +extern const u8 OtherText_Accuracy[]; +extern const u8 OtherText_Appeal[]; +extern const u8 OtherText_Jam[]; +extern const u8 gOtherText_TeachWhichMove[]; +extern const u8 gOtherText_TeachSpecificMove[]; +extern const u8 gOtherText_PokeLearnedMove[]; +extern const u8 gOtherText_DeleteOlderMove[]; +extern const u8 gOtherText_StopLearningMove[]; +extern const u8 gOtherText_ForgotMove123[]; +extern const u8 gOtherText_ForgotOrDidNotLearnMove[]; +extern const u8 gOtherText_GiveUpTeachingMove[]; +extern const u8 gOtherText_WhichMoveToForget[]; + +// clear_save_data_menu +extern const u8 gSystemText_ClearAllSaveDataPrompt[]; +extern const u8 gSystemText_ClearingData[]; + +// contest_link_80C2020 +extern const u8 gContestText_AnnounceResults[]; +extern const u8 gContestText_PreliminaryResults[]; +extern const u8 gContestText_Round2Results[]; +extern const u8 gContestText_PokeWon[]; +extern const u8 gOtherText_LinkStandby[]; + +// landmark +extern const u8 gLandmarkName_FlowerShop[]; +extern const u8 gLandmarkName_PetalburgWoods[]; +extern const u8 gLandmarkName_MrBrineysCottage[]; +extern const u8 gLandmarkName_AbandonedShip[]; +extern const u8 gLandmarkName_SeashoreHouse[]; +extern const u8 gLandmarkName_SlateportBeach[]; +extern const u8 gLandmarkName_CyclingRoad[]; +extern const u8 gLandmarkName_NewMauville[]; +extern const u8 gLandmarkName_TrickHouse[]; +extern const u8 gLandmarkName_OldLadysRestShop[]; +extern const u8 gLandmarkName_Desert[]; +extern const u8 gLandmarkName_WinstrateFamily[]; +extern const u8 gLandmarkName_CableCar[]; +extern const u8 gLandmarkName_GlassWorkshop[]; +extern const u8 gLandmarkName_WeatherInstitute[]; +extern const u8 gLandmarkName_MeteorFalls[]; +extern const u8 gLandmarkName_TunnelersRestHouse[]; +extern const u8 gLandmarkName_RusturfTunnel[]; +extern const u8 gLandmarkName_PokemonDayCare[]; +extern const u8 gLandmarkName_SafariZoneEntrance[]; +extern const u8 gLandmarkName_MtPyre[]; +extern const u8 gLandmarkName_ShoalCave[]; +extern const u8 gLandmarkName_SeafloorCavern[]; +extern const u8 gLandmarkName_GraniteCave[]; +extern const u8 gLandmarkName_OceanCurrent[]; +extern const u8 gLandmarkName_LanettesHouse[]; +extern const u8 gLandmarkName_FieryPath[]; +extern const u8 gLandmarkName_JaggedPass[]; +extern const u8 gLandmarkName_SkyPillar[]; +extern const u8 gLandmarkName_BerryMastersHouse[]; +extern const u8 gLandmarkName_IslandCave[]; +extern const u8 gLandmarkName_DesertRuins[]; +extern const u8 gLandmarkName_ScorchedSlab[]; +extern const u8 gLandmarkName_AncientTomb[]; +extern const u8 gLandmarkName_SealedChamber[]; +extern const u8 gLandmarkName_FossilManiacsHouse[]; +extern const u8 gLandmarkName_HuntersHouse[]; + +// pokemon_summary_screen +extern const u8 gOtherText_Terminator4[]; +extern const u8 gOtherText_Nature[]; +extern const u8 gOtherText_Comma[]; +extern const u8 gOtherText_Met[]; +extern const u8 gOtherText_Egg2[]; +extern const u8 gOtherText_ObtainedInTrade[]; +extern const u8 gOtherText_FatefulEncounter[]; +extern const u8 gOtherText_Met2[]; +extern const u8 gOtherText_EggDayCare[]; +extern const u8 gOtherText_EggNicePlace[]; +extern const u8 gOtherText_EggObtainedInTrade[]; +extern const u8 gOtherText_EggHotSprings[]; + +// evolution_scene, trade +extern const u8 gOtherText_LinkStandby2[]; + +// evolution_scene +extern const u8 gOtherText_YesNoAndPlayer[]; + +// diploma +extern const u8 gOtherText_HoennDex[]; +extern const u8 gOtherText_NationalDex[]; +extern const u8 gOtherText_DiplomaCertificationGameFreak[]; + +// cable_club +extern const u8 gOtherText_PLink[]; + +// berry_blender +extern const u8 gOtherText_YesNoTerminating[]; +extern const u8 gOtherText_LinkNotFound[]; +extern const u8 gOtherText_BlenderChooseBerry[]; +extern const u8 gOtherText_PokeBlockMade[]; +extern const u8 gOtherText_PressAToStart[]; +extern const u8 gOtherText_PleaseWait[]; +extern const u8 gOtherText_LinkStandby3[]; +extern const u8 gOtherText_BlendAnotherBerryPrompt[]; +extern const u8 gOtherText_OutOfBerries[]; +extern const u8 gOtherText_CaseIsFull[]; +extern const u8 gOtherText_NoBerriesForBlend[]; +extern const u8 gOtherText_OtherCaseIsFull[]; +extern const u8 gOtherText_ResultsOfBlending[]; +extern const u8 gOtherText_Berry[]; +extern const u8 gOtherText_RequiredTime[]; +extern const u8 gOtherText_Min[]; +extern const u8 gOtherText_Sec[]; +extern const u8 gOtherText_MaxSpeed[]; +extern const u8 gOtherText_RPM[]; +extern const u8 gOtherText_Ranking[]; +extern const u8 gOtherText_BlockLevelIs[]; +extern const u8 gOtherText_BlockFeelIs[]; +extern const u8 gOtherText_Period[]; + +// reset_rtc_screen +extern const u8 gOtherText_Day[]; +extern const u8 gOtherText_OK[]; + +// wallclock +extern const u8 gOtherText_CorrectTimePrompt[]; + +#endif // GUARD_STRINGS2_H diff --git a/src/battle_records.c b/src/battle_records.c index 3290bbebe..35fd3284b 100644 --- a/src/battle_records.c +++ b/src/battle_records.c @@ -1,8 +1,6 @@ #include "global.h" #include "menu.h" - -extern const u8 gOtherText_BattleResults[]; -extern const u8 gOtherText_WinLoseDraw[]; +#include "strings2.h" void PrintLinkBattleWinsLossesDraws(void *); diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 293e2f24d..45dc59094 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -11,6 +11,7 @@ #include "species.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "text.h" extern u8 gPlayerPartyCount; @@ -34,7 +35,6 @@ extern u16 gTrainerBattleOpponent; extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; -extern u8 gEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; extern u8 gSpeciesNames[][11]; diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index c519e1a30..690ce3f55 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -7,10 +7,9 @@ #include "songs.h" #include "sound.h" #include "sprite.h" +#include "strings2.h" #include "task.h" -extern u8 gSystemText_ClearAllSaveDataPrompt[]; -extern u8 gSystemText_ClearingData[]; extern const struct MenuAction gMenuYesNoItems[]; static void VBlankCB_ClearSaveDataScreen(void); diff --git a/src/diploma.c b/src/diploma.c index c32b72a70..80adac8f7 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -7,13 +7,10 @@ #include "rom4.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" -extern u8 gOtherText_NationalDex[]; -extern u8 gOtherText_HoennDex[]; -extern u8 gOtherText_DiplomaCertificationGameFreak[]; - static void VBlankCB(void); static void MainCB2(void); static void Task_DiplomaFadeIn(u8); diff --git a/src/easy_chat.c b/src/easy_chat.c index 86719a2ae..678b25a0e 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -7,6 +7,7 @@ #include "rng.h" #include "string_util.h" #include "strings.h" +#include "strings2.h" #include "text.h" u8 sub_80EB37C(u16); @@ -28,8 +29,6 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; -extern const u8 gOtherText_ThreeQuestions[]; - #ifdef NONMATCHING u8 *sub_80EB3FC(u8 *dst, u16 word) { int group, wordIndex; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 6a0fe1dce..c1b892f15 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -16,14 +16,10 @@ #include "script.h" #include "songs.h" #include "sound.h" +#include "strings2.h" #include "task.h" #include "wild_encounter.h" -extern u8 gOtherText_OhABite[]; -extern u8 gOtherText_PokeOnHook[]; -extern u8 gOtherText_NotEvenANibble[]; -extern u8 gOtherText_ItGotAway[]; - extern u32 gUnknown_0202FF84[]; //Functions diff --git a/src/field_region_map.c b/src/field_region_map.c index ec630ad00..66e3d968c 100644 --- a/src/field_region_map.c +++ b/src/field_region_map.c @@ -5,6 +5,7 @@ #include "palette.h" #include "sprite.h" #include "text.h" +#include "strings2.h" extern void sub_80FA8EC(u32, u8); extern void sub_80FAB10(void); @@ -29,8 +30,6 @@ struct UnkStruct extern struct UnkStruct unk_2000000; -extern u8 gOtherText_Hoenn[]; - void CB2_FieldInitRegionMap(void); void CB2_FieldRegionMap(void); void VBlankCB_FieldRegionMap(void); diff --git a/src/link.c b/src/link.c index 224c0ae1c..7cf2fc611 100644 --- a/src/link.c +++ b/src/link.c @@ -10,6 +10,7 @@ #include "songs.h" #include "sound.h" #include "sprite.h" +#include "strings2.h" #include "task.h" #include "text.h" @@ -39,8 +40,6 @@ extern u16 gScriptItemId; extern u16 word_3004858; -extern u8 gMultiText_LinkError[]; - static void InitLinkTestBG(u8, u8, u8, u8); void InitLinkTestBG_Unused(u8, u8, u8, u8); void LinkTestScreen(); diff --git a/src/mail.c b/src/mail.c index 807864332..4ec107011 100644 --- a/src/mail.c +++ b/src/mail.c @@ -8,6 +8,7 @@ #include "rom4.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" @@ -70,8 +71,6 @@ extern u16 gUnknown_083E562C[][2]; extern struct MailLayout gUnknown_083E5730[]; extern struct MailLayout gUnknown_083E57A4[]; -extern u8 gOtherText_From[]; - static u8 sub_80F8A28(void); static void sub_80F8D50(void); static void sub_80F8DA0(void); diff --git a/src/menu.c b/src/menu.c index f9b9dbf0b..61eaebb6f 100644 --- a/src/menu.c +++ b/src/menu.c @@ -173,7 +173,7 @@ void MenuDrawTextWindow(u8 left, u8 top, u8 right, u8 bottom) DrawTextWindow(gMenuWindowPtr, left, top, right, bottom); } -void sub_8071F40(u8 *str) +void sub_8071F40(const u8 *str) { MenuDrawTextWindow(2, 14, 28, 19); MenuPrint(str, 3, 15); @@ -637,7 +637,7 @@ void sub_8072B80(u8 *a1, u8 a2, u8 a3, u8 *a4) sub_8003460(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3); } -void sub_8072BD8(u8 *a1, u8 a2, u8 a3, u16 a4) +void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4) { sub_8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4); } diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index fa2e42b91..77c959b07 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -10,19 +10,13 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" extern u8 unk_2000000[]; extern u8 gUnknown_02039338; -extern u8 gSystemText_LinkStandby[]; -extern u8 gSystemText_LoadEventPressA[]; -extern u8 gSystemText_LoadingEvent[]; -extern u8 gSystemText_DontCutLink[]; -extern u8 gSystemText_EventLoadSuccess[]; -extern u8 gSystemText_LoadingError[]; - static void VBlankCB(void); static bool8 CheckLanguageMatch(void); static bool8 GetEventLoadMessage(u8 *dest, u32 status); diff --git a/src/naming_screen.c b/src/naming_screen.c index b14c690e2..8c90686ee 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -8,6 +8,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" #include "text.h" #include "trig.h" @@ -48,7 +49,6 @@ extern const struct SpriteTemplate gSpriteTemplate_83CE670; extern const struct SpriteTemplate gSpriteTemplate_83CE688; extern const struct SpriteSheet gUnknown_083CE6A0[]; extern const struct SpritePalette gUnknown_083CE708[]; -extern const u8 gOtherText_SentToPC[]; extern const u8 gNamingScreenMenu_Gfx[]; extern u16 gMenuMessageBoxContentTileOffset; extern const u16 gNamingScreenPalettes[]; @@ -57,9 +57,6 @@ extern const u16 gUnknown_083CEBF8[]; extern const u16 gUnknown_083CF0A8[]; extern const u16 gUnknown_08E86258[]; extern const u8 gSpeciesNames[][11]; -extern const u8 OtherText_YourName[]; -extern const u8 OtherText_BoxName[]; -extern const u8 OtherText_PokeName[]; static void C2_NamingScreen(void); static void sub_80B5AA0(void); diff --git a/src/option_menu.c b/src/option_menu.c index 49ad98196..878df16ba 100644 --- a/src/option_menu.c +++ b/src/option_menu.c @@ -4,6 +4,7 @@ #include "menu.h" #include "palette.h" #include "sprite.h" +#include "strings2.h" #include "task.h" extern void SetPokemonCryStereo(u32 val); @@ -33,28 +34,6 @@ enum { extern u8 gUnknown_0839F63C[]; extern u8 gUnknown_0839F5FC[]; //palette -extern u8 gSystemText_Normal[]; -extern u8 gSystemText_LR[]; -extern u8 gSystemText_LA[]; -extern u8 gSystemText_Terminator[]; -extern u8 gSystemText_Type[]; -extern u8 gSystemText_Mono[]; -extern u8 gSystemText_Stereo[]; -extern u8 gSystemText_Shift[]; -extern u8 gSystemText_Set[]; -extern u8 gSystemText_On[]; -extern u8 gSystemText_Off[]; -extern u8 gSystemText_Slow[]; -extern u8 gSystemText_Mid[]; -extern u8 gSystemText_Fast[]; -extern u8 gSystemText_OptionMenu[]; -extern u8 gSystemText_TextSpeed[]; -extern u8 gSystemText_BattleScene[]; -extern u8 gSystemText_BattleStyle[]; -extern u8 gSystemText_Sound[]; -extern u8 gSystemText_ButtonMode[]; -extern u8 gSystemText_Frame[]; -extern u8 gSystemText_Cancel[]; static void Task_OptionMenuFadeIn(u8 taskId); static void Task_OptionMenuProcessInput(u8 taskId); @@ -323,7 +302,7 @@ static void HighlightOptionMenuItem(u8 index) REG_WIN1V = WIN_RANGE_(index * 16 + 40, index * 16 + 56); } -static void DrawOptionMenuChoice(u8 *text, u8 x, u8 y, u8 style) +static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style) { u8 dst[16]; u16 i; diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 31b66fd9a..5d24d36d5 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -8,6 +8,7 @@ #include "sprite.h" #include "string_util.h" #include "text.h" +#include "strings2.h" extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[6]; @@ -34,7 +35,6 @@ extern u16 gTrainerBattleOpponent; extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; -extern u8 gEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; extern u8 gSpeciesNames[][11]; diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 6540858c1..3406a818b 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -3,6 +3,7 @@ #include "event_data.h" #include "species.h" #include "string_util.h" +#include "strings2.h" #include "text.h" extern u16 SpeciesToNationalPokedexNum(u16); @@ -15,7 +16,6 @@ struct UnknownStruct u16 unk4; }; -extern u8 gOtherText_Marco[]; extern u16 gScriptResult; extern u8 gSpeciesNames[][11]; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 5f96512f0..56a56e455 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -4,22 +4,11 @@ #include "menu.h" #include "pokemon.h" #include "string_util.h" +#include "strings2.h" extern struct Pokemon *unk_2018000; extern u8 *(gNatureNames[]); -extern const u8 gOtherText_Terminator4[]; -extern const u8 gOtherText_Nature[]; - -extern const u8 gOtherText_Met[]; -extern const u8 gOtherText_Egg2[]; -extern const u8 gOtherText_ObtainedInTrade[]; -extern const u8 gOtherText_FatefulEncounter[]; -extern const u8 gOtherText_Met2[]; -extern const u8 gOtherText_EggDayCare[]; -extern const u8 gOtherText_EggNicePlace[]; -extern const u8 gOtherText_EggObtainedInTrade[]; -extern const u8 gOtherText_EggHotSprings[]; u8 *sub_80A1E9C(u8 *dest, u8 *src, u8); u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon); diff --git a/src/record_mixing.c b/src/record_mixing.c index 2e01ead61..c84cfd2ae 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -10,6 +10,7 @@ #include "songs.h" #include "sound.h" #include "string_util.h" +#include "strings2.h" #include "task.h" extern void *recordMixingSecretBases; @@ -28,8 +29,6 @@ extern u16 gSpecialVar_0x8005; extern u32 gUnknown_03005D2C; extern u8 gUnknown_03000718; extern u8 gUnknown_0300071C[]; -extern u8 gOtherText_MixingComplete[]; -extern u8 gOtherText_MixingRecordsWithFriend[]; extern bool8 gReceivedRemoteLinkPlayers; #define BUFFER_CHUNK_SIZE 200 diff --git a/src/save_menu_util.c b/src/save_menu_util.c index 7899fabb1..8910bb300 100644 --- a/src/save_menu_util.c +++ b/src/save_menu_util.c @@ -5,11 +5,7 @@ #include "menu.h" #include "pokedex.h" #include "string_util.h" - -extern u8 gOtherText_Player[]; -extern u8 gOtherText_Badges[]; -extern u8 gOtherText_Pokedex[]; -extern u8 gOtherText_PlayTime[]; +#include "strings2.h" void HandleDrawSaveWindowInfo(s16 left, s16 top) { diff --git a/src/start_menu.c b/src/start_menu.c index 231e4d608..a3258bab1 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -22,6 +22,7 @@ #include "sprite.h" #include "string_util.h" #include "strings.h" +#include "strings2.h" #include "task.h" #include "trainer_card.h" @@ -60,17 +61,6 @@ extern u8 gSaveText_DontTurnOff[]; extern u8 gSaveText_ThereIsAlreadyAFile[]; extern u8 gSaveText_ThereIsADifferentFile[]; extern u8 gSaveText_WouldYouLikeToSave[]; -extern u8 gOtherText_SafariStock[]; -extern u8 SystemText_Pokedex[]; -extern u8 SystemText_Pokemon[]; -extern u8 SystemText_BAG[]; -extern u8 SystemText_Pokenav[]; -extern u8 SystemText_Player[]; -extern u8 SystemText_Save[]; -extern u8 SystemText_Option[]; -extern u8 SystemText_Exit[]; -extern u8 SystemText_Retire[]; -extern u8 SystemText_Player[]; static u8 StartMenu_PokedexCallback(void); static u8 StartMenu_PokemonCallback(void); diff --git a/src/trainer_card.c b/src/trainer_card.c index e6ed79c15..ef3a2d857 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -14,6 +14,7 @@ #include "sound.h" #include "sprite.h" #include "string_util.h" +#include "strings2.h" #include "task.h" typedef void (*Callback)(void); @@ -64,16 +65,6 @@ extern u16 gUnknown_083B5F4C[]; extern u16 gUnknown_08E8CFC0[]; extern u16 gUnknown_08E8D9C0[]; -extern u8 gOtherText_TrainersTrainerCard[]; -extern u8 gOtherText_FirstHOF[]; -extern u8 gOtherText_LinkCableBattles[]; -extern u8 gOtherText_BattleTowerWinRecord[]; -extern u8 gOtherText_ContestRecord[]; -extern u8 gOtherText_MixingRecord[]; -extern u8 gOtherText_TradeRecord[]; -extern u8 gOtherText_Boy[]; -extern u8 gOtherText_Girl[]; - extern bool8 (*const gUnknown_083B5EBC[])(struct Task *); extern bool8 (*const gUnknown_083B5ED8[])(struct Task *); @@ -1831,7 +1822,7 @@ static void TrainerCard_Back_PrintPokemonTrades(void) void unref_sub_8094588(u16 left, u16 top) { - u8 *text = gOtherText_Boy; + const u8 *text = gOtherText_Boy; if (gSaveBlock2.playerGender == FEMALE) { diff --git a/src/wallclock.c b/src/wallclock.c index de007c1b3..0b9948adc 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -8,6 +8,7 @@ #include "rtc.h" #include "songs.h" #include "sound.h" +#include "strings2.h" #include "task.h" #include "trig.h" @@ -15,7 +16,6 @@ extern u16 gSpecialVar_0x8004; extern u8 gMiscClock_Gfx[]; extern u8 gUnknown_08E95774[]; extern u8 gUnknown_08E954B0[]; -extern u8 gOtherText_CorrectTimePrompt[]; extern const struct MenuAction gMenuYesNoItems[]; extern u16 gMiscClockMale_Pal[]; extern u16 gMiscClockFemale_Pal[]; -- cgit v1.2.3 From ca6485a3b23102c96bf046bfacb3b994d83f9555 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 13:25:26 +0200 Subject: Add data2 header --- include/data2.h | 46 +++++++++++++++++++++++++++++++++++++++ include/script_pokemon_80C4.h | 5 ----- src/battle_2.c | 28 +++++------------------- src/battle_ai.c | 3 +-- src/battle_setup.c | 4 ++-- src/calculate_base_damage.c | 6 +---- src/contest_painting.c | 13 +---------- src/credits.c | 14 +++--------- src/decompress.c | 5 +---- src/easy_chat.c | 3 +-- src/intro.c | 20 ++++------------- src/item_use.c | 3 +-- src/main_menu.c | 14 +++--------- src/matsuda_debug_menu.c | 2 +- src/mori_debug_menu.c | 3 +-- src/naming_screen.c | 2 +- src/party_menu.c | 2 +- src/pokedex.c | 1 - src/pokemon_1.c | 2 +- src/pokemon_2.c | 6 +---- src/pokemon_3.c | 6 +---- src/pokemon_size_record.c | 2 +- src/pokenav.c | 3 +-- src/rom3.c | 1 - src/rom_8077ABC.c | 14 +----------- src/scrcmd.c | 4 +--- src/script_pokemon_util_80C4BF0.c | 7 ++---- src/script_pokemon_util_80F99CC.c | 3 +-- src/smokescreen.c | 4 +--- src/starter_choose.c | 13 ++--------- src/tv.c | 4 +--- 31 files changed, 87 insertions(+), 156 deletions(-) create mode 100644 include/data2.h diff --git a/include/data2.h b/include/data2.h new file mode 100644 index 000000000..987c7cb2e --- /dev/null +++ b/include/data2.h @@ -0,0 +1,46 @@ +#ifndef GUARD_DATA2_H +#define GUARD_DATA2_H + +#include "sprite.h" + +struct UnknownStructD2 { + u32 unk0; + u32 unk4; + u32 unk8; +}; + +struct MonCoords +{ + // This would use a bitfield, but sub_8079F44 + // uses it as a u8 and casting won't match. + u8 coords; // u8 x:4, y:4; + u8 y_offset; +}; + +extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; +extern const union AnimCmd *const gSpriteAnimTable_81E7C64[]; +extern struct MonCoords gMonFrontPicCoords[]; +extern struct MonCoords gMonBackPicCoords[]; +extern struct SpriteSheet gMonFrontPicTable[]; +extern struct SpriteSheet gMonBackPicTable[]; +extern const struct SpritePalette gMonPaletteTable[]; +extern const struct SpritePalette gMonShinyPaletteTable[]; +extern const union AnimCmd *const *const gUnknown_081EC2A4[]; +extern const union AnimCmd *const *const gUnknown_081ECACC[]; +extern struct MonCoords gTrainerBackPicCoords[]; +extern struct SpriteSheet gTrainerBackPicTable[]; +extern struct SpritePalette gTrainerBackPicPaletteTable[]; +extern u8 gEnemyMonElevation[]; +extern const u8 gTrainerClassNames[][13]; +extern const struct Trainer gTrainers[]; +extern u8 gSpeciesNames[][11]; +extern u8 gMoveNames[][13]; +extern const struct UnknownStructD2 gUnknown_081F9674; +extern const u8 gUnknown_081F96C8[]; +extern struct SpriteSheet gUnknown_081FAEA4; +extern struct SpritePalette gUnknown_081FAEAC; +extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; +extern void *gUnknown_081FAF4C[]; +extern struct BattleMove gBattleMoves[]; + +#endif // GUARD_DATA2_H diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h index 6d4e689b5..629980a2d 100644 --- a/include/script_pokemon_80C4.h +++ b/include/script_pokemon_80C4.h @@ -1,11 +1,6 @@ #ifndef GUARD_SCRIPTPOKE80C4_H #define GUARD_SCRIPTPOKE80C4_H -struct MonCoords -{ - u8 x, y; -}; - void sub_80C5190(u8); void sub_80C5580(void); void SetBattleTowerPlayerParty(void); diff --git a/src/battle_2.c b/src/battle_2.c index 12fd4182d..6bcccbaf9 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "battle.h" +#include "data2.h" #include "main.h" #include "text.h" #include "palette.h" @@ -17,18 +18,6 @@ #include "trig.h" #include "abilities.h" -struct MonCoords -{ - u8 x, y; -}; - -struct UnknownStruct5 -{ - u32 unk0; - u32 unk4; - u32 unk8; -}; - struct UnknownStruct6 { u16 unk0[0xA0]; @@ -138,14 +127,7 @@ struct UnknownStruct13 u8 filler4[12]; }; -extern const struct UnknownStruct5 gUnknown_081F9674; -extern const u8 gUnknown_081F96C8[]; -extern void *const gUnknown_081FAF4C[]; extern const u16 gUnknown_08D004E0[]; -extern const struct Trainer gTrainers[]; -extern const u8 gSpeciesNames[][11]; -extern const struct BattleMove gBattleMoves[]; -extern const struct MonCoords gMonFrontPicCoords[]; extern const struct MonCoords gCastformFrontSpriteCoords[]; extern const struct BaseStats gBaseStats[]; extern const u32 gBitTable[]; @@ -1524,19 +1506,19 @@ void sub_8010384(struct Sprite *sprite) else unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters - yOffset = gMonFrontPicCoords[unownSpecies].y; + yOffset = gMonFrontPicCoords[unownSpecies].y_offset; } else if (species == SPECIES_CASTFORM) { - yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y; + yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y_offset; } else if (species > NUM_SPECIES) { - yOffset = gMonFrontPicCoords[SPECIES_NONE].y; + yOffset = gMonFrontPicCoords[SPECIES_NONE].y_offset; } else { - yOffset = gMonFrontPicCoords[species].y; + yOffset = gMonFrontPicCoords[species].y_offset; } sprite->data3 = 8 - yOffset / 8; diff --git a/src/battle_ai.c b/src/battle_ai.c index 9bbaf908e..f10c6a013 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -4,6 +4,7 @@ #include "asm.h" #include "battle.h" #include "battle_move_effects.h" +#include "data2.h" #include "item.h" #include "moves.h" #include "pokemon.h" @@ -36,8 +37,6 @@ extern u8 gCritMultiplier; extern u16 gTrainerBattleOpponent; extern u32 gBitTable[]; extern u8 *BattleAIs[]; -extern struct Trainer gTrainers[]; -extern struct BattleMove gBattleMoves[]; extern struct BaseStats gBaseStats[]; /* diff --git a/src/battle_setup.c b/src/battle_setup.c index 61b9bb1e9..a70157a43 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -2,6 +2,7 @@ #include "battle_setup.h" #include "asm.h" #include "battle.h" +#include "data2.h" #include "event_data.h" #include "field_control_avatar.h" #include "field_map_obj_helpers.h" @@ -34,7 +35,6 @@ extern void (*gUnknown_0300485C)(void); extern struct Pokemon gEnemyParty[]; extern struct Pokemon gPlayerParty[]; -extern struct Trainer gTrainers[]; EWRAM_DATA u16 gTrainerBattleMode = 0; EWRAM_DATA u16 gTrainerBattleOpponent = 0; @@ -752,7 +752,7 @@ u8 GetWildBattleTransition(void) u8 GetTrainerBattleTransition(void) { - struct Trainer *trainer; + const struct Trainer *trainer; u8 minPartyCount; u8 flashVar; u8 level; diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c index 45dc59094..7868a2c67 100644 --- a/src/calculate_base_damage.c +++ b/src/calculate_base_damage.c @@ -2,6 +2,7 @@ #include "abilities.h" #include "battle.h" #include "berry.h" +#include "data2.h" #include "event_data.h" #include "hold_effects.h" #include "item.h" @@ -37,12 +38,7 @@ extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; -extern u8 gSpeciesNames[][11]; -extern struct BattleMove gBattleMoves[]; extern struct SpriteTemplate gSpriteTemplate_8208288[]; -extern union AmimCmd *gSpriteAnimTable_81E7C64[]; -extern union AnimCmd **gUnknown_081EC2A4[]; -extern union AnimCmd **gUnknown_081ECACC[]; extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; extern u8 gSecretBaseTrainerClasses[]; diff --git a/src/contest_painting.c b/src/contest_painting.c index c970deaf2..d7bacb905 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -1,6 +1,7 @@ #include "global.h" #include "contest_painting.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "main.h" #include "menu.h" @@ -24,11 +25,6 @@ extern struct Unk2015E00 unk_2015e00; extern struct Unk3000756 gUnknown_03000756; extern struct Unk03005E20 gUnknown_03005E20; extern struct ContestEntry *gUnknown_03005E8C; -extern const struct SpriteSheet gMonFrontPicTable[]; -extern const struct MonCoords gMonFrontPicCoords[]; -extern const struct SpriteSheet gMonBackPicTable[]; -extern const struct MonCoords gMonBackPicCoords[]; -extern void *gUnknown_081FAF4C[]; static const u16 gPictureFramePalettes[][16] = { @@ -345,13 +341,6 @@ static void VBlankCB_ContestPainting(void) TransferPlttBuffer(); } - -struct MonCoords -{ - u8 x; - u8 y; -}; - #ifdef NONMATCHING static void sub_8106AC4(u16 species, u8 arg1) { diff --git a/src/credits.c b/src/credits.c index ca5553c2e..de1d52361 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "m4a.h" @@ -20,11 +21,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52"); asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT"); asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA"); -struct MonCoords -{ - u8 x, y; -}; - extern void *species_and_otid_get_pal(u32, u16, u16); enum @@ -173,10 +169,6 @@ extern s16 gUnknown_0203935C; extern u8 gReservedSpritePaletteCount; -// data/data2 -extern struct MonCoords gMonFrontPicCoords[]; -extern struct SpriteSheet gMonFrontPicTable[]; - // data/starter_choose extern u16 gBirchBagGrassPal[32]; extern u8 gBirchGrassTilemap[]; @@ -1520,8 +1512,8 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position) LoadSpecialPokePic( &gMonFrontPicTable[species], - gMonFrontPicCoords[species].x, - gMonFrontPicCoords[species].y, + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[position], species, diff --git a/src/decompress.c b/src/decompress.c index 12be8a055..37aa1e8d5 100644 --- a/src/decompress.c +++ b/src/decompress.c @@ -1,15 +1,12 @@ #include "global.h" #include "decompress.h" #include "asm.h" +#include "data2.h" #include "species.h" #include "text.h" #define WRAM 0x02000000 -extern struct SpriteSheet gMonFrontPicTable[]; -extern struct SpriteSheet gMonBackPicTable[]; -extern void *gUnknown_081FAF4C[]; - void sub_800D238(const void *src, void *dest) { LZ77UnCompWram(src, dest); diff --git a/src/easy_chat.c b/src/easy_chat.c index 678b25a0e..b21b00368 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -1,6 +1,7 @@ #include "global.h" #include "easy_chat.h" #include "asm.h" +#include "data2.h" #include "event_data.h" #include "field_message_box.h" #include "pokedex.h" @@ -22,8 +23,6 @@ static u16 sub_80EB9D8(void); static u16 sub_80EB960(void); u16 sub_80EB72C(u16); -extern const u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; extern void *gEasyChatGroupWords[]; extern const u8 gEasyChatGroupSizes[]; diff --git a/src/intro.c b/src/intro.c index 56eaa11e8..7f6763199 100644 --- a/src/intro.c +++ b/src/intro.c @@ -2,6 +2,7 @@ #include "gba/m4a_internal.h" #include "intro.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "libgncmultiboot.h" #include "link.h" @@ -21,12 +22,6 @@ extern void *species_and_otid_get_pal(/*TODO: arg types*/); extern void sub_8143680(int, u8); -struct MonCoords -{ - u8 x, y; -}; - - extern struct SpriteTemplate gUnknown_02024E8C; extern u16 gUnknown_02039318; extern u16 gUnknown_0203931A; @@ -36,13 +31,6 @@ extern u32 gIntroFrameCounter; extern struct GcmbStruct gMultibootProgramStruct; extern u16 gSaveFileStatus; extern u8 gReservedSpritePaletteCount; -extern struct SpriteSheet gMonFrontPicTable[]; -extern struct MonCoords gMonFrontPicCoords[]; -extern struct SpriteSheet gMonBackPicTable[]; -extern struct MonCoords gMonBackPicCoords[]; -extern struct SpriteSheet gTrainerBackPicTable[]; -extern struct MonCoords gTrainerBackPicCoords[]; -extern struct SpritePalette gTrainerBackPicPaletteTable[]; extern const u8 gInterfaceGfx_PokeBall[]; extern const u16 gInterfacePal_PokeBall[]; extern const struct SpriteSheet gIntro2BrendanSpriteSheet; @@ -1797,9 +1785,9 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front) u8 spriteId; if (front) - LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); + LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1); else - LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].x, gMonBackPicCoords[species].y, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); + LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0); pal = species_and_otid_get_pal(species, 0, 0xFFFF); LoadCompressedPalette(pal, 0x100 + d * 0x10, 0x20); sub_8143648(d, d); @@ -1813,7 +1801,7 @@ static u8 sub_813CFA8(u16 a, u16 b, u16 c, u16 d) { u8 spriteId; - DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].x, gTrainerBackPicCoords[a].y, (void *)0x2000000, gUnknown_0840B5A0[d], a); + DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].coords, gTrainerBackPicCoords[a].y_offset, (void *)0x2000000, gUnknown_0840B5A0[d], a); LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + d * 0x10, 0x20); sub_8143680(d, d); gUnknown_02024E8C.anims = gUnknown_0840B064; diff --git a/src/item_use.c b/src/item_use.c index cc961836b..d1c1dbf2a 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -3,6 +3,7 @@ #include "battle.h" #include "berry.h" #include "coins.h" +#include "data2.h" #include "event_data.h" #include "field_map_obj_helpers.h" #include "field_player_avatar.h" @@ -30,8 +31,6 @@ extern void (* gUnknown_03005D00)(u8); extern void (* gUnknown_0300485C)(void); extern void (* gUnknown_03004AE4)(u8); -extern u8 gMoveNames[][13]; - extern u8 gUnknown_02038561; extern u8 gLastFieldPokeMenuOpened; extern u8 gUnknown_02024E6C; diff --git a/src/main_menu.c b/src/main_menu.c index e5ab0c822..b2d08698b 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1,6 +1,7 @@ #include "global.h" #include "main_menu.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "menu.h" @@ -22,11 +23,6 @@ #define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24)) -struct MonCoords -{ - u8 x, y; -}; - extern struct PaletteFadeControl gPaletteFade; extern u16 gSaveFileStatus; @@ -43,11 +39,7 @@ extern u8 gBirchSpeech_SoItsPlayer[]; extern u8 gBirchSpeech_AhOkayYouArePlayer[]; extern u8 gBirchSpeech_AreYouReady[]; -extern const struct MonCoords gMonFrontPicCoords[]; -extern const struct SpriteSheet gMonFrontPicTable[]; -extern const struct SpritePalette gMonPaletteTable[]; extern struct SpriteTemplate gUnknown_02024E8C; -extern void * const gUnknown_081FAF4C[]; extern u16 gUnknown_081E795C[]; extern const struct MenuAction gUnknown_081E79B0[]; extern const struct MenuAction gMalePresetNames[]; @@ -1400,8 +1392,8 @@ u8 CreateAzurillSprite(u8 x, u8 y) { DecompressPicFromTable_2( &gMonFrontPicTable[SPECIES_AZURILL], - gMonFrontPicCoords[SPECIES_AZURILL].x, - gMonFrontPicCoords[SPECIES_AZURILL].y, + gMonFrontPicCoords[SPECIES_AZURILL].coords, + gMonFrontPicCoords[SPECIES_AZURILL].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], SPECIES_AZURILL); diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c index 09ee5fc66..018e36567 100644 --- a/src/matsuda_debug_menu.c +++ b/src/matsuda_debug_menu.c @@ -2,6 +2,7 @@ #include "matsuda_debug_menu.h" #include "asm.h" #include "contest.h" +#include "data2.h" #include "link.h" #include "main.h" #include "menu.h" @@ -55,7 +56,6 @@ extern struct SpriteTemplate gSpriteTemplate_83C92CC; extern void (*gUnknown_083C92E4[][2])(struct Sprite *, s8); extern u32 gUnknown_083C9400[2]; -extern u8 gMoveNames[][13]; extern u8 gMatsudaDebugMenu_UnknownByteArray[]; extern u8* gMatsudaDebugMenuTextList1[]; diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c index fd0ad773b..18c65b7e6 100644 --- a/src/mori_debug_menu.c +++ b/src/mori_debug_menu.c @@ -1,6 +1,7 @@ #include "global.h" #include "mori_debug_menu.h" #include "asm.h" +#include "data2.h" #include "link.h" #include "main.h" #include "menu.h" @@ -20,8 +21,6 @@ extern u8 gUnknown_0839B257[]; extern const struct MenuAction gMoriDebugMenuActions[]; -extern u8 gSpeciesNames[][11]; - void unref_sub_8083CF0(void) { int i; diff --git a/src/naming_screen.c b/src/naming_screen.c index 8c90686ee..53ee5ff19 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1,6 +1,7 @@ #include "global.h" #include "naming_screen.h" #include "asm.h" +#include "data2.h" #include "main.h" #include "menu.h" #include "palette.h" @@ -56,7 +57,6 @@ extern const u16 gUnknown_083CE748[]; extern const u16 gUnknown_083CEBF8[]; extern const u16 gUnknown_083CF0A8[]; extern const u16 gUnknown_08E86258[]; -extern const u8 gSpeciesNames[][11]; static void C2_NamingScreen(void); static void sub_80B5AA0(void); diff --git a/src/party_menu.c b/src/party_menu.c index 82f234ae4..ee6bcf2a9 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "menu.h" #include "pokemon.h" #include "songs.h" @@ -87,7 +88,6 @@ extern const u16 gUnknown_08376504[]; extern void (*const gUnknown_08376B54[])(u8); extern const u8 *const gUnknown_08376D04[DATA_COUNT]; extern const struct UnknownStruct5 gUnknown_08376BB4[][6]; -extern const u8 gMoveNames[][13]; extern const u8 *const gItemEffectTable[]; extern bool8 IsDoubleBattle(void); diff --git a/src/pokedex.c b/src/pokedex.c index 51552789b..91e577bbc 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -103,7 +103,6 @@ extern u16 NationalToHoennOrder(u16); extern u16 gPokedexOrder_Alphabetical[]; extern u16 gPokedexOrder_Weight[]; extern u16 gPokedexOrder_Height[]; -extern u8 gSpeciesNames[][11]; u16 NationalPokedexNumToSpecies(u16); diff --git a/src/pokemon_1.c b/src/pokemon_1.c index 204fa7b9a..dacbb81c3 100644 --- a/src/pokemon_1.c +++ b/src/pokemon_1.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "items.h" #include "main.h" #include "pokemon.h" @@ -25,7 +26,6 @@ extern u8 byte_2024E88; extern u32 gExperienceTables[8][101]; extern struct BaseStats gBaseStats[]; -extern struct BattleMove gBattleMoves[]; extern const u16 *gLevelUpLearnsets[]; void ZeroBoxMonData(struct BoxPokemon *boxMon) diff --git a/src/pokemon_2.c b/src/pokemon_2.c index 5d24d36d5..7fbfc1271 100644 --- a/src/pokemon_2.c +++ b/src/pokemon_2.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "data2.h" #include "event_data.h" #include "main.h" #include "pokemon.h" @@ -37,13 +38,8 @@ extern struct PokemonStorage gPokemonStorage; extern u8 gBadEggNickname[]; extern u32 gBitTable[]; extern struct BaseStats gBaseStats[]; -extern u8 gSpeciesNames[][11]; -extern struct BattleMove gBattleMoves[]; extern const struct SpriteTemplate gSpriteTemplate_8208288[]; -extern const union AmimCmd *const gSpriteAnimTable_81E7C64[]; //array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.) -extern const union AnimCmd *const *const gUnknown_081EC2A4[]; -extern const union AnimCmd *const *const gUnknown_081ECACC[]; extern u8 gTrainerClassToPicIndex[]; extern u8 gTrainerClassToNameIndex[]; extern u8 gSecretBaseTrainerClasses[]; diff --git a/src/pokemon_3.c b/src/pokemon_3.c index 6b42d3272..f9eb3a7e9 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "battle.h" +#include "data2.h" #include "event_data.h" #include "hold_effects.h" #include "item.h" @@ -74,9 +75,6 @@ extern u8 gEnemyMonIndex; extern u8 gUnknown_02024C0B; extern u8 gUnknown_02024E6C; extern struct SpindaSpot gSpindaSpotGraphics[]; -extern void *gUnknown_081FAF4C[]; -extern u8 gSpeciesNames[][11]; -extern struct Trainer gTrainers[]; extern s8 gNatureStatTable[][5]; extern s8 gUnknown_082082FE[][3]; extern u16 gTrainerBattleOpponent; @@ -88,8 +86,6 @@ extern u32 gTMHMLearnsets[][2]; extern const u16 *gLevelUpLearnsets[]; extern u8 gBattleMonForms[]; extern const u8 BattleText_Wally[]; -extern const struct SpritePalette gMonPaletteTable[]; -extern const struct SpritePalette gMonShinyPaletteTable[]; extern const u16 gHMMoves[]; extern s8 gUnknown_083F7E28[]; extern u8 byte_2024C06; diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c index 3406a818b..b2f8a1569 100644 --- a/src/pokemon_size_record.c +++ b/src/pokemon_size_record.c @@ -1,5 +1,6 @@ #include "global.h" #include "pokemon_size_record.h" +#include "data2.h" #include "event_data.h" #include "species.h" #include "string_util.h" @@ -17,7 +18,6 @@ struct UnknownStruct }; extern u16 gScriptResult; -extern u8 gSpeciesNames[][11]; static const struct UnknownStruct sBigMonSizeTable[] = { diff --git a/src/pokenav.c b/src/pokenav.c index 60e7c73e1..f50f039f8 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -1,5 +1,6 @@ #include "global.h" #include "battle.h" +#include "data2.h" #include "string_util.h" struct UnkPokenavStruct_Sub { @@ -17,8 +18,6 @@ struct UnkPokenavStruct { extern struct UnkPokenavStruct *gUnknown_083DFEC4; -extern const struct Trainer gTrainers[]; -extern const u8 gTrainerClassNames[][13]; void sub_80F700C(u8 *arg0, u16 arg1) { struct Trainer *trainer; diff --git a/src/rom3.c b/src/rom3.c index ef7b9a7ed..be6ae0b27 100644 --- a/src/rom3.c +++ b/src/rom3.c @@ -15,7 +15,6 @@ extern u8 unk_2000000[]; extern u16 gBattleTypeFlags; extern const u32 gBitTable[]; extern u16 gBattleWeather; -extern const struct BattleMove gBattleMoves[]; extern struct BattlePokemon gBattleMons[]; extern u8 gUnknown_020238C4; diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c index 437c62400..9561db690 100644 --- a/src/rom_8077ABC.c +++ b/src/rom_8077ABC.c @@ -1,6 +1,7 @@ #include "global.h" #include "battle.h" #include "blend_palette.h" +#include "data2.h" #include "decompress.h" #include "palette.h" #include "species.h" @@ -40,13 +41,6 @@ struct TransformStatus { u16 species; }; -struct MonCoords { - // This would use a bitfield, but sub_8079F44 - // uses it as a u8 and casting won't match. - u8 coords; // u8 x:4, y:4; - u8 y_offset; -}; - struct Struct_gUnknown_0837F578 { u8 field_0; u8 field_1; @@ -101,11 +95,8 @@ extern struct Struct_unk_2019348 unk_2019348; extern struct TransformStatus gTransformStatuses[]; extern u16 gBattleMonPartyPositions[]; extern u16 gBattleTypeFlags; -extern struct MonCoords gMonBackPicCoords[]; -extern struct MonCoords gMonFrontPicCoords[]; extern u32 gTransformPersonalities[NUM_BATTLE_SLOTS]; extern u8 gBattleMonForms[NUM_BATTLE_SLOTS]; -extern u8 gEnemyMonElevation[]; extern u16 gUnknown_0202F7CA[]; extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS]; extern u8 gBattleAnimPlayerMonIndex; @@ -116,9 +107,6 @@ extern u8 gUnknown_02024A68; // gNumBattleMons? extern struct OamMatrix gOamMatrices[]; extern struct Struct_2017810 unk_2017810[]; extern u8 gUnknown_0202F7BE; -extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18; -extern struct SpriteSheet gMonFrontPicTable[]; -extern struct SpriteSheet gMonBackPicTable[]; extern u8 IsContest(); extern bool8 sub_8078874(u8); diff --git a/src/scrcmd.c b/src/scrcmd.c index 136181bd3..33867b58a 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -6,6 +6,7 @@ #include "clock.h" #include "coins.h" #include "contest_painting.h" +#include "data2.h" #include "decoration.h" #include "event_data.h" #include "field_door.h" @@ -59,9 +60,6 @@ extern SpecialFunc gSpecials[]; extern u8 *gStdScripts[]; extern u8 *gStdScripts_End[]; -extern u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; - extern u8 * const gUnknown_083CE048[]; extern struct Decoration gDecorations[]; diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index b87f5e956..d111cf8f6 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -3,6 +3,7 @@ #include "battle.h" #include "berry.h" #include "contest.h" +#include "data2.h" #include "decompress.h" #include "event_data.h" #include "items.h" @@ -21,9 +22,6 @@ #define CONTEST_ENTRY_PIC_LEFT 10 #define CONTEST_ENTRY_PIC_TOP 3 -extern const struct SpriteSheet gMonFrontPicTable[]; -extern struct MonCoords gMonFrontPicCoords[]; - extern void sub_80C46EC(void); extern void sub_80C4740(void); extern void sub_80C48F4(void); @@ -35,7 +33,6 @@ extern void sub_8042044(struct Pokemon *mon, u16, u8); extern void sub_8121E10(void); extern void sub_8121E34(void); -extern void *gUnknown_081FAF4C[]; extern struct SpriteTemplate gUnknown_02024E8C; extern struct SpritePalette *sub_80409C8(u16, u32, u32); @@ -437,7 +434,7 @@ void ShowContestEntryMonPic(void) gTasks[taskId].data[0] = 0; gTasks[taskId].data[1] = species; HandleLoadSpecialPokePic((struct SpriteSheet *)&gMonFrontPicTable[species].data, - gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, + gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, (u32)gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species, var1); paletteData = sub_80409C8(species, var2, var1); LoadCompressedObjectPalette(paletteData); diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c index e1d532b16..9e833ec34 100644 --- a/src/script_pokemon_util_80F99CC.c +++ b/src/script_pokemon_util_80F99CC.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "battle_party_menu.h" +#include "data2.h" #include "palette.h" #include "pokemon.h" #include "rom4.h" @@ -17,8 +18,6 @@ extern u16 gSpecialVar_0x8005; extern u8 gUnknown_02038694; extern u16 gScriptResult; -extern u8 gMoveNames[][13]; - extern void (*gUnknown_0300485C)(void); extern void OpenPartyMenu(u8, u8); diff --git a/src/smokescreen.c b/src/smokescreen.c index 1d3a14a5b..0406c1cb3 100644 --- a/src/smokescreen.c +++ b/src/smokescreen.c @@ -1,4 +1,5 @@ #include "global.h" +#include "data2.h" #include "decompress.h" #include "sprite.h" @@ -6,9 +7,6 @@ extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *)); static void sub_8046388(struct Sprite *); -extern struct SpriteSheet gUnknown_081FAEA4; -extern struct SpritePalette gUnknown_081FAEAC; -extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; u8 sub_8046234(s16 x, s16 y, u8 a3) { diff --git a/src/starter_choose.c b/src/starter_choose.c index 35647473c..32b6adf36 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -1,6 +1,7 @@ #include "global.h" #include "starter_choose.h" #include "asm.h" +#include "data2.h" #include "decompress.h" #include "main.h" #include "menu.h" @@ -15,17 +16,7 @@ #include "task.h" #include "trig.h" -struct MonCoords -{ - u8 x, y; -}; - -extern void * const gUnknown_081FAF4C[]; extern u16 gScriptResult; -extern const u8 gSpeciesNames[][11]; -extern const struct SpriteSheet gMonFrontPicTable[]; -extern const struct MonCoords gMonFrontPicCoords[]; -extern const struct SpritePalette gMonPaletteTable[]; extern struct SpriteTemplate gUnknown_02024E8C; //-------------------------------------------------- @@ -565,7 +556,7 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y) DecompressPicFromTable_2( &gMonFrontPicTable[species], - gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, + gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species); LoadCompressedObjectPalette(&gMonPaletteTable[species]); diff --git a/src/tv.c b/src/tv.c index dfda14d82..d2e38c088 100644 --- a/src/tv.c +++ b/src/tv.c @@ -1,6 +1,7 @@ #include "global.h" #include "asm.h" #include "tv.h" +#include "data2.h" #include "event_data.h" #include "field_message_box.h" #include "flags.h" @@ -69,9 +70,6 @@ extern u8 gUnknown_020387E8; extern struct UnkTvStruct gUnknown_03005D38; -extern u8 gSpeciesNames[][11]; -extern u8 gMoveNames[][13]; - extern u8 *gTVBravoTrainerTextGroup[]; extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; extern u8 *gTVSmartShopperTextGroup[]; -- cgit v1.2.3 From 6508197cbbd6a10226958d4e4b6bebb4fc754cad Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 21 May 2017 13:31:26 +0200 Subject: Define gSineTable in trig.h --- include/trig.h | 2 ++ src/intro.c | 1 - src/pokedex.c | 2 +- src/trig.c | 1 - 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/trig.h b/include/trig.h index 5a948e1ef..03d8c453e 100644 --- a/include/trig.h +++ b/include/trig.h @@ -1,6 +1,8 @@ #ifndef GUARD_TRIG_H #define GUARD_TRIG_H +extern s16 gSineTable[]; + s16 Sin(s16 index, s16 amplitude); s16 Cos(s16 index, s16 amplitude); s16 Sin2(u16 angle); diff --git a/src/intro.c b/src/intro.c index 7f6763199..3f4897092 100644 --- a/src/intro.c +++ b/src/intro.c @@ -44,7 +44,6 @@ extern const u16 gIntroCopyright_Pal[]; extern const u16 gIntroCopyright_Tilemap[]; extern const u16 gUnknown_08393E64[]; extern void *const gUnknown_0840B5A0[]; -extern const s16 gSineTable[]; //-------------------------------------------------- // Graphics Data diff --git a/src/pokedex.c b/src/pokedex.c index 91e577bbc..97bac3390 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -14,6 +14,7 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "trig.h" // I'm #define-ing these just for now so I can keep using the old unkXXX member names #define unk60E selectedPokemon @@ -78,7 +79,6 @@ extern struct SpriteTemplate gSpriteTemplate_83A056C; extern struct SpriteTemplate gSpriteTemplate_83A0584; extern struct SpriteTemplate gSpriteTemplate_83A059C; extern struct SpriteTemplate gSpriteTemplate_83A05B4; -extern s16 gSineTable[]; extern struct PokedexListItem *gUnknown_0202FFBC; extern IntrCallback gUnknown_03005CEC; extern u8 gUnknown_08E96BD4[]; diff --git a/src/trig.c b/src/trig.c index 8b75b3838..d64231087 100644 --- a/src/trig.c +++ b/src/trig.c @@ -1,7 +1,6 @@ #include "global.h" #include "trig.h" -extern s16 gSineTable[]; extern s16 gSineDegreeTable[]; // amplitude * sin(index*(π/128)) -- cgit v1.2.3 From 2b8d522c6cf6de600f07e409b9148e6ce92e047d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 23:32:57 -0400 Subject: sub_805C930 --- asm/field_map_obj.s | 32 -------------------------------- src/field_map_obj.c | 15 +++++++++++++++ 2 files changed, 15 insertions(+), 32 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d54b57fed..ca3cdda1e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,38 +6,6 @@ .text - thumb_func_start sub_805C930 -sub_805C930: @ 805C930 - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805C964 - ldr r5, _0805C960 @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805C966 - .align 2, 0 -_0805C960: .4byte gUnknown_0837520C -_0805C964: - movs r0, 0 -_0805C966: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805C930 - thumb_func_start sub_805C96C sub_805C96C: @ 805C96C push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f7e09aacf..19d4676cf 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -6,6 +6,7 @@ #include "field_player_avatar.h" #include "palette.h" #include "rom4.h" +#include "rng.h" #include "sprite.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -1547,3 +1548,17 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +extern bool8 FieldObjectExecRegularAnim(); +extern const s16 gUnknown_0837520C[]; +extern void sub_8064820(struct Sprite *, s16); + +u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + -- cgit v1.2.3 From a8d4813e571bb4dcdac5ee1fcf11d1efa4384687 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 20 May 2017 23:49:47 -0400 Subject: A handful more functions related to field map movement patterns --- asm/field_map_obj.s | 86 ----------------------------------------------------- src/field_map_obj.c | 43 +++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 88 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ca3cdda1e..c9744414e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,92 +6,6 @@ .text - thumb_func_start sub_805C96C -sub_805C96C: @ 805C96C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805C980 - movs r0, 0 - b _0805C986 -_0805C980: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805C986: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805C96C - - thumb_func_start sub_805C98C -sub_805C98C: @ 805C98C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805C9D4 @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805C9CA - movs r0, 0x1 - strh r0, [r6, 0x30] -_0805C9CA: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805C9D4: .4byte gUnknown_08375240 - thumb_func_end sub_805C98C - - thumb_func_start sub_805C9D8 -sub_805C9D8: @ 805C9D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805C9D8 - thumb_func_start sub_805CA08 sub_805CA08: @ 805CA08 push {r4,r5,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 19d4676cf..a7856ec07 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1548,13 +1548,14 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -extern bool8 FieldObjectExecRegularAnim(); +extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *); extern const s16 gUnknown_0837520C[]; extern void sub_8064820(struct Sprite *, s16); u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) { - if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) { + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { return 0; } sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); @@ -1562,3 +1563,41 @@ u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +extern u8 sub_8064824(struct Sprite *); + +u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +extern const u8 gUnknown_08375240[4]; +extern u8 sub_805FF20(struct MapObject *, u8); + +u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + direction = directions[Random() & 3]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + -- cgit v1.2.3 From 83ddca476069c52e0ea550b335539c0371d164c3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 00:18:31 -0400 Subject: field_map_obj.c up to and including FieldObjectIsTrainerAndCloseToPlayer --- asm/field_map_obj.s | 90 ----------------------------------------------------- src/field_map_obj.c | 41 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 90 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index c9744414e..fb19ddbb2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,96 +6,6 @@ .text - thumb_func_start sub_805CA08 -sub_805CA08: @ 805CA08 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CA26 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805CA26: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CA08 - - thumb_func_start FieldObjectIsTrainerAndCloseToPlayer -FieldObjectIsTrainerAndCloseToPlayer: @ 805CA30 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r0, 0x80 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0805CA9C - ldrb r0, [r5, 0x7] - cmp r0, 0x1 - beq _0805CA4C - cmp r0, 0x3 - bne _0805CA9C -_0805CA4C: - mov r7, sp - adds r7, 0x2 - mov r0, sp - adds r1, r7, 0 - bl PlayerGetDestCoords - ldrh r2, [r5, 0x10] - ldrh r4, [r5, 0x12] - ldrb r1, [r5, 0x1D] - subs r3, r2, r1 - subs r0, r4, r1 - lsls r0, 16 - lsrs r5, r0, 16 - adds r2, r1, r2 - lsls r2, 16 - lsrs r2, 16 - adds r1, r4 - lsls r1, 16 - lsrs r6, r1, 16 - mov r0, sp - lsls r3, 16 - asrs r3, 16 - movs r1, 0 - ldrsh r4, [r0, r1] - cmp r3, r4 - bgt _0805CA9C - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, r4 - blt _0805CA9C - lsls r0, r5, 16 - asrs r0, 16 - movs r2, 0 - ldrsh r1, [r7, r2] - cmp r0, r1 - bgt _0805CA9C - lsls r0, r6, 16 - asrs r0, 16 - cmp r0, r1 - bge _0805CAA0 -_0805CA9C: - movs r0, 0 - b _0805CAA2 -_0805CAA0: - movs r0, 0x1 -_0805CAA2: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end FieldObjectIsTrainerAndCloseToPlayer - thumb_func_start sub_805CAAC sub_805CAAC: @ 805CAAC push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index a7856ec07..61ec26365 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1601,3 +1601,44 @@ u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + +u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject) +{ + s16 x; + s16 y; + s16 objx; + s16 objy; + s16 minx; + s16 maxx; + s16 miny; + s16 maxy; + if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) == 0) + { + return 0; + } + if (mapObject->trainerType != 1 && mapObject->trainerType != 3) + { + return 0; + } + PlayerGetDestCoords(&x, &y); + objx = mapObject->coords2.x; + objy = mapObject->coords2.y; + minx = objx - mapObject->trainerRange_berryTreeId; + miny = objy - mapObject->trainerRange_berryTreeId; + maxx = objx + mapObject->trainerRange_berryTreeId; + maxy = objy + mapObject->trainerRange_berryTreeId; + if (minx > x || maxx < x || miny > y || maxy < y) + { + return 0; + } + return 1; +} -- cgit v1.2.3 From f578c81cfdfb54e1101c5f5785cb685bd63c3b5a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 00:48:56 -0400 Subject: More functions governing npc trainer facing directions --- asm/field_map_obj.s | 57 ----------------------------------------------------- src/field_map_obj.c | 44 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+), 57 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index fb19ddbb2..23cbb1ac1 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,63 +6,6 @@ .text - thumb_func_start sub_805CAAC -sub_805CAAC: @ 805CAAC - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r0, r1, 16 - lsls r2, 16 - lsls r3, 16 - cmp r2, r3 - ble _0805CACA - movs r2, 0x4 - lsls r0, r4, 16 - cmp r0, 0 - bge _0805CAD4 - movs r2, 0x3 - b _0805CAD4 -_0805CACA: - movs r2, 0x1 - lsls r0, 16 - cmp r0, 0 - bge _0805CAD4 - movs r2, 0x2 -_0805CAD4: - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CAAC - - thumb_func_start sub_805CADC -sub_805CADC: @ 805CADC - push {lr} - movs r0, 0x1 - lsls r1, 16 - cmp r1, 0 - bge _0805CAE8 - movs r0, 0x2 -_0805CAE8: - pop {r1} - bx r1 - thumb_func_end sub_805CADC - - thumb_func_start sub_805CAEC -sub_805CAEC: @ 805CAEC - push {lr} - movs r1, 0x4 - lsls r0, 16 - cmp r0, 0 - bge _0805CAF8 - movs r1, 0x3 -_0805CAF8: - adds r0, r1, 0 - pop {r1} - bx r1 - thumb_func_end sub_805CAEC - thumb_func_start sub_805CB00 sub_805CB00: @ 805CB00 push {r4-r7,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 61ec26365..e5a50362a 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1642,3 +1642,47 @@ u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject) } return 1; } + +u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3) +{ + u8 dirn; + if (a2 > a3) + { + dirn = DIR_EAST; + if (a0 < 0) + { + dirn = DIR_WEST; + } + } + else + { + dirn = DIR_SOUTH; + if (a1 < 0) + { + dirn = DIR_NORTH; + } + } + return dirn; +} + +u8 sub_805CADC(s16 a0, s16 a1) +{ + u8 dirn; + dirn = DIR_SOUTH; + if (a1 < 0) + { + dirn = DIR_NORTH; + } + return dirn; +} + +u8 sub_805CAEC(s16 a0, s16 a1) +{ + u8 dirn; + dirn = DIR_EAST; + if (a0 < 0) + { + dirn = DIR_WEST; + } + return dirn; +} -- cgit v1.2.3 From 9997127c347abfbc245270077a762348162831b8 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 10:01:47 -0400 Subject: A few more functions for calculating map object facing directions --- asm/field_map_obj.s | 332 ---------------------------------------------------- src/field_map_obj.c | 133 ++++++++++++++++++++- 2 files changed, 131 insertions(+), 334 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 23cbb1ac1..3103002d2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,338 +6,6 @@ .text - thumb_func_start sub_805CB00 -sub_805CB00: @ 805CB00 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB3C - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CB56 - b _0805CB54 -_0805CB3C: - cmp r0, 0x4 - bne _0805CB56 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB56 -_0805CB54: - movs r0, 0x2 -_0805CB56: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CB00 - - thumb_func_start sub_805CB5C -sub_805CB5C: @ 805CB5C - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CB98 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CBB2 - b _0805CBB0 -_0805CB98: - cmp r0, 0x3 - bne _0805CBB2 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CBB2 -_0805CBB0: - movs r0, 0x2 -_0805CBB2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CB5C - - thumb_func_start sub_805CBB8 -sub_805CBB8: @ 805CBB8 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CBF4 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CC0E - b _0805CC0C -_0805CBF4: - cmp r0, 0x4 - bne _0805CC0E - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC0E -_0805CC0C: - movs r0, 0x1 -_0805CC0E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CBB8 - - thumb_func_start sub_805CC14 -sub_805CC14: @ 805CC14 - push {r4-r7,lr} - lsls r0, 16 - asrs r4, r0, 16 - lsls r1, 16 - asrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - lsls r3, 16 - asrs r7, r3, 16 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC50 - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CC6A - b _0805CC68 -_0805CC50: - cmp r0, 0x3 - bne _0805CC6A - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - adds r3, r7, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CC6A -_0805CC68: - movs r0, 0x1 -_0805CC6A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CC14 - - thumb_func_start sub_805CC70 -sub_805CC70: @ 805CC70 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bne _0805CCA6 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 -_0805CCA6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CC70 - - thumb_func_start sub_805CCAC -sub_805CCAC: @ 805CCAC - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0805CCE2 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CADC - lsls r0, 24 - lsrs r0, 24 -_0805CCE2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CCAC - - thumb_func_start sub_805CCE8 -sub_805CCE8: @ 805CCE8 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805CD1E - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 -_0805CD1E: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CCE8 - - thumb_func_start sub_805CD24 -sub_805CD24: @ 805CD24 - push {r4-r7,lr} - lsls r0, 16 - asrs r7, r0, 16 - lsls r1, 16 - asrs r6, r1, 16 - lsls r2, 16 - asrs r5, r2, 16 - lsls r3, 16 - asrs r4, r3, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAAC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _0805CD5A - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - adds r3, r4, 0 - bl sub_805CAEC - lsls r0, 24 - lsrs r0, 24 -_0805CD5A: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805CD24 - thumb_func_start sub_805CD60 sub_805CD60: @ 805CD60 push {r4-r6,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index e5a50362a..f042b4af1 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1665,7 +1665,7 @@ u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3) return dirn; } -u8 sub_805CADC(s16 a0, s16 a1) +u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3) { u8 dirn; dirn = DIR_SOUTH; @@ -1676,7 +1676,7 @@ u8 sub_805CADC(s16 a0, s16 a1) return dirn; } -u8 sub_805CAEC(s16 a0, s16 a1) +u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3) { u8 dirn; dirn = DIR_EAST; @@ -1686,3 +1686,132 @@ u8 sub_805CAEC(s16 a0, s16 a1) } return dirn; } + +u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = DIR_NORTH; + } + } + else if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = DIR_NORTH; + } + } + return dirn; +} + +u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = DIR_NORTH; + } + } + else if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = DIR_NORTH; + } + } + return dirn; +} + +u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = DIR_SOUTH; + } + } + else if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = DIR_SOUTH; + } + } + return dirn; +} + +u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = DIR_SOUTH; + } + } + else if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = DIR_SOUTH; + } + } + return dirn; +} + +u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_EAST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_WEST) + { + dirn = sub_805CADC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_SOUTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + } + return dirn; +} + +u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) { + u8 dirn; + dirn = sub_805CAAC(a0, a1, a2, a3); + if (dirn == DIR_NORTH) + { + dirn = sub_805CAEC(a0, a1, a2, a3); + } + return dirn; +} + -- cgit v1.2.3 From bb42b58e4b703e1f00828b38ac233cf222b8885d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 10:15:44 -0400 Subject: sub_805CD60 --- asm/field_map_obj.s | 73 ----------------------------------------------------- src/field_map_obj.c | 47 +++++++++++++++++++++++++++++----- 2 files changed, 40 insertions(+), 80 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 3103002d2..782d5dda1 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,79 +6,6 @@ .text - thumb_func_start sub_805CD60 -sub_805CD60: @ 805CD60 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - bne _0805CD78 - movs r0, 0 - b _0805CDDC -_0805CD78: - mov r5, sp - adds r5, 0x2 - mov r0, sp - adds r1, r5, 0 - bl PlayerGetDestCoords - mov r2, sp - mov r0, sp - ldrh r0, [r0] - ldrh r1, [r4, 0x10] - subs r0, r1 - strh r0, [r2] - ldrh r0, [r5] - ldrh r1, [r4, 0x12] - subs r0, r1 - strh r0, [r5] - mov r0, sp - ldrh r3, [r5] - ldrh r2, [r0] - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _0805CDAC - negs r0, r0 - lsls r0, 16 - lsrs r2, r0, 16 -_0805CDAC: - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0 - bge _0805CDBA - negs r0, r0 - lsls r0, 16 - lsrs r3, r0, 16 -_0805CDBA: - ldr r0, _0805CDE4 @ =gUnknown_08375244 - lsls r4, r6, 2 - adds r4, r0 - mov r0, sp - movs r6, 0 - ldrsh r0, [r0, r6] - movs r6, 0 - ldrsh r1, [r5, r6] - lsls r2, 16 - asrs r2, 16 - lsls r3, 16 - asrs r3, 16 - ldr r4, [r4] - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_0805CDDC: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0805CDE4: .4byte gUnknown_08375244 - thumb_func_end sub_805CD60 - thumb_func_start sub_805CDE8 sub_805CDE8: @ 805CDE8 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f042b4af1..9d4a67da3 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -34,6 +34,7 @@ void GetFieldObjectMovingCameraOffset(s16 *, s16 *); void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); +extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); struct PairedPalettes { @@ -1687,7 +1688,8 @@ u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3) return dirn; } -u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_SOUTH) @@ -1709,7 +1711,8 @@ u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_SOUTH) @@ -1731,7 +1734,8 @@ u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_NORTH) @@ -1775,7 +1779,8 @@ u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_EAST) @@ -1785,7 +1790,8 @@ u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_WEST) @@ -1795,7 +1801,8 @@ u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_SOUTH) @@ -1805,7 +1812,8 @@ u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } -u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) { +u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) +{ u8 dirn; dirn = sub_805CAAC(a0, a1, a2, a3); if (dirn == DIR_NORTH) @@ -1815,3 +1823,28 @@ u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3) { return dirn; } +u8 sub_805CD60(struct MapObject *mapObject, u8 a1) +{ + s16 x; + s16 y; + s16 x2; + s16 y2; + if (!FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + return 0; + } + PlayerGetDestCoords(&x, &y); + x -= mapObject->coords2.x; + y -= mapObject->coords2.y; + x2 = x; + y2 = y; + if (x2 < 0) + { + x2 = -x2; + } + if (y2 < 0) + { + y2 = -y2; + } + return gUnknown_08375244[a1](x, y, x2, y2); +} -- cgit v1.2.3 From 6a02a6f6e5f90ae5ddf38bd69c90734a50d9142b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 11:30:23 -0400 Subject: sub_805CE0C and helpers --- asm/field_map_obj.s | 178 ++---------------------------------------------- include/field_map_obj.h | 2 +- src/field_map_obj.c | 75 ++++++++++++++++++-- 3 files changed, 75 insertions(+), 180 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 782d5dda1..4aa22bad2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805CDE8 -sub_805CDE8: @ 805CDE8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805CE04 @ =gMapObjects - adds r0, r2 - ldr r2, _0805CE08 @ =sub_805CE0C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805CE04: .4byte gMapObjects -_0805CE08: .4byte sub_805CE0C - thumb_func_end sub_805CDE8 - - thumb_func_start sub_805CE0C -sub_805CE0C: @ 805CE0C - push {r4,lr} - ldr r3, _0805CE28 @ =gUnknown_08375270 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805CE28: .4byte gUnknown_08375270 - thumb_func_end sub_805CE0C - - thumb_func_start sub_805CE2C -sub_805CE2C: @ 805CE2C - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CE2C - - thumb_func_start sub_805CE40 -sub_805CE40: @ 805CE40 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CE40 - - thumb_func_start sub_805CE6C -sub_805CE6C: @ 805CE6C - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CEA2 - ldr r4, _0805CEAC @ =gUnknown_0837520C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805CEA2: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805CEAC: .4byte gUnknown_0837520C - thumb_func_end sub_805CE6C - - thumb_func_start sub_805CEB0 -sub_805CEB0: @ 805CEB0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805CECE - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805CED6 -_0805CECE: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805CED8 -_0805CED6: - movs r0, 0 -_0805CED8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CEB0 - - thumb_func_start sub_805CEE0 -sub_805CEE0: @ 805CEE0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805CF24 @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805CF10 - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805CF10: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805CF24: .4byte gUnknown_08375240 - thumb_func_end sub_805CEE0 - thumb_func_start sub_805CF28 sub_805CF28: @ 805CF28 push {lr} @@ -6526,6 +6353,11 @@ sub_805FD08: @ 805FD08 thumb_func_start npc_reset npc_reset: @ 805FD18 +@ mapObject->mapobj_bit_1 = 0; +@ mapObject->mapobj_bit_6 = 0; +@ mapObject->mapobj_bit_7 = 0; +@ mapObject->mapobj_unk_1C = 0xff; +@ sprite->data1 = 0; ldrb r3, [r0] movs r2, 0x3 negs r2, r2 diff --git a/include/field_map_obj.h b/include/field_map_obj.h index dfc41d38b..ca0852a96 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -6,6 +6,6 @@ void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); -void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)()); +void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)()); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 9d4a67da3..f6ebbee68 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -35,6 +35,7 @@ void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); +extern u16 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1505,19 +1506,19 @@ u16 npc_paltag_by_palslot(u8 a) return 0x11FF; } -u32 sub_805C8A8(void); +u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite); void sub_805C884(struct Sprite *sprite) { meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8); } -u32 sub_805C8A8(void) +u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite) { return 0; } -u32 sub_805C8D0(struct MapObject *, struct Sprite *); +u8 sub_805C8D0(struct MapObject *, struct Sprite *); void sub_805C8AC(struct Sprite *sprite) { @@ -1526,16 +1527,16 @@ void sub_805C8AC(struct Sprite *sprite) extern u8 (*const gUnknown_08375224[])(); -u32 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite) { return gUnknown_08375224[sprite->data1](mapObject, sprite); } -void npc_reset(); +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) { - npc_reset(mapObject); + npc_reset(mapObject, sprite); sprite->data1 = 1; return 1; } @@ -1848,3 +1849,65 @@ u8 sub_805CD60(struct MapObject *mapObject, u8 a1) } return gUnknown_08375244[a1](x, y, x2, y2); } + +u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805CDE8(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805CE0C); +} + +u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375270[sprite->data1](mapObject, sprite); +} + +u16 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u16 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u16 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u16 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u16 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} -- cgit v1.2.3 From 5b3a726820513cebb68ac3a3fc8e97014e415db3 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 11:53:38 -0400 Subject: sub_805CF28 and helpers --- asm/field_map_obj.s | 215 ---------------------------------------------------- src/field_map_obj.c | 94 +++++++++++++++++++++-- 2 files changed, 88 insertions(+), 221 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 4aa22bad2..75f4abb55 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,221 +6,6 @@ .text - thumb_func_start sub_805CF28 -sub_805CF28: @ 805CF28 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805CF44 @ =gMapObjects - adds r0, r2 - ldr r2, _0805CF48 @ =sub_805CF4C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805CF44: .4byte gMapObjects -_0805CF48: .4byte sub_805CF4C - thumb_func_end sub_805CF28 - - thumb_func_start sub_805CF4C -sub_805CF4C: @ 805CF4C - push {r4,lr} - ldr r3, _0805CF68 @ =gUnknown_08375284 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805CF68: .4byte gUnknown_08375284 - thumb_func_end sub_805CF4C - - thumb_func_start sub_805CF6C -sub_805CF6C: @ 805CF6C - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CF6C - - thumb_func_start sub_805CF80 -sub_805CF80: @ 805CF80 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805CF80 - - thumb_func_start sub_805CFAC -sub_805CFAC: @ 805CFAC - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805CFE0 - ldr r5, _0805CFDC @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805CFE2 - .align 2, 0 -_0805CFDC: .4byte gUnknown_0837520C -_0805CFE0: - movs r0, 0 -_0805CFE2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805CFAC - - thumb_func_start sub_805CFE8 -sub_805CFE8: @ 805CFE8 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805CFFC - movs r0, 0 - b _0805D002 -_0805CFFC: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D002: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805CFE8 - - thumb_func_start sub_805D008 -sub_805D008: @ 805D008 - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805D050 @ =gUnknown_083752A0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805D046 - strh r7, [r6, 0x30] -_0805D046: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D050: .4byte gUnknown_083752A0 - thumb_func_end sub_805D008 - - thumb_func_start sub_805D054 -sub_805D054: @ 805D054 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D054 - - thumb_func_start sub_805D084 -sub_805D084: @ 805D084 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D0A2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805D0A2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D084 - thumb_func_start sub_805D0AC sub_805D0AC: @ 805D0AC push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f6ebbee68..84d3d1f01 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -35,7 +35,8 @@ void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); -extern u16 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1577,6 +1578,7 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } +extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_08375240[4]; extern u8 sub_805FF20(struct MapObject *, u8); @@ -1862,21 +1864,21 @@ u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite) return gUnknown_08375270[sprite->data1](mapObject, sprite); } -u16 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); sprite->data1 = 1; return 1; } -u16 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite) { FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); sprite->data1 = 2; return 1; } -u16 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) { @@ -1887,7 +1889,7 @@ u16 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u16 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { @@ -1897,7 +1899,7 @@ u16 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u16 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) { u8 direction; u8 directions[4]; @@ -1911,3 +1913,83 @@ u16 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) sprite->data1 = 1; return 1; } + +u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805CF28(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805CF4C); +} + +u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375284[sprite->data1](mapObject, sprite); +} + +u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805CF80(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805CFAC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + +u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D008(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752A0, 2); + direction = directions[Random() & 1]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805D054(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + +u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} -- cgit v1.2.3 From 2501d0b6d391e2d424c238990be233c88502bb55 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 12:03:47 -0400 Subject: sub_805D0AC and helpers --- asm/field_map_obj.s | 215 ---------------------------------------------------- src/field_map_obj.c | 85 ++++++++++++++++++++- 2 files changed, 84 insertions(+), 216 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 75f4abb55..bbd6a4c36 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,221 +6,6 @@ .text - thumb_func_start sub_805D0AC -sub_805D0AC: @ 805D0AC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D0C8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D0CC @ =sub_805D0D0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D0C8: .4byte gMapObjects -_0805D0CC: .4byte sub_805D0D0 - thumb_func_end sub_805D0AC - - thumb_func_start sub_805D0D0 -sub_805D0D0: @ 805D0D0 - push {r4,lr} - ldr r3, _0805D0EC @ =gUnknown_083752A4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D0EC: .4byte gUnknown_083752A4 - thumb_func_end sub_805D0D0 - - thumb_func_start sub_805D0F0 -sub_805D0F0: @ 805D0F0 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D0F0 - - thumb_func_start sub_805D104 -sub_805D104: @ 805D104 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D104 - - thumb_func_start sub_805D130 -sub_805D130: @ 805D130 - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D164 - ldr r5, _0805D160 @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805D166 - .align 2, 0 -_0805D160: .4byte gUnknown_0837520C -_0805D164: - movs r0, 0 -_0805D166: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805D130 - - thumb_func_start sub_805D16C -sub_805D16C: @ 805D16C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D180 - movs r0, 0 - b _0805D186 -_0805D180: - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D186: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D16C - - thumb_func_start sub_805D18C -sub_805D18C: @ 805D18C - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - ldr r1, _0805D1D4 @ =gUnknown_083752C0 - mov r0, sp - movs r2, 0x2 - bl memcpy - bl Random - movs r7, 0x1 - adds r1, r7, 0 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r4, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x5 - strh r0, [r6, 0x30] - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_805FF20 - lsls r0, 24 - cmp r0, 0 - beq _0805D1CA - strh r7, [r6, 0x30] -_0805D1CA: - movs r0, 0x1 - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D1D4: .4byte gUnknown_083752C0 - thumb_func_end sub_805D18C - - thumb_func_start sub_805D1D8 -sub_805D1D8: @ 805D1D8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x6 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D1D8 - - thumb_func_start sub_805D208 -sub_805D208: @ 805D208 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D226 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805D226: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D208 - thumb_func_start sub_805D230 sub_805D230: @ 805D230 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 84d3d1f01..4de55e0af 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -37,6 +37,7 @@ u8 FindFieldObjectPaletteIndexByTag(u16); extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1578,8 +1579,9 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_08375240[4]; +extern const u8 gUnknown_083752A0[2]; +extern const u8 gUnknown_083752C0[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -1993,3 +1995,84 @@ u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) } return 0; } + +u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D0AC(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D0D0); +} + +u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752A4[sprite->data1](mapObject, sprite); +} + +u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D104(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D130(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) + { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + +u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) != 0) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D18C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752C0, 2); + direction = directions[Random() & 1]; + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 5; + if (sub_805FF20(mapObject, direction) != 0) + { + sprite->data1 = 1; + } + return 1; +} + +u8 sub_805D1D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 6; + return 1; +} + +u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + -- cgit v1.2.3 From ea609c2b3791c8bd23e3d8109093090c5d619e9d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 12:10:42 -0400 Subject: sub_805D230 and helpers --- asm/field_map_obj.s | 93 ----------------------------------------------------- src/field_map_obj.c | 36 +++++++++++++++++++++ 2 files changed, 36 insertions(+), 93 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index bbd6a4c36..4cb35a56c 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,99 +6,6 @@ .text - thumb_func_start sub_805D230 -sub_805D230: @ 805D230 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D24C @ =gMapObjects - adds r0, r2 - ldr r2, _0805D250 @ =sub_805D254 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D24C: .4byte gMapObjects -_0805D250: .4byte sub_805D254 - thumb_func_end sub_805D230 - - thumb_func_start sub_805D254 -sub_805D254: @ 805D254 - push {r4,lr} - ldr r3, _0805D270 @ =gUnknown_083752C4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D270: .4byte gUnknown_083752C4 - thumb_func_end sub_805D254 - - thumb_func_start sub_805D274 -sub_805D274: @ 805D274 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D274 - - thumb_func_start sub_805D2A0 -sub_805D2A0: @ 805D2A0 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - bne _0805D2B2 - movs r0, 0 - b _0805D2B8 -_0805D2B2: - movs r0, 0x2 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D2B8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D2A0 - - thumb_func_start sub_805D2C0 -sub_805D2C0: @ 805D2C0 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0 - bx lr - thumb_func_end sub_805D2C0 - thumb_func_start FieldObjectCB_BerryTree FieldObjectCB_BerryTree: @ 805D2D0 push {r4,r5,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 4de55e0af..c31db8a4b 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -38,6 +38,7 @@ extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -2076,3 +2077,38 @@ u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) return 0; } +u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D230(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D254); +} + +u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752C4[sprite->data1](mapObject, sprite); +} + +u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) != 0) + { + sprite->data1 = 2; + return 1; + } + return 0; +} + +u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 0; + return 0; +} -- cgit v1.2.3 From 6bb35f495cfc8f31be4a09100d4eb46fd1d5cd68 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 13:40:38 -0400 Subject: npc_reset and get image anim id functions --- asm/field_map_obj.s | 205 +--------------------------------------------------- ld_script.txt | 2 + src/field_map_obj.c | 168 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 172 insertions(+), 203 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 4cb35a56c..8ce2ecb70 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5826,211 +5826,10 @@ sub_805FD08: @ 805FD08 strb r1, [r0] movs r0, 0 bx lr - thumb_func_end sub_805FD08 - - thumb_func_start npc_reset -npc_reset: @ 805FD18 -@ mapObject->mapobj_bit_1 = 0; -@ mapObject->mapobj_bit_6 = 0; -@ mapObject->mapobj_bit_7 = 0; -@ mapObject->mapobj_unk_1C = 0xff; -@ sprite->data1 = 0; - ldrb r3, [r0] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - movs r3, 0x41 - negs r3, r3 - ands r2, r3 - movs r3, 0x7F - ands r2, r3 - strb r2, [r0] - movs r2, 0xFF - strb r2, [r0, 0x1C] - movs r0, 0 - strh r0, [r1, 0x30] - bx lr - thumb_func_end npc_reset - - thumb_func_start FieldObjectDirectionToImageAnimId -FieldObjectDirectionToImageAnimId: @ 805FD38 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD44 @ =gUnknown_083755F4 - adds r0, r1 - ldrb r0, [r0] - bx lr .align 2, 0 -_0805FD44: .4byte gUnknown_083755F4 - thumb_func_end FieldObjectDirectionToImageAnimId - - thumb_func_start get_go_image_anim_num -get_go_image_anim_num: @ 805FD48 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD54 @ =gUnknown_083755FD - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD54: .4byte gUnknown_083755FD - thumb_func_end get_go_image_anim_num - - thumb_func_start get_go_fast_image_anim_num -get_go_fast_image_anim_num: @ 805FD58 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD64 @ =gUnknown_08375606 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD64: .4byte gUnknown_08375606 - thumb_func_end get_go_fast_image_anim_num - - thumb_func_start get_go_faster_image_anim_num -get_go_faster_image_anim_num: @ 805FD68 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD74 @ =gUnknown_0837560F - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD74: .4byte gUnknown_0837560F - thumb_func_end get_go_faster_image_anim_num - - thumb_func_start sub_805FD78 -sub_805FD78: @ 805FD78 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD84 @ =gUnknown_08375618 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD84: .4byte gUnknown_08375618 - thumb_func_end sub_805FD78 - - thumb_func_start sub_805FD88 -sub_805FD88: @ 805FD88 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FD94 @ =gUnknown_08375621 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FD94: .4byte gUnknown_08375621 - thumb_func_end sub_805FD88 - - thumb_func_start sub_805FD98 -sub_805FD98: @ 805FD98 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDA4 @ =gUnknown_0837562A - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDA4: .4byte gUnknown_0837562A - thumb_func_end sub_805FD98 - - thumb_func_start unref_sub_805FDA8 -unref_sub_805FDA8: @ 805FDA8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDB4 @ =gUnknown_08375633 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDB4: .4byte gUnknown_08375633 - thumb_func_end unref_sub_805FDA8 - - thumb_func_start sub_805FDB8 -sub_805FDB8: @ 805FDB8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDC4 @ =gUnknown_0837563C - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDC4: .4byte gUnknown_0837563C - thumb_func_end sub_805FDB8 - - thumb_func_start sub_805FDC8 -sub_805FDC8: @ 805FDC8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDD4 @ =gUnknown_08375645 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDD4: .4byte gUnknown_08375645 - thumb_func_end sub_805FDC8 - - thumb_func_start sub_805FDD8 -sub_805FDD8: @ 805FDD8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDE4 @ =gUnknown_0837564E - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDE4: .4byte gUnknown_0837564E - thumb_func_end sub_805FDD8 - - thumb_func_start sub_805FDE8 -sub_805FDE8: @ 805FDE8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FDF4 @ =gUnknown_08375657 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FDF4: .4byte gUnknown_08375657 - thumb_func_end sub_805FDE8 - - thumb_func_start sub_805FDF8 -sub_805FDF8: @ 805FDF8 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE04 @ =gUnknown_08375660 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE04: .4byte gUnknown_08375660 - thumb_func_end sub_805FDF8 - - thumb_func_start sub_805FE08 -sub_805FE08: @ 805FE08 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE14 @ =gUnknown_08375669 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE14: .4byte gUnknown_08375669 - thumb_func_end sub_805FE08 + thumb_func_end sub_805FD08 - thumb_func_start get_run_image_anim_num -get_run_image_anim_num: @ 805FE18 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FE24 @ =gUnknown_08375672 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FE24: .4byte gUnknown_08375672 - thumb_func_end get_run_image_anim_num + .section .text_805fd18 thumb_func_start sub_805FE28 sub_805FE28: @ 805FE28 diff --git a/ld_script.txt b/ld_script.txt index dac5fb782..866dcff5e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,6 +92,8 @@ SECTIONS { src/field_player_avatar.o(.text); src/field_map_obj.o(.text); asm/field_map_obj.o(.text); + src/field_map_obj.o(.text_b); + asm/field_map_obj.o(.text_805fd18); src/field_ground_effect.o(.text); asm/field_ground_effect.o(.text); src/field_map_obj_helpers.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index c31db8a4b..7e75d0ac1 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2112,3 +2112,171 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) mapObject->mapobj_bit_1 = 0; return 0; } + +void FieldObjectCB_BerryTree(struct Sprite *sprite); +void sub_805D4F4(struct Sprite *sprite); +void sub_805D634(struct Sprite *sprite); +void sub_805D774(struct Sprite *sprite); +void sub_805D8B4(struct Sprite *sprite); +void sub_805D9F4(struct Sprite *sprite); +void sub_805DB34(struct Sprite *sprite); +void sub_805DC74(struct Sprite *sprite); +void sub_805DDB4(struct Sprite *sprite); +void sub_805DEF4(struct Sprite *sprite); +void sub_805E034(struct Sprite *sprite); +void sub_805E174(struct Sprite *sprite); +void sub_805E278(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E37C(struct Sprite *sprite); +void sub_805E5DC(struct Sprite *sprite); +void sub_805E668(struct Sprite *sprite); +void sub_805E6F4(struct Sprite *sprite); +void sub_805E780(struct Sprite *sprite); +void sub_805E80C(struct Sprite *sprite); +void sub_805E898(struct Sprite *sprite); +void sub_805E924(struct Sprite *sprite); +void sub_805E9B0(struct Sprite *sprite); +void sub_805EA3C(struct Sprite *sprite); +void sub_805EAC8(struct Sprite *sprite); +void sub_805EB54(struct Sprite *sprite); +void sub_805EBE0(struct Sprite *sprite); +void sub_805EC6C(struct Sprite *sprite); +void sub_805ECF8(struct Sprite *sprite); +void sub_805ED84(struct Sprite *sprite); +void sub_805EE10(struct Sprite *sprite); +void sub_805EE9C(struct Sprite *sprite); +void sub_805EF28(struct Sprite *sprite); +void sub_805EFB4(struct Sprite *sprite); +void sub_805F040(struct Sprite *sprite); +void sub_805F0CC(struct Sprite *sprite); +void sub_805F158(struct Sprite *sprite); +void sub_805F1E4(struct Sprite *sprite); +void sub_805F270(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void sub_805F2FC(struct Sprite *sprite); +void FieldObjectCB_TreeDisguise(struct Sprite *sprite); +void FieldObjectCB_MountainDisguise(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void sub_805F8E0(struct Sprite *sprite); +void FieldObjectCB_Hidden1(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB20(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FB90(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC00(struct Sprite *sprite); +void sub_805FC70(struct Sprite *sprite); + +asm(".section .text_b\n"); + +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 0; + mapObject->mapobj_bit_6 = 0; + mapObject->mapobj_bit_7 = 0; + mapObject->mapobj_unk_1C = 0xff; + sprite->data1 = 0; +} + +extern const u8 gUnknown_083755F4[9]; +extern const u8 gUnknown_083755FD[9]; +extern const u8 gUnknown_08375606[9]; +extern const u8 gUnknown_0837560F[9]; +extern const u8 gUnknown_08375618[9]; +extern const u8 gUnknown_08375621[9]; +extern const u8 gUnknown_0837562A[9]; +extern const u8 gUnknown_08375633[9]; +extern const u8 gUnknown_0837563C[9]; +extern const u8 gUnknown_08375645[9]; +extern const u8 gUnknown_0837564E[9]; +extern const u8 gUnknown_08375657[9]; +extern const u8 gUnknown_08375660[9]; +extern const u8 gUnknown_08375669[9]; +extern const u8 gUnknown_08375672[9]; + +u8 FieldObjectDirectionToImageAnimId(u8 direction) +{ + return gUnknown_083755F4[direction]; +} + +u8 get_go_image_anim_num(u8 direction) +{ + return gUnknown_083755FD[direction]; +} + +u8 get_go_fast_image_anim_num(u8 direction) +{ + return gUnknown_08375606[direction]; +} + +u8 get_go_faster_image_anim_num(u8 direction) +{ + return gUnknown_0837560F[direction]; +} + +u8 sub_805FD78(u8 direction) +{ + return gUnknown_08375618[direction]; +} + +u8 sub_805FD88(u8 direction) +{ + return gUnknown_08375621[direction]; +} + +u8 sub_805FD98(u8 direction) +{ + return gUnknown_0837562A[direction]; +} + +u8 unref_sub_805FDA8(u8 direction) +{ + return gUnknown_08375633[direction]; +} + +u8 sub_805FDB8(u8 direction) +{ + return gUnknown_0837563C[direction]; +} + +u8 sub_805FDC8(u8 direction) +{ + return gUnknown_08375645[direction]; +} + +u8 sub_805FDD8(u8 direction) +{ + return gUnknown_0837564E[direction]; +} + +u8 sub_805FDE8(u8 direction) +{ + return gUnknown_08375657[direction]; +} + +u8 sub_805FDF8(u8 direction) +{ + return gUnknown_08375660[direction]; +} + +u8 sub_805FE08(u8 direction) +{ + return gUnknown_08375669[direction]; +} + +u8 get_run_image_anim_num(u8 direction) +{ + return gUnknown_08375672[direction]; +} -- cgit v1.2.3 From 29d718686112139d3fd6f5cc8341f354da9414fc Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 14:33:21 -0400 Subject: Berry tree field map object callback --- asm/field_map_obj.s | 298 ---------------------------------------------- src/field_map_obj.c | 111 ++++++++++++++++- src/field_player_avatar.c | 4 +- 3 files changed, 112 insertions(+), 301 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 8ce2ecb70..88703f251 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,304 +6,6 @@ .text - thumb_func_start FieldObjectCB_BerryTree -FieldObjectCB_BerryTree: @ 805D2D0 - push {r4,r5,lr} - adds r4, r0, 0 - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805D30C @ =gMapObjects - adds r5, r0, r1 - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0805D2FC - adds r0, r5, 0 - adds r1, r4, 0 - bl get_berry_tree_graphics - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - orrs r0, r1 - strh r0, [r4, 0x3C] -_0805D2FC: - ldr r2, _0805D310 @ =sub_805D314 - adds r0, r5, 0 - adds r1, r4, 0 - bl meta_step - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805D30C: .4byte gMapObjects -_0805D310: .4byte sub_805D314 - thumb_func_end FieldObjectCB_BerryTree - - thumb_func_start sub_805D314 -sub_805D314: @ 805D314 - push {r4,lr} - ldr r3, _0805D330 @ =gUnknown_083752D0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D330: .4byte gUnknown_083752D0 - thumb_func_end sub_805D314 - - thumb_func_start do_berry_tree_growth_sparkle_1 -do_berry_tree_growth_sparkle_1: @ 805D334 - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r6, r5, 0 - adds r6, 0x3E - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - ldrb r0, [r4, 0x1D] - bl GetStageByBerryTreeId - lsls r0, 24 - lsrs r7, r0, 24 - cmp r7, 0 - bne _0805D3A4 - ldrh r1, [r5, 0x3C] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _0805D39A - subs r6, 0x14 - ldrb r0, [r6] - cmp r0, 0x4 - bne _0805D39A - ldr r1, _0805D3A0 @ =gUnknown_0202FF84 - movs r2, 0x10 - ldrsh r0, [r4, r2] - str r0, [r1] - movs r2, 0x12 - ldrsh r0, [r4, r2] - str r0, [r1, 0x4] - adds r0, r5, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - str r0, [r1, 0x8] - ldrb r0, [r5, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r1, 0xC] - movs r0, 0x17 - bl FieldEffectStart - strb r7, [r6] -_0805D39A: - movs r0, 0 - b _0805D3E6 - .align 2, 0 -_0805D3A0: .4byte gUnknown_0202FF84 -_0805D3A4: - ldrb r1, [r4, 0x1] - movs r0, 0x21 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r6] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - subs r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - adds r0, r5, 0 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, r7 - bne _0805D3E0 - adds r0, r4, 0 - adds r1, r5, 0 - bl get_berry_tree_graphics - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x39 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - b _0805D3E6 -_0805D3E0: - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 -_0805D3E6: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end do_berry_tree_growth_sparkle_1 - - thumb_func_start sub_805D3EC -sub_805D3EC: @ 805D3EC - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - bne _0805D3FE - movs r0, 0 - b _0805D404 -_0805D3FE: - movs r0, 0 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805D404: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D3EC - - thumb_func_start do_berry_tree_growth_sparkle_2 -do_berry_tree_growth_sparkle_2: @ 805D40C - push {r4,lr} - ldrb r2, [r0] - movs r3, 0x2 - orrs r2, r3 - strb r2, [r0] - movs r3, 0 - movs r2, 0x3 - strh r2, [r1, 0x30] - strh r3, [r1, 0x32] - ldrh r3, [r1, 0x3C] - movs r2, 0x2 - orrs r2, r3 - strh r2, [r1, 0x3C] - ldr r3, _0805D454 @ =gUnknown_0202FF84 - movs r4, 0x10 - ldrsh r2, [r0, r4] - str r2, [r3] - movs r2, 0x12 - ldrsh r0, [r0, r2] - str r0, [r3, 0x4] - adds r0, r1, 0 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - str r0, [r3, 0x8] - ldrb r0, [r1, 0x5] - lsls r0, 28 - lsrs r0, 30 - str r0, [r3, 0xC] - movs r0, 0x17 - bl FieldEffectStart - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D454: .4byte gUnknown_0202FF84 - thumb_func_end do_berry_tree_growth_sparkle_2 - - thumb_func_start sub_805D458 -sub_805D458: @ 805D458 - push {r4,lr} - adds r3, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4, 0x32] - adds r1, 0x1 - strh r1, [r4, 0x32] - movs r0, 0x2 - ands r1, r0 - lsls r1, 16 - lsrs r1, 17 - lsls r1, 5 - ldrb r2, [r3, 0x1] - subs r0, 0x23 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x40 - bgt _0805D490 - movs r0, 0 - b _0805D4A2 -_0805D490: - adds r0, r3, 0 - adds r1, r4, 0 - bl get_berry_tree_graphics - movs r0, 0x4 - strh r0, [r4, 0x30] - movs r0, 0 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0805D4A2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D458 - - thumb_func_start sub_805D4A8 -sub_805D4A8: @ 805D4A8 - push {r4,lr} - adds r4, r1, 0 - ldrh r2, [r4, 0x32] - adds r2, 0x1 - strh r2, [r4, 0x32] - movs r1, 0x2 - ands r2, r1 - lsls r2, 16 - lsrs r2, 17 - lsls r2, 5 - ldrb r3, [r0, 0x1] - subs r1, 0x23 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x1] - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0x40 - bgt _0805D4DE - movs r0, 0 - b _0805D4EC -_0805D4DE: - movs r0, 0 - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x3C] - subs r0, 0x3 - ands r0, r1 - strh r0, [r4, 0x3C] - movs r0, 0x1 -_0805D4EC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D4A8 - thumb_func_start sub_805D4F4 sub_805D4F4: @ 805D4F4 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 7e75d0ac1..98bc73390 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4,6 +4,7 @@ #include "berry.h" #include "event_data.h" #include "field_player_avatar.h" +#include "field_effect.h" #include "palette.h" #include "rom4.h" #include "rng.h" @@ -39,6 +40,7 @@ extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -2113,7 +2115,114 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -void FieldObjectCB_BerryTree(struct Sprite *sprite); +u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite); + +void FieldObjectCB_BerryTree(struct Sprite *sprite) +{ + struct MapObject *mapObject; + mapObject = &gMapObjects[sprite->data0]; + if (!(sprite->data7 & 1)) + { + get_berry_tree_graphics(mapObject, sprite); + sprite->data7 |= 1; + } + meta_step(mapObject, sprite, sub_805D314); +} + +u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752D0[sprite->data1](mapObject, sprite); +} + +extern u32 gUnknown_0202FF84[]; + +u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 berryTreeStage; + npc_reset(mapObject, sprite); + mapObject->mapobj_bit_13 = 1; + sprite->invisible = 1; + berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId); + if (!berryTreeStage) + { + if (!(sprite->data7 & 4) && sprite->animNum == 4) + { + gUnknown_0202FF84[0] = mapObject->coords2.x; + gUnknown_0202FF84[1] = mapObject->coords2.y; + gUnknown_0202FF84[2] = sprite->subpriority - 1; + gUnknown_0202FF84[3] = sprite->oam.priority; + FieldEffectStart(0x17); + sprite->animNum = 0; + } + return 0; + } + mapObject->mapobj_bit_13 = 0; + sprite->invisible = 0; + berryTreeStage--; + if (sprite->animNum != berryTreeStage) + { + sprite->data1 = 2; + return 1; + } + get_berry_tree_graphics(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, 0x39); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sprite->data1 = 0; + return 1; + } + return 0; +} + +u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 3; + sprite->data2 = 0; + sprite->data7 |= 2; + gUnknown_0202FF84[0] = mapObject->coords2.x; + gUnknown_0202FF84[1] = mapObject->coords2.y; + gUnknown_0202FF84[2] = sprite->subpriority - 1; + gUnknown_0202FF84[3] = sprite->oam.priority; + FieldEffectStart(0x17); + return 1; +} + +u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data2++; + mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->animPaused = 1; + if (sprite->data2 > 64) + { + get_berry_tree_graphics(mapObject, sprite); + sprite->data1 = 4; + sprite->data2 = 0; + return 1; + } + return 0; +} + +u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data2++; + mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1); + sprite->animPaused = 1; + if (sprite->data2 > 64) + { + sprite->data1 = 0; + sprite->data7 &= (-3); + return 1; + } + return 0; +} + void sub_805D4F4(struct Sprite *sprite); void sub_805D634(struct Sprite *sprite); void sub_805D774(struct Sprite *sprite); diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index c1b892f15..3a280f58a 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -23,7 +23,7 @@ extern u32 gUnknown_0202FF84[]; //Functions -static u32 sub_80587D8(void); +static u8 sub_80587D8(void); static bool8 sub_8058854(struct MapObject *, u8); static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); @@ -248,7 +248,7 @@ void sub_80587B4(struct Sprite *sprite) meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8); } -static u32 sub_80587D8(void) +static u8 sub_80587D8(void) { return 0; } -- cgit v1.2.3 From 4aeb3bac738b470c83848de58d370d707d3d67df Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 16:47:09 -0400 Subject: sub_805D4F4 --- asm/field_map_obj.s | 173 ---------------------------------------------------- src/field_map_obj.c | 66 +++++++++++++++++++- 2 files changed, 64 insertions(+), 175 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 88703f251..cda87b2c5 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805D4F4 -sub_805D4F4: @ 805D4F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D510 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D514 @ =sub_805D518 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D510: .4byte gMapObjects -_0805D514: .4byte sub_805D518 - thumb_func_end sub_805D4F4 - - thumb_func_start sub_805D518 -sub_805D518: @ 805D518 - push {r4,lr} - ldr r3, _0805D534 @ =gUnknown_083752E4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D534: .4byte gUnknown_083752E4 - thumb_func_end sub_805D518 - - thumb_func_start sub_805D538 -sub_805D538: @ 805D538 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D538 - - thumb_func_start sub_805D54C -sub_805D54C: @ 805D54C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D54C - - thumb_func_start sub_805D578 -sub_805D578: @ 805D578 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D5AE - ldr r4, _0805D5B8 @ =gUnknown_0837520C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D5AE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D5B8: .4byte gUnknown_0837520C - thumb_func_end sub_805D578 - - thumb_func_start sub_805D5BC -sub_805D5BC: @ 805D5BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D5DA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D5E2 -_0805D5DA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D5E4 -_0805D5E2: - movs r0, 0 -_0805D5E4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D5BC - - thumb_func_start sub_805D5EC -sub_805D5EC: @ 805D5EC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D630 @ =gUnknown_083752A0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x1 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D61C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D61C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D630: .4byte gUnknown_083752A0 - thumb_func_end sub_805D5EC - thumb_func_start sub_805D634 sub_805D634: @ 805D634 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 98bc73390..a637d5767 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -41,6 +41,7 @@ extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1546,7 +1547,7 @@ u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -extern void FieldObjectSetRegularAnim(); +extern void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8); u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2223,7 +2224,68 @@ u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -void sub_805D4F4(struct Sprite *sprite); +u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D4F4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D518); +} + +u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752E4[sprite->data1](mapObject, sprite); +} + +u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D54C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D578(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D5BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752A0, 2); + direction = sub_805CD60(mapObject, 1); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805D634(struct Sprite *sprite); void sub_805D774(struct Sprite *sprite); void sub_805D8B4(struct Sprite *sprite); -- cgit v1.2.3 From e08f647c025853d3a03199cad8f42b38b0e5c41a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 18:40:52 -0400 Subject: sub_805D634 --- asm/field_map_obj.s | 173 ---------------------------------------------------- src/field_map_obj.c | 65 +++++++++++++++++++- 2 files changed, 64 insertions(+), 174 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index cda87b2c5..d9ac3249a 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805D634 -sub_805D634: @ 805D634 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D650 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D654 @ =sub_805D658 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D650: .4byte gMapObjects -_0805D654: .4byte sub_805D658 - thumb_func_end sub_805D634 - - thumb_func_start sub_805D658 -sub_805D658: @ 805D658 - push {r4,lr} - ldr r3, _0805D674 @ =gUnknown_083752F8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D674: .4byte gUnknown_083752F8 - thumb_func_end sub_805D658 - - thumb_func_start sub_805D678 -sub_805D678: @ 805D678 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D678 - - thumb_func_start sub_805D68C -sub_805D68C: @ 805D68C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D68C - - thumb_func_start sub_805D6B8 -sub_805D6B8: @ 805D6B8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D6EE - ldr r4, _0805D6F8 @ =gUnknown_0837520C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D6EE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D6F8: .4byte gUnknown_0837520C - thumb_func_end sub_805D6B8 - - thumb_func_start sub_805D6FC -sub_805D6FC: @ 805D6FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D71A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D722 -_0805D71A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D724 -_0805D722: - movs r0, 0 -_0805D724: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D6FC - - thumb_func_start sub_805D72C -sub_805D72C: @ 805D72C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D770 @ =gUnknown_083752C0 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x2 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D75C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D75C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D770: .4byte gUnknown_083752C0 - thumb_func_end sub_805D72C - thumb_func_start sub_805D774 sub_805D774: @ 805D774 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index a637d5767..951f3724f 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -42,6 +42,7 @@ extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -2286,7 +2287,69 @@ u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805D634(struct Sprite *sprite); + +u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D634(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D658); +} + +u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083752F8[sprite->data1](mapObject, sprite); +} + +u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D68C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D6B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_083752C0, 2); + direction = sub_805CD60(mapObject, 2); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805D774(struct Sprite *sprite); void sub_805D8B4(struct Sprite *sprite); void sub_805D9F4(struct Sprite *sprite); -- cgit v1.2.3 From ec86ef04a3f725e5c93437fe18c8e1fbb62b38ad Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 18:50:23 -0400 Subject: sub_805D774 --- asm/field_map_obj.s | 173 ---------------------------------------------------- src/field_map_obj.c | 67 +++++++++++++++++++- 2 files changed, 66 insertions(+), 174 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d9ac3249a..2c5e54298 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,179 +6,6 @@ .text - thumb_func_start sub_805D774 -sub_805D774: @ 805D774 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D790 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D794 @ =sub_805D798 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D790: .4byte gMapObjects -_0805D794: .4byte sub_805D798 - thumb_func_end sub_805D774 - - thumb_func_start sub_805D798 -sub_805D798: @ 805D798 - push {r4,lr} - ldr r3, _0805D7B4 @ =gUnknown_0837530C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D7B4: .4byte gUnknown_0837530C - thumb_func_end sub_805D798 - - thumb_func_start sub_805D7B8 -sub_805D7B8: @ 805D7B8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D7B8 - - thumb_func_start sub_805D7CC -sub_805D7CC: @ 805D7CC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D7CC - - thumb_func_start sub_805D7F8 -sub_805D7F8: @ 805D7F8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D82E - ldr r4, _0805D838 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D82E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D838: .4byte gUnknown_0837521C - thumb_func_end sub_805D7F8 - - thumb_func_start sub_805D83C -sub_805D83C: @ 805D83C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D85A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D862 -_0805D85A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D864 -_0805D862: - movs r0, 0 -_0805D864: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D83C - - thumb_func_start sub_805D86C -sub_805D86C: @ 805D86C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D8B0 @ =gUnknown_08375320 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x3 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D89C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D89C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D8B0: .4byte gUnknown_08375320 - thumb_func_end sub_805D86C - thumb_func_start sub_805D8B4 sub_805D8B4: @ 805D8B4 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 951f3724f..83bff1026 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -43,6 +43,7 @@ extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1559,6 +1560,7 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *); extern const s16 gUnknown_0837520C[]; +extern const s16 gUnknown_0837521C[]; extern void sub_8064820(struct Sprite *, s16); u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) @@ -1587,6 +1589,7 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) extern const u8 gUnknown_08375240[4]; extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_083752C0[2]; +extern const u8 gUnknown_08375320[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -2350,7 +2353,69 @@ u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805D774(struct Sprite *sprite); + +u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D774(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D798); +} + +u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837530C[sprite->data1](mapObject, sprite); +} + +u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D7CC(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D7F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375320, 2); + direction = sub_805CD60(mapObject, 3); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805D8B4(struct Sprite *sprite); void sub_805D9F4(struct Sprite *sprite); void sub_805DB34(struct Sprite *sprite); -- cgit v1.2.3 From 87b6adf33d61a1f6e5518fdd1d741b621e88f55d Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sun, 21 May 2017 19:41:36 -0400 Subject: Finish this block of nearly-identical callbacks --- asm/field_map_obj.s | 1212 --------------------------------------------------- src/field_map_obj.c | 479 ++++++++++++++++++-- 2 files changed, 454 insertions(+), 1237 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 2c5e54298..ee600d59d 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5,1218 +5,6 @@ .syntax unified .text - - thumb_func_start sub_805D8B4 -sub_805D8B4: @ 805D8B4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805D8D0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805D8D4 @ =sub_805D8D8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805D8D0: .4byte gMapObjects -_0805D8D4: .4byte sub_805D8D8 - thumb_func_end sub_805D8B4 - - thumb_func_start sub_805D8D8 -sub_805D8D8: @ 805D8D8 - push {r4,lr} - ldr r3, _0805D8F4 @ =gUnknown_08375324 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805D8F4: .4byte gUnknown_08375324 - thumb_func_end sub_805D8D8 - - thumb_func_start sub_805D8F8 -sub_805D8F8: @ 805D8F8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805D8F8 - - thumb_func_start sub_805D90C -sub_805D90C: @ 805D90C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D90C - - thumb_func_start sub_805D938 -sub_805D938: @ 805D938 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805D96E - ldr r4, _0805D978 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805D96E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805D978: .4byte gUnknown_0837521C - thumb_func_end sub_805D938 - - thumb_func_start sub_805D97C -sub_805D97C: @ 805D97C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805D99A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805D9A2 -_0805D99A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805D9A4 -_0805D9A2: - movs r0, 0 -_0805D9A4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805D97C - - thumb_func_start sub_805D9AC -sub_805D9AC: @ 805D9AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805D9F0 @ =gUnknown_08375338 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x4 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805D9DC - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805D9DC: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805D9F0: .4byte gUnknown_08375338 - thumb_func_end sub_805D9AC - - thumb_func_start sub_805D9F4 -sub_805D9F4: @ 805D9F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DA10 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DA14 @ =sub_805DA18 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DA10: .4byte gMapObjects -_0805DA14: .4byte sub_805DA18 - thumb_func_end sub_805D9F4 - - thumb_func_start sub_805DA18 -sub_805DA18: @ 805DA18 - push {r4,lr} - ldr r3, _0805DA34 @ =gUnknown_0837533C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DA34: .4byte gUnknown_0837533C - thumb_func_end sub_805DA18 - - thumb_func_start sub_805DA38 -sub_805DA38: @ 805DA38 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DA38 - - thumb_func_start sub_805DA4C -sub_805DA4C: @ 805DA4C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DA4C - - thumb_func_start sub_805DA78 -sub_805DA78: @ 805DA78 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DAAE - ldr r4, _0805DAB8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DAAE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DAB8: .4byte gUnknown_0837521C - thumb_func_end sub_805DA78 - - thumb_func_start sub_805DABC -sub_805DABC: @ 805DABC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DADA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DAE2 -_0805DADA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DAE4 -_0805DAE2: - movs r0, 0 -_0805DAE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DABC - - thumb_func_start sub_805DAEC -sub_805DAEC: @ 805DAEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DB30 @ =gUnknown_08375350 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x5 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DB1C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DB1C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DB30: .4byte gUnknown_08375350 - thumb_func_end sub_805DAEC - - thumb_func_start sub_805DB34 -sub_805DB34: @ 805DB34 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DB50 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DB54 @ =sub_805DB58 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DB50: .4byte gMapObjects -_0805DB54: .4byte sub_805DB58 - thumb_func_end sub_805DB34 - - thumb_func_start sub_805DB58 -sub_805DB58: @ 805DB58 - push {r4,lr} - ldr r3, _0805DB74 @ =gUnknown_08375354 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DB74: .4byte gUnknown_08375354 - thumb_func_end sub_805DB58 - - thumb_func_start sub_805DB78 -sub_805DB78: @ 805DB78 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DB78 - - thumb_func_start sub_805DB8C -sub_805DB8C: @ 805DB8C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DB8C - - thumb_func_start sub_805DBB8 -sub_805DBB8: @ 805DBB8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DBEE - ldr r4, _0805DBF8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DBEE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DBF8: .4byte gUnknown_0837521C - thumb_func_end sub_805DBB8 - - thumb_func_start sub_805DBFC -sub_805DBFC: @ 805DBFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DC1A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DC22 -_0805DC1A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DC24 -_0805DC22: - movs r0, 0 -_0805DC24: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DBFC - - thumb_func_start sub_805DC2C -sub_805DC2C: @ 805DC2C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DC70 @ =gUnknown_08375368 - mov r0, sp - movs r2, 0x2 - bl memcpy - adds r0, r4, 0 - movs r1, 0x6 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DC5C - bl Random - movs r1, 0x1 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DC5C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DC70: .4byte gUnknown_08375368 - thumb_func_end sub_805DC2C - - thumb_func_start sub_805DC74 -sub_805DC74: @ 805DC74 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DC90 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DC94 @ =sub_805DC98 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DC90: .4byte gMapObjects -_0805DC94: .4byte sub_805DC98 - thumb_func_end sub_805DC74 - - thumb_func_start sub_805DC98 -sub_805DC98: @ 805DC98 - push {r4,lr} - ldr r3, _0805DCB4 @ =gUnknown_0837536C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DCB4: .4byte gUnknown_0837536C - thumb_func_end sub_805DC98 - - thumb_func_start sub_805DCB8 -sub_805DCB8: @ 805DCB8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DCB8 - - thumb_func_start sub_805DCCC -sub_805DCCC: @ 805DCCC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DCCC - - thumb_func_start sub_805DCF8 -sub_805DCF8: @ 805DCF8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DD2E - ldr r4, _0805DD38 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DD2E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DD38: .4byte gUnknown_0837521C - thumb_func_end sub_805DCF8 - - thumb_func_start sub_805DD3C -sub_805DD3C: @ 805DD3C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DD5A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DD62 -_0805DD5A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DD64 -_0805DD62: - movs r0, 0 -_0805DD64: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DD3C - - thumb_func_start sub_805DD6C -sub_805DD6C: @ 805DD6C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DDB0 @ =gUnknown_08375380 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x7 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DD9C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DD9C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DDB0: .4byte gUnknown_08375380 - thumb_func_end sub_805DD6C - - thumb_func_start sub_805DDB4 -sub_805DDB4: @ 805DDB4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DDD0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DDD4 @ =sub_805DDD8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DDD0: .4byte gMapObjects -_0805DDD4: .4byte sub_805DDD8 - thumb_func_end sub_805DDB4 - - thumb_func_start sub_805DDD8 -sub_805DDD8: @ 805DDD8 - push {r4,lr} - ldr r3, _0805DDF4 @ =gUnknown_08375384 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DDF4: .4byte gUnknown_08375384 - thumb_func_end sub_805DDD8 - - thumb_func_start sub_805DDF8 -sub_805DDF8: @ 805DDF8 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DDF8 - - thumb_func_start sub_805DE0C -sub_805DE0C: @ 805DE0C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DE0C - - thumb_func_start sub_805DE38 -sub_805DE38: @ 805DE38 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DE6E - ldr r4, _0805DE78 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DE6E: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DE78: .4byte gUnknown_0837521C - thumb_func_end sub_805DE38 - - thumb_func_start sub_805DE7C -sub_805DE7C: @ 805DE7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DE9A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DEA2 -_0805DE9A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DEA4 -_0805DEA2: - movs r0, 0 -_0805DEA4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DE7C - - thumb_func_start sub_805DEAC -sub_805DEAC: @ 805DEAC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805DEF0 @ =gUnknown_08375398 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x8 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805DEDC - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805DEDC: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805DEF0: .4byte gUnknown_08375398 - thumb_func_end sub_805DEAC - - thumb_func_start sub_805DEF4 -sub_805DEF4: @ 805DEF4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805DF10 @ =gMapObjects - adds r0, r2 - ldr r2, _0805DF14 @ =sub_805DF18 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805DF10: .4byte gMapObjects -_0805DF14: .4byte sub_805DF18 - thumb_func_end sub_805DEF4 - - thumb_func_start sub_805DF18 -sub_805DF18: @ 805DF18 - push {r4,lr} - ldr r3, _0805DF34 @ =gUnknown_0837539C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805DF34: .4byte gUnknown_0837539C - thumb_func_end sub_805DF18 - - thumb_func_start sub_805DF38 -sub_805DF38: @ 805DF38 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805DF38 - - thumb_func_start sub_805DF4C -sub_805DF4C: @ 805DF4C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DF4C - - thumb_func_start sub_805DF78 -sub_805DF78: @ 805DF78 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805DFAE - ldr r4, _0805DFB8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805DFAE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805DFB8: .4byte gUnknown_0837521C - thumb_func_end sub_805DF78 - - thumb_func_start sub_805DFBC -sub_805DFBC: @ 805DFBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805DFDA - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805DFE2 -_0805DFDA: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805DFE4 -_0805DFE2: - movs r0, 0 -_0805DFE4: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805DFBC - - thumb_func_start sub_805DFEC -sub_805DFEC: @ 805DFEC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E030 @ =gUnknown_083753B0 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0x9 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E01C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805E01C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E030: .4byte gUnknown_083753B0 - thumb_func_end sub_805DFEC - - thumb_func_start sub_805E034 -sub_805E034: @ 805E034 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E050 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E054 @ =sub_805E058 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E050: .4byte gMapObjects -_0805E054: .4byte sub_805E058 - thumb_func_end sub_805E034 - - thumb_func_start sub_805E058 -sub_805E058: @ 805E058 - push {r4,lr} - ldr r3, _0805E074 @ =gUnknown_083753B4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E074: .4byte gUnknown_083753B4 - thumb_func_end sub_805E058 - - thumb_func_start sub_805E078 -sub_805E078: @ 805E078 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E078 - - thumb_func_start sub_805E08C -sub_805E08C: @ 805E08C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E08C - - thumb_func_start sub_805E0B8 -sub_805E0B8: @ 805E0B8 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E0EE - ldr r4, _0805E0F8 @ =gUnknown_0837521C - bl Random - movs r5, 0x3 - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r4 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r7, 0 - bl sub_8064820 - ldrb r1, [r6] - movs r0, 0x3 - negs r0, r0 - ands r0, r1 - strb r0, [r6] - strh r5, [r7, 0x30] -_0805E0EE: - movs r0, 0 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805E0F8: .4byte gUnknown_0837521C - thumb_func_end sub_805E0B8 - - thumb_func_start sub_805E0FC -sub_805E0FC: @ 805E0FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805E11A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E122 -_0805E11A: - movs r0, 0x4 - strh r0, [r5, 0x30] - movs r0, 0x1 - b _0805E124 -_0805E122: - movs r0, 0 -_0805E124: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E0FC - - thumb_func_start sub_805E12C -sub_805E12C: @ 805E12C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E170 @ =gUnknown_083753C8 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r0, r4, 0 - movs r1, 0xA - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E15C - bl Random - movs r1, 0x3 - ands r1, r0 - mov r2, sp - adds r0, r2, r1 - ldrb r1, [r0] -_0805E15C: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x30] - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E170: .4byte gUnknown_083753C8 - thumb_func_end sub_805E12C - thumb_func_start sub_805E174 sub_805E174: @ 805E174 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 83bff1026..394f3c43d 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -44,6 +44,13 @@ extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprit extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1590,6 +1597,13 @@ extern const u8 gUnknown_08375240[4]; extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_083752C0[2]; extern const u8 gUnknown_08375320[2]; +extern const u8 gUnknown_08375338[2]; +extern const u8 gUnknown_08375350[2]; +extern const u8 gUnknown_08375368[2]; +extern const u8 gUnknown_08375380[2]; +extern const u8 gUnknown_08375398[2]; +extern const u8 gUnknown_083753B0[2]; +extern const u8 gUnknown_083753C8[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -2416,19 +2430,449 @@ u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805D8B4(struct Sprite *sprite); -void sub_805D9F4(struct Sprite *sprite); -void sub_805DB34(struct Sprite *sprite); -void sub_805DC74(struct Sprite *sprite); -void sub_805DDB4(struct Sprite *sprite); -void sub_805DEF4(struct Sprite *sprite); -void sub_805E034(struct Sprite *sprite); + +u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D8B4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805D8D8); +} + +u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375324[sprite->data1](mapObject, sprite); +} + +u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805D90C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805D938(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375338, 2); + direction = sub_805CD60(mapObject, 4); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805D9F4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DA18); +} + +u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837533C[sprite->data1](mapObject, sprite); +} + +u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DA4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DA78(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375350, 2); + direction = sub_805CD60(mapObject, 5); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DB34(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DB58); +} + +u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375354[sprite->data1](mapObject, sprite); +} + +u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DB8C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DBB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[2]; + memcpy(directions, gUnknown_08375368, 2); + direction = sub_805CD60(mapObject, 6); + if (direction == 0) + { + direction = directions[Random() & 1]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DC74(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DC98); +} + +u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837536C[sprite->data1](mapObject, sprite); +} + +u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DCCC(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DCF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375380, 4); + direction = sub_805CD60(mapObject, 7); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DDB4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DDD8); +} + +u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_08375384[sprite->data1](mapObject, sprite); +} + +u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DE0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DE38(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_08375398, 4); + direction = sub_805CD60(mapObject, 8); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805DEF4(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805DF18); +} + +u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_0837539C[sprite->data1](mapObject, sprite); +} + +u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805DF4C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805DF78(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_083753B0, 4); + direction = sub_805CD60(mapObject, 9); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + + +u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805E034(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805E058); +} + +u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083753B4[sprite->data1](mapObject, sprite); +} + +u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E08C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 2; + return 1; +} + +u8 sub_805E0B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, gUnknown_0837521C[Random() & 3]); + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 4; + return 1; + } + return 0; +} + +u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[4]; + memcpy(directions, gUnknown_083753C8, 4); + direction = sub_805CD60(mapObject, 10); + if (direction == 0) + { + direction = directions[Random() & 3]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 1; + return 1; +} + void sub_805E174(struct Sprite *sprite); void sub_805E278(struct Sprite *sprite); void sub_805E37C(struct Sprite *sprite); -void sub_805E37C(struct Sprite *sprite); -void sub_805E37C(struct Sprite *sprite); -void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); void sub_805E6F4(struct Sprite *sprite); @@ -2454,27 +2898,12 @@ void sub_805F158(struct Sprite *sprite); void sub_805F1E4(struct Sprite *sprite); void sub_805F270(struct Sprite *sprite); void sub_805F2FC(struct Sprite *sprite); -void sub_805F2FC(struct Sprite *sprite); -void sub_805F2FC(struct Sprite *sprite); -void sub_805F2FC(struct Sprite *sprite); void FieldObjectCB_TreeDisguise(struct Sprite *sprite); void FieldObjectCB_MountainDisguise(struct Sprite *sprite); void sub_805F8E0(struct Sprite *sprite); -void sub_805F8E0(struct Sprite *sprite); -void sub_805F8E0(struct Sprite *sprite); -void sub_805F8E0(struct Sprite *sprite); void FieldObjectCB_Hidden1(struct Sprite *sprite); void sub_805FB20(struct Sprite *sprite); -void sub_805FB20(struct Sprite *sprite); -void sub_805FB20(struct Sprite *sprite); -void sub_805FB20(struct Sprite *sprite); -void sub_805FB90(struct Sprite *sprite); void sub_805FB90(struct Sprite *sprite); -void sub_805FB90(struct Sprite *sprite); -void sub_805FB90(struct Sprite *sprite); -void sub_805FC00(struct Sprite *sprite); -void sub_805FC00(struct Sprite *sprite); -void sub_805FC00(struct Sprite *sprite); void sub_805FC00(struct Sprite *sprite); void sub_805FC70(struct Sprite *sprite); -- cgit v1.2.3 From 42e6ed382f1e9fdf3f28e2dd048fc99bbd56b347 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 08:34:47 -0400 Subject: sub_805E174 --- asm/field_map_obj.s | 142 ------------------------------------------------ include/field_map_obj.h | 31 +++++++++++ src/field_map_obj.c | 84 ++++++++++++++++++---------- 3 files changed, 86 insertions(+), 171 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ee600d59d..c3b867525 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -5,148 +5,6 @@ .syntax unified .text - thumb_func_start sub_805E174 -sub_805E174: @ 805E174 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E190 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E194 @ =sub_805E198 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E190: .4byte gMapObjects -_0805E194: .4byte sub_805E198 - thumb_func_end sub_805E174 - - thumb_func_start sub_805E198 -sub_805E198: @ 805E198 - push {r4,lr} - ldr r3, _0805E1B4 @ =gUnknown_083753CC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E1B4: .4byte gUnknown_083753CC - thumb_func_end sub_805E198 - - thumb_func_start sub_805E1B8 -sub_805E1B8: @ 805E1B8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E1B8 - - thumb_func_start sub_805E1E4 -sub_805E1E4: @ 805E1E4 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E1FE - adds r0, r4, 0 - movs r1, 0x30 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x30] -_0805E1FE: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E1E4 - - thumb_func_start sub_805E208 -sub_805E208: @ 805E208 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805E226 - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E22A -_0805E226: - movs r0, 0x3 - strh r0, [r5, 0x30] -_0805E22A: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E208 - - thumb_func_start sub_805E234 -sub_805E234: @ 805E234 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E274 @ =gUnknown_083753DC - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E260 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_0805E260: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E274: .4byte gUnknown_083753DC - thumb_func_end sub_805E234 thumb_func_start sub_805E278 sub_805E278: @ 805E278 diff --git a/include/field_map_obj.h b/include/field_map_obj.h index ca0852a96..4c2d4c705 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -8,4 +8,35 @@ void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)()); +extern const u8 gUnknown_08375240[4]; +extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); + +extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083752A0[2]; +extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083752C0[2]; +extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375320[2]; +extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375338[2]; +extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375350[2]; +extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375368[2]; +extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375380[2]; +extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_08375398[2]; +extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083753B0[2]; +extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083753C8[2]; +extern u8 (*const gUnknown_083753CC[])(struct MapObject *mapObject, struct Sprite *sprite); +extern const u8 gUnknown_083753DC[5]; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 394f3c43d..475620c28 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -35,22 +35,6 @@ void GetFieldObjectMovingCameraOffset(s16 *, s16 *); void sub_805BDF8(u16); u8 sub_805BE58(const struct SpritePalette *); u8 FindFieldObjectPaletteIndexByTag(u16); -extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); -extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); struct PairedPalettes { @@ -1593,17 +1577,6 @@ u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -extern const u8 gUnknown_08375240[4]; -extern const u8 gUnknown_083752A0[2]; -extern const u8 gUnknown_083752C0[2]; -extern const u8 gUnknown_08375320[2]; -extern const u8 gUnknown_08375338[2]; -extern const u8 gUnknown_08375350[2]; -extern const u8 gUnknown_08375368[2]; -extern const u8 gUnknown_08375380[2]; -extern const u8 gUnknown_08375398[2]; -extern const u8 gUnknown_083753B0[2]; -extern const u8 gUnknown_083753C8[2]; extern u8 sub_805FF20(struct MapObject *, u8); u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite) @@ -2744,7 +2717,6 @@ u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite); void sub_805DEF4(struct Sprite *sprite) @@ -2870,7 +2842,61 @@ u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805E174(struct Sprite *sprite); + +u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite); + +void sub_805E174(struct Sprite *sprite) +{ + meta_step(&gMapObjects[sprite->data0], sprite, sub_805E198); +} + +u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083753CC[sprite->data1](mapObject, sprite); +} + +u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, 0x30); + sprite->data1 = 2; + } + return 0; +} + +u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 3; + } + return 0; +} + +u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[5]; + memcpy(directions, gUnknown_083753DC, 5); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[mapObject->mapobj_unk_18]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 0; + return 1; +} + void sub_805E278(struct Sprite *sprite); void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); -- cgit v1.2.3 From 4c42206a7f63b2045eae85ad2b4a60a630178d4c Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 22 May 2017 14:40:21 -0400 Subject: Create and propagate field map object callback declaration macro --- .gitignore | 1 - .gitmodules | 3 + asm/field_map_obj.s | 143 ------------------------- include/field_map_obj.h | 43 +++++--- src/field_map_obj.c | 261 +++++++++++----------------------------------- src/field_player_avatar.c | 12 +-- tools/agbcc | 1 + 7 files changed, 93 insertions(+), 371 deletions(-) create mode 100644 .gitmodules create mode 160000 tools/agbcc diff --git a/.gitignore b/.gitignore index 78af8c737..13752b437 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ *.bat sound/**/*.bin src/*.s -tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..7dbd4ef6d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tools/agbcc"] + path = tools/agbcc + url = git@github.com:pret/agbcc diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index c3b867525..3db00279d 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,149 +6,6 @@ .text - thumb_func_start sub_805E278 -sub_805E278: @ 805E278 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E294 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E298 @ =sub_805E29C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E294: .4byte gMapObjects -_0805E298: .4byte sub_805E29C - thumb_func_end sub_805E278 - - thumb_func_start sub_805E29C -sub_805E29C: @ 805E29C - push {r4,lr} - ldr r3, _0805E2B8 @ =gUnknown_083753E4 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E2B8: .4byte gUnknown_083753E4 - thumb_func_end sub_805E29C - - thumb_func_start sub_805E2BC -sub_805E2BC: @ 805E2BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E2BC - - thumb_func_start sub_805E2E8 -sub_805E2E8: @ 805E2E8 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E302 - adds r0, r4, 0 - movs r1, 0x30 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x30] -_0805E302: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E2E8 - - thumb_func_start sub_805E30C -sub_805E30C: @ 805E30C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - bne _0805E32A - adds r0, r4, 0 - bl FieldObjectIsTrainerAndCloseToPlayer - lsls r0, 24 - cmp r0, 0 - beq _0805E32E -_0805E32A: - movs r0, 0x3 - strh r0, [r5, 0x30] -_0805E32E: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E30C - - thumb_func_start sub_805E338 -sub_805E338: @ 805E338 - push {r4,r5,lr} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E378 @ =gUnknown_083753F4 - mov r0, sp - movs r2, 0x5 - bl memcpy - adds r0, r4, 0 - movs r1, 0 - bl sub_805CD60 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - bne _0805E364 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - add r0, sp - ldrb r1, [r0] -_0805E364: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - add sp, 0x8 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E378: .4byte gUnknown_083753F4 - thumb_func_end sub_805E338 - thumb_func_start sub_805E37C sub_805E37C: @ 805E37C push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 4c2d4c705..00fda8358 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -3,40 +3,49 @@ #include "sprite.h" +#define fieldmap_object_cb(setup, callback, table) \ +extern u8 (*const table[])(struct MapObject *, struct Sprite *);\ +static u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return table[sprite->data1](mapObject, sprite);\ +} + +#define fieldmap_object_null_cb(setup, callback) \ +static u8 callback(struct MapObject *, struct Sprite *);\ +void setup(struct Sprite *sprite)\ +{\ + meta_step(&gMapObjects[sprite->data0], sprite, callback);\ +}\ +static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ +{\ + return 0;\ +} + void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); -void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)()); +void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)(struct MapObject *, struct Sprite *)); +void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375240[4]; extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); -extern u8 (*const gUnknown_08375270[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_08375284[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083752A0[2]; -extern u8 (*const gUnknown_083752A4[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083752C0[2]; -extern u8 (*const gUnknown_083752C4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752E4[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_083752F8[])(struct MapObject *mapObject, struct Sprite *sprite); -extern u8 (*const gUnknown_0837530C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375320[2]; -extern u8 (*const gUnknown_08375324[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375338[2]; -extern u8 (*const gUnknown_0837533C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375350[2]; -extern u8 (*const gUnknown_08375354[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375368[2]; -extern u8 (*const gUnknown_0837536C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375380[2]; -extern u8 (*const gUnknown_08375384[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375398[2]; -extern u8 (*const gUnknown_0837539C[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083753B0[2]; -extern u8 (*const gUnknown_083753B4[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083753C8[2]; -extern u8 (*const gUnknown_083753CC[])(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_083753DC[5]; +extern const u8 gUnknown_083753F4[5]; #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 475620c28..b75f16d54 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -12,6 +12,7 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; + extern void strange_npc_table_clear(void); extern void ClearPlayerAvatarInfo(void); extern void npc_load_two_palettes__no_record(u16, u8); @@ -1505,33 +1506,8 @@ u16 npc_paltag_by_palslot(u8 a) return 0x11FF; } -u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805C884(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8); -} - -u8 sub_805C8A8(struct MapObject *mapObject, struct Sprite *sprite) -{ - return 0; -} - -u8 sub_805C8D0(struct MapObject *, struct Sprite *); - -void sub_805C8AC(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8D0); -} - -extern u8 (*const gUnknown_08375224[])(); - -u8 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375224[sprite->data1](mapObject, sprite); -} - -void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); +fieldmap_object_null_cb(sub_805C884, sub_805C8A8); +fieldmap_object_cb(sub_805C8AC, sub_805C8D0, gUnknown_08375224); u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite) { @@ -1849,17 +1825,7 @@ u8 sub_805CD60(struct MapObject *mapObject, u8 a1) return gUnknown_08375244[a1](x, y, x2, y2); } -u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805CDE8(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805CE0C); -} - -u8 sub_805CE0C(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375270[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805CDE8, sub_805CE0c, gUnknown_08375270); u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite) { @@ -1911,17 +1877,7 @@ u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805CF28(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805CF4C); -} - -u8 sub_805CF4C(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375284[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805CF28, sub_805CF4C, gUnknown_08375284); u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite) { @@ -1991,17 +1947,7 @@ u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D0AC(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D0D0); -} - -u8 sub_805D0D0(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752A4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D0AC, sub_805D0D0, gUnknown_083752A4); u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2071,17 +2017,7 @@ u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D230(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D254); -} - -u8 sub_805D254(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752C4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D230, sub_805D254, gUnknown_083752C4); u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2108,6 +2044,7 @@ u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite) } u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite); void FieldObjectCB_BerryTree(struct Sprite *sprite) { @@ -2215,17 +2152,7 @@ u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D4F4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D518); -} - -u8 sub_805D518(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752E4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D4F4, sub_805D518, gUnknown_083752E4); u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2277,18 +2204,7 @@ u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D634(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D658); -} - -u8 sub_805D658(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083752F8[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D634, sub_805D658, gUnknown_083752F8); u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2340,18 +2256,7 @@ u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D774(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D798); -} - -u8 sub_805D798(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837530C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D774, sub_805D798, gUnknown_0837530C); u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2403,18 +2308,7 @@ u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D8B4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805D8D8); -} - -u8 sub_805D8D8(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375324[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D8B4, sub_805D8D8, gUnknown_08375324); u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2466,18 +2360,7 @@ u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805D9F4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DA18); -} - -u8 sub_805DA18(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837533C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805D9F4, sub_805DA18, gUnknown_0837533C); u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2529,18 +2412,7 @@ u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DB34(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DB58); -} - -u8 sub_805DB58(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375354[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DB34, sub_805DB58, gUnknown_08375354); u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2592,18 +2464,7 @@ u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DC74(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DC98); -} - -u8 sub_805DC98(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837536C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DC74, sub_805DC98, gUnknown_0837536C); u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2655,17 +2516,7 @@ u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DDB4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DDD8); -} - -u8 sub_805DDD8(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_08375384[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DDB4, sub_805DDD8, gUnknown_08375384); u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2717,17 +2568,7 @@ u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805DEF4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805DF18); -} - -u8 sub_805DF18(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_0837539C[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805DEF4, sub_805DF18, gUnknown_0837539C); u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2779,18 +2620,7 @@ u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } - -u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite); - -void sub_805E034(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_805E058); -} - -u8 sub_805E058(struct MapObject *mapObject, struct Sprite *sprite) -{ - return gUnknown_083753B4[sprite->data1](mapObject, sprite); -} +fieldmap_object_cb(sub_805E034, sub_805E058, gUnknown_083753B4); u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite) { @@ -2842,20 +2672,53 @@ u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +fieldmap_object_cb(sub_805E174, sub_805E198, gUnknown_083753CC); -u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite); +u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} -void sub_805E174(struct Sprite *sprite) +u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) { - meta_step(&gMapObjects[sprite->data0], sprite, sub_805E198); + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sub_8064820(sprite, 0x30); + sprite->data1 = 2; + } + return 0; } -u8 sub_805E198(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) { - return gUnknown_083753CC[sprite->data1](mapObject, sprite); + if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) + { + sprite->data1 = 3; + } + return 0; } -u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + u8 directions[5]; + memcpy(directions, gUnknown_083753DC, 5); + direction = sub_805CD60(mapObject, 0); + if (direction == 0) + { + direction = directions[mapObject->mapobj_unk_18]; + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 0; + return 1; +} + +fieldmap_object_cb(sub_805E278, sub_803E29C, gUnknown_083753E4); + +u8 sub_805E2BC(struct MapObject *mapObject, struct Sprite *sprite) { npc_reset(mapObject, sprite); FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); @@ -2863,7 +2726,7 @@ u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E2E8(struct MapObject *mapObject, struct Sprite *sprite) { if (FieldObjectExecRegularAnim(mapObject, sprite)) { @@ -2873,7 +2736,7 @@ u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E30C(struct MapObject *mapObject, struct Sprite *sprite) { if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject)) { @@ -2882,11 +2745,11 @@ u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) +u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite) { u8 direction; u8 directions[5]; - memcpy(directions, gUnknown_083753DC, 5); + memcpy(directions, gUnknown_083753F4, 5); direction = sub_805CD60(mapObject, 0); if (direction == 0) { @@ -2897,7 +2760,7 @@ u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_805E278(struct Sprite *sprite); + void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 3a280f58a..1e1162350 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -23,7 +23,6 @@ extern u32 gUnknown_0202FF84[]; //Functions -static u8 sub_80587D8(void); static bool8 sub_8058854(struct MapObject *, u8); static void npc_clear_strange_bits(struct MapObject *a); static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c); @@ -242,16 +241,7 @@ static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) = sub_805A1B8, }; - -void sub_80587B4(struct Sprite *sprite) -{ - meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8); -} - -static u8 sub_80587D8(void) -{ - return 0; -} +fieldmap_object_null_cb(sub_80587B4, sub_80587D8); void player_step(u8 direction, u16 newKeys, u16 heldKeys) { diff --git a/tools/agbcc b/tools/agbcc new file mode 160000 index 000000000..928b19519 --- /dev/null +++ b/tools/agbcc @@ -0,0 +1 @@ +Subproject commit 928b1951972d7ff8c46347b3dce9e254cf6c215c -- cgit v1.2.3 From abe5f5053624f876ea17c44370b203c0a4ace86b Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 22 May 2017 17:21:17 -0400 Subject: Another chunk of library-like functions --- asm/field_map_obj.s | 285 ------------------------------------------ include/field_ground_effect.h | 10 ++ include/field_map_obj.h | 4 + include/fieldmap.h | 4 + src/field_map_obj.c | 105 +++++++++++++++- 5 files changed, 121 insertions(+), 287 deletions(-) create mode 100644 include/field_ground_effect.h diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 3db00279d..5de921af9 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -3517,291 +3517,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_805FE28 -sub_805FE28: @ 805FE28 - push {r4,lr} - adds r3, r1, 0 - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r0, 0x1] - lsls r0, 27 - lsrs r4, r0, 31 - cmp r4, 0 - bne _0805FE5E - adds r0, r3, 0 - adds r0, 0x2A - strb r2, [r0] - adds r0, 0x1 - ldrb r2, [r0] - adds r1, r0, 0 - cmp r2, 0x1 - bne _0805FE50 - movs r0, 0x2 - strb r0, [r1] - b _0805FE56 -_0805FE50: - cmp r2, 0x3 - bne _0805FE56 - strb r4, [r1] -_0805FE56: - ldrb r1, [r1] - adds r0, r3, 0 - bl SeekSpriteAnim -_0805FE5E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_805FE28 - - thumb_func_start sub_805FE64 -sub_805FE64: @ 805FE64 - push {lr} - lsls r2, 24 - lsrs r2, 24 - ldrb r0, [r0, 0x1] - lsls r0, 27 - cmp r0, 0 - blt _0805FE8C - adds r0, r1, 0 - adds r0, 0x2A - strb r2, [r0] - movs r2, 0x3 - adds r0, 0x1 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _0805FE84 - movs r2, 0x1 -_0805FE84: - adds r0, r1, 0 - adds r1, r2, 0 - bl SeekSpriteAnim -_0805FE8C: - pop {r0} - bx r0 - thumb_func_end sub_805FE64 - - thumb_func_start sub_805FE90 -sub_805FE90: @ 805FE90 - push {lr} - lsls r1, 16 - lsrs r1, 16 - lsls r3, 16 - lsrs r3, 16 - lsls r0, 16 - asrs r0, 16 - lsls r2, 16 - asrs r2, 16 - cmp r0, r2 - ble _0805FEAA - movs r0, 0x3 - b _0805FEC0 -_0805FEAA: - cmp r0, r2 - bge _0805FEB2 - movs r0, 0x4 - b _0805FEC0 -_0805FEB2: - lsls r1, 16 - lsls r0, r3, 16 - cmp r1, r0 - bgt _0805FEBE - movs r0, 0x1 - b _0805FEC0 -_0805FEBE: - movs r0, 0x2 -_0805FEC0: - pop {r1} - bx r1 - thumb_func_end sub_805FE90 - - thumb_func_start npc_set_running_behaviour_etc -npc_set_running_behaviour_etc: @ 805FEC4 - push {r4,lr} - mov r12, r0 - lsls r1, 24 - lsrs r1, 24 - movs r3, 0 - strb r1, [r0, 0x6] - adds r0, 0x21 - strb r3, [r0] - adds r0, 0x1 - strb r3, [r0] - ldr r4, _0805FF08 @ =gSprites - mov r0, r12 - ldrb r2, [r0, 0x4] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r2, r4, 0 - adds r2, 0x1C - adds r0, r2 - ldr r2, _0805FF0C @ =gUnknown_0836DA88 - lsls r1, 2 - adds r1, r2 - ldr r1, [r1] - str r1, [r0] - mov r0, r12 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r3, [r0, 0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805FF08: .4byte gSprites -_0805FF0C: .4byte gUnknown_0836DA88 - thumb_func_end npc_set_running_behaviour_etc - - thumb_func_start npc_running_behaviour_by_direction -npc_running_behaviour_by_direction: @ 805FF10 - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0805FF1C @ =gUnknown_0837567B - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_0805FF1C: .4byte gUnknown_0837567B - thumb_func_end npc_running_behaviour_by_direction - - thumb_func_start sub_805FF20 -sub_805FF20: @ 805FF20 - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - lsls r5, r1, 24 - lsrs r5, 24 - ldrh r1, [r6, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r6, 0x12] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - adds r3, r5, 0 - bl npc_block_way - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805FF20 - - thumb_func_start npc_block_way -npc_block_way: @ 805FF60 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r6, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - lsrs r7, r3, 24 - mov r8, r7 - lsrs r0, r1, 16 - mov r9, r0 - asrs r5, r1, 16 - lsrs r0, r2, 16 - mov r10, r0 - asrs r4, r2, 16 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl IsCoordOutsideFieldObjectMovementRect - lsls r0, 24 - cmp r0, 0 - beq _0805FF96 - movs r0, 0x1 - b _08060016 -_0805FF96: - adds r0, r5, 0 - adds r1, r4, 0 - bl MapGridIsImpassableAt - lsls r0, 24 - cmp r0, 0 - bne _0805FFD8 - adds r0, r5, 0 - adds r1, r4, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0805FFD8 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - adds r3, r7, 0 - bl IsMetatileDirectionallyImpassable - lsls r0, 24 - cmp r0, 0 - bne _0805FFD8 - ldrb r0, [r6, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _0805FFDC - mov r0, r8 - bl CanCameraMoveInDirection - cmp r0, 0 - bne _0805FFDC -_0805FFD8: - movs r0, 0x2 - b _08060016 -_0805FFDC: - ldrb r0, [r6, 0xB] - lsls r0, 28 - lsrs r0, 28 - mov r2, r9 - lsls r1, r2, 16 - asrs r5, r1, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r4, r1, 16 - adds r1, r5, 0 - adds r2, r4, 0 - bl IsZCoordMismatchAt - lsls r0, 24 - cmp r0, 0 - beq _08060000 - movs r0, 0x3 - b _08060016 -_08060000: - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl CheckForCollisionBetweenFieldObjects - lsls r0, 24 - cmp r0, 0 - bne _08060014 - movs r0, 0 - b _08060016 -_08060014: - movs r0, 0x4 -_08060016: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end npc_block_way - thumb_func_start sub_8060024 sub_8060024: @ 8060024 push {r4-r7,lr} diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h new file mode 100644 index 000000000..590923041 --- /dev/null +++ b/include/field_ground_effect.h @@ -0,0 +1,10 @@ +// +// Created by Scott Norton on 5/22/17. +// + +#ifndef POKERUBY_FIELD_GROUND_EFFECT_H +#define POKERUBY_FIELD_GROUND_EFFECT_H + +bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y); + +#endif //POKERUBY_FIELD_GROUND_EFFECT_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 00fda8358..4f611aab2 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -26,6 +26,8 @@ static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ return 0;\ } +bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); + void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); void MoveCoords(u8 direction, s16 *x, s16 *y); @@ -48,4 +50,6 @@ extern const u8 gUnknown_083753C8[2]; extern const u8 gUnknown_083753DC[5]; extern const u8 gUnknown_083753F4[5]; +extern const u8 gUnknown_0837567B[9]; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/include/fieldmap.h b/include/fieldmap.h index 936d27b4a..87f113122 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -1,6 +1,10 @@ #ifndef GUARD_FIELDMAP2_H #define GUARD_FIELDMAP2_H +#include "field_map_obj.h" struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection); +int GetMapBorderIdAt(int x, int y); +bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); +int CanCameraMoveInDirection(int direction); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index b75f16d54..7c332c505 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1,10 +1,12 @@ #include "global.h" #include "field_map_obj.h" +#include "fieldmap.h" #include "asm.h" #include "berry.h" #include "event_data.h" #include "field_player_avatar.h" #include "field_effect.h" +#include "field_ground_effect.h" #include "palette.h" #include "rom4.h" #include "rng.h" @@ -20,14 +22,14 @@ extern void npc_load_two_palettes__and_record(u16, u8); extern void sub_8060388(s16, s16, s16 *, s16 *); extern void sub_80634D0(); extern void pal_patch_for_npc(u16, u16); -extern void sub_80603CC(); +extern void sub_80603CC(s16, s16, s16 *, s16 *); extern void CameraObjectReset1(void); void sub_805AAB0(void); u8 GetFieldObjectIdByLocalId(u8); u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8); u8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *); -void FieldObjectHandleDynamicGraphicsId(); +void FieldObjectHandleDynamicGraphicsId(struct MapObject *); void RemoveFieldObjectInternal(struct MapObject *); u16 GetFieldObjectFlagIdByFieldObjectId(u8); void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables); @@ -2897,3 +2899,102 @@ u8 get_run_image_anim_num(u8 direction) { return gUnknown_08375672[direction]; } + +void sub_805FE28(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum) +{ + if (!mapObject->mapobj_bit_12) + { + sprite->animNum = animNum; + if (sprite->animCmdIndex == 1) + { + sprite->animCmdIndex = 2; + } else if (sprite->animCmdIndex == 3) + { + sprite->animCmdIndex = 0; + } + SeekSpriteAnim(sprite, sprite->animCmdIndex); + } +} + +void sub_805FE64(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum) +{ + u8 animCmdIndex; + if (!mapObject->mapobj_bit_12) + { + sprite->animNum = animNum; + animCmdIndex = 3; + if (sprite->animCmdIndex < 2) + { + animCmdIndex = 1; + } + SeekSpriteAnim(sprite, animCmdIndex); + } +} + +u8 sub_805FE90(s16 a0, s16 a1, s16 a2, s16 a3) +{ + if (a0 > a2) + { + return DIR_WEST; + } else if (a0 < a2) + { + return DIR_EAST; + } else if (a1 > a3) + { + return DIR_NORTH; + } else + { + return DIR_SOUTH; + } +} + +void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern) +{ + mapObject->animPattern = animPattern; + mapObject->mapobj_unk_21 = 0; + mapObject->animId = 0; + gSprites[mapObject->spriteId].callback = gUnknown_0836DA88[animPattern]; + gSprites[mapObject->spriteId].data1 = 0; +} + +u8 npc_running_behaviour_by_direction(u8 direction) +{ + return gUnknown_0837567B[direction]; +} + +u8 sub_805FF20(struct MapObject *mapObject, u8 direction) +{ + s16 x; + s16 y; + x = mapObject->coords2.x; + y = mapObject->coords2.y; + MoveCoords(direction, &x, &y); + return npc_block_way(mapObject, x, y, direction); +} + +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y); + +u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +{ + if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y)) + { + return 1; + } + if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) + { + return 2; + } + if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) + { + return 2; + } + if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) + { + return 3; + } + if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) + { + return 4; + } + return 0; +} -- cgit v1.2.3 From b087d8a909925baf772aa0d631318fb17667067c Mon Sep 17 00:00:00 2001 From: scnorton Date: Mon, 22 May 2017 19:31:47 -0400 Subject: IsCoordOutsideFieldObjectMovementRect and others --- asm/field_map_obj.s | 167 ------------------------------------------------ include/asm.inc.h | 8 +++ include/field_map_obj.h | 1 - include/fieldmap.h | 2 +- src/field_map_obj.c | 57 +++++++++++++++-- 5 files changed, 62 insertions(+), 173 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 5de921af9..ee5aa61c0 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -3517,173 +3517,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8060024 -sub_8060024: @ 8060024 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r7, r0, 0 - lsls r1, 16 - lsls r2, 16 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - lsrs r0, r1, 16 - mov r9, r0 - asrs r6, r1, 16 - lsrs r0, r2, 16 - mov r10, r0 - asrs r5, r2, 16 - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl IsCoordOutsideFieldObjectMovementRect - lsls r0, 24 - lsrs r0, 24 - negs r1, r0 - orrs r1, r0 - lsrs r4, r1, 31 - adds r0, r6, 0 - adds r1, r5, 0 - bl MapGridIsImpassableAt - lsls r0, 24 - cmp r0, 0 - bne _0806009C - adds r0, r6, 0 - adds r1, r5, 0 - bl GetMapBorderIdAt - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0806009C - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - mov r3, r8 - bl IsMetatileDirectionallyImpassable - lsls r0, 24 - cmp r0, 0 - bne _0806009C - ldrb r0, [r7, 0x1] - lsrs r0, 7 - cmp r0, 0 - beq _080600A0 - mov r0, r8 - bl CanCameraMoveInDirection - cmp r0, 0 - bne _080600A0 -_0806009C: - movs r0, 0x2 - orrs r4, r0 -_080600A0: - ldrb r0, [r7, 0xB] - lsls r0, 28 - lsrs r0, 28 - mov r2, r9 - lsls r1, r2, 16 - asrs r6, r1, 16 - mov r2, r10 - lsls r1, r2, 16 - asrs r5, r1, 16 - adds r1, r6, 0 - adds r2, r5, 0 - bl IsZCoordMismatchAt - lsls r0, 24 - cmp r0, 0 - beq _080600C8 - movs r0, 0x4 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080600C8: - adds r0, r7, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl CheckForCollisionBetweenFieldObjects - lsls r0, 24 - cmp r0, 0 - beq _080600E0 - movs r0, 0x8 - orrs r4, r0 - lsls r0, r4, 24 - lsrs r4, r0, 24 -_080600E0: - adds r0, r4, 0 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8060024 - - thumb_func_start IsCoordOutsideFieldObjectMovementRect -IsCoordOutsideFieldObjectMovementRect: @ 80600F0 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r1, 16 - lsrs r3, r1, 16 - lsls r2, 16 - lsrs r5, r2, 16 - ldrb r1, [r4, 0x19] - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - beq _08060128 - lsls r1, 28 - lsrs r2, r1, 28 - ldrh r0, [r4, 0xC] - subs r2, r0, r2 - lsrs r1, 28 - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r2, 16 - lsls r0, r3, 16 - asrs r3, r0, 16 - cmp r2, r0 - bgt _08060154 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r3 - blt _08060154 -_08060128: - ldrb r1, [r4, 0x19] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - beq _08060158 - lsls r1, 24 - lsrs r2, r1, 28 - ldrh r0, [r4, 0xE] - subs r2, r0, r2 - lsrs r1, 28 - adds r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - lsls r2, 16 - lsls r0, r5, 16 - asrs r3, r0, 16 - cmp r2, r0 - bgt _08060154 - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, r3 - bge _08060158 -_08060154: - movs r0, 0x1 - b _0806015A -_08060158: - movs r0, 0 -_0806015A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end IsCoordOutsideFieldObjectMovementRect - thumb_func_start IsMetatileDirectionallyImpassable IsMetatileDirectionallyImpassable: @ 8060160 push {r4-r7,lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index 3db79b128..8921d14cd 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -1,6 +1,14 @@ // src/rom3.o void sub_800C35C(void); +struct UnkStruct8060024 { + u8 outsideMovementRect:1; + u8 tileIsImpassable:1; + u8 elevationMismatch:1; + u8 pathBlockedByObject:1; + u8 pad_04:4; +}; + // asm/battle_2.o void sub_800E7C4(void); u8 b_first_side(u8, u8, u8); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 4f611aab2..c160f1c72 100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -26,7 +26,6 @@ static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\ return 0;\ } -bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); void sub_805C058(struct MapObject *mapObject, s16 a, s16 b); void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18); diff --git a/include/fieldmap.h b/include/fieldmap.h index 87f113122..530e15798 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -4,7 +4,7 @@ struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection); int GetMapBorderIdAt(int x, int y); -bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); +extern bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); int CanCameraMoveInDirection(int direction); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 7c332c505..755de7611 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2972,19 +2972,20 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction) return npc_block_way(mapObject, x, y, direction); } -bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y); +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y); +bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y); +bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) { - if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y)) + if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) { return 1; } if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) { return 2; - } - if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) + } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)) { return 2; } @@ -2998,3 +2999,51 @@ u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction) } return 0; } + +u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +{ + u8 flags; + flags = 0; + if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) + { + flags |= 1; + } + if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))) + { + flags |= 2; + } + if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y)) + { + flags |= 4; + } + if (CheckForCollisionBetweenFieldObjects(mapObject, x, y)) + { + flags |= 8; + } + return flags; +} + +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y) +{ + s16 minv; + s16 maxv; + if (mapObject->mapobj_unk_19 != 0) + { + minv = mapObject->coords1.x - (mapObject->mapobj_unk_19); + maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19); + if (minv > x || maxv < x) + { + return 1; + } + } + if (mapObject->mapobj_unk_19b != 0) + { + minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b); + maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b); + if (minv > y || maxv < y) + { + return 1; + } + } + return 0; +} -- cgit v1.2.3 From cf9607b0a809258170df8e8c970442a09ff21380 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 21:34:17 -0400 Subject: sub_805E37C and helpers --- .idea/codeStyleSettings.xml | 35 ++++++++ asm/field_map_obj.s | 215 +++----------------------------------------- src/field_map_obj.c | 67 +++++++++++++- 3 files changed, 112 insertions(+), 205 deletions(-) create mode 100755 .idea/codeStyleSettings.xml mode change 100644 => 100755 src/field_map_obj.c diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml new file mode 100755 index 000000000..dee6609ca --- /dev/null +++ b/.idea/codeStyleSettings.xml @@ -0,0 +1,35 @@ + + + + + + \ No newline at end of file diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ee5aa61c0..ddde64c0c 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,210 +6,17 @@ .text - thumb_func_start sub_805E37C -sub_805E37C: @ 805E37C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E398 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E39C @ =sub_805E3A0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E398: .4byte gMapObjects -_0805E39C: .4byte sub_805E3A0 - thumb_func_end sub_805E37C - - thumb_func_start sub_805E3A0 -sub_805E3A0: @ 805E3A0 - push {r4,lr} - ldr r3, _0805E3BC @ =gUnknown_083753FC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E3BC: .4byte gUnknown_083753FC - thumb_func_end sub_805E3A0 - - thumb_func_start sub_805E3C0 -sub_805E3C0: @ 805E3C0 - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E3C0 - - thumb_func_start sub_805E3D4 -sub_805E3D4: @ 805E3D4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _0805E408 @ =gUnknown_0836DC09 - ldrb r1, [r4, 0x6] - adds r1, r0 - ldrb r1, [r1] - adds r0, r4, 0 - adds r0, 0x21 - ldrb r0, [r0] - cmp r0, 0 - beq _0805E3F6 - adds r0, r1, 0 - bl GetOppositeDirection - lsls r0, 24 - lsrs r1, r0, 24 -_0805E3F6: - adds r0, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x2 - strh r0, [r5, 0x30] - movs r0, 0x1 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E408: .4byte gUnknown_0836DC09 - thumb_func_end sub_805E3D4 - - thumb_func_start sub_805E40C -sub_805E40C: @ 805E40C - push {r4-r7,lr} - adds r4, r0, 0 - adds r7, r1, 0 - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0 - beq _0805E43C - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bne _0805E43C - movs r0, 0 - strb r0, [r2] - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetDirection -_0805E43C: - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - cmp r5, 0x1 - bne _0805E492 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r5, r0, 24 -_0805E492: - cmp r5, 0 - beq _0805E4A4 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - lsls r0, 24 - lsrs r6, r0, 24 -_0805E4A4: - adds r0, r4, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x3 - strh r0, [r7, 0x30] - movs r0, 0x1 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805E40C - - thumb_func_start sub_805E4C4 -sub_805E4C4: @ 805E4C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E4E2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805E4E2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E4C4 - - thumb_func_start sub_805E4EC -sub_805E4EC: @ 805E4EC - push {r4,lr} - adds r4, r1, 0 - bl npc_reset - movs r0, 0x1 - strh r0, [r4, 0x30] - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805E4EC + @ thumb_func_start sub_805E4EC +@ sub_805E4EC: @ 805E4EC + @ push {r4,lr} + @ adds r4, r1, 0 + @ bl npc_reset + @ movs r0, 0x1 + @ strh r0, [r4, 0x30] + @ pop {r4} + @ pop {r1} + @ bx r1 + @ thumb_func_end sub_805E4EC thumb_func_start MoveFieldObjectInNextDirectionInSequence MoveFieldObjectInNextDirectionInSequence: @ 805E500 diff --git a/src/field_map_obj.c b/src/field_map_obj.c old mode 100644 new mode 100755 index 755de7611..d186eea66 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2762,8 +2762,73 @@ u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +fieldmap_object_cb(sub_805E37C, sub_805E3A0, gUnknown_083753FC); + +u8 sub_805E3C0(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} + +u8 sub_805E3D4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 direction; + direction = gUnknown_0836DC09[mapObject->animPattern]; + if (mapObject->mapobj_unk_21 != 0) + { + direction = GetOppositeDirection(direction); + } + FieldObjectSetDirection(mapObject, direction); + sprite->data1 = 2; + return 1; +} + +u8 sub_805E40C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 v0; + u8 goSpeed0AnimId; + if (mapObject->mapobj_unk_21 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 0; + FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18)); + } + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + if (v0 == 1) + { + mapObject->mapobj_unk_21 ++; + FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18)); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + } + if (v0 != 0) + { + goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18); + } + FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 3; + return 1; +} + +u8 sub_805E4C4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + +u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + sprite->data1 = 1; + return 1; +} -void sub_805E37C(struct Sprite *sprite); void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); void sub_805E6F4(struct Sprite *sprite); -- cgit v1.2.3 From eae1c5be1196c5e7e57bafcea8a3d204f049abb6 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 21:55:50 -0400 Subject: A handful more functions in the midst of field map object callbacks --- asm/field_map_obj.s | 123 ---------------------------------------------------- src/field_map_obj.c | 38 ++++++++++++++++ 2 files changed, 38 insertions(+), 123 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ddde64c0c..ea60b8293 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,129 +6,6 @@ .text - @ thumb_func_start sub_805E4EC -@ sub_805E4EC: @ 805E4EC - @ push {r4,lr} - @ adds r4, r1, 0 - @ bl npc_reset - @ movs r0, 0x1 - @ strh r0, [r4, 0x30] - @ pop {r4} - @ pop {r1} - @ bx r1 - @ thumb_func_end sub_805E4EC - - thumb_func_start MoveFieldObjectInNextDirectionInSequence -MoveFieldObjectInNextDirectionInSequence: @ 805E500 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - mov r8, r1 - adds r7, r2, 0 - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x3 - bne _0805E522 - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bne _0805E522 - movs r0, 0 - strb r0, [r2] -_0805E522: - adds r5, r4, 0 - adds r5, 0x21 - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl FieldObjectSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0805E57C - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - ldrb r0, [r5] - adds r0, r7, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl FieldObjectSetDirection - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetGoSpeed0AnimId - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r1, [r4, 0x18] - lsrs r1, 4 - adds r0, r4, 0 - bl sub_805FF20 - lsls r0, 24 - lsrs r0, 24 -_0805E57C: - cmp r0, 0 - beq _0805E58E - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - lsls r0, 24 - lsrs r6, r0, 24 -_0805E58E: - adds r0, r4, 0 - mov r1, r8 - adds r2, r6, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] - movs r0, 0x2 - mov r1, r8 - strh r0, [r1, 0x30] - movs r0, 0x1 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MoveFieldObjectInNextDirectionInSequence - - thumb_func_start sub_805E5B4 -sub_805E5B4: @ 805E5B4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805E5D2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805E5D2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805E5B4 - thumb_func_start sub_805E5DC sub_805E5DC: @ 805E5DC push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index d186eea66..845f84a34 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2829,6 +2829,44 @@ u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +u8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, struct Sprite *sprite, u8 *directionSequence) +{ + u8 v0; + u8 goSpeed0AnimId; + if (mapObject->mapobj_unk_21 == 3 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 0; + } + FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + if (v0 == 1) + { + mapObject->mapobj_unk_21 ++; + FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]); + goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18); + v0 = sub_805FF20(mapObject, mapObject->placeholder18); + } + if (v0 != 0) + { + goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18); + } + FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 2; + return 1; +} + +u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + void sub_805E5DC(struct Sprite *sprite); void sub_805E668(struct Sprite *sprite); void sub_805E6F4(struct Sprite *sprite); -- cgit v1.2.3 From 5b4191d55480021c5a26a11a0acbd26b8e3f4053 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 22:30:35 -0400 Subject: Halfway mark on asm/field_map_obj.s --- asm/field_map_obj.s | 308 ------------------------------------------------ include/field_map_obj.h | 4 + src/field_map_obj.c | 56 ++++++++- 3 files changed, 57 insertions(+), 311 deletions(-) mode change 100644 => 100755 include/field_map_obj.h diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ea60b8293..d4f3040f5 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,314 +6,6 @@ .text - thumb_func_start sub_805E5DC -sub_805E5DC: @ 805E5DC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E5F8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E5FC @ =sub_805E600 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E5F8: .4byte gMapObjects -_0805E5FC: .4byte sub_805E600 - thumb_func_end sub_805E5DC - - thumb_func_start sub_805E600 -sub_805E600: @ 805E600 - push {r4,lr} - ldr r3, _0805E61C @ =gUnknown_0837540C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E61C: .4byte gUnknown_0837540C - thumb_func_end sub_805E600 - - thumb_func_start sub_805E620 -sub_805E620: @ 805E620 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E664 @ =gUnknown_08375418 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805E64C - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E64C - movs r0, 0x3 - strb r0, [r2] -_0805E64C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E664: .4byte gUnknown_08375418 - thumb_func_end sub_805E620 - - thumb_func_start sub_805E668 -sub_805E668: @ 805E668 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E684 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E688 @ =sub_805E68C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E684: .4byte gMapObjects -_0805E688: .4byte sub_805E68C - thumb_func_end sub_805E668 - - thumb_func_start sub_805E68C -sub_805E68C: @ 805E68C - push {r4,lr} - ldr r3, _0805E6A8 @ =gUnknown_0837541C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E6A8: .4byte gUnknown_0837541C - thumb_func_end sub_805E68C - - thumb_func_start sub_805E6AC -sub_805E6AC: @ 805E6AC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E6F0 @ =gUnknown_08375428 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E6D8 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E6D8 - movs r0, 0x2 - strb r0, [r2] -_0805E6D8: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E6F0: .4byte gUnknown_08375428 - thumb_func_end sub_805E6AC - - thumb_func_start sub_805E6F4 -sub_805E6F4: @ 805E6F4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E710 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E714 @ =sub_805E718 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E710: .4byte gMapObjects -_0805E714: .4byte sub_805E718 - thumb_func_end sub_805E6F4 - - thumb_func_start sub_805E718 -sub_805E718: @ 805E718 - push {r4,lr} - ldr r3, _0805E734 @ =gUnknown_0837542C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E734: .4byte gUnknown_0837542C - thumb_func_end sub_805E718 - - thumb_func_start sub_805E738 -sub_805E738: @ 805E738 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E77C @ =gUnknown_08375438 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E764 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E764 - movs r0, 0x2 - strb r0, [r2] -_0805E764: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E77C: .4byte gUnknown_08375438 - thumb_func_end sub_805E738 - - thumb_func_start sub_805E780 -sub_805E780: @ 805E780 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E79C @ =gMapObjects - adds r0, r2 - ldr r2, _0805E7A0 @ =sub_805E7A4 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E79C: .4byte gMapObjects -_0805E7A0: .4byte sub_805E7A4 - thumb_func_end sub_805E780 - - thumb_func_start sub_805E7A4 -sub_805E7A4: @ 805E7A4 - push {r4,lr} - ldr r3, _0805E7C0 @ =gUnknown_0837543C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E7C0: .4byte gUnknown_0837543C - thumb_func_end sub_805E7A4 - - thumb_func_start sub_805E7C4 -sub_805E7C4: @ 805E7C4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E808 @ =gUnknown_08375448 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805E7F0 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E7F0 - movs r0, 0x3 - strb r0, [r2] -_0805E7F0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E808: .4byte gUnknown_08375448 - thumb_func_end sub_805E7C4 - thumb_func_start sub_805E80C sub_805E80C: @ 805E80C push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h old mode 100644 new mode 100755 index c160f1c72..e66ffa28f --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -48,6 +48,10 @@ extern const u8 gUnknown_083753B0[2]; extern const u8 gUnknown_083753C8[2]; extern const u8 gUnknown_083753DC[5]; extern const u8 gUnknown_083753F4[5]; +extern const u8 gUnknown_08375418[4]; +extern const u8 gUnknown_08375428[4]; +extern const u8 gUnknown_08375438[4]; +extern const u8 gUnknown_08375448[4]; extern const u8 gUnknown_0837567B[9]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 845f84a34..f91328805 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2867,10 +2867,60 @@ u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -void sub_805E5DC(struct Sprite *sprite); -void sub_805E668(struct Sprite *sprite); -void sub_805E6F4(struct Sprite *sprite); +fieldmap_object_cb(sub_805E5DC, sub_805E600, gUnknown_0837540C); + +u8 sub_805E620(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375418, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E668, sub_805E68C, gUnknown_0837541C); + +u8 sub_805E6AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375428, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E6F4, sub_805E718, gUnknown_0837542C); + +u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375438, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + void sub_805E780(struct Sprite *sprite); + +fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C); + +u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375448, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + void sub_805E80C(struct Sprite *sprite); void sub_805E898(struct Sprite *sprite); void sub_805E924(struct Sprite *sprite); -- cgit v1.2.3 From f585dc8b0bce60e9a5e4b6a7ef4a7fcd93b77018 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Mon, 22 May 2017 23:05:23 -0400 Subject: Remove agbcc submodule --- .gitignore | 1 + tools/agbcc | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 160000 tools/agbcc diff --git a/.gitignore b/.gitignore index 13752b437..78af8c737 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ *.bat sound/**/*.bin src/*.s +tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map diff --git a/tools/agbcc b/tools/agbcc deleted file mode 160000 index 928b19519..000000000 --- a/tools/agbcc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 928b1951972d7ff8c46347b3dce9e254cf6c215c -- cgit v1.2.3 From 9c3a25305cfa90021caae4f3a64e5de5ebc6cd45 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 23 May 2017 08:52:21 -0400 Subject: Knock off twenty more field object callbacks --- asm/field_map_obj.s | 1540 ----------------------------------------------- include/field_map_obj.h | 20 + src/field_map_obj.c | 284 ++++++++- 3 files changed, 282 insertions(+), 1562 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d4f3040f5..4359ea6e8 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,1546 +6,6 @@ .text - thumb_func_start sub_805E80C -sub_805E80C: @ 805E80C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E828 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E82C @ =sub_805E830 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E828: .4byte gMapObjects -_0805E82C: .4byte sub_805E830 - thumb_func_end sub_805E80C - - thumb_func_start sub_805E830 -sub_805E830: @ 805E830 - push {r4,lr} - ldr r3, _0805E84C @ =gUnknown_0837544C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E84C: .4byte gUnknown_0837544C - thumb_func_end sub_805E830 - - thumb_func_start sub_805E850 -sub_805E850: @ 805E850 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E894 @ =gUnknown_08375458 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805E87C - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E87C - movs r0, 0x3 - strb r0, [r2] -_0805E87C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E894: .4byte gUnknown_08375458 - thumb_func_end sub_805E850 - - thumb_func_start sub_805E898 -sub_805E898: @ 805E898 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E8B4 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E8B8 @ =sub_805E8BC - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E8B4: .4byte gMapObjects -_0805E8B8: .4byte sub_805E8BC - thumb_func_end sub_805E898 - - thumb_func_start sub_805E8BC -sub_805E8BC: @ 805E8BC - push {r4,lr} - ldr r3, _0805E8D8 @ =gUnknown_0837545C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E8D8: .4byte gUnknown_0837545C - thumb_func_end sub_805E8BC - - thumb_func_start sub_805E8DC -sub_805E8DC: @ 805E8DC - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E920 @ =gUnknown_08375468 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E908 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E908 - movs r0, 0x2 - strb r0, [r2] -_0805E908: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E920: .4byte gUnknown_08375468 - thumb_func_end sub_805E8DC - - thumb_func_start sub_805E924 -sub_805E924: @ 805E924 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E940 @ =gMapObjects - adds r0, r2 - ldr r2, _0805E944 @ =sub_805E948 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E940: .4byte gMapObjects -_0805E944: .4byte sub_805E948 - thumb_func_end sub_805E924 - - thumb_func_start sub_805E948 -sub_805E948: @ 805E948 - push {r4,lr} - ldr r3, _0805E964 @ =gUnknown_0837546C - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E964: .4byte gUnknown_0837546C - thumb_func_end sub_805E948 - - thumb_func_start sub_805E968 -sub_805E968: @ 805E968 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805E9AC @ =gUnknown_08375240 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805E994 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805E994 - movs r0, 0x2 - strb r0, [r2] -_0805E994: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805E9AC: .4byte gUnknown_08375240 - thumb_func_end sub_805E968 - - thumb_func_start sub_805E9B0 -sub_805E9B0: @ 805E9B0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805E9CC @ =gMapObjects - adds r0, r2 - ldr r2, _0805E9D0 @ =sub_805E9D4 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805E9CC: .4byte gMapObjects -_0805E9D0: .4byte sub_805E9D4 - thumb_func_end sub_805E9B0 - - thumb_func_start sub_805E9D4 -sub_805E9D4: @ 805E9D4 - push {r4,lr} - ldr r3, _0805E9F0 @ =gUnknown_08375478 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805E9F0: .4byte gUnknown_08375478 - thumb_func_end sub_805E9D4 - - thumb_func_start sub_805E9F4 -sub_805E9F4: @ 805E9F4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EA38 @ =gUnknown_08375484 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EA20 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EA20 - movs r0, 0x3 - strb r0, [r2] -_0805EA20: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EA38: .4byte gUnknown_08375484 - thumb_func_end sub_805E9F4 - - thumb_func_start sub_805EA3C -sub_805EA3C: @ 805EA3C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EA58 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EA5C @ =sub_805EA60 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EA58: .4byte gMapObjects -_0805EA5C: .4byte sub_805EA60 - thumb_func_end sub_805EA3C - - thumb_func_start sub_805EA60 -sub_805EA60: @ 805EA60 - push {r4,lr} - ldr r3, _0805EA7C @ =gUnknown_08375488 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EA7C: .4byte gUnknown_08375488 - thumb_func_end sub_805EA60 - - thumb_func_start sub_805EA80 -sub_805EA80: @ 805EA80 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EAC4 @ =gUnknown_08375494 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EAAC - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EAAC - movs r0, 0x3 - strb r0, [r2] -_0805EAAC: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EAC4: .4byte gUnknown_08375494 - thumb_func_end sub_805EA80 - - thumb_func_start sub_805EAC8 -sub_805EAC8: @ 805EAC8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EAE4 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EAE8 @ =sub_805EAEC - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EAE4: .4byte gMapObjects -_0805EAE8: .4byte sub_805EAEC - thumb_func_end sub_805EAC8 - - thumb_func_start sub_805EAEC -sub_805EAEC: @ 805EAEC - push {r4,lr} - ldr r3, _0805EB08 @ =gUnknown_08375498 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EB08: .4byte gUnknown_08375498 - thumb_func_end sub_805EAEC - - thumb_func_start sub_805EB0C -sub_805EB0C: @ 805EB0C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EB50 @ =gUnknown_083754A4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805EB38 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EB38 - movs r0, 0x2 - strb r0, [r2] -_0805EB38: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EB50: .4byte gUnknown_083754A4 - thumb_func_end sub_805EB0C - - thumb_func_start sub_805EB54 -sub_805EB54: @ 805EB54 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EB70 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EB74 @ =sub_805EB78 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EB70: .4byte gMapObjects -_0805EB74: .4byte sub_805EB78 - thumb_func_end sub_805EB54 - - thumb_func_start sub_805EB78 -sub_805EB78: @ 805EB78 - push {r4,lr} - ldr r3, _0805EB94 @ =gUnknown_083754A8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EB94: .4byte gUnknown_083754A8 - thumb_func_end sub_805EB78 - - thumb_func_start sub_805EB98 -sub_805EB98: @ 805EB98 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EBDC @ =gUnknown_083754B4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805EBC4 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EBC4 - movs r0, 0x2 - strb r0, [r2] -_0805EBC4: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EBDC: .4byte gUnknown_083754B4 - thumb_func_end sub_805EB98 - - thumb_func_start sub_805EBE0 -sub_805EBE0: @ 805EBE0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EBFC @ =gMapObjects - adds r0, r2 - ldr r2, _0805EC00 @ =sub_805EC04 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EBFC: .4byte gMapObjects -_0805EC00: .4byte sub_805EC04 - thumb_func_end sub_805EBE0 - - thumb_func_start sub_805EC04 -sub_805EC04: @ 805EC04 - push {r4,lr} - ldr r3, _0805EC20 @ =gUnknown_083754B8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EC20: .4byte gUnknown_083754B8 - thumb_func_end sub_805EC04 - - thumb_func_start sub_805EC24 -sub_805EC24: @ 805EC24 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EC68 @ =gUnknown_083754C4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EC50 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EC50 - movs r0, 0x3 - strb r0, [r2] -_0805EC50: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EC68: .4byte gUnknown_083754C4 - thumb_func_end sub_805EC24 - - thumb_func_start sub_805EC6C -sub_805EC6C: @ 805EC6C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EC88 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EC8C @ =sub_805EC90 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EC88: .4byte gMapObjects -_0805EC8C: .4byte sub_805EC90 - thumb_func_end sub_805EC6C - - thumb_func_start sub_805EC90 -sub_805EC90: @ 805EC90 - push {r4,lr} - ldr r3, _0805ECAC @ =gUnknown_083754C8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805ECAC: .4byte gUnknown_083754C8 - thumb_func_end sub_805EC90 - - thumb_func_start sub_805ECB0 -sub_805ECB0: @ 805ECB0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805ECF4 @ =gUnknown_083754D4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805ECDC - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805ECDC - movs r0, 0x3 - strb r0, [r2] -_0805ECDC: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805ECF4: .4byte gUnknown_083754D4 - thumb_func_end sub_805ECB0 - - thumb_func_start sub_805ECF8 -sub_805ECF8: @ 805ECF8 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805ED14 @ =gMapObjects - adds r0, r2 - ldr r2, _0805ED18 @ =sub_805ED1C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805ED14: .4byte gMapObjects -_0805ED18: .4byte sub_805ED1C - thumb_func_end sub_805ECF8 - - thumb_func_start sub_805ED1C -sub_805ED1C: @ 805ED1C - push {r4,lr} - ldr r3, _0805ED38 @ =gUnknown_083754D8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805ED38: .4byte gUnknown_083754D8 - thumb_func_end sub_805ED1C - - thumb_func_start sub_805ED3C -sub_805ED3C: @ 805ED3C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805ED80 @ =gUnknown_083754E4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805ED68 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805ED68 - movs r0, 0x2 - strb r0, [r2] -_0805ED68: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805ED80: .4byte gUnknown_083754E4 - thumb_func_end sub_805ED3C - - thumb_func_start sub_805ED84 -sub_805ED84: @ 805ED84 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EDA0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EDA4 @ =sub_805EDA8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EDA0: .4byte gMapObjects -_0805EDA4: .4byte sub_805EDA8 - thumb_func_end sub_805ED84 - - thumb_func_start sub_805EDA8 -sub_805EDA8: @ 805EDA8 - push {r4,lr} - ldr r3, _0805EDC4 @ =gUnknown_083754E8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EDC4: .4byte gUnknown_083754E8 - thumb_func_end sub_805EDA8 - - thumb_func_start sub_805EDC8 -sub_805EDC8: @ 805EDC8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EE0C @ =gUnknown_083754F4 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x1 - bne _0805EDF4 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EDF4 - movs r0, 0x2 - strb r0, [r2] -_0805EDF4: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EE0C: .4byte gUnknown_083754F4 - thumb_func_end sub_805EDC8 - - thumb_func_start sub_805EE10 -sub_805EE10: @ 805EE10 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EE2C @ =gMapObjects - adds r0, r2 - ldr r2, _0805EE30 @ =sub_805EE34 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EE2C: .4byte gMapObjects -_0805EE30: .4byte sub_805EE34 - thumb_func_end sub_805EE10 - - thumb_func_start sub_805EE34 -sub_805EE34: @ 805EE34 - push {r4,lr} - ldr r3, _0805EE50 @ =gUnknown_083754F8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EE50: .4byte gUnknown_083754F8 - thumb_func_end sub_805EE34 - - thumb_func_start sub_805EE54 -sub_805EE54: @ 805EE54 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EE98 @ =gUnknown_08375504 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EE80 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EE80 - movs r0, 0x3 - strb r0, [r2] -_0805EE80: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EE98: .4byte gUnknown_08375504 - thumb_func_end sub_805EE54 - - thumb_func_start sub_805EE9C -sub_805EE9C: @ 805EE9C - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EEB8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EEBC @ =sub_805EEC0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EEB8: .4byte gMapObjects -_0805EEBC: .4byte sub_805EEC0 - thumb_func_end sub_805EE9C - - thumb_func_start sub_805EEC0 -sub_805EEC0: @ 805EEC0 - push {r4,lr} - ldr r3, _0805EEDC @ =gUnknown_08375508 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EEDC: .4byte gUnknown_08375508 - thumb_func_end sub_805EEC0 - - thumb_func_start sub_805EEE0 -sub_805EEE0: @ 805EEE0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EF24 @ =gUnknown_08375514 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EF0C - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EF0C - movs r0, 0x3 - strb r0, [r2] -_0805EF0C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EF24: .4byte gUnknown_08375514 - thumb_func_end sub_805EEE0 - - thumb_func_start sub_805EF28 -sub_805EF28: @ 805EF28 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EF44 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EF48 @ =sub_805EF4C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EF44: .4byte gMapObjects -_0805EF48: .4byte sub_805EF4C - thumb_func_end sub_805EF28 - - thumb_func_start sub_805EF4C -sub_805EF4C: @ 805EF4C - push {r4,lr} - ldr r3, _0805EF68 @ =gUnknown_08375518 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EF68: .4byte gUnknown_08375518 - thumb_func_end sub_805EF4C - - thumb_func_start sub_805EF6C -sub_805EF6C: @ 805EF6C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805EFB0 @ =gUnknown_08375524 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805EF98 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805EF98 - movs r0, 0x3 - strb r0, [r2] -_0805EF98: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805EFB0: .4byte gUnknown_08375524 - thumb_func_end sub_805EF6C - - thumb_func_start sub_805EFB4 -sub_805EFB4: @ 805EFB4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805EFD0 @ =gMapObjects - adds r0, r2 - ldr r2, _0805EFD4 @ =sub_805EFD8 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805EFD0: .4byte gMapObjects -_0805EFD4: .4byte sub_805EFD8 - thumb_func_end sub_805EFB4 - - thumb_func_start sub_805EFD8 -sub_805EFD8: @ 805EFD8 - push {r4,lr} - ldr r3, _0805EFF4 @ =gUnknown_08375528 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805EFF4: .4byte gUnknown_08375528 - thumb_func_end sub_805EFD8 - - thumb_func_start sub_805EFF8 -sub_805EFF8: @ 805EFF8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F03C @ =gUnknown_08375534 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F024 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F024 - movs r0, 0x3 - strb r0, [r2] -_0805F024: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F03C: .4byte gUnknown_08375534 - thumb_func_end sub_805EFF8 - - thumb_func_start sub_805F040 -sub_805F040: @ 805F040 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F05C @ =gMapObjects - adds r0, r2 - ldr r2, _0805F060 @ =sub_805F064 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F05C: .4byte gMapObjects -_0805F060: .4byte sub_805F064 - thumb_func_end sub_805F040 - - thumb_func_start sub_805F064 -sub_805F064: @ 805F064 - push {r4,lr} - ldr r3, _0805F080 @ =gUnknown_08375538 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F080: .4byte gUnknown_08375538 - thumb_func_end sub_805F064 - - thumb_func_start sub_805F084 -sub_805F084: @ 805F084 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F0C8 @ =gUnknown_08375544 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F0B0 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F0B0 - movs r0, 0x3 - strb r0, [r2] -_0805F0B0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F0C8: .4byte gUnknown_08375544 - thumb_func_end sub_805F084 - - thumb_func_start sub_805F0CC -sub_805F0CC: @ 805F0CC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F0E8 @ =gMapObjects - adds r0, r2 - ldr r2, _0805F0EC @ =sub_805F0F0 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F0E8: .4byte gMapObjects -_0805F0EC: .4byte sub_805F0F0 - thumb_func_end sub_805F0CC - - thumb_func_start sub_805F0F0 -sub_805F0F0: @ 805F0F0 - push {r4,lr} - ldr r3, _0805F10C @ =gUnknown_08375548 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F10C: .4byte gUnknown_08375548 - thumb_func_end sub_805F0F0 - - thumb_func_start sub_805F110 -sub_805F110: @ 805F110 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F154 @ =gUnknown_08375554 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F13C - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F13C - movs r0, 0x3 - strb r0, [r2] -_0805F13C: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F154: .4byte gUnknown_08375554 - thumb_func_end sub_805F110 - - thumb_func_start sub_805F158 -sub_805F158: @ 805F158 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F174 @ =gMapObjects - adds r0, r2 - ldr r2, _0805F178 @ =sub_805F17C - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F174: .4byte gMapObjects -_0805F178: .4byte sub_805F17C - thumb_func_end sub_805F158 - - thumb_func_start sub_805F17C -sub_805F17C: @ 805F17C - push {r4,lr} - ldr r3, _0805F198 @ =gUnknown_08375558 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F198: .4byte gUnknown_08375558 - thumb_func_end sub_805F17C - - thumb_func_start sub_805F19C -sub_805F19C: @ 805F19C - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F1E0 @ =gUnknown_08375564 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F1C8 - movs r0, 0xE - ldrsh r1, [r4, r0] - movs r3, 0x12 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F1C8 - movs r0, 0x3 - strb r0, [r2] -_0805F1C8: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F1E0: .4byte gUnknown_08375564 - thumb_func_end sub_805F19C - - thumb_func_start sub_805F1E4 -sub_805F1E4: @ 805F1E4 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F200 @ =gMapObjects - adds r0, r2 - ldr r2, _0805F204 @ =sub_805F208 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F200: .4byte gMapObjects -_0805F204: .4byte sub_805F208 - thumb_func_end sub_805F1E4 - - thumb_func_start sub_805F208 -sub_805F208: @ 805F208 - push {r4,lr} - ldr r3, _0805F224 @ =gUnknown_08375568 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F224: .4byte gUnknown_08375568 - thumb_func_end sub_805F208 - - thumb_func_start sub_805F228 -sub_805F228: @ 805F228 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F26C @ =gUnknown_08375574 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F254 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F254 - movs r0, 0x3 - strb r0, [r2] -_0805F254: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F26C: .4byte gUnknown_08375574 - thumb_func_end sub_805F228 - - thumb_func_start sub_805F270 -sub_805F270: @ 805F270 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F28C @ =gMapObjects - adds r0, r2 - ldr r2, _0805F290 @ =sub_805F294 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F28C: .4byte gMapObjects -_0805F290: .4byte sub_805F294 - thumb_func_end sub_805F270 - - thumb_func_start sub_805F294 -sub_805F294: @ 805F294 - push {r4,lr} - ldr r3, _0805F2B0 @ =gUnknown_08375578 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F2B0: .4byte gUnknown_08375578 - thumb_func_end sub_805F294 - - thumb_func_start sub_805F2B4 -sub_805F2B4: @ 805F2B4 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _0805F2F8 @ =gUnknown_08375584 - mov r0, sp - movs r2, 0x4 - bl memcpy - adds r2, r4, 0 - adds r2, 0x21 - ldrb r0, [r2] - cmp r0, 0x2 - bne _0805F2E0 - movs r0, 0xC - ldrsh r1, [r4, r0] - movs r3, 0x10 - ldrsh r0, [r4, r3] - cmp r1, r0 - bne _0805F2E0 - movs r0, 0x3 - strb r0, [r2] -_0805F2E0: - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl MoveFieldObjectInNextDirectionInSequence - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_0805F2F8: .4byte gUnknown_08375584 - thumb_func_end sub_805F2B4 - thumb_func_start sub_805F2FC sub_805F2FC: @ 805F2FC push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index e66ffa28f..559183cd3 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -52,6 +52,26 @@ extern const u8 gUnknown_08375418[4]; extern const u8 gUnknown_08375428[4]; extern const u8 gUnknown_08375438[4]; extern const u8 gUnknown_08375448[4]; +extern const u8 gUnknown_08375458[4]; +extern const u8 gUnknown_08375468[4]; +extern const u8 gUnknown_08375240[4]; +extern const u8 gUnknown_08375484[4]; +extern const u8 gUnknown_08375494[4]; +extern const u8 gUnknown_083754A4[4]; +extern const u8 gUnknown_083754B4[4]; +extern const u8 gUnknown_083754C4[4]; +extern const u8 gUnknown_083754D4[4]; +extern const u8 gUnknown_083754E4[4]; +extern const u8 gUnknown_083754F4[4]; +extern const u8 gUnknown_08375504[4]; +extern const u8 gUnknown_08375514[4]; +extern const u8 gUnknown_08375524[4]; +extern const u8 gUnknown_08375534[4]; +extern const u8 gUnknown_08375544[4]; +extern const u8 gUnknown_08375554[4]; +extern const u8 gUnknown_08375564[4]; +extern const u8 gUnknown_08375574[4]; +extern const u8 gUnknown_08375584[4]; extern const u8 gUnknown_0837567B[9]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f91328805..1f48c9aad 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -2906,8 +2906,6 @@ u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite) return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); } -void sub_805E780(struct Sprite *sprite); - fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C); u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite) @@ -2921,26 +2919,268 @@ u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite) return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); } -void sub_805E80C(struct Sprite *sprite); -void sub_805E898(struct Sprite *sprite); -void sub_805E924(struct Sprite *sprite); -void sub_805E9B0(struct Sprite *sprite); -void sub_805EA3C(struct Sprite *sprite); -void sub_805EAC8(struct Sprite *sprite); -void sub_805EB54(struct Sprite *sprite); -void sub_805EBE0(struct Sprite *sprite); -void sub_805EC6C(struct Sprite *sprite); -void sub_805ECF8(struct Sprite *sprite); -void sub_805ED84(struct Sprite *sprite); -void sub_805EE10(struct Sprite *sprite); -void sub_805EE9C(struct Sprite *sprite); -void sub_805EF28(struct Sprite *sprite); -void sub_805EFB4(struct Sprite *sprite); -void sub_805F040(struct Sprite *sprite); -void sub_805F0CC(struct Sprite *sprite); -void sub_805F158(struct Sprite *sprite); -void sub_805F1E4(struct Sprite *sprite); -void sub_805F270(struct Sprite *sprite); + + +fieldmap_object_cb(sub_805E80C, sub_805E830, gUnknown_0837544C); + +u8 sub_805E850(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375458, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E898, sub_805E8BC, gUnknown_0837545C); + +u8 sub_805E8DC(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375468, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E924, sub_805E948, gUnknown_0837546C); + +u8 sub_805E968(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375240, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805E9B0, sub_805E9D4, gUnknown_08375478); + +u8 sub_805E9F4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375484, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EA3C, sub_805EA60, gUnknown_08375488); + +u8 sub_805EA80(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375494, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EAC8, sub_805EAEC, gUnknown_08375498); + +u8 sub_805EB0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754A4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EB54, sub_805EB78, gUnknown_083754A8); + +u8 sub_805EB98(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754B4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EBE0, sub_805EC04, gUnknown_083754B8); + +u8 sub_805EC24(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754C4, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EC6C, sub_805EC90, gUnknown_083754C8); + +u8 sub_805ECB0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754D4, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805ECF8, sub_805ED1C, gUnknown_083754D8); + +u8 sub_805ED3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754E4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805ED84, sub_805EDA8, gUnknown_083754E8); + +u8 sub_805EDC8(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_083754F4, 4); + if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 2; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EE10, sub_805EE34, gUnknown_083754F8); + +u8 sub_805EE54(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375504, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EE9C, sub_805EEC0, gUnknown_08375508); + +u8 sub_805EEE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375514, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EF28, sub_805EF4C, gUnknown_08375518); + +u8 sub_805EF6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375524, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805EFB4, sub_805EFD8, gUnknown_08375528); + +u8 sub_805EFF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375534, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F040, sub_805F064, gUnknown_08375538); + +u8 sub_805F084(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375544, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F0CC, sub_805F0F0, gUnknown_08375548); + +u8 sub_805F110(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375554, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F158, sub_805F17C, gUnknown_08375558); + +u8 sub_805F19C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375564, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F1E4, sub_805F208, gUnknown_08375568); + +u8 sub_805F228(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375574, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +} + +fieldmap_object_cb(sub_805F270, sub_805F294, gUnknown_08375578); + +u8 sub_805F2B4(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 directions[4]; + memcpy(directions, gUnknown_08375584, 4); + if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x) + { + mapObject->mapobj_unk_21 = 3; + } + return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); +}; + void sub_805F2FC(struct Sprite *sprite); void FieldObjectCB_TreeDisguise(struct Sprite *sprite); void FieldObjectCB_MountainDisguise(struct Sprite *sprite); -- cgit v1.2.3 From 48a3b78f82095fb2bd77db7c1c296158deacd76e Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 10:16:08 -0400 Subject: IsMetatileDirectionallyImpassable, CheckForCollisionBetweenFieldObjects --- .gitignore | 1 + asm/field_map_obj.s | 114 ------------------------------------------ include/field_ground_effect.h | 1 + include/field_map_obj.h | 2 + src/field_map_obj.c | 31 ++++++++++++ 5 files changed, 35 insertions(+), 114 deletions(-) diff --git a/.gitignore b/.gitignore index 78af8c737..5b70a4586 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,4 @@ types_*.taghl *.sa* Thumbs.db build/* +.idea/codeStyleSettings.xml diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 4359ea6e8..eef8c69c7 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,120 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start IsMetatileDirectionallyImpassable -IsMetatileDirectionallyImpassable: @ 8060160 - push {r4-r7,lr} - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 16 - lsrs r7, r2, 16 - lsls r3, 24 - ldr r1, _080601A8 @ =gUnknown_08375684 - lsrs r3, 22 - subs r5, r3, 0x4 - adds r1, r5, r1 - ldrb r0, [r0, 0x1E] - ldr r1, [r1] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - bne _080601A2 - ldr r4, _080601AC @ =gUnknown_08375694 - adds r4, r5, r4 - lsls r0, r6, 16 - asrs r0, 16 - lsls r1, r7, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - bl _call_via_r1 - lsls r0, 24 - cmp r0, 0 - beq _080601B0 -_080601A2: - movs r0, 0x1 - b _080601B2 - .align 2, 0 -_080601A8: .4byte gUnknown_08375684 -_080601AC: .4byte gUnknown_08375694 -_080601B0: - movs r0, 0 -_080601B2: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end IsMetatileDirectionallyImpassable - - thumb_func_start CheckForCollisionBetweenFieldObjects -CheckForCollisionBetweenFieldObjects: @ 80601B8 - push {r4-r7,lr} - adds r6, r0, 0 - lsls r1, 16 - lsrs r7, r1, 16 - movs r4, 0 - lsls r2, 16 - asrs r5, r2, 16 -_080601C6: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - ldr r1, _0806021C @ =gMapObjects - adds r2, r0, r1 - ldrb r0, [r2] - lsls r0, 31 - cmp r0, 0 - beq _08060220 - cmp r2, r6 - beq _08060220 - movs r0, 0x10 - ldrsh r1, [r2, r0] - lsls r0, r7, 16 - asrs r3, r0, 16 - cmp r1, r3 - bne _080601F0 - movs r1, 0x12 - ldrsh r0, [r2, r1] - cmp r0, r5 - beq _08060200 -_080601F0: - movs r1, 0x14 - ldrsh r0, [r2, r1] - cmp r0, r3 - bne _08060220 - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r5 - bne _08060220 -_08060200: - ldrb r0, [r6, 0xB] - lsls r0, 28 - lsrs r0, 28 - ldrb r1, [r2, 0xB] - lsls r1, 28 - lsrs r1, 28 - bl AreZCoordsCompatible - lsls r0, 24 - cmp r0, 0 - beq _08060220 - movs r0, 0x1 - b _0806022C - .align 2, 0 -_0806021C: .4byte gMapObjects -_08060220: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080601C6 - movs r0, 0 -_0806022C: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CheckForCollisionBetweenFieldObjects - thumb_func_start sub_8060234 sub_8060234: @ 8060234 push {lr} diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h index 590923041..8a69426b3 100644 --- a/include/field_ground_effect.h +++ b/include/field_ground_effect.h @@ -6,5 +6,6 @@ #define POKERUBY_FIELD_GROUND_EFFECT_H bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y); +bool8 AreZCoordsCompatible(u8 z1, u8 z2); #endif //POKERUBY_FIELD_GROUND_EFFECT_H diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 559183cd3..80add1403 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -35,6 +35,8 @@ void npc_reset(struct MapObject *mapObject, struct Sprite *sprite); extern const u8 gUnknown_08375240[4]; extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3); +extern bool8 (*const gUnknown_08375684[4])(u8); +extern bool8 (*const gUnknown_08375694[4])(u8); extern const u8 gUnknown_083752A0[2]; extern const u8 gUnknown_083752C0[2]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 1f48c9aad..c94b5a180 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3440,3 +3440,34 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, } return 0; } + +bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction) +{ + if (gUnknown_08375684[direction - 1](mapObject->mapobj_unk_1E) || gUnknown_08375694[direction - 1](MapGridGetMetatileBehaviorAt(x, y))) + { + return 1; + } + return 0; +} + +bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y) +{ + struct MapObject *mapObject2; + u8 i; + for (i=0; i<16; i++) + { + mapObject2 = &gMapObjects[i]; + if (mapObject2->active && mapObject2 != mapObject) + { + if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y)) + { + continue; + } + if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0)) + { + return 1; + } + } + } + return 0; +} -- cgit v1.2.3 From 8155a807befd4f55f31a38a4535225221708783d Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 11:13:36 -0400 Subject: Another set of functions related to adjusting coordinates --- asm/field_map_obj.s | 227 ------------------------------------------------ include/field_map_obj.h | 2 + src/field_map_obj.c | 65 ++++++++++++++ 3 files changed, 67 insertions(+), 227 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index eef8c69c7..6878512e6 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,233 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8060234 -sub_8060234: @ 8060234 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _08060280 - ldr r3, _08060278 @ =gSprites - ldr r2, _0806027C @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x3C] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08060280 - movs r0, 0x1 - b _08060282 - .align 2, 0 -_08060278: .4byte gSprites -_0806027C: .4byte gMapObjects -_08060280: - movs r0, 0 -_08060282: - add sp, 0x4 - pop {r1} - bx r1 - thumb_func_end sub_8060234 - - thumb_func_start sub_8060288 -sub_8060288: @ 8060288 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _080602C6 - ldr r3, _080602CC @ =gSprites - ldr r2, _080602D0 @ =gMapObjects - mov r0, sp - ldrb r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x3C] - movs r0, 0x4 - orrs r0, r2 - strh r0, [r1, 0x3C] -_080602C6: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_080602CC: .4byte gSprites -_080602D0: .4byte gMapObjects - thumb_func_end sub_8060288 - - thumb_func_start MoveCoords -MoveCoords: @ 80602D4 - push {r4,lr} - lsls r0, 24 - ldr r3, _080602F4 @ =gDirectionToVector - lsrs r0, 22 - adds r0, r3 - ldrh r3, [r0] - ldrh r4, [r1] - adds r3, r4 - strh r3, [r1] - ldrh r0, [r0, 0x2] - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080602F4: .4byte gDirectionToVector - thumb_func_end MoveCoords - - thumb_func_start unref_sub_80602F8 -unref_sub_80602F8: @ 80602F8 - push {r4,lr} - lsls r0, 24 - ldr r3, _0806031C @ =gDirectionToVector - lsrs r0, 22 - adds r0, r3 - ldrh r3, [r0] - lsls r3, 4 - ldrh r4, [r1] - adds r3, r4 - strh r3, [r1] - ldrh r0, [r0, 0x2] - lsls r0, 4 - ldrh r1, [r2] - adds r0, r1 - strh r0, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0806031C: .4byte gDirectionToVector - thumb_func_end unref_sub_80602F8 - - thumb_func_start sub_8060320 -sub_8060320: @ 8060320 - push {r4-r7,lr} - adds r4, r1, 0 - ldr r1, [sp, 0x14] - lsls r0, 24 - lsls r3, 16 - lsrs r3, 16 - adds r7, r3, 0 - lsls r1, 16 - lsrs r6, r1, 16 - mov r12, r6 - ldr r1, _08060384 @ =gDirectionToVector - lsrs r0, 22 - adds r5, r0, r1 - movs r0, 0 - ldrsh r1, [r5, r0] - cmp r1, 0 - ble _0806034C - lsls r0, r3, 16 - asrs r0, 16 - ldrh r3, [r4] - adds r0, r3 - strh r0, [r4] -_0806034C: - cmp r1, 0 - bge _0806035A - ldrh r1, [r4] - lsls r0, r7, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r4] -_0806035A: - movs r0, 0x2 - ldrsh r1, [r5, r0] - cmp r1, 0 - ble _0806036C - lsls r0, r6, 16 - asrs r0, 16 - ldrh r3, [r2] - adds r0, r3 - strh r0, [r2] -_0806036C: - cmp r1, 0 - bge _0806037C - ldrh r1, [r2] - mov r3, r12 - lsls r0, r3, 16 - asrs r0, 16 - subs r1, r0 - strh r1, [r2] -_0806037C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08060384: .4byte gDirectionToVector - thumb_func_end sub_8060320 - - thumb_func_start sub_8060388 -sub_8060388: @ 8060388 - push {r4,r5,lr} - ldr r5, _080603C0 @ =gSaveBlock1 - ldrh r4, [r5] - lsls r0, 16 - asrs r0, 16 - subs r0, r4 - lsls r0, 4 - strh r0, [r2] - ldrh r0, [r5, 0x2] - lsls r1, 16 - asrs r1, 16 - subs r1, r0 - lsls r1, 4 - strh r1, [r3] - ldr r1, _080603C4 @ =gUnknown_0300489C - ldrh r0, [r2] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r2] - ldr r1, _080603C8 @ =gUnknown_03004898 - ldrh r0, [r3] - ldrh r1, [r1] - subs r0, r1 - strh r0, [r3] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080603C0: .4byte gSaveBlock1 -_080603C4: .4byte gUnknown_0300489C -_080603C8: .4byte gUnknown_03004898 - thumb_func_end sub_8060388 - thumb_func_start sub_80603CC sub_80603CC: @ 80603CC push {r4-r7,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 80add1403..3a56ed636 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -77,4 +77,6 @@ extern const u8 gUnknown_08375584[4]; extern const u8 gUnknown_0837567B[9]; +extern const struct Coords16 gDirectionToVector[]; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index c94b5a180..8ca2970ab 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3471,3 +3471,68 @@ bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s } return 0; } + +bool8 sub_8060234(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 mapObjectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) + { + if (gSprites[gMapObjects[mapObjectId].spriteId].data7 & 2) + { + return 1; + } + } + return 0; +} + +void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup) +{ + u8 mapObjectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId)) + { + gSprites[gMapObjects[mapObjectId].spriteId].data7 |= 4; + } +} + +void MoveCoords(u8 direction, s16 *x, s16 *y) +{ + *x += gDirectionToVector[direction].x; + *y += gDirectionToVector[direction].y; +} + +void unref_sub_80602F8(u8 direction, s16 *x, s16 *y) +{ + *x += gDirectionToVector[direction].x << 4; + *y += gDirectionToVector[direction].y << 4; +} + +void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY) +{ + if (gDirectionToVector[direction].x > 0) + { + *x += deltaX; + } + if (gDirectionToVector[direction].x < 0) + { + *x -= deltaX; + } + if (gDirectionToVector[direction].y > 0) + { + *y += deltaY; + } + if (gDirectionToVector[direction].y < 0) + { + *y -= deltaY; + } +} + +extern s16 gUnknown_03004898; +extern s16 gUnknown_0300489C; + +void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2) +{ + *x2 = (x1 - gSaveBlock1.pos.x) << 4; + *y2 = (y1 - gSaveBlock1.pos.y) << 4; + *x2 -= gUnknown_0300489C; + *y2 -= gUnknown_03004898; +} -- cgit v1.2.3 From 9684b862198f763e66a4f6348cc1f1cdef075ec0 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 12:06:33 -0400 Subject: Some more functions related to FMO camera and special anims --- asm/field_map_obj.s | 259 ------------------------------------------------ include/field_camera.h | 10 ++ include/field_map_obj.h | 4 + src/field_camera.c | 10 -- src/field_map_obj.c | 102 ++++++++++++++++++- 5 files changed, 111 insertions(+), 274 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 6878512e6..95e8c7949 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,265 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_80603CC -sub_80603CC: @ 80603CC - push {r4-r7,lr} - adds r7, r2, 0 - mov r12, r3 - lsls r0, 16 - lsrs r5, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r0, _0806045C @ =gUnknown_0300489C - ldrh r0, [r0] - negs r0, r0 - ldr r1, _08060460 @ =gUnknown_03004880 - ldr r2, [r1, 0x10] - subs r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldr r0, _08060464 @ =gUnknown_03004898 - ldrh r0, [r0] - negs r0, r0 - ldr r1, [r1, 0x14] - subs r0, r1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r2, 0 - ble _08060406 - lsls r0, r3, 16 - movs r3, 0x80 - lsls r3, 13 - adds r0, r3 - lsrs r3, r0, 16 -_08060406: - cmp r2, 0 - bge _08060412 - lsls r0, r3, 16 - ldr r2, _08060468 @ =0xfff00000 - adds r0, r2 - lsrs r3, r0, 16 -_08060412: - cmp r1, 0 - ble _08060420 - lsls r0, r4, 16 - movs r2, 0x80 - lsls r2, 13 - adds r0, r2 - lsrs r4, r0, 16 -_08060420: - cmp r1, 0 - bge _0806042C - lsls r0, r4, 16 - ldr r1, _08060468 @ =0xfff00000 - adds r0, r1 - lsrs r4, r0, 16 -_0806042C: - ldr r2, _0806046C @ =gSaveBlock1 - ldrh r1, [r2] - lsls r0, r5, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - lsls r1, r3, 16 - asrs r1, 16 - adds r1, r0 - strh r1, [r7] - ldrh r1, [r2, 0x2] - lsls r0, r6, 16 - asrs r0, 16 - subs r0, r1 - lsls r0, 4 - lsls r1, r4, 16 - asrs r1, 16 - adds r1, r0 - mov r2, r12 - strh r1, [r2] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0806045C: .4byte gUnknown_0300489C -_08060460: .4byte gUnknown_03004880 -_08060464: .4byte gUnknown_03004898 -_08060468: .4byte 0xfff00000 -_0806046C: .4byte gSaveBlock1 - thumb_func_end sub_80603CC - - thumb_func_start sub_8060470 -sub_8060470: @ 8060470 - push {r4-r6,lr} - mov r6, r8 - push {r6} - adds r6, r0, 0 - mov r8, r1 - adds r4, r2, 0 - adds r5, r3, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 16 - lsrs r5, 16 - movs r1, 0 - ldrsh r0, [r6, r1] - mov r2, r8 - movs r3, 0 - ldrsh r1, [r2, r3] - adds r2, r6, 0 - mov r3, r8 - bl sub_80603CC - lsls r4, 16 - asrs r4, 16 - ldrh r0, [r6] - adds r4, r0 - strh r4, [r6] - lsls r5, 16 - asrs r5, 16 - mov r1, r8 - ldrh r1, [r1] - adds r5, r1 - mov r2, r8 - strh r5, [r2] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8060470 - - thumb_func_start GetFieldObjectMovingCameraOffset -GetFieldObjectMovingCameraOffset: @ 80604BC - push {lr} - adds r2, r0, 0 - movs r0, 0 - strh r0, [r2] - strh r0, [r1] - ldr r3, _080604F8 @ =gUnknown_03004880 - ldr r0, [r3, 0x10] - cmp r0, 0 - ble _080604D2 - movs r0, 0x1 - strh r0, [r2] -_080604D2: - ldr r0, [r3, 0x10] - cmp r0, 0 - bge _080604DE - ldrh r0, [r2] - subs r0, 0x1 - strh r0, [r2] -_080604DE: - ldr r2, [r3, 0x14] - cmp r2, 0 - ble _080604EA - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] -_080604EA: - cmp r2, 0 - bge _080604F4 - ldrh r0, [r1] - subs r0, 0x1 - strh r0, [r1] -_080604F4: - pop {r0} - bx r0 - .align 2, 0 -_080604F8: .4byte gUnknown_03004880 - thumb_func_end GetFieldObjectMovingCameraOffset - - thumb_func_start FieldObjectMoveDestCoords -FieldObjectMoveDestCoords: @ 80604FC - push {r4,lr} - lsls r1, 24 - lsrs r1, 24 - ldrh r4, [r0, 0x10] - strh r4, [r2] - ldrh r0, [r0, 0x12] - strh r0, [r3] - adds r0, r1, 0 - adds r1, r2, 0 - adds r2, r3, 0 - bl MoveCoords - pop {r4} - pop {r0} - bx r0 - thumb_func_end FieldObjectMoveDestCoords - - thumb_func_start FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive -FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive: @ 806051C - push {lr} - ldrb r1, [r0] - movs r0, 0x42 - ands r0, r1 - cmp r0, 0 - bne _0806052C - movs r0, 0 - b _0806052E -_0806052C: - movs r0, 0x1 -_0806052E: - pop {r1} - bx r1 - thumb_func_end FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - - thumb_func_start FieldObjectIsSpecialAnimActive -FieldObjectIsSpecialAnimActive: @ 8060534 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _0806054A - ldrb r0, [r1, 0x1C] - cmp r0, 0xFF - beq _0806054A - movs r0, 0x1 - b _0806054C -_0806054A: - movs r0, 0 -_0806054C: - pop {r1} - bx r1 - thumb_func_end FieldObjectIsSpecialAnimActive - - thumb_func_start FieldObjectSetSpecialAnim -FieldObjectSetSpecialAnim: @ 8060550 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _08060590 - adds r0, r4, 0 - bl UnfreezeMapObject - strb r5, [r4, 0x1C] - ldrb r0, [r4] - movs r1, 0x40 - orrs r0, r1 - movs r1, 0x7F - ands r0, r1 - strb r0, [r4] - ldr r2, _0806058C @ =gSprites - ldrb r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - strh r6, [r0, 0x32] - movs r0, 0 - b _08060592 - .align 2, 0 -_0806058C: .4byte gSprites -_08060590: - movs r0, 0x1 -_08060592: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end FieldObjectSetSpecialAnim - thumb_func_start FieldObjectForceSetSpecialAnim FieldObjectForceSetSpecialAnim: @ 8060598 push {r4,r5,lr} diff --git a/include/field_camera.h b/include/field_camera.h index 51c370d0a..9021b579e 100644 --- a/include/field_camera.h +++ b/include/field_camera.h @@ -1,6 +1,16 @@ #ifndef GUARD_FIELD_CAMERA_H #define GUARD_FIELD_CAMERA_H +struct CameraSomething +{ + void (*callback)(struct CameraSomething *); + u32 unk4; + s32 unk8; + s32 unkC; + s32 unk10; + s32 unk14; +}; + void move_tilemap_camera_to_upper_left_corner(void); void sub_8057A58(void); void sub_8057B14(u16 *a, u16 *b); diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 3a56ed636..44212ac47 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -79,4 +79,8 @@ extern const u8 gUnknown_0837567B[9]; extern const struct Coords16 gDirectionToVector[]; +extern struct CameraSomething gUnknown_03004880; +extern s16 gUnknown_03004898; +extern s16 gUnknown_0300489C; + #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_camera.c b/src/field_camera.c index 182e180ab..df5ccc301 100644 --- a/src/field_camera.c +++ b/src/field_camera.c @@ -25,16 +25,6 @@ extern s16 gUnknown_0300059A; extern u8 gUnknown_0300059C; extern void (*gUnknown_030005A0)(void); -struct CameraSomething -{ - void (*callback)(struct CameraSomething *); - u32 unk4; - s32 unk8; - s32 unkC; - s32 unk10; - s32 unk14; -}; - extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 8ca2970ab..bd77ad2be 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -1,5 +1,6 @@ #include "global.h" #include "field_map_obj.h" +#include "field_map_obj_helpers.h" #include "fieldmap.h" #include "asm.h" #include "berry.h" @@ -11,6 +12,7 @@ #include "rom4.h" #include "rng.h" #include "sprite.h" +#include "field_camera.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -22,7 +24,6 @@ extern void npc_load_two_palettes__and_record(u16, u8); extern void sub_8060388(s16, s16, s16 *, s16 *); extern void sub_80634D0(); extern void pal_patch_for_npc(u16, u16); -extern void sub_80603CC(s16, s16, s16 *, s16 *); extern void CameraObjectReset1(void); void sub_805AAB0(void); @@ -614,7 +615,7 @@ u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c } extern void sub_8064970(struct Sprite *); -extern void sub_8060470(); +extern void sub_8060470(s16 *, s16 *, s16, s16); extern void InitObjectPriorityByZCoord(); u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f) @@ -3526,9 +3527,6 @@ void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY) } } -extern s16 gUnknown_03004898; -extern s16 gUnknown_0300489C; - void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2) { *x2 = (x1 - gSaveBlock1.pos.x) << 4; @@ -3536,3 +3534,97 @@ void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2) *x2 -= gUnknown_0300489C; *y2 -= gUnknown_03004898; } + +void sub_80603CC(s16 x1, s16 y1, s16 *x2, s16 *y2) +{ + s16 x3; + s16 y3; + x3 = -gUnknown_0300489C - gUnknown_03004880.unk10; + y3 = -gUnknown_03004898 - gUnknown_03004880.unk14; + if (gUnknown_03004880.unk10 > 0) + { + x3 += 0x10; + } + if (gUnknown_03004880.unk10 < 0) + { + x3 -= 0x10; + } + if (gUnknown_03004880.unk14 > 0) + { + y3 += 0x10; + } + if (gUnknown_03004880.unk14 < 0) + { + y3 -= 0x10; + } + *x2 = ((x1 - gSaveBlock1.pos.x) << 4) + x3; + *y2 = ((y1 - gSaveBlock1.pos.y) << 4) + y3; +} + +void sub_8060470(s16 *x, s16 *y, s16 dx, s16 dy) +{ + sub_80603CC(*x, *y, x, y); + *x += dx; + *y += dy; +} + +void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y) +{ + *x = 0; + *y = 0; + if (gUnknown_03004880.unk10 > 0) + { + (*x)++; + } + if (gUnknown_03004880.unk10 < 0) + { + (*x)--; + } + if (gUnknown_03004880.unk14 > 0) + { + (*y)++; + } + if (gUnknown_03004880.unk14 < 0) + { + (*y)--; + } +} + +void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y) +{ + *x = mapObject->coords2.x; + *y = mapObject->coords2.y; + MoveCoords(direction, x, y); +} + +bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_1 || mapObject->mapobj_bit_6) + { + return TRUE; + } + return FALSE; +} + +bool8 FieldObjectIsSpecialAnimActive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6 && mapObject->mapobj_unk_1C != 0xff) + { + return TRUE; + } + return FALSE; +} + +bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId) +{ + if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject)) + { + return TRUE; + } + UnfreezeMapObject(mapObject); + mapObject->mapobj_unk_1C = specialAnimId; + mapObject->mapobj_bit_6 = 1; + mapObject->mapobj_bit_7 = 0; + gSprites[mapObject->spriteId].data2 = 0; + return FALSE; +} -- cgit v1.2.3 From f9c54affb68b5aa35ef97fad29db67935d2c7d8d Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 13:18:23 -0400 Subject: Special anims; meta_step --- asm/field_map_obj.s | 165 ---------------------------------------------------- src/field_map_obj.c | 81 +++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 166 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 95e8c7949..039828e6d 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,171 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start FieldObjectForceSetSpecialAnim -FieldObjectForceSetSpecialAnim: @ 8060598 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - bl FieldObjectClearAnimIfSpecialAnimActive - adds r0, r5, 0 - adds r1, r4, 0 - bl FieldObjectSetSpecialAnim - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end FieldObjectForceSetSpecialAnim - - thumb_func_start FieldObjectClearAnimIfSpecialAnimActive -FieldObjectClearAnimIfSpecialAnimActive: @ 80605B4 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - bge _080605C6 - adds r0, r1, 0 - bl FieldObjectClearAnim -_080605C6: - pop {r0} - bx r0 - thumb_func_end FieldObjectClearAnimIfSpecialAnimActive - - thumb_func_start FieldObjectClearAnim -FieldObjectClearAnim: @ 80605CC - movs r1, 0xFF - strb r1, [r0, 0x1C] - ldrb r2, [r0] - movs r1, 0x41 - negs r1, r1 - ands r1, r2 - movs r2, 0x7F - ands r1, r2 - strb r1, [r0] - ldr r3, _080605FC @ =gSprites - ldrb r2, [r0, 0x4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r3 - movs r2, 0 - strh r2, [r1, 0x30] - ldrb r1, [r0, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x32] - bx lr - .align 2, 0 -_080605FC: .4byte gSprites - thumb_func_end FieldObjectClearAnim - - thumb_func_start FieldObjectCheckIfSpecialAnimFinishedOrInactive -FieldObjectCheckIfSpecialAnimFinishedOrInactive: @ 8060600 - push {lr} - ldrb r1, [r0] - lsls r0, r1, 25 - cmp r0, 0 - blt _0806060E - movs r0, 0x10 - b _08060610 -_0806060E: - lsrs r0, r1, 7 -_08060610: - pop {r1} - bx r1 - thumb_func_end FieldObjectCheckIfSpecialAnimFinishedOrInactive - - thumb_func_start FieldObjectClearAnimIfSpecialAnimFinished -FieldObjectClearAnimIfSpecialAnimFinished: @ 8060614 - push {r4,r5,lr} - adds r5, r0, 0 - bl FieldObjectCheckIfSpecialAnimFinishedOrInactive - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _0806062E - cmp r4, 0x10 - beq _0806062E - adds r0, r5, 0 - bl FieldObjectClearAnimIfSpecialAnimActive -_0806062E: - adds r0, r4, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end FieldObjectClearAnimIfSpecialAnimFinished - - thumb_func_start FieldObjectGetSpecialAnim -FieldObjectGetSpecialAnim: @ 8060638 - push {lr} - adds r1, r0, 0 - ldrb r0, [r1] - lsls r0, 25 - cmp r0, 0 - blt _08060648 - movs r0, 0xFF - b _0806064A -_08060648: - ldrb r0, [r1, 0x1C] -_0806064A: - pop {r1} - bx r1 - thumb_func_end FieldObjectGetSpecialAnim - - thumb_func_start meta_step -meta_step: @ 8060650 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - bl DoGroundEffects_OnSpawn - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80634A0 - adds r0, r4, 0 - bl FieldObjectIsSpecialAnimActive - lsls r0, 24 - cmp r0, 0 - beq _0806067A - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectExecSpecialAnim - b _08060690 -_0806067A: - ldrb r0, [r4, 0x1] - lsls r0, 31 - cmp r0, 0 - bne _08060690 -_08060682: - adds r0, r4, 0 - adds r1, r5, 0 - bl _call_via_r6 - lsls r0, 24 - cmp r0, 0 - bne _08060682 -_08060690: - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnBeginStep - adds r0, r4, 0 - adds r1, r5, 0 - bl DoGroundEffects_OnFinishStep - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_obj_transfer_image_anim_pause_flag - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80634D0 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectUpdateSubpriority - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end meta_step - thumb_func_start GetFaceDirectionAnimId GetFaceDirectionAnimId: @ 80606C0 push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index bd77ad2be..29dbc4bd0 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -22,7 +22,7 @@ extern void ClearPlayerAvatarInfo(void); extern void npc_load_two_palettes__no_record(u16, u8); extern void npc_load_two_palettes__and_record(u16, u8); extern void sub_8060388(s16, s16, s16 *, s16 *); -extern void sub_80634D0(); +extern void sub_80634D0(struct MapObject *, struct Sprite *); extern void pal_patch_for_npc(u16, u16); extern void CameraObjectReset1(void); @@ -3628,3 +3628,82 @@ bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId) gSprites[mapObject->spriteId].data2 = 0; return FALSE; } + +void FieldObjectForceSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId) +{ + FieldObjectClearAnimIfSpecialAnimActive(mapObject); + FieldObjectSetSpecialAnim(mapObject, specialAnimId); +} + +void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6) + { + FieldObjectClearAnim(mapObject); + } +} + +void FieldObjectClearAnim(struct MapObject *mapObject) +{ + mapObject->mapobj_unk_1C = 0xFF; + mapObject->mapobj_bit_6 = 0; + mapObject->mapobj_bit_7 = 0; + gSprites[mapObject->spriteId].data1 = 0; + gSprites[mapObject->spriteId].data2 = 0; +} + +bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6) + return mapObject->mapobj_bit_7; + return 0x10; +} + +bool8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *mapObject) +{ + u8 specialAnimStatus; + specialAnimStatus = FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject); + if (specialAnimStatus != 0 && specialAnimStatus != 0x10) + { + FieldObjectClearAnimIfSpecialAnimActive(mapObject); + } + return specialAnimStatus; +} + +u8 FieldObjectGetSpecialAnim(struct MapObject *mapObject) +{ + if (mapObject->mapobj_bit_6) + { + return mapObject->mapobj_unk_1C; + } + return 0xFF; +} + +extern void DoGroundEffects_OnSpawn(struct MapObject *mapObject, struct Sprite *sprite); +extern void DoGroundEffects_OnBeginStep(struct MapObject *mapObject, struct Sprite *sprite); +extern void DoGroundEffects_OnFinishStep(struct MapObject *mapObject, struct Sprite *sprite); +extern void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite); +void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite); +void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite); +void FieldObjectUpdateSubpriority(struct MapObject *mapObject, struct Sprite *sprite); + +void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback)(struct MapObject *, struct Sprite *)) +{ + DoGroundEffects_OnSpawn(mapObject, sprite); + sub_80634A0(mapObject, sprite); + if (FieldObjectIsSpecialAnimActive(mapObject)) + { + FieldObjectExecSpecialAnim(mapObject, sprite); + } else + { + if (!mapObject->mapobj_bit_8) + { + while (callback(mapObject, sprite)); + } + } + DoGroundEffects_OnBeginStep(mapObject, sprite); + DoGroundEffects_OnFinishStep(mapObject, sprite); + npc_obj_transfer_image_anim_pause_flag(mapObject, sprite); + sub_80634D0(mapObject, sprite); + FieldObjectUpdateSubpriority(mapObject, sprite); +} -- cgit v1.2.3 From f678fe263da7deeeb060672a3520b4b1d71ce848 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 13:50:14 -0400 Subject: Another chunk of largely-identical FMO functions --- asm/field_map_obj.s | 697 ---------------------------------------------------- include/asm.inc.h | 2 +- src/field_map_obj.c | 357 +++++++++++++++++++++++++++ 3 files changed, 358 insertions(+), 698 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 039828e6d..ea685d6ec 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,703 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start GetFaceDirectionAnimId -GetFaceDirectionAnimId: @ 80606C0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080606E8 @ =gUnknown_083756C8 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080606D8 - movs r4, 0 -_080606D8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080606E8: .4byte gUnknown_083756C8 - thumb_func_end GetFaceDirectionAnimId - - thumb_func_start GetSimpleGoAnimId -GetSimpleGoAnimId: @ 80606EC - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060714 @ =gUnknown_083756CD - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060704 - movs r4, 0 -_08060704: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060714: .4byte gUnknown_083756CD - thumb_func_end GetSimpleGoAnimId - - thumb_func_start GetGoSpeed0AnimId -GetGoSpeed0AnimId: @ 8060718 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060740 @ =gUnknown_083756D2 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060730 - movs r4, 0 -_08060730: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060740: .4byte gUnknown_083756D2 - thumb_func_end GetGoSpeed0AnimId - - thumb_func_start sub_8060744 -sub_8060744: @ 8060744 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806076C @ =gUnknown_083756D7 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806075C - movs r4, 0 -_0806075C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806076C: .4byte gUnknown_083756D7 - thumb_func_end sub_8060744 - - thumb_func_start d2s_08064034 -d2s_08064034: @ 8060770 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060798 @ =gUnknown_083756DC - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060788 - movs r4, 0 -_08060788: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060798: .4byte gUnknown_083756DC - thumb_func_end d2s_08064034 - - thumb_func_start sub_806079C -sub_806079C: @ 806079C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080607C4 @ =gUnknown_083756E1 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080607B4 - movs r4, 0 -_080607B4: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080607C4: .4byte gUnknown_083756E1 - thumb_func_end sub_806079C - - thumb_func_start sub_80607C8 -sub_80607C8: @ 80607C8 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080607F0 @ =gUnknown_083756E6 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080607E0 - movs r4, 0 -_080607E0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080607F0: .4byte gUnknown_083756E6 - thumb_func_end sub_80607C8 - - thumb_func_start sub_80607F4 -sub_80607F4: @ 80607F4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806081C @ =gUnknown_083756EB - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806080C - movs r4, 0 -_0806080C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806081C: .4byte gUnknown_083756EB - thumb_func_end sub_80607F4 - - thumb_func_start GetJumpLedgeAnimId -GetJumpLedgeAnimId: @ 8060820 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060848 @ =gUnknown_083756F0 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060838 - movs r4, 0 -_08060838: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060848: .4byte gUnknown_083756F0 - thumb_func_end GetJumpLedgeAnimId - - thumb_func_start sub_806084C -sub_806084C: @ 806084C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060874 @ =gUnknown_083756F5 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060864 - movs r4, 0 -_08060864: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060874: .4byte gUnknown_083756F5 - thumb_func_end sub_806084C - - thumb_func_start sub_8060878 -sub_8060878: @ 8060878 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080608A0 @ =gUnknown_083756FA - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060890 - movs r4, 0 -_08060890: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080608A0: .4byte gUnknown_083756FA - thumb_func_end sub_8060878 - - thumb_func_start sub_80608A4 -sub_80608A4: @ 80608A4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080608CC @ =gUnknown_083756FF - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080608BC - movs r4, 0 -_080608BC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080608CC: .4byte gUnknown_083756FF - thumb_func_end sub_80608A4 - - thumb_func_start sub_80608D0 -sub_80608D0: @ 80608D0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080608F8 @ =gUnknown_08375704 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080608E8 - movs r4, 0 -_080608E8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080608F8: .4byte gUnknown_08375704 - thumb_func_end sub_80608D0 - - thumb_func_start GetStepInPlaceDelay32AnimId -GetStepInPlaceDelay32AnimId: @ 80608FC - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060924 @ =gUnknown_08375709 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060914 - movs r4, 0 -_08060914: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060924: .4byte gUnknown_08375709 - thumb_func_end GetStepInPlaceDelay32AnimId - - thumb_func_start GetStepInPlaceDelay16AnimId -GetStepInPlaceDelay16AnimId: @ 8060928 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060950 @ =gUnknown_0837570E - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060940 - movs r4, 0 -_08060940: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060950: .4byte gUnknown_0837570E - thumb_func_end GetStepInPlaceDelay16AnimId - - thumb_func_start GetStepInPlaceDelay8AnimId -GetStepInPlaceDelay8AnimId: @ 8060954 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _0806097C @ =gUnknown_08375713 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _0806096C - movs r4, 0 -_0806096C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0806097C: .4byte gUnknown_08375713 - thumb_func_end GetStepInPlaceDelay8AnimId - - thumb_func_start GetStepInPlaceDelay4AnimId -GetStepInPlaceDelay4AnimId: @ 8060980 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080609A8 @ =gUnknown_08375718 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060998 - movs r4, 0 -_08060998: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080609A8: .4byte gUnknown_08375718 - thumb_func_end GetStepInPlaceDelay4AnimId - - thumb_func_start FieldObjectFaceOppositeDirection -FieldObjectFaceOppositeDirection: @ 80609AC - push {r4,lr} - adds r4, r0, 0 - lsls r0, r1, 24 - lsrs r0, 24 - bl GetOppositeDirection - lsls r0, 24 - lsrs r0, 24 - bl GetFaceDirectionAnimId - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetSpecialAnim - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end FieldObjectFaceOppositeDirection - - thumb_func_start sub_80609D8 -sub_80609D8: @ 80609D8 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A00 @ =gUnknown_0837571D - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _080609F0 - movs r4, 0 -_080609F0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A00: .4byte gUnknown_0837571D - thumb_func_end sub_80609D8 - - thumb_func_start sub_8060A04 -sub_8060A04: @ 8060A04 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A2C @ =gUnknown_08375722 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060A1C - movs r4, 0 -_08060A1C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A2C: .4byte gUnknown_08375722 - thumb_func_end sub_8060A04 - - thumb_func_start sub_8060A30 -sub_8060A30: @ 8060A30 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A58 @ =gUnknown_08375727 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060A48 - movs r4, 0 -_08060A48: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A58: .4byte gUnknown_08375727 - thumb_func_end sub_8060A30 - - thumb_func_start sub_8060A5C -sub_8060A5C: @ 8060A5C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060A84 @ =gUnknown_0837572C - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060A74 - movs r4, 0 -_08060A74: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060A84: .4byte gUnknown_0837572C - thumb_func_end sub_8060A5C - - thumb_func_start sub_8060A88 -sub_8060A88: @ 8060A88 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060AB0 @ =gUnknown_08375731 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060AA0 - movs r4, 0 -_08060AA0: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060AB0: .4byte gUnknown_08375731 - thumb_func_end sub_8060A88 - - thumb_func_start sub_8060AB4 -sub_8060AB4: @ 8060AB4 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060ADC @ =gUnknown_08375736 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060ACC - movs r4, 0 -_08060ACC: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060ADC: .4byte gUnknown_08375736 - thumb_func_end sub_8060AB4 - - thumb_func_start sub_8060AE0 -sub_8060AE0: @ 8060AE0 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B08 @ =gUnknown_0837573B - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060AF8 - movs r4, 0 -_08060AF8: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B08: .4byte gUnknown_0837573B - thumb_func_end sub_8060AE0 - - thumb_func_start sub_8060B0C -sub_8060B0C: @ 8060B0C - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B34 @ =gUnknown_08375740 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060B24 - movs r4, 0 -_08060B24: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B34: .4byte gUnknown_08375740 - thumb_func_end sub_8060B0C - - thumb_func_start sub_8060B38 -sub_8060B38: @ 8060B38 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B60 @ =gUnknown_08375745 - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060B50 - movs r4, 0 -_08060B50: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B60: .4byte gUnknown_08375745 - thumb_func_end sub_8060B38 - - thumb_func_start sub_8060B64 -sub_8060B64: @ 8060B64 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060B8C @ =gUnknown_0837574A - mov r0, sp - movs r2, 0x5 - bl memcpy - cmp r4, 0x4 - bls _08060B7C - movs r4, 0 -_08060B7C: - mov r1, sp - adds r0, r1, r4 - ldrb r0, [r0] - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060B8C: .4byte gUnknown_0837574A - thumb_func_end sub_8060B64 - thumb_func_start GetOppositeDirection GetOppositeDirection: @ 8060B90 push {r4,lr} diff --git a/include/asm.inc.h b/include/asm.inc.h index 8921d14cd..9bd8324ad 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -128,7 +128,7 @@ u8 sub_80608D0(u8); u8 GetStepInPlaceDelay32AnimId(u8 a); u8 GetStepInPlaceDelay16AnimId(u8); u8 GetStepInPlaceDelay8AnimId(u8 a); -u8 FieldObjectFaceOppositeDirection(void *, u8); +u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 sub_80609D8(u8); u8 sub_8060A04(u8); u8 sub_8060A30(u8); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 29dbc4bd0..211bc919f 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3707,3 +3707,360 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback sub_80634D0(mapObject, sprite); FieldObjectUpdateSubpriority(mapObject, sprite); } + + +const u8 gUnknown_083756C8[5]; + +u8 GetFaceDirectionAnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756C8, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756CD[5]; + +u8 GetSimpleGoAnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756CD, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756D2[5]; + +u8 GetGoSpeed0AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756D2, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756D7[5]; + +u8 sub_8060744(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756D7, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756DC[5]; + +u8 d2s_08064034(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756DC, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756E1[5]; + +u8 sub_806079C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756E1, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756E6[5]; + +u8 sub_80607C8(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756E6, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756EB[5]; + +u8 sub_80607F4(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756EB, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756F0[5]; + +u8 GetJumpLedgeAnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756F0, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756F5[5]; + +u8 sub_806084C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756F5, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756FA[5]; + +u8 sub_8060878(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756FA, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_083756FF[5]; + +u8 sub_80608A4(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_083756FF, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375704[5]; + +u8 sub_80608D0(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375704, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375709[5]; + +u8 GetStepInPlaceDelay32AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375709, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837570E[5]; + +u8 GetStepInPlaceDelay16AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837570E, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375713[5]; + +u8 GetStepInPlaceDelay8AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375713, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375718[5]; + +u8 GetStepInPlaceDelay4AnimId(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375718, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction) +{ + return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction))); +} + +const u8 gUnknown_0837571D[5]; + +u8 sub_80609D8(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837571D, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375722[5]; + +u8 sub_8060A04(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375722, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375727[5]; + +u8 sub_8060A30(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375727, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837572C[5]; + +u8 sub_8060A5C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837572C, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375731[5]; + +u8 sub_8060A88(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375731, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375736[5]; + +u8 sub_8060AB4(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375736, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837573B[5]; + +u8 sub_8060AE0(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837573B, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375740[5]; + +u8 sub_8060B0C(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375740, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_08375745[5]; + +u8 sub_8060B38(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_08375745, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} + +const u8 gUnknown_0837574A[5]; + +u8 sub_8060B64(u8 index) +{ + u8 directions[5]; + memcpy(directions, gUnknown_0837574A, 5); + if (index >= 5) + { + index = 0; + } + return directions[index]; +} -- cgit v1.2.3 From 39e0ce9f6d6dab0f9d72f967ba6fef23398bb342 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 14:27:22 -0400 Subject: up through state_to_direction, which is nonmatching (help, registers are misbehaving) --- asm/field_map_obj.s | 84 ------------------------------------------------- include/field_map_obj.h | 4 +++ src/field_map_obj.c | 70 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 84 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ea685d6ec..86f53d9e8 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,90 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start GetOppositeDirection -GetOppositeDirection: @ 8060B90 - push {r4,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08060BB4 @ =gUnknown_0837574F - mov r0, sp - movs r2, 0x8 - bl memcpy - subs r1, r4, 0x1 - lsls r0, r1, 24 - lsrs r0, 24 - cmp r0, 0x7 - bhi _08060BB8 - mov r2, sp - adds r0, r2, r1 - ldrb r0, [r0] - b _08060BBA - .align 2, 0 -_08060BB4: .4byte gUnknown_0837574F -_08060BB8: - adds r0, r4, 0 -_08060BBA: - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end GetOppositeDirection - - thumb_func_start zffu_offset_calc -zffu_offset_calc: @ 8060BC4 - lsls r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08060BD8 @ =gUnknown_08375757 - lsrs r0, 22 - subs r0, 0x5 - adds r1, r0 - adds r1, r2 - ldrb r0, [r1] - bx lr - .align 2, 0 -_08060BD8: .4byte gUnknown_08375757 - thumb_func_end zffu_offset_calc - - thumb_func_start state_to_direction -state_to_direction: @ 8060BDC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r1, 0 - lsls r2, 24 - lsrs r2, 24 - cmp r1, 0 - beq _08060BFC - cmp r2, 0 - beq _08060BFC - cmp r1, 0x4 - bhi _08060BFC - cmp r2, 0x4 - bls _08060C00 -_08060BFC: - movs r0, 0 - b _08060C12 -_08060C00: - adds r1, r2, 0 - bl zffu_offset_calc - ldr r2, _08060C18 @ =gUnknown_08375767 - lsls r1, r4, 2 - subs r1, 0x5 - adds r0, r1 - adds r0, r2 - ldrb r0, [r0] -_08060C12: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08060C18: .4byte gUnknown_08375767 - thumb_func_end state_to_direction - thumb_func_start FieldObjectExecSpecialAnim FieldObjectExecSpecialAnim: @ 8060C1C push {r4,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 44212ac47..07aba90e5 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -76,6 +76,10 @@ extern const u8 gUnknown_08375574[4]; extern const u8 gUnknown_08375584[4]; extern const u8 gUnknown_0837567B[9]; +extern const u8 gUnknown_0837574F[8]; + +extern const u8 gUnknown_08375757[4][4]; +extern const u8 gUnknown_08375767[4][4]; extern const struct Coords16 gDirectionToVector[]; diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 211bc919f..108f9cc20 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4064,3 +4064,73 @@ u8 sub_8060B64(u8 index) } return directions[index]; } + +u8 GetOppositeDirection(u8 direction) +{ + u8 directions[8]; + memcpy(directions, gUnknown_0837574F, 8); + if (direction == 0 || direction > 8) + { + return direction; + } + return directions[direction - 1]; +} + +int zffu_offset_calc(u8 a0, u8 a1) +{ + return gUnknown_08375757[a0 - 1][a1 - 1]; +} + +#ifdef NONMATCHING +u8 state_to_direction(u8 a0, u8 a1, u8 a2) +{ + int zffuOffset; + if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) + { + return 0; + } + zffuOffset = zffu_offset_calc(a1, a2); + return gUnknown_08375767[a0 - 1][zffuOffset - 1]; +} +#else +__attribute__((naked)) +u8 state_to_direction(u8 a0, u8 a1, u8 a2) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r0, r1, 0\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + cmp r1, 0\n\ + beq _08060BFC\n\ + cmp r2, 0\n\ + beq _08060BFC\n\ + cmp r1, 0x4\n\ + bhi _08060BFC\n\ + cmp r2, 0x4\n\ + bls _08060C00\n\ +_08060BFC:\n\ + movs r0, 0\n\ + b _08060C12\n\ +_08060C00:\n\ + adds r1, r2, 0\n\ + bl zffu_offset_calc\n\ + ldr r2, _08060C18 @ =gUnknown_08375767\n\ + lsls r1, r4, 2\n\ + subs r1, 0x5\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ +_08060C12:\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_08060C18: .4byte gUnknown_08375767\n\ +.syntax divided\n"); +} +#endif -- cgit v1.2.3 From d44cefb06d4d2e160db450a27b74a739753d24dd Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 15:26:25 -0400 Subject: Some more field map object functions; asm/field_map_obj.s down to 7k lines --- asm/field_map_obj.s | 318 ---------------------------------------- include/field_map_obj.h | 2 + include/field_map_obj_helpers.h | 1 + src/field_map_obj.c | 104 +++++++++++++ 4 files changed, 107 insertions(+), 318 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 86f53d9e8..167a5cd13 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,324 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start FieldObjectExecSpecialAnim -FieldObjectExecSpecialAnim: @ 8060C1C - push {r4,lr} - adds r4, r0, 0 - ldr r2, _08060C50 @ =gUnknown_08375778 - ldrb r0, [r4, 0x1C] - lsls r0, 2 - adds r0, r2 - movs r3, 0x32 - ldrsh r2, [r1, r3] - ldr r0, [r0] - lsls r2, 2 - adds r2, r0 - ldr r2, [r2] - adds r0, r4, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - beq _08060C48 - ldrb r0, [r4] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4] -_08060C48: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08060C50: .4byte gUnknown_08375778 - thumb_func_end FieldObjectExecSpecialAnim - - thumb_func_start FieldObjectExecRegularAnim -FieldObjectExecRegularAnim: @ 8060C54 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r1, _08060C80 @ =gUnknown_08375778 - ldrb r0, [r4, 0x1C] - lsls r0, 2 - adds r0, r1 - movs r2, 0x32 - ldrsh r1, [r5, r2] - ldr r0, [r0] - lsls r1, 2 - adds r1, r0 - ldr r2, [r1] - adds r0, r4, 0 - adds r1, r5, 0 - bl _call_via_r2 - lsls r0, 24 - cmp r0, 0 - bne _08060C84 - movs r0, 0 - b _08060C8E - .align 2, 0 -_08060C80: .4byte gUnknown_08375778 -_08060C84: - movs r0, 0xFF - strb r0, [r4, 0x1C] - movs r0, 0 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08060C8E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end FieldObjectExecRegularAnim - - thumb_func_start FieldObjectSetRegularAnim -FieldObjectSetRegularAnim: @ 8060C94 - movs r3, 0 - strb r2, [r0, 0x1C] - strh r3, [r1, 0x32] - bx lr - thumb_func_end FieldObjectSetRegularAnim - - thumb_func_start an_look_any -an_look_any: @ 8060C9C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r1, r2, 24 - lsrs r1, 24 - bl FieldObjectSetDirection - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE64 - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end an_look_any - - thumb_func_start sub_8060CE0 -sub_8060CE0: @ 8060CE0 - push {lr} - movs r2, 0x1 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060CE0 - - thumb_func_start sub_8060CF0 -sub_8060CF0: @ 8060CF0 - push {lr} - movs r2, 0x2 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060CF0 - - thumb_func_start sub_8060D00 -sub_8060D00: @ 8060D00 - push {lr} - movs r2, 0x3 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060D00 - - thumb_func_start sub_8060D10 -sub_8060D10: @ 8060D10 - push {lr} - movs r2, 0x4 - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_8060D10 - - thumb_func_start sub_8060D20 -sub_8060D20: @ 8060D20 - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - sub sp, 0x4 - mov r8, r0 - mov r9, r1 - adds r4, r2, 0 - adds r6, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r6, 24 - lsrs r6, 24 - ldrh r1, [r0, 0x10] - mov r0, sp - strh r1, [r0] - mov r1, r8 - ldrh r0, [r1, 0x12] - mov r5, sp - adds r5, 0x2 - strh r0, [r5] - mov r0, r8 - adds r1, r4, 0 - bl FieldObjectSetDirection - adds r0, r4, 0 - mov r1, sp - adds r2, r5, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r5, r0] - mov r0, r8 - bl npc_coords_shift - mov r0, r9 - adds r1, r4, 0 - adds r2, r6, 0 - bl oamt_npc_ministep_reset - mov r2, r9 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - mov r1, r8 - ldrb r0, [r1] - movs r1, 0x4 - orrs r0, r1 - mov r2, r8 - strb r0, [r2] - movs r0, 0x1 - mov r1, r9 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8060D20 - - thumb_func_start do_go_anim -do_go_anim: @ 8060DA4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - adds r5, r0, 0 - mov r8, r1 - adds r4, r3, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r4, 24 - lsrs r4, 24 - mov r1, sp - ldr r0, _08060DFC @ =gUnknown_083759C0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6} - stm r1!, {r3,r6} - adds r0, r5, 0 - mov r1, r8 - adds r3, r4, 0 - bl sub_8060D20 - lsls r4, 2 - mov r7, sp - adds r1, r7, r4 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - ldr r1, [r1] - bl _call_via_r1 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - mov r1, r8 - bl sub_805FE28 - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08060DFC: .4byte gUnknown_083759C0 - thumb_func_end do_go_anim - - thumb_func_start do_run_anim -do_run_anim: @ 8060E00 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - movs r3, 0x1 - bl sub_8060D20 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_run_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE28 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end do_run_anim - - thumb_func_start npc_obj_ministep_stop_on_arrival -npc_obj_ministep_stop_on_arrival: @ 8060E30 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl obj_npc_ministep - lsls r0, 24 - cmp r0, 0 - bne _08060E46 - movs r0, 0 - b _08060E62 -_08060E46: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08060E62: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end npc_obj_ministep_stop_on_arrival - thumb_func_start sub_8060E68 sub_8060E68: @ 8060E68 push {r4-r6,lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 07aba90e5..8b8ef78ea 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -83,6 +83,8 @@ extern const u8 gUnknown_08375767[4][4]; extern const struct Coords16 gDirectionToVector[]; +extern u8 (**const gUnknown_08375778[])(struct MapObject *, struct Sprite *); + extern struct CameraSomething gUnknown_03004880; extern s16 gUnknown_03004898; extern s16 gUnknown_0300489C; diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index daae74ae9..2481e143d 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -8,5 +8,6 @@ void UnfreezeMapObjects(void); void sub_806487C(struct Sprite *sprite, bool8 invisible); void sub_8064990(u8, u8); void UnfreezeMapObject(struct MapObject *mapObject); +void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 108f9cc20..ae5d65ce2 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4085,6 +4085,7 @@ int zffu_offset_calc(u8 a0, u8 a1) u8 state_to_direction(u8 a0, u8 a1, u8 a2) { int zffuOffset; + asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call.") if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) { return 0; @@ -4134,3 +4135,106 @@ _08060C18: .4byte gUnknown_08375767\n\ .syntax divided\n"); } #endif + +void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite)) + { + mapObject->mapobj_bit_7 = 1; + } +} + +bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite)) + { + mapObject->mapobj_unk_1C = 0xFF; + sprite->data2 = 0; + return 1; + } + return 0; +} + +void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId) +{ + mapObject->mapobj_unk_1C = animId; + sprite->data2 = 0; +} + +void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + FieldObjectSetDirection(mapObject, direction); + npc_coords_shift_still(mapObject); + sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); + sprite->animPaused = 1; + sprite->data2 = 1; +} + +u8 sub_8060CE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_SOUTH); + return 1; +} + +u8 sub_8060CF0(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_NORTH); + return 1; +} + +u8 sub_8060D00(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_WEST); + return 1; +} + +u8 sub_8060D10(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, DIR_EAST); + return 1; +} + +void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2) +{ + s16 x; + s16 y; + x = mapObject->coords2.x; + y = mapObject->coords2.y; + FieldObjectSetDirection(mapObject, direction); + MoveCoords(direction, &x, &y); + npc_coords_shift(mapObject, x, y); + oamt_npc_ministep_reset(sprite, direction, a2); + sprite->animPaused = 0; + mapObject->mapobj_bit_2 = 1; + sprite->data2 = 1; +} + +extern u8 (*const gUnknown_083759C0[5])(u8); + +void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2) +{ + u8 (*functions[5])(u8); + memcpy(functions, gUnknown_083759C0, sizeof(gUnknown_083759C0)); + sub_8060D20(mapObject, sprite, direction, a2); + sub_805FE28(mapObject, sprite, functions[a2](mapObject->mapobj_unk_18)); +} + +void do_run_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + sub_8060D20(mapObject, sprite, direction, 1); + sub_805FE28(mapObject, sprite, get_run_image_anim_num(mapObject->mapobj_unk_18)); +} + +bool8 obj_npc_ministep(struct Sprite *); + +bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (obj_npc_ministep(sprite)) + { + npc_coords_shift_still(mapObject); + mapObject->mapobj_bit_3 = 1; + sprite->animPaused = 1; + return 1; + } + return 0; +} -- cgit v1.2.3 From d60a59a62738c9c56119b607f6a875556723d0bb Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 19:21:07 -0400 Subject: Another chunk of functions with similar (and, in some cases, identical) decompilation --- asm/field_map_obj.s | 259 ---------------------------------------- include/field_map_obj_helpers.h | 2 + src/field_map_obj.c | 106 ++++++++++++++++ 3 files changed, 108 insertions(+), 259 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 167a5cd13..2eff32e9e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,265 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8060E68 -sub_8060E68: @ 8060E68 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - adds r6, r0, 0 - mov r8, r1 - lsls r5, r2, 24 - lsrs r5, 24 - ldrh r1, [r6, 0x10] - mov r0, sp - strh r1, [r0] - ldrh r0, [r6, 0x12] - mov r4, sp - adds r4, 0x2 - strh r0, [r4] - adds r0, r6, 0 - adds r1, r5, 0 - bl FieldObjectSetDirection - adds r0, r5, 0 - mov r1, sp - adds r2, r4, 0 - bl MoveCoords - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0 - ldrsh r2, [r4, r0] - adds r0, r6, 0 - bl npc_coords_shift - mov r0, r8 - adds r1, r5, 0 - bl sub_806467C - mov r2, r8 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r6] - movs r0, 0x1 - mov r1, r8 - strh r0, [r1, 0x32] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8060E68 - - thumb_func_start sub_8060ED8 -sub_8060ED8: @ 8060ED8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - bl sub_8060E68 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE28 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8060ED8 - - thumb_func_start an_walk_any_2 -an_walk_any_2: @ 8060F04 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r0, r5, 0 - bl sub_806468C - lsls r0, 24 - cmp r0, 0 - bne _08060F1A - movs r0, 0 - b _08060F36 -_08060F1A: - adds r0, r4, 0 - bl npc_coords_shift_still - ldrb r0, [r4] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r4] - adds r2, r5, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08060F36: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end an_walk_any_2 - - thumb_func_start sub_8060F3C -sub_8060F3C: @ 8060F3C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8060F5C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060F3C - - thumb_func_start sub_8060F5C -sub_8060F5C: @ 8060F5C - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08060F6E - movs r0, 0 - b _08060F74 -_08060F6E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08060F74: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060F5C - - thumb_func_start sub_8060F7C -sub_8060F7C: @ 8060F7C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8060F9C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060F7C - - thumb_func_start sub_8060F9C -sub_8060F9C: @ 8060F9C - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08060FAE - movs r0, 0 - b _08060FB4 -_08060FAE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08060FB4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060F9C - - thumb_func_start sub_8060FBC -sub_8060FBC: @ 8060FBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8060FDC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060FBC - - thumb_func_start sub_8060FDC -sub_8060FDC: @ 8060FDC - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08060FEE - movs r0, 0 - b _08060FF4 -_08060FEE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08060FF4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8060FDC - - thumb_func_start sub_8060FFC -sub_8060FFC: @ 8060FFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8060ED8 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806101C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8060FFC - - thumb_func_start sub_806101C -sub_806101C: @ 806101C - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _0806102E - movs r0, 0 - b _08061034 -_0806102E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061034: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806101C - thumb_func_start sub_806103C sub_806103C: @ 806103C push {r4,r5,lr} diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index 2481e143d..a61dcc63c 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -9,5 +9,7 @@ void sub_806487C(struct Sprite *sprite, bool8 invisible); void sub_8064990(u8, u8); void UnfreezeMapObject(struct MapObject *mapObject); void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); +void sub_806467C(struct Sprite *sprite, u8 direction); +bool8 sub_806468C(struct Sprite *sprite); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index ae5d65ce2..cb68b0140 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4238,3 +4238,109 @@ bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprit } return 0; } + +void sub_8060E68(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + s16 x; + s16 y; + x = mapObject->coords2.x; + y = mapObject->coords2.y; + FieldObjectSetDirection(mapObject, direction); + MoveCoords(direction, &x, &y); + npc_coords_shift(mapObject, x, y); + sub_806467C(sprite, direction); + sprite->animPaused = 0; + mapObject->mapobj_bit_2 = 1; + sprite->data2 = 1; +} + +void sub_8060ED8(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + sub_8060E68(mapObject, sprite, direction); + sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); +} + +bool8 an_walk_any_2(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_806468C(sprite)) + { + npc_coords_shift_still(mapObject); + mapObject->mapobj_bit_3 = 1; + sprite->animPaused = 1; + return TRUE; + } + return FALSE; +} + +bool8 sub_8060F5C(struct MapObject *, struct Sprite *); + +bool8 sub_8060F3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_SOUTH); + return sub_8060F5C(mapObject, sprite); +} + +bool8 sub_8060F5C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8060F9C(struct MapObject *, struct Sprite *); + +bool8 sub_8060F7C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_NORTH); + return sub_8060F9C(mapObject, sprite); +} + +bool8 sub_8060F9C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8060FDC(struct MapObject *, struct Sprite *); + +bool8 sub_8060FBC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_WEST); + return sub_8060FDC(mapObject, sprite); +} + +bool8 sub_8060FDC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806101C(struct MapObject *, struct Sprite *); + +bool8 sub_8060FFC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_EAST); + return sub_806101C(mapObject, sprite); +} + +bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + -- cgit v1.2.3 From 989316f66a7175ff8a25b10ceb9de51d6d0f7de7 Mon Sep 17 00:00:00 2001 From: scnorton Date: Tue, 23 May 2017 19:29:49 -0400 Subject: Yet another chunk of functions with similar (and, in some cases, identical) decompilation --- asm/field_map_obj.s | 152 ---------------------------------------------------- src/field_map_obj.c | 72 +++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 152 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 2eff32e9e..6051dc6e6 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,158 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_806103C -sub_806103C: @ 806103C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806105C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806103C - - thumb_func_start sub_806105C -sub_806105C: @ 806105C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806106E - movs r0, 0 - b _08061074 -_0806106E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061074: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806105C - - thumb_func_start sub_806107C -sub_806107C: @ 806107C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806109C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806107C - - thumb_func_start sub_806109C -sub_806109C: @ 806109C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080610AE - movs r0, 0 - b _080610B4 -_080610AE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080610B4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806109C - - thumb_func_start sub_80610BC -sub_80610BC: @ 80610BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80610DC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80610BC - - thumb_func_start sub_80610DC -sub_80610DC: @ 80610DC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080610EE - movs r0, 0 - b _080610F4 -_080610EE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080610F4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80610DC - - thumb_func_start sub_80610FC -sub_80610FC: @ 80610FC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806111C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80610FC - - thumb_func_start sub_806111C -sub_806111C: @ 806111C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806112E - movs r0, 0 - b _08061134 -_0806112E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061134: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806111C - thumb_func_start sub_806113C sub_806113C: @ 806113C push {r4-r7,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index cb68b0140..21dcb90bc 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4344,3 +4344,75 @@ bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite) return FALSE; } +bool8 sub_806105C(struct MapObject *, struct Sprite *); + +bool8 sub_806103C(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_SOUTH, 0); + return sub_806105C(mapObject, sprite); +} + +bool8 sub_806105C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806109C(struct MapObject *, struct Sprite *); + +bool8 sub_806107C(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_NORTH, 0); + return sub_806109C(mapObject, sprite); +} + +bool8 sub_806109C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80610DC(struct MapObject *, struct Sprite *); + +bool8 sub_80610BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_WEST, 0); + return sub_80610DC(mapObject, sprite); +} + +bool8 sub_80610DC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806111C(struct MapObject *, struct Sprite *); + +bool8 sub_80610FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_EAST, 0); + return sub_806111C(mapObject, sprite); +} + +bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + -- cgit v1.2.3 From 4fe02ea081863fcdc6022ca8e608875265645326 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Tue, 23 May 2017 20:38:42 -0400 Subject: Fix building --- .gitignore | 4 ++-- .idea/codeStyleSettings.xml | 35 ----------------------------------- include/field_map_obj.h | 4 ++-- 3 files changed, 4 insertions(+), 39 deletions(-) delete mode 100755 .idea/codeStyleSettings.xml diff --git a/.gitignore b/.gitignore index 5b70a4586..f5c95dbc1 100644 --- a/.gitignore +++ b/.gitignore @@ -35,5 +35,5 @@ types_*.taghl *.dump *.sa* Thumbs.db -build/* -.idea/codeStyleSettings.xml +build/ +.idea/ diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml deleted file mode 100755 index dee6609ca..000000000 --- a/.idea/codeStyleSettings.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 8b8ef78ea..2bd875f17 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -86,7 +86,7 @@ extern const struct Coords16 gDirectionToVector[]; extern u8 (**const gUnknown_08375778[])(struct MapObject *, struct Sprite *); extern struct CameraSomething gUnknown_03004880; -extern s16 gUnknown_03004898; -extern s16 gUnknown_0300489C; +extern u16 gUnknown_03004898; +extern u16 gUnknown_0300489C; #endif // GUARD_FIELD_MAP_OBJ_H -- cgit v1.2.3 From 4a352535b994fa3c277d5c64e7f6ece4d5e94b5f Mon Sep 17 00:00:00 2001 From: yenatch Date: Tue, 23 May 2017 22:32:52 -0400 Subject: Fix ld warnings for undeclared externs. --- src/field_map_obj.c | 54 ++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 21dcb90bc..8c85e7b6d 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3709,7 +3709,7 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback } -const u8 gUnknown_083756C8[5]; +extern const u8 gUnknown_083756C8[5]; u8 GetFaceDirectionAnimId(u8 index) { @@ -3722,7 +3722,7 @@ u8 GetFaceDirectionAnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756CD[5]; +extern const u8 gUnknown_083756CD[5]; u8 GetSimpleGoAnimId(u8 index) { @@ -3735,7 +3735,7 @@ u8 GetSimpleGoAnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756D2[5]; +extern const u8 gUnknown_083756D2[5]; u8 GetGoSpeed0AnimId(u8 index) { @@ -3748,7 +3748,7 @@ u8 GetGoSpeed0AnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756D7[5]; +extern const u8 gUnknown_083756D7[5]; u8 sub_8060744(u8 index) { @@ -3761,7 +3761,7 @@ u8 sub_8060744(u8 index) return directions[index]; } -const u8 gUnknown_083756DC[5]; +extern const u8 gUnknown_083756DC[5]; u8 d2s_08064034(u8 index) { @@ -3774,7 +3774,7 @@ u8 d2s_08064034(u8 index) return directions[index]; } -const u8 gUnknown_083756E1[5]; +extern const u8 gUnknown_083756E1[5]; u8 sub_806079C(u8 index) { @@ -3787,7 +3787,7 @@ u8 sub_806079C(u8 index) return directions[index]; } -const u8 gUnknown_083756E6[5]; +extern const u8 gUnknown_083756E6[5]; u8 sub_80607C8(u8 index) { @@ -3800,7 +3800,7 @@ u8 sub_80607C8(u8 index) return directions[index]; } -const u8 gUnknown_083756EB[5]; +extern const u8 gUnknown_083756EB[5]; u8 sub_80607F4(u8 index) { @@ -3813,7 +3813,7 @@ u8 sub_80607F4(u8 index) return directions[index]; } -const u8 gUnknown_083756F0[5]; +extern const u8 gUnknown_083756F0[5]; u8 GetJumpLedgeAnimId(u8 index) { @@ -3826,7 +3826,7 @@ u8 GetJumpLedgeAnimId(u8 index) return directions[index]; } -const u8 gUnknown_083756F5[5]; +extern const u8 gUnknown_083756F5[5]; u8 sub_806084C(u8 index) { @@ -3839,7 +3839,7 @@ u8 sub_806084C(u8 index) return directions[index]; } -const u8 gUnknown_083756FA[5]; +extern const u8 gUnknown_083756FA[5]; u8 sub_8060878(u8 index) { @@ -3852,7 +3852,7 @@ u8 sub_8060878(u8 index) return directions[index]; } -const u8 gUnknown_083756FF[5]; +extern const u8 gUnknown_083756FF[5]; u8 sub_80608A4(u8 index) { @@ -3865,7 +3865,7 @@ u8 sub_80608A4(u8 index) return directions[index]; } -const u8 gUnknown_08375704[5]; +extern const u8 gUnknown_08375704[5]; u8 sub_80608D0(u8 index) { @@ -3878,7 +3878,7 @@ u8 sub_80608D0(u8 index) return directions[index]; } -const u8 gUnknown_08375709[5]; +extern const u8 gUnknown_08375709[5]; u8 GetStepInPlaceDelay32AnimId(u8 index) { @@ -3891,7 +3891,7 @@ u8 GetStepInPlaceDelay32AnimId(u8 index) return directions[index]; } -const u8 gUnknown_0837570E[5]; +extern const u8 gUnknown_0837570E[5]; u8 GetStepInPlaceDelay16AnimId(u8 index) { @@ -3904,7 +3904,7 @@ u8 GetStepInPlaceDelay16AnimId(u8 index) return directions[index]; } -const u8 gUnknown_08375713[5]; +extern const u8 gUnknown_08375713[5]; u8 GetStepInPlaceDelay8AnimId(u8 index) { @@ -3917,7 +3917,7 @@ u8 GetStepInPlaceDelay8AnimId(u8 index) return directions[index]; } -const u8 gUnknown_08375718[5]; +extern const u8 gUnknown_08375718[5]; u8 GetStepInPlaceDelay4AnimId(u8 index) { @@ -3935,7 +3935,7 @@ u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction) return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction))); } -const u8 gUnknown_0837571D[5]; +extern const u8 gUnknown_0837571D[5]; u8 sub_80609D8(u8 index) { @@ -3948,7 +3948,7 @@ u8 sub_80609D8(u8 index) return directions[index]; } -const u8 gUnknown_08375722[5]; +extern const u8 gUnknown_08375722[5]; u8 sub_8060A04(u8 index) { @@ -3961,7 +3961,7 @@ u8 sub_8060A04(u8 index) return directions[index]; } -const u8 gUnknown_08375727[5]; +extern const u8 gUnknown_08375727[5]; u8 sub_8060A30(u8 index) { @@ -3974,7 +3974,7 @@ u8 sub_8060A30(u8 index) return directions[index]; } -const u8 gUnknown_0837572C[5]; +extern const u8 gUnknown_0837572C[5]; u8 sub_8060A5C(u8 index) { @@ -3987,7 +3987,7 @@ u8 sub_8060A5C(u8 index) return directions[index]; } -const u8 gUnknown_08375731[5]; +extern const u8 gUnknown_08375731[5]; u8 sub_8060A88(u8 index) { @@ -4000,7 +4000,7 @@ u8 sub_8060A88(u8 index) return directions[index]; } -const u8 gUnknown_08375736[5]; +extern const u8 gUnknown_08375736[5]; u8 sub_8060AB4(u8 index) { @@ -4013,7 +4013,7 @@ u8 sub_8060AB4(u8 index) return directions[index]; } -const u8 gUnknown_0837573B[5]; +extern const u8 gUnknown_0837573B[5]; u8 sub_8060AE0(u8 index) { @@ -4026,7 +4026,7 @@ u8 sub_8060AE0(u8 index) return directions[index]; } -const u8 gUnknown_08375740[5]; +extern const u8 gUnknown_08375740[5]; u8 sub_8060B0C(u8 index) { @@ -4039,7 +4039,7 @@ u8 sub_8060B0C(u8 index) return directions[index]; } -const u8 gUnknown_08375745[5]; +extern const u8 gUnknown_08375745[5]; u8 sub_8060B38(u8 index) { @@ -4052,7 +4052,7 @@ u8 sub_8060B38(u8 index) return directions[index]; } -const u8 gUnknown_0837574A[5]; +extern const u8 gUnknown_0837574A[5]; u8 sub_8060B64(u8 index) { -- cgit v1.2.3 From 5b525b279413b08bc5841255d390f6e95187d787 Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 22:17:31 +0200 Subject: Identify gUnknown_3001764 --- common_syms/main.txt | 2 +- include/main.h | 2 +- src/link.c | 2 +- src/main.c | 14 +++++++------- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/common_syms/main.txt b/common_syms/main.txt index 1e9013411..a620083d1 100644 --- a/common_syms/main.txt +++ b/common_syms/main.txt @@ -1,5 +1,5 @@ gKeyRepeatStartDelay -gUnknown_3001764 +gLinkTransferringData gMain gKeyRepeatContinueDelay gSoftResetDisabled diff --git a/include/main.h b/include/main.h index aef55a182..e0cb09370 100644 --- a/include/main.h +++ b/include/main.h @@ -43,7 +43,7 @@ struct Main /*0x43D*/ u8 inBattle:1; }; -extern u8 gUnknown_3001764; +extern u8 gLinkTransferringData; extern struct Main gMain; extern bool8 gSoftResetDisabled; extern bool8 gLinkVSyncDisabled; diff --git a/src/link.c b/src/link.c index 7cf2fc611..17e78e0a5 100644 --- a/src/link.c +++ b/src/link.c @@ -642,7 +642,7 @@ static void BuildSendCmd(u16 code) gSendCmd[0] = 0x5FFF; break; case 0xCAFE: - if (!word_3004858 || gUnknown_3001764) + if (!word_3004858 || gLinkTransferringData) break; gSendCmd[0] = 0xCAFE; gSendCmd[1] = word_3004858; diff --git a/src/main.c b/src/main.c index 114fc171f..37db02174 100644 --- a/src/main.c +++ b/src/main.c @@ -60,7 +60,7 @@ const IntrFunc gIntrTableTemplate[] = #define INTR_COUNT ((int)(sizeof(gIntrTableTemplate)/sizeof(IntrFunc))) u16 gKeyRepeatStartDelay; -u8 gUnknown_3001764; +bool8 gLinkTransferringData; struct Main gMain; u16 gKeyRepeatContinueDelay; u8 gSoftResetDisabled; @@ -99,7 +99,7 @@ void AgbMain() if (gFlashMemoryPresent != TRUE) SetMainCallback2(NULL); - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; for (;;) { @@ -112,13 +112,13 @@ void AgbMain() if (gLink.sendQueue.count > 1 && sub_8055910() == 1) { - gUnknown_3001764 = 1; + gLinkTransferringData = TRUE; UpdateLinkAndCallCallbacks(); - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; } else { - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; UpdateLinkAndCallCallbacks(); if (gLink.recvQueue.count > 1) @@ -126,9 +126,9 @@ void AgbMain() if (sub_80558AC() == 1) { gMain.newKeys = 0; - gUnknown_3001764 = 1; + gLinkTransferringData = TRUE; UpdateLinkAndCallCallbacks(); - gUnknown_3001764 = 0; + gLinkTransferringData = FALSE; } } } -- cgit v1.2.3 From fe2090c222eab31db62c9d599e6e95f6898c8ebc Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 23:40:08 +0200 Subject: Various intro naming --- include/intro.h | 4 ++-- src/intro.c | 20 ++++++++++---------- src/main.c | 2 +- src/title_screen.c | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/include/intro.h b/include/intro.h index 7fdbd9cb0..6d4d2daf3 100644 --- a/include/intro.h +++ b/include/intro.h @@ -1,8 +1,8 @@ #ifndef GUARD_INTRO_H #define GUARD_INTRO_H -void c2_copyright_1(void); -void CB2_InitCopyrightScreen(void); +void CB2_InitCopyrightScreenAfterBootup(void); +void CB2_InitCopyrightScreenAfterTitleScreen(void); void sub_813CE30(u16, u16, u16, u16); #endif // GUARD_INTRO_H diff --git a/src/intro.c b/src/intro.c index 3f4897092..ba2197ae7 100644 --- a/src/intro.c +++ b/src/intro.c @@ -838,14 +838,14 @@ static void MainCB2_EndIntro(void) SetMainCallback2(CB2_InitTitleScreen); } -static void LoadCopyrightGraphics(u16 a1, u16 a2, u16 a3) +static void LoadCopyrightGraphics(u16 tilesetAddress, u16 tilemapAddress, u16 paletteAddress) { - LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + a1)); - LoadPalette(gIntroCopyright_Pal, a3, 0x20); - CpuCopy16(gIntroCopyright_Tilemap, (void *)(VRAM + a2), 0x500); + LZ77UnCompVram(gIntroCopyright_Gfx, (void *)(VRAM + tilesetAddress)); + LoadPalette(gIntroCopyright_Pal, paletteAddress, 0x20); + CpuCopy16(gIntroCopyright_Tilemap, (void *)(VRAM + tilemapAddress), 0x500); } -static void SerialCb_CopyrightScreen(void) +static void SerialCB_CopyrightScreen(void) { GameCubeMultiBoot_HandleSerialInterrupt(&gMultibootProgramStruct); } @@ -869,7 +869,7 @@ static u8 SetUpCopyrightScreen(void) DmaFill32(3, 0, (void *)OAM, OAM_SIZE); DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2); ResetPaletteFade(); - LoadCopyrightGraphics(0, 14336, 0); + LoadCopyrightGraphics(0, 0x3800, 0); remove_some_task(); ResetTasks(); ResetSpriteData(); @@ -887,7 +887,7 @@ static u8 SetUpCopyrightScreen(void) REG_DISPSTAT |= DISPSTAT_VBLANK_INTR; SetVBlankCallback(VBlankCB_Intro); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; - SetSerialCallback(SerialCb_CopyrightScreen); + SetSerialCallback(SerialCB_CopyrightScreen); GameCubeMultiBoot_Init(&gMultibootProgramStruct); default: UpdatePaletteFade(); @@ -898,7 +898,7 @@ static u8 SetUpCopyrightScreen(void) GameCubeMultiBoot_Main(&gMultibootProgramStruct); if (gMultibootProgramStruct.gcmb_field_2 != 1) { - BeginNormalPaletteFade(0xFFFFFFFFu, 0, 0, 0x10, 0); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0); gMain.state++; } break; @@ -922,7 +922,7 @@ static u8 SetUpCopyrightScreen(void) return 1; } -void c2_copyright_1(void) +void CB2_InitCopyrightScreenAfterBootup(void) { if (!SetUpCopyrightScreen()) { @@ -935,7 +935,7 @@ void c2_copyright_1(void) } } -void CB2_InitCopyrightScreen(void) +void CB2_InitCopyrightScreenAfterTitleScreen(void) { SetUpCopyrightScreen(); } diff --git a/src/main.c b/src/main.c index 37db02174..19891459c 100644 --- a/src/main.c +++ b/src/main.c @@ -152,7 +152,7 @@ static void InitMainCallbacks(void) gMain.vblankCounter1 = 0; gMain.vblankCounter2 = 0; gMain.callback1 = NULL; - SetMainCallback2(c2_copyright_1); + SetMainCallback2(CB2_InitCopyrightScreenAfterBootup); } static void CallCallbacks(void) diff --git a/src/title_screen.c b/src/title_screen.c index dd6a858f6..241e5489e 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -709,7 +709,7 @@ static void CB2_GoToMainMenu(void) static void CB2_GoToCopyrightScreen(void) { if (!UpdatePaletteFade()) - SetMainCallback2(CB2_InitCopyrightScreen); + SetMainCallback2(CB2_InitCopyrightScreenAfterTitleScreen); } static void CB2_GoToClearSaveDataScreen(void) -- cgit v1.2.3 From 465825382017814f28495a8c4bb385c00436087a Mon Sep 17 00:00:00 2001 From: NieDzejkob Date: Sun, 21 May 2017 23:44:49 +0200 Subject: name InitBattle --- src/battle_2.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/battle_2.c b/src/battle_2.c index 6bcccbaf9..e5091bd08 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -293,7 +293,7 @@ extern u8 sub_80170DC(); extern u8 ItemId_GetHoldEffect(u16); extern void sub_8094C98(); -void sub_800E7F8(void); +void InitBattle(void); void sub_800EC9C(void); void sub_800F104(void); void sub_800F298(void); @@ -347,11 +347,11 @@ void sub_800E7C4(void) } else { - sub_800E7F8(); + InitBattle(); } } -void sub_800E7F8(void) +void InitBattle(void) { s32 i; @@ -767,7 +767,7 @@ void sub_800F104(void) { gBattleTypeFlags = *pSavedBattleTypeFlags; gMain.savedCallback = *pSavedCallback; - SetMainCallback2(sub_800E7F8); + SetMainCallback2(InitBattle); } break; } -- cgit v1.2.3 From 6bfb9af365db91947ee65ceaa15ad0c2dba4147d Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 24 May 2017 15:59:43 -0400 Subject: sub_806113C --- asm/field_map_obj.s | 93 ----------------------------------------- include/field_map_obj_helpers.h | 1 + src/field_map_obj.c | 19 +++++++++ 3 files changed, 20 insertions(+), 93 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 6051dc6e6..8aacd3c11 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,99 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_806113C -sub_806113C: @ 806113C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r7, r0, 0 - mov r10, r1 - adds r4, r2, 0 - mov r8, r3 - ldr r0, [sp, 0x30] - lsls r4, 24 - lsrs r4, 24 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080611F4 @ =gUnknown_08375A34 - add r0, sp, 0x4 - movs r2, 0x6 - bl memcpy - add r5, sp, 0xC - movs r0, 0 - strh r0, [r5] - mov r6, sp - adds r6, 0xE - strh r0, [r6] - adds r0, r7, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - mov r1, r8 - lsls r0, r1, 1 - add r0, sp - adds r0, 0x4 - movs r1, 0 - ldrsh r3, [r0, r1] - str r3, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - adds r2, r6, 0 - bl sub_8060320 - ldrh r1, [r5] - ldrh r0, [r7, 0x10] - adds r1, r0 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r6] - ldrh r0, [r7, 0x12] - adds r2, r0 - lsls r2, 16 - asrs r2, 16 - adds r0, r7, 0 - bl npc_coords_shift - mov r0, r10 - adds r1, r4, 0 - mov r2, r8 - mov r3, r9 - bl sub_80646E4 - movs r0, 0x1 - mov r1, r10 - strh r0, [r1, 0x32] - movs r0, 0x2C - add r10, r0 - mov r0, r10 - ldrb r1, [r0] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - mov r1, r10 - strb r0, [r1] - ldrb r0, [r7] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r7] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080611F4: .4byte gUnknown_08375A34 - thumb_func_end sub_806113C - thumb_func_start maybe_shadow_1 maybe_shadow_1: @ 80611F8 push {r4,r5,lr} diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index a61dcc63c..f8554587c 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -11,5 +11,6 @@ void UnfreezeMapObject(struct MapObject *mapObject); void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); void sub_806467C(struct Sprite *sprite, u8 direction); bool8 sub_806468C(struct Sprite *sprite); +void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 8c85e7b6d..7e245410c 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4416,3 +4416,22 @@ bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite) return FALSE; } +extern const s16 gUnknown_08375A34[3]; + +void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5) +{ + s16 vSPp4[3]; + s16 x; + s16 y; + memcpy(vSPp4, gUnknown_08375A34, sizeof gUnknown_08375A34); + x = 0; + y = 0; + FieldObjectSetDirection(mapObject, direction); + sub_8060320(direction, &x, &y, vSPp4[a4], vSPp4[a4]); + npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y); + sub_80646E4(sprite, direction, a4, a5); + sprite->data2 = 1; + sprite->animPaused = 0; + mapObject->mapobj_bit_2 = 1; + mapObject->mapobj_bit_4 = 1; +} -- cgit v1.2.3 From 3a1e42f8f1929d5c74ee931de511d7f481db9756 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 24 May 2017 16:12:44 -0400 Subject: maybe_shadow_1 --- asm/field_map_obj.s | 32 -------------------------------- include/field_map_obj_helpers.h | 1 + src/field_map_obj.c | 7 +++++++ 3 files changed, 8 insertions(+), 32 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 8aacd3c11..ba2d04c4c 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1354,38 +1354,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 thumb_func_start maybe_shadow_1 -maybe_shadow_1: @ 80611F8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, [sp, 0x10] - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - adds r0, r4, 0 - bl sub_806113C - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE28 - adds r0, r4, 0 - bl DoShadowFieldEffect - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end maybe_shadow_1 thumb_func_start sub_806123C sub_806123C: @ 806123C diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index f8554587c..0280dc502 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -12,5 +12,6 @@ void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3); void sub_806467C(struct Sprite *sprite, u8 direction); bool8 sub_806468C(struct Sprite *sprite); void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4); +void DoShadowFieldEffect(struct MapObject *mapObject); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 7e245410c..f8fd87c64 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4435,3 +4435,10 @@ void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 directio mapObject->mapobj_bit_2 = 1; mapObject->mapobj_bit_4 = 1; } + +void maybe_shadow_1(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5) +{ + sub_806113C(mapObject, sprite, direction, a4, a5); + sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); + DoShadowFieldEffect(mapObject); +} -- cgit v1.2.3 From 7f47c3b8eeece77252c0564c4677e8432caf33ed Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 24 May 2017 16:48:48 -0400 Subject: sub_806123C --- asm/field_map_obj.s | 99 ----------------------------------------------------- src/field_map_obj.c | 27 +++++++++++++++ 2 files changed, 27 insertions(+), 99 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ba2d04c4c..65a0db86e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,105 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start maybe_shadow_1 - - thumb_func_start sub_806123C -sub_806123C: @ 806123C - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x10 - adds r6, r0, 0 - adds r7, r1, 0 - adds r4, r2, 0 - ldr r1, _080612C8 @ =gUnknown_08375A3A - add r0, sp, 0x4 - movs r2, 0x6 - bl memcpy - adds r0, r7, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - cmp r0, 0x1 - bne _080612CC - movs r1, 0x36 - ldrsh r0, [r7, r1] - lsls r0, 1 - add r0, sp - adds r0, 0x4 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - beq _080612CC - add r4, sp, 0xC - movs r0, 0 - strh r0, [r4] - mov r5, sp - adds r5, 0xE - strh r0, [r5] - ldrb r0, [r6, 0x18] - lsrs r0, 4 - movs r2, 0x36 - ldrsh r1, [r7, r2] - lsls r1, 1 - add r1, sp - adds r1, 0x4 - movs r2, 0 - ldrsh r3, [r1, r2] - str r3, [sp] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_8060320 - ldrh r1, [r4] - ldrh r0, [r6, 0x10] - adds r1, r0 - lsls r1, 16 - asrs r1, 16 - ldrh r2, [r5] - ldrh r0, [r6, 0x12] - adds r2, r0 - lsls r2, 16 - asrs r2, 16 - adds r0, r6, 0 - bl npc_coords_shift - ldrb r0, [r6] - movs r1, 0x4 - orrs r0, r1 - movs r1, 0x10 - orrs r0, r1 - strb r0, [r6] - b _080612F0 - .align 2, 0 -_080612C8: .4byte gUnknown_08375A3A -_080612CC: - mov r1, r8 - cmp r1, 0xFF - bne _080612F0 - adds r0, r6, 0 - bl npc_coords_shift_still - ldrb r0, [r6] - movs r1, 0x8 - orrs r0, r1 - movs r1, 0x20 - orrs r0, r1 - strb r0, [r6] - adds r2, r7, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] -_080612F0: - mov r0, r8 - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_806123C - thumb_func_start sub_8061300 sub_8061300: @ 8061300 push {lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f8fd87c64..65ef99b3b 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4417,6 +4417,7 @@ bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite) } extern const s16 gUnknown_08375A34[3]; +extern const s16 gUnknown_08375A3A[3]; void sub_806113C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a4, u8 a5) { @@ -4442,3 +4443,29 @@ void maybe_shadow_1(struct MapObject *mapObject, struct Sprite *sprite, u8 direc sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); DoShadowFieldEffect(mapObject); } + +u8 sub_806123C(struct MapObject *mapObject, struct Sprite *sprite, u8 (*const callback)(struct Sprite *)) +{ + s16 vSPp4[3]; + s16 x; + s16 y; + u8 retval; + memcpy(vSPp4, gUnknown_08375A3A, sizeof gUnknown_08375A3A); + retval = callback(sprite); + if (retval == 1 && vSPp4[sprite->data4] != 0) + { + x = 0; + y = 0; + sub_8060320(mapObject->placeholder18, &x, &y, vSPp4[sprite->data4], vSPp4[sprite->data4]); + npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y); + mapObject->mapobj_bit_2 = 1; + mapObject->mapobj_bit_4 = 1; + } else if (retval == 0xff) + { + npc_coords_shift_still(mapObject); + mapObject->mapobj_bit_3 = 1; + mapObject->mapobj_bit_5 = 1; + sprite->animPaused = 1; + } + return retval; +} -- cgit v1.2.3 From 0cb48e9bb08b4efd157748d7e2446c12450b9b46 Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 24 May 2017 17:10:40 -0400 Subject: A couple more functions in FMO --- asm/field_map_obj.s | 150 ---------------------------------------- include/field_map_obj_helpers.h | 2 + src/field_map_obj.c | 65 +++++++++++++++++ 3 files changed, 67 insertions(+), 150 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 65a0db86e..73b0ec9dd 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,156 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8061300 -sub_8061300: @ 8061300 - push {lr} - ldr r2, _08061310 @ =sub_8064704 - bl sub_806123C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08061310: .4byte sub_8064704 - thumb_func_end sub_8061300 - - thumb_func_start sub_8061314 -sub_8061314: @ 8061314 - push {lr} - ldr r2, _08061324 @ =sub_806478C - bl sub_806123C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_08061324: .4byte sub_806478C - thumb_func_end sub_8061314 - - thumb_func_start sub_8061328 -sub_8061328: @ 8061328 - push {lr} - bl sub_8061300 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _0806133A - movs r0, 0 - b _0806133C -_0806133A: - movs r0, 0x1 -_0806133C: - pop {r1} - bx r1 - thumb_func_end sub_8061328 - - thumb_func_start sub_8061340 -sub_8061340: @ 8061340 - push {lr} - bl sub_8061314 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - beq _08061352 - movs r0, 0 - b _08061354 -_08061352: - movs r0, 0x1 -_08061354: - pop {r1} - bx r1 - thumb_func_end sub_8061340 - - thumb_func_start sub_8061358 -sub_8061358: @ 8061358 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061300 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08061372 - cmp r0, 0xFF - bne _0806139E - movs r0, 0x1 - b _080613A0 -_08061372: - ldrb r0, [r4, 0x18] - lsrs r0, 4 - bl GetOppositeDirection - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl FieldObjectSetDirection - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl get_go_image_anim_num - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE64 -_0806139E: - movs r0, 0 -_080613A0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061358 - - thumb_func_start sub_80613A8 -sub_80613A8: @ 80613A8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80613D4 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80613A8 - - thumb_func_start sub_80613D4 -sub_80613D4: @ 80613D4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _080613E8 - movs r0, 0 - b _080613F8 -_080613E8: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080613F8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80613D4 - thumb_func_start sub_8061400 sub_8061400: @ 8061400 push {r4,r5,lr} diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index 0280dc502..119cdd5f8 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -13,5 +13,7 @@ void sub_806467C(struct Sprite *sprite, u8 direction); bool8 sub_806468C(struct Sprite *sprite); void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4); void DoShadowFieldEffect(struct MapObject *mapObject); +u8 sub_8064704(struct Sprite *); +u8 sub_806478C(struct Sprite *); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 65ef99b3b..eedb74033 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4469,3 +4469,68 @@ u8 sub_806123C(struct MapObject *mapObject, struct Sprite *sprite, u8 (*const ca } return retval; } + +u8 sub_8061300(struct MapObject *mapObject, struct Sprite *sprite) +{ + return sub_806123C(mapObject, sprite, sub_8064704); +} + +u8 sub_8061314(struct MapObject *mapObject, struct Sprite *sprite) +{ + return sub_806123C(mapObject, sprite, sub_806478C); +} + +bool8 sub_8061328(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061300(mapObject, sprite) == 0xFF) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_8061340(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061314(mapObject, sprite) == 0xFF) + { + return TRUE; + } + return FALSE; +} + +bool8 sub_8061358(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 retval; + + retval = sub_8061300(mapObject, sprite); + if (retval != 1) + { + if (retval == 0xFF) + { + return TRUE; + } + return FALSE; + } + FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18)); + sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18)); + return FALSE; +} + +bool8 sub_80613D4(struct MapObject *, struct Sprite *); + +bool8 sub_80613A8(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 2, 0); + return sub_80613D4(mapObject, sprite); +} + +bool8 sub_80613D4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 82ad1f63c4b0516e2c8e0975c8bfd750480b9e3d Mon Sep 17 00:00:00 2001 From: scnorton Date: Wed, 24 May 2017 17:26:58 -0400 Subject: FMO under 6k lines --- asm/field_map_obj.s | 265 ---------------------------------------------------- src/field_map_obj.c | 101 ++++++++++++++++++++ 2 files changed, 101 insertions(+), 265 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 73b0ec9dd..b5a30d4e5 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -1353,271 +1353,6 @@ sub_805FD08: @ 805FD08 .section .text_805fd18 - thumb_func_start sub_8061400 -sub_8061400: @ 8061400 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806142C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061400 - - thumb_func_start sub_806142C -sub_806142C: @ 806142C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08061440 - movs r0, 0 - b _08061450 -_08061440: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08061450: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806142C - - thumb_func_start sub_8061458 -sub_8061458: @ 8061458 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061484 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061458 - - thumb_func_start sub_8061484 -sub_8061484: @ 8061484 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08061498 - movs r0, 0 - b _080614A8 -_08061498: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080614A8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061484 - - thumb_func_start sub_80614B0 -sub_80614B0: @ 80614B0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x2 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80614DC - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80614B0 - - thumb_func_start sub_80614DC -sub_80614DC: @ 80614DC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _080614F0 - movs r0, 0 - b _08061500 -_080614F0: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08061500: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80614DC - - thumb_func_start sub_8061508 -sub_8061508: @ 8061508 - movs r2, 0x1 - strh r2, [r0, 0x32] - strh r1, [r0, 0x34] - bx lr - thumb_func_end sub_8061508 - - thumb_func_start sub_8061510 -sub_8061510: @ 8061510 - push {lr} - ldrh r0, [r1, 0x34] - subs r0, 0x1 - strh r0, [r1, 0x34] - lsls r0, 16 - cmp r0, 0 - beq _08061522 - movs r0, 0 - b _08061528 -_08061522: - movs r0, 0x2 - strh r0, [r1, 0x32] - movs r0, 0x1 -_08061528: - pop {r1} - bx r1 - thumb_func_end sub_8061510 - - thumb_func_start sub_806152C -sub_806152C: @ 806152C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8061508 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8061510 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806152C - - thumb_func_start sub_806154C -sub_806154C: @ 806154C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x2 - bl sub_8061508 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8061510 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806154C - - thumb_func_start sub_806156C -sub_806156C: @ 806156C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x4 - bl sub_8061508 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8061510 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806156C - - thumb_func_start sub_806158C -sub_806158C: @ 806158C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x8 - bl sub_8061508 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8061510 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806158C - - thumb_func_start sub_80615AC -sub_80615AC: @ 80615AC - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x10 - bl sub_8061508 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8061510 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80615AC - thumb_func_start sub_80615CC sub_80615CC: @ 80615CC push {r4,r5,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index eedb74033..ddf76fef6 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4517,6 +4517,9 @@ bool8 sub_8061358(struct MapObject *mapObject, struct Sprite *sprite) } bool8 sub_80613D4(struct MapObject *, struct Sprite *); +bool8 sub_806142C(struct MapObject *, struct Sprite *); +bool8 sub_8061484(struct MapObject *, struct Sprite *); +bool8 sub_80614DC(struct MapObject *, struct Sprite *); bool8 sub_80613A8(struct MapObject *mapObject, struct Sprite *sprite) { @@ -4534,3 +4537,101 @@ bool8 sub_80613D4(struct MapObject *mapObject, struct Sprite *sprite) } return FALSE; } + +bool8 sub_8061400(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_NORTH, 2, 0); + return sub_806142C(mapObject, sprite); +} + +bool8 sub_806142C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061458(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_WEST, 2, 0); + return sub_8061484(mapObject, sprite); +} + +bool8 sub_8061484(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80614B0(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_EAST, 2, 0); + return sub_80614DC(mapObject, sprite); +} + +bool8 sub_80614DC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +void sub_8061508(struct Sprite *sprite, u16 duration) +{ + sprite->data2 = 1; + sprite->data3 = duration; +} + +bool8 sub_8061510(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data3--; + if (!sprite->data3) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806152C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061508(sprite, 1); + return sub_8061510(mapObject, sprite); +} + +bool8 sub_806154C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061508(sprite, 2); + return sub_8061510(mapObject, sprite); +} + +bool8 sub_806156C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061508(sprite, 4); + return sub_8061510(mapObject, sprite); +} + +bool8 sub_806158C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061508(sprite, 8); + return sub_8061510(mapObject, sprite); +} + +bool8 sub_80615AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061508(sprite, 16); + return sub_8061510(mapObject, sprite); +} -- cgit v1.2.3 From f86f229017d6e03f211b623139d357680db5ceeb Mon Sep 17 00:00:00 2001 From: yenatch Date: Thu, 25 May 2017 00:10:51 -0400 Subject: Update the agbcc repo link for travis. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ca2b5a12a..16d9cfa50 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ install: - cd $HOME - travis_retry wget http://download.sourceforge.net/devkitpro/devkitARM_r46-x86_64-linux.tar.bz2 - tar xf devkitARM*.tar.bz2 - - travis_retry git clone https://github.com/YamaArashi/agbcc.git + - travis_retry git clone https://github.com/pret/agbcc.git - cd agbcc && ./build.sh && ./install.sh $TRAVIS_BUILD_DIR script: - cd $TRAVIS_BUILD_DIR -- cgit v1.2.3 From 4e3874a3febde4ba5f8c247004b4f84bf098bc9c Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Wed, 24 May 2017 20:19:30 -0400 Subject: Swiss cheese to put off these functions for later --- asm/field_map_obj.s | 136 ++---------------------------------------- include/field_map_obj.h | 1 + include/field_player_avatar.h | 2 +- ld_script.txt | 2 + src/field_map_obj.c | 78 ++++++++++++++++++++++-- 5 files changed, 82 insertions(+), 137 deletions(-) mode change 100644 => 100755 include/field_player_avatar.h diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index b5a30d4e5..77d9ca052 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,138 +6,7 @@ .text - thumb_func_start sub_805F2FC -sub_805F2FC: @ 805F2FC - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F318 @ =gMapObjects - adds r0, r2 - ldr r2, _0805F31C @ =sub_805F320 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F318: .4byte gMapObjects -_0805F31C: .4byte sub_805F320 - thumb_func_end sub_805F2FC - - thumb_func_start sub_805F320 -sub_805F320: @ 805F320 - push {r4,lr} - ldr r3, _0805F33C @ =gUnknown_08375588 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F33C: .4byte gUnknown_08375588 - thumb_func_end sub_805F320 - - thumb_func_start mss_npc_reset_oampriv3_1_unk2_unk3 -mss_npc_reset_oampriv3_1_unk2_unk3: @ 805F340 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - adds r4, 0x21 - ldrb r0, [r4] - cmp r0, 0 - bne _0805F358 - bl player_get_direction_lower_nybble - strb r0, [r4] -_0805F358: - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end mss_npc_reset_oampriv3_1_unk2_unk3 - - thumb_func_start sub_805F364 -sub_805F364: @ 805F364 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - ldr r2, _0805F388 @ =gMapObjects - ldr r3, _0805F38C @ =gPlayerAvatar - ldrb r1, [r3, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1C] - cmp r0, 0xFF - beq _0805F384 - ldrb r0, [r3, 0x3] - cmp r0, 0x2 - bne _0805F390 -_0805F384: - movs r0, 0 - b _0805F3B8 - .align 2, 0 -_0805F388: .4byte gMapObjects -_0805F38C: .4byte gPlayerAvatar -_0805F390: - ldr r5, _0805F3C0 @ =gUnknown_08375594 - bl player_get_x22 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 22 - adds r4, r5 - bl player_get_direction_upper_nybble - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r4, [r4] - adds r0, r6, 0 - adds r1, r7, 0 - movs r3, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_0805F3B8: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F3C0: .4byte gUnknown_08375594 - thumb_func_end sub_805F364 - - thumb_func_start sub_805F3C4 -sub_805F3C4: @ 805F3C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805F3E2 - ldrb r0, [r4] - movs r1, 0x3 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - movs r0, 0x1 - strh r0, [r5, 0x30] -_0805F3E2: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805F3C4 - +.ifndef NONMATCHING thumb_func_start sub_805F3EC sub_805F3EC: @ 805F3EC movs r0, 0 @@ -268,6 +137,7 @@ _0805F4D2: .align 2, 0 _0805F4EC: .4byte gUnknown_0836DC09 thumb_func_end sub_805F438 +.endif thumb_func_start sub_805F4F0 sub_805F4F0: @ 805F4F0 @@ -757,6 +627,8 @@ _0805F8C0: _0805F8DC: .4byte gUnknown_0836DC09 thumb_func_end oac_hopping +.section .text_fmocb2_asm + thumb_func_start sub_805F8E0 sub_805F8E0: @ 805F8E0 push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 2bd875f17..67d96012d 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -89,4 +89,5 @@ extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; +int state_to_direction(u8, u8, u8); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h old mode 100644 new mode 100755 index d3e4b9132..fc21c4e3c --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -33,7 +33,7 @@ void SetPlayerAvatarTransitionFlags(u16 a); // PlayerAvatarTransition_Underwater // sub_80591F4 void sub_8059204(void); -// player_get_x22 +u8 player_get_x22(void); void PlayerSetAnimId(u8 a, u8 b); void PlayerGoSpeed0(u8 a); void sub_80593C4(u8 a); diff --git a/ld_script.txt b/ld_script.txt index 866dcff5e..bef62c619 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -92,6 +92,8 @@ SECTIONS { src/field_player_avatar.o(.text); src/field_map_obj.o(.text); asm/field_map_obj.o(.text); + src/field_map_obj.o(.text_fmocb2_c); + asm/field_map_obj.o(.text_fmocb2_asm); src/field_map_obj.o(.text_b); asm/field_map_obj.o(.text_805fd18); src/field_ground_effect.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index ddf76fef6..ede9b2901 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3182,9 +3182,79 @@ u8 sub_805F2B4(struct MapObject *mapObject, struct Sprite *sprite) return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions); }; -void sub_805F2FC(struct Sprite *sprite); +fieldmap_object_cb(sub_805F2FC, sub_805F320, gUnknown_08375588); + +u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + if (mapObject->mapobj_unk_21 == 0) + { + mapObject->mapobj_unk_21 = player_get_direction_lower_nybble(); + } + sprite->data1 = 1; + return 1; +} + +extern u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, u8); + +u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.running1 == 2) + { + return 0; + } + return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), 0); +} + +u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + mapObject->mapobj_bit_1 = 0; + sprite->data1 = 1; + } + return 0; +} + +#ifdef NONMATCHING + +u8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +{ + return 0; +} + +u8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +{ + int direction; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 2; + return 1; +} + +u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8)) +{ + s16 x; + s16 y; + int direction; + direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2); + FieldObjectMoveDestCoords(mapObject, direction, &x, &y); + FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction)); + if (!npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y)))) + { + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction)); + } + mapObject->mapobj_bit_1 = 1; + sprite->data1 = 2; + return 1; +} +#endif + void FieldObjectCB_TreeDisguise(struct Sprite *sprite); void FieldObjectCB_MountainDisguise(struct Sprite *sprite); + +asm(".section .text_fmocb2_c\n"); void sub_805F8E0(struct Sprite *sprite); void FieldObjectCB_Hidden1(struct Sprite *sprite); void sub_805FB20(struct Sprite *sprite); @@ -4082,10 +4152,10 @@ int zffu_offset_calc(u8 a0, u8 a1) } #ifdef NONMATCHING -u8 state_to_direction(u8 a0, u8 a1, u8 a2) +int state_to_direction(u8 a0, u8 a1, u8 a2) { int zffuOffset; - asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call.") + asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call."); if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4) { return 0; @@ -4095,7 +4165,7 @@ u8 state_to_direction(u8 a0, u8 a1, u8 a2) } #else __attribute__((naked)) -u8 state_to_direction(u8 a0, u8 a1, u8 a2) +int state_to_direction(u8 a0, u8 a1, u8 a2) { asm(".syntax unified\n\ push {r4,lr}\n\ -- cgit v1.2.3 From fc8cc3767f0e424fbc590e24852a1ca73f89d9a9 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 25 May 2017 08:46:38 -0400 Subject: A couple more map object callbacks --- asm/field_map_obj.s | 310 ------------------------------------------------ include/field_map_obj.h | 2 + src/field_map_obj.c | 93 +++++++++++++-- 3 files changed, 88 insertions(+), 317 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 77d9ca052..d5d41a5e2 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -629,316 +629,6 @@ _0805F8DC: .4byte gUnknown_0836DC09 .section .text_fmocb2_asm - thumb_func_start sub_805F8E0 -sub_805F8E0: @ 805F8E0 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805F8FC @ =gMapObjects - adds r0, r2 - ldr r2, _0805F900 @ =sub_805F904 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805F8FC: .4byte gMapObjects -_0805F900: .4byte sub_805F904 - thumb_func_end sub_805F8E0 - - thumb_func_start sub_805F904 -sub_805F904: @ 805F904 - push {r4,lr} - ldr r3, _0805F920 @ =gUnknown_083755C0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805F920: .4byte gUnknown_083755C0 - thumb_func_end sub_805F904 - - thumb_func_start mss_08062EA4 -mss_08062EA4: @ 805F924 - push {r4-r7,lr} - adds r6, r0, 0 - adds r7, r1, 0 - ldr r2, _0805F948 @ =gMapObjects - ldr r3, _0805F94C @ =gPlayerAvatar - ldrb r1, [r3, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x1C] - cmp r0, 0xFF - beq _0805F944 - ldrb r0, [r3, 0x3] - cmp r0, 0x2 - bne _0805F950 -_0805F944: - movs r0, 0 - b _0805F978 - .align 2, 0 -_0805F948: .4byte gMapObjects -_0805F94C: .4byte gPlayerAvatar -_0805F950: - ldr r5, _0805F980 @ =gUnknown_08375594 - bl player_get_x22 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 22 - adds r4, r5 - bl player_get_direction_upper_nybble - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - ldr r3, _0805F984 @ =MetatileBehavior_IsPokeGrass - ldr r4, [r4] - adds r0, r6, 0 - adds r1, r7, 0 - bl _call_via_r4 - lsls r0, 24 - lsrs r0, 24 -_0805F978: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0805F980: .4byte gUnknown_08375594 -_0805F984: .4byte MetatileBehavior_IsPokeGrass - thumb_func_end mss_08062EA4 - - thumb_func_start FieldObjectCB_TreeDisguise -FieldObjectCB_TreeDisguise: @ 805F988 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0805F9EC @ =gMapObjects - adds r4, r1, r0 - adds r6, r4, 0 - adds r6, 0x21 - ldrb r0, [r6] - cmp r0, 0 - beq _0805F9B0 - cmp r0, 0x1 - bne _0805F9D0 - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0805F9D0 -_0805F9B0: - ldr r1, _0805F9F0 @ =gUnknown_0202FF84 - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - adds r0, r4, 0 - bl FieldObjectGetLocalIdAndMap - movs r0, 0x1C - bl FieldEffectStart - strb r0, [r4, 0x1A] - movs r0, 0x1 - strb r0, [r6] - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] -_0805F9D0: - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805F9EC @ =gMapObjects - adds r0, r1 - ldr r2, _0805F9F4 @ =sub_805F9F8 - adds r1, r5, 0 - bl meta_step - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805F9EC: .4byte gMapObjects -_0805F9F0: .4byte gUnknown_0202FF84 -_0805F9F4: .4byte sub_805F9F8 - thumb_func_end FieldObjectCB_TreeDisguise - - thumb_func_start sub_805F9F8 -sub_805F9F8: @ 805F9F8 - push {lr} - bl npc_reset - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_805F9F8 - - thumb_func_start FieldObjectCB_MountainDisguise -FieldObjectCB_MountainDisguise: @ 805FA04 - push {r4-r6,lr} - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0805FA68 @ =gMapObjects - adds r4, r1, r0 - adds r6, r4, 0 - adds r6, 0x21 - ldrb r0, [r6] - cmp r0, 0 - beq _0805FA2C - cmp r0, 0x1 - bne _0805FA4C - movs r1, 0x3C - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0805FA4C -_0805FA2C: - ldr r1, _0805FA6C @ =gUnknown_0202FF84 - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - adds r0, r4, 0 - bl FieldObjectGetLocalIdAndMap - movs r0, 0x1D - bl FieldEffectStart - strb r0, [r4, 0x1A] - movs r0, 0x1 - strb r0, [r6] - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] -_0805FA4C: - movs r0, 0x2E - ldrsh r1, [r5, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0805FA68 @ =gMapObjects - adds r0, r1 - ldr r2, _0805FA70 @ =sub_805F9F8 - adds r1, r5, 0 - bl meta_step - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0805FA68: .4byte gMapObjects -_0805FA6C: .4byte gUnknown_0202FF84 -_0805FA70: .4byte sub_805F9F8 - thumb_func_end FieldObjectCB_MountainDisguise - - thumb_func_start FieldObjectCB_Hidden1 -FieldObjectCB_Hidden1: @ 805FA74 - push {r4,lr} - adds r3, r0, 0 - movs r1, 0x3C - ldrsh r0, [r3, r1] - ldr r4, _0805FAD0 @ =gMapObjects - cmp r0, 0 - bne _0805FAB4 - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x3] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x3] - adds r2, r3, 0 - adds r2, 0x42 - ldrb r1, [r2] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - ldrb r0, [r3, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r3, 0x5] - ldrh r0, [r3, 0x3C] - adds r0, 0x1 - strh r0, [r3, 0x3C] -_0805FAB4: - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldr r2, _0805FAD4 @ =sub_805FAD8 - adds r1, r3, 0 - bl meta_step - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0805FAD0: .4byte gMapObjects -_0805FAD4: .4byte sub_805FAD8 - thumb_func_end FieldObjectCB_Hidden1 - - thumb_func_start sub_805FAD8 -sub_805FAD8: @ 805FAD8 - push {r4,lr} - ldr r3, _0805FAF4 @ =gUnknown_083755CC - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805FAF4: .4byte gUnknown_083755CC - thumb_func_end sub_805FAD8 - - thumb_func_start sub_805FAF8 -sub_805FAF8: @ 805FAF8 - push {lr} - bl npc_reset - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_805FAF8 - - thumb_func_start sub_805FB04 -sub_805FB04: @ 805FB04 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805FB16 - movs r0, 0 - strh r0, [r4, 0x30] -_0805FB16: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805FB04 - thumb_func_start sub_805FB20 sub_805FB20: @ 805FB20 push {lr} diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 67d96012d..0347b90d4 100755 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h @@ -89,5 +89,7 @@ extern struct CameraSomething gUnknown_03004880; extern u16 gUnknown_03004898; extern u16 gUnknown_0300489C; +extern u32 gUnknown_0202FF84[]; + int state_to_direction(u8, u8, u8); #endif // GUARD_FIELD_MAP_OBJ_H diff --git a/src/field_map_obj.c b/src/field_map_obj.c index ede9b2901..1982affac 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -13,6 +13,7 @@ #include "rng.h" #include "sprite.h" #include "field_camera.h" +#include "metatile_behavior.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -3195,7 +3196,7 @@ u8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Sprite return 1; } -extern u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, u8); +extern u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)); u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite) { @@ -3203,7 +3204,7 @@ u8 sub_805F364(struct MapObject *mapObject, struct Sprite *sprite) { return 0; } - return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), 0); + return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), NULL); } u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite) @@ -3251,12 +3252,90 @@ u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3 } #endif -void FieldObjectCB_TreeDisguise(struct Sprite *sprite); -void FieldObjectCB_MountainDisguise(struct Sprite *sprite); - asm(".section .text_fmocb2_c\n"); -void sub_805F8E0(struct Sprite *sprite); -void FieldObjectCB_Hidden1(struct Sprite *sprite); + +fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0); + +u8 mss_08062EA4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1C == 0xFF || gPlayerAvatar.running1 == 2) + { + return 0; + } + return gUnknown_08375594[player_get_x22()](mapObject, sprite, player_get_direction_upper_nybble(), MetatileBehavior_IsPokeGrass); +} + +u8 sub_805F9F8(struct MapObject *, struct Sprite *); + +void FieldObjectCB_TreeDisguise(struct Sprite *sprite) +{ + struct MapObject *mapObject; + mapObject = &gMapObjects[sprite->data0]; + if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) + { + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + mapObject->mapobj_unk_1A = FieldEffectStart(0x1c); + mapObject->mapobj_unk_21 = 1; + sprite->data7 ++; + } + meta_step(&gMapObjects[sprite->data0], sprite, sub_805F9F8); +} + +u8 sub_805F9F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + return 0; +} + +void FieldObjectCB_MountainDisguise(struct Sprite *sprite) +{ + struct MapObject *mapObject; + mapObject = &gMapObjects[sprite->data0]; + if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0)) + { + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + mapObject->mapobj_unk_1A = FieldEffectStart(0x1d); + mapObject->mapobj_unk_21 = 1; + sprite->data7 ++; + } + meta_step(&gMapObjects[sprite->data0], sprite, sub_805F9F8); +} + +u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite); +extern u8 (*const gUnknown_083755CC[])(struct MapObject *, struct Sprite *); + +void FieldObjectCB_Hidden1(struct Sprite *sprite) +{ + if (sprite->data7 == 0) + { + gMapObjects[sprite->data0].mapobj_bit_26 = 1; + sprite->subspriteMode = 2; + sprite->oam.priority = 3; + sprite->data7 ++; + } + meta_step(&gMapObjects[sprite->data0], sprite, sub_805FAD8); +} + +u8 sub_805FAD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + return gUnknown_083755CC[sprite->data1](mapObject, sprite); +} + +u8 sub_805FAF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + return 0; +} + +u8 sub_805FB04(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sprite->data1 = 0; + } + return 0; +} + void sub_805FB20(struct Sprite *sprite); void sub_805FB90(struct Sprite *sprite); void sub_805FC00(struct Sprite *sprite); -- cgit v1.2.3 From 9ad379c53b64ad7592490f10c324d21064e8863b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 25 May 2017 10:56:39 -0400 Subject: Finish field map object callbacks (except functions known or predicted not to match) --- asm/field_map_obj.s | 287 ---------------------------------------------------- include/asm.inc.h | 1 + ld_script.txt | 2 - src/field_map_obj.c | 62 +++++++++++- 4 files changed, 58 insertions(+), 294 deletions(-) mode change 100644 => 100755 asm/field_map_obj.s mode change 100644 => 100755 include/asm.inc.h diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s old mode 100644 new mode 100755 index d5d41a5e2..61eb3c7fe --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -626,293 +626,6 @@ _0805F8C0: .align 2, 0 _0805F8DC: .4byte gUnknown_0836DC09 thumb_func_end oac_hopping - -.section .text_fmocb2_asm - - thumb_func_start sub_805FB20 -sub_805FB20: @ 805FB20 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805FB3C @ =gMapObjects - adds r0, r2 - ldr r2, _0805FB40 @ =sub_805FB44 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805FB3C: .4byte gMapObjects -_0805FB40: .4byte sub_805FB44 - thumb_func_end sub_805FB20 - - thumb_func_start sub_805FB44 -sub_805FB44: @ 805FB44 - push {r4,lr} - ldr r3, _0805FB60 @ =gUnknown_083755D0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805FB60: .4byte gUnknown_083755D0 - thumb_func_end sub_805FB44 - - thumb_func_start sub_805FB64 -sub_805FB64: @ 805FB64 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay16AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805FB64 - - thumb_func_start sub_805FB90 -sub_805FB90: @ 805FB90 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805FBAC @ =gMapObjects - adds r0, r2 - ldr r2, _0805FBB0 @ =sub_805FBB4 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805FBAC: .4byte gMapObjects -_0805FBB0: .4byte sub_805FBB4 - thumb_func_end sub_805FB90 - - thumb_func_start sub_805FBB4 -sub_805FBB4: @ 805FBB4 - push {r4,lr} - ldr r3, _0805FBD0 @ =gUnknown_083755D8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805FBD0: .4byte gUnknown_083755D8 - thumb_func_end sub_805FBB4 - - thumb_func_start sub_805FBD4 -sub_805FBD4: @ 805FBD4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay8AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805FBD4 - - thumb_func_start sub_805FC00 -sub_805FC00: @ 805FC00 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805FC1C @ =gMapObjects - adds r0, r2 - ldr r2, _0805FC20 @ =sub_805FC24 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805FC1C: .4byte gMapObjects -_0805FC20: .4byte sub_805FC24 - thumb_func_end sub_805FC00 - - thumb_func_start sub_805FC24 -sub_805FC24: @ 805FC24 - push {r4,lr} - ldr r3, _0805FC40 @ =gUnknown_083755E0 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805FC40: .4byte gUnknown_083755E0 - thumb_func_end sub_805FC24 - - thumb_func_start sub_805FC44 -sub_805FC44: @ 805FC44 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetStepInPlaceDelay4AnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805FC44 - - thumb_func_start sub_805FC70 -sub_805FC70: @ 805FC70 - push {lr} - adds r1, r0, 0 - movs r0, 0x2E - ldrsh r2, [r1, r0] - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r2, _0805FC8C @ =gMapObjects - adds r0, r2 - ldr r2, _0805FC90 @ =sub_805FC94 - bl meta_step - pop {r0} - bx r0 - .align 2, 0 -_0805FC8C: .4byte gMapObjects -_0805FC90: .4byte sub_805FC94 - thumb_func_end sub_805FC70 - - thumb_func_start sub_805FC94 -sub_805FC94: @ 805FC94 - push {r4,lr} - ldr r3, _0805FCB0 @ =gUnknown_083755E8 - movs r4, 0x30 - ldrsh r2, [r1, r4] - lsls r2, 2 - adds r2, r3 - ldr r2, [r2] - bl _call_via_r2 - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0805FCB0: .4byte gUnknown_083755E8 - thumb_func_end sub_805FC94 - - thumb_func_start sub_805FCB4 -sub_805FCB4: @ 805FCB4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl npc_reset - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl GetFaceDirectionAnimId - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl FieldObjectSetRegularAnim - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x1 - strh r0, [r5, 0x30] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_805FCB4 - - thumb_func_start sub_805FCE8 -sub_805FCE8: @ 805FCE8 - push {r4,lr} - adds r4, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - bne _0805FCFA - movs r0, 0 - b _0805FD00 -_0805FCFA: - movs r0, 0x2 - strh r0, [r4, 0x30] - movs r0, 0x1 -_0805FD00: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_805FCE8 - - thumb_func_start sub_805FD08 -sub_805FD08: @ 805FD08 - ldrb r2, [r0] - movs r1, 0x3 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - movs r0, 0 - bx lr - .align 2, 0 - thumb_func_end sub_805FD08 - .section .text_805fd18 thumb_func_start sub_80615CC diff --git a/include/asm.inc.h b/include/asm.inc.h old mode 100644 new mode 100755 index 9bd8324ad..dbd3f0820 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -128,6 +128,7 @@ u8 sub_80608D0(u8); u8 GetStepInPlaceDelay32AnimId(u8 a); u8 GetStepInPlaceDelay16AnimId(u8); u8 GetStepInPlaceDelay8AnimId(u8 a); +u8 GetStepInPlaceDelay4AnimId(u8 a); u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8); u8 sub_80609D8(u8); u8 sub_8060A04(u8); diff --git a/ld_script.txt b/ld_script.txt index bef62c619..8557d521c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -93,8 +93,6 @@ SECTIONS { src/field_map_obj.o(.text); asm/field_map_obj.o(.text); src/field_map_obj.o(.text_fmocb2_c); - asm/field_map_obj.o(.text_fmocb2_asm); - src/field_map_obj.o(.text_b); asm/field_map_obj.o(.text_805fd18); src/field_ground_effect.o(.text); asm/field_ground_effect.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 1982affac..4fdec1919 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -3336,12 +3336,64 @@ u8 sub_805FB04(struct MapObject *mapObject, struct Sprite *sprite) return 0; } -void sub_805FB20(struct Sprite *sprite); -void sub_805FB90(struct Sprite *sprite); -void sub_805FC00(struct Sprite *sprite); -void sub_805FC70(struct Sprite *sprite); +fieldmap_object_cb(sub_805FB20, sub_805FB44, gUnknown_083755D0); + +u8 sub_805FB64(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805FB90, sub_805FBB4, gUnknown_083755D8); -asm(".section .text_b\n"); +u8 sub_805FBD4(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay8AnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805FC00, sub_805FC24, gUnknown_083755E0); + +u8 sub_805FC44(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18)); + sprite->data1 = 1; + return 1; +} + +fieldmap_object_cb(sub_805FC70, sub_805FC94, gUnknown_083755E8); + +u8 sub_805FCB4(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_reset(mapObject, sprite); + FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18)); + mapObject->mapobj_bit_13 = 1; + sprite->data1 = 1; + return 1; +} + +u8 sub_805FCE8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite)) + { + sprite->data1 = 2; + return 1; + } + return 0; +} + +u8 sub_805FD08(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_1 = 0; + return 0; +} + +void sub_805FC70(struct Sprite *sprite); void npc_reset(struct MapObject *mapObject, struct Sprite *sprite) { -- cgit v1.2.3 From f41eba1ffe419c43727732a4aa665c25467e7db2 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 25 May 2017 11:01:50 -0400 Subject: Another group of directional functions --- asm/field_map_obj.s | 152 ---------------------------------------------------- src/field_map_obj.c | 66 +++++++++++++++++++++++ 2 files changed, 66 insertions(+), 152 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 61eb3c7fe..66bd31d56 100755 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -628,158 +628,6 @@ _0805F8DC: .4byte gUnknown_0836DC09 thumb_func_end oac_hopping .section .text_805fd18 - thumb_func_start sub_80615CC -sub_80615CC: @ 80615CC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80615EC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80615CC - - thumb_func_start sub_80615EC -sub_80615EC: @ 80615EC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080615FE - movs r0, 0 - b _08061604 -_080615FE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061604: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80615EC - - thumb_func_start sub_806160C -sub_806160C: @ 806160C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806162C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806160C - - thumb_func_start sub_806162C -sub_806162C: @ 806162C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806163E - movs r0, 0 - b _08061644 -_0806163E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061644: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806162C - - thumb_func_start sub_806164C -sub_806164C: @ 806164C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806166C - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806164C - - thumb_func_start sub_806166C -sub_806166C: @ 806166C - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806167E - movs r0, 0 - b _08061684 -_0806167E: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061684: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806166C - - thumb_func_start sub_806168C -sub_806168C: @ 806168C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80616AC - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806168C - - thumb_func_start sub_80616AC -sub_80616AC: @ 80616AC - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080616BE - movs r0, 0 - b _080616C4 -_080616BE: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080616C4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80616AC - thumb_func_start sub_80616CC sub_80616CC: @ 80616CC push {r4-r6,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 4fdec1919..3d49465da 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4836,3 +4836,69 @@ bool8 sub_80615AC(struct MapObject *mapObject, struct Sprite *sprite) sub_8061508(sprite, 16); return sub_8061510(mapObject, sprite); } + +bool8 sub_80615EC(struct MapObject *mapObject, struct Sprite *sprite); +bool8 sub_806162C(struct MapObject *mapObject, struct Sprite *sprite); +bool8 sub_806166C(struct MapObject *mapObject, struct Sprite *sprite); +bool8 sub_80616AC(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_80615CC(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_SOUTH, 1); + return sub_80615EC(mapObject, sprite); +} + +bool8 sub_80615EC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} +bool8 sub_806160C(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_NORTH, 1); + return sub_806162C(mapObject, sprite); +} + +bool8 sub_806162C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} +bool8 sub_806164C(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_WEST, 1); + return sub_806166C(mapObject, sprite); +} + +bool8 sub_806166C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} +bool8 sub_806168C(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_EAST, 1); + return sub_80616AC(mapObject, sprite); +} + +bool8 sub_80616AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} -- cgit v1.2.3 From 65ce0eeb8a83c570679a66e768c55cc45991b4ec Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 25 May 2017 11:33:48 -0400 Subject: Another chunk of functions with similar templates --- asm/field_map_obj.s | 546 ---------------------------------------------------- src/field_map_obj.c | 126 ++++++++++++ 2 files changed, 126 insertions(+), 546 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 66bd31d56..f0590d8e8 100755 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -628,552 +628,6 @@ _0805F8DC: .4byte gUnknown_0836DC09 thumb_func_end oac_hopping .section .text_805fd18 - thumb_func_start sub_80616CC -sub_80616CC: @ 80616CC - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - adds r6, r1, 0 - adds r1, r2, 0 - adds r4, r3, 0 - ldr r5, [sp, 0x14] - lsls r1, 24 - lsrs r1, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 16 - lsrs r5, 16 - bl FieldObjectSetDirection - mov r0, r8 - adds r1, r6, 0 - adds r2, r4, 0 - bl sub_805FE28 - adds r2, r6, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r6, 0x32] - strh r5, [r6, 0x34] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80616CC - - thumb_func_start sub_8061714 -sub_8061714: @ 8061714 - push {lr} - ldrh r0, [r1, 0x34] - subs r0, 0x1 - strh r0, [r1, 0x34] - lsls r0, 16 - cmp r0, 0 - beq _08061726 - movs r0, 0 - b _08061738 -_08061726: - movs r0, 0x2 - strh r0, [r1, 0x32] - adds r2, r1, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 -_08061738: - pop {r1} - bx r1 - thumb_func_end sub_8061714 - - thumb_func_start sub_806173C -sub_806173C: @ 806173C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrh r1, [r4, 0x34] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08061766 - adds r3, r4, 0 - adds r3, 0x2C - ldrb r2, [r3] - lsls r1, r2, 26 - lsrs r1, 26 - adds r1, 0x1 - movs r0, 0x3F - ands r1, r0 - movs r0, 0x40 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08061766: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806173C - - thumb_func_start sub_8061778 -sub_8061778: @ 8061778 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806173C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061778 - - thumb_func_start sub_80617B0 -sub_80617B0: @ 80617B0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806173C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80617B0 - - thumb_func_start sub_80617E8 -sub_80617E8: @ 80617E8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806173C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80617E8 - - thumb_func_start sub_8061820 -sub_8061820: @ 8061820 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x20 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806173C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061820 - - thumb_func_start sub_8061858 -sub_8061858: @ 8061858 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061858 - - thumb_func_start sub_8061890 -sub_8061890: @ 8061890 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061890 - - thumb_func_start sub_80618C8 -sub_80618C8: @ 80618C8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80618C8 - - thumb_func_start sub_8061900 -sub_8061900: @ 8061900 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x10 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061900 - - thumb_func_start sub_8061938 -sub_8061938: @ 8061938 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061938 - - thumb_func_start sub_8061970 -sub_8061970: @ 8061970 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061970 - - thumb_func_start sub_80619A8 -sub_80619A8: @ 80619A8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80619A8 - - thumb_func_start sub_80619E0 -sub_80619E0: @ 80619E0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_fast_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80619E0 - - thumb_func_start sub_8061A18 -sub_8061A18: @ 8061A18 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061A18 - - thumb_func_start sub_8061A50 -sub_8061A50: @ 8061A50 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061A50 - - thumb_func_start sub_8061A88 -sub_8061A88: @ 8061A88 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061A88 - - thumb_func_start sub_8061AC0 -sub_8061AC0: @ 8061AC0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl get_go_faster_image_anim_num - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x4 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061AC0 - thumb_func_start sub_8061AF8 sub_8061AF8: @ 8061AF8 push {r4,r5,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 3d49465da..f70237c34 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4902,3 +4902,129 @@ bool8 sub_80616AC(struct MapObject *mapObject, struct Sprite *sprite) } return FALSE; } + +void sub_80616CC(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 animId, u16 duration) +{ + FieldObjectSetDirection(mapObject, direction); + sub_805FE28(mapObject, sprite, animId); + sprite->animPaused = 0; + sprite->data2 = 1; + sprite->data3 = duration; +} + +bool8 sub_8061714(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->data3--; + if (sprite->data3 == 0) + { + sprite->data2 = 2; + sprite->animPaused = 1; + return TRUE; + } + return FALSE; +} + +bool8 sub_806173C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sprite->data3 & 1) + { + sprite->animDelayCounter++; + } + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061778(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_image_anim_num(DIR_SOUTH), 32); + return sub_806173C(mapObject, sprite); +} + +bool8 sub_80617B0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_image_anim_num(DIR_NORTH), 32); + return sub_806173C(mapObject, sprite); +} + +bool8 sub_80617E8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_WEST, get_go_image_anim_num(DIR_WEST), 32); + return sub_806173C(mapObject, sprite); +} + +bool8 sub_8061820(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_EAST, get_go_image_anim_num(DIR_EAST), 32); + return sub_806173C(mapObject, sprite); +} + +bool8 sub_8061858(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_image_anim_num(DIR_SOUTH), 16); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061890(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_image_anim_num(DIR_NORTH), 16); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_80618C8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_WEST, get_go_image_anim_num(DIR_WEST), 16); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061900(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_EAST, get_go_image_anim_num(DIR_EAST), 16); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061938(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_fast_image_anim_num(DIR_SOUTH), 8); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061970(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_fast_image_anim_num(DIR_NORTH), 8); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_80619A8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_WEST, get_go_fast_image_anim_num(DIR_WEST), 8); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_80619E0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_EAST, get_go_fast_image_anim_num(DIR_EAST), 8); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061A18(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_SOUTH, get_go_faster_image_anim_num(DIR_SOUTH), 4); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061A50(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_NORTH, get_go_faster_image_anim_num(DIR_NORTH), 4); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061A88(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_WEST, get_go_faster_image_anim_num(DIR_WEST), 4); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8061AC0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_EAST, get_go_faster_image_anim_num(DIR_EAST), 4); + return sub_8061714(mapObject, sprite); +} -- cgit v1.2.3 From ae24650fbd7814f28d50365881ff388ba9b576b6 Mon Sep 17 00:00:00 2001 From: scnorton Date: Thu, 25 May 2017 16:00:29 -0400 Subject: Decompile another group of functions --- asm/field_map_obj.s | 1566 +-------------------------------------- include/field_map_obj_helpers.h | 2 +- src/field_map_obj.c | 668 +++++++++++++++++ 3 files changed, 670 insertions(+), 1566 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index f0590d8e8..c8bcc1e8b 100755 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -626,1572 +626,8 @@ _0805F8C0: .align 2, 0 _0805F8DC: .4byte gUnknown_0836DC09 thumb_func_end oac_hopping - .section .text_805fd18 - - thumb_func_start sub_8061AF8 -sub_8061AF8: @ 8061AF8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061B18 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061AF8 - - thumb_func_start sub_8061B18 -sub_8061B18: @ 8061B18 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061B2A - movs r0, 0 - b _08061B30 -_08061B2A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061B30: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061B18 - - thumb_func_start sub_8061B38 -sub_8061B38: @ 8061B38 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061B58 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061B38 - - thumb_func_start sub_8061B58 -sub_8061B58: @ 8061B58 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061B6A - movs r0, 0 - b _08061B70 -_08061B6A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061B70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061B58 - - thumb_func_start sub_8061B78 -sub_8061B78: @ 8061B78 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061B98 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061B78 - - thumb_func_start sub_8061B98 -sub_8061B98: @ 8061B98 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061BAA - movs r0, 0 - b _08061BB0 -_08061BAA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061BB0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061B98 - - thumb_func_start sub_8061BB8 -sub_8061BB8: @ 8061BB8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x2 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061BD8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061BB8 - - thumb_func_start sub_8061BD8 -sub_8061BD8: @ 8061BD8 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061BEA - movs r0, 0 - b _08061BF0 -_08061BEA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061BF0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061BD8 - - thumb_func_start sub_8061BF8 -sub_8061BF8: @ 8061BF8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061C18 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061BF8 - - thumb_func_start sub_8061C18 -sub_8061C18: @ 8061C18 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061C2A - movs r0, 0 - b _08061C30 -_08061C2A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061C30: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061C18 - - thumb_func_start sub_8061C38 -sub_8061C38: @ 8061C38 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061C58 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061C38 - - thumb_func_start sub_8061C58 -sub_8061C58: @ 8061C58 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061C6A - movs r0, 0 - b _08061C70 -_08061C6A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061C70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061C58 - - thumb_func_start sub_8061C78 -sub_8061C78: @ 8061C78 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061C98 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061C78 - - thumb_func_start sub_8061C98 -sub_8061C98: @ 8061C98 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061CAA - movs r0, 0 - b _08061CB0 -_08061CAA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061CB0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061C98 - - thumb_func_start sub_8061CB8 -sub_8061CB8: @ 8061CB8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x3 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061CD8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061CB8 - - thumb_func_start sub_8061CD8 -sub_8061CD8: @ 8061CD8 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061CEA - movs r0, 0 - b _08061CF0 -_08061CEA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061CF0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061CD8 - - thumb_func_start sub_8061CF8 -sub_8061CF8: @ 8061CF8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061D18 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061CF8 - - thumb_func_start sub_8061D18 -sub_8061D18: @ 8061D18 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061D2A - movs r0, 0 - b _08061D30 -_08061D2A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061D30: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061D18 - - thumb_func_start sub_8061D38 -sub_8061D38: @ 8061D38 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061D58 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061D38 - - thumb_func_start sub_8061D58 -sub_8061D58: @ 8061D58 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061D6A - movs r0, 0 - b _08061D70 -_08061D6A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061D70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061D58 - - thumb_func_start sub_8061D78 -sub_8061D78: @ 8061D78 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061D98 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061D78 - - thumb_func_start sub_8061D98 -sub_8061D98: @ 8061D98 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061DAA - movs r0, 0 - b _08061DB0 -_08061DAA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061DB0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061D98 - - thumb_func_start sub_8061DB8 -sub_8061DB8: @ 8061DB8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x4 - bl do_go_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061DD8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061DB8 - - thumb_func_start sub_8061DD8 -sub_8061DD8: @ 8061DD8 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061DEA - movs r0, 0 - b _08061DF0 -_08061DEA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061DF0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061DD8 - - thumb_func_start do_run_south_anim -do_run_south_anim: @ 8061DF8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061E18 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_south_anim - - thumb_func_start sub_8061E18 -sub_8061E18: @ 8061E18 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061E2A - movs r0, 0 - b _08061E30 -_08061E2A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061E30: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061E18 - - thumb_func_start do_run_north_anim -do_run_north_anim: @ 8061E38 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061E58 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_north_anim - - thumb_func_start sub_8061E58 -sub_8061E58: @ 8061E58 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061E6A - movs r0, 0 - b _08061E70 -_08061E6A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061E70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061E58 - - thumb_func_start do_run_west_anim -do_run_west_anim: @ 8061E78 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061E98 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_west_anim - - thumb_func_start sub_8061E98 -sub_8061E98: @ 8061E98 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061EAA - movs r0, 0 - b _08061EB0 -_08061EAA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061EB0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061E98 - - thumb_func_start do_run_east_anim -do_run_east_anim: @ 8061EB8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl do_run_anim - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061ED8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end do_run_east_anim - - thumb_func_start sub_8061ED8 -sub_8061ED8: @ 8061ED8 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08061EEA - movs r0, 0 - b _08061EF0 -_08061EEA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061EF0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061ED8 - - thumb_func_start npc_set_direction_and_anim__an_proceed -npc_set_direction_and_anim__an_proceed: @ 8061EF8 - push {r4-r6,lr} - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - adds r1, r3, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - movs r2, 0 - bl obj_anim_image_set_and_seek - adds r0, r6, 0 - adds r1, r4, 0 - bl FieldObjectSetDirection - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end npc_set_direction_and_anim__an_proceed - - thumb_func_start sub_8061F24 -sub_8061F24: @ 8061F24 - push {lr} - ldrb r2, [r0, 0x18] - lsrs r2, 4 - adds r3, r1, 0 - adds r3, 0x2A - ldrb r3, [r3] - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_8061F24 - - thumb_func_start sub_8061F3C -sub_8061F3C: @ 8061F3C - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064864 - lsls r0, 24 - cmp r0, 0 - bne _08061F50 - movs r0, 0 - b _08061F56 -_08061F50: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08061F56: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8061F3C - - thumb_func_start sub_8061F5C -sub_8061F5C: @ 8061F5C - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - movs r1, 0 - str r1, [sp] - adds r1, r5, 0 - adds r2, r4, 0 - movs r3, 0x1 - bl sub_806113C - adds r0, r4, 0 - bl sub_805FD88 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnim - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8061F5C - - thumb_func_start sub_8061F90 -sub_8061F90: @ 8061F90 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - bl sub_8061F5C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061FB0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061F90 - - thumb_func_start sub_8061FB0 -sub_8061FB0: @ 8061FB0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061340 - lsls r0, 24 - cmp r0, 0 - bne _08061FC4 - movs r0, 0 - b _08061FD2 -_08061FC4: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_08061FD2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061FB0 - - thumb_func_start sub_8061FD8 -sub_8061FD8: @ 8061FD8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - bl sub_8061F5C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061FF8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061FD8 - - thumb_func_start sub_8061FF8 -sub_8061FF8: @ 8061FF8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061340 - lsls r0, 24 - cmp r0, 0 - bne _0806200C - movs r0, 0 - b _0806201A -_0806200C: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_0806201A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8061FF8 - - thumb_func_start sub_8062020 -sub_8062020: @ 8062020 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - bl sub_8061F5C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062040 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062020 - - thumb_func_start sub_8062040 -sub_8062040: @ 8062040 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061340 - lsls r0, 24 - cmp r0, 0 - bne _08062054 - movs r0, 0 - b _08062062 -_08062054: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_08062062: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062040 - - thumb_func_start sub_8062068 -sub_8062068: @ 8062068 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - bl sub_8061F5C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062088 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062068 - - thumb_func_start sub_8062088 -sub_8062088: @ 8062088 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061340 - lsls r0, 24 - cmp r0, 0 - bne _0806209C - movs r0, 0 - b _080620AA -_0806209C: - movs r0, 0x2 - strh r0, [r5, 0x32] - ldrb r1, [r4] - subs r0, 0x23 - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 -_080620AA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062088 - - thumb_func_start sub_80620B0 -sub_80620B0: @ 80620B0 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _080620FA - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - ldr r4, _08062108 @ =gMapObjects - mov r2, sp - ldrb r2, [r2] - lsls r3, r2, 3 - adds r3, r2 - lsls r3, 2 - adds r3, r4 - movs r4, 0x10 - ldrsh r2, [r3, r4] - movs r4, 0x12 - ldrsh r3, [r3, r4] - bl sub_805FE90 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl an_look_any -_080620FA: - movs r0, 0x1 - strh r0, [r6, 0x32] - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08062108: .4byte gMapObjects - thumb_func_end sub_80620B0 - - thumb_func_start sub_806210C -sub_806210C: @ 806210C - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r6, r1, 0 - movs r0, 0xFF - movs r1, 0 - movs r2, 0 - mov r3, sp - bl TryGetFieldObjectIdByLocalIdAndMap - lsls r0, 24 - cmp r0, 0 - bne _0806215E - movs r1, 0x10 - ldrsh r0, [r5, r1] - movs r2, 0x12 - ldrsh r1, [r5, r2] - ldr r4, _0806216C @ =gMapObjects - mov r2, sp - ldrb r2, [r2] - lsls r3, r2, 3 - adds r3, r2 - lsls r3, 2 - adds r3, r4 - movs r4, 0x10 - ldrsh r2, [r3, r4] - movs r4, 0x12 - ldrsh r3, [r3, r4] - bl sub_805FE90 - lsls r0, 24 - lsrs r0, 24 - bl GetOppositeDirection - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl an_look_any -_0806215E: - movs r0, 0x1 - strh r0, [r6, 0x32] - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0806216C: .4byte gMapObjects - thumb_func_end sub_806210C - - thumb_func_start sub_8062170 -sub_8062170: @ 8062170 - ldrb r2, [r0, 0x1] - movs r3, 0x2 - orrs r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_8062170 - - thumb_func_start sub_8062180 -sub_8062180: @ 8062180 - ldrb r3, [r0, 0x1] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_8062180 - - thumb_func_start sub_8062190 -sub_8062190: @ 8062190 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80621BC - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062190 - - thumb_func_start sub_80621BC -sub_80621BC: @ 80621BC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _080621D0 - movs r0, 0 - b _080621E0 -_080621D0: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080621E0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80621BC - - thumb_func_start sub_80621E8 -sub_80621E8: @ 80621E8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062214 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80621E8 - - thumb_func_start sub_8062214 -sub_8062214: @ 8062214 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062228 - movs r0, 0 - b _08062238 -_08062228: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062238: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062214 - - thumb_func_start sub_8062240 -sub_8062240: @ 8062240 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806226C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062240 - - thumb_func_start sub_806226C -sub_806226C: @ 806226C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062280 - movs r0, 0 - b _08062290 -_08062280: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062290: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806226C - - thumb_func_start sub_8062298 -sub_8062298: @ 8062298 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x1 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80622C4 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062298 - - thumb_func_start sub_80622C4 -sub_80622C4: @ 80622C4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _080622D8 - movs r0, 0 - b _080622E8 -_080622D8: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080622E8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80622C4 - - thumb_func_start sub_80622F0 -sub_80622F0: @ 80622F0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806231C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80622F0 - - thumb_func_start sub_806231C -sub_806231C: @ 806231C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062330 - movs r0, 0 - b _08062340 -_08062330: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062340: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806231C - - thumb_func_start sub_8062348 -sub_8062348: @ 8062348 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062374 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062348 - - thumb_func_start sub_8062374 -sub_8062374: @ 8062374 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062388 - movs r0, 0 - b _08062398 -_08062388: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062398: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062374 - - thumb_func_start sub_80623A0 -sub_80623A0: @ 80623A0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80623CC - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80623A0 - - thumb_func_start sub_80623CC -sub_80623CC: @ 80623CC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _080623E0 - movs r0, 0 - b _080623F0 -_080623E0: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080623F0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80623CC - - thumb_func_start sub_80623F8 -sub_80623F8: @ 80623F8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062424 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80623F8 - - thumb_func_start sub_8062424 -sub_8062424: @ 8062424 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062438 - movs r0, 0 - b _08062448 -_08062438: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062448: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062424 - - thumb_func_start sub_8062450 -sub_8062450: @ 8062450 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806247C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062450 - - thumb_func_start sub_806247C -sub_806247C: @ 806247C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061358 - lsls r0, 24 - cmp r0, 0 - bne _08062490 - movs r0, 0 - b _080624A0 -_08062490: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080624A0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806247C - - thumb_func_start sub_80624A8 -sub_80624A8: @ 80624A8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80624D4 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80624A8 - - thumb_func_start sub_80624D4 -sub_80624D4: @ 80624D4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061358 - lsls r0, 24 - cmp r0, 0 - bne _080624E8 - movs r0, 0 - b _080624F8 -_080624E8: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080624F8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80624D4 - - thumb_func_start sub_8062500 -sub_8062500: @ 8062500 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_806252C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062500 - - thumb_func_start sub_806252C -sub_806252C: @ 806252C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061358 - lsls r0, 24 - cmp r0, 0 - bne _08062540 - movs r0, 0 - b _08062550 -_08062540: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062550: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806252C - - thumb_func_start sub_8062558 -sub_8062558: @ 8062558 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0 - bl maybe_shadow_1 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062584 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062558 - thumb_func_start sub_8062584 -sub_8062584: @ 8062584 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061358 - lsls r0, 24 - cmp r0, 0 - bne _08062598 - movs r0, 0 - b _080625A8 -_08062598: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080625A8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062584 + .section .text_805fd18 thumb_func_start sub_80625B0 sub_80625B0: @ 80625B0 diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h index 119cdd5f8..5dceec595 100644 --- a/include/field_map_obj_helpers.h +++ b/include/field_map_obj_helpers.h @@ -15,5 +15,5 @@ void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4); void DoShadowFieldEffect(struct MapObject *mapObject); u8 sub_8064704(struct Sprite *); u8 sub_806478C(struct Sprite *); - +void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3); #endif diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f70237c34..0aba02e1a 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -14,6 +14,7 @@ #include "sprite.h" #include "field_camera.h" #include "metatile_behavior.h" +#include "map_constants.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -5028,3 +5029,670 @@ bool8 sub_8061AC0(struct MapObject *mapObject, struct Sprite *sprite) sub_80616CC(mapObject, sprite, DIR_EAST, get_go_faster_image_anim_num(DIR_EAST), 4); return sub_8061714(mapObject, sprite); } + +bool8 sub_8061B18(struct MapObject *, struct Sprite *); + +bool8 sub_8061AF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_SOUTH, 2); + return sub_8061B18(mapObject, sprite); +} + +bool8 sub_8061B18(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + + +bool8 sub_8061B58(struct MapObject *, struct Sprite *); + +bool8 sub_8061B38(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_NORTH, 2); + return sub_8061B58(mapObject, sprite); +} + +bool8 sub_8061B58(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + + +bool8 sub_8061B98(struct MapObject *, struct Sprite *); + +bool8 sub_8061B78(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_WEST, 2); + return sub_8061B98(mapObject, sprite); +} + +bool8 sub_8061B98(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + + +bool8 sub_8061BD8(struct MapObject *, struct Sprite *); + +bool8 sub_8061BB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_EAST, 2); + return sub_8061BD8(mapObject, sprite); +} + +bool8 sub_8061BD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061C18(struct MapObject *, struct Sprite *); + +bool8 sub_8061BF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_SOUTH, 3); + return sub_8061C18(mapObject, sprite); +} + +bool8 sub_8061C18(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061C58(struct MapObject *, struct Sprite *); + +bool8 sub_8061C38(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_NORTH, 3); + return sub_8061C58(mapObject, sprite); +} + +bool8 sub_8061C58(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + + +bool8 sub_8061C98(struct MapObject *, struct Sprite *); + +bool8 sub_8061C78(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_WEST, 3); + return sub_8061C98(mapObject, sprite); +} + +bool8 sub_8061C98(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + + +bool8 sub_8061CD8(struct MapObject *, struct Sprite *); + +bool8 sub_8061CB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_EAST, 3); + return sub_8061CD8(mapObject, sprite); +} + +bool8 sub_8061CD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061D18(struct MapObject *, struct Sprite *); + +bool8 sub_8061CF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_SOUTH, 4); + return sub_8061D18(mapObject, sprite); +} + +bool8 sub_8061D18(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061D58(struct MapObject *, struct Sprite *); + +bool8 sub_8061D38(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_NORTH, 4); + return sub_8061D58(mapObject, sprite); +} + +bool8 sub_8061D58(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + + +bool8 sub_8061D98(struct MapObject *, struct Sprite *); + +bool8 sub_8061D78(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_WEST, 4); + return sub_8061D98(mapObject, sprite); +} + +bool8 sub_8061D98(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + + +bool8 sub_8061DD8(struct MapObject *, struct Sprite *); + +bool8 sub_8061DB8(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_go_anim(mapObject, sprite, DIR_EAST, 4); + return sub_8061DD8(mapObject, sprite); +} + +bool8 sub_8061DD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061E18(struct MapObject *, struct Sprite *); + +bool8 do_run_south_anim(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_run_anim(mapObject, sprite, DIR_SOUTH); + return sub_8061E18(mapObject, sprite); +} + +bool8 sub_8061E18(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061E58(struct MapObject *, struct Sprite *); + +bool8 do_run_north_anim(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_run_anim(mapObject, sprite, DIR_NORTH); + return sub_8061E58(mapObject, sprite); +} + +bool8 sub_8061E58(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061E98(struct MapObject *, struct Sprite *); + +bool8 do_run_west_anim(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_run_anim(mapObject, sprite, DIR_WEST); + return sub_8061E98(mapObject, sprite); +} + +bool8 sub_8061E98(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061ED8(struct MapObject *, struct Sprite *); + +bool8 do_run_east_anim(struct MapObject *mapObject, struct Sprite *sprite) +{ + do_run_anim(mapObject, sprite, DIR_EAST); + return sub_8061ED8(mapObject, sprite); +} + +bool8 sub_8061ED8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +void npc_set_direction_and_anim__an_proceed(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 animNum) +{ + obj_anim_image_set_and_seek(sprite, animNum, 0); + FieldObjectSetDirection(mapObject, direction); + sprite->data2 = 1; +} + +u8 sub_8061F24(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, mapObject->placeholder18, sprite->animNum); + return 0; +} + +bool8 sub_8064864(struct Sprite *); + +bool8 sub_8061F3C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064864(sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +void sub_8061F5C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + sub_806113C(mapObject, sprite, direction, 1, 0); + StartSpriteAnim(sprite, sub_805FD88(direction)); +} + +bool8 sub_8061FB0(struct MapObject *, struct Sprite *); + +bool8 sub_8061F90(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061F5C(mapObject, sprite, DIR_SOUTH); + return sub_8061FB0(mapObject, sprite); +} + +bool8 sub_8061FB0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061340(mapObject, sprite)) + { + sprite->data2 = 2; + mapObject->mapobj_bit_5 = 0; + return TRUE; + } + return FALSE; +} + +bool8 sub_8061FF8(struct MapObject *, struct Sprite *); + +bool8 sub_8061FD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061F5C(mapObject, sprite, DIR_NORTH); + return sub_8061FF8(mapObject, sprite); +} + +bool8 sub_8061FF8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061340(mapObject, sprite)) + { + sprite->data2 = 2; + mapObject->mapobj_bit_5 = 0; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062040(struct MapObject *, struct Sprite *); + +bool8 sub_8062020(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061F5C(mapObject, sprite, DIR_WEST); + return sub_8062040(mapObject, sprite); +} + +bool8 sub_8062040(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061340(mapObject, sprite)) + { + sprite->data2 = 2; + mapObject->mapobj_bit_5 = 0; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062088(struct MapObject *, struct Sprite *); + +bool8 sub_8062068(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8061F5C(mapObject, sprite, DIR_EAST); + return sub_8062088(mapObject, sprite); +} + +bool8 sub_8062088(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061340(mapObject, sprite)) + { + sprite->data2 = 2; + mapObject->mapobj_bit_5 = 0; + return TRUE; + } + return FALSE; +} + +bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 objectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, &objectId)) + { + an_look_any(mapObject, sprite, sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y)); + } + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_806210C(struct MapObject *mapObject, struct Sprite *sprite) +{ + u8 objectId; + if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, &objectId)) + { + an_look_any(mapObject, sprite, GetOppositeDirection(sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y))); + } + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_8062170(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_9 = 1; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_8062180(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_9 = 0; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_80621BC(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_8062190(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 1, 2); + return sub_80621BC(mapObject, sprite); +} + +bool8 sub_80621BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062214(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_80621E8(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_NORTH, 1, 2); + return sub_8062214(mapObject, sprite); +} + +bool8 sub_8062214(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806226C(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_8062240(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_WEST, 1, 2); + return sub_806226C(mapObject, sprite); +} + +bool8 sub_806226C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80622C4(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_8062298(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_EAST, 1, 2); + return sub_80622C4(mapObject, sprite); +} + +bool8 sub_80622C4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806231C(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_80622F0(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 0, 0); + return sub_806231C(mapObject, sprite); +} + +bool8 sub_806231C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062374(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_8062348(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_NORTH, 0, 0); + return sub_8062374(mapObject, sprite); +} + +bool8 sub_8062374(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80623CC(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_80623A0(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_WEST, 0, 0); + return sub_80623CC(mapObject, sprite); +} + +bool8 sub_80623CC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062424(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_80623F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_EAST, 0, 0); + return sub_8062424(mapObject, sprite); +} + +bool8 sub_8062424(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806247C(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_8062450(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 0, 2); + return sub_806247C(mapObject, sprite); +} + +bool8 sub_806247C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061358(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80624D4(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_80624A8(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_NORTH, 0, 2); + return sub_80624D4(mapObject, sprite); +} + +bool8 sub_80624D4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061358(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_806252C(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_8062500(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_WEST, 0, 2); + return sub_806252C(mapObject, sprite); +} + +bool8 sub_806252C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061358(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite); + +bool8 sub_8062558(struct MapObject *mapObject, struct Sprite *sprite) +{ + maybe_shadow_1(mapObject, sprite, DIR_EAST, 0, 2); + return sub_8062584(mapObject, sprite); +} + +bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061358(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + -- cgit v1.2.3 From 1398206bd5feeea5f04fd26e6a9a28a773125cd6 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Mon, 15 May 2017 20:09:04 +0200 Subject: Make credits match German build --- src/credits.c | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/src/credits.c b/src/credits.c index de1d52361..5af2d1e3c 100644 --- a/src/credits.c +++ b/src/credits.c @@ -70,18 +70,37 @@ enum PAGE_PROGRAMMERS, PAGE_GRAPHIC_DESIGNERS, PAGE_PRODUCT_SUPPORT, + +#if ENGLISH PAGE_ARTWORK, PAGE_TEXT_EDITOR, PAGE_NOA_TESTING, PAGE_BRAILLE_CODE_CHECK_1, PAGE_BRAILLE_CODE_CHECK_2, +#elif GERMAN + PAGE_NOE_TESTING, + PAGE_BRAILLE_CODE_CHECK_1, +#endif + PAGE_SPECIAL_THANKS_4, PAGE_SPECIAL_THANKS_5, PAGE_COUNT }; +#if ENGLISH +#define POKEMON_TILE_COUNT 68 +#define LAST_PAGE (PAGE_TEXT_EDITOR) +#define UNK_DEFINE_45 (0x45) #define UNK_DEFINE_82 (0x82) +#define UNK_DEF_1F3 (499) +#elif GERMAN +#define POKEMON_TILE_COUNT 65 +#define LAST_PAGE (PAGE_NOE_TESTING) +#define UNK_DEFINE_45 (8) +#define UNK_DEFINE_82 (0x8D) +#define UNK_DEF_1F3 (554) +#endif #define COLOR_DARK_GREEN 0x1967 #define COLOR_LIGHT_GREEN 0x328D @@ -125,7 +144,6 @@ enum TDE_TASK_A_ID = 2, }; -#define POKEMON_TILE_COUNT 68 struct Unk201C000 { @@ -746,8 +764,6 @@ static void task_b_81441B8(u8 taskIdB) } } -#define LAST_PAGE (PAGE_TEXT_EDITOR) - static u8 sub_8144454(u8 page, u8 taskIdA) { // Starts with bike + ocean + morning @@ -942,8 +958,6 @@ void task_c_8144664(u8 taskIdC) } } -#define UNK_DEF_1F3 (499) - void task_e_8144934(u8 taskIdE) { s16 taskIdC; @@ -1008,8 +1022,6 @@ void task_e_8144934(u8 taskIdE) } } -#define UNK_DEFINE_45 (0x45) - static void sub_8144A68(u8 data, u8 taskIdA) { switch (data) @@ -1280,12 +1292,19 @@ static void sub_81452D0(u16 arg0, u16 palette) for (pos = 0; pos < 32 * 32; pos++) ((u16 *) (VRAM + arg0))[pos] = baseTile + 1; +#if ENGLISH sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette); sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette); sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette); sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette); sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette); sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette); +#elif GERMAN + sub_814524C(gUnknown_0840B85A, 7, 7, arg0, palette); + sub_814524C(gUnknown_0840B869, 11, 7, arg0, palette); + sub_814524C(gUnknown_0840B878, 15, 7, arg0, palette); + sub_814524C(gUnknown_0840B85A, 19, 7, arg0, palette); +#endif } static void spritecb_player_8145378(struct Sprite *sprite) -- cgit v1.2.3 From 524b2c20082031c07490070601d22708a8010904 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Mon, 22 May 2017 20:05:20 +0200 Subject: Make berry_tag_screen match German build --- include/config.h | 6 ++++++ src/berry_tag_screen.c | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/include/config.h b/include/config.h index 205f53f16..6a77c4c74 100644 --- a/include/config.h +++ b/include/config.h @@ -27,6 +27,12 @@ #define BUGFIX_EVO_NAME #endif +#ifdef ENGLISH +#define UNITS_IMPERIAL +#elif GERMAN +#define UNITS_METRIC +#endif + // Fixed in Emerald. // #define BUGFIX_SETMONIVS diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c index f0bcb4f27..394a3691b 100644 --- a/src/berry_tag_screen.c +++ b/src/berry_tag_screen.c @@ -263,30 +263,49 @@ static void sub_8146480(u8 taskid) static void sub_81464E4(void) { const struct Berry *berryInfo; +#ifdef UNITS_IMPERIAL u32 size; s32 sizeMajor; s32 sizeMinor; +#endif +#if GERMAN + u8 buffer[16]; +#endif berryInfo = GetBerryInfo(gScriptItemId + OFFSET_7B + 1); ConvertIntToDecimalStringN(gStringVar1, gScriptItemId - FIRST_BERRY + 1, STR_CONV_MODE_LEADING_ZEROS, 2); MenuPrint(gStringVar1, 12, 4); +#if ENGLISH MenuPrint(berryInfo->name, 14, 4); +#elif GERMAN + StringCopy(buffer, berryInfo->name); + StringAppend(buffer, gOtherText_Berry2); + MenuPrint(buffer, 14, 4); +#endif + MenuPrint(berryInfo->description1, 4, 14); MenuPrint(berryInfo->description2, 4, 16); +#ifdef UNITS_IMPERIAL size = (berryInfo->size * 1000) / 254; if (size % 10 >= 5) size += 10; sizeMinor = (size % 100) / 10; sizeMajor = size / 100; +#endif MenuPrint(gOtherText_Size, 11, 7); if (berryInfo->size != 0) { +#ifdef UNITS_IMPERIAL ConvertIntToDecimalStringN(gStringVar1, sizeMajor, STR_CONV_MODE_LEFT_ALIGN, 2); ConvertIntToDecimalStringN(gStringVar2, sizeMinor, STR_CONV_MODE_LEFT_ALIGN, 2); +#else + ConvertIntToDecimalStringN(gStringVar1, berryInfo->size / 10, STR_CONV_MODE_LEFT_ALIGN, 2); + ConvertIntToDecimalStringN(gStringVar2, berryInfo->size % 10, STR_CONV_MODE_LEFT_ALIGN, 2); +#endif MenuPrint(gContestStatsText_Unknown1, 16, 7); } else -- cgit v1.2.3 From ad0aac31f1d19717ff71c9eab6a404ef546e146f Mon Sep 17 00:00:00 2001 From: scnorton Date: Thu, 25 May 2017 18:39:51 -0400 Subject: A few more functions in asm/field_map_obj.s --- asm/field_map_obj.s | 107 ---------------------------------------------------- src/field_map_obj.c | 57 +++++++++++++++++++++++++++- 2 files changed, 55 insertions(+), 109 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index c8bcc1e8b..cc42db022 100755 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -629,113 +629,6 @@ _0805F8DC: .4byte gUnknown_0836DC09 .section .text_805fd18 - thumb_func_start sub_80625B0 -sub_80625B0: @ 80625B0 - push {lr} - ldr r3, _080625C4 @ =gUnknown_0836DC09 - ldrb r2, [r0, 0x6] - adds r2, r3 - ldrb r2, [r2] - bl an_look_any - movs r0, 0x1 - pop {r1} - bx r1 - .align 2, 0 -_080625C4: .4byte gUnknown_0836DC09 - thumb_func_end sub_80625B0 - - thumb_func_start sub_80625C8 -sub_80625C8: @ 80625C8 - push {lr} - movs r2, 0x1 - movs r3, 0x14 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_80625C8 - - thumb_func_start sub_80625D8 -sub_80625D8: @ 80625D8 - ldrb r3, [r0, 0x3] - movs r2, 0x3 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_80625D8 - - thumb_func_start sub_80625E8 -sub_80625E8: @ 80625E8 - ldrb r2, [r0, 0x3] - movs r3, 0x2 - orrs r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_80625E8 - - thumb_func_start sub_80625F8 -sub_80625F8: @ 80625F8 - ldrb r2, [r0, 0x1] - movs r3, 0x10 - orrs r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_80625F8 - - thumb_func_start sub_8062608 -sub_8062608: @ 8062608 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x5] - bl GetFieldObjectGraphicsInfo - ldrb r1, [r0, 0xC] - lsls r1, 25 - lsrs r1, 31 - lsls r1, 4 - ldrb r2, [r4, 0x1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x1 - strh r0, [r5, 0x32] - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062608 - - thumb_func_start sub_8062634 -sub_8062634: @ 8062634 - ldrb r2, [r0, 0x1] - movs r3, 0x20 - orrs r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_8062634 - - thumb_func_start sub_8062644 -sub_8062644: @ 8062644 - ldrb r3, [r0, 0x1] - movs r2, 0x21 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x1] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_8062644 - thumb_func_start do_exclamation_mark_bubble_1 do_exclamation_mark_bubble_1: @ 8062654 push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index 0aba02e1a..aa2169677 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -5332,10 +5332,10 @@ void npc_set_direction_and_anim__an_proceed(struct MapObject *mapObject, struct sprite->data2 = 1; } -u8 sub_8061F24(struct MapObject *mapObject, struct Sprite *sprite) +bool8 sub_8061F24(struct MapObject *mapObject, struct Sprite *sprite) { npc_set_direction_and_anim__an_proceed(mapObject, sprite, mapObject->placeholder18, sprite->animNum); - return 0; + return FALSE; } bool8 sub_8064864(struct Sprite *); @@ -5696,3 +5696,56 @@ bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite) return FALSE; } +bool8 sub_80625B0(struct MapObject *mapObject, struct Sprite *sprite) +{ + an_look_any(mapObject, sprite, gUnknown_0836DC09[mapObject->animPattern]); + return TRUE; +} + +bool8 sub_80625C8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, 0x14); + return FALSE; +} + +bool8 sub_80625D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_25 = 0; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_80625E8(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_25 = 1; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_80625F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_12 = 1; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_8062608(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_8062634(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_13 = 1; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_13 = 0; + sprite->data2 = 1; + return TRUE; +} -- cgit v1.2.3 From a349844cf1dd164cb309438b53deff4cf1fc8b0a Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Thu, 25 May 2017 21:19:46 -0400 Subject: Another set of fns --- asm/field_map_obj.s | 385 ----------------------------------------- include/field_effect_helpers.h | 11 ++ include/trainer_see.h | 2 +- src/field_map_obj.c | 166 ++++++++++++++++++ src/trainer_see.c | 4 +- 5 files changed, 180 insertions(+), 388 deletions(-) create mode 100755 include/field_effect_helpers.h mode change 100644 => 100755 include/trainer_see.h mode change 100644 => 100755 src/trainer_see.c diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index cc42db022..84ea043d1 100755 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -629,391 +629,6 @@ _0805F8DC: .4byte gUnknown_0836DC09 .section .text_805fd18 - thumb_func_start do_exclamation_mark_bubble_1 -do_exclamation_mark_bubble_1: @ 8062654 - push {r4,lr} - adds r4, r1, 0 - ldr r1, _08062674 @ =gUnknown_0202FF84 - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl FieldObjectGetLocalIdAndMap - movs r0, 0 - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062674: .4byte gUnknown_0202FF84 - thumb_func_end do_exclamation_mark_bubble_1 - - thumb_func_start do_exclamation_mark_bubble_2 -do_exclamation_mark_bubble_2: @ 8062678 - push {r4,lr} - adds r4, r1, 0 - ldr r1, _08062698 @ =gUnknown_0202FF84 - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl FieldObjectGetLocalIdAndMap - movs r0, 0x21 - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08062698: .4byte gUnknown_0202FF84 - thumb_func_end do_exclamation_mark_bubble_2 - - thumb_func_start do_heart_bubble -do_heart_bubble: @ 806269C - push {r4,lr} - adds r4, r1, 0 - ldr r1, _080626BC @ =gUnknown_0202FF84 - adds r2, r1, 0x4 - adds r3, r1, 0 - adds r3, 0x8 - bl FieldObjectGetLocalIdAndMap - movs r0, 0x2E - bl FieldEffectStart - movs r0, 0x1 - strh r0, [r4, 0x32] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080626BC: .4byte gUnknown_0202FF84 - thumb_func_end do_heart_bubble - - thumb_func_start sub_80626C0 -sub_80626C0: @ 80626C0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r0, [r4, 0x6] - cmp r0, 0x3F - bne _080626D6 - adds r0, r4, 0 - bl sub_8084794 - movs r0, 0 - b _080626FE -_080626D6: - subs r0, 0x39 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bhi _080626F8 - adds r0, r4, 0 - bl sub_812869C - movs r0, 0x1 - strh r0, [r5, 0x32] - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062704 - lsls r0, 24 - lsrs r0, 24 - b _080626FE -_080626F8: - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_080626FE: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80626C0 - - thumb_func_start sub_8062704 -sub_8062704: @ 8062704 - push {r4,lr} - adds r4, r1, 0 - bl sub_81286C4 - lsls r0, 24 - cmp r0, 0 - bne _08062716 - movs r0, 0 - b _0806271C -_08062716: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_0806271C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8062704 - - thumb_func_start sub_8062724 -sub_8062724: @ 8062724 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl obj_anim_image_set_and_seek - movs r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8062724 - - thumb_func_start sub_8062740 -sub_8062740: @ 8062740 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064864 - lsls r0, 24 - cmp r0, 0 - beq _0806275C - adds r0, r4, 0 - movs r1, 0x20 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x32] -_0806275C: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8062740 - - thumb_func_start sub_8062764 -sub_8062764: @ 8062764 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r2, [r4, 0x1] - lsls r1, r2, 26 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 5 - subs r0, 0x22 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - beq _08062796 - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x3 - strh r0, [r5, 0x32] -_08062796: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062764 - - thumb_func_start sub_80627A0 -sub_80627A0: @ 80627A0 - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl obj_anim_image_set_and_seek - movs r0, 0x1 - strh r0, [r4, 0x32] - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80627A0 - - thumb_func_start sub_80627BC -sub_80627BC: @ 80627BC - push {r4,lr} - adds r4, r1, 0 - adds r0, r4, 0 - bl sub_8064864 - lsls r0, 24 - cmp r0, 0 - beq _080627D8 - adds r0, r4, 0 - movs r1, 0x20 - bl sub_8064820 - movs r0, 0x2 - strh r0, [r4, 0x32] -_080627D8: - movs r0, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80627BC - - thumb_func_start sub_80627E0 -sub_80627E0: @ 80627E0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldrb r2, [r4, 0x1] - lsls r1, r2, 26 - lsrs r1, 31 - movs r0, 0x1 - eors r1, r0 - lsls r1, 5 - subs r0, 0x22 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r5, 0 - bl sub_8064824 - lsls r0, 24 - cmp r0, 0 - beq _08062812 - ldrb r0, [r4, 0x1] - movs r1, 0x20 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x3 - strh r0, [r5, 0x32] -_08062812: - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80627E0 - - thumb_func_start sub_806281C -sub_806281C: @ 806281C - ldrb r2, [r0, 0x3] - movs r3, 0x4 - orrs r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_806281C - - thumb_func_start sub_806282C -sub_806282C: @ 806282C - ldrb r3, [r0, 0x3] - movs r2, 0x5 - negs r2, r2 - ands r2, r3 - strb r2, [r0, 0x3] - movs r0, 0x1 - strh r0, [r1, 0x32] - bx lr - thumb_func_end sub_806282C - - thumb_func_start sub_806283C -sub_806283C: @ 806283C - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - adds r0, r4, 0 - bl InitSpriteAffineAnim - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - adds r4, 0x42 - ldrb r1, [r4] - movs r0, 0x3F - ands r0, r1 - strb r0, [r4] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806283C - - thumb_func_start sub_806286C -sub_806286C: @ 806286C - push {r4,lr} - adds r4, r1, 0 - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl FreeOamMatrix - ldrb r0, [r4, 0x1] - movs r1, 0x4 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x1] - lsrs r1, 6 - ldrb r2, [r4, 0x3] - lsrs r2, 6 - movs r3, 0 - adds r0, r4, 0 - bl CalcCenterToCornerVec - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_806286C - - thumb_func_start sub_806289C -sub_806289C: @ 806289C - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8060ED8 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAffineAnimIfDifferent - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80628D0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_806289C - - thumb_func_start sub_80628D0 -sub_80628D0: @ 80628D0 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _080628E2 - movs r0, 0 - b _080628F4 -_080628E2: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080628F4: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80628D0 - thumb_func_start sub_80628FC sub_80628FC: @ 80628FC push {r4,r5,lr} diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h new file mode 100755 index 000000000..62f492bdc --- /dev/null +++ b/include/field_effect_helpers.h @@ -0,0 +1,11 @@ +// +// Created by scott on 5/25/2017. +// + +#ifndef POKERUBY_FIELD_EFFECT_HELPERS_H +#define POKERUBY_FIELD_EFFECT_HELPERS_H + +void sub_812869C(struct MapObject *); +bool8 sub_81286C4(struct MapObject *); + +#endif //POKERUBY_FIELD_EFFECT_HELPERS_H diff --git a/include/trainer_see.h b/include/trainer_see.h old mode 100644 new mode 100755 index 0113143b6..b80a41641 --- a/include/trainer_see.h +++ b/include/trainer_see.h @@ -28,7 +28,7 @@ s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj); s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj); s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj); void sub_80846E4(u8 taskId); -void sub_8084794(u32 var); +void sub_8084794(struct MapObject *var); void sub_80847C8(void); void sub_80847D8(u8); void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index aa2169677..d12e4cfe1 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -15,6 +15,8 @@ #include "field_camera.h" #include "metatile_behavior.h" #include "map_constants.h" +#include "trainer_see.h" +#include "field_effect_helpers.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -5749,3 +5751,167 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite) sprite->data2 = 1; return TRUE; } + +bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldEffectStart(0x0); + sprite->data2 = 1; + return TRUE; +} + +bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldEffectStart(0x21); + sprite->data2 = 1; + return TRUE; +} + +bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite) +{ + FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]); + FieldEffectStart(0x2e); + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_8062704(struct MapObject *, struct Sprite *); + +bool8 sub_80626C0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (mapObject->animPattern == 0x3F) + { + sub_8084794(mapObject); + return FALSE; + } + else if (mapObject->animPattern != 0x39 && mapObject->animPattern != 0x3A) + { + sprite->data2 = 2; + return TRUE; + } + else + { + sub_812869C(mapObject); + sprite->data2 = 1; + return sub_8062704(mapObject, sprite); + } +} + +bool8 sub_8062704(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_81286C4(mapObject)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062724(struct MapObject *mapObject, struct Sprite *sprite) +{ + obj_anim_image_set_and_seek(sprite, 1, 0); + sprite->data2 = 1; + return FALSE; +} + +bool8 sub_8062740(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064864(sprite)) + { + sub_8064820(sprite, 0x20); + sprite->data2 = 2; + } + return FALSE; +} + +bool8 sub_8062764(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_13 ^= 1; + if (sub_8064824(sprite)) + { + mapObject->mapobj_bit_13 = 1; + sprite->data2 = 3; + } + return FALSE; +} + +bool8 sub_80627A0(struct MapObject *mapObject, struct Sprite *sprite) +{ + obj_anim_image_set_and_seek(sprite, 1, 0); + sprite->data2 = 1; + return FALSE; +} + +bool8 sub_80627BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8064864(sprite)) + { + sub_8064820(sprite, 0x20); + sprite->data2 = 2; + } + return FALSE; +} + +bool8 sub_80627E0(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_13 ^= 1; + if (sub_8064824(sprite)) + { + mapObject->mapobj_bit_13 = 1; + sprite->data2 = 3; + } + return FALSE; +} + +bool8 sub_806281C(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_26 = 1; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_806282C(struct MapObject *mapObject, struct Sprite *sprite) +{ + mapObject->mapobj_bit_26 = 0; + sprite->data2 = 1; + return TRUE; +} + +bool8 sub_806283C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->oam.affineMode = 3; + InitSpriteAffineAnim(sprite); + sprite->affineAnimPaused = 1; + sprite->subspriteMode = 0; + return TRUE; +} + +bool8 sub_806286C(struct MapObject *mapObject, struct Sprite *sprite) +{ + FreeOamMatrix(sprite->oam.matrixNum); + sprite->oam.affineMode = 0; + CalcCenterToCornerVec(sprite, sprite->oam.shape, sprite->oam.size, sprite->oam.affineMode); + return TRUE; +} + +bool8 sub_80628D0(struct MapObject *, struct Sprite *); + +bool8 sub_806289C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_SOUTH); + sprite->affineAnimPaused = 0; + StartSpriteAffineAnimIfDifferent(sprite, 0); + return sub_80628D0(mapObject, sprite); +} + +bool8 sub_80628D0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->affineAnimPaused = 1; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} diff --git a/src/trainer_see.c b/src/trainer_see.c old mode 100644 new mode 100755 index 9d58faab8..6c2bf0ab0 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -373,9 +373,9 @@ void sub_80846E4(u8 taskId) mapObj->mapobj_bit_7 = 0; } -void sub_8084794(u32 var) +void sub_8084794(struct MapObject *var) { - StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], var); + StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var); } void sub_80847C8(void) -- cgit v1.2.3 From 65cca21dddc7ae26f96c7757504b2b39765d9eb0 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 26 May 2017 12:04:13 -0400 Subject: Finish decompiling functions which can reasonably be decompiled in field_map_obj.s --- asm/field_map_obj.s | 1856 --------------------------------------------------- ld_script.txt | 1 - src/field_map_obj.c | 835 ++++++++++++++++++++++- 3 files changed, 828 insertions(+), 1864 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index 84ea043d1..c8c402217 100755 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -626,1859 +626,3 @@ _0805F8C0: .align 2, 0 _0805F8DC: .4byte gUnknown_0836DC09 thumb_func_end oac_hopping - - .section .text_805fd18 - - thumb_func_start sub_80628FC -sub_80628FC: @ 80628FC - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r2, 0x1 - bl sub_8060ED8 - adds r2, r4, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - adds r0, r4, 0 - movs r1, 0x1 - bl ChangeSpriteAffineAnimIfDifferent - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8062930 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80628FC - - thumb_func_start sub_8062930 -sub_8062930: @ 8062930 - push {r4,lr} - adds r4, r1, 0 - bl an_walk_any_2 - lsls r0, 24 - cmp r0, 0 - bne _08062942 - movs r0, 0 - b _08062954 -_08062942: - adds r2, r4, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08062954: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8062930 - - thumb_func_start sub_806295C -sub_806295C: @ 806295C - push {r4-r6,lr} - adds r5, r0, 0 - adds r6, r1, 0 - lsls r4, r2, 24 - lsrs r4, 24 - adds r1, r4, 0 - bl FieldObjectSetDirection - adds r0, r5, 0 - bl npc_coords_shift_still - adds r0, r4, 0 - bl sub_805FDD8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_805FE64 - adds r2, r6, 0 - adds r2, 0x2C - ldrb r0, [r2] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r6, 0x32] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_806295C - - thumb_func_start sub_806299C -sub_806299C: @ 806299C - push {lr} - movs r2, 0x1 - bl sub_806295C - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_806299C - - thumb_func_start sub_80629AC -sub_80629AC: @ 80629AC - push {lr} - movs r2, 0x2 - bl sub_806295C - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_80629AC - - thumb_func_start sub_80629BC -sub_80629BC: @ 80629BC - push {lr} - movs r2, 0x3 - bl sub_806295C - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_80629BC - - thumb_func_start sub_80629CC -sub_80629CC: @ 80629CC - push {lr} - movs r2, 0x4 - bl sub_806295C - movs r0, 0x1 - pop {r1} - bx r1 - thumb_func_end sub_80629CC - - thumb_func_start sub_80629DC -sub_80629DC: @ 80629DC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_805FD98 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80629DC - - thumb_func_start sub_8062A00 -sub_8062A00: @ 8062A00 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_805FD98 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062A00 - - thumb_func_start sub_8062A24 -sub_8062A24: @ 8062A24 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_805FD98 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062A24 - - thumb_func_start sub_8062A48 -sub_8062A48: @ 8062A48 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_805FD98 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062A48 - - thumb_func_start sub_8062A6C -sub_8062A6C: @ 8062A6C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_805FDB8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062A6C - - thumb_func_start sub_8062A90 -sub_8062A90: @ 8062A90 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_805FDB8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062A90 - - thumb_func_start sub_8062AB4 -sub_8062AB4: @ 8062AB4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_805FDB8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062AB4 - - thumb_func_start sub_8062AD8 -sub_8062AD8: @ 8062AD8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_805FDB8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062AD8 - - thumb_func_start sub_8062AFC -sub_8062AFC: @ 8062AFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_805FDC8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062AFC - - thumb_func_start sub_8062B20 -sub_8062B20: @ 8062B20 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_805FDC8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062B20 - - thumb_func_start sub_8062B44 -sub_8062B44: @ 8062B44 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_805FDC8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062B44 - - thumb_func_start sub_8062B68 -sub_8062B68: @ 8062B68 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_805FDC8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl npc_set_direction_and_anim__an_proceed - movs r0, 0 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062B68 - - thumb_func_start sub_8062B8C -sub_8062B8C: @ 8062B8C - push {r4-r6,lr} - sub sp, 0x4 - adds r6, r0, 0 - adds r5, r1, 0 - adds r4, r2, 0 - ldr r0, [sp, 0x14] - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - adds r0, r6, 0 - adds r2, r4, 0 - bl sub_806113C - adds r0, r4, 0 - bl sub_805FD98 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r5, 0 - bl StartSpriteAnimIfDifferent - adds r0, r6, 0 - bl DoShadowFieldEffect - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8062B8C - - thumb_func_start sub_8062BD0 -sub_8062BD0: @ 8062BD0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062BFC - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062BD0 - - thumb_func_start sub_8062BFC -sub_8062BFC: @ 8062BFC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062C10 - movs r0, 0 - b _08062C20 -_08062C10: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062C20: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062BFC - - thumb_func_start sub_8062C28 -sub_8062C28: @ 8062C28 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062C54 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062C28 - - thumb_func_start sub_8062C54 -sub_8062C54: @ 8062C54 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062C68 - movs r0, 0 - b _08062C78 -_08062C68: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062C78: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062C54 - - thumb_func_start sub_8062C80 -sub_8062C80: @ 8062C80 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062CAC - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062C80 - - thumb_func_start sub_8062CAC -sub_8062CAC: @ 8062CAC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062CC0 - movs r0, 0 - b _08062CD0 -_08062CC0: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062CD0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062CAC - - thumb_func_start sub_8062CD8 -sub_8062CD8: @ 8062CD8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062D04 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062CD8 - - thumb_func_start sub_8062D04 -sub_8062D04: @ 8062D04 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062D18 - movs r0, 0 - b _08062D28 -_08062D18: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062D28: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062D04 - - thumb_func_start sub_8062D30 -sub_8062D30: @ 8062D30 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062D5C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062D30 - - thumb_func_start sub_8062D5C -sub_8062D5C: @ 8062D5C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062D70 - movs r0, 0 - b _08062D80 -_08062D70: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062D80: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062D5C - - thumb_func_start sub_8062D88 -sub_8062D88: @ 8062D88 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062DB4 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062D88 - - thumb_func_start sub_8062DB4 -sub_8062DB4: @ 8062DB4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062DC8 - movs r0, 0 - b _08062DD8 -_08062DC8: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062DD8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062DB4 - - thumb_func_start sub_8062DE0 -sub_8062DE0: @ 8062DE0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062E0C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062DE0 - - thumb_func_start sub_8062E0C -sub_8062E0C: @ 8062E0C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062E20 - movs r0, 0 - b _08062E30 -_08062E20: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062E30: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062E0C - - thumb_func_start sub_8062E38 -sub_8062E38: @ 8062E38 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062E64 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062E38 - - thumb_func_start sub_8062E64 -sub_8062E64: @ 8062E64 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062E78 - movs r0, 0 - b _08062E88 -_08062E78: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062E88: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062E64 - - thumb_func_start sub_8062E90 -sub_8062E90: @ 8062E90 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062EBC - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062E90 - - thumb_func_start sub_8062EBC -sub_8062EBC: @ 8062EBC - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062ED0 - movs r0, 0 - b _08062EE0 -_08062ED0: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062EE0: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062EBC - - thumb_func_start sub_8062EE8 -sub_8062EE8: @ 8062EE8 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062F14 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062EE8 - - thumb_func_start sub_8062F14 -sub_8062F14: @ 8062F14 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062F28 - movs r0, 0 - b _08062F38 -_08062F28: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062F38: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062F14 - - thumb_func_start sub_8062F40 -sub_8062F40: @ 8062F40 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062F6C - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062F40 - - thumb_func_start sub_8062F6C -sub_8062F6C: @ 8062F6C - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062F80 - movs r0, 0 - b _08062F90 -_08062F80: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062F90: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062F6C - - thumb_func_start sub_8062F98 -sub_8062F98: @ 8062F98 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0 - str r0, [sp] - adds r0, r4, 0 - movs r2, 0x4 - movs r3, 0x2 - bl sub_8062B8C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8062FC4 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062F98 - - thumb_func_start sub_8062FC4 -sub_8062FC4: @ 8062FC4 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_8061328 - lsls r0, 24 - cmp r0, 0 - bne _08062FD8 - movs r0, 0 - b _08062FE8 -_08062FD8: - ldrb r0, [r4, 0x2] - movs r1, 0x41 - negs r1, r1 - ands r1, r0 - strb r1, [r4, 0x2] - movs r0, 0x2 - strh r0, [r5, 0x32] - movs r0, 0x1 -_08062FE8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062FC4 - - thumb_func_start sub_8062FF0 -sub_8062FF0: @ 8062FF0 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x1 - bl sub_805FDD8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x1 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8062FF0 - - thumb_func_start sub_8063028 -sub_8063028: @ 8063028 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x2 - bl sub_805FDD8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x2 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063028 - - thumb_func_start sub_8063060 -sub_8063060: @ 8063060 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x3 - bl sub_805FDD8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063060 - - thumb_func_start sub_8063098 -sub_8063098: @ 8063098 - push {r4,r5,lr} - sub sp, 0x4 - adds r4, r0, 0 - adds r5, r1, 0 - movs r0, 0x4 - bl sub_805FDD8 - adds r3, r0, 0 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x8 - str r0, [sp] - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x4 - bl sub_80616CC - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8061714 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063098 - - thumb_func_start sub_80630D0 -sub_80630D0: @ 80630D0 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_8060D20 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_805FD98 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80630D0 - - thumb_func_start sub_8063108 -sub_8063108: @ 8063108 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_80630D0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063128 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063108 - - thumb_func_start sub_8063128 -sub_8063128: @ 8063128 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806313A - movs r0, 0 - b _08063140 -_0806313A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08063140: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063128 - - thumb_func_start sub_8063148 -sub_8063148: @ 8063148 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80630D0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063168 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063148 - - thumb_func_start sub_8063168 -sub_8063168: @ 8063168 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806317A - movs r0, 0 - b _08063180 -_0806317A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08063180: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063168 - - thumb_func_start sub_8063188 -sub_8063188: @ 8063188 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80630D0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80631A8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063188 - - thumb_func_start sub_80631A8 -sub_80631A8: @ 80631A8 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080631BA - movs r0, 0 - b _080631C0 -_080631BA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080631C0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80631A8 - - thumb_func_start sub_80631C8 -sub_80631C8: @ 80631C8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_80630D0 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80631E8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80631C8 - - thumb_func_start sub_80631E8 -sub_80631E8: @ 80631E8 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080631FA - movs r0, 0 - b _08063200 -_080631FA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08063200: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80631E8 - - thumb_func_start sub_8063208 -sub_8063208: @ 8063208 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_8060D20 - ldrb r0, [r4, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_805FDD8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_805FE28 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8063208 - - thumb_func_start sub_8063238 -sub_8063238: @ 8063238 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8063208 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063258 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063238 - - thumb_func_start sub_8063258 -sub_8063258: @ 8063258 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806326A - movs r0, 0 - b _08063270 -_0806326A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08063270: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063258 - - thumb_func_start sub_8063278 -sub_8063278: @ 8063278 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_8063208 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063298 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063278 - - thumb_func_start sub_8063298 -sub_8063298: @ 8063298 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080632AA - movs r0, 0 - b _080632B0 -_080632AA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080632B0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063298 - - thumb_func_start sub_80632B8 -sub_80632B8: @ 80632B8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_8063208 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80632D8 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80632B8 - - thumb_func_start sub_80632D8 -sub_80632D8: @ 80632D8 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080632EA - movs r0, 0 - b _080632F0 -_080632EA: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080632F0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80632D8 - - thumb_func_start sub_80632F8 -sub_80632F8: @ 80632F8 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_8063208 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063318 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80632F8 - - thumb_func_start sub_8063318 -sub_8063318: @ 8063318 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _0806332A - movs r0, 0 - b _08063330 -_0806332A: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08063330: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063318 - - thumb_func_start sub_8063338 -sub_8063338: @ 8063338 - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - lsls r3, 24 - lsrs r3, 24 - bl sub_8060D20 - ldrb r0, [r5, 0x18] - lsls r0, 28 - lsrs r0, 28 - bl sub_805FDB8 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r4, 0 - bl StartSpriteAnim - adds r0, r4, 0 - movs r1, 0 - bl SeekSpriteAnim - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8063338 - - thumb_func_start sub_8063370 -sub_8063370: @ 8063370 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x1 - movs r3, 0x1 - bl sub_8063338 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063390 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063370 - - thumb_func_start sub_8063390 -sub_8063390: @ 8063390 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080633A2 - movs r0, 0 - b _080633A8 -_080633A2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080633A8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063390 - - thumb_func_start sub_80633B0 -sub_80633B0: @ 80633B0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_8063338 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80633D0 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80633B0 - - thumb_func_start sub_80633D0 -sub_80633D0: @ 80633D0 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _080633E2 - movs r0, 0 - b _080633E8 -_080633E2: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_080633E8: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80633D0 - - thumb_func_start sub_80633F0 -sub_80633F0: @ 80633F0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_8063338 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063410 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80633F0 - - thumb_func_start sub_8063410 -sub_8063410: @ 8063410 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08063422 - movs r0, 0 - b _08063428 -_08063422: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08063428: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063410 - - thumb_func_start sub_8063430 -sub_8063430: @ 8063430 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - movs r2, 0x4 - movs r3, 0x1 - bl sub_8063338 - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_8063450 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8063430 - - thumb_func_start sub_8063450 -sub_8063450: @ 8063450 - push {r4,lr} - adds r4, r1, 0 - bl npc_obj_ministep_stop_on_arrival - lsls r0, 24 - cmp r0, 0 - bne _08063462 - movs r0, 0 - b _08063468 -_08063462: - movs r0, 0x2 - strh r0, [r4, 0x32] - movs r0, 0x1 -_08063468: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8063450 - - thumb_func_start sub_8063470 -sub_8063470: @ 8063470 - movs r0, 0x1 - bx lr - thumb_func_end sub_8063470 - - thumb_func_start sub_8063474 -sub_8063474: @ 8063474 - adds r1, 0x2C - ldrb r0, [r1] - movs r2, 0x40 - orrs r0, r2 - strb r0, [r1] - movs r0, 0x1 - bx lr - thumb_func_end sub_8063474 - - thumb_func_start npc_obj_transfer_image_anim_pause_flag -npc_obj_transfer_image_anim_pause_flag: @ 8063484 - push {lr} - ldrb r0, [r0, 0x1] - lsls r0, 29 - cmp r0, 0 - bge _0806349A - adds r0, r1, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] -_0806349A: - pop {r0} - bx r0 - thumb_func_end npc_obj_transfer_image_anim_pause_flag - - thumb_func_start sub_80634A0 -sub_80634A0: @ 80634A0 - push {r4,lr} - adds r4, r0, 0 - ldrb r3, [r4, 0x1] - lsls r0, r3, 28 - cmp r0, 0 - bge _080634C8 - adds r2, r1, 0 - adds r2, 0x2C - ldrb r1, [r2] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r3 - movs r1, 0x9 - negs r1, r1 - ands r0, r1 - strb r0, [r4, 0x1] -_080634C8: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80634A0 - - thumb_func_start sub_80634D0 -sub_80634D0: @ 80634D0 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - bl sub_80634E8 - adds r0, r4, 0 - adds r1, r5, 0 - bl npc_update_obj_anim_flag - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80634D0 - - thumb_func_start sub_80634E8 -sub_80634E8: @ 80634E8 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - ldrb r1, [r5, 0x1] - movs r0, 0x41 - negs r0, r0 - ands r0, r1 - strb r0, [r5, 0x1] - ldrb r0, [r5, 0x5] - bl GetFieldObjectGraphicsInfo - adds r6, r0, 0 - adds r0, r4, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0806354C - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldr r2, _08063544 @ =gSpriteCoordOffsetX - adds r0, r1 - ldrh r2, [r2] - adds r0, r2 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r1, [r4, 0x26] - ldrh r0, [r4, 0x22] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - ldr r2, _08063548 @ =gSpriteCoordOffsetY - adds r0, r1 - ldrh r2, [r2] - adds r0, r2 - b _08063574 - .align 2, 0 -_08063544: .4byte gSpriteCoordOffsetX -_08063548: .4byte gSpriteCoordOffsetY -_0806354C: - ldrh r1, [r4, 0x24] - ldrh r0, [r4, 0x20] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - ldrh r1, [r4, 0x26] - ldrh r0, [r4, 0x22] - adds r1, r0 - adds r0, r4, 0 - adds r0, 0x29 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - adds r0, r1 -_08063574: - lsls r0, 16 - lsrs r2, r0, 16 - ldrh r0, [r6, 0x8] - adds r0, r3 - lsls r0, 16 - lsrs r1, r0, 16 - ldrh r0, [r6, 0xA] - adds r0, r2 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r3, 16 - asrs r0, 16 - cmp r0, 0xFF - bgt _0806359C - lsls r0, r1, 16 - asrs r0, 16 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _080635A4 -_0806359C: - ldrb r0, [r5, 0x1] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r5, 0x1] -_080635A4: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0xAF - bgt _080635B8 - lsls r0, r4, 16 - asrs r0, 16 - movs r1, 0x10 - negs r1, r1 - cmp r0, r1 - bge _080635C0 -_080635B8: - ldrb r0, [r5, 0x1] - movs r1, 0x40 - orrs r0, r1 - strb r0, [r5, 0x1] -_080635C0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80634E8 - - thumb_func_start npc_update_obj_anim_flag -npc_update_obj_anim_flag: @ 80635C8 - push {lr} - adds r2, r1, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r3, 0x5 - negs r3, r3 - ands r3, r1 - strb r3, [r2] - ldrb r1, [r0, 0x1] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - beq _080635EA - movs r1, 0x4 - adds r0, r3, 0 - orrs r0, r1 - strb r0, [r2] -_080635EA: - pop {r0} - bx r0 - thumb_func_end npc_update_obj_anim_flag - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 8557d521c..b67fdfc73 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -93,7 +93,6 @@ SECTIONS { src/field_map_obj.o(.text); asm/field_map_obj.o(.text); src/field_map_obj.o(.text_fmocb2_c); - asm/field_map_obj.o(.text_805fd18); src/field_ground_effect.o(.text); asm/field_ground_effect.o(.text); src/field_map_obj_helpers.o(.text); diff --git a/src/field_map_obj.c b/src/field_map_obj.c index d12e4cfe1..eaad98cb0 100755 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -26,7 +26,7 @@ extern void ClearPlayerAvatarInfo(void); extern void npc_load_two_palettes__no_record(u16, u8); extern void npc_load_two_palettes__and_record(u16, u8); extern void sub_8060388(s16, s16, s16 *, s16 *); -extern void sub_80634D0(struct MapObject *, struct Sprite *); +void sub_80634D0(struct MapObject *, struct Sprite *); extern void pal_patch_for_npc(u16, u16); extern void CameraObjectReset1(void); @@ -3886,7 +3886,7 @@ u8 FieldObjectGetSpecialAnim(struct MapObject *mapObject) extern void DoGroundEffects_OnSpawn(struct MapObject *mapObject, struct Sprite *sprite); extern void DoGroundEffects_OnBeginStep(struct MapObject *mapObject, struct Sprite *sprite); extern void DoGroundEffects_OnFinishStep(struct MapObject *mapObject, struct Sprite *sprite); -extern void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite); +void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite); void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite); void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite); void FieldObjectUpdateSubpriority(struct MapObject *mapObject, struct Sprite *sprite); @@ -4398,7 +4398,7 @@ u8 sub_8060D10(struct MapObject *mapObject, struct Sprite *sprite) return 1; } -void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2) +void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3) { s16 x; s16 y; @@ -4407,7 +4407,7 @@ void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 directio FieldObjectSetDirection(mapObject, direction); MoveCoords(direction, &x, &y); npc_coords_shift(mapObject, x, y); - oamt_npc_ministep_reset(sprite, direction, a2); + oamt_npc_ministep_reset(sprite, direction, a3); sprite->animPaused = 0; mapObject->mapobj_bit_2 = 1; sprite->data2 = 1; @@ -4415,12 +4415,12 @@ void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 directio extern u8 (*const gUnknown_083759C0[5])(u8); -void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2) +void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3) { u8 (*functions[5])(u8); memcpy(functions, gUnknown_083759C0, sizeof(gUnknown_083759C0)); - sub_8060D20(mapObject, sprite, direction, a2); - sub_805FE28(mapObject, sprite, functions[a2](mapObject->mapobj_unk_18)); + sub_8060D20(mapObject, sprite, direction, a3); + sub_805FE28(mapObject, sprite, functions[a3](mapObject->mapobj_unk_18)); } void do_run_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) @@ -5915,3 +5915,824 @@ bool8 sub_80628D0(struct MapObject *mapObject, struct Sprite *sprite) } return FALSE; } + +bool8 sub_8062930(struct MapObject *, struct Sprite *); + +bool8 sub_80628FC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8060ED8(mapObject, sprite, DIR_SOUTH); + sprite->affineAnimPaused = 0; + ChangeSpriteAffineAnimIfDifferent(sprite, 1); + return sub_8062930(mapObject, sprite); +} + +bool8 sub_8062930(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (an_walk_any_2(mapObject, sprite)) + { + sprite->affineAnimPaused = 1; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +void sub_806295C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction) +{ + FieldObjectSetDirection(mapObject, direction); + npc_coords_shift_still(mapObject); + sub_805FE64(mapObject, sprite, sub_805FDD8(direction)); + sprite->animPaused = 1; + sprite->data2 = 1; +} + +bool8 sub_806299C(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_806295C(mapObject, sprite, DIR_SOUTH); + return TRUE; +} + +bool8 sub_80629AC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_806295C(mapObject, sprite, DIR_NORTH); + return TRUE; +} + +bool8 sub_80629BC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_806295C(mapObject, sprite, DIR_WEST); + return TRUE; +} + +bool8 sub_80629CC(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_806295C(mapObject, sprite, DIR_EAST); + return TRUE; +} + +bool8 sub_80629DC(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, sub_805FD98(DIR_SOUTH)); + return FALSE; +} + +bool8 sub_8062A00(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_NORTH, sub_805FD98(DIR_NORTH)); + return FALSE; +} + +bool8 sub_8062A24(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_WEST, sub_805FD98(DIR_WEST)); + return FALSE; +} + +bool8 sub_8062A48(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_EAST, sub_805FD98(DIR_EAST)); + return FALSE; +} + +bool8 sub_8062A6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, sub_805FDB8(DIR_SOUTH)); + return FALSE; +} + +bool8 sub_8062A90(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_NORTH, sub_805FDB8(DIR_NORTH)); + return FALSE; +} + +bool8 sub_8062AB4(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_WEST, sub_805FDB8(DIR_WEST)); + return FALSE; +} + +bool8 sub_8062AD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_EAST, sub_805FDB8(DIR_EAST)); + return FALSE; +} + +bool8 sub_8062AFC(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_SOUTH, sub_805FDC8(DIR_SOUTH)); + return FALSE; +} + +bool8 sub_8062B20(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_NORTH, sub_805FDC8(DIR_NORTH)); + return FALSE; +} + +bool8 sub_8062B44(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_WEST, sub_805FDC8(DIR_WEST)); + return FALSE; +} + +bool8 sub_8062B68(struct MapObject *mapObject, struct Sprite *sprite) +{ + npc_set_direction_and_anim__an_proceed(mapObject, sprite, DIR_EAST, sub_805FDC8(DIR_EAST)); + return FALSE; +} + +void sub_8062B8C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3, u8 a4) +{ + sub_806113C(mapObject, sprite, direction, a3, a4); + StartSpriteAnimIfDifferent(sprite, sub_805FD98(direction)); + DoShadowFieldEffect(mapObject); +} + +bool8 sub_8062BFC(struct MapObject *, struct Sprite *); + +bool8 sub_8062BD0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_SOUTH, 0, 1); + return sub_8062BFC(mapObject, sprite); +} + +bool8 sub_8062BFC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062C54(struct MapObject *, struct Sprite *); + +bool8 sub_8062C28(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_NORTH, 0, 1); + return sub_8062C54(mapObject, sprite); +} + +bool8 sub_8062C54(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062CAC(struct MapObject *, struct Sprite *); + +bool8 sub_8062C80(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_WEST, 0, 1); + return sub_8062CAC(mapObject, sprite); +} + +bool8 sub_8062CAC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062D04(struct MapObject *, struct Sprite *); + +bool8 sub_8062CD8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_EAST, 0, 1); + return sub_8062D04(mapObject, sprite); +} + +bool8 sub_8062D04(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062D5C(struct MapObject *, struct Sprite *); + +bool8 sub_8062D30(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_SOUTH, 1, 1); + return sub_8062D5C(mapObject, sprite); +} + +bool8 sub_8062D5C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062DB4(struct MapObject *, struct Sprite *); + +bool8 sub_8062D88(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_NORTH, 1, 1); + return sub_8062DB4(mapObject, sprite); +} + +bool8 sub_8062DB4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062E0C(struct MapObject *, struct Sprite *); + +bool8 sub_8062DE0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_WEST, 1, 1); + return sub_8062E0C(mapObject, sprite); +} + +bool8 sub_8062E0C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062E64(struct MapObject *, struct Sprite *); + +bool8 sub_8062E38(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_EAST, 1, 1); + return sub_8062E64(mapObject, sprite); +} + +bool8 sub_8062E64(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062EBC(struct MapObject *, struct Sprite *); + +bool8 sub_8062E90(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_SOUTH, 2, 0); + return sub_8062EBC(mapObject, sprite); +} + +bool8 sub_8062EBC(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062F14(struct MapObject *, struct Sprite *); + +bool8 sub_8062EE8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_NORTH, 2, 0); + return sub_8062F14(mapObject, sprite); +} + +bool8 sub_8062F14(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062F6C(struct MapObject *, struct Sprite *); + +bool8 sub_8062F40(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_WEST, 2, 0); + return sub_8062F6C(mapObject, sprite); +} + +bool8 sub_8062F6C(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062FC4(struct MapObject *, struct Sprite *); + +bool8 sub_8062F98(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8062B8C(mapObject, sprite, DIR_EAST, 2, 0); + return sub_8062FC4(mapObject, sprite); +} + +bool8 sub_8062FC4(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (sub_8061328(mapObject, sprite)) + { + mapObject->mapobj_bit_22 = 0; + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8062FF0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_SOUTH, sub_805FDD8(DIR_SOUTH), 8); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8063028(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_NORTH, sub_805FDD8(DIR_NORTH), 8); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8063060(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_WEST, sub_805FDD8(DIR_WEST), 8); + return sub_8061714(mapObject, sprite); +} + +bool8 sub_8063098(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80616CC(mapObject, sprite, DIR_EAST, sub_805FDD8(DIR_EAST), 8); + return sub_8061714(mapObject, sprite); +} + +void sub_80630D0(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3) +{ + sub_8060D20(mapObject, sprite, direction, a3); + StartSpriteAnim(sprite, sub_805FD98(mapObject->mapobj_unk_18)); + SeekSpriteAnim(sprite, 0); +} + +bool8 sub_8063128(struct MapObject *, struct Sprite *); + +bool8 sub_8063108(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80630D0(mapObject, sprite, DIR_SOUTH, 1); + return sub_8063128(mapObject, sprite); +} + +bool8 sub_8063128(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8063168(struct MapObject *, struct Sprite *); + +bool8 sub_8063148(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80630D0(mapObject, sprite, DIR_NORTH, 1); + return sub_8063168(mapObject, sprite); +} + +bool8 sub_8063168(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80631A8(struct MapObject *, struct Sprite *); + +bool8 sub_8063188(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80630D0(mapObject, sprite, DIR_WEST, 1); + return sub_80631A8(mapObject, sprite); +} + +bool8 sub_80631A8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80631E8(struct MapObject *, struct Sprite *); + +bool8 sub_80631C8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80630D0(mapObject, sprite, DIR_EAST, 1); + return sub_80631E8(mapObject, sprite); +} + +bool8 sub_80631E8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +void sub_8063208(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3) +{ + sub_8060D20(mapObject, sprite, direction, a3); + sub_805FE28(mapObject, sprite, sub_805FDD8(mapObject->mapobj_unk_18)); +} + +bool8 sub_8063258(struct MapObject *, struct Sprite *); + +bool8 sub_8063238(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063208(mapObject, sprite, DIR_SOUTH, 1); + return sub_8063258(mapObject, sprite); +} + +bool8 sub_8063258(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8063298(struct MapObject *, struct Sprite *); + +bool8 sub_8063278(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063208(mapObject, sprite, DIR_NORTH, 1); + return sub_8063298(mapObject, sprite); +} + +bool8 sub_8063298(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80632D8(struct MapObject *, struct Sprite *); + +bool8 sub_80632B8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063208(mapObject, sprite, DIR_WEST, 1); + return sub_80632D8(mapObject, sprite); +} + +bool8 sub_80632D8(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8063318(struct MapObject *, struct Sprite *); + +bool8 sub_80632F8(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063208(mapObject, sprite, DIR_EAST, 1); + return sub_8063318(mapObject, sprite); +} + +bool8 sub_8063318(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +void sub_8063338(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a3) +{ + sub_8060D20(mapObject, sprite, direction, a3); + StartSpriteAnim(sprite, sub_805FDB8(mapObject->mapobj_unk_18)); + SeekSpriteAnim(sprite, 0); +} + +bool8 sub_8063390(struct MapObject *, struct Sprite *); + +bool8 sub_8063370(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063338(mapObject, sprite, DIR_SOUTH, 1); + return sub_8063390(mapObject, sprite); +} + +bool8 sub_8063390(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_80633D0(struct MapObject *, struct Sprite *); + +bool8 sub_80633B0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063338(mapObject, sprite, DIR_NORTH, 1); + return sub_80633D0(mapObject, sprite); +} + +bool8 sub_80633D0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8063410(struct MapObject *, struct Sprite *); + +bool8 sub_80633F0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063338(mapObject, sprite, DIR_WEST, 1); + return sub_8063410(mapObject, sprite); +} + +bool8 sub_8063410(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8063450(struct MapObject *, struct Sprite *); + +bool8 sub_8063430(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_8063338(mapObject, sprite, DIR_EAST, 1); + return sub_8063450(mapObject, sprite); +} + +bool8 sub_8063450(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (npc_obj_ministep_stop_on_arrival(mapObject, sprite)) + { + sprite->data2 = 2; + return TRUE; + } + return FALSE; +} + +bool8 sub_8063470(struct MapObject *mapObject, struct Sprite *sprite) +{ + return TRUE; +} + +bool8 sub_8063474(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->animPaused = 1; + return TRUE; +} + +void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (mapObject->mapobj_bit_10) + { + sprite->animPaused = 1; + } +} + +void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (mapObject->mapobj_bit_11) + { + sprite->animPaused = 0; + mapObject->mapobj_bit_10 = 0; + mapObject->mapobj_bit_11 = 0; + } +} + +void sub_80634E8(struct MapObject *, struct Sprite *); +void npc_update_obj_anim_flag(struct MapObject *, struct Sprite *); + +void sub_80634D0(struct MapObject *mapObject, struct Sprite *sprite) +{ + sub_80634E8(mapObject, sprite); + npc_update_obj_anim_flag(mapObject, sprite); +} + +#ifdef NONMATCHING +void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) +{ + u16 x; + u16 y; + s16 x2; + s16 y2; + const struct MapObjectGraphicsInfo *graphicsInfo; + mapObject->mapobj_bit_14 = 0; + graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId); + if (sprite->coordOffsetEnabled) + { + x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX; + y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY; + } else + { + x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX; + y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY; + } + x2 = graphicsInfo->width + x; // offending line + y2 = graphicsInfo->height + y; // similarly offending line + if ((s16)x >= 0x100 || x2 < -0x10) + { + mapObject->mapobj_bit_14 = 1; + } + if ((s16)y >= 0xB0 || y2 < -0x10) + { + mapObject->mapobj_bit_14 = 1; + } +} +#else +__attribute__((naked)) +void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + adds r5, r0, 0\n\ + adds r4, r1, 0\n\ + ldrb r1, [r5, 0x1]\n\ + movs r0, 0x41\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r5, 0x1]\n\ + ldrb r0, [r5, 0x5]\n\ + bl GetFieldObjectGraphicsInfo\n\ + adds r6, r0, 0\n\ + adds r0, r4, 0\n\ + adds r0, 0x3E\n\ + ldrb r1, [r0]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0806354C\n\ + ldrh r1, [r4, 0x24]\n\ + ldrh r0, [r4, 0x20]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x28\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + ldr r2, _08063544 @ =gSpriteCoordOffsetX\n\ + adds r0, r1\n\ + ldrh r2, [r2]\n\ + adds r0, r2\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldrh r1, [r4, 0x26]\n\ + ldrh r0, [r4, 0x22]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x29\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + ldr r2, _08063548 @ =gSpriteCoordOffsetY\n\ + adds r0, r1\n\ + ldrh r2, [r2]\n\ + adds r0, r2\n\ + b _08063574\n\ + .align 2, 0\n\ +_08063544: .4byte gSpriteCoordOffsetX\n\ +_08063548: .4byte gSpriteCoordOffsetY\n\ +_0806354C:\n\ + ldrh r1, [r4, 0x24]\n\ + ldrh r0, [r4, 0x20]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x28\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldrh r1, [r4, 0x26]\n\ + ldrh r0, [r4, 0x22]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x29\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + adds r0, r1\n\ +_08063574:\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + ldrh r0, [r6, 0x8]\n\ + adds r0, r3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + ldrh r0, [r6, 0xA]\n\ + adds r0, r2\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xFF\n\ + bgt _0806359C\n\ + lsls r0, r1, 16\n\ + asrs r0, 16\n\ + movs r1, 0x10\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bge _080635A4\n\ +_0806359C:\n\ + ldrb r0, [r5, 0x1]\n\ + movs r1, 0x40\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ +_080635A4:\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xAF\n\ + bgt _080635B8\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + movs r1, 0x10\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bge _080635C0\n\ +_080635B8:\n\ + ldrb r0, [r5, 0x1]\n\ + movs r1, 0x40\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ +_080635C0:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ +.syntax divided\n"); +} +#endif + +void npc_update_obj_anim_flag(struct MapObject *mapObject, struct Sprite *sprite) +{ + sprite->invisible = 0; + if (mapObject->mapobj_bit_13 || mapObject->mapobj_bit_14) + { + sprite->invisible = 1; + } +} -- cgit v1.2.3 From 21efe53b6805a0dcc5dcba7d1f78e9a7e7bd93c4 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Fri, 26 May 2017 12:43:22 -0400 Subject: Make C and ASM files non-executable --- asm/field_map_obj.s | 0 src/field_map_obj.c | 0 src/trainer_see.c | 0 3 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 asm/field_map_obj.s mode change 100755 => 100644 src/field_map_obj.c mode change 100755 => 100644 src/trainer_see.c diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s old mode 100755 new mode 100644 diff --git a/src/field_map_obj.c b/src/field_map_obj.c old mode 100755 new mode 100644 diff --git a/src/trainer_see.c b/src/trainer_see.c old mode 100755 new mode 100644 -- cgit v1.2.3 From 66e51b641b3ff914ecdaf6a10e08135b4abd9945 Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 27 May 2017 17:13:28 -0400 Subject: Make the irc link bigger --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5346f154e..0782f7a12 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Pokémon Ruby and Sapphire [![Build Status](https://travis-ci.org/pret/pokeruby.svg?branch=master)](https://travis-ci.org/pret/pokeruby) +# Pokémon Ruby and Sapphire [![Build Status][travis-badge]][travis] This is a disassembly of Pokémon Ruby and Sapphire. @@ -9,8 +9,8 @@ It builds the following roms: To set up the repository, see [INSTALL.md](INSTALL.md). -## See also - -irc: [freenode#pret][irc] +### irc: [freenode#pret][irc] [irc]: https://kiwiirc.com/client/irc.freenode.net/?#pret +[travis]: https://travis-ci.org/pret/pokeruby +[travis-badge]: https://travis-ci.org/pret/pokeruby.svg?branch=master -- cgit v1.2.3 From 06218139dc0b7e015850ac9dd5d8658023339a0c Mon Sep 17 00:00:00 2001 From: yenatch Date: Sat, 27 May 2017 17:13:48 -0400 Subject: Add CONTRIBUTING.md --- CONTRIBUTING.md | 340 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 340 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..15ff9dfb3 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,340 @@ +# Decompiling + +Code starts out in `asm/`. When decompiled to C, it goes into `src/`. The goal is to decompile all the code. + +Some of the code in `asm/` is handwritten assembly. It can't and shouldn't be decompiled. It's already commented, so there's no further work to do on these files. +* `asm/crt0.s` +* `asm/libagbsyscall.s` +* `asm/libgcnmultiboot.s` +* `asm/m4a_1.s` +* `asm/m4a_3.s` + +The rest of the `.s` files in `asm/` are fair game. + +The basic decompilation process is: +* Choose a file in `asm/`, i.e. `asm/x.s`. Create a C file called `src/x.c`. +* Translate the first function in `asm/x.s` to C in `src/x.c`. +* `make compare`, and tweak the function until it matches. +* Clean up the code and comment. +* Repeat for each function until `asm/x.s` is empty. + + +# For example, let's decompile `asm/cable_car.s`. + + +## 1. Create `src/cable_car.c` + +```c +#include "global.h" +``` + +`global.h` contains typedefs for GBA programming and more. +It must be the first include in the file. Other includes will assume you have included it. + + +## 2. Include it in the rom + +Include `src/cable_car.c` in the rom by adding `src/cable_car.c` to `ld_script.txt`: +```diff + asm/battle_message.o(.text); + asm/choose_party.o(.text); ++ src/cable_car.o(.text); + asm/cable_car.o(.text); + asm/roulette_util.o(.text); +``` +Do not remove `asm/cable_car.o(.text)`. We want both `src/cable_car.c` and `asm/cable_car.s` in the rom. + + +## 3. Translate the function to C + +Take the first function in `asm/cable_car.s`. Either comment it out or remove it, whichever is easier. + +```asm + thumb_func_start sub_81231EC +sub_81231EC: @ 81231EC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _08123210 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0812320A + ldr r0, _08123214 @ =sub_8123244 + bl SetMainCallback2 + adds r0, r4, 0 + bl DestroyTask +_0812320A: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08123210: .4byte gPaletteFade +_08123214: .4byte sub_8123244 + thumb_func_end sub_81231EC +``` +--- + +Then, start translating the code to `src/cable_car.c`, bit by bit: + +```asm + lsls r0, 24 + lsrs r4, r0, 24 +``` +```c +void sub_81231EC(u8 r4) { +``` +--- +```asm + ldr r0, _08123210 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 +``` +```c + r0 = (u8 *)(&gPaletteFade + 7) & 0x80; +``` +--- + +--- +```asm + cmp r0, 0 + bne _0812320A +``` +```c + if (!r0) { +``` +--- +```asm + ldr r0, _08123214 @ =sub_8123244 + bl SetMainCallback2 +``` +```c + SetMainCallback2(&sub_8123244); +``` +--- +```asm + adds r0, r4, 0 + bl DestroyTask +``` +```c + DestroyTask(r4); +``` +--- +```asm +_0812320A: +``` +```c + } +``` +--- +```asm + pop {r4} + pop {r0} + bx r0 +``` +```c + return; +``` +The type signature of the function depends on the return type. +* `bx r0`: `void` +* `bx r1`: `*` +* `bx lr`: `void`, `*` + +You will need to look at the caller and the function prologue to determine the exact type if not void. + +Since it used `bx r0`, it's `void` for sure. + +--- + +Putting it all together, we get: +```c +void sub_81231EC(u8 r4) { + r0 = (u8 *)(&gPaletteFade + 7) & 0x80; + if (!r0) { + SetMainCallback2(&sub_8123244); + DestroyTask(r4); + } + return; +} +``` + + +## 4. Simplify and document + +This line doesn't look quite right. + +```c + r0 = (u8 *)(&gPaletteFade + 7) & 0x80; +``` + +What is `gPaletteFade`? You can find out where stuff is with `git grep`: + +```sh +git grep "gPaletteFade" include/ +``` +```grep +include/palette.h:extern struct PaletteFadeControl gPaletteFade; +``` + +So it's a struct called `PaletteFadeControl`. Let's look in `palette.h`: + +```c +struct PaletteFadeControl +{ + u32 multipurpose1; + u8 delayCounter:6; + u16 y:5; // blend coefficient + u16 targetY:5; // target blend coefficient + u16 blendColor:15; + u16 active:1; + u16 multipurpose2:6; + u16 yDec:1; // whether blend coefficient is decreasing + u16 bufferTransferDisabled:1; + u16 mode:2; + u16 shouldResetBlendRegisters:1; + u16 hardwareFadeFinishing:1; + u16 softwareFadeFinishingCounter:5; + u16 softwareFadeFinishing:1; + u16 objPaletteToggle:1; + u8 deltaY:4; // rate of change of blend coefficient +}; +``` +--- + +What's the 7th byte in this struct? +```c + u32 multipurpose1; // 0-3 + u8 delayCounter:6; // 4 + u16 y:5; // 5 + u16 targetY:5; // 5-6 + u16 blendColor:15; // 7 + u16 active:1; // 7 +``` + +Byte 7 has both `.blendColor` and `.active`. + +--- + +Okay, what's 0x80 mean? It's `0b10000000`, which is the highest bit in a byte. + +`.active` comes after, which means it's higher, but it's also only one bit, so it's a safe bet. + +```c + r0 = gPaletteFade.active; +``` + +Much better. + +--- + +```c +void sub_81231EC(u8 r4) { + r0 = gPaletteFade.active; + if (!r0) { + SetMainCallback2(&sub_8123244); + DestroyTask(r4); + } + return; +} +``` + +Now the temp variable `r0` is a little pointless. We can simplify this to: + +```c +void sub_81231EC(u8 taskId) { + if (!gPaletteFade.active) { + SetMainCallback2(&sub_8123244); + DestroyTask(taskId); + } +} +``` + +Looks done, right? +This function is pretty simple, so it doesn't need any comments right now. + +But what about `sub_8123244`? It's still not obvious what that function does. We can find out by decompiling it later. + + +## 5. Build + +```sh +make compare +``` +```gcc +src/cable_car.c: In function `sub_81231EC': +src/cable_car.c:4: `gPaletteFade' undeclared (first use in this function) +src/cable_car.c:4: (Each undeclared identifier is reported only once for each function it appears in.) +src/cable_car.c:5: warning: implicit declaration of function `SetMainCallback2' +src/cable_car.c:5: `sub_8123244' undeclared (first use in this function) +src/cable_car.c:6: warning: implicit declaration of function `DestroyTask' +``` + +We got some errors. We need to tell the compiler what `gPaletteFade`, `SetMainCallback2`, `sub_8123244`, and `DestroyTask` are. + +We know `gPaletteFade` is from `palette.h`. We can do the same with the others. Declare them above the function: +```c +#include "palette.h" +#include "main.h" +#include "task.h" +``` +The odd one out is `sub_8123244`, which is in `asm/cable_car.s`! What then? +```c +void sub_8123244(); +``` +Normally, we would do `extern void sub_8123244();`, but it won't be `extern` when we're done this file. + +--- + +Now our file looks like this: +```c +#include "global.h" +#include "palette.h" +#include "main.h" +#include "task.h" + +void sub_8123244(); + +void sub_81231EC(u8 taskId) { + if (!gPaletteFade.active) { + SetMainCallback2(&sub_8123244); + DestroyTask(taskId); + } +} +``` + +--- + +Build again, and we get: +```sh +make compare +``` +```sha1sum +pokeruby.gba: OK +``` + +This means the function matches. Congratulations! + +--- + +If it doesn't match, you will get: +```sha1sum +pokeruby.gba: FAILED +sha1sum: WARNING: 1 computed checksum did NOT match +``` + +--- + +If you forgot to remove the function from `asm/cable_car.s`, you will get this error: +```gcc +asm/cable_car.o: In function `sub_81231EC': +(.text+0x0): multiple definition of `sub_81231EC' +src/cable_car.o:(.text+0x0): first defined here +``` + + +## 6. Repeat until `asm/cable_car.s` is empty + +Once you're done, you can delete `asm/cable_car.s`, and remove it from `ld_script.txt`. + -- cgit v1.2.3