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 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 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