From 973cad17333304eb27bd5c1392d9fd3b93b953af Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Wed, 27 Dec 2023 20:20:43 -0800 Subject: [PATCH 01/18] more documentation and decomp function --- asm/code_80140DC.s | 29 ------------------- asm/code_805D8C8.s | 6 ++-- asm/code_8066D04.s | 12 ++++---- src/code_80140DC.c | 7 +++++ src/code_8066D04.c | 14 ++++----- src/code_8073CF0.c | 6 ++-- src/dungeon_ai_attack.c | 6 ++-- src/dungeon_ai_leader.c | 64 ++++++++++++++++++++--------------------- 8 files changed, 61 insertions(+), 83 deletions(-) diff --git a/asm/code_80140DC.s b/asm/code_80140DC.s index 28b8495c3..3838443eb 100644 --- a/asm/code_80140DC.s +++ b/asm/code_80140DC.s @@ -5,35 +5,6 @@ .text - thumb_func_start sub_8014214 -sub_8014214: - push {r4-r6,lr} - sub sp, 0x14 - lsls r6, r2, 16 - movs r2, 0x1 - negs r2, r2 - ldr r3, _08014244 - movs r5, 0 - str r5, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - str r5, [sp, 0x8] - str r1, [sp, 0xC] - movs r1, 0xC0 - lsls r1, 18 - orrs r1, r6 - lsrs r1, 16 - str r1, [sp, 0x10] - movs r1, 0 - bl sub_8014248 - add sp, 0x14 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08014244: .4byte gUnknown_80D4880 - thumb_func_end sub_8014214 - thumb_func_start sub_8014248 sub_8014248: push {r4-r7,lr} diff --git a/asm/code_805D8C8.s b/asm/code_805D8C8.s index 78cfe7f53..e6a8aa4e9 100644 --- a/asm/code_805D8C8.s +++ b/asm/code_805D8C8.s @@ -1135,7 +1135,7 @@ _0805E1BA: bne _0805E1E0 _0805E1C6: mov r0, r10 - bl sub_8067510 + bl HandleTalkFieldAction bl sub_8044B28 lsls r0, 24 cmp r0, 0 @@ -3208,12 +3208,12 @@ _0805F20C: .4byte 0x00000137 _0805F210: bl GetLeader movs r1, 0x1 - bl sub_806675C + bl HandleSetItemAction b _0805F226 _0805F21C: bl GetLeader movs r1, 0x1 - bl sub_806684C + bl HandleUnsetItemAction _0805F226: movs r0, 0x1 bl sub_8044C10 diff --git a/asm/code_8066D04.s b/asm/code_8066D04.s index e1cf29ecb..644f62e88 100644 --- a/asm/code_8066D04.s +++ b/asm/code_8066D04.s @@ -851,8 +851,8 @@ _08067508: .4byte gDungeon _0806750C: .4byte 0x00003a08 thumb_func_end sub_80671A0 - thumb_func_start sub_8067510 -sub_8067510: + thumb_func_start HandleTalkFieldAction +HandleTalkFieldAction: push {r4,lr} adds r4, r0, 0 bl sub_806773C @@ -864,7 +864,7 @@ sub_8067510: pop {r4} pop {r0} bx r0 - thumb_func_end sub_8067510 + thumb_func_end HandleTalkFieldAction thumb_func_start sub_806752C sub_806752C: @@ -1289,8 +1289,8 @@ _0806787C: .4byte gAvailablePokemonNames _08067880: .4byte 0x0000021d thumb_func_end sub_8067794 - thumb_func_start sub_8067884 -sub_8067884: + thumb_func_start HandleUseMovePlayerAction +HandleUseMovePlayerAction: push {r4-r6,lr} sub sp, 0x4 adds r5, r0, 0 @@ -1351,7 +1351,7 @@ _080678F6: bx r0 .align 2, 0 _08067900: .4byte 0x00000159 - thumb_func_end sub_8067884 + thumb_func_end HandleUseMovePlayerAction thumb_func_start sub_8067904 sub_8067904: diff --git a/src/code_80140DC.c b/src/code_80140DC.c index b3561c731..f78d3a7b0 100644 --- a/src/code_80140DC.c +++ b/src/code_80140DC.c @@ -11,6 +11,7 @@ extern s32 gUnknown_202E73C; extern s32 gUnknown_202E740; extern MenuItem gUnknown_80D485C[]; +extern MenuItem gUnknown_80D4880[]; void sub_80140DC(void) { @@ -84,3 +85,9 @@ void sub_80141E0(const u8 *text, OpenedFile **file, u16 param_3) { sub_8014248(text, 0, -1, gUnknown_80D485C, NULL, 3, 0, file, param_3 | 0x300); } + +void sub_8014214(const u8 *text, OpenedFile **file, u16 param_3) +{ + sub_8014248(text, 0, -1, gUnknown_80D4880, NULL, 3, 0, file, param_3 | 0x300); +} + diff --git a/src/code_8066D04.c b/src/code_8066D04.c index ba178e6bf..89f15a042 100644 --- a/src/code_8066D04.c +++ b/src/code_8066D04.c @@ -39,13 +39,13 @@ extern void sub_806A6E8(Entity *); extern void sub_8044DF0(Entity *, u32, u32); extern void sub_8045DB4(Position *, u32); -void sub_8066744(Entity *entity) +void HandlePickUpPlayerAction(Entity *entity) { entity->info->action.unk4[0].actionUseIndex = 1; sub_8045DB4(&entity->pos,0); } -void sub_806675C(Entity *param_1, bool8 param_2) +void HandleSetItemAction(Entity *param_1, bool8 param_2) { Item *item; Item *itemPtr; @@ -88,7 +88,7 @@ void sub_806675C(Entity *param_1, bool8 param_2) } -void sub_806684C(Entity *entity,bool8 enableMessage) +void HandleUnsetItemAction(Entity *entity,bool8 enableMessage) { Item *item; int index; @@ -113,7 +113,7 @@ void sub_806684C(Entity *entity,bool8 enableMessage) } -void sub_80668D0(Entity *param_1) +void HandleGiveItemAction(Entity *param_1) { Entity *entity; Item *item; @@ -191,7 +191,7 @@ void sub_80668D0(Entity *param_1) } -void sub_8066AC0(Entity *param_1) +void HandleTakeItemAction(Entity *param_1) { Entity *entity; EntityInfo *info; @@ -281,7 +281,7 @@ void sub_8066BD4(Entity *param_1) } } -void sub_8066CF0(Entity *param_1) +void HandleUseItemAction(Entity *param_1) { Entity *entity; @@ -289,7 +289,7 @@ void sub_8066CF0(Entity *param_1) entity->info->useHeldItem = TRUE; } -void sub_8066D04(Entity *param_1) +void HandlePlaceItemAction(Entity *param_1) { Item *item; Tile *tile; diff --git a/src/code_8073CF0.c b/src/code_8073CF0.c index ed619e5c1..db91b35e1 100644 --- a/src/code_8073CF0.c +++ b/src/code_8073CF0.c @@ -5,17 +5,17 @@ extern void sub_8067110(Entity *); extern void sub_80671A0(Entity *); extern void sub_8073D14(Entity *); -void sub_8073CF0(Entity *pokemon) +void HandleEatAIAction(Entity *pokemon) { sub_8067110(pokemon); } -void sub_8073CFC(Entity *pokemon) +void HandleThrowItemAIAction(Entity *pokemon) { sub_80671A0(pokemon); } -void sub_8073D08(Entity *pokemon) +void HandlePickUpAIAction(Entity *pokemon) { sub_8073D14(pokemon); } diff --git a/src/dungeon_ai_attack.c b/src/dungeon_ai_attack.c index cbf69ce19..04c71fb20 100644 --- a/src/dungeon_ai_attack.c +++ b/src/dungeon_ai_attack.c @@ -931,7 +931,7 @@ bool8 IsTargetInRange(Entity *pokemon, Entity *targetPokemon, s32 direction, s32 return FALSE; } -void sub_807CABC(Entity *target) +void HandleUseMoveAIAction(Entity *target) { EntityInfo *entityInfo; s32 counter; @@ -959,7 +959,7 @@ void sub_807CABC(Entity *target) } #if NONMATCHING // 99.09% https://decomp.me/scratch/rpwXh -void sub_807CB3C(Entity *pokemon) +void HandleUseOrbAction(Entity *pokemon) { bool8 r4; Item *item; @@ -1058,7 +1058,7 @@ void sub_807CB3C(Entity *pokemon) } #else NAKED -void sub_807CB3C(Entity *pokemon) +void HandleUseOrbAction(Entity *pokemon) { asm_unified( "push {r4-r7,lr}\n" diff --git a/src/dungeon_ai_leader.c b/src/dungeon_ai_leader.c index 45eeb9936..5ebef0379 100644 --- a/src/dungeon_ai_leader.c +++ b/src/dungeon_ai_leader.c @@ -41,7 +41,7 @@ void nullsub_95(Entity *); bool8 IsNotAttacking(Entity *, bool8); extern void sub_80671A0(Entity *); extern void sub_8067110(Entity *); -void sub_807CABC(Entity *target); +void HandleUseMoveAIAction(Entity *target); void sub_8041888(u8 param_1); void sub_8085140(void); void sub_807360C(void); @@ -49,24 +49,24 @@ void sub_805EFB4(Entity *, u8); void sub_8074FB0(Entity *, u8, Position *); extern void SetMessageArgument(u8 *buffer, Entity *r1, u32); -void sub_8066D04(Entity *); -void sub_8066744(Entity *); +void HandlePlaceItemAction(Entity *); +void HandlePickUpPlayerAction(Entity *); void sub_8066E14(Entity * ); void sub_807348C(void); void sub_80732F0(void); void sub_807FD84(Entity *); void sub_8066BD4(Entity*); -void sub_8067510(Entity *); -void sub_8067884(Entity *); +void HandleTalkFieldAction(Entity *); +void HandleUseMovePlayerAction(Entity *); void sub_804267C(void); -void sub_807CB3C(Entity *); +void HandleUseOrbAction(Entity *); void sub_8067904(Entity *, u32); -void sub_80668D0(Entity *); -void sub_8066AC0(Entity *); -void sub_8066CF0(Entity *); +void HandleGiveItemAction(Entity *); +void HandleTakeItemAction(Entity *); +void HandleUseItemAction(Entity *); void sub_8066FA4(Entity *); -void sub_806675C(Entity *,bool8); -void sub_806684C(Entity *,bool8); +void HandleSetItemAction(Entity *,bool8); +void HandleUnsetItemAction(Entity *,bool8); void sub_807FE9C(Entity *,Position *,u32,u32); extern u8 sub_8044B28(void); extern u8 UseAttack(Entity *); @@ -75,9 +75,9 @@ void sub_806A1E8(Entity *pokemon); extern void sub_803E46C(u32); extern void sub_80694C0(Entity *, s32, s32, u32); bool8 sub_804AE08(Position *pos); -void sub_8073D08(Entity *pokemon); -void sub_8073CFC(Entity *pokemon); -void sub_8073CF0(Entity *pokemon); +void HandlePickUpAIAction(Entity *pokemon); +void HandleThrowItemAIAction(Entity *pokemon); +void HandleEatAIAction(Entity *pokemon); bool8 sub_8044B84(void); void sub_8046D20(void); extern void sub_8074094(Entity *); @@ -118,7 +118,7 @@ bool8 sub_8072CF4(Entity *entity) s32 index; EntityInfo *info; bool8 bVar14; - Position PStack_24; + Position pos; Position pos1; sub_804178C(1); @@ -210,10 +210,10 @@ bool8 sub_8072CF4(Entity *entity) } else { - PStack_24.x = entity->pos.x; - PStack_24.y = entity->pos.y; + pos.x = entity->pos.x; + pos.y = entity->pos.y; sub_80694C0(entity,pos1.x,pos1.y,0); - sub_8074FB0(entity,(info->action).direction,&PStack_24); + sub_8074FB0(entity,(info->action).direction,&pos); if (((IQSkillIsEnabled(entity, IQ_SUPER_MOBILE)) && (info->transformStatus != STATUS_MOBILE)) && (!HasHeldItem(entity,ITEM_MOBILE_SCARF))) { sub_804AE08(&entity->pos); @@ -224,7 +224,7 @@ bool8 sub_8072CF4(Entity *entity) } break; case ACTION_USE_MOVE_AI: - sub_807CABC(entity); + HandleUseMoveAIAction(entity); break; case ACTION_STAIRS: if ((gDungeon->dungeonLocation.id == DUNGEON_METEOR_CAVE) && (!gDungeon->deoxysDefeat)) { @@ -243,34 +243,34 @@ bool8 sub_8072CF4(Entity *entity) sub_8067110(entity); break; case ACTION_USE_ORB: - sub_807CB3C(entity); + HandleUseOrbAction(entity); break; case ACTION_PICK_UP_PLAYER: - sub_8066744(entity); + HandlePickUpPlayerAction(entity); break; case ACTION_GIVE_ITEM: - sub_80668D0(entity); + HandleGiveItemAction(entity); break; case ACTION_TAKE_ITEM: - sub_8066AC0(entity); + HandleTakeItemAction(entity); break; case 0x3e: sub_8066BD4(entity); // ITEM_SWITCH_TOOLBOX (When you switch item in Toolbox) break; case ACTION_USE_ITEM: - sub_8066CF0(entity); + HandleUseItemAction(entity); break; case ACTION_SET_ITEM: - sub_806675C(entity, TRUE); + HandleSetItemAction(entity, TRUE); break; case ACTION_UNSET_ITEM: - sub_806684C(entity, TRUE); + HandleUnsetItemAction(entity, TRUE); break; case 0x3b: gDungeon->unkBC = gDungeon->teamPokemon[(info->action).unk4[0].actionUseIndex]; break; case ACTION_PLACE_ITEM: - sub_8066D04(entity); + HandlePlaceItemAction(entity); break; case 10: // Switch with Item on Ground sub_8066E14(entity); @@ -290,10 +290,10 @@ bool8 sub_8072CF4(Entity *entity) SendMessage(entity,*gUnknown_80FE6D4); break; case ACTION_TALK_FIELD: - sub_8067510(entity); + HandleTalkFieldAction(entity); break; case ACTION_USE_MOVE_PLAYER: - sub_8067884(entity); + HandleUseMovePlayerAction(entity); break; case ACTION_STRUGGLE: sub_8067904(entity, MOVE_STRUGGLE); @@ -305,13 +305,13 @@ bool8 sub_8072CF4(Entity *entity) sub_807FE9C(entity,&entity->pos,0,0); break; case ACTION_PICK_UP_AI: - sub_8073D08(entity); + HandlePickUpAIAction(entity); break; case ACTION_EAT_AI: - sub_8073CF0(entity); + HandleEatAIAction(entity); break; case ACTION_THROW_ITEM_AI: - sub_8073CFC(entity); + HandleThrowItemAIAction(entity); break; case ACTION_SECOND_THOUGHTS: SetMessageArgument(gAvailablePokemonNames,entity,0); From f2a2f684fdc27c46853b9cfb47f3ff4b67ad3d63 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Wed, 27 Dec 2023 20:24:27 -0800 Subject: [PATCH 02/18] decomp sub_8083568 thanks to @jiangzhengwenjz --- asm/code_808333C.s | 83 ---------------------------------------------- ld_script.txt | 2 +- src/code_808333C.c | 61 ++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 84 deletions(-) delete mode 100644 asm/code_808333C.s create mode 100644 src/code_808333C.c diff --git a/asm/code_808333C.s b/asm/code_808333C.s deleted file mode 100644 index 4adc4d157..000000000 --- a/asm/code_808333C.s +++ /dev/null @@ -1,83 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8083568 -sub_8083568: - push {r4,r5,lr} - lsls r2, 24 - lsrs r5, r2, 24 - ldr r2, _080835E0 - ldr r2, [r2] - ldr r4, _080835E4 - adds r3, r2, r4 - movs r4, 0 - ldrsh r3, [r3, r4] - subs r3, r0, r3 - ldr r0, _080835E8 - adds r2, r0 - movs r4, 0 - ldrsh r0, [r2, r4] - subs r4, r1, r0 - movs r0, 0x10 - negs r0, r0 - cmp r3, r0 - blt _080835F8 - cmp r4, r0 - blt _080835F8 - cmp r3, 0xFF - bgt _080835F8 - cmp r4, 0xAF - bgt _080835F8 - ldr r1, _080835EC - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 2 - adds r0, r1 - movs r1, 0x8 - ldrsh r2, [r0, r1] - adds r2, r3, r2 - ldr r1, _080835F0 - ands r2, r1 - ldrh r3, [r0, 0x2] - movs r1, 0xFE - lsls r1, 8 - ands r1, r3 - orrs r1, r2 - strh r1, [r0, 0x2] - movs r1, 0xA - ldrsh r2, [r0, r1] - adds r2, r4, r2 - ldr r1, _080835F4 - ands r2, r1 - lsls r2, 4 - ldrh r3, [r0, 0x6] - movs r1, 0xF - ands r1, r3 - orrs r1, r2 - strh r1, [r0, 0x6] - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl AddSprite - movs r0, 0x1 - b _080835FA - .align 2, 0 -_080835E0: .4byte gDungeon -_080835E4: .4byte 0x000181f0 -_080835E8: .4byte 0x000181f2 -_080835EC: .4byte gUnknown_202ED28 -_080835F0: .4byte 0x000001ff -_080835F4: .4byte 0x00000fff -_080835F8: - movs r0, 0 -_080835FA: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8083568 - - .align 2, 0 diff --git a/ld_script.txt b/ld_script.txt index 220a146b0..6be088029 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -272,7 +272,7 @@ SECTIONS { asm/code_807FCD4.o(.text); src/code_8083288.o(.text); src/dungeon_range.o(.text); - asm/code_808333C.o(.text); + src/code_808333C.o(.text); src/dungeon_leader.o(.text); asm/code_8083654.o(.text); src/dungeon_music.o(.text); diff --git a/src/code_808333C.c b/src/code_808333C.c new file mode 100644 index 000000000..911c7021f --- /dev/null +++ b/src/code_808333C.c @@ -0,0 +1,61 @@ +#include "global.h" +#include "structs/str_dungeon.h" + +struct unkStruct_202ED28 +{ + SpriteOAM sp; + s16 unk8; + s16 unkA; +}; + +struct unkStruct_202ED28 gUnknown_202ED28[4]; // seeing index 3 used a lot + +bool8 sub_8083568(s32 inX, s32 inY, u8 index) { + s32 x; + s32 y; + SpriteOAM *sp; + s32 tmp2; +#ifdef NONMATCHING + s32 tmp; +#else + register s32 tmp asm("r2"); +#endif + + x = inX - gDungeon->cameraPixelPos.x; + y = inY - gDungeon->cameraPixelPos.y; + + if (x >= -16 && y >= -16 && x <= 255 && y <= 175) + { + struct unkStruct_202ED28 *ptr = gUnknown_202ED28; + sp = &ptr[index].sp; + + tmp = ptr[index].unk8; + tmp = x + ptr[index].unk8; + tmp &= SPRITEOAM_MASK_X; + + x = sp->attrib2; + tmp2 = (0xFE << 8); + tmp2 &= x; + tmp2 |= tmp; + sp->attrib2 = tmp2; + + tmp = ptr[index].unkA; + tmp = y + ptr[index].unkA; + tmp &= SPRITEOAM_MAX_UNK6_4; + tmp <<= SPRITEOAM_SHIFT_UNK6_4; + + x = sp->unk6; + tmp2 = 0xF; + tmp2 &= x; + tmp2 |= tmp; + sp->unk6 = tmp2; + + + AddSprite(sp, 0, NULL, NULL); + return TRUE; + } + else + { + return FALSE; + } +} From f405238e0d28dbe7366813b095735b87a13f91aa Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 29 Dec 2023 20:14:38 -0800 Subject: [PATCH 03/18] split asm file and decomp a few tile stuff --- asm/code_80130A8.s | 25 - asm/code_804AFAC.s | 5060 ----------------------------------------- asm/code_804FD30.s | 4885 +++++++++++++++++++++++++++++++++++++++ include/structs/map.h | 4 +- ld_script.txt | 2 + src/code_80140DC.c | 14 + src/code_804AFAC.c | 84 + src/code_808333C.c | 2 +- src/dungeon_music.c | 9 +- 9 files changed, 4990 insertions(+), 5095 deletions(-) create mode 100644 asm/code_804FD30.s create mode 100644 src/code_804AFAC.c diff --git a/asm/code_80130A8.s b/asm/code_80130A8.s index ed0d26f92..afa6f039d 100644 --- a/asm/code_80130A8.s +++ b/asm/code_80130A8.s @@ -299,29 +299,4 @@ _080140AC: .4byte 0x00003fff _080140B0: .4byte 0x00000fff thumb_func_end sub_8013F84 - thumb_func_start sub_80140B4 -sub_80140B4: - push {r4-r7,lr} - ldr r4, _080140D8 - adds r2, r0, 0 - movs r3, 0x3 -_080140BC: - adds r1, r2, 0 - adds r0, r4, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - adds r4, 0x18 - adds r2, 0x18 - subs r3, 0x1 - cmp r3, 0 - bge _080140BC - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080140D8: .4byte gUnknown_80D47C8 - thumb_func_end sub_80140B4 - .align 2,0 diff --git a/asm/code_804AFAC.s b/asm/code_804AFAC.s index cee7cac33..c2f4a3fea 100644 --- a/asm/code_804AFAC.s +++ b/asm/code_804AFAC.s @@ -9964,5064 +9964,4 @@ _0804FBD6: bx r0 thumb_func_end sub_804F694 - thumb_func_start sub_804FBE8 -sub_804FBE8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r6, 0 - ldr r0, _0804FC6C - adds r5, r0, 0 -_0804FBF4: - movs r4, 0 - adds r3, r6, 0x1 - mov r8, r3 -_0804FBFA: - adds r0, r6, 0 - adds r1, r4, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - beq _0804FC2A - movs r7, 0x88 - lsls r7, 1 - adds r0, r7, 0 - ands r0, r1 - cmp r0, 0 - beq _0804FC24 - ldrh r0, [r2, 0x4] - ldr r3, _0804FC70 - adds r1, r3, 0 - ands r0, r1 - strh r0, [r2, 0x4] -_0804FC24: - ldrh r0, [r2, 0x4] - ands r0, r5 - strh r0, [r2, 0x4] -_0804FC2A: - ldrh r3, [r2, 0x4] - movs r0, 0x1 - ands r0, r3 - cmp r0, 0 - beq _0804FC46 - ldrh r0, [r2] - movs r7, 0x80 - lsls r7, 2 - adds r1, r7, 0 - orrs r1, r0 - strh r1, [r2] - adds r0, r3, 0 - ands r0, r5 - strh r0, [r2, 0x4] -_0804FC46: - ldrh r1, [r2, 0x4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0804FC56 - adds r0, r1, 0 - ands r0, r5 - strh r0, [r2, 0x4] -_0804FC56: - adds r4, 0x1 - cmp r4, 0x1F - ble _0804FBFA - mov r6, r8 - cmp r6, 0x37 - ble _0804FBF4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FC6C: .4byte 0x0000fffb -_0804FC70: .4byte 0x0000fffd - thumb_func_end sub_804FBE8 - - thumb_func_start sub_804FC74 -sub_804FC74: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r5, 0 - movs r0, 0x3 - mov r8, r0 - ldr r0, _0804FCC8 - adds r7, r0, 0 -_0804FC86: - movs r4, 0 - adds r6, r5, 0x1 -_0804FC8A: - adds r0, r5, 0 - adds r1, r4, 0 - bl GetTile - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _0804FCAE - adds r0, r5, 0 - adds r1, r4, 0 - bl GetTileSafe - ldrh r1, [r0] - ands r1, r7 - mov r2, r8 - orrs r1, r2 - strh r1, [r0] -_0804FCAE: - adds r4, 0x1 - cmp r4, 0x1F - ble _0804FC8A - adds r5, r6, 0 - cmp r5, 0x37 - ble _0804FC86 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FCC8: .4byte 0x0000fffc - thumb_func_end sub_804FC74 - - thumb_func_start sub_804FCCC -sub_804FCCC: - push {r4-r7,lr} - movs r5, 0 - ldr r0, _0804FD0C - adds r7, r0, 0 -_0804FCD4: - movs r4, 0 - adds r6, r5, 0x1 -_0804FCD8: - adds r0, r5, 0 - adds r1, r4, 0 - bl GetTile - ldrh r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _0804FCF8 - adds r0, r5, 0 - adds r1, r4, 0 - bl GetTileSafe - ldrh r1, [r0] - ands r1, r7 - strh r1, [r0] -_0804FCF8: - adds r4, 0x1 - cmp r4, 0x1F - ble _0804FCD8 - adds r5, r6, 0 - cmp r5, 0x37 - ble _0804FCD4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FD0C: .4byte 0x0000fffc - thumb_func_end sub_804FCCC - - thumb_func_start sub_804FD10 -sub_804FD10: - movs r2, 0 - movs r3, 0 - strh r3, [r0] - strh r3, [r0, 0x4] - movs r1, 0xFF - strb r1, [r0, 0x9] - strb r2, [r0, 0x8] - strb r2, [r0, 0xA] - strb r2, [r0, 0xB] - strb r2, [r0, 0xC] - strb r2, [r0, 0xD] - strb r2, [r0, 0xE] - str r3, [r0, 0x10] - str r3, [r0, 0x14] - bx lr - thumb_func_end sub_804FD10 - - thumb_func_start sub_804FD30 -sub_804FD30: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r6, 0 -_0804FD3A: - movs r7, 0 - adds r4, r6, 0x1 -_0804FD3E: - adds r0, r6, 0 - adds r1, r7, 0 - bl GetTileSafe - bl sub_804FD10 - subs r3, r7, 0x1 - cmp r6, 0 - blt _0804FD5C - cmp r3, 0 - blt _0804FD5C - cmp r6, 0x37 - bgt _0804FD5C - cmp r3, 0x1F - ble _0804FD60 -_0804FD5C: - movs r0, 0x1 - b _0804FD62 -_0804FD60: - movs r0, 0 -_0804FD62: - cmp r0, 0 - bne _0804FE24 - cmp r4, 0 - blt _0804FD76 - cmp r3, 0 - blt _0804FD76 - cmp r4, 0x37 - bgt _0804FD76 - cmp r3, 0x1F - ble _0804FD7A -_0804FD76: - movs r0, 0x1 - b _0804FD7C -_0804FD7A: - movs r0, 0 -_0804FD7C: - cmp r0, 0 - bne _0804FE24 - cmp r4, 0 - blt _0804FD90 - cmp r3, 0 - blt _0804FD90 - cmp r4, 0x37 - bgt _0804FD90 - cmp r3, 0x1F - ble _0804FD94 -_0804FD90: - movs r0, 0x1 - b _0804FD96 -_0804FD94: - movs r0, 0 -_0804FD96: - cmp r0, 0 - bne _0804FE24 - adds r2, r7, 0x1 - cmp r4, 0 - blt _0804FDAC - cmp r2, 0 - blt _0804FDAC - cmp r4, 0x37 - bgt _0804FDAC - cmp r2, 0x1F - ble _0804FDB0 -_0804FDAC: - movs r0, 0x1 - b _0804FDB2 -_0804FDB0: - movs r0, 0 -_0804FDB2: - cmp r0, 0 - bne _0804FE24 - cmp r6, 0 - blt _0804FDC6 - cmp r2, 0 - blt _0804FDC6 - cmp r6, 0x37 - bgt _0804FDC6 - cmp r2, 0x1F - ble _0804FDCA -_0804FDC6: - movs r0, 0x1 - b _0804FDCC -_0804FDCA: - movs r0, 0 -_0804FDCC: - cmp r0, 0 - bne _0804FE24 - adds r0, r2, 0 - subs r1, r6, 0x1 - cmp r1, 0 - blt _0804FDE4 - cmp r0, 0 - blt _0804FDE4 - cmp r1, 0x37 - bgt _0804FDE4 - cmp r2, 0x1F - ble _0804FDE8 -_0804FDE4: - movs r0, 0x1 - b _0804FDEA -_0804FDE8: - movs r0, 0 -_0804FDEA: - cmp r0, 0 - bne _0804FE24 - cmp r1, 0 - blt _0804FDFE - cmp r7, 0 - blt _0804FDFE - cmp r1, 0x37 - bgt _0804FDFE - cmp r7, 0x1F - ble _0804FE02 -_0804FDFE: - movs r0, 0x1 - b _0804FE04 -_0804FE02: - movs r0, 0 -_0804FE04: - cmp r0, 0 - bne _0804FE24 - adds r0, r3, 0 - cmp r1, 0 - blt _0804FE1A - cmp r0, 0 - blt _0804FE1A - cmp r1, 0x37 - bgt _0804FE1A - cmp r3, 0x1F - ble _0804FE1E -_0804FE1A: - movs r0, 0x1 - b _0804FE20 -_0804FE1E: - movs r0, 0 -_0804FE20: - cmp r0, 0 - beq _0804FE34 -_0804FE24: - adds r0, r6, 0 - adds r1, r7, 0 - bl GetTileSafe - ldrh r2, [r0] - movs r1, 0x10 - orrs r1, r2 - strh r1, [r0] -_0804FE34: - adds r7, 0x1 - cmp r7, 0x1F - ble _0804FD3E - adds r6, 0x1 - cmp r6, 0x37 - bgt _0804FE42 - b _0804FD3A -_0804FE42: - ldr r3, _0804FEB4 - ldr r1, [r3] - ldr r0, _0804FEB8 - adds r2, r1, r0 - ldr r0, _0804FEBC - strh r0, [r2] - ldr r2, _0804FEC0 - adds r1, r2 - movs r0, 0x1 - negs r0, r0 - strh r0, [r1] - movs r6, 0 - mov r8, r3 - ldr r1, _0804FEC4 -_0804FE5E: - adds r5, r1, 0 - movs r4, 0 - movs r7, 0x7 -_0804FE64: - mov r2, r8 - ldr r0, [r2] - adds r0, r5 - adds r0, r4 - str r1, [sp] - bl sub_804FD10 - adds r4, 0x18 - subs r7, 0x1 - ldr r1, [sp] - cmp r7, 0 - bge _0804FE64 - adds r1, 0xC0 - adds r6, 0x1 - cmp r6, 0x7 - ble _0804FE5E - ldr r0, _0804FEB4 - ldr r1, [r0] - ldr r2, _0804FEC8 - adds r1, r2 - movs r2, 0 - strh r2, [r1] - movs r6, 0 - adds r4, r0, 0 - ldr r3, _0804FECC -_0804FE96: - ldr r0, [r4] - lsls r1, r6, 2 - adds r0, r3 - adds r0, r1 - ldr r0, [r0] - str r2, [r0] - adds r6, 0x1 - cmp r6, 0x3F - ble _0804FE96 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FEB4: .4byte gDungeon -_0804FEB8: .4byte 0x0000e21c -_0804FEBC: .4byte 0x0000ffff -_0804FEC0: .4byte 0x0000e21e -_0804FEC4: .4byte 0x0000e27c -_0804FEC8: .4byte 0x00003904 -_0804FECC: .4byte 0x0001371c - thumb_func_end sub_804FD30 - - thumb_func_start sub_804FED0 -sub_804FED0: - push {r4-r7,lr} - adds r7, r0, 0 - adds r5, r1, 0 - movs r6, 0 - b _0804FEFA -_0804FEDA: - adds r0, r5, 0 - bl DungeonRandInt - adds r4, r0, 0 - adds r0, r5, 0 - bl DungeonRandInt - lsls r4, 2 - adds r4, r7 - ldr r2, [r4] - lsls r0, 2 - adds r0, r7 - ldr r1, [r0] - str r1, [r4] - str r2, [r0] - adds r6, 0x1 -_0804FEFA: - lsls r0, r5, 1 - cmp r6, r0 - blt _0804FEDA - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804FED0 - - thumb_func_start sub_804FF08 -sub_804FF08: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08050234 - add sp, r4 - mov r10, r0 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0xE0 - lsls r0, 5 - add r0, sp - str r1, [r0] - ldr r0, _08050238 - ldr r0, [r0] - mov r9, r0 - ldr r0, _0805023C - add r0, r9 - movs r1, 0 - ldrsh r0, [r0, r1] - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _0804FF46 - ldr r0, _08050240 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r1 - bne _08050038 -_0804FF46: - movs r0, 0 - mov r8, r0 - movs r6, 0 -_0804FF4C: - movs r5, 0 - mov r1, r8 - lsls r0, r1, 2 - mov r2, sp - adds r4, r0, r2 -_0804FF56: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - adds r1, r0, 0 - ldrh r2, [r1] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0x1 - bne _0804FFAA - ldrb r0, [r1, 0x9] - cmp r0, 0xFF - beq _0804FFAA - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _0804FFAA - ldrh r1, [r1, 0x4] - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0804FFAA - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _0804FFAA - adds r0, r3, 0 - ands r0, r2 - cmp r0, 0 - bne _0804FFAA - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - bne _0804FFAA - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r2, 0x1 - add r8, r2 -_0804FFAA: - adds r5, 0x1 - cmp r5, 0x1F - ble _0804FF56 - adds r6, 0x1 - cmp r6, 0x37 - ble _0804FF4C - mov r0, r8 - cmp r0, 0 - beq _08050038 - bl DungeonRandInt - lsls r0, 2 - mov r1, sp - adds r4, r1, r0 - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - bl GetTileSafe - adds r5, r0, 0 - ldrh r1, [r5, 0x4] - movs r0, 0x1 - orrs r0, r1 - ldr r1, _08050244 - ands r0, r1 - strh r0, [r5, 0x4] - ldr r1, _08050248 - ldrb r0, [r5, 0x9] - strb r0, [r1] - ldrb r1, [r4] - ldr r0, _0805023C - add r0, r9 - strh r1, [r0] - ldrb r1, [r4, 0x1] - ldr r0, _08050240 - add r0, r9 - strh r1, [r0] - bl sub_8043D10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _08050038 - ldrb r4, [r5, 0x9] - movs r6, 0 -_08050002: - movs r5, 0 -_08050004: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTileSafe - adds r1, r0, 0 - ldrh r2, [r1] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0x1 - bne _0805002C - ldrb r0, [r1, 0x9] - cmp r0, r4 - bne _0805002C - movs r0, 0x40 - orrs r0, r2 - strh r0, [r1] - ldrb r1, [r1, 0x9] - ldr r0, _0805024C - add r0, r9 - strb r1, [r0] -_0805002C: - adds r5, 0x1 - cmp r5, 0x1F - ble _08050004 - adds r6, 0x1 - cmp r6, 0x37 - ble _08050002 -_08050038: - movs r2, 0 - mov r8, r2 - movs r6, 0 -_0805003E: - movs r5, 0 - adds r7, r6, 0x1 - mov r1, r8 - lsls r0, r1, 2 - mov r2, sp - adds r4, r0, r2 -_0805004A: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - adds r1, r0, 0 - ldrh r2, [r1] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0x1 - bne _08050092 - ldrb r0, [r1, 0x9] - cmp r0, 0xFF - beq _08050092 - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _08050092 - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _08050092 - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - bne _08050092 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - bne _08050092 - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r2, 0x1 - add r8, r2 -_08050092: - adds r5, 0x1 - cmp r5, 0x1F - ble _0805004A - adds r6, r7, 0 - cmp r6, 0x37 - ble _0805003E - mov r0, r8 - cmp r0, 0 - beq _080500FA - mov r1, r10 - ldrb r4, [r1, 0xF] - cmp r4, 0 - beq _080500FA - subs r0, r4, 0x2 - adds r1, r4, 0x2 - bl DungeonRandRange - adds r4, r0, 0 - cmp r4, 0 - bgt _080500BC - movs r4, 0x1 -_080500BC: - mov r0, sp - mov r1, r8 - bl sub_804FED0 - mov r0, r8 - bl DungeonRandInt - adds r5, r0, 0 - cmp r4, 0 - ble _080500FA - adds r6, r4, 0 - lsls r0, r5, 2 - mov r2, sp - adds r4, r0, r2 -_080500D8: - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - bl GetTileSafe - ldrh r2, [r0, 0x4] - movs r1, 0x2 - orrs r1, r2 - strh r1, [r0, 0x4] - adds r4, 0x4 - adds r5, 0x1 - cmp r5, r8 - bne _080500F4 - mov r4, sp - movs r5, 0 -_080500F4: - subs r6, 0x1 - cmp r6, 0 - bne _080500D8 -_080500FA: - movs r0, 0 - mov r8, r0 - movs r6, 0 -_08050100: - movs r5, 0 - adds r7, r6, 0x1 - mov r1, r8 - lsls r0, r1, 2 - mov r2, sp - adds r4, r0, r2 -_0805010C: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08050128 - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r0, 0x1 - add r8, r0 -_08050128: - adds r5, 0x1 - cmp r5, 0x1F - ble _0805010C - adds r6, r7, 0 - cmp r6, 0x37 - ble _08050100 - mov r1, r8 - cmp r1, 0 - beq _0805018E - mov r2, r10 - ldrb r4, [r2, 0x14] - cmp r4, 0 - beq _0805018E - subs r0, r4, 0x2 - adds r1, r4, 0x2 - bl DungeonRandRange - adds r4, r0, 0 - cmp r4, 0 - ble _0805018E - mov r0, sp - mov r1, r8 - bl sub_804FED0 - mov r0, r8 - bl DungeonRandInt - adds r5, r0, 0 - cmp r4, 0 - ble _0805018E - adds r6, r4, 0 - lsls r0, r5, 2 - mov r1, sp - adds r4, r0, r1 -_0805016C: - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - bl GetTileSafe - ldrh r2, [r0, 0x4] - movs r1, 0x2 - orrs r1, r2 - strh r1, [r0, 0x4] - adds r4, 0x4 - adds r5, 0x1 - cmp r5, r8 - bne _08050188 - mov r4, sp - movs r5, 0 -_08050188: - subs r6, 0x1 - cmp r6, 0 - bne _0805016C -_0805018E: - movs r2, 0 - mov r8, r2 - movs r0, 0xE0 - lsls r0, 5 - add r0, sp - ldr r0, [r0] - cmp r0, 0 - bne _080501E4 - movs r6, 0 -_080501A0: - movs r5, 0 - adds r7, r6, 0x1 - mov r1, r8 - lsls r0, r1, 2 - mov r2, sp - adds r4, r0, r2 -_080501AC: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - ldrh r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080501D8 - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080501D8 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080501D8 - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r0, 0x1 - add r8, r0 -_080501D8: - adds r5, 0x1 - cmp r5, 0x1F - ble _080501AC - adds r6, r7, 0 - cmp r6, 0x37 - ble _080501A0 -_080501E4: - mov r1, r8 - cmp r1, 0 - beq _08050294 - lsrs r4, r1, 31 - add r4, r8 - asrs r4, 1 - lsls r0, r1, 3 - movs r1, 0xA - bl __divsi3 - adds r1, r0, 0 - adds r0, r4, 0 - bl DungeonRandRange - adds r4, r0, 0 - cmp r4, 0x5 - bgt _08050208 - movs r4, 0x6 -_08050208: - ldr r0, _08050250 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r4, r0 - blt _08050214 - adds r4, r0, 0 -_08050214: - mov r0, sp - mov r1, r8 - bl sub_804FED0 - mov r0, r8 - bl DungeonRandInt - adds r5, r0, 0 - cmp r4, 0 - ble _08050294 - adds r6, r4, 0 - lsls r0, r5, 2 - mov r1, sp - adds r7, r0, r1 -_08050230: - ldrb r0, [r7] - b _08050254 - .align 2, 0 -_08050234: .4byte 0xffffe3fc -_08050238: .4byte gDungeon -_0805023C: .4byte 0x0000e21c -_08050240: .4byte 0x0000e21e -_08050244: .4byte 0x0000fffd -_08050248: .4byte gUnknown_202F1B4 -_0805024C: .4byte 0x00003a0c -_08050250: .4byte gUnknown_80F4DA0 -_08050254: - ldrb r1, [r7, 0x1] - bl GetTileSafe - adds r4, r0, 0 - movs r0, 0x2 - bl DungeonRandInt - cmp r0, 0 - beq _0805026C - ldrh r0, [r4, 0x4] - movs r1, 0x2 - b _0805027E -_0805026C: - ldr r0, _08050424 - ldr r0, [r0] - ldr r2, _08050428 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08050282 - ldrh r0, [r4, 0x4] - movs r1, 0x4 -_0805027E: - orrs r0, r1 - strh r0, [r4, 0x4] -_08050282: - adds r7, 0x4 - adds r5, 0x1 - cmp r5, r8 - bne _0805028E - mov r7, sp - movs r5, 0 -_0805028E: - subs r6, 0x1 - cmp r6, 0 - bne _08050230 -_08050294: - movs r0, 0 - mov r8, r0 - movs r6, 0 -_0805029A: - movs r5, 0 - adds r7, r6, 0x1 - mov r1, r8 - lsls r0, r1, 2 - mov r2, sp - adds r4, r0, r2 -_080502A6: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - adds r1, r0, 0 - ldrh r2, [r1] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0x1 - bne _080502F0 - ldrb r0, [r1, 0x9] - cmp r0, 0xFF - beq _080502F0 - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _080502F0 - ldrh r1, [r1, 0x4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080502F0 - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - bne _080502F0 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - bne _080502F0 - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r2, 0x1 - add r8, r2 -_080502F0: - adds r5, 0x1 - cmp r5, 0x1F - ble _080502A6 - adds r6, r7, 0 - cmp r6, 0x37 - ble _0805029A - mov r0, r8 - cmp r0, 0 - beq _08050356 - mov r2, r10 - ldrb r1, [r2, 0x10] - lsrs r0, r1, 1 - bl DungeonRandRange - adds r4, r0, 0 - cmp r4, 0 - ble _08050356 - cmp r4, 0x37 - ble _08050318 - movs r4, 0x38 -_08050318: - mov r0, sp - mov r1, r8 - bl sub_804FED0 - mov r0, r8 - bl DungeonRandInt - adds r5, r0, 0 - cmp r4, 0 - ble _08050356 - adds r6, r4, 0 - lsls r0, r5, 2 - mov r1, sp - adds r4, r0, r1 -_08050334: - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - bl GetTileSafe - ldrh r2, [r0, 0x4] - movs r1, 0x4 - orrs r1, r2 - strh r1, [r0, 0x4] - adds r4, 0x4 - adds r5, 0x1 - cmp r5, r8 - bne _08050350 - mov r4, sp - movs r5, 0 -_08050350: - subs r6, 0x1 - cmp r6, 0 - bne _08050334 -_08050356: - ldr r0, _0805042C - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _08050372 - ldr r0, _08050430 - add r0, r9 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r1 - bne _08050410 -_08050372: - movs r0, 0 - mov r8, r0 - movs r6, 0 -_08050378: - movs r5, 0 - adds r7, r6, 0x1 - mov r1, r8 - lsls r0, r1, 2 - mov r2, sp - adds r4, r0, r2 -_08050384: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x1 - bne _080503E2 - ldrb r0, [r2, 0x9] - cmp r0, 0xFF - beq _080503E2 - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080503E2 - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080503E2 - movs r0, 0x80 - lsls r0, 1 - mov r10, r0 - mov r0, r10 - ands r0, r1 - cmp r0, 0 - bne _080503E2 - ldrh r1, [r2, 0x4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080503E2 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _080503E2 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _080503E2 - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r1, 0x1 - add r8, r1 -_080503E2: - adds r5, 0x1 - cmp r5, 0x1F - ble _08050384 - adds r6, r7, 0 - cmp r6, 0x37 - ble _08050378 - mov r2, r8 - cmp r2, 0 - beq _08050410 - mov r0, r8 - bl DungeonRandInt - lsls r0, 2 - mov r1, sp - adds r2, r1, r0 - ldrb r1, [r2] - ldr r0, _0805042C - add r0, r9 - strh r1, [r0] - ldrb r1, [r2, 0x1] - ldr r0, _08050430 - add r0, r9 - strh r1, [r0] -_08050410: - ldr r3, _08050434 - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08050424: .4byte gDungeon -_08050428: .4byte 0x0000065c -_0805042C: .4byte 0x0000e218 -_08050430: .4byte 0x0000e21a -_08050434: .4byte 0x00001c04 - thumb_func_end sub_804FF08 - - thumb_func_start sub_8050438 -sub_8050438: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08050470 - add sp, r4 - lsls r1, 24 - lsrs r1, 24 - movs r2, 0xE0 - lsls r2, 5 - add r2, sp - str r1, [r2] - ldr r1, _08050474 - ldr r1, [r1] - mov r10, r1 - ldrb r1, [r0, 0x6] - cmp r1, 0 - ble _08050478 - lsrs r0, r1, 1 - bl DungeonRandRange - adds r7, r0, 0 - cmp r7, 0 - bgt _0805047A - movs r7, 0x1 - b _0805047A - .align 2, 0 -_08050470: .4byte 0xffffe3f8 -_08050474: .4byte gDungeon -_08050478: - adds r7, r1, 0 -_0805047A: - movs r0, 0 - mov r8, r0 - movs r6, 0 -_08050480: - movs r5, 0 - adds r1, r6, 0x1 - mov r9, r1 - mov r2, r8 - lsls r0, r2, 2 - mov r1, sp - adds r4, r0, r1 -_0805048E: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - adds r1, r0, 0 - ldrh r3, [r1] - movs r2, 0x3 - ands r2, r3 - cmp r2, 0x1 - bne _080504F6 - ldrb r0, [r1, 0x9] - cmp r0, 0xFF - beq _080504F6 - movs r0, 0x20 - ands r0, r3 - cmp r0, 0 - bne _080504F6 - ldrh r1, [r1, 0x4] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080504F6 - ands r2, r1 - cmp r2, 0 - bne _080504F6 - movs r0, 0x8 - ands r0, r3 - cmp r0, 0 - bne _080504F6 - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - bne _080504F6 - ldr r0, _080506A0 - add r0, r10 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r6, r0 - bne _080504EC - ldr r0, _080506A4 - add r0, r10 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r5, r0 - beq _080504F6 -_080504EC: - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r0, 0x1 - add r8, r0 -_080504F6: - adds r5, 0x1 - cmp r5, 0x1F - ble _0805048E - mov r6, r9 - cmp r6, 0x37 - ble _08050480 - mov r1, r8 - cmp r1, 0 - beq _0805055E - ldr r0, _080506A8 - ldr r0, [r0] - movs r2, 0xD1 - lsls r2, 3 - adds r0, r2 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - beq _0805051C - adds r7, 0x1 -_0805051C: - cmp r7, 0 - beq _0805055E - mov r0, sp - mov r1, r8 - bl sub_804FED0 - mov r0, r8 - bl DungeonRandInt - adds r5, r0, 0 - cmp r7, 0 - ble _0805055E - adds r6, r7, 0 - lsls r0, r5, 2 - mov r2, sp - adds r4, r0, r2 -_0805053C: - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - bl GetTileSafe - ldrh r2, [r0, 0x4] - movs r1, 0x8 - orrs r1, r2 - strh r1, [r0, 0x4] - adds r4, 0x4 - adds r5, 0x1 - cmp r5, r8 - bne _08050558 - mov r4, sp - movs r5, 0 -_08050558: - subs r6, 0x1 - cmp r6, 0 - bne _0805053C -_0805055E: - ldr r0, _080506AC - add r0, r10 - ldrb r0, [r0] - cmp r0, 0 - bne _0805056A - b _0805068C -_0805056A: - ldr r0, _080506B0 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r2, _080506B4 - add r2, sp - str r1, [r2] - movs r0, 0 - mov r8, r0 - movs r1, 0xE0 - lsls r1, 5 - add r1, sp - ldr r1, [r1] - cmp r1, 0 - beq _0805058A - movs r0, 0x3 - str r0, [r2] -_0805058A: - ldr r1, _080506B4 - add r1, sp - ldr r1, [r1] - lsls r0, r1, 1 - adds r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - ldr r1, _080506B4 - add r1, sp - str r0, [r1] - movs r6, 0 -_080505A2: - movs r5, 0 - adds r2, r6, 0x1 - mov r9, r2 - mov r1, r8 - lsls r0, r1, 2 - mov r2, sp - adds r4, r0, r2 -_080505B0: - adds r0, r6, 0 - adds r1, r5, 0 - bl GetTile - adds r1, r0, 0 - ldrh r2, [r1] - movs r0, 0x3 - ands r0, r2 - cmp r0, 0x1 - bne _08050608 - ldrb r0, [r1, 0x9] - cmp r0, 0xFF - beq _08050608 - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - bne _08050608 - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - ands r0, r2 - cmp r0, 0 - bne _08050608 - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - beq _08050608 - ldr r0, _080506A0 - add r0, r10 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r6, r0 - bne _080505FE - ldr r0, _080506A4 - add r0, r10 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r5, r0 - beq _08050608 -_080505FE: - strb r6, [r4] - strb r5, [r4, 0x1] - adds r4, 0x4 - movs r2, 0x1 - add r8, r2 -_08050608: - adds r5, 0x1 - cmp r5, 0x1F - ble _080505B0 - mov r6, r9 - cmp r6, 0x37 - ble _080505A2 - mov r0, r8 - cmp r0, 0 - beq _0805068C - lsls r4, r0, 3 - subs r0, r4, r0 - movs r1, 0xA - bl __divsi3 - adds r5, r0, 0 - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - adds r1, r0, 0 - adds r0, r5, 0 - bl DungeonRandRange - adds r7, r0, 0 - cmp r7, 0 - bne _0805063E - movs r7, 0x1 -_0805063E: - ldr r1, _080506B4 - add r1, sp - ldr r1, [r1] - cmp r7, r1 - blt _0805064E - ldr r2, _080506B4 - add r2, sp - ldr r7, [r2] -_0805064E: - mov r0, sp - mov r1, r8 - bl sub_804FED0 - mov r0, r8 - bl DungeonRandInt - adds r5, r0, 0 - cmp r7, 0 - ble _0805068C - adds r6, r7, 0 - lsls r0, r5, 2 - mov r1, sp - adds r4, r0, r1 -_0805066A: - ldrb r0, [r4] - ldrb r1, [r4, 0x1] - bl GetTileSafe - ldrh r2, [r0, 0x4] - movs r1, 0x8 - orrs r1, r2 - strh r1, [r0, 0x4] - adds r4, 0x4 - adds r5, 0x1 - cmp r5, r8 - bne _08050686 - mov r4, sp - movs r5, 0 -_08050686: - subs r6, 0x1 - cmp r6, 0 - bne _0805066A -_0805068C: - ldr r3, _080506B8 - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080506A0: .4byte 0x0000e218 -_080506A4: .4byte 0x0000e21a -_080506A8: .4byte gDungeon -_080506AC: .4byte 0x00003a08 -_080506B0: .4byte gUnknown_80F4DA4 -_080506B4: .4byte 0x00001c04 -_080506B8: .4byte 0x00001c08 - thumb_func_end sub_8050438 - - thumb_func_start sub_80506BC -sub_80506BC: - push {lr} - adds r3, r0, 0 - movs r2, 0x1 - ldrh r1, [r3] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - beq _080506CE - movs r2, 0 -_080506CE: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080506D8 - movs r2, 0 -_080506D8: - cmp r2, 0 - beq _080506E6 - ldr r0, _080506EC - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strh r0, [r3] -_080506E6: - pop {r0} - bx r0 - .align 2, 0 -_080506EC: .4byte 0x0000fffc - thumb_func_end sub_80506BC - - thumb_func_start sub_80506F0 -sub_80506F0: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xA4 - str r1, [sp, 0x64] - ldrb r1, [r1, 0xD] - ands r1, r0 - cmp r1, 0 - bne _08050708 - b _08050C20 -_08050708: - ldr r4, _08050738 - movs r0, 0x8 - bl DungeonRandInt - lsls r0, 2 - adds r0, r4 - ldr r4, [r0] - cmp r4, 0 - bne _0805071C - b _08050A7C -_0805071C: - movs r0, 0x64 - bl DungeonRandInt - cmp r0, 0x31 - bgt _0805073C - movs r0, 0x1 - str r0, [sp, 0x74] - movs r1, 0x1F - mov r10, r1 - movs r2, 0x1 - negs r2, r2 - str r2, [sp, 0x70] - b _08050746 - .align 2, 0 -_08050738: .4byte gUnknown_80F6DF8 -_0805073C: - movs r0, 0 - str r0, [sp, 0x74] - mov r10, r0 - movs r1, 0x1 - str r1, [sp, 0x70] -_08050746: - movs r0, 0x32 - bl DungeonRandInt - adds r0, 0xA - str r0, [sp, 0x78] - movs r0, 0x2 - movs r1, 0x36 - bl DungeonRandRange - mov r9, r0 - movs r2, 0 - str r2, [sp, 0x6C] - subs r4, 0x1 - str r4, [sp, 0x98] -_08050762: - movs r0, 0x6 - bl DungeonRandInt - adds r0, 0x2 - str r0, [sp, 0x68] - cmp r0, 0 - bne _08050772 - b _08050A38 -_08050772: - mov r0, r9 - cmp r0, 0x37 - bhi _080507B8 - mov r1, r10 - bl GetTile - ldrh r1, [r0] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0x2 - bne _0805078A - b _08050A74 -_0805078A: - mov r1, r9 - cmp r1, 0 - blt _080507A2 - mov r2, r10 - cmp r2, 0 - blt _080507A2 - mov r0, r9 - cmp r0, 0x37 - bgt _080507A2 - mov r1, r10 - cmp r1, 0x1F - ble _080507A6 -_080507A2: - movs r0, 0x1 - b _080507A8 -_080507A6: - movs r0, 0 -_080507A8: - cmp r0, 0 - bne _080507B8 - mov r0, r9 - mov r1, r10 - bl GetTileSafe - bl sub_80506BC -_080507B8: - ldr r2, [sp, 0x68] - subs r2, 0x1 - str r2, [sp, 0x68] - ldr r0, [sp, 0x6C] - add r9, r0 - ldr r1, [sp, 0x70] - add r10, r1 - mov r2, r10 - cmp r2, 0x1F - bls _080507CE - b _08050A38 -_080507CE: - ldr r0, [sp, 0x78] - subs r0, 0x1 - str r0, [sp, 0x78] - cmp r0, 0 - beq _080507DA - b _08050A30 -_080507DA: - movs r1, 0x3F - str r1, [sp, 0x7C] -_080507DE: - movs r0, 0x7 - bl DungeonRandInt - subs r0, 0x3 - str r0, [sp, 0x84] - movs r0, 0x7 - bl DungeonRandInt - subs r1, r0, 0x3 - ldr r6, [sp, 0x84] - add r6, r9 - subs r0, r6, 0x2 - cmp r0, 0x33 - bhi _080508DA - mov r2, r10 - adds r5, r1, r2 - cmp r5, 0x1 - ble _080508DA - cmp r5, 0x1D - bgt _080508DA - adds r4, r6, 0x1 - adds r0, r5, 0x1 - mov r8, r0 - adds r0, r4, 0 - mov r1, r8 - bl GetTile - ldrh r1, [r0] - movs r2, 0x3 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - beq _080508B2 - adds r0, r4, 0 - adds r1, r5, 0 - str r2, [sp, 0x9C] - bl GetTile - ldrh r1, [r0] - ldr r2, [sp, 0x9C] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - beq _080508B2 - subs r7, r5, 0x1 - adds r0, r4, 0 - adds r1, r7, 0 - bl GetTile - ldrh r1, [r0] - ldr r2, [sp, 0x9C] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - beq _080508B2 - adds r0, r6, 0 - mov r1, r8 - bl GetTile - ldrh r1, [r0] - ldr r2, [sp, 0x9C] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - beq _080508B2 - adds r0, r6, 0 - adds r1, r7, 0 - bl GetTile - ldrh r1, [r0] - ldr r2, [sp, 0x9C] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - beq _080508B2 - subs r4, r6, 0x1 - adds r0, r4, 0 - mov r1, r8 - bl GetTile - ldrh r1, [r0] - ldr r2, [sp, 0x9C] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - beq _080508B2 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetTile - ldrh r1, [r0] - ldr r2, [sp, 0x9C] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - beq _080508B2 - adds r0, r4, 0 - adds r1, r7, 0 - bl GetTile - ldrh r1, [r0] - ldr r2, [sp, 0x9C] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0x2 - bne _080508DA -_080508B2: - ldr r0, [sp, 0x84] - add r0, r9 - cmp r0, 0 - blt _080508C6 - cmp r5, 0 - blt _080508C6 - cmp r0, 0x37 - bgt _080508C6 - cmp r5, 0x1F - ble _080508CA -_080508C6: - movs r1, 0x1 - b _080508CC -_080508CA: - movs r1, 0 -_080508CC: - cmp r1, 0 - bne _080508DA - adds r1, r5, 0 - bl GetTileSafe - bl sub_80506BC -_080508DA: - ldr r1, [sp, 0x7C] - subs r1, 0x1 - str r1, [sp, 0x7C] - cmp r1, 0 - blt _080508E6 - b _080507DE -_080508E6: - movs r0, 0x3 - negs r0, r0 -_080508EA: - movs r2, 0x3 - negs r2, r2 - str r2, [sp, 0x80] - mov r1, r9 - adds r1, r0, r1 - str r1, [sp, 0x90] - adds r0, 0x1 - str r0, [sp, 0x8C] - adds r7, r1, 0 - mov r5, r10 - subs r5, 0x3 -_08050900: - movs r6, 0 - subs r0, r7, 0x2 - cmp r0, 0x33 - bls _0805090A - b _08050A1A -_0805090A: - str r5, [sp, 0x88] - str r5, [sp, 0x94] - cmp r5, 0x1 - bgt _08050914 - b _08050A1A -_08050914: - cmp r5, 0x1D - ble _0805091A - b _08050A1A -_0805091A: - adds r4, r7, 0x1 - adds r3, r5, 0x1 - adds r0, r4, 0 - adds r1, r3, 0 - str r3, [sp, 0xA0] - bl GetTile - ldrh r1, [r0] - movs r2, 0x3 - mov r8, r2 - mov r0, r8 - ands r0, r1 - ldr r3, [sp, 0xA0] - cmp r0, 0x2 - bne _0805093A - movs r6, 0x1 -_0805093A: - adds r0, r4, 0 - adds r1, r5, 0 - str r3, [sp, 0xA0] - bl GetTile - ldrh r1, [r0] - mov r0, r8 - ands r0, r1 - ldr r3, [sp, 0xA0] - cmp r0, 0x2 - bne _08050952 - adds r6, 0x1 -_08050952: - subs r2, r5, 0x1 - adds r0, r4, 0 - adds r1, r2, 0 - str r2, [sp, 0x9C] - str r3, [sp, 0xA0] - bl GetTile - ldrh r1, [r0] - mov r0, r8 - ands r0, r1 - ldr r2, [sp, 0x9C] - ldr r3, [sp, 0xA0] - cmp r0, 0x2 - bne _08050970 - adds r6, 0x1 -_08050970: - adds r0, r7, 0 - adds r1, r3, 0 - str r2, [sp, 0x9C] - str r3, [sp, 0xA0] - bl GetTile - ldrh r1, [r0] - mov r0, r8 - ands r0, r1 - ldr r2, [sp, 0x9C] - ldr r3, [sp, 0xA0] - cmp r0, 0x2 - bne _0805098C - adds r6, 0x1 -_0805098C: - adds r0, r7, 0 - adds r1, r2, 0 - str r2, [sp, 0x9C] - str r3, [sp, 0xA0] - bl GetTile - ldrh r1, [r0] - mov r0, r8 - ands r0, r1 - ldr r2, [sp, 0x9C] - ldr r3, [sp, 0xA0] - cmp r0, 0x2 - bne _080509A8 - adds r6, 0x1 -_080509A8: - subs r4, r7, 0x1 - adds r0, r4, 0 - adds r1, r3, 0 - str r2, [sp, 0x9C] - bl GetTile - ldrh r1, [r0] - mov r0, r8 - ands r0, r1 - ldr r2, [sp, 0x9C] - cmp r0, 0x2 - bne _080509C2 - adds r6, 0x1 -_080509C2: - adds r0, r4, 0 - adds r1, r5, 0 - str r2, [sp, 0x9C] - bl GetTile - ldrh r1, [r0] - mov r0, r8 - ands r0, r1 - ldr r2, [sp, 0x9C] - cmp r0, 0x2 - bne _080509DA - adds r6, 0x1 -_080509DA: - adds r0, r4, 0 - adds r1, r2, 0 - bl GetTile - ldrh r1, [r0] - mov r0, r8 - ands r0, r1 - cmp r0, 0x2 - bne _080509EE - adds r6, 0x1 -_080509EE: - cmp r6, 0x3 - ble _08050A1A - cmp r7, 0 - blt _08050A04 - cmp r5, 0 - blt _08050A04 - cmp r7, 0x37 - bgt _08050A04 - ldr r0, [sp, 0x88] - cmp r0, 0x1F - ble _08050A08 -_08050A04: - movs r0, 0x1 - b _08050A0A -_08050A08: - movs r0, 0 -_08050A0A: - cmp r0, 0 - bne _08050A1A - ldr r0, [sp, 0x90] - ldr r1, [sp, 0x94] - bl GetTileSafe - bl sub_80506BC -_08050A1A: - adds r5, 0x1 - ldr r1, [sp, 0x80] - adds r1, 0x1 - str r1, [sp, 0x80] - cmp r1, 0x3 - bgt _08050A28 - b _08050900 -_08050A28: - ldr r0, [sp, 0x8C] - cmp r0, 0x3 - bgt _08050A30 - b _080508EA -_08050A30: - ldr r2, [sp, 0x68] - cmp r2, 0 - beq _08050A38 - b _08050772 -_08050A38: - ldr r0, [sp, 0x6C] - cmp r0, 0 - beq _08050A54 - movs r1, 0x1 - str r1, [sp, 0x70] - ldr r2, [sp, 0x74] - cmp r2, 0 - beq _08050A4E - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x70] -_08050A4E: - movs r1, 0 - str r1, [sp, 0x6C] - b _08050A6C -_08050A54: - movs r0, 0x64 - bl DungeonRandInt - movs r2, 0x1 - str r2, [sp, 0x6C] - cmp r0, 0x31 - bgt _08050A68 - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x6C] -_08050A68: - movs r1, 0 - str r1, [sp, 0x70] -_08050A6C: - mov r2, r10 - cmp r2, 0x1F - bhi _08050A74 - b _08050762 -_08050A74: - ldr r4, [sp, 0x98] - cmp r4, 0 - beq _08050A7C - b _0805071C -_08050A7C: - movs r0, 0 - ldr r1, [sp, 0x64] - ldrb r1, [r1, 0x15] - cmp r0, r1 - blt _08050A88 - b _08050BAE -_08050A88: - movs r2, 0 - mov r8, r2 - mov r9, r2 - movs r5, 0 - adds r0, 0x1 - mov r10, r0 - b _08050A98 -_08050A96: - adds r5, 0x1 -_08050A98: - cmp r5, 0xC7 - bgt _08050AC2 - movs r0, 0 - movs r1, 0x38 - bl DungeonRandRange - mov r9, r0 - movs r0, 0 - movs r1, 0x20 - bl DungeonRandRange - mov r8, r0 - mov r0, r9 - subs r0, 0x1 - cmp r0, 0x35 - bhi _08050A96 - mov r0, r8 - cmp r0, 0 - ble _08050A96 - cmp r0, 0x1E - bgt _08050A96 -_08050AC2: - cmp r5, 0xC8 - beq _08050BA2 - movs r7, 0 - movs r3, 0x1 - movs r1, 0 -_08050ACC: - movs r2, 0 - lsls r0, r7, 2 - adds r4, r7, 0x1 - adds r0, r7 - lsls r0, 1 - add r0, sp -_08050AD8: - cmp r7, 0 - beq _08050AE8 - cmp r7, 0x9 - beq _08050AE8 - cmp r2, 0 - beq _08050AE8 - cmp r2, 0x9 - bne _08050AEC -_08050AE8: - strb r3, [r0] - b _08050AEE -_08050AEC: - strb r1, [r0] -_08050AEE: - adds r0, 0x1 - adds r2, 0x1 - cmp r2, 0x9 - ble _08050AD8 - adds r7, r4, 0 - cmp r7, 0x9 - ble _08050ACC - movs r5, 0x4F -_08050AFE: - movs r0, 0x8 - bl DungeonRandInt - adds r4, r0, 0 - adds r7, r4, 0x1 - movs r0, 0x8 - bl DungeonRandInt - adds r2, r0, 0x1 - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 1 - adds r0, r2, r0 - add r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _08050B50 - adds r1, r7, 0x1 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 1 - adds r0, r2, r0 - add r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _08050B50 - lsls r0, r7, 2 - adds r0, r7 - lsls r1, r0, 1 - subs r0, r1, 0x1 - adds r0, r2, r0 - add r0, sp - ldrb r0, [r0] - cmp r0, 0 - bne _08050B50 - adds r0, r1, 0x1 - adds r0, r2, r0 - add r0, sp - ldrb r0, [r0] - cmp r0, 0 - beq _08050B60 -_08050B50: - lsls r0, r7, 2 - adds r0, r7 - lsls r0, 1 - adds r0, r2, r0 - mov r2, sp - adds r1, r2, r0 - movs r0, 0x1 - strb r0, [r1] -_08050B60: - subs r5, 0x1 - cmp r5, 0 - bge _08050AFE - movs r7, 0 -_08050B68: - lsls r0, r7, 2 - adds r4, r7, 0x1 - adds r0, r7 - lsls r0, 1 - mov r6, r8 - subs r6, 0x5 - mov r1, sp - adds r5, r0, r1 - add r7, r9 - movs r2, 0x9 -_08050B7C: - ldrb r0, [r5] - cmp r0, 0 - bne _08050B92 - subs r0, r7, 0x5 - adds r1, r6, 0 - str r2, [sp, 0x9C] - bl GetTileSafe - bl sub_80506BC - ldr r2, [sp, 0x9C] -_08050B92: - adds r6, 0x1 - adds r5, 0x1 - subs r2, 0x1 - cmp r2, 0 - bge _08050B7C - adds r7, r4, 0 - cmp r7, 0x9 - ble _08050B68 -_08050BA2: - mov r0, r10 - ldr r2, [sp, 0x64] - ldrb r2, [r2, 0x15] - cmp r0, r2 - bge _08050BAE - b _08050A88 -_08050BAE: - movs r0, 0 - mov r9, r0 - movs r6, 0x1 - ldr r1, _08050BF4 - adds r5, r1, 0 -_08050BB8: - movs r2, 0 - mov r10, r2 - mov r4, r9 - adds r4, 0x1 -_08050BC0: - mov r0, r9 - mov r1, r10 - bl GetTileSafe - adds r2, r0, 0 - ldrh r3, [r2] - movs r0, 0x3 - ands r0, r3 - cmp r0, 0x2 - bne _08050C10 - movs r1, 0xB0 - lsls r1, 1 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - bne _08050BEA - ldrh r1, [r2, 0x4] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _08050BF8 -_08050BEA: - adds r0, r3, 0 - ands r0, r5 - orrs r0, r6 - b _08050C0E - .align 2, 0 -_08050BF4: .4byte 0x0000fffc -_08050BF8: - mov r0, r9 - subs r0, 0x2 - cmp r0, 0x34 - bhi _08050C0A - mov r0, r10 - cmp r0, 0x1 - ble _08050C0A - cmp r0, 0x1E - ble _08050C10 -_08050C0A: - ldrh r0, [r2] - ands r0, r5 -_08050C0E: - strh r0, [r2] -_08050C10: - movs r1, 0x1 - add r10, r1 - mov r2, r10 - cmp r2, 0x1F - ble _08050BC0 - mov r9, r4 - cmp r4, 0x37 - ble _08050BB8 -_08050C20: - add sp, 0xA4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80506F0 - - thumb_func_start sub_8050C30 -sub_8050C30: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, _08050F3C - add sp, r4 - mov r8, r0 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0xE0 - lsls r0, 3 - add r0, sp - str r2, [r0] - movs r7, 0 - mov r1, r8 - lsls r1, 5 - movs r2, 0xE2 - lsls r2, 3 - add r2, sp - str r1, [r2] -_08050C5C: - movs r6, 0 - lsls r2, r7, 5 - adds r3, r7, 0x1 - mov r10, r3 - mov r5, sp - adds r4, r2, r5 -_08050C68: - adds r0, r7, 0 - adds r1, r6, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrh r0, [r2] - movs r3, 0x3 - ands r3, r0 - movs r0, 0 - strb r0, [r4] - movs r0, 0xE0 - lsls r0, 3 - add r0, sp - ldr r0, [r0] - cmp r0, 0 - beq _08050C92 - ldrh r0, [r2] - ldr r5, _08050F40 - adds r1, r5, 0 - ands r0, r1 - strh r0, [r2] -_08050C92: - cmp r3, 0x1 - beq _08050CA8 - ldrh r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08050CA8 - ldrb r0, [r4] - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4] -_08050CA8: - cmp r3, 0x2 - bne _08050CBE - ldrh r1, [r2] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - bne _08050CBE - ldrb r0, [r4] - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4] -_08050CBE: - adds r4, 0x1 - adds r6, 0x1 - cmp r6, 0x1F - ble _08050C68 - mov r7, r10 - cmp r7, 0x37 - ble _08050C5C - movs r1, 0xE2 - lsls r1, 3 - add r1, sp - ldr r0, [r1] - add r0, r9 - mov r3, sp - adds r2, r3, r0 - ldrb r1, [r2] - movs r0, 0x50 - orrs r0, r1 - strb r0, [r2] - ldr r0, _08050F44 - ldr r1, [r0] - ldr r5, _08050F48 - adds r0, r1, r5 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r8 - beq _08050CF4 - b _08050F36 -_08050CF4: - ldr r3, _08050F4C - adds r0, r1, r3 - movs r5, 0 - ldrsh r0, [r0, r5] - cmp r0, r9 - beq _08050D02 - b _08050F36 -_08050D02: - ldr r1, _08050F50 - movs r0, 0 - str r0, [r1] - movs r0, 0x40 - mov r9, r0 -_08050D0C: - movs r1, 0 - ldr r2, _08050F54 - add r2, sp - str r1, [r2] - ldr r3, _08050F50 - ldr r0, [r3] - adds r0, 0x1 - str r0, [r3] - movs r7, 0 -_08050D1E: - movs r6, 0 - lsls r2, r7, 5 - adds r5, r7, 0x1 - mov r10, r5 - subs r0, r7, 0x1 - movs r1, 0xE1 - lsls r1, 3 - add r1, sp - str r0, [r1] - lsls r0, 5 - mov r1, sp - subs r1, 0x1 - adds r5, r2, r1 - add r0, sp - mov r8, r0 - mov r2, r10 - ldr r3, _08050F58 - add r3, sp - str r2, [r3] - lsls r0, r2, 5 - add r0, sp - mov r12, r0 -_08050D4A: - ldrb r1, [r5, 0x1] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08050D56 - b _08050EDA -_08050D56: - movs r3, 0x40 - mov r0, r9 - ands r0, r1 - cmp r0, 0 - bne _08050D62 - b _08050EDA -_08050D62: - ldr r2, _08050F54 - add r2, sp - ldr r0, [r2] - adds r0, 0x1 - str r0, [r2] - movs r0, 0xBF - ands r0, r1 - movs r2, 0 - movs r1, 0x80 - orrs r0, r1 - strb r0, [r5, 0x1] - cmp r7, 0 - ble _08050D90 - mov r0, r8 - ldrb r1, [r0] - movs r0, 0x83 - ands r0, r1 - cmp r0, 0 - bne _08050D90 - adds r0, r1, 0 - orrs r0, r3 - mov r1, r8 - strb r0, [r1] -_08050D90: - cmp r6, 0 - ble _08050DA4 - ldrb r1, [r5] - movs r0, 0x83 - ands r0, r1 - cmp r0, 0 - bne _08050DA4 - mov r0, r9 - orrs r0, r1 - strb r0, [r5] -_08050DA4: - cmp r7, 0x36 - bgt _08050DBA - mov r2, r12 - ldrb r1, [r2] - movs r0, 0x83 - ands r0, r1 - cmp r0, 0 - bne _08050DBA - mov r0, r9 - orrs r0, r1 - strb r0, [r2] -_08050DBA: - cmp r6, 0x1E - bgt _08050DCE - ldrb r1, [r5, 0x2] - movs r0, 0x83 - ands r0, r1 - cmp r0, 0 - bne _08050DCE - mov r0, r9 - orrs r0, r1 - strb r0, [r5, 0x2] -_08050DCE: - cmp r7, 0 - ble _08050E12 - cmp r6, 0 - ble _08050E12 - movs r3, 0xE1 - lsls r3, 3 - add r3, sp - ldr r3, [r3] - lsls r1, r3, 5 - subs r0, r1, 0x1 - adds r0, r6, r0 - mov r2, sp - adds r4, r2, r0 - ldrb r3, [r4] - movs r0, 0x87 - ands r0, r3 - cmp r0, 0 - bne _08050E12 - adds r0, r6, r1 - add r0, sp - ldrb r1, [r0] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050E12 - ldrb r1, [r5] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050E12 - mov r0, r9 - orrs r0, r3 - strb r0, [r4] -_08050E12: - cmp r7, 0x36 - bgt _08050E54 - cmp r6, 0 - ble _08050E54 - ldr r3, _08050F58 - add r3, sp - ldr r3, [r3] - lsls r1, r3, 5 - subs r0, r1, 0x1 - adds r0, r6, r0 - mov r2, sp - adds r4, r2, r0 - ldrb r3, [r4] - movs r0, 0x87 - ands r0, r3 - cmp r0, 0 - bne _08050E54 - adds r0, r6, r1 - add r0, sp - ldrb r1, [r0] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050E54 - ldrb r1, [r5] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050E54 - mov r0, r9 - orrs r0, r3 - strb r0, [r4] -_08050E54: - cmp r7, 0 - ble _08050E98 - cmp r6, 0x1E - bgt _08050E98 - movs r3, 0xE1 - lsls r3, 3 - add r3, sp - ldr r3, [r3] - lsls r1, r3, 5 - adds r0, r1, 0x1 - adds r0, r6, r0 - mov r2, sp - adds r4, r2, r0 - ldrb r3, [r4] - movs r0, 0x87 - ands r0, r3 - cmp r0, 0 - bne _08050E98 - adds r0, r6, r1 - add r0, sp - ldrb r1, [r0] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050E98 - ldrb r1, [r5, 0x2] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050E98 - mov r0, r9 - orrs r0, r3 - strb r0, [r4] -_08050E98: - cmp r7, 0x36 - bgt _08050EDA - cmp r6, 0x1E - bgt _08050EDA - ldr r3, _08050F58 - add r3, sp - ldr r3, [r3] - lsls r1, r3, 5 - adds r0, r1, 0x1 - adds r0, r6, r0 - mov r2, sp - adds r4, r2, r0 - ldrb r3, [r4] - movs r0, 0x87 - ands r0, r3 - cmp r0, 0 - bne _08050EDA - adds r0, r6, r1 - add r0, sp - ldrb r1, [r0] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050EDA - ldrb r1, [r5, 0x2] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050EDA - mov r0, r9 - orrs r0, r3 - strb r0, [r4] -_08050EDA: - adds r5, 0x1 - movs r3, 0x1 - add r8, r3 - add r12, r3 - adds r6, 0x1 - cmp r6, 0x1F - bgt _08050EEA - b _08050D4A -_08050EEA: - mov r7, r10 - cmp r7, 0x37 - bgt _08050EF2 - b _08050D1E -_08050EF2: - ldr r5, _08050F54 - add r5, sp - ldr r5, [r5] - cmp r5, 0 - beq _08050EFE - b _08050D0C -_08050EFE: - movs r7, 0 -_08050F00: - movs r6, 0 - lsls r2, r7, 5 - mov r0, sp - adds r4, r2, r0 -_08050F08: - adds r0, r7, 0 - adds r1, r6, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrb r1, [r4] - movs r0, 0x87 - ands r0, r1 - cmp r0, 0 - bne _08050F68 - movs r1, 0xE0 - lsls r1, 3 - add r1, sp - ldr r1, [r1] - cmp r1, 0 - bne _08050F5C - ldrh r0, [r2] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08050F68 -_08050F36: - movs r0, 0 - b _08050F78 - .align 2, 0 -_08050F3C: .4byte 0xfffff8ec -_08050F40: .4byte 0x00007fff -_08050F44: .4byte gDungeon -_08050F48: .4byte 0x0000e21c -_08050F4C: .4byte 0x0000e21e -_08050F50: .4byte gUnknown_202F1D4 -_08050F54: .4byte 0x00000704 -_08050F58: .4byte 0x0000070c -_08050F5C: - ldrh r1, [r2] - movs r3, 0x80 - lsls r3, 8 - adds r0, r3, 0 - orrs r0, r1 - strh r0, [r2] -_08050F68: - adds r4, 0x1 - adds r6, 0x1 - cmp r6, 0x1F - ble _08050F08 - adds r7, 0x1 - cmp r7, 0x37 - ble _08050F00 - movs r0, 0x1 -_08050F78: - ldr r3, _08050F8C - add sp, r3 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08050F8C: .4byte 0x00000714 - thumb_func_end sub_8050C30 - - thumb_func_start sub_8050F90 -sub_8050F90: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x3C - str r0, [sp] - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r3, [sp, 0xC] - movs r0, 0 - str r0, [sp, 0x10] - movs r1, 0 - str r1, [sp, 0x14] - movs r2, 0 - b _080511D0 -_08050FB0: - movs r4, 0 - str r4, [sp, 0x18] - ldr r5, [sp, 0x1C] - adds r5, 0x1 - str r5, [sp, 0x28] - ldr r6, [sp, 0x4] - cmp r4, r6 - blt _08050FC2 - b _080511CE -_08050FC2: - ldr r1, [sp, 0x18] - lsls r0, r1, 2 - ldr r2, [sp, 0xC] - adds r0, r2 - ldr r3, [r0] - adds r4, r3, 0x2 - mov r9, r4 - ldr r5, [sp, 0x1C] - lsls r1, r5, 2 - ldr r6, [sp, 0x5C] - adds r1, r6 - ldr r2, [r1] - adds r4, r2, 0x2 - mov r10, r4 - ldr r0, [r0, 0x4] - subs r0, r3 - subs r4, r0, 0x4 - ldr r0, [r1, 0x4] - subs r0, r2 - subs r7, r0, 0x4 - movs r3, 0x5 - movs r5, 0x5 - ldr r6, [sp, 0x4] - cmp r6, 0x2 - bgt _08050FF8 - movs r3, 0xA - movs r4, 0xE -_08050FF8: - ldr r0, [sp, 0x8] - cmp r0, 0x1 - bne _08051002 - movs r5, 0x10 - movs r7, 0x18 -_08051002: - ldr r2, [sp, 0x1C] - lsls r1, r2, 5 - ldr r6, [sp, 0x18] - lsls r2, r6, 4 - subs r0, r2, r6 - lsls r0, 5 - ldr r6, [sp] - adds r0, r6 - adds r6, r1, r0 - ldrb r0, [r6, 0xA] - str r1, [sp, 0x30] - str r2, [sp, 0x2C] - cmp r0, 0 - bne _08051020 - b _08051130 -_08051020: - ldr r0, [sp, 0x14] - ldr r1, [sp, 0x60] - cmp r0, r1 - beq _0805108C - adds r0, r3, 0 - adds r1, r4, 0 - bl DungeonRandRange - adds r6, r0, 0 - adds r0, r5, 0 - adds r1, r7, 0 - bl DungeonRandRange - adds r5, r0, 0 - movs r1, 0x1 - adds r0, r6, 0 - orrs r0, r1 - cmp r0, r4 - bge _08051048 - adds r6, r0, 0 -_08051048: - adds r0, r5, 0 - orrs r0, r1 - cmp r0, r7 - bge _08051052 - adds r5, r0, 0 -_08051052: - lsls r0, r5, 1 - adds r0, r5 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - cmp r6, r0 - ble _08051062 - adds r6, r0, 0 -_08051062: - lsls r0, r6, 1 - adds r0, r6 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - cmp r5, r0 - ble _08051072 - adds r5, r0, 0 -_08051072: - subs r0, r4, r6 - bl DungeonRandInt - mov r2, r9 - adds r4, r0, r2 - subs r0, r7, r5 - bl DungeonRandInt - mov r3, r10 - adds r7, r0, r3 - adds r3, r4, r6 - adds r6, r7, r5 - b _08051098 -_0805108C: - mov r4, r9 - mov r7, r10 - ldr r5, [sp, 0x64] - adds r3, r4, r5 - ldr r0, [sp, 0x68] - adds r6, r7, r0 -_08051098: - ldr r1, [sp, 0x2C] - ldr r2, [sp, 0x18] - subs r0, r1, r2 - lsls r0, 5 - ldr r5, [sp] - adds r0, r5 - ldr r1, [sp, 0x30] - adds r0, r1, r0 - strh r4, [r0] - strh r3, [r0, 0x4] - strh r7, [r0, 0x2] - strh r6, [r0, 0x6] - adds r5, r4, 0 - ldr r2, [sp, 0x10] - adds r2, 0x1 - str r2, [sp, 0x20] - ldr r4, [sp, 0x14] - adds r4, 0x1 - str r4, [sp, 0x24] - ldr r0, [sp, 0x18] - adds r0, 0x1 - mov r10, r0 - cmp r5, r3 - bge _08051108 -_080510C8: - adds r4, r7, 0 - adds r1, r5, 0x1 - mov r8, r1 - cmp r4, r6 - bge _08051102 - ldr r2, _0805112C - mov r9, r2 -_080510D6: - adds r0, r5, 0 - adds r1, r4, 0 - str r3, [sp, 0x38] - bl GetTileSafe - ldrh r1, [r0] - mov r2, r9 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - strh r1, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl GetTileSafe - mov r1, sp - ldrb r1, [r1, 0x10] - strb r1, [r0, 0x9] - adds r4, 0x1 - ldr r3, [sp, 0x38] - cmp r4, r6 - blt _080510D6 -_08051102: - mov r5, r8 - cmp r5, r3 - blt _080510C8 -_08051108: - ldr r2, [sp, 0x14] - ldr r3, [sp, 0x60] - cmp r2, r3 - beq _08051124 - ldr r4, [sp, 0x2C] - ldr r5, [sp, 0x18] - subs r0, r4, r5 - lsls r0, 5 - ldr r6, [sp] - adds r0, r6 - ldr r1, [sp, 0x30] - adds r0, r1, r0 - movs r1, 0x1 - strb r1, [r0, 0x1D] -_08051124: - ldr r2, [sp, 0x20] - str r2, [sp, 0x10] - b _080511BE - .align 2, 0 -_0805112C: .4byte 0x0000fffc -_08051130: - movs r1, 0x2 - movs r3, 0x4 - movs r2, 0x2 - mov r8, r3 - ldr r5, [sp, 0x18] - cmp r5, 0 - bne _08051140 - movs r1, 0x1 -_08051140: - ldr r0, [sp, 0x1C] - cmp r0, 0 - bne _08051148 - movs r2, 0x1 -_08051148: - ldr r0, [sp, 0x4] - subs r0, 0x1 - ldr r5, [sp, 0x18] - cmp r5, r0 - bne _08051154 - movs r3, 0x2 -_08051154: - ldr r0, [sp, 0x8] - subs r0, 0x1 - ldr r5, [sp, 0x1C] - cmp r5, r0 - bne _08051162 - movs r0, 0x2 - mov r8, r0 -_08051162: - mov r5, r9 - adds r0, r5, r1 - adds r1, r5, r4 - subs r1, r3 - str r2, [sp, 0x34] - bl DungeonRandRange - adds r5, r0, 0 - ldr r2, [sp, 0x34] - mov r1, r10 - adds r0, r1, r2 - adds r1, r7 - mov r2, r8 - subs r1, r2 - bl DungeonRandRange - adds r4, r0, 0 - strh r5, [r6] - adds r0, r5, 0x1 - strh r0, [r6, 0x4] - strh r4, [r6, 0x2] - adds r0, r4, 0x1 - strh r0, [r6, 0x6] - adds r0, r5, 0 - adds r1, r4, 0 - bl GetTileSafe - ldrh r1, [r0] - ldr r3, _080511EC - adds r2, r3, 0 - ands r1, r2 - movs r2, 0x1 - orrs r1, r2 - strh r1, [r0] - adds r0, r5, 0 - adds r1, r4, 0 - bl GetTileSafe - movs r1, 0xFF - strb r1, [r0, 0x9] - ldr r4, [sp, 0x14] - adds r4, 0x1 - str r4, [sp, 0x24] - ldr r5, [sp, 0x18] - adds r5, 0x1 - mov r10, r5 -_080511BE: - ldr r6, [sp, 0x24] - str r6, [sp, 0x14] - mov r0, r10 - str r0, [sp, 0x18] - ldr r1, [sp, 0x4] - cmp r0, r1 - bge _080511CE - b _08050FC2 -_080511CE: - ldr r2, [sp, 0x28] -_080511D0: - str r2, [sp, 0x1C] - ldr r3, [sp, 0x8] - cmp r2, r3 - bge _080511DA - b _08050FB0 -_080511DA: - add sp, 0x3C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080511EC: .4byte 0x0000fffc - thumb_func_end sub_8050F90 - - thumb_func_start sub_80511F0 -sub_80511F0: - push {r4-r6,lr} - ldr r6, _08051204 - ldrb r0, [r6] - cmp r0, 0 - beq _0805120C - subs r0, 0x1 - strb r0, [r6] - ldr r0, _08051208 - ldrb r0, [r0] - b _08051244 - .align 2, 0 -_08051204: .4byte gUnknown_202F1E1 -_08051208: .4byte gUnknown_202F1E0 -_0805120C: - ldr r1, _0805122C - ldr r5, _08051230 - ldr r2, [r5] - ldrb r3, [r2] - strb r3, [r1] - adds r4, r2, 0x1 - str r4, [r5] - lsls r0, r3, 24 - lsrs r0, 24 - cmp r0, 0xE - bne _08051234 - ldrb r0, [r2, 0x1] - strb r0, [r1] - adds r0, r4, 0x1 - str r0, [r5] - b _08051242 - .align 2, 0 -_0805122C: .4byte gUnknown_202F1E0 -_08051230: .4byte gUnknown_202F1DC -_08051234: - movs r0, 0xF - ands r0, r3 - strb r0, [r6] - movs r0, 0xF0 - ands r0, r3 - lsrs r0, 4 - strb r0, [r1] -_08051242: - ldrb r0, [r1] -_08051244: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80511F0 - - thumb_func_start sub_805124C -sub_805124C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r5, [sp, 0x1C] - lsls r1, 24 - lsrs r1, 24 - lsls r5, 24 - lsrs r5, 24 - ldrh r6, [r0] - movs r7, 0x80 - lsls r7, 1 - adds r4, r7, 0 - movs r7, 0 - mov r8, r7 - orrs r4, r6 - strh r4, [r0] - mov r4, r8 - strb r4, [r0, 0xE] - str r5, [sp] - bl sub_8051A74 - lsls r0, 24 - lsrs r0, 24 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805124C - - thumb_func_start sub_8051288 -sub_8051288: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - str r0, [sp, 0x4] - ldr r0, _08051374 - ldr r7, [r0] - ldr r0, _08051378 - adds r3, r7, r0 - ldr r0, [r3] - ldr r0, [r0, 0x4] - ldr r2, [sp, 0x4] - lsls r1, r2, 2 - adds r0, r1, r0 - ldr r0, [r0] - ldrb r2, [r0] - mov r10, r2 - ldrb r0, [r0, 0x1] - mov r9, r0 - ldr r2, _0805137C - adds r0, r7, r2 - movs r4, 0 - mov r2, r10 - strh r2, [r0] - ldr r2, _08051380 - adds r0, r7, r2 - mov r2, r9 - strh r2, [r0] - ldr r2, _08051384 - ldr r0, [r3] - ldr r0, [r0, 0x4] - adds r1, r0 - ldr r0, [r1] - adds r0, 0x3 - str r0, [r2] - ldr r0, _08051388 - strb r4, [r0] - movs r6, 0x5 - mov r0, r9 - adds r0, 0x5 - cmp r6, r0 - bge _0805132E - movs r1, 0x5 - add r1, r10 - mov r8, r1 - str r0, [sp, 0x8] -_080512E8: - movs r5, 0x5 - cmp r5, r8 - bge _08051326 -_080512EE: - bl sub_80511F0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - movs r1, 0x1 - str r1, [sp] - adds r1, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_805124C - lsls r0, 24 - cmp r0, 0 - beq _08051320 - ldr r2, _0805138C - adds r0, r7, r2 - strh r5, [r0] - ldr r1, _08051390 - adds r0, r7, r1 - strh r6, [r0] -_08051320: - adds r5, 0x1 - cmp r5, r8 - blt _080512EE -_08051326: - adds r6, 0x1 - ldr r2, [sp, 0x8] - cmp r6, r2 - blt _080512E8 -_0805132E: - movs r6, 0 - ldr r0, _08051394 - adds r7, r0, 0 -_08051334: - movs r5, 0 - adds r4, r6, 0x1 -_08051338: - cmp r5, 0x4 - ble _08051350 - mov r0, r10 - adds r0, 0x5 - cmp r5, r0 - bge _08051350 - cmp r6, 0x4 - ble _08051350 - mov r0, r9 - adds r0, 0x5 - cmp r6, r0 - blt _080513A0 -_08051350: - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x10 - movs r3, 0 - orrs r1, r0 - strh r1, [r2] - ldr r0, _08051398 - ldrb r0, [r0] - cmp r0, 0 - beq _0805139C - ands r1, r7 - movs r0, 0x3 - orrs r1, r0 - b _0805139E - .align 2, 0 -_08051374: .4byte gDungeon -_08051378: .4byte 0x00013568 -_0805137C: .4byte 0x0000e260 -_08051380: .4byte 0x0000e262 -_08051384: .4byte gUnknown_202F1DC -_08051388: .4byte gUnknown_202F1E1 -_0805138C: .4byte 0x0000e21c -_08051390: .4byte 0x0000e21e -_08051394: .4byte 0x0000fffc -_08051398: .4byte gUnknown_202F1A8 -_0805139C: - ands r1, r7 -_0805139E: - strh r1, [r2] -_080513A0: - adds r5, 0x1 - cmp r5, 0x37 - ble _08051338 - adds r6, r4, 0 - cmp r6, 0x1F - ble _08051334 - ldr r1, [sp, 0x4] - cmp r1, 0x4 - bne _080513DA - movs r6, 0x5 - ldr r2, _0805142C - adds r7, r2, 0 -_080513B8: - movs r5, 0x2 - adds r4, r6, 0x1 -_080513BC: - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - ldrh r2, [r0] - movs r1, 0x10 - orrs r1, r2 - ands r1, r7 - strh r1, [r0] - adds r5, 0x1 - cmp r5, 0x4 - ble _080513BC - adds r6, r4, 0 - cmp r6, 0x10 - ble _080513B8 -_080513DA: - ldr r0, _08051430 - ldr r0, [r0] - ldr r1, _08051434 - adds r0, r1 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0x3F - ble _08051416 - movs r6, 0 -_080513EC: - movs r5, 0 - adds r4, r6, 0x1 -_080513F0: - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0805140A - movs r0, 0x10 - orrs r0, r1 - strh r0, [r2] -_0805140A: - adds r5, 0x1 - cmp r5, 0x37 - ble _080513F0 - adds r6, r4, 0 - cmp r6, 0x1F - ble _080513EC -_08051416: - bl sub_804E9DC - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0805142C: .4byte 0x0000fffc -_08051430: .4byte gDungeon -_08051434: .4byte 0x00003a0e - thumb_func_end sub_8051288 - - thumb_func_start sub_8051438 -sub_8051438: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x1C - mov r9, r0 - ldr r0, _080515AC - ldr r0, [r0] - str r0, [sp, 0x4] - ldr r2, _080515B0 - ldr r4, _080515B4 - adds r3, r0, r4 - ldr r0, [r3] - ldr r0, [r0, 0x4] - lsls r1, 2 - adds r0, r1, r0 - ldr r0, [r0] - adds r0, 0x3 - str r0, [r2] - ldr r2, _080515B8 - movs r0, 0 - strb r0, [r2] - ldr r0, [r3] - ldr r0, [r0, 0x4] - adds r1, r0 - ldr r0, [r1] - ldrb r1, [r0, 0x2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0805147A - b _080515D8 -_0805147A: - ldr r5, [sp, 0x4] - ldr r0, _080515BC - adds r1, r5, r0 - mov r2, r9 - movs r3, 0 - ldrsh r0, [r2, r3] - str r0, [r1] - ldr r4, _080515C0 - adds r1, r5, r4 - movs r5, 0x2 - ldrsh r0, [r2, r5] - str r0, [r1] - ldr r0, [sp, 0x4] - ldr r2, _080515C4 - adds r1, r0, r2 - mov r3, r9 - movs r4, 0x4 - ldrsh r0, [r3, r4] - str r0, [r1] - ldr r5, [sp, 0x4] - ldr r0, _080515C8 - adds r1, r5, r0 - movs r2, 0x6 - ldrsh r0, [r3, r2] - str r0, [r1] - movs r3, 0 - str r3, [sp, 0x8] - mov r4, r9 - movs r5, 0x2 - ldrsh r4, [r4, r5] - mov r8, r4 - mov r1, r9 - movs r2, 0x6 - ldrsh r0, [r1, r2] - cmp r8, r0 - blt _080514C4 - b _08051640 -_080514C4: - mov r3, r9 - movs r4, 0 - ldrsh r7, [r3, r4] - movs r5, 0x4 - ldrsh r0, [r3, r5] - ldr r1, [sp, 0x8] - adds r1, 0x1 - str r1, [sp, 0x10] - mov r2, r8 - adds r2, 0x1 - str r2, [sp, 0xC] - cmp r7, r0 - bge _08051598 - ldr r4, _080515CC - ldr r3, [sp, 0x4] - adds r4, r3, r4 - str r4, [sp, 0x14] - movs r5, 0 - str r5, [sp, 0x18] - ldr r0, [sp, 0x8] - mov r10, r0 -_080514EE: - bl sub_80511F0 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r7, 0 - mov r1, r8 - bl GetTileSafe - adds r6, r0, 0 - ldr r1, [sp, 0x4] - ldr r2, _080515D0 - adds r0, r1, r2 - add r0, r10 - strb r5, [r0] - ldr r3, [sp, 0x8] - lsls r4, r3, 1 - adds r4, r3 - lsls r4, 3 - ldr r1, [sp, 0x14] - adds r0, r1, r4 - movs r2, 0 - str r2, [sp] - adds r1, r5, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_805124C - ldrb r1, [r6, 0x9] - ldr r3, [sp, 0x18] - adds r4, r3 - ldr r5, [sp, 0x4] - adds r4, r5, r4 - adds r0, r6, 0 - ldr r2, _080515CC - adds r4, r2 - ldm r4!, {r2,r3,r5} - stm r0!, {r2,r3,r5} - ldm r4!, {r2,r3,r5} - stm r0!, {r2,r3,r5} - mov r3, r9 - movs r4, 0 - ldrsh r0, [r3, r4] - adds r0, 0x2 - cmp r7, r0 - blt _08051572 - movs r5, 0x4 - ldrsh r0, [r3, r5] - subs r0, 0x2 - cmp r7, r0 - bge _08051572 - movs r2, 0x2 - ldrsh r0, [r3, r2] - adds r0, 0x2 - cmp r8, r0 - blt _08051572 - movs r4, 0x6 - ldrsh r0, [r3, r4] - subs r0, 0x2 - cmp r8, r0 - bge _08051572 - movs r0, 0x88 - lsls r0, 1 - strh r0, [r6] - movs r0, 0xE - strb r0, [r6, 0xE] -_08051572: - strb r1, [r6, 0x9] - ldr r5, [sp, 0x4] - ldr r2, _080515D4 - adds r0, r5, r2 - strb r1, [r0] - ldr r3, [sp, 0x14] - adds r3, 0xC0 - str r3, [sp, 0x14] - ldr r4, [sp, 0x18] - adds r4, 0xC0 - str r4, [sp, 0x18] - movs r5, 0x8 - add r10, r5 - adds r7, 0x1 - mov r1, r9 - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r7, r0 - blt _080514EE -_08051598: - ldr r3, [sp, 0x10] - str r3, [sp, 0x8] - ldr r4, [sp, 0xC] - mov r8, r4 - mov r5, r9 - movs r1, 0x6 - ldrsh r0, [r5, r1] - cmp r8, r0 - blt _080514C4 - b _08051640 - .align 2, 0 -_080515AC: .4byte gDungeon -_080515B0: .4byte gUnknown_202F1DC -_080515B4: .4byte 0x00013568 -_080515B8: .4byte gUnknown_202F1E1 -_080515BC: .4byte 0x0000e250 -_080515C0: .4byte 0x0000e254 -_080515C4: .4byte 0x0000e258 -_080515C8: .4byte 0x0000e25c -_080515CC: .4byte 0x0000e27c -_080515D0: .4byte 0x0000e87c -_080515D4: .4byte 0x0000e8bc -_080515D8: - mov r2, r9 - movs r3, 0x2 - ldrsh r2, [r2, r3] - mov r8, r2 - b _08051636 -_080515E2: - mov r0, r9 - movs r1, 0 - ldrsh r7, [r0, r1] - movs r2, 0x4 - ldrsh r0, [r0, r2] - mov r3, r8 - adds r3, 0x1 - str r3, [sp, 0xC] - cmp r7, r0 - bge _08051632 -_080515F6: - bl sub_80511F0 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r7, 0 - mov r1, r8 - bl GetTileSafe - adds r5, r0, 0 - ldrb r6, [r5, 0x9] - movs r0, 0x1 - str r0, [sp] - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_805124C - strb r6, [r5, 0x9] - ldr r4, [sp, 0x4] - ldr r5, _08051650 - adds r0, r4, r5 - strb r6, [r0] - adds r7, 0x1 - mov r1, r9 - movs r2, 0x4 - ldrsh r0, [r1, r2] - cmp r7, r0 - blt _080515F6 -_08051632: - ldr r3, [sp, 0xC] - mov r8, r3 -_08051636: - mov r4, r9 - movs r5, 0x6 - ldrsh r0, [r4, r5] - cmp r8, r0 - blt _080515E2 -_08051640: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08051650: .4byte 0x0000e8bc - thumb_func_end sub_8051438 - - thumb_func_start sub_8051654 -sub_8051654: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - str r0, [sp] - ldr r4, _080516EC - ldr r1, [r4, 0x8] - ldr r0, [r4] - subs r1, r0 - subs r1, 0x2 - movs r0, 0x3 - bl DungeonRandRange - mov r8, r0 - cmp r0, 0x2 - bgt _0805167C - movs r0, 0x3 - mov r8, r0 -_0805167C: - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x4] - subs r1, r0 - subs r1, 0x2 - movs r0, 0x3 - bl DungeonRandRange - mov r9, r0 - cmp r0, 0x2 - bgt _08051694 - movs r1, 0x3 - mov r9, r1 -_08051694: - movs r0, 0x2 - movs r1, 0x4 - bl DungeonRandRange - mov r10, r0 - movs r5, 0 - cmp r5, r10 - bge _08051734 - ldr r0, [r4, 0x8] - ldr r1, [r4] - subs r0, r1 - cmp r0, r8 - ble _08051734 - adds r6, r4, 0 -_080516B0: - movs r0, 0x64 - bl DungeonRandInt - cmp r0, 0x31 - bgt _080516F4 - ldr r4, [r6, 0x4] - ldr r0, [r6, 0xC] - adds r7, r5, 0x1 - cmp r4, r0 - bge _080516E4 - ldr r5, _080516EC - ldr r0, _080516F0 - adds r2, r0, 0 -_080516CA: - ldr r0, [r5] - adds r1, r4, 0 - str r2, [sp, 0xC] - bl GetTileSafe - ldrh r1, [r0] - ldr r2, [sp, 0xC] - ands r1, r2 - strh r1, [r0] - adds r4, 0x1 - ldr r0, [r5, 0xC] - cmp r4, r0 - blt _080516CA -_080516E4: - ldr r0, [r6] - adds r0, 0x1 - str r0, [r6] - b _08051724 - .align 2, 0 -_080516EC: .4byte gUnknown_202F1B8 -_080516F0: .4byte 0x0000ffdf -_080516F4: - ldr r0, [r6, 0x8] - subs r0, 0x1 - str r0, [r6, 0x8] - ldr r4, [r6, 0x4] - ldr r0, [r6, 0xC] - adds r7, r5, 0x1 - cmp r4, r0 - bge _08051724 - ldr r5, _08051784 - ldr r1, _08051788 - adds r2, r1, 0 -_0805170A: - ldr r0, [r5, 0x8] - adds r1, r4, 0 - str r2, [sp, 0xC] - bl GetTileSafe - ldrh r1, [r0] - ldr r2, [sp, 0xC] - ands r1, r2 - strh r1, [r0] - adds r4, 0x1 - ldr r0, [r5, 0xC] - cmp r4, r0 - blt _0805170A -_08051724: - adds r5, r7, 0 - cmp r5, r10 - bge _08051734 - ldr r0, [r6, 0x8] - ldr r1, [r6] - subs r0, r1 - cmp r0, r8 - bgt _080516B0 -_08051734: - movs r5, 0 - ldr r3, _08051784 - cmp r5, r10 - bge _080517CE - ldr r0, [r3, 0xC] - ldr r1, [r3, 0x4] - subs r0, r1 - cmp r0, r9 - ble _080517CE - adds r6, r3, 0 -_08051748: - movs r0, 0x64 - bl DungeonRandInt - cmp r0, 0x31 - bgt _0805178C - ldr r4, [r6] - ldr r0, [r6, 0x8] - adds r7, r5, 0x1 - cmp r4, r0 - bge _0805177C - ldr r5, _08051784 - ldr r0, _08051788 - adds r2, r0, 0 -_08051762: - ldr r1, [r5, 0x4] - adds r0, r4, 0 - str r2, [sp, 0xC] - bl GetTileSafe - ldrh r1, [r0] - ldr r2, [sp, 0xC] - ands r1, r2 - strh r1, [r0] - adds r4, 0x1 - ldr r0, [r5, 0x8] - cmp r4, r0 - blt _08051762 -_0805177C: - ldr r0, [r6, 0x4] - adds r0, 0x1 - str r0, [r6, 0x4] - b _080517BC - .align 2, 0 -_08051784: .4byte gUnknown_202F1B8 -_08051788: .4byte 0x0000ffdf -_0805178C: - ldr r0, [r6, 0xC] - subs r0, 0x1 - str r0, [r6, 0xC] - ldr r4, [r6] - ldr r0, [r6, 0x8] - adds r7, r5, 0x1 - cmp r4, r0 - bge _080517BC - ldr r5, _080518E4 - ldr r1, _080518E8 - adds r2, r1, 0 -_080517A2: - ldr r1, [r5, 0xC] - adds r0, r4, 0 - str r2, [sp, 0xC] - bl GetTileSafe - ldrh r1, [r0] - ldr r2, [sp, 0xC] - ands r1, r2 - strh r1, [r0] - adds r4, 0x1 - ldr r0, [r5, 0x8] - cmp r4, r0 - blt _080517A2 -_080517BC: - adds r5, r7, 0 - ldr r3, _080518E4 - cmp r5, r10 - bge _080517CE - ldr r1, [r6, 0xC] - ldr r0, [r6, 0x4] - subs r1, r0 - cmp r1, r9 - bgt _08051748 -_080517CE: - ldr r7, [r3] - ldr r0, [r3, 0x8] - cmp r7, r0 - bge _08051824 - adds r4, r3, 0 - mov r9, r3 -_080517DA: - ldr r5, [r4, 0x4] - ldr r0, [r4, 0xC] - adds r1, r7, 0x1 - mov r8, r1 - cmp r5, r0 - bge _0805181A - ldr r3, _080518E4 - ldr r0, _080518E8 - adds r6, r0, 0 -_080517EC: - adds r0, r7, 0 - adds r1, r5, 0 - str r3, [sp, 0x10] - bl GetTileSafe - adds r2, r0, 0 - ldrh r1, [r2] - movs r0, 0x20 - ands r0, r1 - ldr r3, [sp, 0x10] - cmp r0, 0 - beq _08051812 - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08051812 - adds r0, r1, 0 - ands r0, r6 - strh r0, [r2] -_08051812: - adds r5, 0x1 - ldr r0, [r4, 0xC] - cmp r5, r0 - blt _080517EC -_0805181A: - mov r7, r8 - mov r1, r9 - ldr r0, [r1, 0x8] - cmp r7, r0 - blt _080517DA -_08051824: - ldr r0, [r3] - ldr r1, [r3, 0x8] - adds r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - asrs r2, r0, 1 - ldr r0, [r3, 0x4] - ldr r1, [r3, 0xC] - adds r0, r1 - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - subs r0, 0x1 - mov r10, r0 - movs r0, 0 - mov r9, r0 - subs r7, r2, 0x1 - adds r0, r2, 0x2 - cmp r7, r0 - bge _080518D2 - adds r2, r0, 0 - str r2, [sp, 0x4] -_08051850: - mov r5, r10 - adds r0, r5, 0x3 - adds r1, r7, 0x1 - mov r8, r1 - mov r1, r9 - adds r1, 0x1 - str r1, [sp, 0x8] - cmp r5, r0 - bge _080518C6 - movs r3, 0 -_08051864: - adds r0, r7, 0 - adds r1, r5, 0 - str r3, [sp, 0x10] - bl GetTileSafe - adds r6, r0, 0 - ldrh r1, [r6] - movs r0, 0x20 - ands r0, r1 - ldr r3, [sp, 0x10] - cmp r0, 0 - beq _080518BA - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080518BA - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080518BA - mov r0, r9 - lsls r2, r0, 1 - adds r2, r3 - ldr r0, [sp] - ldrb r1, [r0, 0x18] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 1 - adds r2, r0 - ldr r1, _080518EC - adds r2, r1 - movs r0, 0 - ldrsh r4, [r2, r0] - movs r0, 0x64 - bl DungeonRandInt - ldr r3, [sp, 0x10] - cmp r4, r0 - ble _080518BA - ldrh r1, [r6, 0x4] - movs r0, 0x2 - orrs r0, r1 - strh r0, [r6, 0x4] -_080518BA: - adds r5, 0x1 - adds r3, 0x6 - mov r0, r10 - adds r0, 0x3 - cmp r5, r0 - blt _08051864 -_080518C6: - mov r7, r8 - ldr r1, [sp, 0x8] - mov r9, r1 - ldr r0, [sp, 0x4] - cmp r7, r0 - blt _08051850 -_080518D2: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080518E4: .4byte gUnknown_202F1B8 -_080518E8: .4byte 0x0000ffdf -_080518EC: .4byte gUnknown_80F57D4 - thumb_func_end sub_8051654 - - thumb_func_start sub_80518F0 -sub_80518F0: - push {r4-r7,lr} - movs r5, 0 - movs r6, 0x10 - movs r7, 0 -_080518F8: - adds r0, r5, 0 - movs r1, 0x1 - bl GetTileSafe - adds r4, r0, 0 - bl sub_804FD10 - cmp r5, 0 - beq _0805190E - cmp r5, 0x37 - bne _08051914 -_0805190E: - ldrh r0, [r4] - orrs r0, r6 - strh r0, [r4] -_08051914: - adds r0, r5, 0 - movs r1, 0x1E - bl GetTileSafe - adds r4, r0, 0 - bl sub_804FD10 - cmp r5, 0 - beq _0805192A - cmp r5, 0x37 - bne _08051930 -_0805192A: - ldrh r0, [r4] - orrs r0, r6 - strh r0, [r4] -_08051930: - adds r5, 0x1 - cmp r5, 0x37 - ble _080518F8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80518F0 - - thumb_func_start sub_805193C -sub_805193C: - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r3, 0 - ldr r4, [sp, 0x18] - lsls r0, 24 - lsrs r5, r0, 24 - lsls r1, 16 - lsls r2, 16 - lsrs r1, 16 - orrs r1, r2 - str r1, [sp, 0x4] - adds r0, r5, 0 - bl sub_805210C - lsls r0, 24 - cmp r0, 0 - beq _0805196A - mov r0, sp - movs r1, 0x76 - movs r2, 0 - bl xxx_init_itemslot_8090A8C - b _08051974 -_0805196A: - mov r0, sp - adds r1, r5, 0 - movs r2, 0 - bl xxx_init_itemslot_8090A8C -_08051974: - mov r0, sp - ldrb r0, [r0] - orrs r4, r0 - mov r0, sp - strb r4, [r0] - cmp r6, 0 - beq _08051984 - strb r6, [r0, 0x1] -_08051984: - add r0, sp, 0x4 - mov r1, sp - movs r2, 0x1 - bl sub_80460F8 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_805193C - - thumb_func_start sub_8051998 -sub_8051998: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - mov r8, r1 - mov r9, r2 - lsls r0, 16 - asrs r0, 16 - adds r1, r0, 0 - lsls r3, 24 - lsrs r6, r3, 24 - adds r7, r6, 0 - ldr r0, _080519E4 - cmp r1, r0 - bne _080519E8 - mov r1, sp - movs r5, 0 - movs r4, 0 - movs r0, 0x3C - strh r0, [r1] - bl sub_803DA20 - mov r1, sp - strh r0, [r1, 0x8] - mov r0, sp - strb r6, [r0, 0x2] - str r4, [sp, 0x4] - strb r5, [r0, 0x10] - mov r1, r8 - strh r1, [r0, 0xC] - mov r1, r9 - strh r1, [r0, 0xE] - movs r1, 0x1 - bl sub_806B7F8 - b _08051A14 - .align 2, 0 -_080519E4: .4byte 0x000001a5 -_080519E8: - cmp r1, 0 - beq _08051A14 - mov r0, sp - movs r5, 0 - movs r4, 0 - strh r1, [r0] - adds r0, r1, 0 - bl sub_803DA20 - mov r1, sp - strh r0, [r1, 0x8] - mov r0, sp - strb r7, [r0, 0x2] - str r4, [sp, 0x4] - strb r5, [r0, 0x10] - mov r1, r8 - strh r1, [r0, 0xC] - mov r1, r9 - strh r1, [r0, 0xE] - movs r1, 0x1 - bl sub_806B7F8 -_08051A14: - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8051998 - - thumb_func_start sub_8051A24 -sub_8051A24: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - adds r6, r0, 0 - adds r4, r1, 0 - adds r5, r2, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - adds r0, r4, 0 - adds r1, r5, 0 - bl GetTileSafe - adds r7, r0, 0 - lsls r4, 16 - lsls r5, 16 - lsrs r4, 16 - orrs r4, r5 - str r4, [sp] - adds r0, r6, 0 - mov r1, sp - movs r2, 0 - bl sub_8045684 - cmp r0, 0 - beq _08051A66 - str r0, [r7, 0x14] - adds r0, 0x20 - mov r1, r8 - strb r1, [r0] -_08051A66: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8051A24 - - thumb_func_start sub_8051A74 -sub_8051A74: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r6, r2, 0 - adds r7, r3, 0 - ldr r0, [sp, 0x20] - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - cmp r1, 0xF - bls _08051AA2 - ldrh r0, [r4] - ldr r1, _08051AB4 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strh r1, [r4] -_08051AA2: - mov r0, r8 - cmp r0, 0x45 - bls _08051AAA - b _08051D68 -_08051AAA: - lsls r0, 2 - ldr r1, _08051AB8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08051AB4: .4byte 0x0000fffc -_08051AB8: .4byte _08051ABC - .align 2, 0 -_08051ABC: - .4byte _08051BF0 - .4byte _08051C0C - .4byte _08051D50 - .4byte _08051E1A - .4byte _08051C20 - .4byte _08051C54 - .4byte _08051C64 - .4byte _08051C74 - .4byte _08051C94 - .4byte _08051D00 - .4byte _08051C7E - .4byte _08051D10 - .4byte _08051D24 - .4byte _08051D50 - .4byte _08051D50 - .4byte _08051E1A - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051D68 - .4byte _08051C94 - .4byte _08051CD4 - .4byte _08051BD4 -_08051BD4: - ldr r0, _08051BFC - ldr r0, [r0] - ldr r2, _08051C00 - adds r1, r0, r2 - strh r6, [r1] - ldr r3, _08051C04 - adds r0, r3 - strh r7, [r0] - movs r0, 0xB - adds r1, r6, 0 - adds r2, r7, 0 - movs r3, 0 - bl sub_8051A24 -_08051BF0: - ldrh r1, [r4] - ldr r0, _08051C08 - ands r0, r1 - movs r1, 0x1 - movs r2, 0 - b _08051D42 - .align 2, 0 -_08051BFC: .4byte gDungeon -_08051C00: .4byte 0x00000684 -_08051C04: .4byte 0x00000686 -_08051C08: .4byte 0x0000fffc -_08051C0C: - ldrh r1, [r4] - ldr r0, _08051C18 - ands r0, r1 - ldr r1, _08051C1C - ands r0, r1 - b _08051D5A - .align 2, 0 -_08051C18: .4byte 0x0000fffc -_08051C1C: .4byte 0x0000feff -_08051C20: - ldrh r1, [r4] - ldr r0, _08051C44 - ands r0, r1 - movs r1, 0x1 - movs r2, 0 - orrs r0, r1 - strh r0, [r4] - ldr r0, _08051C48 - ldr r0, [r0] - ldr r3, _08051C4C - adds r1, r0, r3 - strh r6, [r1] - ldr r1, _08051C50 - adds r0, r1 - strh r7, [r0] - strb r2, [r4, 0x9] - b _08051E1A - .align 2, 0 -_08051C44: .4byte 0x0000fffc -_08051C48: .4byte gDungeon -_08051C4C: .4byte 0x0000e218 -_08051C50: .4byte 0x0000e21a -_08051C54: - ldrh r1, [r4] - ldr r0, _08051C60 - ands r0, r1 - movs r2, 0 - movs r1, 0x2 - b _08051D42 - .align 2, 0 -_08051C60: .4byte 0x0000fffc -_08051C64: - ldrh r1, [r4] - ldr r0, _08051C70 - ands r0, r1 - movs r1, 0x3 - b _08051D58 - .align 2, 0 -_08051C70: .4byte 0x0000fffc -_08051C74: - ldr r1, _08051C8C - movs r0, 0x1 - strb r0, [r1] - bl sub_8049840 -_08051C7E: - ldrh r1, [r4] - ldr r0, _08051C90 - ands r0, r1 - movs r1, 0x3 - orrs r0, r1 - b _08051D56 - .align 2, 0 -_08051C8C: .4byte gUnknown_202F1A8 -_08051C90: .4byte 0x0000fffc -_08051C94: - ldrh r1, [r4] - ldr r0, _08051CC0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strh r0, [r4] - ldrh r0, [r4, 0x4] - movs r2, 0 - orrs r0, r1 - ldr r1, _08051CC4 - ands r0, r1 - strh r0, [r4, 0x4] - strb r2, [r4, 0x9] - ldr r0, _08051CC8 - ldr r0, [r0] - ldr r2, _08051CCC - adds r1, r0, r2 - strh r6, [r1] - ldr r3, _08051CD0 - adds r0, r3 - strh r7, [r0] - b _08051E1A - .align 2, 0 -_08051CC0: .4byte 0x0000fffc -_08051CC4: .4byte 0x0000fffd -_08051CC8: .4byte gDungeon -_08051CCC: .4byte 0x0000e21c -_08051CD0: .4byte 0x0000e21e -_08051CD4: - ldrh r1, [r4] - movs r2, 0x80 - lsls r2, 4 - adds r0, r2, 0 - orrs r0, r1 - ldr r1, _08051CF8 - ands r0, r1 - movs r1, 0x1 - movs r2, 0 - orrs r0, r1 - strh r0, [r4] - ldrh r1, [r4, 0x4] - ldr r0, _08051CFC - ands r0, r1 - strh r0, [r4, 0x4] - strb r2, [r4, 0x9] - b _08051E1A - .align 2, 0 -_08051CF8: .4byte 0x0000fffc -_08051CFC: .4byte 0x0000fffd -_08051D00: - ldrh r1, [r4] - ldr r0, _08051D0C - ands r0, r1 - movs r1, 0x1 - b _08051D58 - .align 2, 0 -_08051D0C: .4byte 0x0000fffc -_08051D10: - ldrh r1, [r4] - ldr r0, _08051D20 - ands r0, r1 - movs r1, 0x1 - movs r2, 0 - orrs r0, r1 - b _08051D3C - .align 2, 0 -_08051D20: .4byte 0x0000fffc -_08051D24: - ldrh r1, [r4] - ldr r0, _08051D4C - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - movs r2, 0x80 - lsls r2, 5 - adds r1, r2, 0 - orrs r0, r1 - movs r1, 0x10 - orrs r0, r1 - movs r2, 0 -_08051D3C: - movs r3, 0x80 - lsls r3, 4 - adds r1, r3, 0 -_08051D42: - orrs r0, r1 - strh r0, [r4] - strb r2, [r4, 0x9] - b _08051E1A - .align 2, 0 -_08051D4C: .4byte 0x0000fffc -_08051D50: - ldrh r1, [r4] - ldr r0, _08051D64 - ands r0, r1 -_08051D56: - movs r1, 0x10 -_08051D58: - orrs r0, r1 -_08051D5A: - strh r0, [r4] - movs r0, 0xFF - strb r0, [r4, 0x9] - b _08051E1A - .align 2, 0 -_08051D64: .4byte 0x0000fffc -_08051D68: - mov r0, r8 - subs r0, 0x10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xCB - bhi _08051E1A - mov r1, r8 - lsls r0, r1, 4 - ldr r1, _08051DA0 - adds r5, r0, r1 - ldrb r0, [r5, 0xC] - strb r0, [r4, 0x9] - ldrb r1, [r5] - cmp r1, 0 - beq _08051DB8 - mov r2, r9 - cmp r2, 0 - beq _08051DA4 - ldrb r0, [r5] - movs r1, 0x2 - ldrsh r3, [r5, r1] - ldr r1, [r5, 0x4] - str r1, [sp] - adds r1, r6, 0 - adds r2, r7, 0 - bl sub_805193C - b _08051DDC - .align 2, 0 -_08051DA0: .4byte gUnknown_80F6D20 -_08051DA4: - ldr r0, _08051DB0 - ldr r0, [r0] - ldr r2, _08051DB4 - adds r0, r2 - strb r1, [r0] - b _08051DDC - .align 2, 0 -_08051DB0: .4byte gDungeon -_08051DB4: .4byte 0x0000068b -_08051DB8: - ldr r2, [r5, 0x4] - cmp r2, 0 - beq _08051DDC - ldr r0, _08051E2C - ldr r1, [r0] - subs r0, r2, 0x1 - lsls r0, 2 - adds r0, r1, r0 - ldr r3, _08051E30 - adds r0, r3 - strh r6, [r0] - ldr r0, [r5, 0x4] - subs r0, 0x1 - lsls r0, 2 - adds r1, r0 - ldr r0, _08051E34 - adds r1, r0 - strh r7, [r1] -_08051DDC: - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08051DF2 - ldrb r3, [r5, 0xA] - mov r1, r8 - str r1, [sp] - adds r1, r6, 0 - adds r2, r7, 0 - bl sub_8051998 -_08051DF2: - ldrb r0, [r5, 0xB] - cmp r0, 0x14 - beq _08051E08 - mov r2, r9 - cmp r2, 0 - beq _08051E08 - ldrb r3, [r5, 0xD] - adds r1, r6, 0 - adds r2, r7, 0 - bl sub_8051A24 -_08051E08: - ldrb r0, [r5, 0xE] - cmp r0, 0 - beq _08051E1A - ldrh r0, [r4] - ldr r1, _08051E38 - ands r1, r0 - movs r0, 0x2 - orrs r1, r0 - strh r1, [r4] -_08051E1A: - movs r0, 0 - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08051E2C: .4byte gDungeon -_08051E30: .4byte 0x0000e220 -_08051E34: .4byte 0x0000e222 -_08051E38: .4byte 0x0000fffc - thumb_func_end sub_8051A74 - - thumb_func_start sub_8051E3C -sub_8051E3C: - push {r4-r6,lr} - sub sp, 0x4 - movs r5, 0 -_08051E42: - movs r4, 0 - adds r6, r5, 0x1 -_08051E46: - adds r0, r4, 0 - adds r1, r5, 0 - bl GetTileSafe - adds r2, r0, 0 - ldrb r0, [r2, 0xE] - cmp r0, 0xF - bls _08051E66 - adds r1, r0, 0 - movs r0, 0 - str r0, [sp] - adds r0, r2, 0 - adds r2, r4, 0 - adds r3, r5, 0 - bl sub_8051A74 -_08051E66: - adds r4, 0x1 - cmp r4, 0x37 - ble _08051E46 - adds r5, r6, 0 - cmp r5, 0x1F - ble _08051E42 - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8051E3C - - thumb_func_start sub_8051E7C -sub_8051E7C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r9, r0 - movs r1, 0x4 - ldrsh r0, [r0, r1] - mov r2, r9 - movs r3, 0x6 - ldrsh r1, [r2, r3] - subs r1, 0x1 - bl GetTileSafe - str r0, [sp, 0x8] - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 5 - ands r0, r1 - cmp r0, 0 - bne _08051EB8 - ldr r0, _08051EB4 - ldr r1, [r0] - mov r0, r9 - bl SendMessage - b _080520F6 - .align 2, 0 -_08051EB4: .4byte gUnknown_80FDDF0 -_08051EB8: - ldr r0, _08051EF0 - ldr r0, [r0] - ldr r1, _08051EF4 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _08051EC8 - b _080520EC -_08051EC8: - mov r2, r9 - ldrh r1, [r2, 0x6] - subs r1, 0x1 - lsls r1, 16 - ldrh r0, [r2, 0x4] - orrs r0, r1 - str r0, [sp, 0x4] - mov r0, r9 - bl GetEntityRoom - lsls r0, 24 - lsrs r0, 24 - str r0, [sp, 0xC] - mov r3, r9 - movs r1, 0x6 - ldrsh r0, [r3, r1] - adds r6, r0, 0 - subs r6, 0x15 - b _08051FE0 - .align 2, 0 -_08051EF0: .4byte gDungeon -_08051EF4: .4byte 0x00003a09 -_08051EF8: - mov r2, r9 - movs r3, 0x4 - ldrsh r0, [r2, r3] - adds r5, r0, 0 - subs r5, 0x14 - adds r0, 0x14 - adds r1, r6, 0x1 - str r1, [sp, 0x10] - cmp r5, r0 - bgt _08051FD8 - ldr r2, _080520C0 - mov r10, r2 -_08051F10: - mov r0, r10 - ldr r3, [r0] - ldr r1, _080520C4 - adds r0, r3, r1 - ldr r1, [r0] - subs r2, r5, r1 - mov r8, r2 - ldr r2, _080520C8 - adds r0, r3, r2 - ldr r2, [r0] - subs r7, r6, r2 - mov r0, r8 - cmp r0, 0 - blt _08051FCA - cmp r7, 0 - blt _08051FCA - cmp r0, 0x7 - bgt _08051FCA - cmp r7, 0x7 - bgt _08051FCA - adds r0, r1, 0x1 - cmp r5, r0 - blt _08051FCA - adds r0, r2, 0x1 - cmp r6, r0 - blt _08051FCA - ldr r1, _080520CC - adds r0, r3, r1 - ldr r0, [r0] - subs r0, 0x1 - cmp r5, r0 - bge _08051FCA - ldr r2, _080520D0 - adds r0, r3, r2 - ldr r0, [r0] - subs r0, 0x1 - cmp r6, r0 - bge _08051FCA - adds r0, r5, 0 - adds r1, r6, 0 - bl GetTileSafe - adds r4, r0, 0 - ldrh r0, [r4] - movs r3, 0x80 - lsls r3, 1 - adds r1, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08051F9A - mov r0, r10 - ldr r2, [r0] - lsls r1, r7, 1 - adds r1, r7 - lsls r1, 3 - mov r3, r8 - lsls r0, r3, 1 - add r0, r8 - lsls r0, 6 - adds r1, r0 - adds r2, r1 - ldr r1, _080520D4 - adds r0, r2, r1 - ldrh r0, [r0] - strh r0, [r4] - ldr r3, _080520D8 - adds r2, r3 - ldrh r0, [r2] - strh r0, [r4, 0x4] -_08051F9A: - mov r1, r10 - ldr r0, [r1] - mov r2, r8 - lsls r1, r2, 3 - adds r1, r7, r1 - ldr r3, _080520DC - adds r0, r3 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - str r0, [sp] - adds r0, r4, 0 - adds r2, r5, 0 - adds r3, r6, 0 - bl sub_8051A74 - ldrh r1, [r4, 0x4] - movs r0, 0x3 - orrs r0, r1 - strh r0, [r4, 0x4] - ldr r0, [sp, 0xC] - cmp r0, 0xFF - beq _08051FCA - strb r0, [r4, 0x9] -_08051FCA: - adds r5, 0x1 - mov r2, r9 - movs r3, 0x4 - ldrsh r0, [r2, r3] - adds r0, 0x14 - cmp r5, r0 - ble _08051F10 -_08051FD8: - ldr r6, [sp, 0x10] - mov r1, r9 - movs r2, 0x6 - ldrsh r0, [r1, r2] -_08051FE0: - adds r0, 0x13 - cmp r6, r0 - ble _08051EF8 - mov r3, r9 - movs r1, 0x6 - ldrsh r0, [r3, r1] - adds r6, r0, 0 - subs r6, 0x15 - adds r0, 0x13 - ldr r7, _080520C0 - cmp r6, r0 - bgt _0805207A -_08051FF8: - mov r2, r9 - movs r3, 0x4 - ldrsh r0, [r2, r3] - adds r5, r0, 0 - subs r5, 0x14 - adds r0, 0x14 - adds r1, r6, 0x1 - str r1, [sp, 0x10] - cmp r5, r0 - bgt _0805206C - ldr r7, _080520C0 -_0805200E: - ldr r0, _080520C0 - ldr r4, [r0] - ldr r2, _080520C4 - adds r0, r4, r2 - ldr r2, [r0] - subs r1, r5, r2 - ldr r3, _080520C8 - adds r0, r4, r3 - ldr r3, [r0] - subs r0, r6, r3 - cmp r1, 0 - blt _0805205E - cmp r0, 0 - blt _0805205E - cmp r1, 0x7 - bgt _0805205E - cmp r0, 0x7 - bgt _0805205E - adds r0, r2, 0x1 - cmp r5, r0 - blt _0805205E - adds r0, r3, 0x1 - cmp r6, r0 - blt _0805205E - ldr r1, _080520CC - adds r0, r4, r1 - ldr r0, [r0] - subs r0, 0x1 - cmp r5, r0 - bge _0805205E - ldr r2, _080520D0 - adds r0, r4, r2 - ldr r0, [r0] - subs r0, 0x1 - cmp r6, r0 - bge _0805205E - adds r0, r5, 0 - adds r1, r6, 0 - bl sub_80498A8 -_0805205E: - adds r5, 0x1 - mov r3, r9 - movs r1, 0x4 - ldrsh r0, [r3, r1] - adds r0, 0x14 - cmp r5, r0 - ble _0805200E -_0805206C: - ldr r6, [sp, 0x10] - mov r2, r9 - movs r3, 0x6 - ldrsh r0, [r2, r3] - adds r0, 0x13 - cmp r6, r0 - ble _08051FF8 -_0805207A: - ldr r0, [r7] - ldr r1, _080520E0 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r2, [sp, 0x8] - ldrh r1, [r2] - ldr r0, _080520E4 - ands r0, r1 - strh r0, [r2] - mov r3, r9 - movs r1, 0x4 - ldrsh r0, [r3, r1] - movs r2, 0x6 - ldrsh r1, [r3, r2] - subs r1, 0x1 - bl sub_80498A8 - bl sub_8049B8C - bl sub_8049ED4 - add r0, sp, 0x4 - bl sub_80429FC - ldr r0, _080520E8 - ldr r1, [r0] - mov r0, r9 - bl SendMessage - movs r0, 0x14 - movs r1, 0x3C - bl sub_803E708 - b _080520F6 - .align 2, 0 -_080520C0: .4byte gDungeon -_080520C4: .4byte 0x0000e250 -_080520C8: .4byte 0x0000e254 -_080520CC: .4byte 0x0000e258 -_080520D0: .4byte 0x0000e25c -_080520D4: .4byte 0x0000e27c -_080520D8: .4byte 0x0000e280 -_080520DC: .4byte 0x0000e87c -_080520E0: .4byte 0x00003a09 -_080520E4: .4byte 0x0000efef -_080520E8: .4byte gUnknown_80FDDD0 -_080520EC: - ldr r0, _08052108 - ldr r1, [r0] - mov r0, r9 - bl SendMessage -_080520F6: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08052108: .4byte gUnknown_80FDDF0 - thumb_func_end sub_8051E7C - - thumb_func_start sub_805210C -sub_805210C: - push {r4-r7,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r3, 0 - ldr r7, _080521B4 - movs r4, 0x1 - ldr r2, [r7] -_0805211A: - ldrb r1, [r2] - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - beq _0805212A - ldrb r0, [r2, 0x2] - cmp r0, r5 - beq _080521C8 -_0805212A: - adds r2, 0x4 - adds r3, 0x1 - cmp r3, 0x13 - ble _0805211A - movs r3, 0 - ldr r0, _080521B8 - ldr r4, [r0] - movs r6, 0x1 -_0805213A: - movs r0, 0x64 - adds r2, r3, 0 - muls r2, r0 - adds r0, r2, r4 - ldr r1, _080521BC - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - beq _0805216C - adds r0, r2, r4 - ldr r1, _080521C0 - adds r0, r1 - ldrb r1, [r0] - adds r0, r6, 0 - ands r0, r1 - adds r1, r2, r4 - cmp r0, 0 - beq _0805216C - ldr r2, _080521C4 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, r5 - beq _080521C8 -_0805216C: - adds r3, 0x1 - cmp r3, 0x3 - ble _0805213A - movs r3, 0 - ldr r0, _080521B8 - ldr r4, [r0] -_08052178: - movs r0, 0x58 - muls r0, r3 - adds r2, r0, r4 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08052196 - adds r0, r2, 0 - adds r0, 0x28 - ldrb r0, [r0] - cmp r0, 0 - beq _08052196 - cmp r0, r5 - beq _080521C8 -_08052196: - adds r3, 0x1 - movs r0, 0xCE - lsls r0, 1 - cmp r3, r0 - ble _08052178 - ldr r0, [r7] - lsls r1, r5, 1 - adds r0, 0x50 - adds r0, r1 - ldrh r0, [r0] - cmp r0, 0 - bne _080521C8 - movs r0, 0 - b _080521CA - .align 2, 0 -_080521B4: .4byte gTeamInventoryRef -_080521B8: .4byte gRecruitedPokemonRef -_080521BC: .4byte 0x00008df8 -_080521C0: .4byte 0x00008e38 -_080521C4: .4byte 0x00008e3a -_080521C8: - movs r0, 0x1 -_080521CA: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_805210C - - thumb_func_start sub_80521D0 -sub_80521D0: - push {r4-r6,lr} - movs r1, 0 - ldr r5, _08052200 - ldr r6, _08052204 - ldr r4, _08052208 - ldr r3, _0805220C - movs r2, 0 -_080521DE: - ldr r0, [r4] - adds r0, r3 - adds r0, r1 - strb r2, [r0] - adds r1, 0x1 - cmp r1, 0x9 - ble _080521DE - movs r0, 0 - str r0, [r5] - movs r0, 0x1 - strb r0, [r6] - movs r0, 0 - bl sub_8052210 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052200: .4byte gUnknown_202F1E8 -_08052204: .4byte gUnknown_203B434 -_08052208: .4byte gDungeon -_0805220C: .4byte 0x0001c054 - thumb_func_end sub_80521D0 - - thumb_func_start sub_8052210 -sub_8052210: - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r5, _08052280 -_0805221A: - lsls r0, r4, 6 - ldr r1, [r5] - adds r0, r1 - ldr r1, _08052284 - adds r0, r1 - ldr r1, _08052288 - bl strcpy - adds r4, 0x1 - cmp r4, 0x9 - ble _0805221A - ldr r1, _08052280 - ldr r0, [r1] - ldr r2, _0805228C - adds r0, r2 - movs r3, 0 - strb r3, [r0] - ldr r0, [r1] - adds r2, 0x1 - adds r1, r0, r2 - strh r3, [r1] - adds r2, 0x2 - adds r1, r0, r2 - strh r3, [r1] - adds r2, 0x2 - adds r1, r0, r2 - strh r3, [r1] - ldr r1, _08052290 - adds r2, r0, r1 - movs r1, 0x4 - strh r1, [r2] - ldr r2, _08052294 - adds r0, r2 - str r3, [r0] - cmp r6, 0 - beq _08052278 - ldr r0, _08052298 - ldr r0, [r0] - cmp r0, 0x3 - bne _08052278 - movs r0, 0 - movs r1, 0 - bl sub_803EAF0 - movs r0, 0xB - bl sub_803E46C -_08052278: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08052280: .4byte gDungeon -_08052284: .4byte 0x0001bdd4 -_08052288: .4byte gUnknown_80F7AE8 -_0805228C: .4byte 0x0001c05f -_08052290: .4byte 0x0001c066 -_08052294: .4byte 0x0001c06c -_08052298: .4byte gUnknown_202EDD0 - thumb_func_end sub_8052210 - .align 2,0 diff --git a/asm/code_804FD30.s b/asm/code_804FD30.s new file mode 100644 index 000000000..f92d82837 --- /dev/null +++ b/asm/code_804FD30.s @@ -0,0 +1,4885 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_804FD30 +sub_804FD30: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + movs r6, 0 +_0804FD3A: + movs r7, 0 + adds r4, r6, 0x1 +_0804FD3E: + adds r0, r6, 0 + adds r1, r7, 0 + bl GetTileSafe + bl sub_804FD10 + subs r3, r7, 0x1 + cmp r6, 0 + blt _0804FD5C + cmp r3, 0 + blt _0804FD5C + cmp r6, 0x37 + bgt _0804FD5C + cmp r3, 0x1F + ble _0804FD60 +_0804FD5C: + movs r0, 0x1 + b _0804FD62 +_0804FD60: + movs r0, 0 +_0804FD62: + cmp r0, 0 + bne _0804FE24 + cmp r4, 0 + blt _0804FD76 + cmp r3, 0 + blt _0804FD76 + cmp r4, 0x37 + bgt _0804FD76 + cmp r3, 0x1F + ble _0804FD7A +_0804FD76: + movs r0, 0x1 + b _0804FD7C +_0804FD7A: + movs r0, 0 +_0804FD7C: + cmp r0, 0 + bne _0804FE24 + cmp r4, 0 + blt _0804FD90 + cmp r3, 0 + blt _0804FD90 + cmp r4, 0x37 + bgt _0804FD90 + cmp r3, 0x1F + ble _0804FD94 +_0804FD90: + movs r0, 0x1 + b _0804FD96 +_0804FD94: + movs r0, 0 +_0804FD96: + cmp r0, 0 + bne _0804FE24 + adds r2, r7, 0x1 + cmp r4, 0 + blt _0804FDAC + cmp r2, 0 + blt _0804FDAC + cmp r4, 0x37 + bgt _0804FDAC + cmp r2, 0x1F + ble _0804FDB0 +_0804FDAC: + movs r0, 0x1 + b _0804FDB2 +_0804FDB0: + movs r0, 0 +_0804FDB2: + cmp r0, 0 + bne _0804FE24 + cmp r6, 0 + blt _0804FDC6 + cmp r2, 0 + blt _0804FDC6 + cmp r6, 0x37 + bgt _0804FDC6 + cmp r2, 0x1F + ble _0804FDCA +_0804FDC6: + movs r0, 0x1 + b _0804FDCC +_0804FDCA: + movs r0, 0 +_0804FDCC: + cmp r0, 0 + bne _0804FE24 + adds r0, r2, 0 + subs r1, r6, 0x1 + cmp r1, 0 + blt _0804FDE4 + cmp r0, 0 + blt _0804FDE4 + cmp r1, 0x37 + bgt _0804FDE4 + cmp r2, 0x1F + ble _0804FDE8 +_0804FDE4: + movs r0, 0x1 + b _0804FDEA +_0804FDE8: + movs r0, 0 +_0804FDEA: + cmp r0, 0 + bne _0804FE24 + cmp r1, 0 + blt _0804FDFE + cmp r7, 0 + blt _0804FDFE + cmp r1, 0x37 + bgt _0804FDFE + cmp r7, 0x1F + ble _0804FE02 +_0804FDFE: + movs r0, 0x1 + b _0804FE04 +_0804FE02: + movs r0, 0 +_0804FE04: + cmp r0, 0 + bne _0804FE24 + adds r0, r3, 0 + cmp r1, 0 + blt _0804FE1A + cmp r0, 0 + blt _0804FE1A + cmp r1, 0x37 + bgt _0804FE1A + cmp r3, 0x1F + ble _0804FE1E +_0804FE1A: + movs r0, 0x1 + b _0804FE20 +_0804FE1E: + movs r0, 0 +_0804FE20: + cmp r0, 0 + beq _0804FE34 +_0804FE24: + adds r0, r6, 0 + adds r1, r7, 0 + bl GetTileSafe + ldrh r2, [r0] + movs r1, 0x10 + orrs r1, r2 + strh r1, [r0] +_0804FE34: + adds r7, 0x1 + cmp r7, 0x1F + ble _0804FD3E + adds r6, 0x1 + cmp r6, 0x37 + bgt _0804FE42 + b _0804FD3A +_0804FE42: + ldr r3, _0804FEB4 + ldr r1, [r3] + ldr r0, _0804FEB8 + adds r2, r1, r0 + ldr r0, _0804FEBC + strh r0, [r2] + ldr r2, _0804FEC0 + adds r1, r2 + movs r0, 0x1 + negs r0, r0 + strh r0, [r1] + movs r6, 0 + mov r8, r3 + ldr r1, _0804FEC4 +_0804FE5E: + adds r5, r1, 0 + movs r4, 0 + movs r7, 0x7 +_0804FE64: + mov r2, r8 + ldr r0, [r2] + adds r0, r5 + adds r0, r4 + str r1, [sp] + bl sub_804FD10 + adds r4, 0x18 + subs r7, 0x1 + ldr r1, [sp] + cmp r7, 0 + bge _0804FE64 + adds r1, 0xC0 + adds r6, 0x1 + cmp r6, 0x7 + ble _0804FE5E + ldr r0, _0804FEB4 + ldr r1, [r0] + ldr r2, _0804FEC8 + adds r1, r2 + movs r2, 0 + strh r2, [r1] + movs r6, 0 + adds r4, r0, 0 + ldr r3, _0804FECC +_0804FE96: + ldr r0, [r4] + lsls r1, r6, 2 + adds r0, r3 + adds r0, r1 + ldr r0, [r0] + str r2, [r0] + adds r6, 0x1 + cmp r6, 0x3F + ble _0804FE96 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0804FEB4: .4byte gDungeon +_0804FEB8: .4byte 0x0000e21c +_0804FEBC: .4byte 0x0000ffff +_0804FEC0: .4byte 0x0000e21e +_0804FEC4: .4byte 0x0000e27c +_0804FEC8: .4byte 0x00003904 +_0804FECC: .4byte 0x0001371c + thumb_func_end sub_804FD30 + + thumb_func_start sub_804FED0 +sub_804FED0: + push {r4-r7,lr} + adds r7, r0, 0 + adds r5, r1, 0 + movs r6, 0 + b _0804FEFA +_0804FEDA: + adds r0, r5, 0 + bl DungeonRandInt + adds r4, r0, 0 + adds r0, r5, 0 + bl DungeonRandInt + lsls r4, 2 + adds r4, r7 + ldr r2, [r4] + lsls r0, 2 + adds r0, r7 + ldr r1, [r0] + str r1, [r4] + str r2, [r0] + adds r6, 0x1 +_0804FEFA: + lsls r0, r5, 1 + cmp r6, r0 + blt _0804FEDA + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_804FED0 + + thumb_func_start sub_804FF08 +sub_804FF08: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08050234 + add sp, r4 + mov r10, r0 + lsls r1, 24 + lsrs r1, 24 + movs r0, 0xE0 + lsls r0, 5 + add r0, sp + str r1, [r0] + ldr r0, _08050238 + ldr r0, [r0] + mov r9, r0 + ldr r0, _0805023C + add r0, r9 + movs r1, 0 + ldrsh r0, [r0, r1] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _0804FF46 + ldr r0, _08050240 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, r1 + bne _08050038 +_0804FF46: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_0804FF4C: + movs r5, 0 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_0804FF56: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _0804FFAA + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _0804FFAA + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _0804FFAA + ldrh r1, [r1, 0x4] + movs r3, 0x8 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _0804FFAA + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + bne _0804FFAA + adds r0, r3, 0 + ands r0, r2 + cmp r0, 0 + bne _0804FFAA + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _0804FFAA + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_0804FFAA: + adds r5, 0x1 + cmp r5, 0x1F + ble _0804FF56 + adds r6, 0x1 + cmp r6, 0x37 + ble _0804FF4C + mov r0, r8 + cmp r0, 0 + beq _08050038 + bl DungeonRandInt + lsls r0, 2 + mov r1, sp + adds r4, r1, r0 + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetTileSafe + adds r5, r0, 0 + ldrh r1, [r5, 0x4] + movs r0, 0x1 + orrs r0, r1 + ldr r1, _08050244 + ands r0, r1 + strh r0, [r5, 0x4] + ldr r1, _08050248 + ldrb r0, [r5, 0x9] + strb r0, [r1] + ldrb r1, [r4] + ldr r0, _0805023C + add r0, r9 + strh r1, [r0] + ldrb r1, [r4, 0x1] + ldr r0, _08050240 + add r0, r9 + strh r1, [r0] + bl sub_8043D10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x2 + bne _08050038 + ldrb r4, [r5, 0x9] + movs r6, 0 +_08050002: + movs r5, 0 +_08050004: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTileSafe + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _0805002C + ldrb r0, [r1, 0x9] + cmp r0, r4 + bne _0805002C + movs r0, 0x40 + orrs r0, r2 + strh r0, [r1] + ldrb r1, [r1, 0x9] + ldr r0, _0805024C + add r0, r9 + strb r1, [r0] +_0805002C: + adds r5, 0x1 + cmp r5, 0x1F + ble _08050004 + adds r6, 0x1 + cmp r6, 0x37 + ble _08050002 +_08050038: + movs r2, 0 + mov r8, r2 + movs r6, 0 +_0805003E: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_0805004A: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _08050092 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _08050092 + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _08050092 + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + bne _08050092 + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _08050092 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _08050092 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_08050092: + adds r5, 0x1 + cmp r5, 0x1F + ble _0805004A + adds r6, r7, 0 + cmp r6, 0x37 + ble _0805003E + mov r0, r8 + cmp r0, 0 + beq _080500FA + mov r1, r10 + ldrb r4, [r1, 0xF] + cmp r4, 0 + beq _080500FA + subs r0, r4, 0x2 + adds r1, r4, 0x2 + bl DungeonRandRange + adds r4, r0, 0 + cmp r4, 0 + bgt _080500BC + movs r4, 0x1 +_080500BC: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandInt + adds r5, r0, 0 + cmp r4, 0 + ble _080500FA + adds r6, r4, 0 + lsls r0, r5, 2 + mov r2, sp + adds r4, r0, r2 +_080500D8: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetTileSafe + ldrh r2, [r0, 0x4] + movs r1, 0x2 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _080500F4 + mov r4, sp + movs r5, 0 +_080500F4: + subs r6, 0x1 + cmp r6, 0 + bne _080500D8 +_080500FA: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_08050100: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_0805010C: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _08050128 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r0, 0x1 + add r8, r0 +_08050128: + adds r5, 0x1 + cmp r5, 0x1F + ble _0805010C + adds r6, r7, 0 + cmp r6, 0x37 + ble _08050100 + mov r1, r8 + cmp r1, 0 + beq _0805018E + mov r2, r10 + ldrb r4, [r2, 0x14] + cmp r4, 0 + beq _0805018E + subs r0, r4, 0x2 + adds r1, r4, 0x2 + bl DungeonRandRange + adds r4, r0, 0 + cmp r4, 0 + ble _0805018E + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandInt + adds r5, r0, 0 + cmp r4, 0 + ble _0805018E + adds r6, r4, 0 + lsls r0, r5, 2 + mov r1, sp + adds r4, r0, r1 +_0805016C: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetTileSafe + ldrh r2, [r0, 0x4] + movs r1, 0x2 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050188 + mov r4, sp + movs r5, 0 +_08050188: + subs r6, 0x1 + cmp r6, 0 + bne _0805016C +_0805018E: + movs r2, 0 + mov r8, r2 + movs r0, 0xE0 + lsls r0, 5 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + bne _080501E4 + movs r6, 0 +_080501A0: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_080501AC: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + ldrh r1, [r0] + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080501D8 + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + beq _080501D8 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080501D8 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r0, 0x1 + add r8, r0 +_080501D8: + adds r5, 0x1 + cmp r5, 0x1F + ble _080501AC + adds r6, r7, 0 + cmp r6, 0x37 + ble _080501A0 +_080501E4: + mov r1, r8 + cmp r1, 0 + beq _08050294 + lsrs r4, r1, 31 + add r4, r8 + asrs r4, 1 + lsls r0, r1, 3 + movs r1, 0xA + bl __divsi3 + adds r1, r0, 0 + adds r0, r4, 0 + bl DungeonRandRange + adds r4, r0, 0 + cmp r4, 0x5 + bgt _08050208 + movs r4, 0x6 +_08050208: + ldr r0, _08050250 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r4, r0 + blt _08050214 + adds r4, r0, 0 +_08050214: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandInt + adds r5, r0, 0 + cmp r4, 0 + ble _08050294 + adds r6, r4, 0 + lsls r0, r5, 2 + mov r1, sp + adds r7, r0, r1 +_08050230: + ldrb r0, [r7] + b _08050254 + .align 2, 0 +_08050234: .4byte 0xffffe3fc +_08050238: .4byte gDungeon +_0805023C: .4byte 0x0000e21c +_08050240: .4byte 0x0000e21e +_08050244: .4byte 0x0000fffd +_08050248: .4byte gUnknown_202F1B4 +_0805024C: .4byte 0x00003a0c +_08050250: .4byte gUnknown_80F4DA0 +_08050254: + ldrb r1, [r7, 0x1] + bl GetTileSafe + adds r4, r0, 0 + movs r0, 0x2 + bl DungeonRandInt + cmp r0, 0 + beq _0805026C + ldrh r0, [r4, 0x4] + movs r1, 0x2 + b _0805027E +_0805026C: + ldr r0, _08050424 + ldr r0, [r0] + ldr r2, _08050428 + adds r0, r2 + ldrb r0, [r0] + cmp r0, 0 + beq _08050282 + ldrh r0, [r4, 0x4] + movs r1, 0x4 +_0805027E: + orrs r0, r1 + strh r0, [r4, 0x4] +_08050282: + adds r7, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _0805028E + mov r7, sp + movs r5, 0 +_0805028E: + subs r6, 0x1 + cmp r6, 0 + bne _08050230 +_08050294: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_0805029A: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_080502A6: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _080502F0 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _080502F0 + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _080502F0 + ldrh r1, [r1, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080502F0 + movs r0, 0x8 + ands r0, r2 + cmp r0, 0 + bne _080502F0 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _080502F0 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_080502F0: + adds r5, 0x1 + cmp r5, 0x1F + ble _080502A6 + adds r6, r7, 0 + cmp r6, 0x37 + ble _0805029A + mov r0, r8 + cmp r0, 0 + beq _08050356 + mov r2, r10 + ldrb r1, [r2, 0x10] + lsrs r0, r1, 1 + bl DungeonRandRange + adds r4, r0, 0 + cmp r4, 0 + ble _08050356 + cmp r4, 0x37 + ble _08050318 + movs r4, 0x38 +_08050318: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandInt + adds r5, r0, 0 + cmp r4, 0 + ble _08050356 + adds r6, r4, 0 + lsls r0, r5, 2 + mov r1, sp + adds r4, r0, r1 +_08050334: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetTileSafe + ldrh r2, [r0, 0x4] + movs r1, 0x4 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050350 + mov r4, sp + movs r5, 0 +_08050350: + subs r6, 0x1 + cmp r6, 0 + bne _08050334 +_08050356: + ldr r0, _0805042C + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + movs r1, 0x1 + negs r1, r1 + cmp r0, r1 + beq _08050372 + ldr r0, _08050430 + add r0, r9 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, r1 + bne _08050410 +_08050372: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_08050378: + movs r5, 0 + adds r7, r6, 0x1 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_08050384: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x1 + bne _080503E2 + ldrb r0, [r2, 0x9] + cmp r0, 0xFF + beq _080503E2 + movs r0, 0x20 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + movs r3, 0x8 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + movs r0, 0x80 + lsls r0, 1 + mov r10, r0 + mov r0, r10 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + ldrh r1, [r2, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + adds r0, r3, 0 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _080503E2 + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r1, 0x1 + add r8, r1 +_080503E2: + adds r5, 0x1 + cmp r5, 0x1F + ble _08050384 + adds r6, r7, 0 + cmp r6, 0x37 + ble _08050378 + mov r2, r8 + cmp r2, 0 + beq _08050410 + mov r0, r8 + bl DungeonRandInt + lsls r0, 2 + mov r1, sp + adds r2, r1, r0 + ldrb r1, [r2] + ldr r0, _0805042C + add r0, r9 + strh r1, [r0] + ldrb r1, [r2, 0x1] + ldr r0, _08050430 + add r0, r9 + strh r1, [r0] +_08050410: + ldr r3, _08050434 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08050424: .4byte gDungeon +_08050428: .4byte 0x0000065c +_0805042C: .4byte 0x0000e218 +_08050430: .4byte 0x0000e21a +_08050434: .4byte 0x00001c04 + thumb_func_end sub_804FF08 + + thumb_func_start sub_8050438 +sub_8050438: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08050470 + add sp, r4 + lsls r1, 24 + lsrs r1, 24 + movs r2, 0xE0 + lsls r2, 5 + add r2, sp + str r1, [r2] + ldr r1, _08050474 + ldr r1, [r1] + mov r10, r1 + ldrb r1, [r0, 0x6] + cmp r1, 0 + ble _08050478 + lsrs r0, r1, 1 + bl DungeonRandRange + adds r7, r0, 0 + cmp r7, 0 + bgt _0805047A + movs r7, 0x1 + b _0805047A + .align 2, 0 +_08050470: .4byte 0xffffe3f8 +_08050474: .4byte gDungeon +_08050478: + adds r7, r1, 0 +_0805047A: + movs r0, 0 + mov r8, r0 + movs r6, 0 +_08050480: + movs r5, 0 + adds r1, r6, 0x1 + mov r9, r1 + mov r2, r8 + lsls r0, r2, 2 + mov r1, sp + adds r4, r0, r1 +_0805048E: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + adds r1, r0, 0 + ldrh r3, [r1] + movs r2, 0x3 + ands r2, r3 + cmp r2, 0x1 + bne _080504F6 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _080504F6 + movs r0, 0x20 + ands r0, r3 + cmp r0, 0 + bne _080504F6 + ldrh r1, [r1, 0x4] + movs r0, 0x2 + ands r0, r1 + cmp r0, 0 + bne _080504F6 + ands r2, r1 + cmp r2, 0 + bne _080504F6 + movs r0, 0x8 + ands r0, r3 + cmp r0, 0 + bne _080504F6 + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + bne _080504F6 + ldr r0, _080506A0 + add r0, r10 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r6, r0 + bne _080504EC + ldr r0, _080506A4 + add r0, r10 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r5, r0 + beq _080504F6 +_080504EC: + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r0, 0x1 + add r8, r0 +_080504F6: + adds r5, 0x1 + cmp r5, 0x1F + ble _0805048E + mov r6, r9 + cmp r6, 0x37 + ble _08050480 + mov r1, r8 + cmp r1, 0 + beq _0805055E + ldr r0, _080506A8 + ldr r0, [r0] + movs r2, 0xD1 + lsls r2, 3 + adds r0, r2 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + beq _0805051C + adds r7, 0x1 +_0805051C: + cmp r7, 0 + beq _0805055E + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandInt + adds r5, r0, 0 + cmp r7, 0 + ble _0805055E + adds r6, r7, 0 + lsls r0, r5, 2 + mov r2, sp + adds r4, r0, r2 +_0805053C: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetTileSafe + ldrh r2, [r0, 0x4] + movs r1, 0x8 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050558 + mov r4, sp + movs r5, 0 +_08050558: + subs r6, 0x1 + cmp r6, 0 + bne _0805053C +_0805055E: + ldr r0, _080506AC + add r0, r10 + ldrb r0, [r0] + cmp r0, 0 + bne _0805056A + b _0805068C +_0805056A: + ldr r0, _080506B0 + movs r2, 0 + ldrsh r1, [r0, r2] + ldr r2, _080506B4 + add r2, sp + str r1, [r2] + movs r0, 0 + mov r8, r0 + movs r1, 0xE0 + lsls r1, 5 + add r1, sp + ldr r1, [r1] + cmp r1, 0 + beq _0805058A + movs r0, 0x3 + str r0, [r2] +_0805058A: + ldr r1, _080506B4 + add r1, sp + ldr r1, [r1] + lsls r0, r1, 1 + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + ldr r1, _080506B4 + add r1, sp + str r0, [r1] + movs r6, 0 +_080505A2: + movs r5, 0 + adds r2, r6, 0x1 + mov r9, r2 + mov r1, r8 + lsls r0, r1, 2 + mov r2, sp + adds r4, r0, r2 +_080505B0: + adds r0, r6, 0 + adds r1, r5, 0 + bl GetTile + adds r1, r0, 0 + ldrh r2, [r1] + movs r0, 0x3 + ands r0, r2 + cmp r0, 0x1 + bne _08050608 + ldrb r0, [r1, 0x9] + cmp r0, 0xFF + beq _08050608 + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + bne _08050608 + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r2 + cmp r0, 0 + bne _08050608 + movs r0, 0x40 + ands r0, r2 + cmp r0, 0 + beq _08050608 + ldr r0, _080506A0 + add r0, r10 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r6, r0 + bne _080505FE + ldr r0, _080506A4 + add r0, r10 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r5, r0 + beq _08050608 +_080505FE: + strb r6, [r4] + strb r5, [r4, 0x1] + adds r4, 0x4 + movs r2, 0x1 + add r8, r2 +_08050608: + adds r5, 0x1 + cmp r5, 0x1F + ble _080505B0 + mov r6, r9 + cmp r6, 0x37 + ble _080505A2 + mov r0, r8 + cmp r0, 0 + beq _0805068C + lsls r4, r0, 3 + subs r0, r4, r0 + movs r1, 0xA + bl __divsi3 + adds r5, r0, 0 + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + adds r1, r0, 0 + adds r0, r5, 0 + bl DungeonRandRange + adds r7, r0, 0 + cmp r7, 0 + bne _0805063E + movs r7, 0x1 +_0805063E: + ldr r1, _080506B4 + add r1, sp + ldr r1, [r1] + cmp r7, r1 + blt _0805064E + ldr r2, _080506B4 + add r2, sp + ldr r7, [r2] +_0805064E: + mov r0, sp + mov r1, r8 + bl sub_804FED0 + mov r0, r8 + bl DungeonRandInt + adds r5, r0, 0 + cmp r7, 0 + ble _0805068C + adds r6, r7, 0 + lsls r0, r5, 2 + mov r1, sp + adds r4, r0, r1 +_0805066A: + ldrb r0, [r4] + ldrb r1, [r4, 0x1] + bl GetTileSafe + ldrh r2, [r0, 0x4] + movs r1, 0x8 + orrs r1, r2 + strh r1, [r0, 0x4] + adds r4, 0x4 + adds r5, 0x1 + cmp r5, r8 + bne _08050686 + mov r4, sp + movs r5, 0 +_08050686: + subs r6, 0x1 + cmp r6, 0 + bne _0805066A +_0805068C: + ldr r3, _080506B8 + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080506A0: .4byte 0x0000e218 +_080506A4: .4byte 0x0000e21a +_080506A8: .4byte gDungeon +_080506AC: .4byte 0x00003a08 +_080506B0: .4byte gUnknown_80F4DA4 +_080506B4: .4byte 0x00001c04 +_080506B8: .4byte 0x00001c08 + thumb_func_end sub_8050438 + + thumb_func_start sub_80506BC +sub_80506BC: + push {lr} + adds r3, r0, 0 + movs r2, 0x1 + ldrh r1, [r3] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + beq _080506CE + movs r2, 0 +_080506CE: + movs r0, 0x10 + ands r0, r1 + cmp r0, 0 + beq _080506D8 + movs r2, 0 +_080506D8: + cmp r2, 0 + beq _080506E6 + ldr r0, _080506EC + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strh r0, [r3] +_080506E6: + pop {r0} + bx r0 + .align 2, 0 +_080506EC: .4byte 0x0000fffc + thumb_func_end sub_80506BC + + thumb_func_start sub_80506F0 +sub_80506F0: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xA4 + str r1, [sp, 0x64] + ldrb r1, [r1, 0xD] + ands r1, r0 + cmp r1, 0 + bne _08050708 + b _08050C20 +_08050708: + ldr r4, _08050738 + movs r0, 0x8 + bl DungeonRandInt + lsls r0, 2 + adds r0, r4 + ldr r4, [r0] + cmp r4, 0 + bne _0805071C + b _08050A7C +_0805071C: + movs r0, 0x64 + bl DungeonRandInt + cmp r0, 0x31 + bgt _0805073C + movs r0, 0x1 + str r0, [sp, 0x74] + movs r1, 0x1F + mov r10, r1 + movs r2, 0x1 + negs r2, r2 + str r2, [sp, 0x70] + b _08050746 + .align 2, 0 +_08050738: .4byte gUnknown_80F6DF8 +_0805073C: + movs r0, 0 + str r0, [sp, 0x74] + mov r10, r0 + movs r1, 0x1 + str r1, [sp, 0x70] +_08050746: + movs r0, 0x32 + bl DungeonRandInt + adds r0, 0xA + str r0, [sp, 0x78] + movs r0, 0x2 + movs r1, 0x36 + bl DungeonRandRange + mov r9, r0 + movs r2, 0 + str r2, [sp, 0x6C] + subs r4, 0x1 + str r4, [sp, 0x98] +_08050762: + movs r0, 0x6 + bl DungeonRandInt + adds r0, 0x2 + str r0, [sp, 0x68] + cmp r0, 0 + bne _08050772 + b _08050A38 +_08050772: + mov r0, r9 + cmp r0, 0x37 + bhi _080507B8 + mov r1, r10 + bl GetTile + ldrh r1, [r0] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0x2 + bne _0805078A + b _08050A74 +_0805078A: + mov r1, r9 + cmp r1, 0 + blt _080507A2 + mov r2, r10 + cmp r2, 0 + blt _080507A2 + mov r0, r9 + cmp r0, 0x37 + bgt _080507A2 + mov r1, r10 + cmp r1, 0x1F + ble _080507A6 +_080507A2: + movs r0, 0x1 + b _080507A8 +_080507A6: + movs r0, 0 +_080507A8: + cmp r0, 0 + bne _080507B8 + mov r0, r9 + mov r1, r10 + bl GetTileSafe + bl sub_80506BC +_080507B8: + ldr r2, [sp, 0x68] + subs r2, 0x1 + str r2, [sp, 0x68] + ldr r0, [sp, 0x6C] + add r9, r0 + ldr r1, [sp, 0x70] + add r10, r1 + mov r2, r10 + cmp r2, 0x1F + bls _080507CE + b _08050A38 +_080507CE: + ldr r0, [sp, 0x78] + subs r0, 0x1 + str r0, [sp, 0x78] + cmp r0, 0 + beq _080507DA + b _08050A30 +_080507DA: + movs r1, 0x3F + str r1, [sp, 0x7C] +_080507DE: + movs r0, 0x7 + bl DungeonRandInt + subs r0, 0x3 + str r0, [sp, 0x84] + movs r0, 0x7 + bl DungeonRandInt + subs r1, r0, 0x3 + ldr r6, [sp, 0x84] + add r6, r9 + subs r0, r6, 0x2 + cmp r0, 0x33 + bhi _080508DA + mov r2, r10 + adds r5, r1, r2 + cmp r5, 0x1 + ble _080508DA + cmp r5, 0x1D + bgt _080508DA + adds r4, r6, 0x1 + adds r0, r5, 0x1 + mov r8, r0 + adds r0, r4, 0 + mov r1, r8 + bl GetTile + ldrh r1, [r0] + movs r2, 0x3 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r4, 0 + adds r1, r5, 0 + str r2, [sp, 0x9C] + bl GetTile + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + subs r7, r5, 0x1 + adds r0, r4, 0 + adds r1, r7, 0 + bl GetTile + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r6, 0 + mov r1, r8 + bl GetTile + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r6, 0 + adds r1, r7, 0 + bl GetTile + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + subs r4, r6, 0x1 + adds r0, r4, 0 + mov r1, r8 + bl GetTile + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r4, 0 + adds r1, r5, 0 + bl GetTile + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + beq _080508B2 + adds r0, r4, 0 + adds r1, r7, 0 + bl GetTile + ldrh r1, [r0] + ldr r2, [sp, 0x9C] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0x2 + bne _080508DA +_080508B2: + ldr r0, [sp, 0x84] + add r0, r9 + cmp r0, 0 + blt _080508C6 + cmp r5, 0 + blt _080508C6 + cmp r0, 0x37 + bgt _080508C6 + cmp r5, 0x1F + ble _080508CA +_080508C6: + movs r1, 0x1 + b _080508CC +_080508CA: + movs r1, 0 +_080508CC: + cmp r1, 0 + bne _080508DA + adds r1, r5, 0 + bl GetTileSafe + bl sub_80506BC +_080508DA: + ldr r1, [sp, 0x7C] + subs r1, 0x1 + str r1, [sp, 0x7C] + cmp r1, 0 + blt _080508E6 + b _080507DE +_080508E6: + movs r0, 0x3 + negs r0, r0 +_080508EA: + movs r2, 0x3 + negs r2, r2 + str r2, [sp, 0x80] + mov r1, r9 + adds r1, r0, r1 + str r1, [sp, 0x90] + adds r0, 0x1 + str r0, [sp, 0x8C] + adds r7, r1, 0 + mov r5, r10 + subs r5, 0x3 +_08050900: + movs r6, 0 + subs r0, r7, 0x2 + cmp r0, 0x33 + bls _0805090A + b _08050A1A +_0805090A: + str r5, [sp, 0x88] + str r5, [sp, 0x94] + cmp r5, 0x1 + bgt _08050914 + b _08050A1A +_08050914: + cmp r5, 0x1D + ble _0805091A + b _08050A1A +_0805091A: + adds r4, r7, 0x1 + adds r3, r5, 0x1 + adds r0, r4, 0 + adds r1, r3, 0 + str r3, [sp, 0xA0] + bl GetTile + ldrh r1, [r0] + movs r2, 0x3 + mov r8, r2 + mov r0, r8 + ands r0, r1 + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _0805093A + movs r6, 0x1 +_0805093A: + adds r0, r4, 0 + adds r1, r5, 0 + str r3, [sp, 0xA0] + bl GetTile + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _08050952 + adds r6, 0x1 +_08050952: + subs r2, r5, 0x1 + adds r0, r4, 0 + adds r1, r2, 0 + str r2, [sp, 0x9C] + str r3, [sp, 0xA0] + bl GetTile + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _08050970 + adds r6, 0x1 +_08050970: + adds r0, r7, 0 + adds r1, r3, 0 + str r2, [sp, 0x9C] + str r3, [sp, 0xA0] + bl GetTile + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _0805098C + adds r6, 0x1 +_0805098C: + adds r0, r7, 0 + adds r1, r2, 0 + str r2, [sp, 0x9C] + str r3, [sp, 0xA0] + bl GetTile + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + ldr r3, [sp, 0xA0] + cmp r0, 0x2 + bne _080509A8 + adds r6, 0x1 +_080509A8: + subs r4, r7, 0x1 + adds r0, r4, 0 + adds r1, r3, 0 + str r2, [sp, 0x9C] + bl GetTile + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + cmp r0, 0x2 + bne _080509C2 + adds r6, 0x1 +_080509C2: + adds r0, r4, 0 + adds r1, r5, 0 + str r2, [sp, 0x9C] + bl GetTile + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + ldr r2, [sp, 0x9C] + cmp r0, 0x2 + bne _080509DA + adds r6, 0x1 +_080509DA: + adds r0, r4, 0 + adds r1, r2, 0 + bl GetTile + ldrh r1, [r0] + mov r0, r8 + ands r0, r1 + cmp r0, 0x2 + bne _080509EE + adds r6, 0x1 +_080509EE: + cmp r6, 0x3 + ble _08050A1A + cmp r7, 0 + blt _08050A04 + cmp r5, 0 + blt _08050A04 + cmp r7, 0x37 + bgt _08050A04 + ldr r0, [sp, 0x88] + cmp r0, 0x1F + ble _08050A08 +_08050A04: + movs r0, 0x1 + b _08050A0A +_08050A08: + movs r0, 0 +_08050A0A: + cmp r0, 0 + bne _08050A1A + ldr r0, [sp, 0x90] + ldr r1, [sp, 0x94] + bl GetTileSafe + bl sub_80506BC +_08050A1A: + adds r5, 0x1 + ldr r1, [sp, 0x80] + adds r1, 0x1 + str r1, [sp, 0x80] + cmp r1, 0x3 + bgt _08050A28 + b _08050900 +_08050A28: + ldr r0, [sp, 0x8C] + cmp r0, 0x3 + bgt _08050A30 + b _080508EA +_08050A30: + ldr r2, [sp, 0x68] + cmp r2, 0 + beq _08050A38 + b _08050772 +_08050A38: + ldr r0, [sp, 0x6C] + cmp r0, 0 + beq _08050A54 + movs r1, 0x1 + str r1, [sp, 0x70] + ldr r2, [sp, 0x74] + cmp r2, 0 + beq _08050A4E + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x70] +_08050A4E: + movs r1, 0 + str r1, [sp, 0x6C] + b _08050A6C +_08050A54: + movs r0, 0x64 + bl DungeonRandInt + movs r2, 0x1 + str r2, [sp, 0x6C] + cmp r0, 0x31 + bgt _08050A68 + movs r0, 0x1 + negs r0, r0 + str r0, [sp, 0x6C] +_08050A68: + movs r1, 0 + str r1, [sp, 0x70] +_08050A6C: + mov r2, r10 + cmp r2, 0x1F + bhi _08050A74 + b _08050762 +_08050A74: + ldr r4, [sp, 0x98] + cmp r4, 0 + beq _08050A7C + b _0805071C +_08050A7C: + movs r0, 0 + ldr r1, [sp, 0x64] + ldrb r1, [r1, 0x15] + cmp r0, r1 + blt _08050A88 + b _08050BAE +_08050A88: + movs r2, 0 + mov r8, r2 + mov r9, r2 + movs r5, 0 + adds r0, 0x1 + mov r10, r0 + b _08050A98 +_08050A96: + adds r5, 0x1 +_08050A98: + cmp r5, 0xC7 + bgt _08050AC2 + movs r0, 0 + movs r1, 0x38 + bl DungeonRandRange + mov r9, r0 + movs r0, 0 + movs r1, 0x20 + bl DungeonRandRange + mov r8, r0 + mov r0, r9 + subs r0, 0x1 + cmp r0, 0x35 + bhi _08050A96 + mov r0, r8 + cmp r0, 0 + ble _08050A96 + cmp r0, 0x1E + bgt _08050A96 +_08050AC2: + cmp r5, 0xC8 + beq _08050BA2 + movs r7, 0 + movs r3, 0x1 + movs r1, 0 +_08050ACC: + movs r2, 0 + lsls r0, r7, 2 + adds r4, r7, 0x1 + adds r0, r7 + lsls r0, 1 + add r0, sp +_08050AD8: + cmp r7, 0 + beq _08050AE8 + cmp r7, 0x9 + beq _08050AE8 + cmp r2, 0 + beq _08050AE8 + cmp r2, 0x9 + bne _08050AEC +_08050AE8: + strb r3, [r0] + b _08050AEE +_08050AEC: + strb r1, [r0] +_08050AEE: + adds r0, 0x1 + adds r2, 0x1 + cmp r2, 0x9 + ble _08050AD8 + adds r7, r4, 0 + cmp r7, 0x9 + ble _08050ACC + movs r5, 0x4F +_08050AFE: + movs r0, 0x8 + bl DungeonRandInt + adds r4, r0, 0 + adds r7, r4, 0x1 + movs r0, 0x8 + bl DungeonRandInt + adds r2, r0, 0x1 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08050B50 + adds r1, r7, 0x1 + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08050B50 + lsls r0, r7, 2 + adds r0, r7 + lsls r1, r0, 1 + subs r0, r1, 0x1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + bne _08050B50 + adds r0, r1, 0x1 + adds r0, r2, r0 + add r0, sp + ldrb r0, [r0] + cmp r0, 0 + beq _08050B60 +_08050B50: + lsls r0, r7, 2 + adds r0, r7 + lsls r0, 1 + adds r0, r2, r0 + mov r2, sp + adds r1, r2, r0 + movs r0, 0x1 + strb r0, [r1] +_08050B60: + subs r5, 0x1 + cmp r5, 0 + bge _08050AFE + movs r7, 0 +_08050B68: + lsls r0, r7, 2 + adds r4, r7, 0x1 + adds r0, r7 + lsls r0, 1 + mov r6, r8 + subs r6, 0x5 + mov r1, sp + adds r5, r0, r1 + add r7, r9 + movs r2, 0x9 +_08050B7C: + ldrb r0, [r5] + cmp r0, 0 + bne _08050B92 + subs r0, r7, 0x5 + adds r1, r6, 0 + str r2, [sp, 0x9C] + bl GetTileSafe + bl sub_80506BC + ldr r2, [sp, 0x9C] +_08050B92: + adds r6, 0x1 + adds r5, 0x1 + subs r2, 0x1 + cmp r2, 0 + bge _08050B7C + adds r7, r4, 0 + cmp r7, 0x9 + ble _08050B68 +_08050BA2: + mov r0, r10 + ldr r2, [sp, 0x64] + ldrb r2, [r2, 0x15] + cmp r0, r2 + bge _08050BAE + b _08050A88 +_08050BAE: + movs r0, 0 + mov r9, r0 + movs r6, 0x1 + ldr r1, _08050BF4 + adds r5, r1, 0 +_08050BB8: + movs r2, 0 + mov r10, r2 + mov r4, r9 + adds r4, 0x1 +_08050BC0: + mov r0, r9 + mov r1, r10 + bl GetTileSafe + adds r2, r0, 0 + ldrh r3, [r2] + movs r0, 0x3 + ands r0, r3 + cmp r0, 0x2 + bne _08050C10 + movs r1, 0xB0 + lsls r1, 1 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + bne _08050BEA + ldrh r1, [r2, 0x4] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _08050BF8 +_08050BEA: + adds r0, r3, 0 + ands r0, r5 + orrs r0, r6 + b _08050C0E + .align 2, 0 +_08050BF4: .4byte 0x0000fffc +_08050BF8: + mov r0, r9 + subs r0, 0x2 + cmp r0, 0x34 + bhi _08050C0A + mov r0, r10 + cmp r0, 0x1 + ble _08050C0A + cmp r0, 0x1E + ble _08050C10 +_08050C0A: + ldrh r0, [r2] + ands r0, r5 +_08050C0E: + strh r0, [r2] +_08050C10: + movs r1, 0x1 + add r10, r1 + mov r2, r10 + cmp r2, 0x1F + ble _08050BC0 + mov r9, r4 + cmp r4, 0x37 + ble _08050BB8 +_08050C20: + add sp, 0xA4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80506F0 + + thumb_func_start sub_8050C30 +sub_8050C30: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + ldr r4, _08050F3C + add sp, r4 + mov r8, r0 + mov r9, r1 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0xE0 + lsls r0, 3 + add r0, sp + str r2, [r0] + movs r7, 0 + mov r1, r8 + lsls r1, 5 + movs r2, 0xE2 + lsls r2, 3 + add r2, sp + str r1, [r2] +_08050C5C: + movs r6, 0 + lsls r2, r7, 5 + adds r3, r7, 0x1 + mov r10, r3 + mov r5, sp + adds r4, r2, r5 +_08050C68: + adds r0, r7, 0 + adds r1, r6, 0 + bl GetTileSafe + adds r2, r0, 0 + ldrh r0, [r2] + movs r3, 0x3 + ands r3, r0 + movs r0, 0 + strb r0, [r4] + movs r0, 0xE0 + lsls r0, 3 + add r0, sp + ldr r0, [r0] + cmp r0, 0 + beq _08050C92 + ldrh r0, [r2] + ldr r5, _08050F40 + adds r1, r5, 0 + ands r0, r1 + strh r0, [r2] +_08050C92: + cmp r3, 0x1 + beq _08050CA8 + ldrh r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08050CA8 + ldrb r0, [r4] + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4] +_08050CA8: + cmp r3, 0x2 + bne _08050CBE + ldrh r1, [r2] + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + bne _08050CBE + ldrb r0, [r4] + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4] +_08050CBE: + adds r4, 0x1 + adds r6, 0x1 + cmp r6, 0x1F + ble _08050C68 + mov r7, r10 + cmp r7, 0x37 + ble _08050C5C + movs r1, 0xE2 + lsls r1, 3 + add r1, sp + ldr r0, [r1] + add r0, r9 + mov r3, sp + adds r2, r3, r0 + ldrb r1, [r2] + movs r0, 0x50 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08050F44 + ldr r1, [r0] + ldr r5, _08050F48 + adds r0, r1, r5 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, r8 + beq _08050CF4 + b _08050F36 +_08050CF4: + ldr r3, _08050F4C + adds r0, r1, r3 + movs r5, 0 + ldrsh r0, [r0, r5] + cmp r0, r9 + beq _08050D02 + b _08050F36 +_08050D02: + ldr r1, _08050F50 + movs r0, 0 + str r0, [r1] + movs r0, 0x40 + mov r9, r0 +_08050D0C: + movs r1, 0 + ldr r2, _08050F54 + add r2, sp + str r1, [r2] + ldr r3, _08050F50 + ldr r0, [r3] + adds r0, 0x1 + str r0, [r3] + movs r7, 0 +_08050D1E: + movs r6, 0 + lsls r2, r7, 5 + adds r5, r7, 0x1 + mov r10, r5 + subs r0, r7, 0x1 + movs r1, 0xE1 + lsls r1, 3 + add r1, sp + str r0, [r1] + lsls r0, 5 + mov r1, sp + subs r1, 0x1 + adds r5, r2, r1 + add r0, sp + mov r8, r0 + mov r2, r10 + ldr r3, _08050F58 + add r3, sp + str r2, [r3] + lsls r0, r2, 5 + add r0, sp + mov r12, r0 +_08050D4A: + ldrb r1, [r5, 0x1] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + beq _08050D56 + b _08050EDA +_08050D56: + movs r3, 0x40 + mov r0, r9 + ands r0, r1 + cmp r0, 0 + bne _08050D62 + b _08050EDA +_08050D62: + ldr r2, _08050F54 + add r2, sp + ldr r0, [r2] + adds r0, 0x1 + str r0, [r2] + movs r0, 0xBF + ands r0, r1 + movs r2, 0 + movs r1, 0x80 + orrs r0, r1 + strb r0, [r5, 0x1] + cmp r7, 0 + ble _08050D90 + mov r0, r8 + ldrb r1, [r0] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050D90 + adds r0, r1, 0 + orrs r0, r3 + mov r1, r8 + strb r0, [r1] +_08050D90: + cmp r6, 0 + ble _08050DA4 + ldrb r1, [r5] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050DA4 + mov r0, r9 + orrs r0, r1 + strb r0, [r5] +_08050DA4: + cmp r7, 0x36 + bgt _08050DBA + mov r2, r12 + ldrb r1, [r2] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050DBA + mov r0, r9 + orrs r0, r1 + strb r0, [r2] +_08050DBA: + cmp r6, 0x1E + bgt _08050DCE + ldrb r1, [r5, 0x2] + movs r0, 0x83 + ands r0, r1 + cmp r0, 0 + bne _08050DCE + mov r0, r9 + orrs r0, r1 + strb r0, [r5, 0x2] +_08050DCE: + cmp r7, 0 + ble _08050E12 + cmp r6, 0 + ble _08050E12 + movs r3, 0xE1 + lsls r3, 3 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + subs r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050E12 + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E12 + ldrb r1, [r5] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E12 + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050E12: + cmp r7, 0x36 + bgt _08050E54 + cmp r6, 0 + ble _08050E54 + ldr r3, _08050F58 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + subs r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050E54 + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E54 + ldrb r1, [r5] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E54 + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050E54: + cmp r7, 0 + ble _08050E98 + cmp r6, 0x1E + bgt _08050E98 + movs r3, 0xE1 + lsls r3, 3 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + adds r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050E98 + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E98 + ldrb r1, [r5, 0x2] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050E98 + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050E98: + cmp r7, 0x36 + bgt _08050EDA + cmp r6, 0x1E + bgt _08050EDA + ldr r3, _08050F58 + add r3, sp + ldr r3, [r3] + lsls r1, r3, 5 + adds r0, r1, 0x1 + adds r0, r6, r0 + mov r2, sp + adds r4, r2, r0 + ldrb r3, [r4] + movs r0, 0x87 + ands r0, r3 + cmp r0, 0 + bne _08050EDA + adds r0, r6, r1 + add r0, sp + ldrb r1, [r0] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050EDA + ldrb r1, [r5, 0x2] + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050EDA + mov r0, r9 + orrs r0, r3 + strb r0, [r4] +_08050EDA: + adds r5, 0x1 + movs r3, 0x1 + add r8, r3 + add r12, r3 + adds r6, 0x1 + cmp r6, 0x1F + bgt _08050EEA + b _08050D4A +_08050EEA: + mov r7, r10 + cmp r7, 0x37 + bgt _08050EF2 + b _08050D1E +_08050EF2: + ldr r5, _08050F54 + add r5, sp + ldr r5, [r5] + cmp r5, 0 + beq _08050EFE + b _08050D0C +_08050EFE: + movs r7, 0 +_08050F00: + movs r6, 0 + lsls r2, r7, 5 + mov r0, sp + adds r4, r2, r0 +_08050F08: + adds r0, r7, 0 + adds r1, r6, 0 + bl GetTileSafe + adds r2, r0, 0 + ldrb r1, [r4] + movs r0, 0x87 + ands r0, r1 + cmp r0, 0 + bne _08050F68 + movs r1, 0xE0 + lsls r1, 3 + add r1, sp + ldr r1, [r1] + cmp r1, 0 + bne _08050F5C + ldrh r0, [r2] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _08050F68 +_08050F36: + movs r0, 0 + b _08050F78 + .align 2, 0 +_08050F3C: .4byte 0xfffff8ec +_08050F40: .4byte 0x00007fff +_08050F44: .4byte gDungeon +_08050F48: .4byte 0x0000e21c +_08050F4C: .4byte 0x0000e21e +_08050F50: .4byte gUnknown_202F1D4 +_08050F54: .4byte 0x00000704 +_08050F58: .4byte 0x0000070c +_08050F5C: + ldrh r1, [r2] + movs r3, 0x80 + lsls r3, 8 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r2] +_08050F68: + adds r4, 0x1 + adds r6, 0x1 + cmp r6, 0x1F + ble _08050F08 + adds r7, 0x1 + cmp r7, 0x37 + ble _08050F00 + movs r0, 0x1 +_08050F78: + ldr r3, _08050F8C + add sp, r3 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08050F8C: .4byte 0x00000714 + thumb_func_end sub_8050C30 + + thumb_func_start sub_8050F90 +sub_8050F90: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x3C + str r0, [sp] + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r3, [sp, 0xC] + movs r0, 0 + str r0, [sp, 0x10] + movs r1, 0 + str r1, [sp, 0x14] + movs r2, 0 + b _080511D0 +_08050FB0: + movs r4, 0 + str r4, [sp, 0x18] + ldr r5, [sp, 0x1C] + adds r5, 0x1 + str r5, [sp, 0x28] + ldr r6, [sp, 0x4] + cmp r4, r6 + blt _08050FC2 + b _080511CE +_08050FC2: + ldr r1, [sp, 0x18] + lsls r0, r1, 2 + ldr r2, [sp, 0xC] + adds r0, r2 + ldr r3, [r0] + adds r4, r3, 0x2 + mov r9, r4 + ldr r5, [sp, 0x1C] + lsls r1, r5, 2 + ldr r6, [sp, 0x5C] + adds r1, r6 + ldr r2, [r1] + adds r4, r2, 0x2 + mov r10, r4 + ldr r0, [r0, 0x4] + subs r0, r3 + subs r4, r0, 0x4 + ldr r0, [r1, 0x4] + subs r0, r2 + subs r7, r0, 0x4 + movs r3, 0x5 + movs r5, 0x5 + ldr r6, [sp, 0x4] + cmp r6, 0x2 + bgt _08050FF8 + movs r3, 0xA + movs r4, 0xE +_08050FF8: + ldr r0, [sp, 0x8] + cmp r0, 0x1 + bne _08051002 + movs r5, 0x10 + movs r7, 0x18 +_08051002: + ldr r2, [sp, 0x1C] + lsls r1, r2, 5 + ldr r6, [sp, 0x18] + lsls r2, r6, 4 + subs r0, r2, r6 + lsls r0, 5 + ldr r6, [sp] + adds r0, r6 + adds r6, r1, r0 + ldrb r0, [r6, 0xA] + str r1, [sp, 0x30] + str r2, [sp, 0x2C] + cmp r0, 0 + bne _08051020 + b _08051130 +_08051020: + ldr r0, [sp, 0x14] + ldr r1, [sp, 0x60] + cmp r0, r1 + beq _0805108C + adds r0, r3, 0 + adds r1, r4, 0 + bl DungeonRandRange + adds r6, r0, 0 + adds r0, r5, 0 + adds r1, r7, 0 + bl DungeonRandRange + adds r5, r0, 0 + movs r1, 0x1 + adds r0, r6, 0 + orrs r0, r1 + cmp r0, r4 + bge _08051048 + adds r6, r0, 0 +_08051048: + adds r0, r5, 0 + orrs r0, r1 + cmp r0, r7 + bge _08051052 + adds r5, r0, 0 +_08051052: + lsls r0, r5, 1 + adds r0, r5 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + cmp r6, r0 + ble _08051062 + adds r6, r0, 0 +_08051062: + lsls r0, r6, 1 + adds r0, r6 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + cmp r5, r0 + ble _08051072 + adds r5, r0, 0 +_08051072: + subs r0, r4, r6 + bl DungeonRandInt + mov r2, r9 + adds r4, r0, r2 + subs r0, r7, r5 + bl DungeonRandInt + mov r3, r10 + adds r7, r0, r3 + adds r3, r4, r6 + adds r6, r7, r5 + b _08051098 +_0805108C: + mov r4, r9 + mov r7, r10 + ldr r5, [sp, 0x64] + adds r3, r4, r5 + ldr r0, [sp, 0x68] + adds r6, r7, r0 +_08051098: + ldr r1, [sp, 0x2C] + ldr r2, [sp, 0x18] + subs r0, r1, r2 + lsls r0, 5 + ldr r5, [sp] + adds r0, r5 + ldr r1, [sp, 0x30] + adds r0, r1, r0 + strh r4, [r0] + strh r3, [r0, 0x4] + strh r7, [r0, 0x2] + strh r6, [r0, 0x6] + adds r5, r4, 0 + ldr r2, [sp, 0x10] + adds r2, 0x1 + str r2, [sp, 0x20] + ldr r4, [sp, 0x14] + adds r4, 0x1 + str r4, [sp, 0x24] + ldr r0, [sp, 0x18] + adds r0, 0x1 + mov r10, r0 + cmp r5, r3 + bge _08051108 +_080510C8: + adds r4, r7, 0 + adds r1, r5, 0x1 + mov r8, r1 + cmp r4, r6 + bge _08051102 + ldr r2, _0805112C + mov r9, r2 +_080510D6: + adds r0, r5, 0 + adds r1, r4, 0 + str r3, [sp, 0x38] + bl GetTileSafe + ldrh r1, [r0] + mov r2, r9 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetTileSafe + mov r1, sp + ldrb r1, [r1, 0x10] + strb r1, [r0, 0x9] + adds r4, 0x1 + ldr r3, [sp, 0x38] + cmp r4, r6 + blt _080510D6 +_08051102: + mov r5, r8 + cmp r5, r3 + blt _080510C8 +_08051108: + ldr r2, [sp, 0x14] + ldr r3, [sp, 0x60] + cmp r2, r3 + beq _08051124 + ldr r4, [sp, 0x2C] + ldr r5, [sp, 0x18] + subs r0, r4, r5 + lsls r0, 5 + ldr r6, [sp] + adds r0, r6 + ldr r1, [sp, 0x30] + adds r0, r1, r0 + movs r1, 0x1 + strb r1, [r0, 0x1D] +_08051124: + ldr r2, [sp, 0x20] + str r2, [sp, 0x10] + b _080511BE + .align 2, 0 +_0805112C: .4byte 0x0000fffc +_08051130: + movs r1, 0x2 + movs r3, 0x4 + movs r2, 0x2 + mov r8, r3 + ldr r5, [sp, 0x18] + cmp r5, 0 + bne _08051140 + movs r1, 0x1 +_08051140: + ldr r0, [sp, 0x1C] + cmp r0, 0 + bne _08051148 + movs r2, 0x1 +_08051148: + ldr r0, [sp, 0x4] + subs r0, 0x1 + ldr r5, [sp, 0x18] + cmp r5, r0 + bne _08051154 + movs r3, 0x2 +_08051154: + ldr r0, [sp, 0x8] + subs r0, 0x1 + ldr r5, [sp, 0x1C] + cmp r5, r0 + bne _08051162 + movs r0, 0x2 + mov r8, r0 +_08051162: + mov r5, r9 + adds r0, r5, r1 + adds r1, r5, r4 + subs r1, r3 + str r2, [sp, 0x34] + bl DungeonRandRange + adds r5, r0, 0 + ldr r2, [sp, 0x34] + mov r1, r10 + adds r0, r1, r2 + adds r1, r7 + mov r2, r8 + subs r1, r2 + bl DungeonRandRange + adds r4, r0, 0 + strh r5, [r6] + adds r0, r5, 0x1 + strh r0, [r6, 0x4] + strh r4, [r6, 0x2] + adds r0, r4, 0x1 + strh r0, [r6, 0x6] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetTileSafe + ldrh r1, [r0] + ldr r3, _080511EC + adds r2, r3, 0 + ands r1, r2 + movs r2, 0x1 + orrs r1, r2 + strh r1, [r0] + adds r0, r5, 0 + adds r1, r4, 0 + bl GetTileSafe + movs r1, 0xFF + strb r1, [r0, 0x9] + ldr r4, [sp, 0x14] + adds r4, 0x1 + str r4, [sp, 0x24] + ldr r5, [sp, 0x18] + adds r5, 0x1 + mov r10, r5 +_080511BE: + ldr r6, [sp, 0x24] + str r6, [sp, 0x14] + mov r0, r10 + str r0, [sp, 0x18] + ldr r1, [sp, 0x4] + cmp r0, r1 + bge _080511CE + b _08050FC2 +_080511CE: + ldr r2, [sp, 0x28] +_080511D0: + str r2, [sp, 0x1C] + ldr r3, [sp, 0x8] + cmp r2, r3 + bge _080511DA + b _08050FB0 +_080511DA: + add sp, 0x3C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080511EC: .4byte 0x0000fffc + thumb_func_end sub_8050F90 + + thumb_func_start sub_80511F0 +sub_80511F0: + push {r4-r6,lr} + ldr r6, _08051204 + ldrb r0, [r6] + cmp r0, 0 + beq _0805120C + subs r0, 0x1 + strb r0, [r6] + ldr r0, _08051208 + ldrb r0, [r0] + b _08051244 + .align 2, 0 +_08051204: .4byte gUnknown_202F1E1 +_08051208: .4byte gUnknown_202F1E0 +_0805120C: + ldr r1, _0805122C + ldr r5, _08051230 + ldr r2, [r5] + ldrb r3, [r2] + strb r3, [r1] + adds r4, r2, 0x1 + str r4, [r5] + lsls r0, r3, 24 + lsrs r0, 24 + cmp r0, 0xE + bne _08051234 + ldrb r0, [r2, 0x1] + strb r0, [r1] + adds r0, r4, 0x1 + str r0, [r5] + b _08051242 + .align 2, 0 +_0805122C: .4byte gUnknown_202F1E0 +_08051230: .4byte gUnknown_202F1DC +_08051234: + movs r0, 0xF + ands r0, r3 + strb r0, [r6] + movs r0, 0xF0 + ands r0, r3 + lsrs r0, 4 + strb r0, [r1] +_08051242: + ldrb r0, [r1] +_08051244: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_80511F0 + + thumb_func_start sub_805124C +sub_805124C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + ldr r5, [sp, 0x1C] + lsls r1, 24 + lsrs r1, 24 + lsls r5, 24 + lsrs r5, 24 + ldrh r6, [r0] + movs r7, 0x80 + lsls r7, 1 + adds r4, r7, 0 + movs r7, 0 + mov r8, r7 + orrs r4, r6 + strh r4, [r0] + mov r4, r8 + strb r4, [r0, 0xE] + str r5, [sp] + bl sub_8051A74 + lsls r0, 24 + lsrs r0, 24 + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805124C + + thumb_func_start sub_8051288 +sub_8051288: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + str r0, [sp, 0x4] + ldr r0, _08051374 + ldr r7, [r0] + ldr r0, _08051378 + adds r3, r7, r0 + ldr r0, [r3] + ldr r0, [r0, 0x4] + ldr r2, [sp, 0x4] + lsls r1, r2, 2 + adds r0, r1, r0 + ldr r0, [r0] + ldrb r2, [r0] + mov r10, r2 + ldrb r0, [r0, 0x1] + mov r9, r0 + ldr r2, _0805137C + adds r0, r7, r2 + movs r4, 0 + mov r2, r10 + strh r2, [r0] + ldr r2, _08051380 + adds r0, r7, r2 + mov r2, r9 + strh r2, [r0] + ldr r2, _08051384 + ldr r0, [r3] + ldr r0, [r0, 0x4] + adds r1, r0 + ldr r0, [r1] + adds r0, 0x3 + str r0, [r2] + ldr r0, _08051388 + strb r4, [r0] + movs r6, 0x5 + mov r0, r9 + adds r0, 0x5 + cmp r6, r0 + bge _0805132E + movs r1, 0x5 + add r1, r10 + mov r8, r1 + str r0, [sp, 0x8] +_080512E8: + movs r5, 0x5 + cmp r5, r8 + bge _08051326 +_080512EE: + bl sub_80511F0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r5, 0 + adds r1, r6, 0 + bl GetTileSafe + movs r1, 0x1 + str r1, [sp] + adds r1, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_805124C + lsls r0, 24 + cmp r0, 0 + beq _08051320 + ldr r2, _0805138C + adds r0, r7, r2 + strh r5, [r0] + ldr r1, _08051390 + adds r0, r7, r1 + strh r6, [r0] +_08051320: + adds r5, 0x1 + cmp r5, r8 + blt _080512EE +_08051326: + adds r6, 0x1 + ldr r2, [sp, 0x8] + cmp r6, r2 + blt _080512E8 +_0805132E: + movs r6, 0 + ldr r0, _08051394 + adds r7, r0, 0 +_08051334: + movs r5, 0 + adds r4, r6, 0x1 +_08051338: + cmp r5, 0x4 + ble _08051350 + mov r0, r10 + adds r0, 0x5 + cmp r5, r0 + bge _08051350 + cmp r6, 0x4 + ble _08051350 + mov r0, r9 + adds r0, 0x5 + cmp r6, r0 + blt _080513A0 +_08051350: + adds r0, r5, 0 + adds r1, r6, 0 + bl GetTileSafe + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x10 + movs r3, 0 + orrs r1, r0 + strh r1, [r2] + ldr r0, _08051398 + ldrb r0, [r0] + cmp r0, 0 + beq _0805139C + ands r1, r7 + movs r0, 0x3 + orrs r1, r0 + b _0805139E + .align 2, 0 +_08051374: .4byte gDungeon +_08051378: .4byte 0x00013568 +_0805137C: .4byte 0x0000e260 +_08051380: .4byte 0x0000e262 +_08051384: .4byte gUnknown_202F1DC +_08051388: .4byte gUnknown_202F1E1 +_0805138C: .4byte 0x0000e21c +_08051390: .4byte 0x0000e21e +_08051394: .4byte 0x0000fffc +_08051398: .4byte gUnknown_202F1A8 +_0805139C: + ands r1, r7 +_0805139E: + strh r1, [r2] +_080513A0: + adds r5, 0x1 + cmp r5, 0x37 + ble _08051338 + adds r6, r4, 0 + cmp r6, 0x1F + ble _08051334 + ldr r1, [sp, 0x4] + cmp r1, 0x4 + bne _080513DA + movs r6, 0x5 + ldr r2, _0805142C + adds r7, r2, 0 +_080513B8: + movs r5, 0x2 + adds r4, r6, 0x1 +_080513BC: + adds r0, r5, 0 + adds r1, r6, 0 + bl GetTileSafe + ldrh r2, [r0] + movs r1, 0x10 + orrs r1, r2 + ands r1, r7 + strh r1, [r0] + adds r5, 0x1 + cmp r5, 0x4 + ble _080513BC + adds r6, r4, 0 + cmp r6, 0x10 + ble _080513B8 +_080513DA: + ldr r0, _08051430 + ldr r0, [r0] + ldr r1, _08051434 + adds r0, r1 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0x3F + ble _08051416 + movs r6, 0 +_080513EC: + movs r5, 0 + adds r4, r6, 0x1 +_080513F0: + adds r0, r5, 0 + adds r1, r6, 0 + bl GetTileSafe + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0805140A + movs r0, 0x10 + orrs r0, r1 + strh r0, [r2] +_0805140A: + adds r5, 0x1 + cmp r5, 0x37 + ble _080513F0 + adds r6, r4, 0 + cmp r6, 0x1F + ble _080513EC +_08051416: + bl sub_804E9DC + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0805142C: .4byte 0x0000fffc +_08051430: .4byte gDungeon +_08051434: .4byte 0x00003a0e + thumb_func_end sub_8051288 + + thumb_func_start sub_8051438 +sub_8051438: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x1C + mov r9, r0 + ldr r0, _080515AC + ldr r0, [r0] + str r0, [sp, 0x4] + ldr r2, _080515B0 + ldr r4, _080515B4 + adds r3, r0, r4 + ldr r0, [r3] + ldr r0, [r0, 0x4] + lsls r1, 2 + adds r0, r1, r0 + ldr r0, [r0] + adds r0, 0x3 + str r0, [r2] + ldr r2, _080515B8 + movs r0, 0 + strb r0, [r2] + ldr r0, [r3] + ldr r0, [r0, 0x4] + adds r1, r0 + ldr r0, [r1] + ldrb r1, [r0, 0x2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0805147A + b _080515D8 +_0805147A: + ldr r5, [sp, 0x4] + ldr r0, _080515BC + adds r1, r5, r0 + mov r2, r9 + movs r3, 0 + ldrsh r0, [r2, r3] + str r0, [r1] + ldr r4, _080515C0 + adds r1, r5, r4 + movs r5, 0x2 + ldrsh r0, [r2, r5] + str r0, [r1] + ldr r0, [sp, 0x4] + ldr r2, _080515C4 + adds r1, r0, r2 + mov r3, r9 + movs r4, 0x4 + ldrsh r0, [r3, r4] + str r0, [r1] + ldr r5, [sp, 0x4] + ldr r0, _080515C8 + adds r1, r5, r0 + movs r2, 0x6 + ldrsh r0, [r3, r2] + str r0, [r1] + movs r3, 0 + str r3, [sp, 0x8] + mov r4, r9 + movs r5, 0x2 + ldrsh r4, [r4, r5] + mov r8, r4 + mov r1, r9 + movs r2, 0x6 + ldrsh r0, [r1, r2] + cmp r8, r0 + blt _080514C4 + b _08051640 +_080514C4: + mov r3, r9 + movs r4, 0 + ldrsh r7, [r3, r4] + movs r5, 0x4 + ldrsh r0, [r3, r5] + ldr r1, [sp, 0x8] + adds r1, 0x1 + str r1, [sp, 0x10] + mov r2, r8 + adds r2, 0x1 + str r2, [sp, 0xC] + cmp r7, r0 + bge _08051598 + ldr r4, _080515CC + ldr r3, [sp, 0x4] + adds r4, r3, r4 + str r4, [sp, 0x14] + movs r5, 0 + str r5, [sp, 0x18] + ldr r0, [sp, 0x8] + mov r10, r0 +_080514EE: + bl sub_80511F0 + adds r5, r0, 0 + lsls r5, 24 + lsrs r5, 24 + adds r0, r7, 0 + mov r1, r8 + bl GetTileSafe + adds r6, r0, 0 + ldr r1, [sp, 0x4] + ldr r2, _080515D0 + adds r0, r1, r2 + add r0, r10 + strb r5, [r0] + ldr r3, [sp, 0x8] + lsls r4, r3, 1 + adds r4, r3 + lsls r4, 3 + ldr r1, [sp, 0x14] + adds r0, r1, r4 + movs r2, 0 + str r2, [sp] + adds r1, r5, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_805124C + ldrb r1, [r6, 0x9] + ldr r3, [sp, 0x18] + adds r4, r3 + ldr r5, [sp, 0x4] + adds r4, r5, r4 + adds r0, r6, 0 + ldr r2, _080515CC + adds r4, r2 + ldm r4!, {r2,r3,r5} + stm r0!, {r2,r3,r5} + ldm r4!, {r2,r3,r5} + stm r0!, {r2,r3,r5} + mov r3, r9 + movs r4, 0 + ldrsh r0, [r3, r4] + adds r0, 0x2 + cmp r7, r0 + blt _08051572 + movs r5, 0x4 + ldrsh r0, [r3, r5] + subs r0, 0x2 + cmp r7, r0 + bge _08051572 + movs r2, 0x2 + ldrsh r0, [r3, r2] + adds r0, 0x2 + cmp r8, r0 + blt _08051572 + movs r4, 0x6 + ldrsh r0, [r3, r4] + subs r0, 0x2 + cmp r8, r0 + bge _08051572 + movs r0, 0x88 + lsls r0, 1 + strh r0, [r6] + movs r0, 0xE + strb r0, [r6, 0xE] +_08051572: + strb r1, [r6, 0x9] + ldr r5, [sp, 0x4] + ldr r2, _080515D4 + adds r0, r5, r2 + strb r1, [r0] + ldr r3, [sp, 0x14] + adds r3, 0xC0 + str r3, [sp, 0x14] + ldr r4, [sp, 0x18] + adds r4, 0xC0 + str r4, [sp, 0x18] + movs r5, 0x8 + add r10, r5 + adds r7, 0x1 + mov r1, r9 + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r7, r0 + blt _080514EE +_08051598: + ldr r3, [sp, 0x10] + str r3, [sp, 0x8] + ldr r4, [sp, 0xC] + mov r8, r4 + mov r5, r9 + movs r1, 0x6 + ldrsh r0, [r5, r1] + cmp r8, r0 + blt _080514C4 + b _08051640 + .align 2, 0 +_080515AC: .4byte gDungeon +_080515B0: .4byte gUnknown_202F1DC +_080515B4: .4byte 0x00013568 +_080515B8: .4byte gUnknown_202F1E1 +_080515BC: .4byte 0x0000e250 +_080515C0: .4byte 0x0000e254 +_080515C4: .4byte 0x0000e258 +_080515C8: .4byte 0x0000e25c +_080515CC: .4byte 0x0000e27c +_080515D0: .4byte 0x0000e87c +_080515D4: .4byte 0x0000e8bc +_080515D8: + mov r2, r9 + movs r3, 0x2 + ldrsh r2, [r2, r3] + mov r8, r2 + b _08051636 +_080515E2: + mov r0, r9 + movs r1, 0 + ldrsh r7, [r0, r1] + movs r2, 0x4 + ldrsh r0, [r0, r2] + mov r3, r8 + adds r3, 0x1 + str r3, [sp, 0xC] + cmp r7, r0 + bge _08051632 +_080515F6: + bl sub_80511F0 + adds r4, r0, 0 + lsls r4, 24 + lsrs r4, 24 + adds r0, r7, 0 + mov r1, r8 + bl GetTileSafe + adds r5, r0, 0 + ldrb r6, [r5, 0x9] + movs r0, 0x1 + str r0, [sp] + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_805124C + strb r6, [r5, 0x9] + ldr r4, [sp, 0x4] + ldr r5, _08051650 + adds r0, r4, r5 + strb r6, [r0] + adds r7, 0x1 + mov r1, r9 + movs r2, 0x4 + ldrsh r0, [r1, r2] + cmp r7, r0 + blt _080515F6 +_08051632: + ldr r3, [sp, 0xC] + mov r8, r3 +_08051636: + mov r4, r9 + movs r5, 0x6 + ldrsh r0, [r4, r5] + cmp r8, r0 + blt _080515E2 +_08051640: + add sp, 0x1C + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08051650: .4byte 0x0000e8bc + thumb_func_end sub_8051438 + + thumb_func_start sub_8051654 +sub_8051654: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + str r0, [sp] + ldr r4, _080516EC + ldr r1, [r4, 0x8] + ldr r0, [r4] + subs r1, r0 + subs r1, 0x2 + movs r0, 0x3 + bl DungeonRandRange + mov r8, r0 + cmp r0, 0x2 + bgt _0805167C + movs r0, 0x3 + mov r8, r0 +_0805167C: + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x4] + subs r1, r0 + subs r1, 0x2 + movs r0, 0x3 + bl DungeonRandRange + mov r9, r0 + cmp r0, 0x2 + bgt _08051694 + movs r1, 0x3 + mov r9, r1 +_08051694: + movs r0, 0x2 + movs r1, 0x4 + bl DungeonRandRange + mov r10, r0 + movs r5, 0 + cmp r5, r10 + bge _08051734 + ldr r0, [r4, 0x8] + ldr r1, [r4] + subs r0, r1 + cmp r0, r8 + ble _08051734 + adds r6, r4, 0 +_080516B0: + movs r0, 0x64 + bl DungeonRandInt + cmp r0, 0x31 + bgt _080516F4 + ldr r4, [r6, 0x4] + ldr r0, [r6, 0xC] + adds r7, r5, 0x1 + cmp r4, r0 + bge _080516E4 + ldr r5, _080516EC + ldr r0, _080516F0 + adds r2, r0, 0 +_080516CA: + ldr r0, [r5] + adds r1, r4, 0 + str r2, [sp, 0xC] + bl GetTileSafe + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0xC] + cmp r4, r0 + blt _080516CA +_080516E4: + ldr r0, [r6] + adds r0, 0x1 + str r0, [r6] + b _08051724 + .align 2, 0 +_080516EC: .4byte gUnknown_202F1B8 +_080516F0: .4byte 0x0000ffdf +_080516F4: + ldr r0, [r6, 0x8] + subs r0, 0x1 + str r0, [r6, 0x8] + ldr r4, [r6, 0x4] + ldr r0, [r6, 0xC] + adds r7, r5, 0x1 + cmp r4, r0 + bge _08051724 + ldr r5, _08051784 + ldr r1, _08051788 + adds r2, r1, 0 +_0805170A: + ldr r0, [r5, 0x8] + adds r1, r4, 0 + str r2, [sp, 0xC] + bl GetTileSafe + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0xC] + cmp r4, r0 + blt _0805170A +_08051724: + adds r5, r7, 0 + cmp r5, r10 + bge _08051734 + ldr r0, [r6, 0x8] + ldr r1, [r6] + subs r0, r1 + cmp r0, r8 + bgt _080516B0 +_08051734: + movs r5, 0 + ldr r3, _08051784 + cmp r5, r10 + bge _080517CE + ldr r0, [r3, 0xC] + ldr r1, [r3, 0x4] + subs r0, r1 + cmp r0, r9 + ble _080517CE + adds r6, r3, 0 +_08051748: + movs r0, 0x64 + bl DungeonRandInt + cmp r0, 0x31 + bgt _0805178C + ldr r4, [r6] + ldr r0, [r6, 0x8] + adds r7, r5, 0x1 + cmp r4, r0 + bge _0805177C + ldr r5, _08051784 + ldr r0, _08051788 + adds r2, r0, 0 +_08051762: + ldr r1, [r5, 0x4] + adds r0, r4, 0 + str r2, [sp, 0xC] + bl GetTileSafe + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0x8] + cmp r4, r0 + blt _08051762 +_0805177C: + ldr r0, [r6, 0x4] + adds r0, 0x1 + str r0, [r6, 0x4] + b _080517BC + .align 2, 0 +_08051784: .4byte gUnknown_202F1B8 +_08051788: .4byte 0x0000ffdf +_0805178C: + ldr r0, [r6, 0xC] + subs r0, 0x1 + str r0, [r6, 0xC] + ldr r4, [r6] + ldr r0, [r6, 0x8] + adds r7, r5, 0x1 + cmp r4, r0 + bge _080517BC + ldr r5, _080518E4 + ldr r1, _080518E8 + adds r2, r1, 0 +_080517A2: + ldr r1, [r5, 0xC] + adds r0, r4, 0 + str r2, [sp, 0xC] + bl GetTileSafe + ldrh r1, [r0] + ldr r2, [sp, 0xC] + ands r1, r2 + strh r1, [r0] + adds r4, 0x1 + ldr r0, [r5, 0x8] + cmp r4, r0 + blt _080517A2 +_080517BC: + adds r5, r7, 0 + ldr r3, _080518E4 + cmp r5, r10 + bge _080517CE + ldr r1, [r6, 0xC] + ldr r0, [r6, 0x4] + subs r1, r0 + cmp r1, r9 + bgt _08051748 +_080517CE: + ldr r7, [r3] + ldr r0, [r3, 0x8] + cmp r7, r0 + bge _08051824 + adds r4, r3, 0 + mov r9, r3 +_080517DA: + ldr r5, [r4, 0x4] + ldr r0, [r4, 0xC] + adds r1, r7, 0x1 + mov r8, r1 + cmp r5, r0 + bge _0805181A + ldr r3, _080518E4 + ldr r0, _080518E8 + adds r6, r0, 0 +_080517EC: + adds r0, r7, 0 + adds r1, r5, 0 + str r3, [sp, 0x10] + bl GetTileSafe + adds r2, r0, 0 + ldrh r1, [r2] + movs r0, 0x20 + ands r0, r1 + ldr r3, [sp, 0x10] + cmp r0, 0 + beq _08051812 + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08051812 + adds r0, r1, 0 + ands r0, r6 + strh r0, [r2] +_08051812: + adds r5, 0x1 + ldr r0, [r4, 0xC] + cmp r5, r0 + blt _080517EC +_0805181A: + mov r7, r8 + mov r1, r9 + ldr r0, [r1, 0x8] + cmp r7, r0 + blt _080517DA +_08051824: + ldr r0, [r3] + ldr r1, [r3, 0x8] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r2, r0, 1 + ldr r0, [r3, 0x4] + ldr r1, [r3, 0xC] + adds r0, r1 + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + subs r0, 0x1 + mov r10, r0 + movs r0, 0 + mov r9, r0 + subs r7, r2, 0x1 + adds r0, r2, 0x2 + cmp r7, r0 + bge _080518D2 + adds r2, r0, 0 + str r2, [sp, 0x4] +_08051850: + mov r5, r10 + adds r0, r5, 0x3 + adds r1, r7, 0x1 + mov r8, r1 + mov r1, r9 + adds r1, 0x1 + str r1, [sp, 0x8] + cmp r5, r0 + bge _080518C6 + movs r3, 0 +_08051864: + adds r0, r7, 0 + adds r1, r5, 0 + str r3, [sp, 0x10] + bl GetTileSafe + adds r6, r0, 0 + ldrh r1, [r6] + movs r0, 0x20 + ands r0, r1 + ldr r3, [sp, 0x10] + cmp r0, 0 + beq _080518BA + movs r0, 0x40 + ands r0, r1 + cmp r0, 0 + bne _080518BA + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + bne _080518BA + mov r0, r9 + lsls r2, r0, 1 + adds r2, r3 + ldr r0, [sp] + ldrb r1, [r0, 0x18] + lsls r0, r1, 3 + adds r0, r1 + lsls r0, 1 + adds r2, r0 + ldr r1, _080518EC + adds r2, r1 + movs r0, 0 + ldrsh r4, [r2, r0] + movs r0, 0x64 + bl DungeonRandInt + ldr r3, [sp, 0x10] + cmp r4, r0 + ble _080518BA + ldrh r1, [r6, 0x4] + movs r0, 0x2 + orrs r0, r1 + strh r0, [r6, 0x4] +_080518BA: + adds r5, 0x1 + adds r3, 0x6 + mov r0, r10 + adds r0, 0x3 + cmp r5, r0 + blt _08051864 +_080518C6: + mov r7, r8 + ldr r1, [sp, 0x8] + mov r9, r1 + ldr r0, [sp, 0x4] + cmp r7, r0 + blt _08051850 +_080518D2: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080518E4: .4byte gUnknown_202F1B8 +_080518E8: .4byte 0x0000ffdf +_080518EC: .4byte gUnknown_80F57D4 + thumb_func_end sub_8051654 + + thumb_func_start sub_80518F0 +sub_80518F0: + push {r4-r7,lr} + movs r5, 0 + movs r6, 0x10 + movs r7, 0 +_080518F8: + adds r0, r5, 0 + movs r1, 0x1 + bl GetTileSafe + adds r4, r0, 0 + bl sub_804FD10 + cmp r5, 0 + beq _0805190E + cmp r5, 0x37 + bne _08051914 +_0805190E: + ldrh r0, [r4] + orrs r0, r6 + strh r0, [r4] +_08051914: + adds r0, r5, 0 + movs r1, 0x1E + bl GetTileSafe + adds r4, r0, 0 + bl sub_804FD10 + cmp r5, 0 + beq _0805192A + cmp r5, 0x37 + bne _08051930 +_0805192A: + ldrh r0, [r4] + orrs r0, r6 + strh r0, [r4] +_08051930: + adds r5, 0x1 + cmp r5, 0x37 + ble _080518F8 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_80518F0 + + thumb_func_start sub_805193C +sub_805193C: + push {r4-r6,lr} + sub sp, 0x8 + adds r6, r3, 0 + ldr r4, [sp, 0x18] + lsls r0, 24 + lsrs r5, r0, 24 + lsls r1, 16 + lsls r2, 16 + lsrs r1, 16 + orrs r1, r2 + str r1, [sp, 0x4] + adds r0, r5, 0 + bl sub_805210C + lsls r0, 24 + cmp r0, 0 + beq _0805196A + mov r0, sp + movs r1, 0x76 + movs r2, 0 + bl xxx_init_itemslot_8090A8C + b _08051974 +_0805196A: + mov r0, sp + adds r1, r5, 0 + movs r2, 0 + bl xxx_init_itemslot_8090A8C +_08051974: + mov r0, sp + ldrb r0, [r0] + orrs r4, r0 + mov r0, sp + strb r4, [r0] + cmp r6, 0 + beq _08051984 + strb r6, [r0, 0x1] +_08051984: + add r0, sp, 0x4 + mov r1, sp + movs r2, 0x1 + bl sub_80460F8 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_805193C + + thumb_func_start sub_8051998 +sub_8051998: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + mov r8, r1 + mov r9, r2 + lsls r0, 16 + asrs r0, 16 + adds r1, r0, 0 + lsls r3, 24 + lsrs r6, r3, 24 + adds r7, r6, 0 + ldr r0, _080519E4 + cmp r1, r0 + bne _080519E8 + mov r1, sp + movs r5, 0 + movs r4, 0 + movs r0, 0x3C + strh r0, [r1] + bl sub_803DA20 + mov r1, sp + strh r0, [r1, 0x8] + mov r0, sp + strb r6, [r0, 0x2] + str r4, [sp, 0x4] + strb r5, [r0, 0x10] + mov r1, r8 + strh r1, [r0, 0xC] + mov r1, r9 + strh r1, [r0, 0xE] + movs r1, 0x1 + bl sub_806B7F8 + b _08051A14 + .align 2, 0 +_080519E4: .4byte 0x000001a5 +_080519E8: + cmp r1, 0 + beq _08051A14 + mov r0, sp + movs r5, 0 + movs r4, 0 + strh r1, [r0] + adds r0, r1, 0 + bl sub_803DA20 + mov r1, sp + strh r0, [r1, 0x8] + mov r0, sp + strb r7, [r0, 0x2] + str r4, [sp, 0x4] + strb r5, [r0, 0x10] + mov r1, r8 + strh r1, [r0, 0xC] + mov r1, r9 + strh r1, [r0, 0xE] + movs r1, 0x1 + bl sub_806B7F8 +_08051A14: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8051998 + + thumb_func_start sub_8051A24 +sub_8051A24: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + adds r6, r0, 0 + adds r4, r1, 0 + adds r5, r2, 0 + lsls r6, 24 + lsrs r6, 24 + lsls r3, 24 + lsrs r3, 24 + mov r8, r3 + adds r0, r4, 0 + adds r1, r5, 0 + bl GetTileSafe + adds r7, r0, 0 + lsls r4, 16 + lsls r5, 16 + lsrs r4, 16 + orrs r4, r5 + str r4, [sp] + adds r0, r6, 0 + mov r1, sp + movs r2, 0 + bl sub_8045684 + cmp r0, 0 + beq _08051A66 + str r0, [r7, 0x14] + adds r0, 0x20 + mov r1, r8 + strb r1, [r0] +_08051A66: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8051A24 + + thumb_func_start sub_8051A74 +sub_8051A74: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldr r0, [sp, 0x20] + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + cmp r1, 0xF + bls _08051AA2 + ldrh r0, [r4] + ldr r1, _08051AB4 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strh r1, [r4] +_08051AA2: + mov r0, r8 + cmp r0, 0x45 + bls _08051AAA + b _08051D68 +_08051AAA: + lsls r0, 2 + ldr r1, _08051AB8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08051AB4: .4byte 0x0000fffc +_08051AB8: .4byte _08051ABC + .align 2, 0 +_08051ABC: + .4byte _08051BF0 + .4byte _08051C0C + .4byte _08051D50 + .4byte _08051E1A + .4byte _08051C20 + .4byte _08051C54 + .4byte _08051C64 + .4byte _08051C74 + .4byte _08051C94 + .4byte _08051D00 + .4byte _08051C7E + .4byte _08051D10 + .4byte _08051D24 + .4byte _08051D50 + .4byte _08051D50 + .4byte _08051E1A + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051D68 + .4byte _08051C94 + .4byte _08051CD4 + .4byte _08051BD4 +_08051BD4: + ldr r0, _08051BFC + ldr r0, [r0] + ldr r2, _08051C00 + adds r1, r0, r2 + strh r6, [r1] + ldr r3, _08051C04 + adds r0, r3 + strh r7, [r0] + movs r0, 0xB + adds r1, r6, 0 + adds r2, r7, 0 + movs r3, 0 + bl sub_8051A24 +_08051BF0: + ldrh r1, [r4] + ldr r0, _08051C08 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + b _08051D42 + .align 2, 0 +_08051BFC: .4byte gDungeon +_08051C00: .4byte 0x00000684 +_08051C04: .4byte 0x00000686 +_08051C08: .4byte 0x0000fffc +_08051C0C: + ldrh r1, [r4] + ldr r0, _08051C18 + ands r0, r1 + ldr r1, _08051C1C + ands r0, r1 + b _08051D5A + .align 2, 0 +_08051C18: .4byte 0x0000fffc +_08051C1C: .4byte 0x0000feff +_08051C20: + ldrh r1, [r4] + ldr r0, _08051C44 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + orrs r0, r1 + strh r0, [r4] + ldr r0, _08051C48 + ldr r0, [r0] + ldr r3, _08051C4C + adds r1, r0, r3 + strh r6, [r1] + ldr r1, _08051C50 + adds r0, r1 + strh r7, [r0] + strb r2, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051C44: .4byte 0x0000fffc +_08051C48: .4byte gDungeon +_08051C4C: .4byte 0x0000e218 +_08051C50: .4byte 0x0000e21a +_08051C54: + ldrh r1, [r4] + ldr r0, _08051C60 + ands r0, r1 + movs r2, 0 + movs r1, 0x2 + b _08051D42 + .align 2, 0 +_08051C60: .4byte 0x0000fffc +_08051C64: + ldrh r1, [r4] + ldr r0, _08051C70 + ands r0, r1 + movs r1, 0x3 + b _08051D58 + .align 2, 0 +_08051C70: .4byte 0x0000fffc +_08051C74: + ldr r1, _08051C8C + movs r0, 0x1 + strb r0, [r1] + bl sub_8049840 +_08051C7E: + ldrh r1, [r4] + ldr r0, _08051C90 + ands r0, r1 + movs r1, 0x3 + orrs r0, r1 + b _08051D56 + .align 2, 0 +_08051C8C: .4byte gUnknown_202F1A8 +_08051C90: .4byte 0x0000fffc +_08051C94: + ldrh r1, [r4] + ldr r0, _08051CC0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strh r0, [r4] + ldrh r0, [r4, 0x4] + movs r2, 0 + orrs r0, r1 + ldr r1, _08051CC4 + ands r0, r1 + strh r0, [r4, 0x4] + strb r2, [r4, 0x9] + ldr r0, _08051CC8 + ldr r0, [r0] + ldr r2, _08051CCC + adds r1, r0, r2 + strh r6, [r1] + ldr r3, _08051CD0 + adds r0, r3 + strh r7, [r0] + b _08051E1A + .align 2, 0 +_08051CC0: .4byte 0x0000fffc +_08051CC4: .4byte 0x0000fffd +_08051CC8: .4byte gDungeon +_08051CCC: .4byte 0x0000e21c +_08051CD0: .4byte 0x0000e21e +_08051CD4: + ldrh r1, [r4] + movs r2, 0x80 + lsls r2, 4 + adds r0, r2, 0 + orrs r0, r1 + ldr r1, _08051CF8 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + orrs r0, r1 + strh r0, [r4] + ldrh r1, [r4, 0x4] + ldr r0, _08051CFC + ands r0, r1 + strh r0, [r4, 0x4] + strb r2, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051CF8: .4byte 0x0000fffc +_08051CFC: .4byte 0x0000fffd +_08051D00: + ldrh r1, [r4] + ldr r0, _08051D0C + ands r0, r1 + movs r1, 0x1 + b _08051D58 + .align 2, 0 +_08051D0C: .4byte 0x0000fffc +_08051D10: + ldrh r1, [r4] + ldr r0, _08051D20 + ands r0, r1 + movs r1, 0x1 + movs r2, 0 + orrs r0, r1 + b _08051D3C + .align 2, 0 +_08051D20: .4byte 0x0000fffc +_08051D24: + ldrh r1, [r4] + ldr r0, _08051D4C + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + movs r2, 0x80 + lsls r2, 5 + adds r1, r2, 0 + orrs r0, r1 + movs r1, 0x10 + orrs r0, r1 + movs r2, 0 +_08051D3C: + movs r3, 0x80 + lsls r3, 4 + adds r1, r3, 0 +_08051D42: + orrs r0, r1 + strh r0, [r4] + strb r2, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051D4C: .4byte 0x0000fffc +_08051D50: + ldrh r1, [r4] + ldr r0, _08051D64 + ands r0, r1 +_08051D56: + movs r1, 0x10 +_08051D58: + orrs r0, r1 +_08051D5A: + strh r0, [r4] + movs r0, 0xFF + strb r0, [r4, 0x9] + b _08051E1A + .align 2, 0 +_08051D64: .4byte 0x0000fffc +_08051D68: + mov r0, r8 + subs r0, 0x10 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xCB + bhi _08051E1A + mov r1, r8 + lsls r0, r1, 4 + ldr r1, _08051DA0 + adds r5, r0, r1 + ldrb r0, [r5, 0xC] + strb r0, [r4, 0x9] + ldrb r1, [r5] + cmp r1, 0 + beq _08051DB8 + mov r2, r9 + cmp r2, 0 + beq _08051DA4 + ldrb r0, [r5] + movs r1, 0x2 + ldrsh r3, [r5, r1] + ldr r1, [r5, 0x4] + str r1, [sp] + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_805193C + b _08051DDC + .align 2, 0 +_08051DA0: .4byte gUnknown_80F6D20 +_08051DA4: + ldr r0, _08051DB0 + ldr r0, [r0] + ldr r2, _08051DB4 + adds r0, r2 + strb r1, [r0] + b _08051DDC + .align 2, 0 +_08051DB0: .4byte gDungeon +_08051DB4: .4byte 0x0000068b +_08051DB8: + ldr r2, [r5, 0x4] + cmp r2, 0 + beq _08051DDC + ldr r0, _08051E2C + ldr r1, [r0] + subs r0, r2, 0x1 + lsls r0, 2 + adds r0, r1, r0 + ldr r3, _08051E30 + adds r0, r3 + strh r6, [r0] + ldr r0, [r5, 0x4] + subs r0, 0x1 + lsls r0, 2 + adds r1, r0 + ldr r0, _08051E34 + adds r1, r0 + strh r7, [r1] +_08051DDC: + movs r1, 0x8 + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _08051DF2 + ldrb r3, [r5, 0xA] + mov r1, r8 + str r1, [sp] + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_8051998 +_08051DF2: + ldrb r0, [r5, 0xB] + cmp r0, 0x14 + beq _08051E08 + mov r2, r9 + cmp r2, 0 + beq _08051E08 + ldrb r3, [r5, 0xD] + adds r1, r6, 0 + adds r2, r7, 0 + bl sub_8051A24 +_08051E08: + ldrb r0, [r5, 0xE] + cmp r0, 0 + beq _08051E1A + ldrh r0, [r4] + ldr r1, _08051E38 + ands r1, r0 + movs r0, 0x2 + orrs r1, r0 + strh r1, [r4] +_08051E1A: + movs r0, 0 + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08051E2C: .4byte gDungeon +_08051E30: .4byte 0x0000e220 +_08051E34: .4byte 0x0000e222 +_08051E38: .4byte 0x0000fffc + thumb_func_end sub_8051A74 + + thumb_func_start sub_8051E3C +sub_8051E3C: + push {r4-r6,lr} + sub sp, 0x4 + movs r5, 0 +_08051E42: + movs r4, 0 + adds r6, r5, 0x1 +_08051E46: + adds r0, r4, 0 + adds r1, r5, 0 + bl GetTileSafe + adds r2, r0, 0 + ldrb r0, [r2, 0xE] + cmp r0, 0xF + bls _08051E66 + adds r1, r0, 0 + movs r0, 0 + str r0, [sp] + adds r0, r2, 0 + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_8051A74 +_08051E66: + adds r4, 0x1 + cmp r4, 0x37 + ble _08051E46 + adds r5, r6, 0 + cmp r5, 0x1F + ble _08051E42 + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8051E3C + + thumb_func_start sub_8051E7C +sub_8051E7C: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + mov r9, r0 + movs r1, 0x4 + ldrsh r0, [r0, r1] + mov r2, r9 + movs r3, 0x6 + ldrsh r1, [r2, r3] + subs r1, 0x1 + bl GetTileSafe + str r0, [sp, 0x8] + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 5 + ands r0, r1 + cmp r0, 0 + bne _08051EB8 + ldr r0, _08051EB4 + ldr r1, [r0] + mov r0, r9 + bl SendMessage + b _080520F6 + .align 2, 0 +_08051EB4: .4byte gUnknown_80FDDF0 +_08051EB8: + ldr r0, _08051EF0 + ldr r0, [r0] + ldr r1, _08051EF4 + adds r0, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _08051EC8 + b _080520EC +_08051EC8: + mov r2, r9 + ldrh r1, [r2, 0x6] + subs r1, 0x1 + lsls r1, 16 + ldrh r0, [r2, 0x4] + orrs r0, r1 + str r0, [sp, 0x4] + mov r0, r9 + bl GetEntityRoom + lsls r0, 24 + lsrs r0, 24 + str r0, [sp, 0xC] + mov r3, r9 + movs r1, 0x6 + ldrsh r0, [r3, r1] + adds r6, r0, 0 + subs r6, 0x15 + b _08051FE0 + .align 2, 0 +_08051EF0: .4byte gDungeon +_08051EF4: .4byte 0x00003a09 +_08051EF8: + mov r2, r9 + movs r3, 0x4 + ldrsh r0, [r2, r3] + adds r5, r0, 0 + subs r5, 0x14 + adds r0, 0x14 + adds r1, r6, 0x1 + str r1, [sp, 0x10] + cmp r5, r0 + bgt _08051FD8 + ldr r2, _080520C0 + mov r10, r2 +_08051F10: + mov r0, r10 + ldr r3, [r0] + ldr r1, _080520C4 + adds r0, r3, r1 + ldr r1, [r0] + subs r2, r5, r1 + mov r8, r2 + ldr r2, _080520C8 + adds r0, r3, r2 + ldr r2, [r0] + subs r7, r6, r2 + mov r0, r8 + cmp r0, 0 + blt _08051FCA + cmp r7, 0 + blt _08051FCA + cmp r0, 0x7 + bgt _08051FCA + cmp r7, 0x7 + bgt _08051FCA + adds r0, r1, 0x1 + cmp r5, r0 + blt _08051FCA + adds r0, r2, 0x1 + cmp r6, r0 + blt _08051FCA + ldr r1, _080520CC + adds r0, r3, r1 + ldr r0, [r0] + subs r0, 0x1 + cmp r5, r0 + bge _08051FCA + ldr r2, _080520D0 + adds r0, r3, r2 + ldr r0, [r0] + subs r0, 0x1 + cmp r6, r0 + bge _08051FCA + adds r0, r5, 0 + adds r1, r6, 0 + bl GetTileSafe + adds r4, r0, 0 + ldrh r0, [r4] + movs r3, 0x80 + lsls r3, 1 + adds r1, r3, 0 + ands r0, r1 + cmp r0, 0 + beq _08051F9A + mov r0, r10 + ldr r2, [r0] + lsls r1, r7, 1 + adds r1, r7 + lsls r1, 3 + mov r3, r8 + lsls r0, r3, 1 + add r0, r8 + lsls r0, 6 + adds r1, r0 + adds r2, r1 + ldr r1, _080520D4 + adds r0, r2, r1 + ldrh r0, [r0] + strh r0, [r4] + ldr r3, _080520D8 + adds r2, r3 + ldrh r0, [r2] + strh r0, [r4, 0x4] +_08051F9A: + mov r1, r10 + ldr r0, [r1] + mov r2, r8 + lsls r1, r2, 3 + adds r1, r7, r1 + ldr r3, _080520DC + adds r0, r3 + adds r0, r1 + ldrb r1, [r0] + movs r0, 0x1 + str r0, [sp] + adds r0, r4, 0 + adds r2, r5, 0 + adds r3, r6, 0 + bl sub_8051A74 + ldrh r1, [r4, 0x4] + movs r0, 0x3 + orrs r0, r1 + strh r0, [r4, 0x4] + ldr r0, [sp, 0xC] + cmp r0, 0xFF + beq _08051FCA + strb r0, [r4, 0x9] +_08051FCA: + adds r5, 0x1 + mov r2, r9 + movs r3, 0x4 + ldrsh r0, [r2, r3] + adds r0, 0x14 + cmp r5, r0 + ble _08051F10 +_08051FD8: + ldr r6, [sp, 0x10] + mov r1, r9 + movs r2, 0x6 + ldrsh r0, [r1, r2] +_08051FE0: + adds r0, 0x13 + cmp r6, r0 + ble _08051EF8 + mov r3, r9 + movs r1, 0x6 + ldrsh r0, [r3, r1] + adds r6, r0, 0 + subs r6, 0x15 + adds r0, 0x13 + ldr r7, _080520C0 + cmp r6, r0 + bgt _0805207A +_08051FF8: + mov r2, r9 + movs r3, 0x4 + ldrsh r0, [r2, r3] + adds r5, r0, 0 + subs r5, 0x14 + adds r0, 0x14 + adds r1, r6, 0x1 + str r1, [sp, 0x10] + cmp r5, r0 + bgt _0805206C + ldr r7, _080520C0 +_0805200E: + ldr r0, _080520C0 + ldr r4, [r0] + ldr r2, _080520C4 + adds r0, r4, r2 + ldr r2, [r0] + subs r1, r5, r2 + ldr r3, _080520C8 + adds r0, r4, r3 + ldr r3, [r0] + subs r0, r6, r3 + cmp r1, 0 + blt _0805205E + cmp r0, 0 + blt _0805205E + cmp r1, 0x7 + bgt _0805205E + cmp r0, 0x7 + bgt _0805205E + adds r0, r2, 0x1 + cmp r5, r0 + blt _0805205E + adds r0, r3, 0x1 + cmp r6, r0 + blt _0805205E + ldr r1, _080520CC + adds r0, r4, r1 + ldr r0, [r0] + subs r0, 0x1 + cmp r5, r0 + bge _0805205E + ldr r2, _080520D0 + adds r0, r4, r2 + ldr r0, [r0] + subs r0, 0x1 + cmp r6, r0 + bge _0805205E + adds r0, r5, 0 + adds r1, r6, 0 + bl sub_80498A8 +_0805205E: + adds r5, 0x1 + mov r3, r9 + movs r1, 0x4 + ldrsh r0, [r3, r1] + adds r0, 0x14 + cmp r5, r0 + ble _0805200E +_0805206C: + ldr r6, [sp, 0x10] + mov r2, r9 + movs r3, 0x6 + ldrsh r0, [r2, r3] + adds r0, 0x13 + cmp r6, r0 + ble _08051FF8 +_0805207A: + ldr r0, [r7] + ldr r1, _080520E0 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r2, [sp, 0x8] + ldrh r1, [r2] + ldr r0, _080520E4 + ands r0, r1 + strh r0, [r2] + mov r3, r9 + movs r1, 0x4 + ldrsh r0, [r3, r1] + movs r2, 0x6 + ldrsh r1, [r3, r2] + subs r1, 0x1 + bl sub_80498A8 + bl sub_8049B8C + bl sub_8049ED4 + add r0, sp, 0x4 + bl sub_80429FC + ldr r0, _080520E8 + ldr r1, [r0] + mov r0, r9 + bl SendMessage + movs r0, 0x14 + movs r1, 0x3C + bl sub_803E708 + b _080520F6 + .align 2, 0 +_080520C0: .4byte gDungeon +_080520C4: .4byte 0x0000e250 +_080520C8: .4byte 0x0000e254 +_080520CC: .4byte 0x0000e258 +_080520D0: .4byte 0x0000e25c +_080520D4: .4byte 0x0000e27c +_080520D8: .4byte 0x0000e280 +_080520DC: .4byte 0x0000e87c +_080520E0: .4byte 0x00003a09 +_080520E4: .4byte 0x0000efef +_080520E8: .4byte gUnknown_80FDDD0 +_080520EC: + ldr r0, _08052108 + ldr r1, [r0] + mov r0, r9 + bl SendMessage +_080520F6: + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08052108: .4byte gUnknown_80FDDF0 + thumb_func_end sub_8051E7C + + thumb_func_start sub_805210C +sub_805210C: + push {r4-r7,lr} + lsls r0, 24 + lsrs r5, r0, 24 + movs r3, 0 + ldr r7, _080521B4 + movs r4, 0x1 + ldr r2, [r7] +_0805211A: + ldrb r1, [r2] + adds r0, r4, 0 + ands r0, r1 + cmp r0, 0 + beq _0805212A + ldrb r0, [r2, 0x2] + cmp r0, r5 + beq _080521C8 +_0805212A: + adds r2, 0x4 + adds r3, 0x1 + cmp r3, 0x13 + ble _0805211A + movs r3, 0 + ldr r0, _080521B8 + ldr r4, [r0] + movs r6, 0x1 +_0805213A: + movs r0, 0x64 + adds r2, r3, 0 + muls r2, r0 + adds r0, r2, r4 + ldr r1, _080521BC + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + cmp r0, 0 + beq _0805216C + adds r0, r2, r4 + ldr r1, _080521C0 + adds r0, r1 + ldrb r1, [r0] + adds r0, r6, 0 + ands r0, r1 + adds r1, r2, r4 + cmp r0, 0 + beq _0805216C + ldr r2, _080521C4 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, r5 + beq _080521C8 +_0805216C: + adds r3, 0x1 + cmp r3, 0x3 + ble _0805213A + movs r3, 0 + ldr r0, _080521B8 + ldr r4, [r0] +_08052178: + movs r0, 0x58 + muls r0, r3 + adds r2, r0, r4 + ldrb r1, [r2] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _08052196 + adds r0, r2, 0 + adds r0, 0x28 + ldrb r0, [r0] + cmp r0, 0 + beq _08052196 + cmp r0, r5 + beq _080521C8 +_08052196: + adds r3, 0x1 + movs r0, 0xCE + lsls r0, 1 + cmp r3, r0 + ble _08052178 + ldr r0, [r7] + lsls r1, r5, 1 + adds r0, 0x50 + adds r0, r1 + ldrh r0, [r0] + cmp r0, 0 + bne _080521C8 + movs r0, 0 + b _080521CA + .align 2, 0 +_080521B4: .4byte gTeamInventoryRef +_080521B8: .4byte gRecruitedPokemonRef +_080521BC: .4byte 0x00008df8 +_080521C0: .4byte 0x00008e38 +_080521C4: .4byte 0x00008e3a +_080521C8: + movs r0, 0x1 +_080521CA: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_805210C + + thumb_func_start sub_80521D0 +sub_80521D0: + push {r4-r6,lr} + movs r1, 0 + ldr r5, _08052200 + ldr r6, _08052204 + ldr r4, _08052208 + ldr r3, _0805220C + movs r2, 0 +_080521DE: + ldr r0, [r4] + adds r0, r3 + adds r0, r1 + strb r2, [r0] + adds r1, 0x1 + cmp r1, 0x9 + ble _080521DE + movs r0, 0 + str r0, [r5] + movs r0, 0x1 + strb r0, [r6] + movs r0, 0 + bl sub_8052210 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08052200: .4byte gUnknown_202F1E8 +_08052204: .4byte gUnknown_203B434 +_08052208: .4byte gDungeon +_0805220C: .4byte 0x0001c054 + thumb_func_end sub_80521D0 + + thumb_func_start sub_8052210 +sub_8052210: + push {r4-r6,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r5, _08052280 +_0805221A: + lsls r0, r4, 6 + ldr r1, [r5] + adds r0, r1 + ldr r1, _08052284 + adds r0, r1 + ldr r1, _08052288 + bl strcpy + adds r4, 0x1 + cmp r4, 0x9 + ble _0805221A + ldr r1, _08052280 + ldr r0, [r1] + ldr r2, _0805228C + adds r0, r2 + movs r3, 0 + strb r3, [r0] + ldr r0, [r1] + adds r2, 0x1 + adds r1, r0, r2 + strh r3, [r1] + adds r2, 0x2 + adds r1, r0, r2 + strh r3, [r1] + adds r2, 0x2 + adds r1, r0, r2 + strh r3, [r1] + ldr r1, _08052290 + adds r2, r0, r1 + movs r1, 0x4 + strh r1, [r2] + ldr r2, _08052294 + adds r0, r2 + str r3, [r0] + cmp r6, 0 + beq _08052278 + ldr r0, _08052298 + ldr r0, [r0] + cmp r0, 0x3 + bne _08052278 + movs r0, 0 + movs r1, 0 + bl sub_803EAF0 + movs r0, 0xB + bl sub_803E46C +_08052278: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08052280: .4byte gDungeon +_08052284: .4byte 0x0001bdd4 +_08052288: .4byte gUnknown_80F7AE8 +_0805228C: .4byte 0x0001c05f +_08052290: .4byte 0x0001c066 +_08052294: .4byte 0x0001c06c +_08052298: .4byte gUnknown_202EDD0 + thumb_func_end sub_8052210 + + .align 2,0 diff --git a/include/structs/map.h b/include/structs/map.h index 69172c1c8..30aa81524 100644 --- a/include/structs/map.h +++ b/include/structs/map.h @@ -42,7 +42,7 @@ typedef struct Tile // Bitwise flags for whether Pokémon can move to an adjacent tile. Bits correspond to directions in direction.h. // Different sets of flags are used for Pokémon that can cross special terrain, corresponding to the CrossableTerrain enum. /* 0xA */ u8 walkableNeighborFlags[NUM_CROSSABLE_TERRAIN]; - u8 fillE[0x10 - 0xE]; + u8 unkE; /* 0x10 */ Entity *monster; // Pokémon on the tile. /* 0x14 */ Entity *object; // Item or trap on the tile. } Tile; @@ -65,4 +65,4 @@ typedef struct RoomData u32 unk18; // top left y } RoomData; -#endif // GUARD_MAP_H \ No newline at end of file +#endif // GUARD_MAP_H diff --git a/ld_script.txt b/ld_script.txt index 6be088029..c4748c232 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -217,6 +217,8 @@ SECTIONS { src/dungeon_map_access_1.o(.text); src/tile_types.o(.text); asm/code_804AFAC.o(.text); + src/code_804AFAC.o(.text); + asm/code_804FD30.o(.text); src/code_80521D0.o(.text); asm/code_80521D0.o(.text); src/charge_move.o(.text); diff --git a/src/code_80140DC.c b/src/code_80140DC.c index f78d3a7b0..04dec23d4 100644 --- a/src/code_80140DC.c +++ b/src/code_80140DC.c @@ -13,6 +13,20 @@ extern s32 gUnknown_202E740; extern MenuItem gUnknown_80D485C[]; extern MenuItem gUnknown_80D4880[]; +extern UnkTextStruct2 gUnknown_80D47C8[4]; + +void sub_80140B4(UnkTextStruct2 *a0) +{ + s32 i; + + for(i = 0; i < 4; i++) + { + a0[i] = gUnknown_80D47C8[i]; + } +} + +// End of menu_input.c + void sub_80140DC(void) { Position pos; diff --git a/src/code_804AFAC.c b/src/code_804AFAC.c new file mode 100644 index 000000000..a0fd88396 --- /dev/null +++ b/src/code_804AFAC.c @@ -0,0 +1,84 @@ +#include "global.h" +#include "dungeon_map_access.h" +#include "structs/map.h" +#include "structs/str_dungeon.h" + +void sub_804FBE8(void) +{ + Tile *tile; + int y; + int x; + + for(x = 0; x < DUNGEON_MAX_SIZE_X; x++) + { + for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++) + { + tile = GetTileSafe(x,y); + if ((tile->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) != TERRAIN_TYPE_NORMAL) { + if ((tile->terrainType & (TERRAIN_TYPE_UNK_8 | TERRAIN_TYPE_IMPASSABLE_WALL)) != 0) { + tile->unk4 &= 0xfffd; + } + tile->unk4 &= 0xfffb; + } + if ((tile->unk4 & 1) != 0) { + tile->terrainType |= TERRAIN_TYPE_STAIRS; + tile->unk4 &= 0xfffb; + } + if ((tile->unk4 & 2) != 0) { + tile->unk4 &= 0xfffb; + } + } + } +} + +void sub_804FC74(void) +{ + Tile *tile; + int y; + int x; + + for(x = 0; x < DUNGEON_MAX_SIZE_X; x++) + { + for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++) + { + if ((GetTile(x, y)->terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) == TERRAIN_TYPE_SECONDARY) { + tile = GetTileSafe(x,y); + tile->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + tile->terrainType |= (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + } + } + } +} + +void sub_804FCCC(void) +{ + Tile *tile; + int y; + int x; + + for(x = 0; x < DUNGEON_MAX_SIZE_X; x++) + { + for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++) + { + if ((GetTile(x, y)->terrainType & TERRAIN_TYPE_IMPASSABLE_WALL) != 0) { + tile = GetTileSafe(x,y); + tile->terrainType &= ~(TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY); + } + } + } +} + +void sub_804FD10(Tile *tile) +{ + tile->terrainType = 0; + tile->unk4 = 0; + tile->room = -1; + tile->unk8 = 0; + tile->walkableNeighborFlags[CROSSABLE_TERRAIN_REGULAR] = 0; + tile->walkableNeighborFlags[CROSSABLE_TERRAIN_LIQUID] = 0; + tile->walkableNeighborFlags[CROSSABLE_TERRAIN_CREVICE] = 0; + tile->walkableNeighborFlags[CROSSABLE_TERRAIN_WALL] = 0; + tile->unkE = 0; + tile->monster = NULL; + tile->object = NULL; +} diff --git a/src/code_808333C.c b/src/code_808333C.c index 911c7021f..aeb8ec089 100644 --- a/src/code_808333C.c +++ b/src/code_808333C.c @@ -34,7 +34,7 @@ bool8 sub_8083568(s32 inX, s32 inY, u8 index) { tmp &= SPRITEOAM_MASK_X; x = sp->attrib2; - tmp2 = (0xFE << 8); + tmp2 = (0xFE00); tmp2 &= x; tmp2 |= tmp; sp->attrib2 = tmp2; diff --git a/src/dungeon_music.c b/src/dungeon_music.c index 5499750e8..27cfe1ae7 100644 --- a/src/dungeon_music.c +++ b/src/dungeon_music.c @@ -3,19 +3,14 @@ #include "constants/bg_music.h" #include "dungeon.h" #include "music.h" +#include "structs/menu.h" #include "structs/str_dungeon.h" #include "dungeon_music.h" #include "dungeon_util.h" #include "text_util.h" -struct unkStruct_202EE10 -{ - u8 fill0[0x1A]; - s16 unk1A; -}; - -extern struct unkStruct_202EE10 gUnknown_202EE10; +extern MenuInputStruct gUnknown_202EE10; extern u8 *gUnknown_80FE6F4[]; extern u8 gUnknown_810AC60; // 0xC From 70db368a342f0449f02792e3e4e70c9d14d6fa82 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 31 Dec 2023 10:06:19 -0800 Subject: [PATCH 04/18] nonmatch sub_804FD30 --- asm/code_804FD30.s | 234 --------------------------- include/structs/str_dungeon.h | 8 +- src/code_804AFAC.c | 293 ++++++++++++++++++++++++++++++++++ 3 files changed, 299 insertions(+), 236 deletions(-) diff --git a/asm/code_804FD30.s b/asm/code_804FD30.s index f92d82837..cabeb6f03 100644 --- a/asm/code_804FD30.s +++ b/asm/code_804FD30.s @@ -5,240 +5,6 @@ .text - thumb_func_start sub_804FD30 -sub_804FD30: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - movs r6, 0 -_0804FD3A: - movs r7, 0 - adds r4, r6, 0x1 -_0804FD3E: - adds r0, r6, 0 - adds r1, r7, 0 - bl GetTileSafe - bl sub_804FD10 - subs r3, r7, 0x1 - cmp r6, 0 - blt _0804FD5C - cmp r3, 0 - blt _0804FD5C - cmp r6, 0x37 - bgt _0804FD5C - cmp r3, 0x1F - ble _0804FD60 -_0804FD5C: - movs r0, 0x1 - b _0804FD62 -_0804FD60: - movs r0, 0 -_0804FD62: - cmp r0, 0 - bne _0804FE24 - cmp r4, 0 - blt _0804FD76 - cmp r3, 0 - blt _0804FD76 - cmp r4, 0x37 - bgt _0804FD76 - cmp r3, 0x1F - ble _0804FD7A -_0804FD76: - movs r0, 0x1 - b _0804FD7C -_0804FD7A: - movs r0, 0 -_0804FD7C: - cmp r0, 0 - bne _0804FE24 - cmp r4, 0 - blt _0804FD90 - cmp r3, 0 - blt _0804FD90 - cmp r4, 0x37 - bgt _0804FD90 - cmp r3, 0x1F - ble _0804FD94 -_0804FD90: - movs r0, 0x1 - b _0804FD96 -_0804FD94: - movs r0, 0 -_0804FD96: - cmp r0, 0 - bne _0804FE24 - adds r2, r7, 0x1 - cmp r4, 0 - blt _0804FDAC - cmp r2, 0 - blt _0804FDAC - cmp r4, 0x37 - bgt _0804FDAC - cmp r2, 0x1F - ble _0804FDB0 -_0804FDAC: - movs r0, 0x1 - b _0804FDB2 -_0804FDB0: - movs r0, 0 -_0804FDB2: - cmp r0, 0 - bne _0804FE24 - cmp r6, 0 - blt _0804FDC6 - cmp r2, 0 - blt _0804FDC6 - cmp r6, 0x37 - bgt _0804FDC6 - cmp r2, 0x1F - ble _0804FDCA -_0804FDC6: - movs r0, 0x1 - b _0804FDCC -_0804FDCA: - movs r0, 0 -_0804FDCC: - cmp r0, 0 - bne _0804FE24 - adds r0, r2, 0 - subs r1, r6, 0x1 - cmp r1, 0 - blt _0804FDE4 - cmp r0, 0 - blt _0804FDE4 - cmp r1, 0x37 - bgt _0804FDE4 - cmp r2, 0x1F - ble _0804FDE8 -_0804FDE4: - movs r0, 0x1 - b _0804FDEA -_0804FDE8: - movs r0, 0 -_0804FDEA: - cmp r0, 0 - bne _0804FE24 - cmp r1, 0 - blt _0804FDFE - cmp r7, 0 - blt _0804FDFE - cmp r1, 0x37 - bgt _0804FDFE - cmp r7, 0x1F - ble _0804FE02 -_0804FDFE: - movs r0, 0x1 - b _0804FE04 -_0804FE02: - movs r0, 0 -_0804FE04: - cmp r0, 0 - bne _0804FE24 - adds r0, r3, 0 - cmp r1, 0 - blt _0804FE1A - cmp r0, 0 - blt _0804FE1A - cmp r1, 0x37 - bgt _0804FE1A - cmp r3, 0x1F - ble _0804FE1E -_0804FE1A: - movs r0, 0x1 - b _0804FE20 -_0804FE1E: - movs r0, 0 -_0804FE20: - cmp r0, 0 - beq _0804FE34 -_0804FE24: - adds r0, r6, 0 - adds r1, r7, 0 - bl GetTileSafe - ldrh r2, [r0] - movs r1, 0x10 - orrs r1, r2 - strh r1, [r0] -_0804FE34: - adds r7, 0x1 - cmp r7, 0x1F - ble _0804FD3E - adds r6, 0x1 - cmp r6, 0x37 - bgt _0804FE42 - b _0804FD3A -_0804FE42: - ldr r3, _0804FEB4 - ldr r1, [r3] - ldr r0, _0804FEB8 - adds r2, r1, r0 - ldr r0, _0804FEBC - strh r0, [r2] - ldr r2, _0804FEC0 - adds r1, r2 - movs r0, 0x1 - negs r0, r0 - strh r0, [r1] - movs r6, 0 - mov r8, r3 - ldr r1, _0804FEC4 -_0804FE5E: - adds r5, r1, 0 - movs r4, 0 - movs r7, 0x7 -_0804FE64: - mov r2, r8 - ldr r0, [r2] - adds r0, r5 - adds r0, r4 - str r1, [sp] - bl sub_804FD10 - adds r4, 0x18 - subs r7, 0x1 - ldr r1, [sp] - cmp r7, 0 - bge _0804FE64 - adds r1, 0xC0 - adds r6, 0x1 - cmp r6, 0x7 - ble _0804FE5E - ldr r0, _0804FEB4 - ldr r1, [r0] - ldr r2, _0804FEC8 - adds r1, r2 - movs r2, 0 - strh r2, [r1] - movs r6, 0 - adds r4, r0, 0 - ldr r3, _0804FECC -_0804FE96: - ldr r0, [r4] - lsls r1, r6, 2 - adds r0, r3 - adds r0, r1 - ldr r0, [r0] - str r2, [r0] - adds r6, 0x1 - cmp r6, 0x3F - ble _0804FE96 - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0804FEB4: .4byte gDungeon -_0804FEB8: .4byte 0x0000e21c -_0804FEBC: .4byte 0x0000ffff -_0804FEC0: .4byte 0x0000e21e -_0804FEC4: .4byte 0x0000e27c -_0804FEC8: .4byte 0x00003904 -_0804FECC: .4byte 0x0001371c - thumb_func_end sub_804FD30 - thumb_func_start sub_804FED0 sub_804FED0: push {r4-r7,lr} diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 93c600c6e..0cf9ae4b7 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -150,7 +150,9 @@ typedef struct Dungeon u8 fill3A10[0x3A14 - 0x3A12]; /* 0x3A14 */ s16 bossBattleIndex; /* 0x3A18 */ Tile tiles[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X]; - u8 fillE218[0xE220 - 0xE218]; + u8 fillE218[0xE21C - 0xE218]; + u16 unkE21C; + u16 unkE21E; Position unkE220[4]; u8 unkE230[0xE23C - 0xE230]; s16 unkE23C; // x coord of some kind @@ -169,7 +171,9 @@ typedef struct Dungeon /* 0xE277 */ u8 mudSportTurns; /* 0xE278 */ u8 waterSportTurns; /* 0xE279 */ bool8 nullifyWeather; // Air Lock and Cloud Nine toggle this to disable weather effects - u8 fillE27A[0xE8C0 - 0xE27A]; + u8 fillE27A[0xE27C - 0xE27A]; + /* 0xE27C */ Tile unkE27C[8][8]; + /* 0xE87C */ u8 fillE87C[68]; /* 0xE8C0 */ Tile *tilePointers[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X]; u8 unk104C0; /* 0x104C4 */ RoomData roomData[MAX_ROOM_COUNT]; diff --git a/src/code_804AFAC.c b/src/code_804AFAC.c index a0fd88396..1e4eca2f9 100644 --- a/src/code_804AFAC.c +++ b/src/code_804AFAC.c @@ -82,3 +82,296 @@ void sub_804FD10(Tile *tile) tile->monster = NULL; tile->object = NULL; } + +bool8 static inline boundsCheck(s32 x, s32 y) +{ + if ((((x < 0 || (y < 0)) || (DUNGEON_MAX_SIZE_X <= x)) || (DUNGEON_MAX_SIZE_Y <= y))) + { + return TRUE; + } + else + return FALSE; +} + +// https://decomp.me/scratch/w591w (98.17% matching - Seth) +// r6 and r7 are swapped +#ifdef NONMATCHING +void sub_804FD30(void) +{ + int x; + int y; + + for(x = 0; x < DUNGEON_MAX_SIZE_X; x++) + { + for(y = 0; y < DUNGEON_MAX_SIZE_Y; y++) + { + sub_804FD10(GetTileSafe(x,y)); + + if ((boundsCheck(x, y - 1)) || + (boundsCheck(x + 1, y - 1)) || + (boundsCheck(x + 1, y - 1)) || + (boundsCheck(x + 1, y + 1)) || + (boundsCheck(x, y + 1)) || + (boundsCheck(x - 1, y + 1)) || + (boundsCheck(x - 1, y)) || + (boundsCheck(x - 1, y - 1))) + { + GetTileSafe(x,y)->terrainType |= TERRAIN_TYPE_IMPASSABLE_WALL; + } + } + } + + gDungeon->unkE21C = -1; + gDungeon->unkE21E = -1; + + for(x = 0; x < 8; x++) + { + for(y = 0; y < 8; y++) + { + sub_804FD10(&gDungeon->unkE27C[x][y]); + } + } + + gDungeon->unk3904 = 0; + for(x = 0; x < 0x40; x++) + { + gDungeon->unk1371C[x]->type = 0; + } +} + #else +NAKED +void sub_804FD30(void) +{ + asm_unified( + "\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tsub sp, 0x4\n" + "\tmovs r6, 0\n" +"_0804FD3A:\n" + "\tmovs r7, 0\n" + "\tadds r4, r6, 0x1\n" +"_0804FD3E:\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r7, 0\n" + "\tbl GetTileSafe\n" + "\tbl sub_804FD10\n" + "\tsubs r3, r7, 0x1\n" + "\tcmp r6, 0\n" + "\tblt _0804FD5C\n" + "\tcmp r3, 0\n" + "\tblt _0804FD5C\n" + "\tcmp r6, 0x37\n" + "\tbgt _0804FD5C\n" + "\tcmp r3, 0x1F\n" + "\tble _0804FD60\n" +"_0804FD5C:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FD62\n" +"_0804FD60:\n" + "\tmovs r0, 0\n" +"_0804FD62:\n" + "\tcmp r0, 0\n" + "\tbne _0804FE24\n" + "\tcmp r4, 0\n" + "\tblt _0804FD76\n" + "\tcmp r3, 0\n" + "\tblt _0804FD76\n" + "\tcmp r4, 0x37\n" + "\tbgt _0804FD76\n" + "\tcmp r3, 0x1F\n" + "\tble _0804FD7A\n" +"_0804FD76:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FD7C\n" +"_0804FD7A:\n" + "\tmovs r0, 0\n" +"_0804FD7C:\n" + "\tcmp r0, 0\n" + "\tbne _0804FE24\n" + "\tcmp r4, 0\n" + "\tblt _0804FD90\n" + "\tcmp r3, 0\n" + "\tblt _0804FD90\n" + "\tcmp r4, 0x37\n" + "\tbgt _0804FD90\n" + "\tcmp r3, 0x1F\n" + "\tble _0804FD94\n" +"_0804FD90:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FD96\n" +"_0804FD94:\n" + "\tmovs r0, 0\n" +"_0804FD96:\n" + "\tcmp r0, 0\n" + "\tbne _0804FE24\n" + "\tadds r2, r7, 0x1\n" + "\tcmp r4, 0\n" + "\tblt _0804FDAC\n" + "\tcmp r2, 0\n" + "\tblt _0804FDAC\n" + "\tcmp r4, 0x37\n" + "\tbgt _0804FDAC\n" + "\tcmp r2, 0x1F\n" + "\tble _0804FDB0\n" +"_0804FDAC:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FDB2\n" +"_0804FDB0:\n" + "\tmovs r0, 0\n" +"_0804FDB2:\n" + "\tcmp r0, 0\n" + "\tbne _0804FE24\n" + "\tcmp r6, 0\n" + "\tblt _0804FDC6\n" + "\tcmp r2, 0\n" + "\tblt _0804FDC6\n" + "\tcmp r6, 0x37\n" + "\tbgt _0804FDC6\n" + "\tcmp r2, 0x1F\n" + "\tble _0804FDCA\n" +"_0804FDC6:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FDCC\n" +"_0804FDCA:\n" + "\tmovs r0, 0\n" +"_0804FDCC:\n" + "\tcmp r0, 0\n" + "\tbne _0804FE24\n" + "\tadds r0, r2, 0\n" + "\tsubs r1, r6, 0x1\n" + "\tcmp r1, 0\n" + "\tblt _0804FDE4\n" + "\tcmp r0, 0\n" + "\tblt _0804FDE4\n" + "\tcmp r1, 0x37\n" + "\tbgt _0804FDE4\n" + "\tcmp r2, 0x1F\n" + "\tble _0804FDE8\n" +"_0804FDE4:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FDEA\n" +"_0804FDE8:\n" + "\tmovs r0, 0\n" +"_0804FDEA:\n" + "\tcmp r0, 0\n" + "\tbne _0804FE24\n" + "\tcmp r1, 0\n" + "\tblt _0804FDFE\n" + "\tcmp r7, 0\n" + "\tblt _0804FDFE\n" + "\tcmp r1, 0x37\n" + "\tbgt _0804FDFE\n" + "\tcmp r7, 0x1F\n" + "\tble _0804FE02\n" +"_0804FDFE:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FE04\n" +"_0804FE02:\n" + "\tmovs r0, 0\n" +"_0804FE04:\n" + "\tcmp r0, 0\n" + "\tbne _0804FE24\n" + "\tadds r0, r3, 0\n" + "\tcmp r1, 0\n" + "\tblt _0804FE1A\n" + "\tcmp r0, 0\n" + "\tblt _0804FE1A\n" + "\tcmp r1, 0x37\n" + "\tbgt _0804FE1A\n" + "\tcmp r3, 0x1F\n" + "\tble _0804FE1E\n" +"_0804FE1A:\n" + "\tmovs r0, 0x1\n" + "\tb _0804FE20\n" +"_0804FE1E:\n" + "\tmovs r0, 0\n" +"_0804FE20:\n" + "\tcmp r0, 0\n" + "\tbeq _0804FE34\n" +"_0804FE24:\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r7, 0\n" + "\tbl GetTileSafe\n" + "\tldrh r2, [r0]\n" + "\tmovs r1, 0x10\n" + "\torrs r1, r2\n" + "\tstrh r1, [r0]\n" +"_0804FE34:\n" + "\tadds r7, 0x1\n" + "\tcmp r7, 0x1F\n" + "\tble _0804FD3E\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x37\n" + "\tbgt _0804FE42\n" + "\tb _0804FD3A\n" +"_0804FE42:\n" + "\tldr r3, _0804FEB4\n" + "\tldr r1, [r3]\n" + "\tldr r0, _0804FEB8\n" + "\tadds r2, r1, r0\n" + "\tldr r0, _0804FEBC\n" + "\tstrh r0, [r2]\n" + "\tldr r2, _0804FEC0\n" + "\tadds r1, r2\n" + "\tmovs r0, 0x1\n" + "\tnegs r0, r0\n" + "\tstrh r0, [r1]\n" + "\tmovs r6, 0\n" + "\tmov r8, r3\n" + "\tldr r1, _0804FEC4\n" +"_0804FE5E:\n" + "\tadds r5, r1, 0\n" + "\tmovs r4, 0\n" + "\tmovs r7, 0x7\n" +"_0804FE64:\n" + "\tmov r2, r8\n" + "\tldr r0, [r2]\n" + "\tadds r0, r5\n" + "\tadds r0, r4\n" + "\tstr r1, [sp]\n" + "\tbl sub_804FD10\n" + "\tadds r4, 0x18\n" + "\tsubs r7, 0x1\n" + "\tldr r1, [sp]\n" + "\tcmp r7, 0\n" + "\tbge _0804FE64\n" + "\tadds r1, 0xC0\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x7\n" + "\tble _0804FE5E\n" + "\tldr r0, _0804FEB4\n" + "\tldr r1, [r0]\n" + "\tldr r2, _0804FEC8\n" + "\tadds r1, r2\n" + "\tmovs r2, 0\n" + "\tstrh r2, [r1]\n" + "\tmovs r6, 0\n" + "\tadds r4, r0, 0\n" + "\tldr r3, _0804FECC\n" +"_0804FE96:\n" + "\tldr r0, [r4]\n" + "\tlsls r1, r6, 2\n" + "\tadds r0, r3\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tstr r2, [r0]\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x3F\n" + "\tble _0804FE96\n" + "\tadd sp, 0x4\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0804FEB4: .4byte gDungeon\n" +"_0804FEB8: .4byte 0x0000e21c\n" +"_0804FEBC: .4byte 0x0000ffff\n" +"_0804FEC0: .4byte 0x0000e21e\n" +"_0804FEC4: .4byte 0x0000e27c\n" +"_0804FEC8: .4byte 0x00003904\n" +"_0804FECC: .4byte 0x0001371c\n"); + #endif +} From cac5877f76a4092828ae0b0b8079069f30e7d4d7 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 31 Dec 2023 10:56:24 -0800 Subject: [PATCH 05/18] Decomp sub_804FED0 --- asm/code_804FD30.s | 31 ------------------------------- src/code_804AFAC.c | 22 +++++++++++++++++++--- 2 files changed, 19 insertions(+), 34 deletions(-) diff --git a/asm/code_804FD30.s b/asm/code_804FD30.s index cabeb6f03..37a33e990 100644 --- a/asm/code_804FD30.s +++ b/asm/code_804FD30.s @@ -5,37 +5,6 @@ .text - thumb_func_start sub_804FED0 -sub_804FED0: - push {r4-r7,lr} - adds r7, r0, 0 - adds r5, r1, 0 - movs r6, 0 - b _0804FEFA -_0804FEDA: - adds r0, r5, 0 - bl DungeonRandInt - adds r4, r0, 0 - adds r0, r5, 0 - bl DungeonRandInt - lsls r4, 2 - adds r4, r7 - ldr r2, [r4] - lsls r0, 2 - adds r0, r7 - ldr r1, [r0] - str r1, [r4] - str r2, [r0] - adds r6, 0x1 -_0804FEFA: - lsls r0, r5, 1 - cmp r6, r0 - blt _0804FEDA - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_804FED0 - thumb_func_start sub_804FF08 sub_804FF08: push {r4-r7,lr} diff --git a/src/code_804AFAC.c b/src/code_804AFAC.c index 1e4eca2f9..f46f2b1f1 100644 --- a/src/code_804AFAC.c +++ b/src/code_804AFAC.c @@ -1,6 +1,6 @@ #include "global.h" #include "dungeon_map_access.h" -#include "structs/map.h" +#include "dungeon_random.h" #include "structs/str_dungeon.h" void sub_804FBE8(void) @@ -138,7 +138,7 @@ void sub_804FD30(void) gDungeon->unk1371C[x]->type = 0; } } - #else +#else NAKED void sub_804FD30(void) { @@ -373,5 +373,21 @@ void sub_804FD30(void) "_0804FEC4: .4byte 0x0000e27c\n" "_0804FEC8: .4byte 0x00003904\n" "_0804FECC: .4byte 0x0001371c\n"); - #endif +} +#endif + +void sub_804FED0(s32 *param_1, s32 param_2) +{ + int idx1; + int idx2; + s32 temp; + int counter; + + for (counter = 0; counter < param_2 << 1; counter++) { + idx1 = DungeonRandInt(param_2); + idx2 = DungeonRandInt(param_2); + temp = param_1[idx1]; + param_1[idx1] = param_1[idx2]; + param_1[idx2] = temp; + } } From 367bfdb81a5d278ed4fc79efeaf13a84675c17bd Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 1 Jan 2024 16:27:53 -0800 Subject: [PATCH 06/18] slight cleanup of struct and documentation --- include/structs/map.h | 2 +- include/structs/str_dungeon.h | 5 +---- src/dungeon_map_access_1.c | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/structs/map.h b/include/structs/map.h index 30aa81524..f165564c2 100644 --- a/include/structs/map.h +++ b/include/structs/map.h @@ -4,7 +4,7 @@ #include "structs/dungeon_entity.h" #include "structs/str_position.h" -#define MAX_ROOM_COUNT 24 // Empirical max, not sure if the code supports any more. +#define MAX_ROOM_COUNT 32 // Empirical max, not sure if the code supports any more. #define CORRIDOR_ROOM 0xFF enum TerrainType diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 0cf9ae4b7..544acde64 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -177,11 +177,8 @@ typedef struct Dungeon /* 0xE8C0 */ Tile *tilePointers[DUNGEON_MAX_SIZE_Y][DUNGEON_MAX_SIZE_X]; u8 unk104C0; /* 0x104C4 */ RoomData roomData[MAX_ROOM_COUNT]; - u8 fill10764[0x10844 - 0x10764]; /* 0x10844 */ s16 naturalJunctionListCounts[MAX_ROOM_COUNT]; - u8 fill10874[0x10884 - 0x10874]; - /* 0x10884 */ Position naturalJunctionList[MAX_ROOM_COUNT][32]; // Arrays of room exits for each room. - u8 fill11444[0x11884 - 0x11484]; + /* 0x10884 */ Position naturalJunctionList[MAX_ROOM_COUNT][MAX_ROOM_COUNT]; // Arrays of room exits for each room. u8 unk11884[0x1194]; u8 fill12A18[0x12C24 - 0x12A18]; u8 unk12C24[0x930]; diff --git a/src/dungeon_map_access_1.c b/src/dungeon_map_access_1.c index 7e6ef6c1e..93a0cb76f 100644 --- a/src/dungeon_map_access_1.c +++ b/src/dungeon_map_access_1.c @@ -50,7 +50,7 @@ void sub_804AAD4(void) s32 maxRooms; s32 index; - for(index = 0; index < 0x20; index++) + for(index = 0; index < MAX_ROOM_COUNT; index++) { gDungeon->roomData[index].unk0 = 0; gDungeon->roomData[index].unk1 = 0; @@ -90,7 +90,7 @@ void sub_804AAD4(void) } - for(index = 0; index < 0x20; index++) + for(index = 0; index < MAX_ROOM_COUNT; index++) { room2 = &gDungeon->roomData[index]; if(room2 ->unk0 != 0) From 5b9a0c743b333b0a32268d0b10911c8e193b341c Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 6 Jan 2024 09:03:20 -0800 Subject: [PATCH 07/18] Create struct for Traps and clean up code with it --- include/dungeon_util.h | 4 +++- include/structs/str_traps.h | 12 ++++++++++++ src/code_8045A00.c | 3 +-- src/code_8075708.c | 20 ++++++++++---------- src/dungeon_util.c | 9 +++++---- src/status_actions.c | 4 ++-- 6 files changed, 33 insertions(+), 19 deletions(-) create mode 100644 include/structs/str_traps.h diff --git a/include/dungeon_util.h b/include/dungeon_util.h index ebe1b74d3..436182755 100644 --- a/include/dungeon_util.h +++ b/include/dungeon_util.h @@ -4,13 +4,15 @@ #include "constants/direction.h" #include "structs/dungeon_entity.h" #include "structs/str_position.h" +#include "structs/str_traps.h" extern const Position gAdjacentTileOffsets[NUM_DIRECTIONS]; bool8 EntityExists(Entity *pokemon); u32 GetEntityType(Entity *entity); u8 GetEntityRoom(Entity *entity); -EntityInfo *GetTrapData(Entity *entity); +Trap *GetTrapData(Entity *entity); +Trap* GetTrapData_1(Entity *entity); Item *GetItemData(Entity *entity); struct Tile *GetTileAtEntitySafe(Entity *entity); Item *GetItemData_1(Entity *entity); diff --git a/include/structs/str_traps.h b/include/structs/str_traps.h new file mode 100644 index 000000000..1c3d4f9e4 --- /dev/null +++ b/include/structs/str_traps.h @@ -0,0 +1,12 @@ +#ifndef GUARD_STR_TRAPS_H +#define GUARD_STR_TRAPS_H + +#include "constants/trap.h" + +typedef struct Trap +{ + /* 0x0 */ u8 id; + /* 0x1 */ u8 unk1; +} Trap; + +#endif // GUARD_STR_TRAPS_H diff --git a/src/code_8045A00.c b/src/code_8045A00.c index 98f40c2cc..0570eb248 100644 --- a/src/code_8045A00.c +++ b/src/code_8045A00.c @@ -12,7 +12,6 @@ extern struct unkStruct_8090F58 gUnknown_80F699C; extern struct unkStruct_8090F58 gUnknown_80F69A8; extern struct unkStruct_8090F58 gUnknown_80F6990; -extern EntityInfo* GetTrapData_1(Entity *entity); extern void SetMessageArgument_2(u8 *, EntityInfo *, u32); extern void GetTrapName(u8 *, u8); extern bool8 IsNotSpecialItem(u8 id); @@ -76,7 +75,7 @@ void SetMessageArgument(char *buffer, Entity *entity, u32 param_3) sub_8045BF8(buffer, GetItemData_1(entity)); break; case ENTITY_TRAP: - GetTrapName(buffer, *((u8 *)GetTrapData_1(entity))); + GetTrapName(buffer, GetTrapData_1(entity)->id); break; default: strcpy(buffer, *gUnknown_80FE6F4); diff --git a/src/code_8075708.c b/src/code_8075708.c index e599f96a7..33c331df6 100644 --- a/src/code_8075708.c +++ b/src/code_8075708.c @@ -58,7 +58,7 @@ void sub_8075708(Entity *entity) bool8 bVar1; bool8 bVar2; Tile *tile; - u8 *trapData; + Trap *trapData; Entity *trap; EntityInfo *info; @@ -78,7 +78,7 @@ void sub_8075708(Entity *entity) switch(GetEntityType(trap)) { case ENTITY_TRAP: - trapData = (u8 *)GetTrapData(trap); + trapData = GetTrapData(trap); bVar1 = FALSE; bVar2 = FALSE; if ((IQSkillIsEnabled(entity, IQ_TRAP_SEER)) && (!trap->isVisible)) { @@ -87,16 +87,16 @@ void sub_8075708(Entity *entity) bVar2 = TRUE; } - if (trapData[1] == 0) { + if (trapData->unk1 == 0) { if (!trap->isVisible) goto _080757EC; if (info->isNotTeamMember) goto _080757EC; } else { - if (trapData[1] == 1) { + if (trapData->unk1 == 1) { if (!info->isNotTeamMember) goto _080757EC; goto _ret; } - if ((trapData[1] == 2) && (!info->isNotTeamMember)) { + if ((trapData->unk1 == 2) && (!info->isNotTeamMember)) { bVar1 = TRUE; } _080757EC: @@ -126,7 +126,7 @@ u32 sub_8075818(Entity *entity) EntityInfo *entityInfo; Entity *subEntity; Item *item; - u8 *trapData; // TODO: turn into struct when more research is done.. + Trap *trapData; // TODO: turn into struct when more research is done.. u8 r1; entityInfo = entity->info; @@ -147,23 +147,23 @@ u32 sub_8075818(Entity *entity) case ENTITY_UNK_5: break; case ENTITY_TRAP: - trapData = (u8*) GetTrapData(subEntity); + trapData = GetTrapData(subEntity); r1 = 0; - if(trapData[1] == 0) + if(trapData->unk1 == 0) { if(!subEntity->isVisible || entityInfo->isNotTeamMember) goto flag_check; else goto error; } - else if(trapData[1] == 1) + else if(trapData->unk1 == 1) { if(!entityInfo->isNotTeamMember) goto flag_check; else goto error; } - else if(trapData[1] == 2) + else if(trapData->unk1 == 2) { if(!entityInfo->isNotTeamMember) r1 = 1; diff --git a/src/dungeon_util.c b/src/dungeon_util.c index 43524065a..5c422d85c 100644 --- a/src/dungeon_util.c +++ b/src/dungeon_util.c @@ -3,6 +3,7 @@ #include "dungeon_map_access.h" #include "structs/str_dungeon.h" +#include "structs/str_traps.h" extern u8 gUnknown_202EE70[0x6]; extern u8 gUnknown_202EE76[0x10]; @@ -43,9 +44,9 @@ u8 GetEntityRoom(Entity *entity) return entity->room; } -EntityInfo* GetTrapData(Entity *entity) +Trap* GetTrapData(Entity *entity) { - return entity->info; + return (Trap *)entity->info; } Item* GetItemData(Entity *entity) @@ -53,9 +54,9 @@ Item* GetItemData(Entity *entity) return (Item *)entity->info; } -EntityInfo* GetTrapData_1(Entity *entity) +Trap* GetTrapData_1(Entity *entity) { - return entity->info; + return (Trap *)entity->info; } Item* GetItemData_1(Entity *entity) diff --git a/src/status_actions.c b/src/status_actions.c index 532e772e8..ba6fee113 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -1015,7 +1015,7 @@ bool8 TrapbustOrbAction(Entity * pokemon,Entity * target) { struct Tile *tile; Entity *object; - u8 *trapData; + Trap *trapData; s32 bottomRightCornerX, bottomRightCornerY; s32 xCoord, yCoord; struct RoomData *room; @@ -1047,7 +1047,7 @@ bool8 TrapbustOrbAction(Entity * pokemon,Entity * target) for (yCoord = bottomRightCornerY; yCoord <= topLeftCornerY; yCoord++) { object = GetTileSafe(xCoord, yCoord)->object; if (((object != 0) && (GetEntityType(object) == ENTITY_TRAP)) && - (trapData = (u8*)GetTrapData(object), trapData[0] != 0x11)) { + (trapData = GetTrapData(object), trapData->id != TRAP_WONDER_TILE)) { sp = yCoord << 0x10 | (u16)xCoord; sub_807FE04(&sp, 0); foundTrap = TRUE; From 3635d87b57f1613871035fa1ca9d0cfb61d6bbbc Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 6 Jan 2024 10:23:18 -0800 Subject: [PATCH 08/18] decomp few more trap funcs and fix some names --- asm/code_80521D0.s | 4 +- asm/code_807FCD4.s | 159 ---------------------------------- include/constants/trap.h | 5 +- include/structs/str_dungeon.h | 5 +- include/trap.h | 1 + src/code_807E5AC.c | 8 +- src/status_actions.c | 9 +- src/trap.c | 75 ++++++++++++++++ 8 files changed, 91 insertions(+), 175 deletions(-) diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index d2e654234..da8792a7d 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -4665,7 +4665,7 @@ _08054CFE: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl sub_805C3DC + bl TrapperOrbAction b _080554BA _08054D0C: adds r0, r7, 0 @@ -4800,7 +4800,7 @@ _08054E0C: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl TrapperOrbAction + bl SpikesMoveAction b _080554BA _08054E1A: adds r0, r7, 0 diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index d183715e9..274dcb8a8 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,165 +5,6 @@ .text - thumb_func_start sub_807FCD4 -sub_807FCD4: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r7, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - movs r1, 0 - ldrsh r0, [r7, r1] - movs r2, 0x2 - ldrsh r1, [r7, r2] - bl GetTileSafe - adds r6, r0, 0 - cmp r5, 0x13 - bls _0807FD12 - movs r4, 0 - b _0807FCFE -_0807FCFC: - adds r4, 0x1 -_0807FCFE: - cmp r4, 0x1D - bgt _0807FD0C - bl sub_803D6FC - adds r5, r0, 0 - cmp r5, 0x11 - beq _0807FCFC -_0807FD0C: - cmp r4, 0x1E - bne _0807FD12 - movs r5, 0x10 -_0807FD12: - ldrh r1, [r6] - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - bne _0807FD6E - ldrb r0, [r6, 0x9] - cmp r0, 0xFF - beq _0807FD6E - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _0807FD6E - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _0807FD6E - movs r4, 0x3 - ands r4, r1 - cmp r4, 0x1 - bne _0807FD6E - ldr r0, [r6, 0x14] - cmp r0, 0 - beq _0807FD60 - bl GetEntityType - cmp r0, 0x2 - bne _0807FD6E - ldr r0, [r6, 0x14] - bl GetTrapData - strb r5, [r0] - ldr r0, [r6, 0x14] - bl GetTrapData - mov r1, r8 - strb r1, [r0, 0x1] - ldr r0, [r6, 0x14] - b _0807FD74 -_0807FD60: - adds r0, r5, 0 - adds r1, r7, 0 - mov r2, r8 - bl sub_8045684 - cmp r0, 0 - bne _0807FD72 -_0807FD6E: - movs r0, 0 - b _0807FD7A -_0807FD72: - str r0, [r6, 0x14] -_0807FD74: - adds r0, 0x20 - strb r4, [r0] - movs r0, 0x1 -_0807FD7A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_807FCD4 - - thumb_func_start sub_807FD84 -sub_807FD84: - push {r4-r6,lr} - adds r6, r0, 0 - movs r5, 0 - ldr r4, _0807FD9C - ldr r0, [r4] - ldr r2, _0807FDA0 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _0807FDA4 - movs r0, 0 - b _0807FDF6 - .align 2, 0 -_0807FD9C: .4byte gDungeon -_0807FDA0: .4byte 0x00013570 -_0807FDA4: - strb r5, [r1] - ldr r2, [r4] - ldr r3, _0807FDD8 - adds r0, r2, r3 - adds r3, 0x4 - adds r1, r2, r3 - ldrb r1, [r1] - adds r3, 0x1 - adds r2, r3 - ldrb r2, [r2] - bl sub_807FCD4 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - beq _0807FDE0 - ldr r1, [r4] - ldr r0, _0807FDD8 - adds r1, r0 - ldr r0, _0807FDDC - ldr r2, [r0] - adds r0, r6, 0 - bl sub_8052364 - b _0807FDF0 - .align 2, 0 -_0807FDD8: .4byte 0x00013574 -_0807FDDC: .4byte gUnknown_80FC5F8 -_0807FDE0: - ldr r1, [r4] - ldr r2, _0807FDFC - adds r1, r2 - ldr r0, _0807FE00 - ldr r2, [r0] - adds r0, r6, 0 - bl sub_8052364 -_0807FDF0: - bl sub_8049ED4 - adds r0, r5, 0 -_0807FDF6: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0807FDFC: .4byte 0x00013574 -_0807FE00: .4byte gUnknown_80FC5FC - thumb_func_end sub_807FD84 - thumb_func_start sub_807FE04 sub_807FE04: push {r4,r5,lr} diff --git a/include/constants/trap.h b/include/constants/trap.h index df0ffc12b..56ae53f39 100644 --- a/include/constants/trap.h +++ b/include/constants/trap.h @@ -22,7 +22,8 @@ enum TrapID TRAP_CHESTNUT_TRAP, TRAP_WONDER_TILE, TRAP_POKEMON_TRAP, - TRAP_SPIKE_TRAP + TRAP_SPIKE_TRAP, + NUM_TRAPS }; -#endif // GUARD_CONSTANTS_TRAP_H \ No newline at end of file +#endif // GUARD_CONSTANTS_TRAP_H diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 544acde64..329aa1348 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -187,9 +187,8 @@ typedef struct Dungeon u8 fill1356D[0x13570 - 0x1356D]; /* 0x13570 */ u8 unk13570; u8 fill13571[0x13574 - 0x13571]; - /* 0x13574 */ u16 unk13574; - /* 0x13576 */ u16 unk13576; - /* 0x13578 */ u8 unk13578; + /* 0x13574 */ Position trapPos; + /* 0x13578 */ u8 trapID; /* 0x13579 */ u8 unk13579; u8 fill1357A[0x1357C - 0x1357A]; /* 0x1357C */ Entity *teamPokemon[MAX_TEAM_MEMBERS]; diff --git a/include/trap.h b/include/trap.h index 6781e9fc2..a9a22eb97 100644 --- a/include/trap.h +++ b/include/trap.h @@ -4,5 +4,6 @@ #include "structs/str_position.h" bool8 CanLayTrap(Position *pos); +bool8 LayTrap(Position *pos, u8 trapID, u8 param_3); #endif diff --git a/src/code_807E5AC.c b/src/code_807E5AC.c index ddd05fcd8..2ad284f90 100644 --- a/src/code_807E5AC.c +++ b/src/code_807E5AC.c @@ -1,11 +1,11 @@ #include "global.h" #include "structs/str_dungeon.h" -void sub_807FC3C(Position *pos, u32 param_2, u32 param_3) +void sub_807FC3C(Position *pos, u32 trapID, u32 param_3) { - gDungeon->unk13574 = pos->x; - gDungeon->unk13576 = pos->y; - gDungeon->unk13578 = param_2; + gDungeon->trapPos.x = pos->x; + gDungeon->trapPos.y = pos->y; + gDungeon->trapID = trapID; gDungeon->unk13579 = param_3; gDungeon->unk13570 = 1; } diff --git a/src/status_actions.c b/src/status_actions.c index ba6fee113..28604438a 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -86,7 +86,6 @@ extern void SqueezedStatusTarget(Entity *, Entity *, s32, bool32); extern void sub_806F324(Entity *, s32, u32, u32); extern bool8 sub_805755C(Entity* pokemon,u16 moveID); extern void sub_80783C4(Entity *, Entity *, u32); -extern bool8 sub_807FCD4(Position *, u32, u8); extern void sub_807CD9C(Entity *, Entity *, u8 direction); @@ -309,7 +308,7 @@ bool8 sub_805B214(Entity * pokemon,Entity * target,Move *move, s32 param_4) return TRUE; } -bool8 TrapperOrbAction(Entity * pokemon, Entity * target) +bool8 SpikesMoveAction(Entity * pokemon, Entity * target) { bool8 trapLaid; u8 uVar2; @@ -322,7 +321,7 @@ bool8 TrapperOrbAction(Entity * pokemon, Entity * target) if (isNotTeamMember) { uVar2 = 2; } - if (sub_807FCD4(&pokemon->pos,0x13,uVar2) != 0) { + if (LayTrap(&pokemon->pos,TRAP_SPIKE_TRAP,uVar2) != 0) { trapLaid = TRUE; } else @@ -1214,11 +1213,11 @@ bool8 FillInOrbAction(Entity *pokemon,Entity *target) } } -bool8 sub_805C3DC(Entity *pokemon, Entity *target) +bool8 TrapperOrbAction(Entity *pokemon, Entity *target) { u32 var; var = (target->info->isNotTeamMember ? 2 : 1); - sub_807FC3C(&target->pos, 0x14, var); + sub_807FC3C(&target->pos, NUM_TRAPS, var); return TRUE; } diff --git a/src/trap.c b/src/trap.c index 768f38d1b..c57c044ef 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1,10 +1,20 @@ #include "global.h" +#include "constants/trap.h" +#include "structs/str_dungeon.h" #include "trap.h" #include "dungeon_map_access.h" #include "dungeon_util.h" #include "structs/map.h" +extern u8 *gUnknown_80FC5FC[]; +extern u8 *gUnknown_80FC5F8[]; +void sub_8052364(Entity *, Position *, u8 *); +void sub_8049ED4(void); + +u8 sub_803D6FC(void); +Entity *sub_8045684(u8, Position *, u8); + bool8 CanLayTrap(Position *pos) { struct Tile *tile = GetTileSafe(pos->x, pos->y); @@ -25,3 +35,68 @@ bool8 CanLayTrap(Position *pos) } return TRUE; } + +bool8 LayTrap(Position *pos, u8 trapID, u8 param_3) +{ + Tile *tile; + Entity *entity; + int counter; + u16 terrainType; + + tile = GetTileSafe(pos->x, pos->y); + if (TRAP_SPIKE_TRAP < trapID) { + counter = 0; + while ((counter < 0x1e && (trapID = sub_803D6FC(), trapID == TRAP_WONDER_TILE))) { + counter++; + } + if (counter == 0x1e) { + trapID = TRAP_CHESTNUT_TRAP; + } + } + terrainType = tile->terrainType; + if ((terrainType & TERRAIN_TYPE_STAIRS) != 0) goto _0807FD6E; + if (tile->room == CORRIDOR_ROOM) goto _0807FD6E; + if ((terrainType & TERRAIN_TYPE_NATURAL_JUNCTION) != 0) goto _0807FD6E; + if ((terrainType & TERRAIN_TYPE_SHOP) != 0) goto _0807FD6E; + if (((terrainType & (TERRAIN_TYPE_NORMAL | TERRAIN_TYPE_SECONDARY)) != TERRAIN_TYPE_NORMAL)) goto _0807FD6E; + if (tile->object != NULL) { + if (GetEntityType(tile->object) != ENTITY_TRAP) goto _0807FD6E; + GetTrapData(tile->object)->id = trapID; + GetTrapData(tile->object)->unk1 = param_3; + tile->object->isVisible = TRUE; + } + else { + entity = sub_8045684(trapID,pos,param_3); + if (entity == NULL) +_0807FD6E: + return FALSE; + else + { + tile->object = entity; + tile->object->isVisible = TRUE; + } + } + return TRUE; +} + +bool8 sub_807FD84(Entity *entity) +{ + bool8 flag; + flag = FALSE; + + if (gDungeon->unk13570 == 0) { + return FALSE; + } + else { + gDungeon->unk13570 = 0; + flag = LayTrap(&gDungeon->trapPos,gDungeon->trapID,gDungeon->unk13579); + if (flag) { + sub_8052364(entity,&gDungeon->trapPos,*gUnknown_80FC5F8); // A trap was laid! + } + else { + sub_8052364(entity,&gDungeon->trapPos,*gUnknown_80FC5FC); // A trap can't be laid here. + } + sub_8049ED4(); + } + return flag; +} From 4051053fd85439d438350dd5b188bc3187bb5d51 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 6 Jan 2024 21:12:17 -0800 Subject: [PATCH 09/18] More work on trap funcs --- asm/code_80521D0.s | 4 +- asm/code_807FCD4.s | 562 +++------------------------------- include/status_actions.h | 2 +- include/structs/str_dungeon.h | 5 +- include/trap.h | 1 + src/code_8045A00.c | 2 +- src/status_actions.c | 13 +- src/trap.c | 258 +++++++++++++++- 8 files changed, 309 insertions(+), 538 deletions(-) diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index da8792a7d..9d59f90e9 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -5094,7 +5094,7 @@ _08055058: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl sub_805BEAC + bl PetrifyOrbAction b _080554BA _08055066: adds r0, r7, 0 @@ -5264,7 +5264,7 @@ _080551AC: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl sub_805C128 + bl InvisifyOrbAction b _080554BA _080551BA: adds r0, r7, 0 diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index 274dcb8a8..05cfc6b56 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,468 +5,8 @@ .text - thumb_func_start sub_807FE04 -sub_807FE04: - push {r4,r5,lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - movs r1, 0 - ldrsh r0, [r2, r1] - movs r3, 0x2 - ldrsh r1, [r2, r3] - bl GetTileSafe - adds r4, r0, 0 - ldr r0, [r4, 0x14] - cmp r0, 0 - beq _0807FE3C - bl GetEntityType - cmp r0, 0x2 - bne _0807FE3C - ldr r1, [r4, 0x14] - movs r0, 0 - str r0, [r1] - str r0, [r4, 0x14] - cmp r5, 0 - beq _0807FE38 - bl sub_8049ED4 -_0807FE38: - movs r0, 0x1 - b _0807FE3E -_0807FE3C: - movs r0, 0 -_0807FE3E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807FE04 - - thumb_func_start sub_807FE44 -sub_807FE44: - push {r4,r5,lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r5, r1, 24 - movs r1, 0 - ldrsh r0, [r2, r1] - movs r3, 0x2 - ldrsh r1, [r2, r3] - bl GetTile - adds r4, r0, 0 - ldr r0, [r4, 0x14] - cmp r0, 0 - beq _0807FE7C - bl GetEntityType - cmp r0, 0x2 - bne _0807FE7C - ldr r0, [r4, 0x14] - adds r0, 0x20 - movs r1, 0x1 - strb r1, [r0] - cmp r5, 0 - beq _0807FE78 - bl sub_8049ED4 -_0807FE78: - movs r0, 0x1 - b _0807FE7E -_0807FE7C: - movs r0, 0 -_0807FE7E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_807FE44 - - thumb_func_start GetTrapName -GetTrapName: - push {lr} - lsls r1, 24 - ldr r2, _0807FE98 - lsrs r1, 22 - adds r1, r2 - ldr r1, [r1] - bl strcpy - pop {r0} - bx r0 - .align 2, 0 -_0807FE98: .4byte gTrapNames - thumb_func_end GetTrapName - - thumb_func_start sub_807FE9C -sub_807FE9C: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - adds r5, r0, 0 - mov r9, r1 - str r2, [sp] - lsls r3, 24 - lsrs r6, r3, 24 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r3, 0x2 - ldrsh r1, [r1, r3] - bl GetTileSafe - str r0, [sp, 0x4] - ldr r0, [r0, 0x14] - mov r10, r0 - movs r1, 0 - str r1, [sp, 0x8] - cmp r0, 0 - bne _0807FECE - b _080801B4 -_0807FECE: - bl GetEntityType - cmp r0, 0x2 - beq _0807FED8 - b _080801B4 -_0807FED8: - mov r0, r10 - bl GetTrapData - mov r8, r0 - ldr r0, _0807FF58 - mov r2, r8 - ldrb r1, [r2] - bl GetTrapName - ldr r3, [sp, 0x4] - ldr r4, [r3, 0x10] - cmp r4, 0 - beq _0807FEFE - adds r0, r4, 0 - bl GetEntityType - cmp r0, 0x1 - beq _0807FEFE - movs r4, 0 -_0807FEFE: - mov r1, r10 - adds r1, 0x20 - ldrb r0, [r1] - str r0, [sp, 0xC] - movs r0, 0x1 - strb r0, [r1] - cmp r4, 0 - beq _0807FF96 - adds r0, r4, 0 - bl sub_806A1E8 - cmp r6, 0 - beq _0807FF96 - mov r1, r8 - ldrb r0, [r1] - cmp r0, 0x11 - beq _0807FF96 - movs r0, 0x64 - bl DungeonRandInt - adds r7, r0, 0 - movs r6, 0 - adds r0, r4, 0 - movs r1, 0x1C - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _0807FF3C - ldr r0, _0807FF5C - ldr r6, [r0] -_0807FF3C: - ldr r2, [sp, 0xC] - cmp r2, 0x1 - beq _0807FF50 - ldr r0, _0807FF60 - ldr r0, [r0] - ldr r3, _0807FF64 - adds r0, r3 - ldrb r0, [r0] - cmp r0, 0 - beq _0807FF68 -_0807FF50: - cmp r7, 0 - bge _0807FF70 - b _0807FF6C - .align 2, 0 -_0807FF58: .4byte gAvailablePokemonNames -_0807FF5C: .4byte gUnknown_80FDB5C -_0807FF60: .4byte gDungeon -_0807FF64: .4byte 0x0001820f -_0807FF68: - cmp r7, 0xE - bgt _0807FF70 -_0807FF6C: - ldr r0, _0807FFD8 - ldr r6, [r0] -_0807FF70: - cmp r6, 0 - beq _0807FF96 - mov r0, r9 - bl sub_803F428 - lsls r0, 24 - cmp r0, 0 - beq _0807FF84 - bl sub_8049ED4 -_0807FF84: - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r6, 0 - bl sub_80522F4 - ldr r0, [sp] - cmp r0, 0 - bne _0807FF96 - b _080801B4 -_0807FF96: - mov r0, r9 - bl sub_803F428 - lsls r0, 24 - cmp r0, 0 - beq _0807FFFA - movs r1, 0xAE - lsls r1, 1 - movs r0, 0 - bl sub_80421C0 - bl sub_8049ED4 - mov r1, r8 - ldrb r2, [r1] - adds r0, r5, 0 - mov r1, r9 - bl sub_804225C - ldr r0, _0807FFDC - ldr r0, [r0] - ldr r2, _0807FFE0 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _0807FFE8 - ldr r0, _0807FFE4 - ldr r1, [r0] - adds r0, r5, 0 - bl SendMessage - b _0807FFFA - .align 2, 0 -_0807FFD8: .4byte gUnknown_80FDB7C -_0807FFDC: .4byte gDungeon -_0807FFE0: .4byte 0x0001820a -_0807FFE4: .4byte gUnknown_80FD7F4 -_0807FFE8: - ldr r0, _08080010 - mov r3, r8 - ldrb r1, [r3] - lsls r1, 2 - adds r1, r0 - ldr r1, [r1] - adds r0, r5, 0 - bl SendMessage -_0807FFFA: - cmp r4, 0 - beq _08080020 - mov r1, r8 - ldrb r0, [r1, 0x1] - cmp r0, 0x2 - bne _08080014 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_806F480 - b _08080020 - .align 2, 0 -_08080010: .4byte gUnknown_80FD7F8 -_08080014: - cmp r0, 0x1 - bne _08080020 - adds r0, r4, 0 - movs r1, 0 - bl sub_806F480 -_08080020: - mov r2, r8 - ldrb r0, [r2] - cmp r0, 0x1B - bls _0808002A - b _08080194 -_0808002A: - lsls r0, 2 - ldr r1, _08080034 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08080034: .4byte _08080038 - .align 2, 0 -_08080038: - .4byte _080800A8 - .4byte _080800B2 - .4byte _080800BC - .4byte _080800C6 - .4byte _080800D0 - .4byte _080800DA - .4byte _080800E6 - .4byte _080800F0 - .4byte _080800FA - .4byte _08080104 - .4byte _0808010E - .4byte _08080118 - .4byte _08080122 - .4byte _0808012C - .4byte _08080136 - .4byte _08080140 - .4byte _0808014A - .4byte _08080168 - .4byte _08080172 - .4byte _08080180 - .4byte _08080194 - .4byte _08080194 - .4byte _08080194 - .4byte _08080194 - .4byte _08080194 - .4byte _08080194 - .4byte _08080194 - .4byte _080800DA -_080800A8: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8080A5C - b _08080194 -_080800B2: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80801CC - b _08080194 -_080800BC: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_808024C - b _08080194 -_080800C6: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8080418 - b _08080194 -_080800D0: - adds r0, r5, 0 - mov r1, r9 - bl sub_8080620 - b _0808017A -_080800DA: - adds r0, r5, 0 - adds r1, r4, 0 - ldr r2, [sp, 0x4] - bl sub_8080504 - b _08080194 -_080800E6: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8080374 - b _08080194 -_080800F0: - mov r0, r10 - adds r1, r4, 0 - bl sub_8080884 - b _08080194 -_080800FA: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8080364 - b _08080194 -_08080104: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8080388 - b _08080194 -_0808010E: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80803B4 - b _08080194 -_08080118: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80807C0 - b _08080194 -_08080122: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80803C8 - b _08080194 -_0808012C: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80803D8 - b _08080194 -_08080136: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80803F8 - b _08080194 -_08080140: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_8080700 - b _08080194 -_0808014A: - cmp r4, 0 - beq _08080194 - ldr r0, _08080160 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, _08080164 - adds r0, r4, 0 - movs r2, 0xF - bl sub_806F324 - b _08080194 - .align 2, 0 -_08080160: .4byte gUnknown_80F4F86 -_08080164: .4byte 0x00000213 -_08080168: - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80807B4 - b _08080194 -_08080172: - adds r0, r5, 0 - mov r1, r9 - bl sub_80808A4 -_0808017A: - movs r3, 0x1 - str r3, [sp, 0x8] - b _08080194 -_08080180: - cmp r4, 0 - beq _08080194 - ldr r0, _080801C4 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, _080801C8 - adds r0, r4, 0 - movs r2, 0xA - bl sub_806F324 -_08080194: - adds r0, r4, 0 - bl EntityExists - lsls r0, 24 - cmp r0, 0 - beq _080801A6 - adds r0, r4, 0 - bl sub_8071DA4 -_080801A6: - ldr r3, [sp, 0x8] - cmp r3, 0 - beq _080801B4 - mov r0, r9 - movs r1, 0x1 - bl sub_807FE04 -_080801B4: - 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 -_080801C4: .4byte gUnknown_80F4F84 -_080801C8: .4byte 0x00000206 - thumb_func_end sub_807FE9C - - thumb_func_start sub_80801CC -sub_80801CC: + thumb_func_start HandleMudTrap +HandleMudTrap: push {r4,r5,lr} sub sp, 0x8 adds r5, r0, 0 @@ -530,10 +70,10 @@ _08080240: bx r0 .align 2, 0 _08080248: .4byte gUnknown_8106A50 - thumb_func_end sub_80801CC + thumb_func_end HandleMudTrap - thumb_func_start sub_808024C -sub_808024C: + thumb_func_start HandleStickyTrap +HandleStickyTrap: push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -670,10 +210,10 @@ _0808034A: .align 2, 0 _0808035C: .4byte gUnknown_202DE58 _08080360: .4byte gUnknown_80FDC18 - thumb_func_end sub_808024C + thumb_func_end HandleStickyTrap - thumb_func_start sub_8080364 -sub_8080364: + thumb_func_start HandleSpinTrap +HandleSpinTrap: push {lr} cmp r1, 0 beq _08080370 @@ -682,10 +222,10 @@ sub_8080364: _08080370: pop {r0} bx r0 - thumb_func_end sub_8080364 + thumb_func_end HandleSpinTrap - thumb_func_start sub_8080374 -sub_8080374: + thumb_func_start HandleWarpTrap +HandleWarpTrap: push {lr} cmp r1, 0 beq _08080382 @@ -695,10 +235,10 @@ sub_8080374: _08080382: pop {r0} bx r0 - thumb_func_end sub_8080374 + thumb_func_end HandleWarpTrap - thumb_func_start sub_8080388 -sub_8080388: + thumb_func_start HandleSlumberTrap +HandleSlumberTrap: push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -719,10 +259,10 @@ _080803A8: bx r0 .align 2, 0 _080803B0: .4byte gUnknown_80F4E74 - thumb_func_end sub_8080388 + thumb_func_end HandleSlumberTrap - thumb_func_start sub_80803B4 -sub_80803B4: + thumb_func_start HandleSlowTrap +HandleSlowTrap: push {lr} cmp r1, 0 beq _080803C2 @@ -732,10 +272,10 @@ sub_80803B4: _080803C2: pop {r0} bx r0 - thumb_func_end sub_80803B4 + thumb_func_end HandleSlowTrap - thumb_func_start sub_80803C8 -sub_80803C8: + thumb_func_start HandlePoisonTrap +HandlePoisonTrap: push {lr} cmp r1, 0 beq _080803D4 @@ -744,10 +284,10 @@ sub_80803C8: _080803D4: pop {r0} bx r0 - thumb_func_end sub_80803C8 + thumb_func_end HandlePoisonTrap - thumb_func_start sub_80803D8 -sub_80803D8: + thumb_func_start HandleSelfdestructTrap +HandleSelfdestructTrap: push {lr} sub sp, 0x8 adds r2, r1, 0x4 @@ -762,10 +302,10 @@ sub_80803D8: bx r0 .align 2, 0 _080803F4: .4byte 0x00000212 - thumb_func_end sub_80803D8 + thumb_func_end HandleSelfdestructTrap - thumb_func_start sub_80803F8 -sub_80803F8: + thumb_func_start HandleExplosionTrap +HandleExplosionTrap: push {lr} sub sp, 0x8 adds r2, r1, 0x4 @@ -780,10 +320,10 @@ sub_80803F8: bx r0 .align 2, 0 _08080414: .4byte 0x00000212 - thumb_func_end sub_80803F8 + thumb_func_end HandleExplosionTrap - thumb_func_start sub_8080418 -sub_8080418: + thumb_func_start HandleGrimyTrap +HandleGrimyTrap: push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -905,7 +445,7 @@ _080804F0: bx r0 .align 2, 0 _08080500: .4byte gUnknown_80FD7AC - thumb_func_end sub_8080418 + thumb_func_end HandleGrimyTrap thumb_func_start sub_8080504 sub_8080504: @@ -1040,8 +580,8 @@ _08080618: .4byte gUnknown_80F970C _0808061C: .4byte 0x00000215 thumb_func_end sub_8080504 - thumb_func_start sub_8080620 -sub_8080620: + thumb_func_start HandleSummonTrap +HandleSummonTrap: push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1148,10 +688,10 @@ _080806EA: bx r0 .align 2, 0 _080806FC: .4byte gUnknown_80FED00 - thumb_func_end sub_8080620 + thumb_func_end HandleSummonTrap - thumb_func_start sub_8080700 -sub_8080700: + thumb_func_start HandlePPZeroTrap +HandlePPZeroTrap: push {r4-r7,lr} mov r7, r8 push {r7} @@ -1240,19 +780,19 @@ _080807A4: bx r0 .align 2, 0 _080807B0: .4byte gUnknown_80FDAA0 - thumb_func_end sub_8080700 + thumb_func_end HandlePPZeroTrap - thumb_func_start sub_80807B4 -sub_80807B4: + thumb_func_start HandleWonderTile +HandleWonderTile: push {lr} movs r2, 0 bl sub_8079E34 pop {r0} bx r0 - thumb_func_end sub_80807B4 + thumb_func_end HandleWonderTile - thumb_func_start sub_80807C0 -sub_80807C0: + thumb_func_start HandleSealTrap +HandleSealTrap: push {r4-r7,lr} mov r7, r9 mov r6, r8 @@ -1349,10 +889,10 @@ _08080870: bx r0 .align 2, 0 _08080880: .4byte gUnknown_80FDB2C - thumb_func_end sub_80807C0 + thumb_func_end HandleSealTrap - thumb_func_start sub_8080884 -sub_8080884: + thumb_func_start HandleWhirlwindTrap +HandleWhirlwindTrap: push {r4,r5,lr} adds r5, r0, 0 adds r4, r1, 0 @@ -1368,10 +908,10 @@ _0808089E: pop {r4,r5} pop {r0} bx r0 - thumb_func_end sub_8080884 + thumb_func_end HandleWhirlwindTrap - thumb_func_start sub_80808A4 -sub_80808A4: + thumb_func_start HandlePokemonTrap +HandlePokemonTrap: push {r4-r7,lr} mov r7, r10 mov r6, r9 @@ -1591,10 +1131,10 @@ _08080A46: bx r0 .align 2, 0 _08080A58: .4byte gUnknown_80FDAE4 - thumb_func_end sub_80808A4 + thumb_func_end HandlePokemonTrap - thumb_func_start sub_8080A5C -sub_8080A5C: + thumb_func_start HandleTripTrap +HandleTripTrap: push {r4-r7,lr} sub sp, 0xC adds r7, r0, 0 @@ -1670,7 +1210,7 @@ _08080AEC: _08080AF4: .4byte gAdjacentTileOffsets _08080AF8: .4byte 0xffff0000 _08080AFC: .4byte 0x0000ffff - thumb_func_end sub_8080A5C + thumb_func_end HandleTripTrap thumb_func_start sub_8080B00 sub_8080B00: diff --git a/include/status_actions.h b/include/status_actions.h index 174642611..ff42e09ee 100644 --- a/include/status_actions.h +++ b/include/status_actions.h @@ -28,7 +28,7 @@ bool8 RadarOrbAction(Entity *pokemon, Entity *target); bool8 TransferOrbAction(Entity *pokemon,Entity *target); bool8 sub_805BE90(Entity *pokemon, Entity *target); bool8 LuminousOrbAction(Entity *pokemon,Entity *target); -bool8 sub_805BEAC(Entity *pokemon, Entity *target); +bool8 PetrifyOrbAction(Entity *pokemon, Entity *target); bool8 sub_805BEB8(Entity *pokemon, Entity *target); bool8 sub_805BEC8(Entity *pokemon, Entity *target); bool8 EscapeOrbAction(Entity *pokemon,Entity *target); diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index 329aa1348..db1a53b80 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -220,7 +220,10 @@ typedef struct Dungeon /* 0x18209 */ u8 visibilityRange; // Dungeon light level. /* 0x1820A */ bool8 blinded; // Blacks out the screen when the player has the Blinker status. u8 unk1820B; - u32 unk1820C; + u8 unk1820C; + u8 unk1820D; + u8 unk1820E; + u8 unk1820F; /* 0x18210 */ bool8 hallucinating; // Displays Substitute and flower sprites when the player has the Cross-Eyed status. u8 fill18211[0x18217 - 0x18211]; u8 unk18217; diff --git a/include/trap.h b/include/trap.h index a9a22eb97..e668530bc 100644 --- a/include/trap.h +++ b/include/trap.h @@ -5,5 +5,6 @@ bool8 CanLayTrap(Position *pos); bool8 LayTrap(Position *pos, u8 trapID, u8 param_3); +void GetTrapName(u8 *buffer, u8 trapIndex); #endif diff --git a/src/code_8045A00.c b/src/code_8045A00.c index 0570eb248..c5108f9a4 100644 --- a/src/code_8045A00.c +++ b/src/code_8045A00.c @@ -6,6 +6,7 @@ #include "dungeon_random.h" #include "items.h" #include "structs/map.h" +#include "trap.h" extern u8 *gUnknown_80FE6F4[]; extern struct unkStruct_8090F58 gUnknown_80F699C; @@ -13,7 +14,6 @@ extern struct unkStruct_8090F58 gUnknown_80F69A8; extern struct unkStruct_8090F58 gUnknown_80F6990; extern void SetMessageArgument_2(u8 *, EntityInfo *, u32); -extern void GetTrapName(u8 *, u8); extern bool8 IsNotSpecialItem(u8 id); void sub_8045BF8(u8 *, Item *); void sub_8046CE4(void *param_1,u32 param_2); diff --git a/src/status_actions.c b/src/status_actions.c index 28604438a..2f2163810 100644 --- a/src/status_actions.c +++ b/src/status_actions.c @@ -50,7 +50,7 @@ extern void sub_8049BB0(s32, s32); extern s16 sub_8057600(Move*, u32); extern u32 sub_8055864(Entity *pokemon, Entity *target, Move *param_3, s32 param_4, s32 param_5); extern void sub_807D148(Entity *pokemon, Entity *r1, u32 r2, Position *r3); -extern void sub_807FE04(u32 *, u32); +extern void sub_807FE04(Position *, u32); extern void sub_807DB74(Entity *); extern void SetMessageArgument(char[], Entity*, u32); extern void HandleLuminousOrbAction(Entity *pokemon); @@ -972,7 +972,7 @@ bool8 LuminousOrbAction(Entity * pokemon, Entity * target) return TRUE; } -bool8 sub_805BEAC(Entity * pokemon, Entity * target) +bool8 PetrifyOrbAction(Entity * pokemon, Entity * target) { PetrifiedStatusTarget(pokemon, target); return TRUE; @@ -1019,7 +1019,7 @@ bool8 TrapbustOrbAction(Entity * pokemon,Entity * target) s32 xCoord, yCoord; struct RoomData *room; s32 topLeftCornerX, topLeftCornerY; - u32 sp; + Position pos; bool8 foundTrap = FALSE; tile = GetTileAtEntitySafe(target); if (IsBossFight()) { @@ -1047,8 +1047,9 @@ bool8 TrapbustOrbAction(Entity * pokemon,Entity * target) object = GetTileSafe(xCoord, yCoord)->object; if (((object != 0) && (GetEntityType(object) == ENTITY_TRAP)) && (trapData = GetTrapData(object), trapData->id != TRAP_WONDER_TILE)) { - sp = yCoord << 0x10 | (u16)xCoord; - sub_807FE04(&sp, 0); + pos.y = yCoord; + pos.x = xCoord; + sub_807FE04(&pos, 0); foundTrap = TRUE; } } @@ -1096,7 +1097,7 @@ bool8 sub_805C080(Entity * pokemon, Entity *target) return foundTarget; } -bool8 sub_805C128(Entity * pokemon, Entity * target) +bool8 InvisifyOrbAction(Entity * pokemon, Entity * target) { InvisibleStatusTarget(pokemon, pokemon); return TRUE; diff --git a/src/trap.c b/src/trap.c index c57c044ef..2e33eceea 100644 --- a/src/trap.c +++ b/src/trap.c @@ -2,16 +2,56 @@ #include "constants/trap.h" #include "structs/str_dungeon.h" #include "trap.h" +#include "code_80521D0.h" +#include "dungeon_items.h" +#include "dungeon_random.h" #include "dungeon_map_access.h" #include "dungeon_util.h" #include "structs/map.h" +extern u8 gAvailablePokemonNames[]; + +extern u8 *gTrapNames[]; extern u8 *gUnknown_80FC5FC[]; extern u8 *gUnknown_80FC5F8[]; +extern u8 *gUnknown_80FDB5C[]; +extern u8 *gUnknown_80FDB7C[]; +extern u8 *gUnknown_80FD7F4[]; +extern u8 *gUnknown_80FD7F8[]; + +extern s16 gUnknown_80F4F84; +extern s16 gUnknown_80F4F86; + + +void HandleTripTrap(Entity *pokemon,Entity *target); +void HandleMudTrap(Entity *pokemon,Entity *target); +void HandleStickyTrap(Entity *pokemon,Entity *target); +void HandleGrimyTrap(Entity *pokemon,Entity *target); +void HandleSummonTrap(Entity *pokemon,Position *pos); +void sub_8080504(Entity *pokemon,Entity *target,Tile *tile); +void HandleWarpTrap(Entity *pokemon,Entity *target); +void HandleWhirlwindTrap(Entity *entity,Entity *target); +void HandleSpinTrap(Entity *pokemon,Entity *target); +void HandleSlumberTrap(Entity *pokemon,Entity *target); +void HandleSlowTrap(Entity *pokemon,Entity *target); +void HandleSealTrap(Entity *pokemon,Entity *target); +void HandlePoisonTrap(Entity *pokemon,Entity *target); +void HandleSelfdestructTrap(Entity *pokemon,Entity *target); +void HandleExplosionTrap(Entity *pokemon,Entity *target); +void HandlePPZeroTrap(Entity *pokemon,Entity *target); +void HandleWonderTile(Entity *pokemon,Entity *target); +void HandlePokemonTrap(Entity *pokemon,Position *pos); +void sub_806F324(Entity *,s16,u32,u32); +void sub_806F480(Entity *, u32); +extern void sub_80421C0(u32, u32); +void sub_804225C(Entity *, Position *, u8); +void sub_8071DA4(Entity *); +extern u8 sub_803F428(Position *pos); +void sub_806A1E8(Entity *pokemon); void sub_8052364(Entity *, Position *, u8 *); void sub_8049ED4(void); - +void sub_80522F4(Entity *r0, Entity *r1, const char r2[]); u8 sub_803D6FC(void); Entity *sub_8045684(u8, Position *, u8); @@ -81,22 +121,208 @@ bool8 LayTrap(Position *pos, u8 trapID, u8 param_3) bool8 sub_807FD84(Entity *entity) { - bool8 flag; - flag = FALSE; - - if (gDungeon->unk13570 == 0) { - return FALSE; - } - else { - gDungeon->unk13570 = 0; - flag = LayTrap(&gDungeon->trapPos,gDungeon->trapID,gDungeon->unk13579); - if (flag) { - sub_8052364(entity,&gDungeon->trapPos,*gUnknown_80FC5F8); // A trap was laid! + bool8 flag; + flag = FALSE; + + if (gDungeon->unk13570 == 0) { + return FALSE; + } + else { + gDungeon->unk13570 = 0; + flag = LayTrap(&gDungeon->trapPos,gDungeon->trapID,gDungeon->unk13579); + if (flag) { + sub_8052364(entity,&gDungeon->trapPos,*gUnknown_80FC5F8); // A trap was laid! + } + else { + sub_8052364(entity,&gDungeon->trapPos,*gUnknown_80FC5FC); // A trap can't be laid here. + } + sub_8049ED4(); + } + return flag; +} + +bool8 sub_807FE04(Position *pos, char param_2) +{ + Tile *tile; + + tile = GetTileSafe(pos->x,pos->y); + if ((tile->object != NULL) && (GetEntityType(tile->object) == ENTITY_TRAP)) { + tile->object->type = 0; + tile->object = NULL; + if (param_2 != 0) { + sub_8049ED4(); + } + return TRUE; + } + else { + return FALSE; + } +} + +bool8 sub_807FE44(Position *pos,char param_2) +{ + Tile *tile; + + tile = GetTile(pos->x,pos->y); + if ((tile->object != NULL) && (GetEntityType(tile->object) == ENTITY_TRAP)) { + tile->object->isVisible = TRUE; + if (param_2 != 0) { + sub_8049ED4(); + } + return TRUE; } else { - sub_8052364(entity,&gDungeon->trapPos,*gUnknown_80FC5FC); // A trap can't be laid here. + return FALSE; + } +} + +void GetTrapName(u8 *buffer, u8 trapIndex) +{ + strcpy(buffer, gTrapNames[trapIndex]); +} + +void sub_807FE9C(Entity *pokemon,Position *pos,int param_3,char param_4) +{ + Tile *tile; + bool8 flag1; + bool8 flag; + + Entity *entity; + s32 rand; + Trap *trapData; + Entity *target; + u8 *text; + + tile = GetTileSafe(pos->x,pos->y); + entity = tile->object; + flag1 = FALSE; + if (entity == NULL) { + return; + } + if (GetEntityType(entity) != ENTITY_TRAP) { + return; + } + trapData = GetTrapData(entity); + GetTrapName(gAvailablePokemonNames,trapData->id); + target = tile->monster; + if ((target != NULL) && (GetEntityType(target) != ENTITY_MONSTER)) { + target = NULL; + } + flag = entity->isVisible; + entity->isVisible = TRUE; + if (((target != NULL) && (sub_806A1E8(target), param_4 != '\0')) && (trapData->id != TRAP_WONDER_TILE)) { + rand = DungeonRandInt(100); + text = NULL; + if (HasHeldItem(target, ITEM_TRAP_SCARF)) { + text = *gUnknown_80FDB5C; + } + if ((flag == TRUE) || (gDungeon->unk1820F != 0)) { + if (rand < 0) text = *gUnknown_80FDB7C; + } + else if (rand < 0xf) { + text = *gUnknown_80FDB7C; + } + if (text != NULL) { + if (sub_803F428(pos) != '\0') { + sub_8049ED4(); + } + sub_80522F4(pokemon,target,text); + if (param_3 == 0) { + return; + } + } + } + if (sub_803F428(pos) != '\0') { + sub_80421C0(0,0x15c); + sub_8049ED4(); + sub_804225C(pokemon,pos,trapData->id); + if (gDungeon->blinded) { + SendMessage(pokemon,*gUnknown_80FD7F4); + } + else { + SendMessage(pokemon,(gUnknown_80FD7F8)[trapData->id]); + } + } + if (target != NULL) { + if (trapData->unk1 == 2) { + sub_806F480(target,1); + } + else if (trapData->unk1 == 1) { + sub_806F480(target,0); + } + } + switch(trapData->id) { + case TRAP_TRIP_TRAP: + HandleTripTrap(pokemon,target); + break; + case TRAP_MUD_TRAP: + HandleMudTrap(pokemon,target); + break; + case TRAP_STICKY_TRAP: + HandleStickyTrap(pokemon,target); + break; + case TRAP_GRIMY_TRAP: + HandleGrimyTrap(pokemon,target); + break; + case TRAP_SUMMON_TRAP: + HandleSummonTrap(pokemon,pos); + flag1 = TRUE; + break; + case TRAP_PITFALL_TRAP: + case 0x1B: // ??? + sub_8080504(pokemon,target,tile); + break; + case TRAP_WARP_TRAP: + HandleWarpTrap(pokemon,target); + break; + case TRAP_WHIRLWIND_TRAP: + HandleWhirlwindTrap(entity,target); + break; + case TRAP_SPIN_TRAP: + HandleSpinTrap(pokemon,target); + break; + case TRAP_SLUMBER_TRAP: + HandleSlumberTrap(pokemon,target); + break; + case TRAP_SLOW_TRAP: + HandleSlowTrap(pokemon,target); + break; + case TRAP_SEAL_TRAP: + HandleSealTrap(pokemon,target); + break; + case TRAP_POISON_TRAP: + HandlePoisonTrap(pokemon,target); + break; + case TRAP_SELFDESTRUCT_TRAP: + HandleSelfdestructTrap(pokemon,target); + break; + case TRAP_EXPLOSION_TRAP: + HandleExplosionTrap(pokemon,target); + break; + case TRAP_PP_ZERO_TRAP: + HandlePPZeroTrap(pokemon,target); + break; + case TRAP_CHESTNUT_TRAP: + if (target != NULL) { + sub_806F324(target,gUnknown_80F4F86,0xf,0x213); + } + break; + case TRAP_WONDER_TILE: + HandleWonderTile(pokemon,target); + break; + case TRAP_POKEMON_TRAP: + HandlePokemonTrap(pokemon,pos); + flag1 = TRUE; + break; + case TRAP_SPIKE_TRAP: + if (target != NULL) { + sub_806F324(target,gUnknown_80F4F84,10,0x206); + } + } + if (EntityExists(target)) { + sub_8071DA4(target); + } + if (flag1) { + sub_807FE04(pos,1); } - sub_8049ED4(); - } - return flag; } From 197574e0ed62c24a986637b7f24b4b002fb3a1f3 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 7 Jan 2024 11:43:07 -0800 Subject: [PATCH 10/18] more trap stuff and sub_808B1CC --- asm/code_807FCD4.s | 67 ---------------- include/structs/str_dungeon.h | 4 +- src/code_8057824_1.c | 146 ++++++++-------------------------- src/trap.c | 33 +++++++- 4 files changed, 68 insertions(+), 182 deletions(-) diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index 05cfc6b56..47bdfc176 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,73 +5,6 @@ .text - thumb_func_start HandleMudTrap -HandleMudTrap: - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r4, r1, 0 - cmp r4, 0 - beq _08080240 - movs r0, 0x64 - bl DungeonRandInt - adds r1, r0, 0 - cmp r0, 0x18 - bgt _080801EC - ldr r0, _080801E8 - b _080801F2 - .align 2, 0 -_080801E8: .4byte gUnknown_8106A4C -_080801EC: - cmp r0, 0x31 - bgt _0808020C - ldr r0, _08080208 -_080801F2: - ldr r2, [r0] - movs r0, 0x1 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0x1 - bl LowerAttackStageTarget - b _08080240 - .align 2, 0 -_08080208: .4byte gUnknown_8106A50 -_0808020C: - cmp r1, 0x4A - bgt _0808022C - ldr r0, _08080228 - ldr r2, [r0] - movs r0, 0x1 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0x1 - bl LowerDefenseStageTarget - b _08080240 - .align 2, 0 -_08080228: .4byte gUnknown_8106A4C -_0808022C: - ldr r0, _08080248 - ldr r2, [r0] - movs r0, 0x1 - str r0, [sp] - str r0, [sp, 0x4] - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0x1 - bl LowerDefenseStageTarget -_08080240: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08080248: .4byte gUnknown_8106A50 - thumb_func_end HandleMudTrap - thumb_func_start HandleStickyTrap HandleStickyTrap: push {r4-r7,lr} diff --git a/include/structs/str_dungeon.h b/include/structs/str_dungeon.h index db1a53b80..c65c512c1 100644 --- a/include/structs/str_dungeon.h +++ b/include/structs/str_dungeon.h @@ -119,7 +119,9 @@ typedef struct Dungeon u8 unk678; u8 unk679; u8 unk67A; - u8 unk67B[0x688 - 0x67B]; + u8 unk67B[0x684 - 0x67B]; + s16 unk684; + s16 unk686; s16 unk688; /* 0x68A */ u8 unk68A; u8 fill68B[0x699 - 0x68B]; diff --git a/src/code_8057824_1.c b/src/code_8057824_1.c index f9628e9f5..c4f24ecb7 100644 --- a/src/code_8057824_1.c +++ b/src/code_8057824_1.c @@ -456,6 +456,9 @@ extern void sub_808BB3C(Position *); extern void sub_8046860(Entity *, Position *, Item *, u32); extern u32 sub_803D73C(u32); +extern void sub_80460F8(Position *, Item *, u8); +extern void sub_807FE04(Position *, u8); + void ZapdosReFightDialogue(void) { Entity *LeaderEntity; @@ -3169,7 +3172,7 @@ void sub_808AE54(char param_1,char param_2,u32 *param_3) LeaderEntity = xxx_call_GetLeader(); sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_2 == 0x2E) && (param_1 == 0x17)) { - sub_808B1CC(0); + sub_808B1CC(ITEM_NOTHING); if (sub_8098100(0x1d) == 0) { xxx_init_itemslot_8090A8C(&item,ITEM_ROCK_PART,0); sub_80464C8(GetLeader(),param_3,&item); @@ -3192,7 +3195,7 @@ void sub_808AEC8(char param_1,char param_2,u32 *param_3) LeaderEntity = xxx_call_GetLeader(); sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_2 == 0x2F) && (param_1 == 0x18)) { - sub_808B1CC(0); + sub_808B1CC(ITEM_NOTHING); if (sub_8098100(0x1d) == 0) { xxx_init_itemslot_8090A8C(&item,ITEM_ICE_PART,0); sub_80464C8(GetLeader(),param_3,&item); @@ -3214,7 +3217,7 @@ void sub_808AF3C(char param_1,char param_2,u32 *param_3) LeaderEntity = xxx_call_GetLeader(); sub_8052D44(IDStack,LeaderEntity,0); if ((sub_8098100(0x22) == 0) && (param_2 == 0x30) && (param_1 == 0x19)) { - sub_808B1CC(0); + sub_808B1CC(ITEM_NOTHING); if (sub_8098100(0x1d) == 0) { xxx_init_itemslot_8090A8C(&item,ITEM_STEEL_PART,0); sub_80464C8(GetLeader(),param_3, &item); @@ -3316,117 +3319,36 @@ void RegisteelPreFightDialogue(void) } } -NAKED -void sub_808B1CC(u8 r0) +void sub_808B1CC(u8 itemID) { - asm_unified( - "\tpush {r4-r7,lr}\n" - "\tsub sp, 0x8\n" - "\tlsls r0, 24\n" - "\tlsrs r6, r0, 24\n" - "\tldr r7, _0808B21C\n" - "\tldr r2, [r7]\n" - "\tldr r1, _0808B220\n" - "\tadds r0, r2, r1\n" - "\tldrh r0, [r0]\n" - "\tldr r5, _0808B224\n" - "\tldr r1, [sp]\n" - "\tands r1, r5\n" - "\torrs r1, r0\n" - "\tstr r1, [sp]\n" - "\tldr r3, _0808B228\n" - "\tadds r2, r3\n" - "\tldrh r0, [r2]\n" - "\tlsls r0, 16\n" - "\tldr r4, _0808B22C\n" - "\tadds r2, r4, 0\n" - "\tands r2, r1\n" - "\torrs r2, r0\n" - "\tstr r2, [sp]\n" - "\tmov r0, sp\n" - "\tmovs r1, 0\n" - "\tldrsh r0, [r0, r1]\n" - "\tcmp r0, 0\n" - "\tblt _0808B208\n" - "\tcmp r2, 0\n" - "\tbge _0808B244\n" -"_0808B208:\n" - "\tbl GetLeader\n" - "\tadds r2, r0, 0\n" - "\tcmp r2, 0\n" - "\tbne _0808B230\n" - "\tldr r1, [r7]\n" - "\tmovs r0, 0x1\n" - "\tstrb r0, [r1, 0x2]\n" - "\tb _0808B2A8\n" - "\t.align 2, 0\n" -"_0808B21C: .4byte gDungeon\n" -"_0808B220: .4byte 0x00000684\n" -"_0808B224: .4byte 0xffff0000\n" -"_0808B228: .4byte 0x00000686\n" -"_0808B22C: .4byte 0x0000ffff\n" -"_0808B230:\n" - "\tldrh r0, [r2, 0x4]\n" - "\tldr r1, [sp]\n" - "\tands r1, r5\n" - "\torrs r1, r0\n" - "\tstr r1, [sp]\n" - "\tldrh r0, [r2, 0x6]\n" - "\tlsls r0, 16\n" - "\tands r1, r4\n" - "\torrs r1, r0\n" - "\tstr r1, [sp]\n" -"_0808B244:\n" - "\tmov r5, sp\n" - "\tmov r0, sp\n" - "\tmovs r1, 0\n" - "\tbl sub_807FE04\n" - "\tmov r0, sp\n" - "\tmovs r2, 0\n" - "\tldrsh r0, [r0, r2]\n" - "\tmovs r3, 0x2\n" - "\tldrsh r1, [r5, r3]\n" - "\tbl GetTileSafe\n" - "\tldrh r2, [r0]\n" - "\tmovs r3, 0x80\n" - "\tlsls r3, 2\n" - "\tadds r1, r3, 0\n" - "\torrs r1, r2\n" - "\tstrh r1, [r0]\n" - "\tcmp r6, 0\n" - "\tbeq _0808B2A0\n" - "\tadds r0, r6, 0\n" - "\tbl sub_80860A8\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _0808B2A0\n" - "\tmovs r0, 0x7A\n" - "\tbl sub_80860A8\n" - "\tlsls r0, 24\n" - "\tcmp r0, 0\n" - "\tbne _0808B2A0\n" - "\tadd r4, sp, 0x4\n" - "\tadds r0, r4, 0\n" - "\tadds r1, r6, 0\n" - "\tmovs r2, 0\n" - "\tbl xxx_init_itemslot_8090A8C\n" - "\tldrh r0, [r5, 0x2]\n" - "\tsubs r0, 0x1\n" - "\tstrh r0, [r5, 0x2]\n" - "\tmov r0, sp\n" - "\tadds r1, r4, 0\n" - "\tmovs r2, 0x1\n" - "\tbl sub_80460F8\n" -"_0808B2A0:\n" - "\tbl sub_8049ED4\n" - "\tbl sub_8040A84\n" -"_0808B2A8:\n" - "\tadd sp, 0x8\n" - "\tpop {r4-r7}\n" - "\tpop {r0}\n" - "\tbx r0"); -} + Entity *entity; + Tile *tile; + Position pos; + Item item; + pos.x = gDungeon->unk684; + pos.y = gDungeon->unk686; + if ((pos.x < 0) || (pos.y < 0)) { + entity = GetLeader(); + if (entity == NULL) { + gDungeon->unk2 = 1; + return; + } + pos.x = entity->pos.x; + pos.y = entity->pos.y; + } + sub_807FE04(&pos, 0); + tile = GetTileSafe(pos.x, pos.y); + tile->terrainType = tile->terrainType | TERRAIN_TYPE_STAIRS; + if (((itemID != ITEM_NOTHING) && (sub_80860A8(itemID) == 0)) && + (sub_80860A8(ITEM_MUSIC_BOX) == 0)) { + xxx_init_itemslot_8090A8C(&item,itemID,0); + pos.y--; + sub_80460F8(&pos,&item,1); + } + sub_8049ED4(); + sub_8040A84(); +} void SetupRegiFacingDirection(Entity *regiEntity) { diff --git a/src/trap.c b/src/trap.c index 2e33eceea..6b5b0331b 100644 --- a/src/trap.c +++ b/src/trap.c @@ -9,6 +9,7 @@ #include "dungeon_map_access.h" #include "dungeon_util.h" #include "structs/map.h" +#include "move_effects_target.h" extern u8 gAvailablePokemonNames[]; @@ -22,6 +23,8 @@ extern u8 *gUnknown_80FD7F8[]; extern s16 gUnknown_80F4F84; extern s16 gUnknown_80F4F86; +extern u32 gUnknown_8106A4C; +extern u32 gUnknown_8106A50; void HandleTripTrap(Entity *pokemon,Entity *target); @@ -159,7 +162,7 @@ bool8 sub_807FE04(Position *pos, char param_2) } } -bool8 sub_807FE44(Position *pos,char param_2) +bool8 sub_807FE44(Position *pos, char param_2) { Tile *tile; @@ -181,7 +184,7 @@ void GetTrapName(u8 *buffer, u8 trapIndex) strcpy(buffer, gTrapNames[trapIndex]); } -void sub_807FE9C(Entity *pokemon,Position *pos,int param_3,char param_4) +void sub_807FE9C(Entity *pokemon, Position *pos, int param_3, char param_4) { Tile *tile; bool8 flag1; @@ -326,3 +329,29 @@ void sub_807FE9C(Entity *pokemon,Position *pos,int param_3,char param_4) sub_807FE04(pos,1); } } + +void HandleMudTrap(Entity *pokemon, Entity *target) +{ + int rand; +#ifdef NONMATCHING + int rand1; +#else + register int rand1 asm("r1"); +#endif + + if (target != NULL) { + rand1 = rand = DungeonRandInt(100); + if (rand <= 0x18) { + LowerAttackStageTarget(pokemon,target,gUnknown_8106A4C,1,1,1); + } + else if (0x32 > rand) { + LowerAttackStageTarget(pokemon,target,gUnknown_8106A50,1,1,1); + } + else if (rand1 < 0x4b) { + LowerDefenseStageTarget(pokemon,target,gUnknown_8106A4C,1,1,1); + } + else { + LowerDefenseStageTarget(pokemon,target,gUnknown_8106A50,1,1,1); + } + } +} From e7e452299ffe4e58c5b1902305dc86780c9398ea Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Fri, 12 Jan 2024 20:22:32 -0800 Subject: [PATCH 11/18] more decomp and some code cleanup --- asm/code_807FCD4.s | 250 -------------------------------------------- include/items.h | 3 +- src/code_80521D0.c | 42 +++----- src/trap.c | 253 ++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 268 insertions(+), 280 deletions(-) diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index 47bdfc176..0e92f7b2b 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,256 +5,6 @@ .text - thumb_func_start HandleStickyTrap -HandleStickyTrap: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x5C - str r0, [sp, 0x54] - mov r10, r1 - ldr r0, [r1, 0x70] - mov r8, r0 - mov r0, r10 - movs r1, 0xE - bl HasHeldItem - lsls r0, 24 - cmp r0, 0 - beq _08080278 - ldr r0, _08080274 - b _08080300 - .align 2, 0 -_08080274: .4byte gUnknown_80FDC7C -_08080278: - movs r6, 0 - mov r1, r8 - ldrb r0, [r1, 0x7] - movs r1, 0x60 - add r1, r8 - mov r9, r1 - cmp r0, 0 - beq _080802C8 - movs r5, 0 - ldr r7, _0808030C - mov r0, sp - str r0, [sp, 0x58] -_08080290: - lsls r4, r5, 2 - ldr r0, [r7] - adds r2, r4, r0 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080802C2 - ldrb r0, [r2, 0x2] - bl IsNotSpecialItem - lsls r0, 24 - cmp r0, 0 - beq _080802C2 - ldr r0, [r7] - adds r2, r0, r4 - ldrb r1, [r2] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080802C2 - ldr r1, [sp, 0x58] - stm r1!, {r2} - str r1, [sp, 0x58] - adds r6, 0x1 -_080802C2: - adds r5, 0x1 - cmp r5, 0x13 - ble _08080290 -_080802C8: - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080802FA - mov r0, r8 - adds r0, 0x62 - ldrb r0, [r0] - bl IsNotSpecialItem - lsls r0, 24 - cmp r0, 0 - beq _080802FA - mov r0, r9 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _080802FA - lsls r0, r6, 2 - add r0, sp - mov r1, r9 - str r1, [r0] - adds r6, 0x1 -_080802FA: - cmp r6, 0 - bne _08080314 - ldr r0, _08080310 -_08080300: - ldr r2, [r0] - ldr r0, [sp, 0x54] - mov r1, r10 - bl sub_80522F4 - b _0808034A - .align 2, 0 -_0808030C: .4byte gTeamInventoryRef -_08080310: .4byte gUnknown_80FDC40 -_08080314: - adds r0, r6, 0 - bl DungeonRandInt - ldr r2, _0808035C - lsls r0, 2 - mov r1, sp - adds r4, r1, r0 - ldr r1, [r4] - adds r0, r2, 0 - bl sub_8045BF8 - ldr r2, [r4] - ldrb r1, [r2] - movs r0, 0x8 - orrs r0, r1 - strb r0, [r2] - movs r1, 0xC9 - lsls r1, 1 - mov r0, r10 - bl sub_80421C0 - ldr r0, _08080360 - ldr r2, [r0] - ldr r0, [sp, 0x54] - mov r1, r10 - bl sub_80522F4 -_0808034A: - add sp, 0x5C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0808035C: .4byte gUnknown_202DE58 -_08080360: .4byte gUnknown_80FDC18 - thumb_func_end HandleStickyTrap - - thumb_func_start HandleSpinTrap -HandleSpinTrap: - push {lr} - cmp r1, 0 - beq _08080370 - movs r2, 0x1 - bl ConfuseStatusTarget -_08080370: - pop {r0} - bx r0 - thumb_func_end HandleSpinTrap - - thumb_func_start HandleWarpTrap -HandleWarpTrap: - push {lr} - cmp r1, 0 - beq _08080382 - movs r2, 0 - movs r3, 0 - bl sub_807D148 -_08080382: - pop {r0} - bx r0 - thumb_func_end HandleWarpTrap - - thumb_func_start HandleSlumberTrap -HandleSlumberTrap: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - cmp r4, 0 - beq _080803A8 - ldr r1, _080803B0 - adds r0, r4, 0 - movs r2, 0x1 - bl CalculateStatusTurns - adds r2, r0, 0 - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0x1 - bl sub_8075C58 -_080803A8: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080803B0: .4byte gUnknown_80F4E74 - thumb_func_end HandleSlumberTrap - - thumb_func_start HandleSlowTrap -HandleSlowTrap: - push {lr} - cmp r1, 0 - beq _080803C2 - movs r2, 0x1 - movs r3, 0x1 - bl LowerMovementSpeedTarget -_080803C2: - pop {r0} - bx r0 - thumb_func_end HandleSlowTrap - - thumb_func_start HandlePoisonTrap -HandlePoisonTrap: - push {lr} - cmp r1, 0 - beq _080803D4 - movs r2, 0x1 - bl PoisonedStatusTarget -_080803D4: - pop {r0} - bx r0 - thumb_func_end HandlePoisonTrap - - thumb_func_start HandleSelfdestructTrap -HandleSelfdestructTrap: - push {lr} - sub sp, 0x8 - adds r2, r1, 0x4 - movs r3, 0 - str r3, [sp] - ldr r3, _080803F4 - str r3, [sp, 0x4] - movs r3, 0x1 - bl sub_807DF38 - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080803F4: .4byte 0x00000212 - thumb_func_end HandleSelfdestructTrap - - thumb_func_start HandleExplosionTrap -HandleExplosionTrap: - push {lr} - sub sp, 0x8 - adds r2, r1, 0x4 - movs r3, 0 - str r3, [sp] - ldr r3, _08080414 - str r3, [sp, 0x4] - movs r3, 0x2 - bl sub_807DF38 - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_08080414: .4byte 0x00000212 - thumb_func_end HandleExplosionTrap - thumb_func_start HandleGrimyTrap HandleGrimyTrap: push {r4-r7,lr} diff --git a/include/items.h b/include/items.h index 712921a61..1e9c49eca 100644 --- a/include/items.h +++ b/include/items.h @@ -59,6 +59,7 @@ bool8 AddKecleonWareItem(u8 itemIndex); void FillInventoryGaps(); bool8 AddHeldItemToInventory(BulkItem* slot); bool8 IsNotMoneyOrUsedTMItem(u8 id); +bool8 IsNotSpecialItem(u8 id); s32 FindItemInInventory(u8 id); bool8 IsHMItem(u8 id); bool8 IsEdibleItem(u8 id); @@ -82,4 +83,4 @@ s32 SaveTeamInventory(u8 *, u32 size); s32 sub_8090FEC(s32, u8 *strbuf, u8); u32 sub_80913E0(Item *slot, u32, struct subStruct_203B240 **); -#endif // GUARD_ITEMS_H \ No newline at end of file +#endif // GUARD_ITEMS_H diff --git a/src/code_80521D0.c b/src/code_80521D0.c index 62a0eb5e8..e88d78bde 100644 --- a/src/code_80521D0.c +++ b/src/code_80521D0.c @@ -5,7 +5,7 @@ extern void sub_80526D0(u8 r0); extern u8 sub_8045888(Entity *r0); extern void sub_80523A8(Entity *r0, const char r1[], u8 r2); extern u8 sub_8052DC0(Entity *); -extern u8 sub_803F428(u32); +extern u8 sub_803F428(Position *); void sub_805229C(void) { @@ -33,17 +33,13 @@ void sub_80522E8(Entity *r0, const char r1[]) void sub_80522F4(Entity *r0, Entity *r1, const char r2[]) { - u8 temp; - u32 temp_reg; - u32 temp2; - temp = sub_8045888(r0); - temp_reg = (-temp | temp); - temp2 = temp_reg >> 31; + u8 flag; + flag = sub_8045888(r0) ? TRUE : FALSE; if(sub_8052DC0(r1) != 0) { - temp2 = 1; + flag = TRUE; } - if(temp2 != 0) + if(flag) { sub_80523A8(r0, r2, 1); } @@ -51,35 +47,27 @@ void sub_80522F4(Entity *r0, Entity *r1, const char r2[]) void sub_805232C(Entity *r0, Entity *r1, const char r2[]) { - u8 temp; - u32 temp_reg; - u32 temp2; - temp = sub_8045888(r0); - temp_reg = (-temp | temp); - temp2 = temp_reg >> 31; + u8 flag; + flag = sub_8045888(r0) ? TRUE : FALSE; if(sub_8052DC0(r1) != 0) { - temp2 = 1; + flag = TRUE; } - if(temp2 != 0) + if(flag) { sub_80523A8(r0, r2, 0); } } -void sub_8052364(Entity *r0, u32 r1, const char r2[]) +void sub_8052364(Entity *r0, Position *pos, const char r2[]) { - u8 temp; - u32 temp_reg; - u32 temp2; - temp = sub_8045888(r0); - temp_reg = (-temp | temp); - temp2 = temp_reg >> 31; - if(sub_803F428(r1) != 0) + u8 flag; + flag = sub_8045888(r0) ? TRUE : FALSE; + if(sub_803F428(pos) != 0) { - temp2 = 1; + flag = TRUE; } - if(temp2 != 0) + if(flag) { sub_80523A8(r0, r2, 1); } diff --git a/src/trap.c b/src/trap.c index 6b5b0331b..e807e9d32 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1,8 +1,12 @@ #include "global.h" +#include "constants/type.h" #include "constants/trap.h" #include "structs/str_dungeon.h" #include "trap.h" +#include "status.h" #include "code_80521D0.h" +#include "items.h" +#include "code_808417C.h" #include "dungeon_items.h" #include "dungeon_random.h" @@ -12,6 +16,7 @@ #include "move_effects_target.h" extern u8 gAvailablePokemonNames[]; +extern u8 gUnknown_202DE58[]; extern u8 *gTrapNames[]; extern u8 *gUnknown_80FC5FC[]; @@ -20,13 +25,17 @@ extern u8 *gUnknown_80FDB5C[]; extern u8 *gUnknown_80FDB7C[]; extern u8 *gUnknown_80FD7F4[]; extern u8 *gUnknown_80FD7F8[]; +extern s16 gUnknown_80F4E74[]; +extern u8 *gUnknown_80FDC18[]; +extern u8 *gUnknown_80FDC40[]; +extern u8 *gUnknown_80FDC7C[]; extern s16 gUnknown_80F4F84; extern s16 gUnknown_80F4F86; extern u32 gUnknown_8106A4C; extern u32 gUnknown_8106A50; - +void sub_8045BF8(u8 *, Item *); void HandleTripTrap(Entity *pokemon,Entity *target); void HandleMudTrap(Entity *pokemon,Entity *target); void HandleStickyTrap(Entity *pokemon,Entity *target); @@ -47,7 +56,7 @@ void HandleWonderTile(Entity *pokemon,Entity *target); void HandlePokemonTrap(Entity *pokemon,Position *pos); void sub_806F324(Entity *,s16,u32,u32); void sub_806F480(Entity *, u32); -extern void sub_80421C0(u32, u32); +extern void sub_80421C0(Entity *, u32); void sub_804225C(Entity *, Position *, u8); void sub_8071DA4(Entity *); extern u8 sub_803F428(Position *pos); @@ -57,6 +66,8 @@ void sub_8049ED4(void); void sub_80522F4(Entity *r0, Entity *r1, const char r2[]); u8 sub_803D6FC(void); Entity *sub_8045684(u8, Position *, u8); +extern void sub_807D148(Entity *pokemon, Entity *target, u32 r2, Position *r3); +extern void sub_807DF38(Entity *pokemon, Entity *target, Position *pos, u32, u8 moveType, s16); bool8 CanLayTrap(Position *pos) { @@ -355,3 +366,241 @@ void HandleMudTrap(Entity *pokemon, Entity *target) } } } + +#ifdef NONMATCHING +void HandleStickyTrap(Entity *pokemon,Entity *target) +{ + EntityInfo *info; + Item *item; + Item *pbVar3; + int index; + int itemCount; + int newIndex; + Item *itemStack [20]; + bool32 flag; + + info = target->info; + if (HasHeldItem(target,0xe)) { + sub_80522F4(pokemon,target,*gUnknown_80FDC7C); + } + else + { + itemCount = 0; + if (flag = info->isTeamLeader, item = &info->heldItem, flag != '\0') { + for(index = 0; index < 0x14; index++) + { + pbVar3 = &gTeamInventoryRef->teamItems[index]; + if ((((pbVar3->flags & 1) != 0) && (IsNotSpecialItem(pbVar3->id))) && + (gTeamInventoryRef->teamItems[index].flags & 8) == 0) { + itemStack[itemCount] = pbVar3; + itemCount++; + } + } + } + if ((((item->flags & 1) != 0) && (IsNotSpecialItem((info->heldItem).id))) + && ((item->flags & 8) == 0)) { + itemStack[itemCount] = item; + itemCount = itemCount + 1; + } + if (itemCount == 0) { + sub_80522F4(pokemon,target,*gUnknown_80FDC40); + } + else + { + newIndex = DungeonRandInt(itemCount); + sub_8045BF8(gUnknown_202DE58, itemStack[newIndex]); + itemStack[newIndex]->flags |= 8; + sub_80421C0(target, 0x192); + sub_80522F4(pokemon,target,*gUnknown_80FDC18); + } + } +} +#else +NAKED +void HandleStickyTrap(Entity *pokemon,Entity *target) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x5C\n" + "\tstr r0, [sp, 0x54]\n" + "\tmov r10, r1\n" + "\tldr r0, [r1, 0x70]\n" + "\tmov r8, r0\n" + "\tmov r0, r10\n" + "\tmovs r1, 0xE\n" + "\tbl HasHeldItem\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _08080278\n" + "\tldr r0, _08080274\n" + "\tb _08080300\n" + "\t.align 2, 0\n" +"_08080274: .4byte gUnknown_80FDC7C\n" +"_08080278:\n" + "\tmovs r6, 0\n" + "\tmov r1, r8\n" + "\tldrb r0, [r1, 0x7]\n" + "\tmovs r1, 0x60\n" + "\tadd r1, r8\n" + "\tmov r9, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080802C8\n" + "\tmovs r5, 0\n" + "\tldr r7, _0808030C\n" + "\tmov r0, sp\n" + "\tstr r0, [sp, 0x58]\n" +"_08080290:\n" + "\tlsls r4, r5, 2\n" + "\tldr r0, [r7]\n" + "\tadds r2, r4, r0\n" + "\tldrb r1, [r2]\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080802C2\n" + "\tldrb r0, [r2, 0x2]\n" + "\tbl IsNotSpecialItem\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _080802C2\n" + "\tldr r0, [r7]\n" + "\tadds r2, r0, r4\n" + "\tldrb r1, [r2]\n" + "\tmovs r0, 0x8\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080802C2\n" + "\tldr r1, [sp, 0x58]\n" + "\tstm r1!, {r2}\n" + "\tstr r1, [sp, 0x58]\n" + "\tadds r6, 0x1\n" +"_080802C2:\n" + "\tadds r5, 0x1\n" + "\tcmp r5, 0x13\n" + "\tble _08080290\n" +"_080802C8:\n" + "\tmov r0, r9\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x1\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbeq _080802FA\n" + "\tmov r0, r8\n" + "\tadds r0, 0x62\n" + "\tldrb r0, [r0]\n" + "\tbl IsNotSpecialItem\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _080802FA\n" + "\tmov r0, r9\n" + "\tldrb r1, [r0]\n" + "\tmovs r0, 0x8\n" + "\tands r0, r1\n" + "\tcmp r0, 0\n" + "\tbne _080802FA\n" + "\tlsls r0, r6, 2\n" + "\tadd r0, sp\n" + "\tmov r1, r9\n" + "\tstr r1, [r0]\n" + "\tadds r6, 0x1\n" +"_080802FA:\n" + "\tcmp r6, 0\n" + "\tbne _08080314\n" + "\tldr r0, _08080310\n" +"_08080300:\n" + "\tldr r2, [r0]\n" + "\tldr r0, [sp, 0x54]\n" + "\tmov r1, r10\n" + "\tbl sub_80522F4\n" + "\tb _0808034A\n" + "\t.align 2, 0\n" +"_0808030C: .4byte gTeamInventoryRef\n" +"_08080310: .4byte gUnknown_80FDC40\n" +"_08080314:\n" + "\tadds r0, r6, 0\n" + "\tbl DungeonRandInt\n" + "\tldr r2, _0808035C\n" + "\tlsls r0, 2\n" + "\tmov r1, sp\n" + "\tadds r4, r1, r0\n" + "\tldr r1, [r4]\n" + "\tadds r0, r2, 0\n" + "\tbl sub_8045BF8\n" + "\tldr r2, [r4]\n" + "\tldrb r1, [r2]\n" + "\tmovs r0, 0x8\n" + "\torrs r0, r1\n" + "\tstrb r0, [r2]\n" + "\tmovs r1, 0xC9\n" + "\tlsls r1, 1\n" + "\tmov r0, r10\n" + "\tbl sub_80421C0\n" + "\tldr r0, _08080360\n" + "\tldr r2, [r0]\n" + "\tldr r0, [sp, 0x54]\n" + "\tmov r1, r10\n" + "\tbl sub_80522F4\n" +"_0808034A:\n" + "\tadd sp, 0x5C\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_0808035C: .4byte gUnknown_202DE58\n" +"_08080360: .4byte gUnknown_80FDC18"); + +} +#endif + +void HandleSpinTrap(Entity *pokemon, Entity *target) +{ + if(target != NULL) + ConfuseStatusTarget(pokemon, target, TRUE); +} + +void HandleWarpTrap(Entity *pokemon, Entity *target) +{ + if(target != NULL) + sub_807D148(pokemon, target, 0, NULL); +} + +void HandleSlumberTrap(Entity *pokemon, Entity *target) +{ + s32 turns; + + if(target != NULL) + { + turns = CalculateStatusTurns(target, gUnknown_80F4E74, TRUE); + sub_8075C58(pokemon, target, turns, TRUE); + } +} + +void HandleSlowTrap(Entity *pokemon, Entity *target) +{ + if(target != NULL) + LowerMovementSpeedTarget(pokemon, target, 1, TRUE); +} + +void HandlePoisonTrap(Entity *pokemon, Entity *target) +{ + if(target != NULL) + PoisonedStatusTarget(pokemon, target, TRUE); +} + +void HandleSelfdestructTrap(Entity *pokemon,Entity *target) +{ + sub_807DF38(pokemon, target, &target->pos, 1, TYPE_NONE, 0x212); +} + +void HandleExplosionTrap(Entity *pokemon,Entity *target) +{ + sub_807DF38(pokemon, target, &target->pos, 2, TYPE_NONE, 0x212); +} + From 9cae659e18f0d809bcdc4b46ab1bf2113229cbe9 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sat, 13 Jan 2024 11:00:10 -0800 Subject: [PATCH 12/18] more trap decomp --- asm/code_807FCD4.s | 258 --------------------------------------------- src/trap.c | 131 +++++++++++++++++++++-- 2 files changed, 123 insertions(+), 266 deletions(-) diff --git a/asm/code_807FCD4.s b/asm/code_807FCD4.s index 0e92f7b2b..d8d4d16e0 100644 --- a/asm/code_807FCD4.s +++ b/asm/code_807FCD4.s @@ -5,264 +5,6 @@ .text - thumb_func_start HandleGrimyTrap -HandleGrimyTrap: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x58 - mov r8, r0 - adds r6, r1, 0 - movs r0, 0 - mov r9, r0 - cmp r6, 0 - beq _080804F0 - ldr r7, [r6, 0x70] - movs r3, 0 - ldrb r0, [r7, 0x7] - cmp r0, 0 - beq _0808045A - ldr r0, _080804C0 - movs r1, 0x1 - mov r12, r1 - ldr r2, [r0] - mov r4, sp - movs r5, 0x13 -_08080444: - ldrb r1, [r2] - mov r0, r12 - ands r0, r1 - cmp r0, 0 - beq _08080452 - stm r4!, {r2} - adds r3, 0x1 -_08080452: - adds r2, 0x4 - subs r5, 0x1 - cmp r5, 0 - bge _08080444 -_0808045A: - adds r2, r7, 0 - adds r2, 0x60 - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08080470 - lsls r0, r3, 2 - add r0, sp - str r2, [r0] - adds r3, 0x1 -_08080470: - cmp r3, 0 - ble _080804B6 - mov r4, sp - adds r5, r3, 0 -_08080478: - ldr r0, [r4] - ldrb r0, [r0, 0x2] - bl GetItemCategory - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _080804AE - ldr r0, [r4] - ldrb r0, [r0, 0x2] - cmp r0, 0x54 - beq _080804AE - movs r0, 0x64 - bl DungeonRandInt - ldr r1, _080804C4 - movs r2, 0 - ldrsh r1, [r1, r2] - cmp r0, r1 - bge _080804AE - movs r0, 0x1 - add r9, r0 - ldr r0, [r4] - movs r1, 0x54 - movs r2, 0x2 - bl sub_8045C28 -_080804AE: - adds r4, 0x4 - subs r5, 0x1 - cmp r5, 0 - bne _08080478 -_080804B6: - mov r1, r9 - cmp r1, 0x1 - bne _080804CC - ldr r0, _080804C8 - b _080804D4 - .align 2, 0 -_080804C0: .4byte gTeamInventoryRef -_080804C4: .4byte gUnknown_80F4E0E -_080804C8: .4byte gUnknown_80FD788 -_080804CC: - mov r2, r9 - cmp r2, 0 - bne _080804E4 - ldr r0, _080804E0 -_080804D4: - ldr r2, [r0] - mov r0, r8 - adds r1, r6, 0 - bl sub_80522F4 - b _080804F0 - .align 2, 0 -_080804E0: .4byte gUnknown_80FD7D4 -_080804E4: - ldr r0, _08080500 - ldr r2, [r0] - mov r0, r8 - adds r1, r6, 0 - bl sub_80522F4 -_080804F0: - add sp, 0x58 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08080500: .4byte gUnknown_80FD7AC - thumb_func_end HandleGrimyTrap - - thumb_func_start sub_8080504 -sub_8080504: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r4, r1, 0 - adds r7, r2, 0 - movs r0, 0 - mov r8, r0 - cmp r4, 0 - bne _0808051A - b _0808060E -_0808051A: - bl IsBossFight - lsls r0, 24 - cmp r0, 0 - beq _08080534 - ldr r0, _08080530 - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - b _0808060E - .align 2, 0 -_08080530: .4byte gUnknown_80FED0C -_08080534: - ldr r5, [r4, 0x70] - adds r0, r4, 0 - bl sub_8045888 - lsls r0, 24 - cmp r0, 0 - beq _0808055E - adds r0, r7, 0 - movs r1, 0x1B - bl sub_8080B00 - movs r1, 0x1 - mov r8, r1 - ldr r1, _080805A4 - adds r0, r4, 0 - bl sub_80421C0 - movs r0, 0x1E - movs r1, 0x48 - bl sub_803E708 -_0808055E: - ldrb r0, [r5, 0x7] - cmp r0, 0 - beq _080805C4 - bl sub_8043D10 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - beq _080805B4 - movs r2, 0xAE - lsls r2, 1 - adds r0, r5, r2 - movs r1, 0x1 - strb r1, [r0] - adds r2, 0x2 - adds r0, r5, r2 - strb r1, [r0] - movs r0, 0x28 - movs r1, 0x4B - bl sub_803E708 - ldr r0, _080805A8 - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r3, _080805AC - adds r0, r4, 0 - movs r2, 0x11 - bl sub_806F324 - ldr r0, _080805B0 - ldr r1, [r0] - movs r0, 0x2 - strb r0, [r1, 0x2] - b _0808060E - .align 2, 0 -_080805A4: .4byte 0x00000193 -_080805A8: .4byte gUnknown_80F4F8A -_080805AC: .4byte 0x00000215 -_080805B0: .4byte gDungeon -_080805B4: - ldr r0, _080805C0 - ldr r1, [r0] - adds r0, r6, 0 - bl SendMessage - b _08080600 - .align 2, 0 -_080805C0: .4byte gUnknown_80F9728 -_080805C4: - ldr r0, _080805E4 - adds r1, r4, 0 - movs r2, 0 - bl SetMessageArgument - ldrb r0, [r5, 0x6] - cmp r0, 0 - beq _080805EC - ldr r0, _080805E8 - ldr r2, [r0] - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_80522F4 - b _080805F6 - .align 2, 0 -_080805E4: .4byte gAvailablePokemonNames -_080805E8: .4byte gUnknown_80F970C -_080805EC: - ldr r0, _08080618 - ldr r1, [r0] - adds r0, r6, 0 - bl sub_805239C -_080805F6: - ldr r1, _0808061C - adds r0, r4, 0 - adds r2, r6, 0 - bl sub_8068FE0 -_08080600: - mov r0, r8 - cmp r0, 0 - beq _0808060E - adds r0, r7, 0 - movs r1, 0x5 - bl sub_8080B00 -_0808060E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08080618: .4byte gUnknown_80F970C -_0808061C: .4byte 0x00000215 - thumb_func_end sub_8080504 - thumb_func_start HandleSummonTrap HandleSummonTrap: push {r4-r7,lr} diff --git a/src/trap.c b/src/trap.c index e807e9d32..0370e404d 100644 --- a/src/trap.c +++ b/src/trap.c @@ -8,6 +8,7 @@ #include "items.h" #include "code_808417C.h" +#include "dungeon_engine.h" #include "dungeon_items.h" #include "dungeon_random.h" #include "dungeon_map_access.h" @@ -29,19 +30,35 @@ extern s16 gUnknown_80F4E74[]; extern u8 *gUnknown_80FDC18[]; extern u8 *gUnknown_80FDC40[]; extern u8 *gUnknown_80FDC7C[]; - +extern u8 *gUnknown_80FD7AC[]; +extern u8 *gUnknown_80FD788[]; +extern u8 *gUnknown_80FD7D4[]; +extern u8 *gUnknown_80F970C[]; +extern u8 *gUnknown_80F9728[]; +extern u8 *gUnknown_80FED0C[]; + +extern s16 gUnknown_80F4E0E; extern s16 gUnknown_80F4F84; extern s16 gUnknown_80F4F86; extern u32 gUnknown_8106A4C; extern u32 gUnknown_8106A50; - +extern s16 gUnknown_80F4F8A; + +bool8 sub_8045888(Entity *); +void sub_8080B00(Tile *, u32); +void sub_803E708(u32, u32); +u8 sub_8043D10(void); +void SetMessageArgument(u8 *, Entity *, u32); +void sub_8068FE0(Entity *, u32, Entity *); +void sub_805239C(Entity *, u8 *); +void sub_8045C28(Item *, u8 , u8); void sub_8045BF8(u8 *, Item *); void HandleTripTrap(Entity *pokemon,Entity *target); void HandleMudTrap(Entity *pokemon,Entity *target); void HandleStickyTrap(Entity *pokemon,Entity *target); void HandleGrimyTrap(Entity *pokemon,Entity *target); void HandleSummonTrap(Entity *pokemon,Position *pos); -void sub_8080504(Entity *pokemon,Entity *target,Tile *tile); +void HandlePitfallTrap(Entity *pokemon,Entity *target,Tile *tile); void HandleWarpTrap(Entity *pokemon,Entity *target); void HandleWhirlwindTrap(Entity *entity,Entity *target); void HandleSpinTrap(Entity *pokemon,Entity *target); @@ -284,7 +301,7 @@ void sub_807FE9C(Entity *pokemon, Position *pos, int param_3, char param_4) break; case TRAP_PITFALL_TRAP: case 0x1B: // ??? - sub_8080504(pokemon,target,tile); + HandlePitfallTrap(pokemon,target,tile); break; case TRAP_WARP_TRAP: HandleWarpTrap(pokemon,target); @@ -367,6 +384,8 @@ void HandleMudTrap(Entity *pokemon, Entity *target) } } +// https://decomp.me/scratch/Yq32k (Seth) + #ifdef NONMATCHING void HandleStickyTrap(Entity *pokemon,Entity *target) { @@ -594,13 +613,109 @@ void HandlePoisonTrap(Entity *pokemon, Entity *target) PoisonedStatusTarget(pokemon, target, TRUE); } -void HandleSelfdestructTrap(Entity *pokemon,Entity *target) +void HandleSelfdestructTrap(Entity *pokemon, Entity *target) { - sub_807DF38(pokemon, target, &target->pos, 1, TYPE_NONE, 0x212); + sub_807DF38(pokemon, target, &target->pos, 1, TYPE_NONE, 0x212); } -void HandleExplosionTrap(Entity *pokemon,Entity *target) +void HandleExplosionTrap(Entity *pokemon, Entity *target) { - sub_807DF38(pokemon, target, &target->pos, 2, TYPE_NONE, 0x212); + sub_807DF38(pokemon, target, &target->pos, 2, TYPE_NONE, 0x212); } +void HandleGrimyTrap(Entity *pokemon, Entity *target) +{ + Item *item; + Item *heldItem; + int counter; + int index; + EntityInfo *info; + int badFoodCount; + Item *itemStack [22]; + + badFoodCount = 0; + if (target != NULL) { + info = target->info; + counter = 0; + if (info->isTeamLeader) { + for(index = 0; index < INVENTORY_SIZE; index++) + { + item = &gTeamInventoryRef->teamItems[index]; + if ((item->flags & ITEM_FLAG_EXISTS)) { + itemStack[counter] = item; + counter++; + } + } + } + heldItem = &info->heldItem; + if ((heldItem->flags & ITEM_FLAG_EXISTS)) { + itemStack[counter] = heldItem; + counter++; + } + for (index = 0; index < counter; index++) { + if (((GetItemCategory(itemStack[index]->id) == CATEGORY_FOOD_GUMMIES) && (itemStack[index]->id != ITEM_GRIMY_FOOD)) && + (DungeonRandInt(100) < gUnknown_80F4E0E)) { + badFoodCount++; + sub_8045C28(itemStack[index], ITEM_GRIMY_FOOD, 2); + } + } + if (badFoodCount == 1) { + sub_80522F4(pokemon,target,*gUnknown_80FD788); // A food item went bad. + } + else if (badFoodCount == 0) { + sub_80522F4(pokemon,target,*gUnknown_80FD7D4); // Nothing particularly bad happened. + } + else + { + sub_80522F4(pokemon,target,*gUnknown_80FD7AC); // Several food items went bad + } + } +} + +void HandlePitfallTrap(Entity *pokemon, Entity *target, Tile *tile) +{ + bool8 flag; + EntityInfo *info; + + flag = FALSE; + if (target != NULL) { + if (IsBossFight()) { + SendMessage(pokemon,*gUnknown_80FED0C); // But nothing happened... + } + else + { + info = target->info; + if (sub_8045888(target)) { + sub_8080B00(tile, 0x1B); + flag = TRUE; + sub_80421C0(target,0x193); + sub_803E708(0x1e,0x48); + } + if (info->isTeamLeader) { + if (sub_8043D10() != 2) { + info->unk15C = 1; + info->unk15E = 1; + sub_803E708(0x28,0x4b); + sub_806F324(target,gUnknown_80F4F8A,0x11,0x215); + gDungeon->unk2 = 2; + return; + } + SendMessage(pokemon,*gUnknown_80F9728); + } + else + { + SetMessageArgument(gAvailablePokemonNames,target,0); + if (info->isNotTeamMember) { + sub_80522F4(pokemon,target,*gUnknown_80F970C); // $m0 fell into the pitfall! + } + else { + sub_805239C(pokemon,*gUnknown_80F970C); // $m0 fell into the pitfall! + } + sub_8068FE0(target,0x215,pokemon); + } + if (flag) { + sub_8080B00(tile, 5); + } + } + } +} From baf04031e41b14e2ea33d6313a1d6adcb50001b4 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Sun, 28 Jan 2024 19:51:57 -0800 Subject: [PATCH 13/18] split out some more stuff and decomp --- asm/code_8098BDC.s | 5427 -------------------------------------------- asm/code_809A560.s | 5089 +++++++++++++++++++++++++++++++++++++++++ ld_script.txt | 2 + src/code_809A560.c | 189 ++ 4 files changed, 5280 insertions(+), 5427 deletions(-) create mode 100644 asm/code_809A560.s create mode 100644 src/code_809A560.c diff --git a/asm/code_8098BDC.s b/asm/code_8098BDC.s index 3085649aa..e6fa232a0 100644 --- a/asm/code_8098BDC.s +++ b/asm/code_8098BDC.s @@ -2672,5431 +2672,4 @@ _0809A558: bx r0 thumb_func_end sub_8099E80 - thumb_func_start sub_809A560 -sub_809A560: - push {r4-r6,lr} - bl sub_8014144 - ldr r6, _0809A5F4 - movs r0, 0xB5 - lsls r0, 3 - movs r1, 0x6 - bl MemoryAlloc - str r0, [r6] - movs r4, 0 - str r4, [r0] - movs r5, 0x1 - negs r5, r5 - str r5, [r0, 0x4] - str r5, [r0, 0x8] - ldr r0, _0809A5F8 - strh r4, [r0] - ldr r0, _0809A5FC - strh r4, [r0] - movs r0, 0 - movs r1, 0x14 - bl sub_80095CC - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - movs r1, 0x14 - bl sub_8009408 - bl sub_809B294 - ldr r0, [r6] - ldr r2, _0809A600 - adds r1, r0, r2 - str r4, [r1] - adds r2, 0x4 - adds r1, r0, r2 - str r4, [r1] - adds r2, 0x4 - adds r1, r0, r2 - str r4, [r1] - adds r2, 0x4 - adds r1, r0, r2 - str r4, [r1] - adds r2, 0x4 - adds r1, r0, r2 - str r4, [r1] - adds r2, 0x4 - adds r1, r0, r2 - str r4, [r1] - adds r2, 0x4 - adds r1, r0, r2 - str r4, [r1] - adds r2, 0x4 - adds r1, r0, r2 - str r5, [r1] - ldr r1, _0809A604 - adds r0, r1 - str r5, [r0] - bl sub_809A7EC - ldr r0, [r6] - ldr r2, _0809A608 - adds r0, r2 - ldr r1, _0809A60C - strh r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809A5F4: .4byte gUnknown_3001B64 -_0809A5F8: .4byte gUnknown_20399DC -_0809A5FC: .4byte gUnknown_20399DE -_0809A600: .4byte 0x00000414 -_0809A604: .4byte 0x00000434 -_0809A608: .4byte 0x000005a4 -_0809A60C: .4byte 0x0000ffff - thumb_func_end sub_809A560 - - thumb_func_start sub_809A610 -sub_809A610: - push {r4,lr} - bl sub_809A62C - ldr r4, _0809A628 - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809A628: .4byte gUnknown_3001B64 - thumb_func_end sub_809A610 - - thumb_func_start sub_809A62C -sub_809A62C: - push {r4,lr} - ldr r0, _0809A670 - ldr r0, [r0] - movs r2, 0 - str r2, [r0] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x4] - str r1, [r0, 0x8] - ldr r0, _0809A674 - strh r2, [r0] - ldr r0, _0809A678 - strh r2, [r0] - movs r4, 0 -_0809A648: - lsls r0, r4, 16 - asrs r0, 16 - bl sub_809A83C - adds r4, 0x1 - cmp r4, 0x9 - ble _0809A648 - ldr r0, _0809A670 - ldr r0, [r0] - ldr r1, _0809A67C - adds r0, r1 - movs r1, 0 - str r1, [r0] - movs r0, 0 - movs r1, 0x1 - bl sub_809A680 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809A670: .4byte gUnknown_3001B64 -_0809A674: .4byte gUnknown_20399DC -_0809A678: .4byte gUnknown_20399DE -_0809A67C: .4byte 0x00000414 - thumb_func_end sub_809A62C - - thumb_func_start sub_809A680 -sub_809A680: - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0x4 - bhi _0809A6C2 - lsls r0, r4, 2 - ldr r1, _0809A694 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809A694: .4byte _0809A698 - .align 2, 0 -_0809A698: - .4byte _0809A6AC - .4byte _0809A6BC - .4byte _0809A6BC - .4byte _0809A6BC - .4byte _0809A6BC -_0809A6AC: - bl sub_809B294 - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - b _0809A6D0 -_0809A6BC: - bl sub_809B294 - b _0809A6D0 -_0809A6C2: - bl sub_809B294 - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C -_0809A6D0: - ldr r0, _0809A6E0 - ldr r0, [r0] - str r4, [r0] - movs r0, 0x1 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0809A6E0: .4byte gUnknown_3001B64 - thumb_func_end sub_809A680 - - thumb_func_start sub_809A6E4 -sub_809A6E4: - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0809A6F4 - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r2] - bx lr - .align 2, 0 -_0809A6F4: .4byte gUnknown_20399DC - thumb_func_end sub_809A6E4 - - thumb_func_start sub_809A6F8 -sub_809A6F8: - lsls r0, 16 - lsrs r0, 16 - ldr r2, _0809A708 - ldrh r1, [r2] - bics r1, r0 - strh r1, [r2] - bx lr - .align 2, 0 -_0809A708: .4byte gUnknown_20399DC - thumb_func_end sub_809A6F8 - - thumb_func_start sub_809A70C -sub_809A70C: - ldr r0, _0809A714 - ldrh r0, [r0] - bx lr - .align 2, 0 -_0809A714: .4byte gUnknown_20399DC - thumb_func_end sub_809A70C - - thumb_func_start nullsub_209 -nullsub_209: - bx lr - thumb_func_end nullsub_209 - - thumb_func_start sub_809A71C -sub_809A71C: - push {lr} - adds r1, r0, 0 - ldr r0, _0809A734 - ldr r0, [r0] - str r1, [r0, 0x4] - str r1, [r0, 0x8] - adds r0, r1, 0 - bl sub_801416C - pop {r0} - bx r0 - .align 2, 0 -_0809A734: .4byte gUnknown_3001B64 - thumb_func_end sub_809A71C - - thumb_func_start sub_809A738 -sub_809A738: - push {lr} - ldr r2, _0809A74C - ldr r2, [r2] - str r0, [r2, 0x4] - str r1, [r2, 0x8] - bl sub_801416C - pop {r0} - bx r0 - .align 2, 0 -_0809A74C: .4byte gUnknown_3001B64 - thumb_func_end sub_809A738 - - thumb_func_start sub_809A750 -sub_809A750: - push {lr} - ldr r0, _0809A764 - ldr r0, [r0] - adds r0, 0xC - bl sub_809B40C - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_0809A764: .4byte gUnknown_3001B64 - thumb_func_end sub_809A750 - - thumb_func_start sub_809A768 -sub_809A768: - movs r0, 0 - bx lr - thumb_func_end sub_809A768 - - thumb_func_start sub_809A76C -sub_809A76C: - push {lr} - ldr r0, _0809A78C - ldr r0, [r0] - ldr r1, [r0] - cmp r1, 0x1 - bcc _0809A7A4 - cmp r1, 0x2 - bls _0809A790 - cmp r1, 0x3 - bne _0809A7A4 - adds r0, 0xC - movs r2, 0x1 - negs r2, r2 - movs r1, 0x4 - b _0809A798 - .align 2, 0 -_0809A78C: .4byte gUnknown_3001B64 -_0809A790: - adds r0, 0xC - movs r2, 0x1 - negs r2, r2 - movs r1, 0x84 -_0809A798: - movs r3, 0 - bl sub_809B2B8 - lsls r0, 24 - lsrs r0, 24 - b _0809A7AE -_0809A7A4: - movs r0, 0 - movs r1, 0x1 - bl sub_809A680 - movs r0, 0 -_0809A7AE: - pop {r1} - bx r1 - thumb_func_end sub_809A76C - - thumb_func_start sub_809A7B4 -sub_809A7B4: - push {lr} - ldr r0, _0809A7D8 - ldr r0, [r0] - ldr r1, [r0] - cmp r1, 0x3 - bhi _0809A7DC - cmp r1, 0x1 - bcc _0809A7DC - adds r0, 0xC - movs r2, 0x1 - negs r2, r2 - movs r1, 0x4 - movs r3, 0 - bl sub_809B2B8 - lsls r0, 24 - lsrs r0, 24 - b _0809A7E6 - .align 2, 0 -_0809A7D8: .4byte gUnknown_3001B64 -_0809A7DC: - movs r0, 0 - movs r1, 0x1 - bl sub_809A680 - movs r0, 0 -_0809A7E6: - pop {r1} - bx r1 - thumb_func_end sub_809A7B4 - - thumb_func_start sub_809A7EC -sub_809A7EC: - push {r4-r6,lr} - ldr r0, _0809A830 - ldr r0, [r0] - ldr r2, _0809A834 - adds r1, r0, r2 - ldr r0, _0809A838 - adds r6, r0, 0 - movs r3, 0 - movs r2, 0 - movs r4, 0x9 - movs r5, 0xFF -_0809A802: - ldrh r0, [r1] - orrs r0, r6 - strh r0, [r1] - strh r2, [r1, 0x2] - strb r3, [r1, 0x4] - strb r3, [r1, 0x5] - ldrb r0, [r1, 0x6] - orrs r0, r5 - strb r0, [r1, 0x6] - strb r3, [r1, 0x7] - str r2, [r1, 0x8] - str r2, [r1, 0xC] - str r2, [r1, 0x10] - str r2, [r1, 0x14] - strb r3, [r1, 0x1C] - str r2, [r1, 0x20] - subs r4, 0x1 - adds r1, 0x24 - cmp r4, 0 - bge _0809A802 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809A830: .4byte gUnknown_3001B64 -_0809A834: .4byte 0x0000043c -_0809A838: .4byte 0x0000ffff - thumb_func_end sub_809A7EC - - thumb_func_start sub_809A83C -sub_809A83C: - push {r4-r7,lr} - lsls r0, 16 - asrs r0, 16 - ldr r2, _0809A8A0 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r3, _0809A8A4 - adds r1, r3 - ldr r2, [r2] - adds r6, r2, r1 - ldr r1, _0809A8A8 - strh r1, [r6] - movs r2, 0 - movs r7, 0 - strh r7, [r6, 0x2] - strb r2, [r6, 0x4] - strb r2, [r6, 0x5] - movs r1, 0xFF - strb r1, [r6, 0x6] - strb r2, [r6, 0x7] - str r7, [r6, 0x8] - str r7, [r6, 0xC] - str r7, [r6, 0x10] - str r7, [r6, 0x14] - strb r2, [r6, 0x1C] - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 4 - ldr r0, _0809A8AC - adds r0, r4, r0 - ldr r5, _0809A8B0 - adds r1, r5, 0 - bl strcpy - ldr r0, _0809A8B4 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl strcpy - ldr r0, [r6, 0x20] - cmp r0, 0 - beq _0809A89A - bl CloseFile - str r7, [r6, 0x20] -_0809A89A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809A8A0: .4byte gUnknown_3001B64 -_0809A8A4: .4byte 0x0000043c -_0809A8A8: .4byte 0x0000ffff -_0809A8AC: .4byte gAvailablePokemonNames -_0809A8B0: .4byte gInvalidityText -_0809A8B4: .4byte gPlayerName - thumb_func_end sub_809A83C - - thumb_func_start sub_809A8B8 -sub_809A8B8: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 16 - asrs r0, 16 - mov r9, r0 - mov r0, sp - strh r1, [r0] - ldr r1, _0809A928 - mov r2, r9 - lsls r0, r2, 3 - add r0, r9 - lsls r0, 2 - ldr r2, _0809A92C - adds r0, r2 - ldr r1, [r1] - adds r7, r1, r0 - movs r0, 0x1 - mov r10, r0 - movs r1, 0 - str r1, [sp, 0x4] - ldr r0, [r7, 0x20] - cmp r0, 0 - beq _0809A8F6 - bl CloseFile - ldr r2, [sp, 0x4] - str r2, [r7, 0x20] -_0809A8F6: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl sub_80A7DDC - mov r0, sp - ldrh r0, [r0] - subs r0, 0xA - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x13 - bhi _0809A9D6 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_80A8D54 - adds r5, r0, 0 - cmp r5, 0 - bne _0809A930 - movs r2, 0 - mov r10, r2 - b _0809A9D6 - .align 2, 0 -_0809A928: .4byte gUnknown_3001B64 -_0809A92C: .4byte 0x0000043c -_0809A930: - bl sub_808D3BC - cmp r5, r0 - bne _0809A940 - mov r1, sp - movs r0, 0x21 - strh r0, [r1] - b _0809A9D6 -_0809A940: - bl sub_808D3F8 - cmp r5, r0 - bne _0809A950 - mov r1, sp - movs r0, 0x22 - strh r0, [r1] - b _0809A9D6 -_0809A950: - ldrb r0, [r5, 0x4] - subs r0, 0x43 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bhi _0809A990 - movs r0, 0 - ldrsh r1, [r4, r0] - ldr r0, _0809A978 - cmp r1, r0 - beq _0809A9D6 - cmp r1, r0 - ble _0809A97C - adds r0, 0x16 - cmp r1, r0 - bgt _0809A98A - subs r0, 0x1 - cmp r1, r0 - blt _0809A98A - b _0809A9D6 - .align 2, 0 -_0809A978: .4byte 0x00000183 -_0809A97C: - movs r0, 0x82 - lsls r0, 1 - cmp r1, r0 - beq _0809A9D6 - adds r0, 0x2F - cmp r1, r0 - beq _0809A9D6 -_0809A98A: - movs r1, 0 - mov r10, r1 - b _0809A9D6 -_0809A990: - movs r2, 0 - ldrsh r1, [r4, r2] - movs r0, 0x87 - lsls r0, 1 - cmp r1, r0 - bgt _0809A9B0 - subs r0, 0x2 - cmp r1, r0 - bge _0809A9D6 - cmp r1, 0x90 - blt _0809A9D2 - cmp r1, 0x92 - ble _0809A9D6 - cmp r1, 0x96 - beq _0809A9D6 - b _0809A9D2 -_0809A9B0: - movs r0, 0xCF - lsls r0, 1 - cmp r1, r0 - bgt _0809A9CC - subs r0, 0x4 - cmp r1, r0 - bge _0809A9D6 - subs r0, 0x87 - cmp r1, r0 - bgt _0809A9D2 - subs r0, 0x1 - cmp r1, r0 - blt _0809A9D2 - b _0809A9D6 -_0809A9CC: - ldr r0, _0809A9F0 - cmp r1, r0 - beq _0809A9D6 -_0809A9D2: - movs r0, 0 - mov r10, r0 -_0809A9D6: - mov r0, sp - ldrh r0, [r0] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x21 - bhi _0809AA98 - lsls r0, 2 - ldr r1, _0809A9F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809A9F0: .4byte 0x000001a7 -_0809A9F4: .4byte _0809A9F8 - .align 2, 0 -_0809A9F8: - .4byte _0809AA80 - .4byte _0809AA80 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA80 - .4byte _0809AA80 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA98 - .4byte _0809AA80 - .4byte _0809AA80 -_0809AA80: - movs r1, 0 - ldrsh r0, [r4, r1] - bl sub_80A8CF0 - lsls r0, 24 - cmp r0, 0 - beq _0809AA94 - movs r2, 0x1 - str r2, [sp, 0x4] - b _0809AA98 -_0809AA94: - movs r0, 0 - mov r10, r0 -_0809AA98: - mov r0, sp - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809AB34 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_80A7AE8 - lsls r0, 16 - asrs r1, r0, 16 - cmp r1, 0 - blt _0809AACE - mov r0, sp - ldrh r0, [r0] - movs r2, 0 - mov r8, r2 - movs r6, 0 - strh r0, [r7] - adds r0, r1, 0 - bl sub_80A8BFC - strh r0, [r7, 0x2] - b _0809AAE6 -_0809AACE: - ldrh r1, [r4] - movs r2, 0 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0809AB34 - mov r0, sp - ldrh r0, [r0] - movs r2, 0 - mov r8, r2 - movs r6, 0 - strh r0, [r7] - strh r1, [r7, 0x2] -_0809AAE6: - mov r0, r9 - lsls r4, r0, 2 - add r4, r9 - lsls r4, 4 - ldr r0, _0809AB28 - adds r0, r4, r0 - ldr r5, _0809AB2C - adds r1, r5, 0 - bl strcpy - ldr r0, _0809AB30 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl strcpy - mov r1, r10 - strb r1, [r7, 0x4] - mov r2, sp - ldrb r2, [r2, 0x4] - strb r2, [r7, 0x5] - movs r0, 0xFF - strb r0, [r7, 0x6] - mov r0, r8 - strb r0, [r7, 0x7] - str r6, [r7, 0x8] - str r6, [r7, 0xC] - str r6, [r7, 0x10] - str r6, [r7, 0x14] - strb r0, [r7, 0x1C] - movs r0, 0x1 - b _0809AB3C - .align 2, 0 -_0809AB28: .4byte gAvailablePokemonNames -_0809AB2C: .4byte gUndefineText -_0809AB30: .4byte gPlayerName -_0809AB34: - mov r0, r9 - bl sub_809A83C - movs r0, 0 -_0809AB3C: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809A8B8 - - thumb_func_start sub_809AB4C -sub_809AB4C: - push {r4-r6,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r1, 16 - ldr r2, _0809AB78 - lsls r0, r5, 3 - adds r0, r5 - lsls r0, 2 - ldr r3, _0809AB7C - adds r0, r3 - ldr r2, [r2] - adds r6, r2, r0 - adds r0, r5, 0 - bl sub_809A8B8 - lsls r0, 24 - cmp r0, 0 - bne _0809AB80 - movs r0, 0 - b _0809ABA0 - .align 2, 0 -_0809AB78: .4byte gUnknown_3001B64 -_0809AB7C: .4byte 0x0000043c -_0809AB80: - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 4 - ldr r0, _0809ABA8 - adds r0, r4, r0 - movs r2, 0x2 - ldrsh r1, [r6, r2] - bl CopyCyanMonsterNametoBuffer - ldr r0, _0809ABAC - adds r4, r0 - ldr r1, _0809ABB0 - adds r0, r4, 0 - bl strcpy - movs r0, 0x1 -_0809ABA0: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809ABA8: .4byte gAvailablePokemonNames -_0809ABAC: .4byte gPlayerName -_0809ABB0: .4byte gUnknown_811617C - thumb_func_end sub_809AB4C - - thumb_func_start sub_809ABB4 -sub_809ABB4: - push {r4-r6,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r1, 16 - ldr r2, _0809ABE0 - lsls r0, r5, 3 - adds r0, r5 - lsls r0, 2 - ldr r3, _0809ABE4 - adds r0, r3 - ldr r2, [r2] - adds r6, r2, r0 - adds r0, r5, 0 - bl sub_809A8B8 - lsls r0, 24 - cmp r0, 0 - bne _0809ABE8 - movs r0, 0 - b _0809AC0A - .align 2, 0 -_0809ABE0: .4byte gUnknown_3001B64 -_0809ABE4: .4byte 0x0000043c -_0809ABE8: - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 4 - ldr r5, _0809AC10 - adds r5, r4, r5 - movs r0, 0x2 - ldrsh r1, [r6, r0] - adds r0, r5, 0 - bl CopyCyanMonsterNametoBuffer - ldr r0, _0809AC14 - adds r4, r0 - adds r0, r4, 0 - adds r1, r5, 0 - bl strcpy - movs r0, 0x1 -_0809AC0A: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809AC10: .4byte gAvailablePokemonNames -_0809AC14: .4byte gPlayerName - thumb_func_end sub_809ABB4 - - thumb_func_start sub_809AC18 -sub_809AC18: - push {r4-r6,lr} - lsls r0, 16 - asrs r5, r0, 16 - lsls r1, 16 - asrs r1, 16 - ldr r2, _0809AC44 - lsls r0, r5, 3 - adds r0, r5 - lsls r0, 2 - ldr r3, _0809AC48 - adds r0, r3 - ldr r2, [r2] - adds r6, r2, r0 - adds r0, r5, 0 - bl sub_809A8B8 - lsls r0, 24 - cmp r0, 0 - bne _0809AC4C - movs r0, 0 - b _0809AC6E - .align 2, 0 -_0809AC44: .4byte gUnknown_3001B64 -_0809AC48: .4byte 0x0000043c -_0809AC4C: - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 4 - ldr r0, _0809AC74 - adds r0, r4, r0 - movs r2, 0x2 - ldrsh r1, [r6, r2] - bl CopyCyanMonsterNametoBuffer - ldr r0, _0809AC78 - adds r4, r0 - movs r3, 0 - ldrsh r1, [r6, r3] - adds r0, r4, 0 - bl sub_80A8EC0 - movs r0, 0x1 -_0809AC6E: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809AC74: .4byte gAvailablePokemonNames -_0809AC78: .4byte gPlayerName - thumb_func_end sub_809AC18 - - thumb_func_start sub_809AC7C -sub_809AC7C: - push {r4-r6,lr} - lsls r0, 16 - asrs r0, 16 - lsls r1, 24 - asrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - ldr r2, _0809AD10 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0809AD14 - adds r1, r0 - ldr r0, [r2] - adds r4, r0, r1 - ldr r0, [r4, 0x20] - cmp r0, 0 - beq _0809ACA8 - bl CloseFile - movs r0, 0 - str r0, [r4, 0x20] -_0809ACA8: - movs r0, 0x2 - ldrsh r1, [r4, r0] - cmp r1, 0 - bge _0809ACB2 - b _0809ADC0 -_0809ACB2: - movs r0, 0x1 - negs r0, r0 - cmp r5, r0 - bne _0809ACBC - b _0809ADC0 -_0809ACBC: - cmp r1, 0 - bne _0809ACC2 - b _0809ADC0 -_0809ACC2: - cmp r6, 0x15 - beq _0809ACCE - movs r0, 0 - strb r6, [r4, 0x7] - str r0, [r4, 0x8] - str r0, [r4, 0xC] -_0809ACCE: - ldr r2, _0809AD18 - ldrb r0, [r4, 0x7] - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0x8] - ldrh r0, [r0] - adds r0, r1 - movs r6, 0 - movs r3, 0 - strh r0, [r4, 0x18] - ldrb r0, [r4, 0x7] - lsls r0, 3 - adds r0, r2 - ldr r1, [r4, 0xC] - ldrh r0, [r0, 0x2] - adds r0, r1 - strh r0, [r4, 0x1A] - ldrb r0, [r4, 0x7] - lsls r0, 3 - adds r0, r2 - ldrb r0, [r0, 0x4] - strb r0, [r4, 0x1D] - strb r6, [r4, 0x1E] - movs r0, 0x2 - negs r0, r0 - cmp r5, r0 - bne _0809AD1C - strb r5, [r4, 0x6] - str r3, [r4, 0x10] - str r3, [r4, 0x14] - strb r6, [r4, 0x1C] - movs r0, 0 - b _0809ADD2 - .align 2, 0 -_0809AD10: .4byte gUnknown_3001B64 -_0809AD14: .4byte 0x0000043c -_0809AD18: .4byte gUnknown_8116040 -_0809AD1C: - ldrb r0, [r4, 0x4] - cmp r0, 0 - beq _0809ADC0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - bl OpenPokemonDialogueSpriteFile - str r0, [r4, 0x20] - cmp r0, 0 - beq _0809ADB6 - strb r5, [r4, 0x6] - str r0, [r4, 0x10] - movs r1, 0 - bl GetFileDataPtr - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0x4D - beq _0809AD62 - cmp r0, 0x4D - bgt _0809AD4C - cmp r0, 0x47 - beq _0809AD56 - b _0809ADA8 -_0809AD4C: - cmp r0, 0x53 - beq _0809AD76 - cmp r0, 0x73 - beq _0809AD8A - b _0809ADA8 -_0809AD56: - movs r0, 0xF - ands r0, r5 - cmp r0, 0x5 - bgt _0809ADA8 - adds r0, r5, 0x6 - b _0809AD9C -_0809AD62: - ldrb r0, [r4, 0x1D] - cmp r0, 0 - beq _0809ADA8 - movs r0, 0xF - ands r0, r5 - cmp r0, 0x3 - bgt _0809ADA8 - strb r6, [r4, 0x1D] - adds r0, r5, 0x4 - b _0809AD9C -_0809AD76: - ldrb r0, [r4, 0x1D] - cmp r0, 0 - beq _0809ADA8 - movs r0, 0xF - ands r0, r5 - cmp r0, 0 - bgt _0809ADA8 - strb r6, [r4, 0x1D] - adds r0, r5, 0x1 - b _0809AD9C -_0809AD8A: - ldrb r0, [r4, 0x1D] - cmp r0, 0 - beq _0809ADA8 - movs r0, 0xF - ands r0, r5 - cmp r0, 0x1 - bgt _0809ADA8 - strb r6, [r4, 0x1D] - adds r0, r5, 0x2 -_0809AD9C: - lsls r0, 24 - asrs r5, r0, 24 - movs r0, 0x40 - orrs r5, r0 - lsls r0, r5, 24 - asrs r5, r0, 24 -_0809ADA8: - ldr r0, [r4, 0x20] - ldr r0, [r0, 0x4] - str r0, [r4, 0x14] - movs r0, 0xF - ands r5, r0 - strb r5, [r4, 0x1C] - b _0809ADBC -_0809ADB6: - str r0, [r4, 0x10] - str r0, [r4, 0x14] - strb r6, [r4, 0x1C] -_0809ADBC: - movs r0, 0x1 - b _0809ADD2 -_0809ADC0: - movs r0, 0xFF - strb r0, [r4, 0x6] - movs r0, 0 - strb r0, [r4, 0x7] - str r0, [r4, 0x8] - str r0, [r4, 0xC] - str r0, [r4, 0x10] - str r0, [r4, 0x14] - strb r0, [r4, 0x1C] -_0809ADD2: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809AC7C - - thumb_func_start sub_809ADD8 -sub_809ADD8: - push {r4,lr} - adds r4, r1, 0 - lsls r0, 16 - asrs r0, 16 - ldr r2, _0809AE28 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0809AE2C - adds r1, r0 - ldr r0, [r2] - adds r3, r0, r1 - movs r1, 0x2 - ldrsh r0, [r3, r1] - cmp r0, 0 - blt _0809AE34 - cmp r0, 0 - beq _0809AE34 - ldr r0, [r4] - ldr r1, [r4, 0x4] - str r0, [r3, 0x8] - str r1, [r3, 0xC] - ldr r2, _0809AE30 - ldrb r0, [r3, 0x7] - lsls r0, 3 - adds r0, r2 - ldr r1, [r3, 0x8] - ldrh r0, [r0] - adds r0, r1 - strh r0, [r3, 0x18] - ldrb r0, [r3, 0x7] - lsls r0, 3 - adds r0, r2 - ldr r1, [r3, 0xC] - ldrh r0, [r0, 0x2] - adds r0, r1 - strh r0, [r3, 0x1A] - movs r0, 0x1 - b _0809AE36 - .align 2, 0 -_0809AE28: .4byte gUnknown_3001B64 -_0809AE2C: .4byte 0x0000043c -_0809AE30: .4byte gUnknown_8116040 -_0809AE34: - movs r0, 0 -_0809AE36: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809ADD8 - - thumb_func_start sub_809AE3C -sub_809AE3C: - push {r4,lr} - lsls r0, 16 - asrs r2, r0, 16 - cmp r2, 0 - blt _0809AE88 - ldr r1, _0809AE80 - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - ldr r3, _0809AE84 - adds r0, r3 - ldr r1, [r1] - adds r4, r1, r0 - movs r1, 0x2 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0809AE74 - movs r1, 0x6 - ldrsb r1, [r4, r1] - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - bne _0809AE74 - adds r0, r2, 0 - movs r1, 0 - movs r2, 0 - bl sub_809AC7C -_0809AE74: - ldr r0, [r4, 0x10] - cmp r0, 0 - beq _0809AE88 - adds r0, r4, 0 - adds r0, 0x10 - b _0809AE8A - .align 2, 0 -_0809AE80: .4byte gUnknown_3001B64 -_0809AE84: .4byte 0x0000043c -_0809AE88: - movs r0, 0 -_0809AE8A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809AE3C - - thumb_func_start sub_809AE90 -sub_809AE90: - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r2, 0 - lsls r1, 16 - asrs r6, r1, 16 - cmp r4, 0 - bne _0809AEA4 - bl sub_809A76C - b _0809AEE0 -_0809AEA4: - ldrb r0, [r4] - cmp r0, 0 - beq _0809AEDC - ldr r1, _0809AED0 - lsls r0, r5, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl sub_809A680 - ldr r0, _0809AED4 - ldr r0, [r0] - adds r0, 0xC - ldr r2, _0809AED8 - lsls r1, r5, 1 - adds r1, r2 - ldrh r1, [r1] - adds r2, r6, 0 - adds r3, r4, 0 - bl sub_809B2B8 - b _0809AEE0 - .align 2, 0 -_0809AED0: .4byte gUnknown_8116134 -_0809AED4: .4byte gUnknown_3001B64 -_0809AED8: .4byte gUnknown_8116148 -_0809AEDC: - bl sub_809A7B4 -_0809AEE0: - lsls r0, 24 - lsrs r0, 24 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809AE90 - - thumb_func_start sub_809AEEC -sub_809AEEC: - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _0809AF1C - ldrb r0, [r4] - cmp r0, 0 - beq _0809AF1C - movs r0, 0x2 - movs r1, 0x1 - bl sub_809A680 - ldr r0, _0809AF18 - ldr r0, [r0] - adds r0, 0xC - movs r2, 0x1 - negs r2, r2 - movs r1, 0xC2 - adds r3, r4, 0 - bl sub_809B2B8 - b _0809AF20 - .align 2, 0 -_0809AF18: .4byte gUnknown_3001B64 -_0809AF1C: - bl sub_809A76C -_0809AF20: - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809AEEC - - thumb_func_start sub_809AF2C -sub_809AF2C: - push {r4,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _0809AF5C - ldrb r0, [r4] - cmp r0, 0 - beq _0809AF5C - movs r0, 0x2 - movs r1, 0x1 - bl sub_809A680 - ldr r0, _0809AF58 - ldr r0, [r0] - adds r0, 0xC - movs r2, 0x1 - negs r2, r2 - movs r1, 0xC2 - adds r3, r4, 0 - bl sub_809B2B8 - b _0809AF60 - .align 2, 0 -_0809AF58: .4byte gUnknown_3001B64 -_0809AF5C: - bl sub_809A76C -_0809AF60: - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809AF2C - - thumb_func_start sub_809AF6C -sub_809AF6C: - push {r4,lr} - adds r4, r1, 0 - cmp r4, 0 - beq _0809AF9C - ldrb r0, [r4] - cmp r0, 0 - beq _0809AF9C - movs r0, 0x3 - movs r1, 0x1 - bl sub_809A680 - ldr r0, _0809AF98 - ldr r0, [r0] - adds r0, 0xC - movs r2, 0x1 - negs r2, r2 - movs r1, 0x65 - adds r3, r4, 0 - bl sub_809B2B8 - b _0809AFA0 - .align 2, 0 -_0809AF98: .4byte gUnknown_3001B64 -_0809AF9C: - bl sub_809A76C -_0809AFA0: - lsls r0, 24 - lsrs r0, 24 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809AF6C - - thumb_func_start sub_809AFAC -sub_809AFAC: - push {lr} - movs r1, 0 - ldr r0, _0809AFC4 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x4 - bne _0809AFBC - movs r1, 0x1 -_0809AFBC: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809AFC4: .4byte gUnknown_3001B64 - thumb_func_end sub_809AFAC - - thumb_func_start sub_809AFC8 -sub_809AFC8: - push {r4,r5,lr} - sub sp, 0x8 - adds r5, r1, 0 - adds r1, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - asrs r1, 16 - ldr r4, _0809AFF8 - negs r2, r0 - orrs r2, r0 - lsrs r2, 31 - str r1, [sp] - str r3, [sp, 0x4] - adds r0, r4, 0 - movs r1, 0 - adds r3, r5, 0 - bl sub_809B028 - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809AFF8: .4byte gUnknown_81160E8 - thumb_func_end sub_809AFC8 - - thumb_func_start sub_809AFFC -sub_809AFFC: - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - mov r0, sp - bl sub_809B18C - lsls r0, 24 - lsrs r2, r0, 24 - cmp r4, 0 - beq _0809B01C - movs r1, 0 - ldr r0, [sp] - cmp r0, 0x1 - bne _0809B01A - movs r1, 0x1 -_0809B01A: - strb r1, [r4] -_0809B01C: - adds r0, r2, 0 - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_809AFFC - - thumb_func_start sub_809B028 -sub_809B028: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x14 - mov r8, r0 - adds r7, r2, 0 - adds r6, r3, 0 - ldr r0, [sp, 0x2C] - lsls r1, 24 - lsrs r5, r1, 24 - lsls r0, 16 - asrs r4, r0, 16 - ldr r1, _0809B084 - lsls r0, r6, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl sub_809A680 - ldr r0, _0809B088 - ldr r1, [r0] - ldr r0, _0809B08C - adds r2, r1, r0 - movs r0, 0x1 - str r0, [r2] - movs r0, 0x83 - lsls r0, 3 - adds r2, r1, r0 - movs r0, 0 - str r0, [r2] - ldr r2, _0809B090 - adds r0, r1, r2 - mov r2, r8 - str r2, [r0] - movs r2, 0x84 - lsls r2, 3 - adds r0, r1, r2 - movs r2, 0x2 - str r2, [r0] - ldr r0, _0809B094 - adds r1, r0 - cmp r5, 0 - beq _0809B098 - str r2, [r1] - b _0809B09A - .align 2, 0 -_0809B084: .4byte gUnknown_8116134 -_0809B088: .4byte gUnknown_3001B64 -_0809B08C: .4byte 0x00000414 -_0809B090: .4byte 0x0000041c -_0809B094: .4byte 0x00000424 -_0809B098: - str r5, [r1] -_0809B09A: - ldr r0, _0809B0D4 - ldr r0, [r0] - movs r1, 0x85 - lsls r1, 3 - adds r2, r0, r1 - movs r1, 0 - str r1, [r2] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - str r7, [r0] - ldr r0, _0809B0D8 - lsls r2, r6, 1 - adds r0, r2, r0 - ldrh r1, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - adds r5, r2, 0 - cmp r0, 0 - beq _0809B0F6 - cmp r4, 0 - bge _0809B0E4 - ldr r0, _0809B0DC - ldr r1, _0809B0E0 - bl strcpy - b _0809B0F6 - .align 2, 0 -_0809B0D4: .4byte gUnknown_3001B64 -_0809B0D8: .4byte gUnknown_8116148 -_0809B0DC: .4byte gUnknown_202E5D8 -_0809B0E0: .4byte gUnknown_8116180 -_0809B0E4: - ldr r0, _0809B134 - ldr r1, _0809B138 - lsls r2, r4, 2 - adds r2, r4 - lsls r2, 4 - ldr r3, _0809B13C - adds r2, r3 - bl sprintfStatic -_0809B0F6: - adds r0, r4, 0 - bl sub_809AE3C - ldr r4, _0809B140 - movs r1, 0 - str r1, [sp] - movs r3, 0x4 - str r3, [sp, 0x4] - str r1, [sp, 0x8] - str r0, [sp, 0xC] - ldr r0, _0809B144 - adds r0, r5, r0 - ldrh r2, [r0] - movs r0, 0x80 - lsls r0, 1 - ands r0, r2 - cmp r0, 0 - beq _0809B11C - movs r1, 0xC -_0809B11C: - movs r0, 0x80 - lsls r0, 2 - ands r0, r2 - cmp r0, 0 - beq _0809B128 - orrs r1, r3 -_0809B128: - movs r0, 0x20 - ands r0, r2 - cmp r0, 0 - beq _0809B148 - movs r0, 0x21 - b _0809B14A - .align 2, 0 -_0809B134: .4byte gUnknown_202E5D8 -_0809B138: .4byte gUnknown_8116188 -_0809B13C: .4byte gPlayerName -_0809B140: .4byte sub_809B428 -_0809B144: .4byte gUnknown_8116148 -_0809B148: - movs r0, 0x1 -_0809B14A: - orrs r0, r1 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x10] - ldr r0, [sp, 0x30] - adds r1, r4, 0 - adds r2, r7, 0 - mov r3, r8 - bl sub_8014248 - ldr r0, _0809B184 - ldr r0, [r0] - ldr r1, _0809B188 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0809B176 - movs r0, 0x1 - bl sub_809A6E4 -_0809B176: - add sp, 0x14 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0809B184: .4byte gUnknown_3001B64 -_0809B188: .4byte 0x00000424 - thumb_func_end sub_809B028 - - thumb_func_start sub_809B18C -sub_809B18C: - push {lr} - adds r1, r0, 0 - ldr r2, _0809B1BC - cmp r1, 0 - beq _0809B1A2 - ldr r0, [r2] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - str r0, [r1] -_0809B1A2: - movs r1, 0 - ldr r0, [r2] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x3 - bne _0809B1B4 - movs r1, 0x1 -_0809B1B4: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809B1BC: .4byte gUnknown_3001B64 - thumb_func_end sub_809B18C - - thumb_func_start sub_809B1C0 -sub_809B1C0: - push {lr} - adds r3, r2, 0 - movs r2, 0 - bl sub_809B1D4 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_809B1C0 - - thumb_func_start sub_809B1D4 -sub_809B1D4: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - cmp r4, 0xB - beq _0809B1E8 - cmp r4, 0xC - beq _0809B1F0 - b _0809B202 -_0809B1E8: - adds r0, r5, 0 - bl sub_8021700 - b _0809B1F8 -_0809B1F0: - bl sub_8001D88 - bl sub_802FCF0 -_0809B1F8: - lsls r0, 24 - cmp r0, 0 - beq _0809B202 - movs r0, 0 - b _0809B24C -_0809B202: - movs r0, 0x4 - movs r1, 0 - bl sub_809A680 - ldr r0, _0809B254 - ldr r1, [r0] - ldr r2, _0809B258 - adds r0, r1, r2 - str r4, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r1, r3 - movs r2, 0 - str r2, [r0] - adds r3, 0x4 - adds r0, r1, r3 - str r2, [r0] - movs r0, 0x84 - lsls r0, 3 - adds r2, r1, r0 - movs r0, 0x1 - str r0, [r2] - ldr r2, _0809B25C - adds r0, r1, r2 - str r5, [r0] - adds r3, 0xC - adds r0, r1, r3 - str r6, [r0] - adds r2, 0x8 - adds r0, r1, r2 - str r7, [r0] - adds r3, 0x8 - adds r1, r3 - movs r0, 0x1 - negs r0, r0 - str r0, [r1] - movs r0, 0x1 -_0809B24C: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0809B254: .4byte gUnknown_3001B64 -_0809B258: .4byte 0x00000414 -_0809B25C: .4byte 0x00000424 - thumb_func_end sub_809B1D4 - - thumb_func_start sub_809B260 -sub_809B260: - push {lr} - adds r1, r0, 0 - ldr r2, _0809B290 - cmp r1, 0 - beq _0809B276 - ldr r0, [r2] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - str r0, [r1] -_0809B276: - movs r1, 0 - ldr r0, [r2] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x3 - bne _0809B288 - movs r1, 0x1 -_0809B288: - adds r0, r1, 0 - pop {r1} - bx r1 - .align 2, 0 -_0809B290: .4byte gUnknown_3001B64 - thumb_func_end sub_809B260 - - thumb_func_start sub_809B294 -sub_809B294: - push {lr} - movs r0, 0x3 - bl sub_80063D8 - ldr r0, _0809B2B4 - ldr r0, [r0] - adds r0, 0xC - movs r2, 0x1 - negs r2, r2 - movs r1, 0 - movs r3, 0 - bl sub_809B2B8 - pop {r0} - bx r0 - .align 2, 0 -_0809B2B4: .4byte gUnknown_3001B64 - thumb_func_end sub_809B294 - - thumb_func_start sub_809B2B8 -sub_809B2B8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x14 - adds r4, r0, 0 - adds r7, r3, 0 - lsls r1, 16 - lsrs r5, r1, 16 - lsls r2, 16 - asrs r6, r2, 16 - strh r5, [r4] - cmp r7, 0 - bne _0809B2F6 - cmp r5, 0 - bne _0809B2DE - str r7, [r4, 0x4] - movs r0, 0 - b _0809B3FC -_0809B2DE: - movs r0, 0x4 - ands r0, r5 - cmp r0, 0 - bne _0809B2E8 - b _0809B3FA -_0809B2E8: - bl sub_8014490 - movs r0, 0 - movs r1, 0x1 - bl sub_809A680 - b _0809B3FA -_0809B2F6: - movs r0, 0x1 - str r0, [r4, 0x4] - adds r0, 0xFF - ands r0, r5 - cmp r0, 0 - beq _0809B32A - cmp r6, 0 - bge _0809B318 - ldr r0, _0809B310 - ldr r1, _0809B314 - bl strcpy - b _0809B32A - .align 2, 0 -_0809B310: .4byte gUnknown_202E5D8 -_0809B314: .4byte gUnknown_8116180 -_0809B318: - ldr r0, _0809B3D0 - ldr r1, _0809B3D4 - lsls r2, r6, 2 - adds r2, r6 - lsls r2, 4 - ldr r3, _0809B3D8 - adds r2, r3 - bl sprintfStatic -_0809B32A: - ldr r0, _0809B3DC - mov r8, r0 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0x3 - bne _0809B344 - adds r4, 0x8 - ldr r1, _0809B3E0 - adds r0, r4, 0 - adds r2, r7, 0 - bl sprintfStatic - adds r7, r4, 0 -_0809B344: - adds r0, r6, 0 - bl sub_809AE3C - ldr r1, _0809B3E4 - mov r9, r1 - movs r1, 0x1 - negs r1, r1 - mov r12, r1 - movs r2, 0 - str r2, [sp] - movs r1, 0x3 - str r1, [sp, 0x4] - str r2, [sp, 0x8] - str r0, [sp, 0xC] - movs r6, 0x80 - lsls r6, 1 - adds r0, r5, 0 - ands r0, r6 - movs r1, 0 - cmp r0, 0 - beq _0809B370 - movs r1, 0xC -_0809B370: - movs r4, 0x80 - lsls r4, 2 - adds r0, r5, 0 - ands r0, r4 - cmp r0, 0 - beq _0809B380 - movs r0, 0x4 - orrs r1, r0 -_0809B380: - mov r0, r8 - ldr r3, [r0] - ldr r2, [r3] - cmp r2, 0x3 - bne _0809B38E - movs r0, 0x10 - orrs r1, r0 -_0809B38E: - cmp r2, 0x2 - bne _0809B396 - movs r0, 0x10 - orrs r1, r0 -_0809B396: - adds r2, r1, 0 - movs r1, 0x20 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _0809B3A4 - orrs r2, r1 -_0809B3A4: - lsrs r1, r5, 6 - movs r0, 0x1 - ands r1, r0 - orrs r1, r2 - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - beq _0809B3B6 - orrs r1, r6 -_0809B3B6: - movs r0, 0x4 - ands r0, r5 - cmp r0, 0 - beq _0809B3C0 - orrs r1, r4 -_0809B3C0: - ldr r0, [r3, 0x4] - cmp r0, r12 - beq _0809B3E8 - movs r0, 0x2 - orrs r0, r1 - lsls r0, 16 - b _0809B3EA - .align 2, 0 -_0809B3D0: .4byte gUnknown_202E5D8 -_0809B3D4: .4byte gUnknown_8116188 -_0809B3D8: .4byte gPlayerName -_0809B3DC: .4byte gUnknown_3001B64 -_0809B3E0: .4byte gUnknown_8116190 -_0809B3E4: .4byte sub_809B428 -_0809B3E8: - lsls r0, r1, 16 -_0809B3EA: - lsrs r0, 16 - str r0, [sp, 0x10] - adds r0, r7, 0 - mov r1, r9 - mov r2, r12 - movs r3, 0 - bl sub_8014248 -_0809B3FA: - movs r0, 0x1 -_0809B3FC: - add sp, 0x14 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809B2B8 - - thumb_func_start sub_809B40C -sub_809B40C: - push {lr} - ldr r0, [r0, 0x4] - cmp r0, 0 - beq _0809B41C - cmp r0, 0x3 - bhi _0809B420 - cmp r0, 0x2 - bcc _0809B420 -_0809B41C: - movs r0, 0 - b _0809B422 -_0809B420: - movs r0, 0x1 -_0809B422: - pop {r1} - bx r1 - thumb_func_end sub_809B40C - - thumb_func_start sub_809B428 -sub_809B428: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r2, 0 - ldrb r0, [r5, 0x2] - cmp r0, 0x4F - beq _0809B44C - cmp r0, 0x4F - bgt _0809B43E - cmp r0, 0x49 - beq _0809B444 - b _0809B46A -_0809B43E: - cmp r0, 0x57 - beq _0809B454 - b _0809B46A -_0809B444: - movs r0, 0x1E - bl sub_8099A34 - b _0809B462 -_0809B44C: - movs r0, 0x1E - bl sub_8099A48 - b _0809B462 -_0809B454: - bl sub_8099B94 - lsls r0, 24 - cmp r0, 0 - beq _0809B462 - adds r0, r5, 0 - b _0809B46C -_0809B462: - adds r1, r4, 0 - adds r1, 0x21 - movs r0, 0x1 - strb r0, [r1] -_0809B46A: - movs r0, 0 -_0809B46C: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_809B428 - - thumb_func_start sub_809B474 -sub_809B474: - push {r4-r6,lr} - ldr r0, _0809B498 - ldr r1, [r0] - ldr r2, [r1] - adds r6, r0, 0 - cmp r2, 0x3 - bls _0809B56E - cmp r2, 0x4 - bne _0809B56E - movs r5, 0x84 - lsls r5, 3 - adds r0, r1, r5 - ldr r0, [r0] - cmp r0, 0x1 - beq _0809B49C - cmp r0, 0x2 - beq _0809B508 - b _0809B56E - .align 2, 0 -_0809B498: .4byte gUnknown_3001B64 -_0809B49C: - bl sub_809B648 - lsls r0, 24 - cmp r0, 0 - bne _0809B4B0 - ldr r0, [r6] - adds r0, r5 - movs r1, 0x3 - str r1, [r0] - b _0809B4E8 -_0809B4B0: - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r4, [r0] - cmp r4, 0 - beq _0809B4F8 - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _0809B4F2 - bl sub_809B294 - ldr r0, [r4, 0x4] - bl _call_via_r0 - lsls r0, 24 - cmp r0, 0 - bne _0809B4F2 - ldr r1, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r2, r1, r3 - movs r0, 0x1 - negs r0, r0 - str r0, [r2] - adds r1, r5 - movs r0, 0x3 - str r0, [r1] -_0809B4E8: - movs r0, 0 - movs r1, 0x1 - bl sub_809A680 - b _0809B56E -_0809B4F2: - ldrh r0, [r4] - bl sub_809A6E4 -_0809B4F8: - ldr r0, _0809B534 - ldr r1, [r0] - movs r2, 0x84 - lsls r2, 3 - adds r1, r2 - movs r2, 0x2 - str r2, [r1] - adds r6, r0, 0 -_0809B508: - ldr r0, [r6] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r4, [r0] - cmp r4, 0 - beq _0809B54E - ldr r0, [r4, 0xC] - bl _call_via_r0 - adds r2, r0, 0 - cmp r2, 0x1 - bls _0809B56E - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r1, r0, r3 - cmp r2, 0x2 - bne _0809B538 - movs r0, 0x1 - negs r0, r0 - b _0809B53A - .align 2, 0 -_0809B534: .4byte gUnknown_3001B64 -_0809B538: - movs r0, 0 -_0809B53A: - str r0, [r1] - ldr r0, [r4, 0x8] - cmp r0, 0 - beq _0809B546 - bl _call_via_r0 -_0809B546: - ldrh r0, [r4] - bl sub_809A6F8 - b _0809B558 -_0809B54E: - bl sub_809B648 - lsls r0, 24 - cmp r0, 0 - bne _0809B56E -_0809B558: - ldr r0, _0809B578 - ldr r0, [r0] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - movs r1, 0x3 - str r1, [r0] - movs r0, 0 - movs r1, 0x1 - bl sub_809A680 -_0809B56E: - bl sub_809B57C - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809B578: .4byte gUnknown_3001B64 - thumb_func_end sub_809B474 - - thumb_func_start sub_809B57C -sub_809B57C: - push {r4,r5,lr} - sub sp, 0x8 - bl xxx_draw_string_80144C4 - ldr r5, _0809B5C8 - ldr r0, [r5] - ldr r1, [r0] - cmp r1, 0x3 - bhi _0809B5E4 - cmp r1, 0x1 - bcc _0809B5E4 - movs r4, 0x84 - lsls r4, 3 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _0809B5CC - cmp r0, 0x3 - beq _0809B5CC - mov r0, sp - bl sub_80144A4 - cmp r0, 0 - bne _0809B5E4 - ldr r1, [sp] - movs r0, 0x1 - bl sub_809D9E0 - ldr r1, [r5] - adds r2, r1, r4 - movs r0, 0x3 - str r0, [r2] - movs r0, 0x86 - lsls r0, 3 - adds r1, r0 - ldr r0, [sp] - str r0, [r1] - b _0809B5E4 - .align 2, 0 -_0809B5C8: .4byte gUnknown_3001B64 -_0809B5CC: - add r0, sp, 0x4 - bl sub_80144A4 - adds r4, r0, 0 - cmp r4, 0 - bne _0809B5E4 - movs r0, 0 - bl sub_809D9B8 - ldr r0, _0809B5FC - ldr r0, [r0] - str r4, [r0] -_0809B5E4: - ldr r0, _0809B5FC - ldr r0, [r0] - ldr r1, _0809B600 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - bge _0809B604 - movs r0, 0 - movs r1, 0 - bl sub_8005838 - b _0809B60C - .align 2, 0 -_0809B5FC: .4byte gUnknown_3001B64 -_0809B600: .4byte 0x00000434 -_0809B604: - movs r0, 0 - movs r1, 0x5 - bl sub_8005838 -_0809B60C: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_809B57C - - thumb_func_start sub_809B614 -sub_809B614: - push {lr} - bl sub_80060EC - ldr r0, _0809B62C - ldr r2, _0809B630 - ldrh r1, [r2] - strh r1, [r0] - ldr r0, _0809B634 - ands r0, r1 - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_0809B62C: .4byte gUnknown_20399DE -_0809B630: .4byte gUnknown_20399DC -_0809B634: .4byte 0x0000fffd - thumb_func_end sub_809B614 - - thumb_func_start sub_809B638 -sub_809B638: - push {lr} - bl xxx_call_update_bg_vram - pop {r0} - bx r0 - thumb_func_end sub_809B638 - - thumb_func_start nullsub_210 -nullsub_210: - bx lr - thumb_func_end nullsub_210 - - thumb_func_start sub_809B648 -sub_809B648: - push {r4-r6,lr} - sub sp, 0x24 - ldr r0, _0809B66C - ldr r1, [r0] - ldr r2, _0809B670 - adds r1, r2 - ldr r1, [r1] - subs r1, 0x2 - adds r6, r0, 0 - cmp r1, 0x2C - bls _0809B662 - bl _0809C392 -_0809B662: - lsls r0, r1, 2 - ldr r1, _0809B674 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809B66C: .4byte gUnknown_3001B64 -_0809B670: .4byte 0x00000414 -_0809B674: .4byte _0809B678 - .align 2, 0 -_0809B678: - .4byte _0809B72C - .4byte _0809B772 - .4byte _0809B7AC - .4byte _0809B834 - .4byte _0809B89C - .4byte _0809B8FC - .4byte _0809B91C - .4byte _0809B944 - .4byte _0809B9D2 - .4byte _0809BA2A - .4byte _0809BAA8 - .4byte _0809BB66 - .4byte _0809BBDA - .4byte _0809BBDA - .4byte _0809BC26 - .4byte _0809BC68 - .4byte _0809C1B4 - .4byte _0809BC78 - .4byte _0809C1C2 - .4byte _0809C1C2 - .4byte _0809C1C8 - .4byte _0809BCBC - .4byte _0809BCBC - .4byte _0809BD1C - .4byte _0809BD64 - .4byte _0809BDE8 - .4byte _0809BE30 - .4byte _0809BE40 - .4byte _0809BE50 - .4byte _0809BE60 - .4byte _0809BE9C - .4byte _0809BEB8 - .4byte _0809BED4 - .4byte _0809BF70 - .4byte _0809BFFC - .4byte _0809C072 - .4byte _0809C0B8 - .4byte _0809C0FC - .4byte _0809C148 - .4byte _0809C158 - .4byte _0809C168 - .4byte _0809C204 - .4byte _0809C238 - .4byte _0809C280 - .4byte _0809C32A -_0809B72C: - ldr r2, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r2, r3 - ldr r0, [r0] - cmp r0, 0x1 - beq _0809B780 - ldr r0, _0809B754 - ldrh r0, [r0, 0x2] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - beq _0809B758 - movs r0, 0x86 - lsls r0, 3 - adds r1, r2, r0 - movs r0, 0x1 - str r0, [r1] - bl _0809C392 - .align 2, 0 -_0809B754: .4byte gRealInputs -_0809B758: - bl sub_8094D14 - lsls r0, 24 - cmp r0, 0 - beq _0809B784 - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x2 - str r1, [r0] - bl _0809C392 -_0809B772: - ldr r0, [r6] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B78A -_0809B780: - bl sub_809B294 -_0809B784: - movs r0, 0x1 - bl _0809C394 -_0809B78A: - ldr r0, _0809B7A8 - ldrh r1, [r0] - ldrh r0, [r0, 0x2] - movs r2, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0809B79C - bl _0809C392 -_0809B79C: - ands r1, r2 - cmp r1, 0 - bne _0809B784 - bl _0809C392 - .align 2, 0 -_0809B7A8: .4byte gRealInputs -_0809B7AC: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B7F4 - bl sub_809B294 - ldr r1, [r6] - ldr r2, _0809B7D8 - adds r0, r1, r2 - ldr r0, [r0] - cmp r0, 0 - bne _0809B7E0 - ldr r3, _0809B7DC - adds r0, r1, r3 - ldr r1, [r0] - movs r0, 0 - bl sub_801602C - b _0809B784 - .align 2, 0 -_0809B7D8: .4byte 0x00000424 -_0809B7DC: .4byte 0x0000042c -_0809B7E0: - ldr r2, _0809B7F0 - adds r0, r1, r2 - ldr r1, [r0] - movs r0, 0x2 - bl sub_801602C - b _0809B784 - .align 2, 0 -_0809B7F0: .4byte 0x0000042c -_0809B7F4: - bl sub_8016080 - cmp r0, 0x3 - bne _0809B80C - bl sub_80160D8 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809C1BC -_0809B80C: - cmp r0, 0x2 - bne _0809B784 - ldr r0, [r6] - ldr r1, _0809B830 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0 - beq _0809B784 - bl sub_80160D8 - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 -_0809B828: - movs r1, 0 - str r1, [r0] - bl _0809C392 - .align 2, 0 -_0809B830: .4byte 0x00000424 -_0809B834: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B85C - bl sub_809B294 - ldr r0, [r6] - ldr r1, _0809B858 - adds r0, r1 - ldr r1, [r0] - movs r0, 0x1 - bl sub_801602C - b _0809B784 - .align 2, 0 -_0809B858: .4byte 0x0000042c -_0809B85C: - bl sub_8016080 - cmp r0, 0x3 - bne _0809B874 - bl sub_80160D8 - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - bl _0809C1BC -_0809B874: - cmp r0, 0x2 - beq _0809B87A - b _0809B784 -_0809B87A: - ldr r0, [r6] - ldr r3, _0809B898 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0 - bne _0809B888 - b _0809B784 -_0809B888: - bl sub_80160D8 - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - b _0809B828 - .align 2, 0 -_0809B898: .4byte 0x00000424 -_0809B89C: - ldr r0, [r6] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B8C4 - bl sub_809B294 - ldr r0, [r6] - ldr r3, _0809B8C0 - adds r0, r3 - ldr r1, [r0] - movs r0, 0x4 - bl sub_80151C0 - b _0809B784 - .align 2, 0 -_0809B8C0: .4byte 0x0000042c -_0809B8C4: - bl sub_80154F0 - cmp r0, 0x3 - bne _0809B8D4 - bl sub_80155F0 - bl _0809C1B4 -_0809B8D4: - cmp r0, 0x2 - beq _0809B8DA - b _0809B784 -_0809B8DA: - ldr r0, [r6] - ldr r2, _0809B8F8 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0 - bne _0809B8E8 - b _0809B784 -_0809B8E8: - bl sub_80155F0 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B828 - .align 2, 0 -_0809B8F8: .4byte 0x00000424 -_0809B8FC: - ldr r0, [r6] - ldr r1, _0809B914 - adds r0, r1 - ldr r0, [r0] - bl sub_801D014 - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809B918 - b _0809B932 - .align 2, 0 -_0809B914: .4byte 0x0000042c -_0809B918: .4byte gUnknown_81161A8 -_0809B91C: - ldr r0, [r6] - ldr r3, _0809B93C - adds r0, r3 - ldr r0, [r0] - bl sub_801D014 - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809B940 -_0809B932: - str r1, [r0] - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 - .align 2, 0 -_0809B93C: .4byte 0x0000042c -_0809B940: .4byte gUnknown_81161B8 -_0809B944: - bl sub_809B294 - ldr r4, _0809B984 - ldr r0, [r4] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809B998 - bl sub_809B294 - ldr r0, [r4] - ldr r3, _0809B988 - adds r0, r3 - ldr r0, [r0] - ldr r1, _0809B98C - bl sub_8015080 - lsls r0, 24 - cmp r0, 0 - bne _0809B990 - ldr r0, [r4] -_0809B972: - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 -_0809B978: - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl _0809C392 - .align 2, 0 -_0809B984: .4byte gUnknown_3001B64 -_0809B988: .4byte 0x0000042c -_0809B98C: .4byte gUnknown_811610C -_0809B990: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809B998: - bl sub_801516C - cmp r0, 0x2 - beq _0809B9BC - cmp r0, 0x3 - beq _0809B9A6 - b _0809B784 -_0809B9A6: - bl sub_8015198 - ldr r1, [r4] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - str r0, [r1] - bl sub_80151A4 - bl _0809C392 -_0809B9BC: - ldr r0, [r4] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_80151A4 - bl _0809C392 -_0809B9D2: - bl sub_809B294 - ldr r4, _0809BA08 - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BA1C - bl sub_809B294 - ldr r0, [r4] - ldr r2, _0809BA0C - adds r0, r2 - ldr r0, [r0] - ldr r1, _0809BA10 - bl sub_8015080 - lsls r0, 24 - cmp r0, 0 - bne _0809BA14 - ldr r0, [r4] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BA08: .4byte gUnknown_3001B64 -_0809BA0C: .4byte 0x0000042c -_0809BA10: .4byte gUnknown_811612C -_0809BA14: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BA1C: - bl sub_801516C - cmp r0, 0x2 - beq _0809B9BC - cmp r0, 0x3 - beq _0809B9A6 - b _0809B784 -_0809BA2A: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BA68 - bl sub_809B294 - ldr r0, [r6] - ldr r2, _0809BA5C - adds r0, r2 - ldr r0, [r0] - movs r1, 0x3 - bl sub_80211AC - lsls r0, 24 - cmp r0, 0 - bne _0809BA60 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BA5C: .4byte 0x00000424 -_0809BA60: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BA68: - movs r0, 0x1 - bl sub_8021274 - cmp r0, 0x2 - beq _0809BA92 - cmp r0, 0x3 - beq _0809BA78 - b _0809B784 -_0809BA78: - bl sub_802132C - ldr r1, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - bl sub_80213A0 - bl _0809C392 -_0809BA92: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_80213A0 - bl _0809C392 -_0809BAA8: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BB10 - movs r0, 0 - movs r1, 0x12 - bl sub_8001658 - lsls r0, 16 - asrs r0, 16 - bl sub_80A2654 - lsls r0, 16 - asrs r4, r0, 16 - bl sub_809B294 - movs r0, 0x3 - movs r1, 0 - movs r2, 0xA - movs r3, 0x1 - bl sub_802F73C - lsls r0, 24 - cmp r0, 0 - bne _0809BAEA - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809B978 -_0809BAEA: - movs r5, 0x1 - negs r5, r5 - cmp r4, r5 - beq _0809BB08 - adds r0, r4, 0 - bl sub_802F848 - lsls r0, 24 - cmp r0, 0 - bne _0809BB08 - movs r0, 0 - movs r1, 0x12 - adds r2, r5, 0 - bl sub_80018D8 -_0809BB08: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BB10: - movs r0, 0x1 - bl sub_802F8A0 - cmp r0, 0x2 - beq _0809BB50 - cmp r0, 0x3 - beq _0809BB20 - b _0809B784 -_0809BB20: - bl sub_802F90C - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - adds r0, r4, 0 - bl sub_80A26B8 - adds r2, r0, 0 - lsls r2, 16 - asrs r2, 16 - movs r0, 0 - movs r1, 0x12 - bl sub_80018D8 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - str r4, [r0] - bl sub_802F974 - bl _0809C392 -_0809BB50: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_802F974 - bl _0809C392 -_0809BB66: - ldr r0, [r6] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BB9A - bl sub_809B294 - movs r0, 0x3 - movs r1, 0 - movs r2, 0xA - bl sub_80302E8 - lsls r0, 24 - cmp r0, 0 - bne _0809BB92 - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 -_0809BB92: - movs r0, 0x4 - bl PlayMenuSoundEffect - b _0809B784 -_0809BB9A: - movs r0, 0x1 - bl sub_80303AC - cmp r0, 0x2 - beq _0809BBC4 - cmp r0, 0x3 - beq _0809BBAA - b _0809B784 -_0809BBAA: - bl sub_8030418 - ldr r1, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - lsls r0, 16 - asrs r0, 16 - str r0, [r1] - bl sub_8030480 - bl _0809C392 -_0809BBC4: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_8030480 - bl _0809C392 -_0809BBDA: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BC14 - bl sub_809B294 - ldr r0, [r6] - ldr r2, _0809BC10 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0xE - bne _0809BC02 - movs r0, 0 - movs r1, 0x18 - movs r2, 0x1 - bl sub_80018D8 -_0809BC02: - movs r0, 0x1 - bl sub_8011C28 - movs r0, 0 - bl PrepareSavePakWrite - b _0809B784 - .align 2, 0 -_0809BC10: .4byte 0x00000414 -_0809BC14: - bl WriteSavePak - lsls r0, 24 - cmp r0, 0 - beq _0809BC20 - b _0809B784 -_0809BC20: - bl FinishWriteSavePak - b _0809C392 -_0809BC26: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_809B294 - adds r0, r4, 0 - bl CreateKangaskhanStorage - lsls r0, 24 - cmp r0, 0 - beq _0809BC5C - ldr r0, _0809BC54 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BC58 - b _0809C266 - .align 2, 0 -_0809BC54: .4byte gUnknown_3001B64 -_0809BC58: .4byte gUnknown_81161C8 -_0809BC5C: - ldr r0, _0809BC64 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809BC64: .4byte gUnknown_3001B64 -_0809BC68: - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BC74 - b _0809C266 - .align 2, 0 -_0809BC74: .4byte gUnknown_81161D8 -_0809BC78: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_809B294 - adds r0, r4, 0 - bl CreateFelicityBank - lsls r0, 24 - cmp r0, 0 - beq _0809BCB0 - ldr r0, _0809BCA8 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BCAC - b _0809C266 - .align 2, 0 -_0809BCA8: .4byte gUnknown_3001B64 -_0809BCAC: .4byte gUnknown_81161E8 -_0809BCB0: - ldr r0, _0809BCB8 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809BCB8: .4byte gUnknown_3001B64 -_0809BCBC: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_809B294 - ldr r0, _0809BCE0 - ldr r0, [r0] - ldr r2, _0809BCE4 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x17 - bne _0809BCE8 - negs r0, r4 - orrs r0, r4 - lsrs r0, 31 - b _0809BCF0 - .align 2, 0 -_0809BCE0: .4byte gUnknown_3001B64 -_0809BCE4: .4byte 0x00000414 -_0809BCE8: - movs r0, 0x2 - cmp r4, 0 - beq _0809BCF0 - movs r0, 0x3 -_0809BCF0: - bl CreateKecleonBros - lsls r0, 24 - cmp r0, 0 - beq _0809BD10 - ldr r0, _0809BD08 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BD0C - b _0809C266 - .align 2, 0 -_0809BD08: .4byte gUnknown_3001B64 -_0809BD0C: .4byte gUnknown_81161F8 -_0809BD10: - ldr r0, _0809BD18 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809BD18: .4byte gUnknown_3001B64 -_0809BD1C: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_809B294 - adds r0, r4, 0 - bl sub_801FB50 - lsls r0, 24 - cmp r0, 0 - beq _0809BD54 - ldr r0, _0809BD4C - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BD50 - b _0809C266 - .align 2, 0 -_0809BD4C: .4byte gUnknown_3001B64 -_0809BD50: .4byte gUnknown_8116208 -_0809BD54: - ldr r0, _0809BD60 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BD60: .4byte gUnknown_3001B64 -_0809BD64: - ldr r0, [r6] - movs r1, 0x84 - lsls r1, 3 - adds r0, r1 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809BD84 - bl sub_809B294 - movs r0, 0 - movs r1, 0x39 - bl sub_80015C0 - bl sub_802465C - b _0809B784 -_0809BD84: - bl sub_80246F0 - adds r4, r0, 0 - movs r0, 0 - movs r1, 0x39 - bl sub_8001658 - cmp r0, 0 - bne _0809BDB2 - bl HasEvolutionCompleted - lsls r0, 24 - cmp r0, 0 - beq _0809BDB2 - movs r0, 0 - movs r1, 0x39 - movs r2, 0x1 - bl sub_80018D8 - movs r0, 0x46 - movs r1, 0 - bl GroundMap_ExecuteEvent -_0809BDB2: - cmp r4, 0x3 - bne _0809BDCC - bl CleanLuminousCave - ldr r0, _0809BDC8 - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809C1BC - .align 2, 0 -_0809BDC8: .4byte gUnknown_3001B64 -_0809BDCC: - cmp r4, 0x2 - beq _0809BDD2 - b _0809B784 -_0809BDD2: - bl CleanLuminousCave - ldr r0, _0809BDE4 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B828 - .align 2, 0 -_0809BDE4: .4byte gUnknown_3001B64 -_0809BDE8: - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - lsrs r4, 31 - bl sub_809B294 - adds r0, r4, 0 - bl CreateWigglytuffShop - lsls r0, 24 - cmp r0, 0 - beq _0809BE20 - ldr r0, _0809BE18 - ldr r0, [r0] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809BE1C - b _0809C266 - .align 2, 0 -_0809BE18: .4byte gUnknown_3001B64 -_0809BE1C: .4byte gUnknown_8116218 -_0809BE20: - ldr r0, _0809BE2C - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809B978 - .align 2, 0 -_0809BE2C: .4byte gUnknown_3001B64 -_0809BE30: - ldr r0, [r6] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BE3C - b _0809C266 - .align 2, 0 -_0809BE3C: .4byte gUnknown_8116228 -_0809BE40: - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809BE4C - b _0809C266 - .align 2, 0 -_0809BE4C: .4byte gUnknown_8116238 -_0809BE50: - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BE5C - b _0809C266 - .align 2, 0 -_0809BE5C: .4byte gUnknown_8116248 -_0809BE60: - bl sub_809B294 - movs r0, 0x98 - lsls r0, 1 - bl CreateHelperPelipperMenu - lsls r0, 24 - cmp r0, 0 - bne _0809BE84 - ldr r0, _0809BE80 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - b _0809B978 - .align 2, 0 -_0809BE80: .4byte gUnknown_3001B64 -_0809BE84: - ldr r0, _0809BE94 - ldr r0, [r0] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809BE98 - b _0809C266 - .align 2, 0 -_0809BE94: .4byte gUnknown_3001B64 -_0809BE98: .4byte gUnknown_8116258 -_0809BE9C: - movs r0, 0x4 - bl PlayMenuSoundEffect - ldr r0, _0809BEB0 - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BEB4 - b _0809C266 - .align 2, 0 -_0809BEB0: .4byte gUnknown_3001B64 -_0809BEB4: .4byte gUnknown_8116268 -_0809BEB8: - movs r0, 0x4 - bl PlayMenuSoundEffect - ldr r0, _0809BECC - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809BED0 - b _0809C266 - .align 2, 0 -_0809BECC: .4byte gUnknown_3001B64 -_0809BED0: .4byte gUnknown_8116278 -_0809BED4: - mov r0, sp - bl sub_8099328 - lsls r0, 24 - cmp r0, 0 - beq _0809BF4E - add r1, sp, 0x4 - add r2, sp, 0x8 - movs r0, 0x2 - bl sub_8001B88 - ldr r0, [sp, 0x8] - cmp r0, 0x7 - bgt _0809BF4E - add r4, sp, 0xC -_0809BEF2: - lsls r1, r0, 24 - lsrs r1, 24 - mov r0, sp - ldrb r2, [r0] - adds r0, r4, 0 - bl sub_8096AF8 - ldrb r0, [r4] - cmp r0, 0 - beq _0809BF44 - ldr r1, [sp, 0x4] - ldr r2, [sp, 0x8] - movs r0, 0x2 - bl ScenarioCalc - ldr r0, _0809BF40 - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r2, r0, r1 - ldrh r1, [r4, 0x2] - lsls r1, 16 - asrs r1, 16 - negs r0, r1 - orrs r0, r1 - lsrs r1, r0, 31 - movs r3, 0x4 - ldrsh r0, [r4, r3] - cmp r0, 0 - beq _0809BF30 - adds r1, 0x2 -_0809BF30: - str r1, [r2] - cmp r1, 0 - beq _0809BF38 - b _0809C392 -_0809BF38: - movs r0, 0x3 - str r0, [r2] - b _0809C392 - .align 2, 0 -_0809BF40: .4byte gUnknown_3001B64 -_0809BF44: - ldr r0, [sp, 0x8] - adds r0, 0x1 - str r0, [sp, 0x8] - cmp r0, 0x7 - ble _0809BEF2 -_0809BF4E: - ldr r0, _0809BF6C - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0 - str r1, [r0] - bl sub_8096BD0 - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ScenarioCalc - b _0809C392 - .align 2, 0 -_0809BF6C: .4byte gUnknown_3001B64 -_0809BF70: - mov r5, sp - adds r5, 0x1 - adds r0, r5, 0 - bl sub_8099328 - lsls r0, 24 - cmp r0, 0 - bne _0809BF82 - b _0809C392 -_0809BF82: - add r1, sp, 0x14 - add r2, sp, 0x18 - movs r0, 0x2 - bl sub_8001B88 - add r4, sp, 0x1C - ldr r1, [sp, 0x18] - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r5] - adds r0, r4, 0 - bl sub_8096AF8 - ldrb r0, [r4] - cmp r0, 0 - bne _0809BFA4 - b _0809C392 -_0809BFA4: - ldr r0, [sp, 0x18] - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r5] - bl sub_802DB28 - lsls r0, 24 - cmp r0, 0 - bne _0809BFB8 - b _0809C392 -_0809BFB8: - movs r0, 0 - movs r1, 0x19 - bl sub_8001658 - cmp r0, 0x63 - bgt _0809BFCE - adds r2, r0, 0x1 - movs r0, 0 - movs r1, 0x19 - bl sub_80018D8 -_0809BFCE: - movs r0, 0 - movs r1, 0x39 - movs r2, 0x1 - bl sub_80018D8 - ldr r1, [sp, 0x14] - ldr r2, [sp, 0x18] - adds r2, 0x1 - movs r0, 0x2 - bl ScenarioCalc - ldr r0, _0809BFF4 - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809BFF8 - b _0809C266 - .align 2, 0 -_0809BFF4: .4byte gUnknown_3001B64 -_0809BFF8: .4byte gUnknown_8116288 -_0809BFFC: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809C036 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - lsrs r0, 24 - negs r4, r0 - orrs r4, r0 - asrs r4, 31 - movs r0, 0x4 - ands r4, r0 - bl sub_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C032 - bl _0809B784 -_0809C032: - ldr r0, [r6] - b _0809B972 -_0809C036: - bl sub_802FE58 - cmp r0, 0x2 - beq _0809C05E - cmp r0, 0x3 - beq _0809C046 - bl _0809B784 -_0809C046: - bl sub_802FED0 - ldr r1, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - lsls r0, 16 - asrs r0, 16 - str r0, [r1] - bl MakuhitaDojo_Delete - b _0809C392 -_0809C05E: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl MakuhitaDojo_Delete - b _0809C392 -_0809C072: - movs r4, 0x1 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0809C082 - movs r4, 0x5 -_0809C082: - bl sub_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C0A8 - ldr r0, _0809C0A0 - ldr r0, [r0] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809C0A4 - b _0809C266 - .align 2, 0 -_0809C0A0: .4byte gUnknown_3001B64 -_0809C0A4: .4byte gUnknown_8116298 -_0809C0A8: - ldr r0, _0809C0B4 - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - b _0809B978 - .align 2, 0 -_0809C0B4: .4byte gUnknown_3001B64 -_0809C0B8: - movs r4, 0x2 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0809C0C8 - movs r4, 0x6 -_0809C0C8: - bl sub_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C0F0 - ldr r0, _0809C0E8 - ldr r0, [r0] - movs r3, 0x83 - lsls r3, 3 - adds r0, r3 - ldr r1, _0809C0EC - b _0809C266 - .align 2, 0 -_0809C0E8: .4byte gUnknown_3001B64 -_0809C0EC: .4byte gUnknown_81162A8 -_0809C0F0: - ldr r0, _0809C0F8 - ldr r0, [r0] - b _0809B972 - .align 2, 0 -_0809C0F8: .4byte gUnknown_3001B64 -_0809C0FC: - movs r4, 0x3 - movs r0, 0x4 - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - beq _0809C10C - movs r4, 0x7 -_0809C10C: - bl sub_809B294 - adds r0, r4, 0 - bl MakuhitaDojo_New - lsls r0, 24 - cmp r0, 0 - beq _0809C134 - ldr r0, _0809C12C - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C130 - b _0809C266 - .align 2, 0 -_0809C12C: .4byte gUnknown_3001B64 -_0809C130: .4byte gUnknown_81162B8 -_0809C134: - ldr r0, _0809C144 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809B978 - .align 2, 0 -_0809C144: .4byte gUnknown_3001B64 -_0809C148: - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809C154 - b _0809C266 - .align 2, 0 -_0809C154: .4byte gUnknown_81162C8 -_0809C158: - ldr r0, [r6] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C164 - b _0809C266 - .align 2, 0 -_0809C164: .4byte gUnknown_81162D8 -_0809C168: - bl sub_809B294 - bl sub_803B050 - lsls r0, 24 - cmp r0, 0 - beq _0809C1A0 - ldr r4, _0809C194 - ldr r0, [r4] - ldr r3, _0809C198 - adds r0, r3 - movs r1, 0 - ldrsh r0, [r0, r1] - bl sub_803B100 - ldr r0, [r4] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C19C - b _0809C266 - .align 2, 0 -_0809C194: .4byte gUnknown_3001B64 -_0809C198: .4byte 0x000005a4 -_0809C19C: .4byte gUnknown_81162E8 -_0809C1A0: - ldr r0, _0809C1B0 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809B978 - .align 2, 0 -_0809C1B0: .4byte gUnknown_3001B64 -_0809C1B4: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 -_0809C1BC: - movs r1, 0x1 - str r1, [r0] - b _0809C392 -_0809C1C2: - bl sub_809B294 - b _0809C392 -_0809C1C8: - movs r0, 0x2 - bl sub_80252F0 - lsls r0, 24 - cmp r0, 0 - beq _0809C1EC - ldr r0, _0809C1E4 - ldr r0, [r0] - movs r2, 0x83 - lsls r2, 3 - adds r0, r2 - ldr r1, _0809C1E8 - b _0809C266 - .align 2, 0 -_0809C1E4: .4byte gUnknown_3001B64 -_0809C1E8: .4byte gUnknown_81162F8 -_0809C1EC: - ldr r0, _0809C200 - ldr r0, [r0] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - movs r1, 0x2 - negs r1, r1 - str r1, [r0] - b _0809C392 - .align 2, 0 -_0809C200: .4byte gUnknown_3001B64 -_0809C204: - ldr r1, [r6] - ldr r2, _0809C230 - adds r0, r1, r2 - ldr r0, [r0] - movs r3, 0x85 - lsls r3, 3 - adds r1, r3 - ldr r1, [r1] - bl sub_809CCDC - ldr r1, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r2, r1, r3 - str r0, [r2] - movs r0, 0x83 - lsls r0, 3 - adds r1, r0 - ldr r0, _0809C234 - str r0, [r1] - bl _0809B784 - .align 2, 0 -_0809C230: .4byte 0x00000424 -_0809C234: .4byte gUnknown_8116308 -_0809C238: - ldr r0, [r6] - movs r2, 0x85 - lsls r2, 3 - adds r1, r0, r2 - ldr r5, [r1] - ldr r3, _0809C26C - adds r0, r3 - ldrb r4, [r0] - bl sub_809B294 - adds r0, r5, 0 - adds r1, r4, 0 - movs r2, 0x1 - bl sub_801B60C - lsls r0, 24 - cmp r0, 0 - beq _0809C274 - ldr r0, [r6] - movs r1, 0x83 - lsls r1, 3 - adds r0, r1 - ldr r1, _0809C270 -_0809C266: - str r1, [r0] - bl _0809B784 - .align 2, 0 -_0809C26C: .4byte 0x00000424 -_0809C270: .4byte gUnknown_8116318 -_0809C274: - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - bl _0809B978 -_0809C280: - ldr r0, [r6] - movs r3, 0x84 - lsls r3, 3 - adds r0, r3 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809C2B8 - bl sub_809B294 - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - bl sub_800641C - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0xA - bl sub_801A5D8 - lsls r0, 24 - cmp r0, 0 - beq _0809C2B2 - bl _0809B784 -_0809C2B2: - ldr r0, [r6] - bl _0809B972 -_0809C2B8: - movs r0, 0x1 - bl sub_801A6E8 - cmp r0, 0x2 - beq _0809C320 - cmp r0, 0x3 - beq _0809C2CA - bl _0809B784 -_0809C2CA: - bl sub_801A8AC - adds r5, r0, 0 - ldr r0, _0809C304 - ldr r0, [r0] - lsls r1, r5, 2 - adds r0, r1 - ldrb r4, [r0, 0x2] - adds r0, r4, 0 - bl IsEdibleItem - lsls r0, 24 - cmp r0, 0 - beq _0809C30C - ldr r0, _0809C308 - adds r1, r4, 0 - movs r2, 0 - bl BufferItemName - adds r0, r5, 0 - bl ShiftItemsDownFrom - ldr r0, [r6] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - movs r1, 0x1 - b _0809C318 - .align 2, 0 -_0809C304: .4byte gTeamInventoryRef -_0809C308: .4byte gUnknown_202DE58 -_0809C30C: - ldr r0, [r6] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 -_0809C314: - movs r1, 0x1 - negs r1, r1 -_0809C318: - str r1, [r0] - bl sub_801A928 - b _0809C392 -_0809C320: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - b _0809C314 -_0809C32A: - adds r4, r6, 0 - ldr r0, [r4] - movs r2, 0x84 - lsls r2, 3 - adds r0, r2 - ldr r0, [r0] - cmp r0, 0x1 - bne _0809C36C - bl sub_809B294 - ldr r1, [r4] - ldr r3, _0809C368 - adds r0, r1, r3 - ldr r0, [r0] - movs r2, 0x85 - lsls r2, 3 - adds r1, r2 - ldr r1, [r1] - bl DrawCredits - lsls r0, 24 - cmp r0, 0 - beq _0809C35C - bl _0809B784 -_0809C35C: - ldr r0, [r4] - movs r3, 0x86 - lsls r3, 3 - adds r0, r3 - bl _0809B978 - .align 2, 0 -_0809C368: .4byte 0x00000424 -_0809C36C: - bl sub_8035574 - cmp r0, 0x3 - bls _0809C378 - bl _0809B784 -_0809C378: - cmp r0, 0x2 - bcs _0809C380 - bl _0809B784 -_0809C380: - ldr r0, [r6] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] - bl sub_803565C -_0809C392: - movs r0, 0 -_0809C394: - add sp, 0x24 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_809B648 - - thumb_func_start sub_809C39C -sub_809C39C: - push {lr} - bl sub_801D178 - ldr r1, _0809C3D4 - ldr r1, [r1] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - str r0, [r1] - cmp r0, 0x3 - bne _0809C3CC - bl sub_801D1D4 - lsls r0, 24 - lsrs r0, 24 - bl sub_8002694 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1 - negs r2, r2 - movs r1, 0 - bl GroundMainGroundRequest -_0809C3CC: - bl sub_801D1E0 - pop {r0} - bx r0 - .align 2, 0 -_0809C3D4: .4byte gUnknown_3001B64 - thumb_func_end sub_809C39C - - thumb_func_start sub_809C3D8 -sub_809C3D8: - push {lr} - bl sub_801D178 - ldr r1, _0809C410 - ldr r1, [r1] - movs r2, 0x86 - lsls r2, 3 - adds r1, r2 - str r0, [r1] - cmp r0, 0x3 - bne _0809C408 - bl sub_801D1D4 - lsls r0, 24 - lsrs r0, 24 - bl sub_8002694 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1 - negs r2, r2 - movs r1, 0 - bl GroundMainGroundRequest -_0809C408: - bl sub_801D1E0 - pop {r0} - bx r0 - .align 2, 0 -_0809C410: .4byte gUnknown_3001B64 - thumb_func_end sub_809C3D8 - - thumb_func_start sub_809C414 -sub_809C414: - push {lr} - bl sub_802540C - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0 - beq _0809C448 - ldr r0, _0809C444 - ldr r0, [r0] - movs r2, 0x86 - lsls r2, 3 - adds r0, r2 - str r1, [r0] - adds r0, r1, 0 - bl sub_8002694 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x1 - negs r2, r2 - movs r1, 0 - bl GroundMainGroundRequest - b _0809C458 - .align 2, 0 -_0809C444: .4byte gUnknown_3001B64 -_0809C448: - ldr r0, _0809C460 - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] -_0809C458: - bl sub_8025418 - pop {r0} - bx r0 - .align 2, 0 -_0809C460: .4byte gUnknown_3001B64 - thumb_func_end sub_809C414 - - thumb_func_start sub_809C464 -sub_809C464: - push {lr} - bl DeleteTestTracker - bl sub_8001064 - bl sub_809965C - pop {r0} - bx r0 - thumb_func_end sub_809C464 - - thumb_func_start sub_809C478 -sub_809C478: - push {lr} - sub sp, 0x8 - bl sub_80356A0 - cmp r0, 0x3 - bne _0809C492 - ldr r0, _0809C4AC - bl PlaySound - bl InitFlash - bl ClearFlashData -_0809C492: - bl sub_8035758 - add r2, sp, 0x4 - movs r0, 0x3 - mov r1, sp - bl sub_8001B88 - movs r0, 0 - bl sub_80993C0 - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0809C4AC: .4byte 0x00000313 - thumb_func_end sub_809C478 - - thumb_func_start sub_809C4B0 -sub_809C4B0: - push {r4,r5,lr} - movs r4, 0x1 - negs r4, r4 - ldr r5, _0809C4FC - ldr r0, [r5] - movs r2, 0x86 - lsls r2, 3 - adds r1, r0, r2 - ldr r0, [r1] - cmp r0, 0 - bne _0809C4DE - bl sub_803B168 - lsls r0, 16 - ldr r1, [r5] - ldr r3, _0809C500 - adds r2, r1, r3 - asrs r4, r0, 16 - lsrs r0, 16 - strh r0, [r2] - movs r0, 0x86 - lsls r0, 3 - adds r1, r0 -_0809C4DE: - str r4, [r1] - bl sub_803B1BC - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _0809C4F4 - adds r0, r4, 0 - movs r1, 0 - bl GroundMap_ExecuteEvent -_0809C4F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809C4FC: .4byte gUnknown_3001B64 -_0809C500: .4byte 0x000005a4 - thumb_func_end sub_809C4B0 - - thumb_func_start sub_809C504 -sub_809C504: - push {r4,lr} - sub sp, 0x4 - mov r0, sp - bl sub_80282DC - adds r4, r0, 0 - cmp r4, 0x1 - bne _0809C530 - mov r0, sp - ldrb r0, [r0] - bl sub_809927C - ldr r0, _0809C52C - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - str r4, [r0] - b _0809C540 - .align 2, 0 -_0809C52C: .4byte gUnknown_3001B64 -_0809C530: - ldr r0, _0809C54C - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - movs r1, 0x1 - negs r1, r1 - str r1, [r0] -_0809C540: - bl sub_80282FC - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C54C: .4byte gUnknown_3001B64 - thumb_func_end sub_809C504 - - thumb_func_start sub_809C550 -sub_809C550: - push {r4,r5,lr} - bl sub_802E90C - adds r4, r0, 0 - movs r5, 0 - bl sub_802E918 - cmp r4, 0x2 - beq _0809C586 - cmp r4, 0x2 - bhi _0809C56C - cmp r4, 0x1 - beq _0809C572 - b _0809C5AC -_0809C56C: - cmp r4, 0x3 - beq _0809C59A - b _0809C5AC -_0809C572: - movs r0, 0x4 - movs r1, 0x1D - movs r2, 0x3 - bl sub_8001CC4 - lsls r0, 24 - cmp r0, 0 - beq _0809C5AC - movs r5, 0x1 - b _0809C5AC -_0809C586: - movs r0, 0x4 - movs r1, 0x1F - movs r2, 0x2 - bl sub_8001CC4 - lsls r0, 24 - cmp r0, 0 - beq _0809C5AC - movs r5, 0x2 - b _0809C5AC -_0809C59A: - movs r0, 0xB - movs r1, 0x33 - movs r2, 0x8 - bl sub_8001CC4 - lsls r0, 24 - cmp r0, 0 - beq _0809C5AC - movs r5, 0x3 -_0809C5AC: - ldr r0, _0809C5C0 - ldr r0, [r0] - movs r1, 0x86 - lsls r1, 3 - adds r0, r1 - str r5, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0809C5C0: .4byte gUnknown_3001B64 - thumb_func_end sub_809C550 - - thumb_func_start sub_809C5C4 -sub_809C5C4: - push {r4,lr} - ldr r4, _0809C610 - movs r0, 0x24 - movs r1, 0x6 - bl MemoryAlloc - str r0, [r4] - movs r2, 0 - str r2, [r0] - str r2, [r0, 0x4] - movs r3, 0 - strh r2, [r0, 0x8] - strh r2, [r0, 0xA] - strb r3, [r0, 0xD] - ldr r0, [r4] - strb r3, [r0, 0xE] - ldr r1, [r4] - str r2, [r1, 0x10] - ldr r0, _0809C614 - strh r0, [r1, 0x14] - movs r0, 0x23 - strh r0, [r1, 0x16] - strb r3, [r1, 0x18] - ldr r1, [r4] - movs r0, 0x3F - strb r0, [r1, 0x19] - ldr r0, [r4] - str r2, [r0, 0x1C] - adds r0, 0x20 - strb r3, [r0] - bl nullsub_107 - bl sub_809C63C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C610: .4byte gUnknown_3001B68 -_0809C614: .4byte 0x0000ffff - thumb_func_end sub_809C5C4 - - thumb_func_start sub_809C618 -sub_809C618: - push {r4,lr} - bl sub_809C63C - bl nullsub_107 - bl nullsub_108 - ldr r4, _0809C638 - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C638: .4byte gUnknown_3001B68 - thumb_func_end sub_809C618 - - thumb_func_start sub_809C63C -sub_809C63C: - push {lr} - bl nullsub_108 - ldr r0, _0809C654 - ldr r0, [r0] - movs r1, 0 - str r1, [r0, 0x1C] - adds r0, 0x20 - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0809C654: .4byte gUnknown_3001B68 - thumb_func_end sub_809C63C - - thumb_func_start sub_809C658 -sub_809C658: - push {lr} - ldr r0, _0809C670 - ldr r0, [r0] - ldrh r0, [r0, 0xA] - cmp r0, 0x5 - bhi _0809C6C8 - lsls r0, 2 - ldr r1, _0809C674 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C670: .4byte gUnknown_3001B68 -_0809C674: .4byte _0809C678 - .align 2, 0 -_0809C678: - .4byte _0809C6C0 - .4byte _0809C6C0 - .4byte _0809C6AC - .4byte _0809C690 - .4byte _0809C69E - .4byte _0809C6B6 -_0809C690: - bl nullsub_111 - bl nullsub_112 - bl nullsub_113 - b _0809C6C8 -_0809C69E: - bl nullsub_114 - bl nullsub_115 - bl nullsub_116 - b _0809C6C8 -_0809C6AC: - bl nullsub_109 - bl nullsub_110 - b _0809C6C8 -_0809C6B6: - bl nullsub_107 - bl nullsub_108 - b _0809C6C8 -_0809C6C0: - bl nullsub_107 - bl nullsub_108 -_0809C6C8: - pop {r0} - bx r0 - thumb_func_end sub_809C658 - - thumb_func_start sub_809C6CC -sub_809C6CC: - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _0809C6E8 - ldr r1, [r0] - ldrh r0, [r1, 0x8] - cmp r0, r2 - beq _0809C6E2 - movs r0, 0 - strh r2, [r1, 0x8] - strb r0, [r1, 0xE] -_0809C6E2: - pop {r0} - bx r0 - .align 2, 0 -_0809C6E8: .4byte gUnknown_3001B68 - thumb_func_end sub_809C6CC - - thumb_func_start sub_809C6EC -sub_809C6EC: - push {lr} - bl sub_8098F88 - lsls r0, 24 - cmp r0, 0 - bne _0809C718 - ldr r0, _0809C70C - ldr r0, [r0] - ldrb r0, [r0, 0xC] - cmp r0, 0 - bne _0809C710 - movs r0, 0x4 - bl sub_809C6CC - b _0809C71E - .align 2, 0 -_0809C70C: .4byte gGameOptionsRef -_0809C710: - movs r0, 0x3 - bl sub_809C6CC - b _0809C71E -_0809C718: - movs r0, 0x5 - bl sub_809C6CC -_0809C71E: - pop {r0} - bx r0 - thumb_func_end sub_809C6EC - - thumb_func_start sub_809C724 -sub_809C724: - ldr r0, _0809C72C - ldr r0, [r0] - ldrh r0, [r0, 0x8] - bx lr - .align 2, 0 -_0809C72C: .4byte gUnknown_3001B68 - thumb_func_end sub_809C724 - - thumb_func_start sub_809C730 -sub_809C730: - push {lr} - bl sub_809C740 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_809C730 - - thumb_func_start sub_809C740 -sub_809C740: - push {lr} - ldr r0, _0809C750 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _0809C754 - movs r0, 0 - b _0809C756 - .align 2, 0 -_0809C750: .4byte gUnknown_3001B68 -_0809C754: - movs r0, 0x1 -_0809C756: - pop {r1} - bx r1 - thumb_func_end sub_809C740 - - thumb_func_start nullsub_104 -nullsub_104: - bx lr - thumb_func_end nullsub_104 - - thumb_func_start sub_809C760 -sub_809C760: - ldr r0, _0809C76C - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xE] - bx lr - .align 2, 0 -_0809C76C: .4byte gUnknown_3001B68 - thumb_func_end sub_809C760 - - thumb_func_start sub_809C770 -sub_809C770: - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - asrs r0, 16 - mov r8, r0 - lsls r1, 16 - asrs r6, r1, 16 - ldr r4, _0809C790 - ldr r1, [r4] - ldrb r0, [r1, 0xE] - cmp r0, 0 - beq _0809C794 - movs r0, 0 - strb r0, [r1, 0xE] - b _0809CA10 - .align 2, 0 -_0809C790: .4byte gUnknown_3001B68 -_0809C794: - ldrh r0, [r1, 0x8] - cmp r0, 0 - bne _0809C79E - bl sub_809C6EC -_0809C79E: - ldr r0, [r4] - ldrb r5, [r0, 0x18] - ldrb r7, [r0, 0x19] - cmp r6, 0x26 - bls _0809C7AA - b _0809C8C8 -_0809C7AA: - lsls r0, r6, 2 - ldr r1, _0809C7B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C7B4: .4byte _0809C7B8 - .align 2, 0 -_0809C7B8: - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C854 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C86E - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 -_0809C854: - mov r0, r8 - bl sub_8002658 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0809C864 - b _0809CA10 -_0809C864: - movs r4, 0x1 - b _0809C988 -_0809C868: - movs r4, 0x1 - movs r5, 0 - b _0809C988 -_0809C86E: - mov r0, r8 - subs r0, 0xA4 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bls _0809C87C - b _0809CA10 -_0809C87C: - lsls r0, 2 - ldr r1, _0809C888 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C888: .4byte _0809C88C - .align 2, 0 -_0809C88C: - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 -_0809C8C4: - movs r4, 0 - b _0809C988 -_0809C8C8: - adds r0, r6, 0 - subs r0, 0xC - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x16 - bhi _0809C968 - lsls r0, 2 - ldr r1, _0809C8E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C8E0: .4byte _0809C8E4 - .align 2, 0 -_0809C8E4: - .4byte _0809C968 - .4byte _0809C940 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C944 - .4byte _0809C944 - .4byte _0809C948 - .4byte _0809C948 - .4byte _0809C94C - .4byte _0809C968 - .4byte _0809C950 - .4byte _0809C950 - .4byte _0809C954 - .4byte _0809C954 - .4byte _0809C958 - .4byte _0809C958 - .4byte _0809C95C - .4byte _0809C95C - .4byte _0809C960 - .4byte _0809C960 - .4byte _0809C964 -_0809C940: - movs r1, 0 - b _0809C974 -_0809C944: - movs r1, 0x7 - b _0809C974 -_0809C948: - movs r1, 0x9 - b _0809C974 -_0809C94C: - movs r1, 0xA - b _0809C974 -_0809C950: - movs r1, 0xB - b _0809C974 -_0809C954: - movs r1, 0xD - b _0809C974 -_0809C958: - movs r1, 0xF - b _0809C974 -_0809C95C: - movs r1, 0x11 - b _0809C974 -_0809C960: - movs r1, 0x13 - b _0809C974 -_0809C964: - movs r1, 0x20 - b _0809C974 -_0809C968: - movs r0, 0 - movs r1, 0x13 - bl sub_8001658 - lsls r0, 16 - asrs r1, r0, 16 -_0809C974: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809CA10 - adds r0, r1, 0 - bl sub_80A2740 - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0x2 -_0809C988: - ldr r0, _0809C99C - ldr r2, [r0] - ldr r1, [r2, 0x10] - adds r3, r0, 0 - cmp r1, r4 - beq _0809C9A0 - movs r0, 0x2 - str r0, [r2] - b _0809C9DE - .align 2, 0 -_0809C99C: .4byte gUnknown_3001B68 -_0809C9A0: - cmp r4, 0x1 - bne _0809C9CC - ldrb r0, [r2, 0x18] - cmp r5, r0 - bne _0809C9B2 - movs r1, 0x14 - ldrsh r0, [r2, r1] - cmp r0, r8 - beq _0809C9BC -_0809C9B2: - strb r4, [r2, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r4, [r0] - b _0809C9E8 -_0809C9BC: - cmp r5, 0 - bne _0809C9E8 - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r6 - beq _0809C9E8 - strb r4, [r2, 0xC] - b _0809C9E8 -_0809C9CC: - cmp r4, 0x2 - bne _0809C9E8 - ldrb r0, [r2, 0x19] - cmp r7, r0 - bne _0809C9DE - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r6 - beq _0809C9E8 -_0809C9DE: - movs r1, 0x1 - strb r1, [r2, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r1, [r0] -_0809C9E8: - ldr r1, [r3] - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0809CA10 - str r4, [r1, 0x10] - movs r2, 0 - mov r0, r8 - strh r0, [r1, 0x14] - strh r6, [r1, 0x16] - strb r5, [r1, 0x18] - ldr r0, [r3] - strb r7, [r0, 0x19] - ldr r1, [r3] - ldrh r0, [r1, 0x8] - cmp r0, 0x4 - beq _0809CA10 - strb r2, [r1, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r2, [r0] -_0809CA10: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809C770 - - thumb_func_start nullsub_105 -nullsub_105: - bx lr - thumb_func_end nullsub_105 - - thumb_func_start sub_809CA20 -sub_809CA20: - push {lr} - ldr r1, _0809CA74 - ldr r2, [r1] - ldr r0, [r2] - cmp r0, 0 - beq _0809CA38 - movs r0, 0 - str r0, [r2] - movs r0, 0x1F - str r0, [r2, 0x4] - movs r0, 0x1 - strb r0, [r2, 0xC] -_0809CA38: - ldr r1, [r1] - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0809CAE8 - ldrh r0, [r1, 0x8] - strh r0, [r1, 0xA] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bne _0809CA5E - ldr r2, [r1, 0x10] - cmp r2, 0 - bne _0809CA5E - movs r0, 0x2 - strh r0, [r1, 0xA] - str r2, [r1, 0x1C] - adds r1, 0x20 - movs r0, 0 - strb r0, [r1] -_0809CA5E: - ldr r0, _0809CA74 - ldr r0, [r0] - ldrh r0, [r0, 0xA] - cmp r0, 0x5 - bhi _0809CADA - lsls r0, 2 - ldr r1, _0809CA78 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CA74: .4byte gUnknown_3001B68 -_0809CA78: .4byte _0809CA7C - .align 2, 0 -_0809CA7C: - .4byte _0809CAD2 - .4byte _0809CAD2 - .4byte _0809CABE - .4byte _0809CA94 - .4byte _0809CAB0 - .4byte _0809CAC8 -_0809CA94: - bl nullsub_111 - bl nullsub_113 - bl nullsub_112 - ldr r0, _0809CAAC - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xD] - b _0809CADA - .align 2, 0 -_0809CAAC: .4byte gUnknown_3001B68 -_0809CAB0: - bl nullsub_114 - bl nullsub_115 - bl nullsub_116 - b _0809CADA -_0809CABE: - bl nullsub_109 - bl nullsub_110 - b _0809CADA -_0809CAC8: - bl nullsub_107 - bl nullsub_108 - b _0809CADA -_0809CAD2: - bl nullsub_107 - bl nullsub_108 -_0809CADA: - ldr r0, _0809CAE4 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0xC] - b _0809CB1E - .align 2, 0 -_0809CAE4: .4byte gUnknown_3001B68 -_0809CAE8: - ldrh r0, [r1, 0xA] - cmp r0, 0x5 - bhi _0809CB1E - lsls r0, 2 - ldr r1, _0809CAF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CAF8: .4byte _0809CAFC - .align 2, 0 -_0809CAFC: - .4byte _0809CB1E - .4byte _0809CB1E - .4byte _0809CB1E - .4byte _0809CB14 - .4byte _0809CB1A - .4byte _0809CB1E -_0809CB14: - bl nullsub_113 - b _0809CB1E -_0809CB1A: - bl nullsub_116 -_0809CB1E: - pop {r0} - bx r0 - thumb_func_end sub_809CA20 - - thumb_func_start nullsub_106 -nullsub_106: - bx lr - thumb_func_end nullsub_106 - - thumb_func_start nullsub_107 -nullsub_107: - bx lr - thumb_func_end nullsub_107 - - thumb_func_start nullsub_108 -nullsub_108: - bx lr - thumb_func_end nullsub_108 - - thumb_func_start nullsub_109 -nullsub_109: - bx lr - thumb_func_end nullsub_109 - - thumb_func_start nullsub_110 -nullsub_110: - bx lr - thumb_func_end nullsub_110 - - thumb_func_start nullsub_111 -nullsub_111: - bx lr - thumb_func_end nullsub_111 - - thumb_func_start nullsub_112 -nullsub_112: - bx lr - thumb_func_end nullsub_112 - - thumb_func_start nullsub_113 -nullsub_113: - bx lr - thumb_func_end nullsub_113 - - thumb_func_start nullsub_114 -nullsub_114: - bx lr - thumb_func_end nullsub_114 - - thumb_func_start nullsub_115 -nullsub_115: - bx lr - thumb_func_end nullsub_115 - - thumb_func_start nullsub_116 -nullsub_116: - bx lr - thumb_func_end nullsub_116 - - thumb_func_start sub_809CB50 -sub_809CB50: - push {r4,lr} - ldr r4, _0809CB70 - movs r0, 0xC - movs r1, 0x6 - bl MemoryAlloc - str r0, [r4] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x4] - movs r1, 0 - str r1, [r0, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809CB70: .4byte gUnknown_20399E0 - thumb_func_end sub_809CB50 - - thumb_func_start sub_809CB74 -sub_809CB74: - push {r4,lr} - ldr r4, _0809CB88 - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809CB88: .4byte gUnknown_20399E0 - thumb_func_end sub_809CB74 - - thumb_func_start sub_809CB8C -sub_809CB8C: - push {lr} - movs r0, 0 - movs r1, 0x3B - bl sub_80015C0 - movs r0, 0 - movs r1, 0x3D - bl sub_80015C0 - pop {r0} - bx r0 - thumb_func_end sub_809CB8C - - thumb_func_start sub_809CBA4 -sub_809CBA4: - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl FindItemInInventory - cmp r0, 0 - bge _0809CBB6 - movs r0, 0 - b _0809CBB8 -_0809CBB6: - movs r0, 0x1 -_0809CBB8: - pop {r1} - bx r1 - thumb_func_end sub_809CBA4 - - thumb_func_start sub_809CBBC -sub_809CBBC: - push {r4-r7,lr} - sub sp, 0x54 - adds r4, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - adds r7, r3, 0 - ldrb r1, [r4] - cmp r1, 0x69 - bne _0809CC20 - ldr r1, _0809CC0C - movs r0, 0x2 - ldrsh r2, [r4, r0] - ldr r0, _0809CC10 - ldr r0, [r0] - movs r3, 0xD2 - lsls r3, 4 - adds r0, r3 - ldr r3, [r0] - mov r0, sp - bl sprintfStatic - ldr r0, _0809CC14 - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 2 - adds r2, r0, r1 - movs r3, 0x2 - ldrsh r1, [r4, r3] - ldr r0, [r2] - adds r1, r0, r1 - ldr r0, _0809CC18 - cmp r1, r0 - ble _0809CC1C - cmp r6, 0 - beq _0809CC4E - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - adds r2, r6, 0 - b _0809CC4A - .align 2, 0 -_0809CC0C: .4byte gUnknown_81163E4 -_0809CC10: .4byte gItemParametersData -_0809CC14: .4byte gTeamInventoryRef -_0809CC18: .4byte 0x0001869f -_0809CC1C: - str r1, [r2] - b _0809CC5E -_0809CC20: - ldrb r0, [r4, 0x2] - lsls r1, 16 - lsls r0, 8 - orrs r0, r1 - str r0, [sp, 0x50] - add r4, sp, 0x50 - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - bl sub_8090E14 - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _0809CC52 - cmp r5, 0 - beq _0809CC4E - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - adds r2, r5, 0 -_0809CC4A: - bl sub_809AE90 -_0809CC4E: - movs r0, 0 - b _0809CC82 -_0809CC52: - ldrb r0, [r4, 0x2] - movs r1, 0 - bl sub_809124C - bl FillInventoryGaps -_0809CC5E: - cmp r7, 0 - beq _0809CC80 - ldr r0, _0809CC8C - mov r1, sp - bl strcpy - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - adds r2, r7, 0 - bl sub_809AE90 - movs r1, 0x80 - lsls r1, 1 - movs r0, 0xCB - bl xxx_call_play_fanfare_se -_0809CC80: - movs r0, 0x1 -_0809CC82: - add sp, 0x54 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0809CC8C: .4byte gUnknown_202DE58 - thumb_func_end sub_809CBBC - - thumb_func_start sub_809CC90 -sub_809CC90: - push {lr} - lsls r0, 2 - ldr r1, _0809CCBC - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x69 - bne _0809CCC8 - ldr r0, _0809CCC0 - ldr r0, [r0] - movs r2, 0x98 - lsls r2, 2 - adds r0, r2 - movs r2, 0x2 - ldrsh r1, [r1, r2] - ldr r0, [r0] - adds r0, r1 - ldr r1, _0809CCC4 - cmp r0, r1 - ble _0809CCD4 - movs r0, 0x2 - b _0809CCD6 - .align 2, 0 -_0809CCBC: .4byte gUnknown_81163BC -_0809CCC0: .4byte gTeamInventoryRef -_0809CCC4: .4byte 0x0001869f -_0809CCC8: - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _0809CCD4 - movs r0, 0x2 - b _0809CCD6 -_0809CCD4: - movs r0, 0x1 -_0809CCD6: - pop {r1} - bx r1 - thumb_func_end sub_809CC90 - - thumb_func_start sub_809CCDC -sub_809CCDC: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r1, r6, 2 - ldr r0, _0809CD20 - adds r5, r1, r0 - ldr r0, _0809CD24 - ldr r1, [r0] - movs r0, 0x1 - negs r0, r0 - str r0, [r1, 0x4] - movs r0, 0 - str r0, [r1, 0x8] - movs r0, 0x2 - cmp r4, 0x63 - bgt _0809CD04 - movs r0, 0 - cmp r4, 0x1 - ble _0809CD04 - movs r0, 0x1 -_0809CD04: - ldr r1, _0809CD28 - ldr r2, _0809CD2C - ldr r3, _0809CD30 - lsls r0, 2 - adds r0, r3 - ldr r3, [r0] - adds r0, r5, 0 - bl sub_809CBBC - lsls r0, 24 - cmp r0, 0 - bne _0809CD34 - movs r0, 0x2 - b _0809CD3E - .align 2, 0 -_0809CD20: .4byte gUnknown_81163BC -_0809CD24: .4byte gUnknown_20399E0 -_0809CD28: .4byte gUnknown_81163F0 -_0809CD2C: .4byte gUnknown_811642C -_0809CD30: .4byte gUnknown_203B4A0 -_0809CD34: - ldr r0, _0809CD44 - ldr r0, [r0] - str r6, [r0, 0x4] - str r4, [r0, 0x8] - movs r0, 0x1 -_0809CD3E: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809CD44: .4byte gUnknown_20399E0 - thumb_func_end sub_809CCDC - - thumb_func_start sub_809CD48 -sub_809CD48: - push {lr} - bl sub_809A750 - lsls r0, 24 - cmp r0, 0 - bne _0809CD58 - movs r0, 0x3 - b _0809CD5A -_0809CD58: - movs r0, 0 -_0809CD5A: - pop {r1} - bx r1 - thumb_func_end sub_809CD48 - - thumb_func_start nullsub_117 -nullsub_117: - bx lr - thumb_func_end nullsub_117 - - thumb_func_start nullsub_118 -nullsub_118: - bx lr - thumb_func_end nullsub_118 - - thumb_func_start sub_809CD68 -sub_809CD68: - movs r2, 0 - str r2, [r0] - str r2, [r0, 0x4] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x10] - str r2, [r0, 0x14] - str r2, [r0, 0x8] - strb r2, [r0, 0x18] - bx lr - thumb_func_end sub_809CD68 - - thumb_func_start sub_809CD7C -sub_809CD7C: - movs r2, 0 - str r2, [r0] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x10] - str r2, [r0, 0x14] - str r2, [r0, 0x8] - bx lr - thumb_func_end sub_809CD7C - - thumb_func_start sub_809CD8C -sub_809CD8C: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - cmp r4, 0x5 - bne _0809CD9E - bl sub_809CD68 - str r4, [r5] - b _0809CDB0 -_0809CD9E: - ldr r0, [r5, 0x4] - cmp r0, r4 - beq _0809CDB0 - str r4, [r5, 0x4] - movs r0, 0x1 - negs r0, r0 - str r0, [r5, 0x10] - movs r0, 0 - str r0, [r5, 0x14] -_0809CDB0: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_809CD8C - - thumb_func_start sub_809CDB8 -sub_809CDB8: - push {lr} - adds r1, r0, 0 - ldr r0, [r1, 0x4] - cmp r0, 0 - bne _0809CDC4 - ldr r0, [r1] -_0809CDC4: - pop {r1} - bx r1 - thumb_func_end sub_809CDB8 - - thumb_func_start sub_809CDC8 -sub_809CDC8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - ldr r1, [sp, 0x24] - movs r0, 0x1 - negs r0, r0 - str r0, [r3] - ldr r0, [r4] - cmp r0, 0x1 - beq _0809CDEA - cmp r0, 0x2 - beq _0809CDFE - b _0809CE12 -_0809CDEA: - movs r0, 0x80 - lsls r0, 6 - ands r1, r0 - cmp r1, 0 - beq _0809CE12 - adds r0, r4, 0 - bl sub_809CD68 - movs r0, 0x2 - b _0809CE10 -_0809CDFE: - movs r0, 0x80 - lsls r0, 6 - ands r1, r0 - cmp r1, 0 - bne _0809CE12 - adds r0, r4, 0 - bl sub_809CD68 - movs r0, 0x1 -_0809CE10: - str r0, [r4] -_0809CE12: - ldr r0, [r4, 0x4] - mov r8, r0 - cmp r0, 0 - bne _0809CE1E - ldr r1, [r4] - mov r8, r1 -_0809CE1E: - mov r0, r8 - subs r0, 0x1 - cmp r0, 0x6 - bls _0809CE28 - b _0809CFCC -_0809CE28: - lsls r0, 2 - ldr r1, _0809CE34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CE34: .4byte _0809CE38 - .align 2, 0 -_0809CE38: - .4byte _0809CE54 - .4byte _0809CF74 - .4byte _0809CFCC - .4byte _0809CFCC - .4byte _0809CECC - .4byte _0809CF5C - .4byte _0809CF5C -_0809CE54: - ldr r0, _0809CE70 - ldrh r2, [r0] - ldrh r1, [r0, 0x2] - movs r0, 0xF0 - ands r0, r2 - cmp r0, 0 - beq _0809CE74 - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0809CEA4 - movs r0, 0 - b _0809CEA8 - .align 2, 0 -_0809CE70: .4byte gRealInputs -_0809CE74: - movs r3, 0x2 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0809CE82 - movs r0, 0x14 - b _0809CEA8 -_0809CE82: - ldr r0, [r4, 0x10] - cmp r0, 0x1 - ble _0809CEA4 - subs r0, 0x1 - str r0, [r4, 0x10] - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - bne _0809CEAA - movs r0, 0x13 - str r0, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 - strb r0, [r7] - movs r0, 0x5 - b _0809CFDA -_0809CEA4: - movs r0, 0x1 - negs r0, r0 -_0809CEA8: - str r0, [r4, 0x10] -_0809CEAA: - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0809CEB6 - movs r0, 0xA - b _0809CEC2 -_0809CEB6: - ldr r0, [r4, 0x10] - cmp r0, 0 - bne _0809CEC0 - movs r0, 0x8 - b _0809CEC2 -_0809CEC0: - movs r0, 0x7 -_0809CEC2: - str r0, [r6] - adds r0, r2, 0 - bl sub_809CFE8 - b _0809CF4E -_0809CECC: - mov r0, sp - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - beq _0809CFCC - ldr r0, _0809CEEC - ldr r0, [r0] - ldrb r0, [r0, 0xC] - cmp r0, 0 - bne _0809CEF0 - movs r0, 0x4 - bl sub_809C6CC - b _0809CEF6 - .align 2, 0 -_0809CEEC: .4byte gGameOptionsRef -_0809CEF0: - movs r0, 0x3 - bl sub_809C6CC -_0809CEF6: - bl nullsub_104 - adds r0, r4, 0 - bl sub_809CD7C - movs r5, 0x1 - str r5, [r4] - ldr r0, [sp] - cmp r0, 0x2 - beq _0809CF1E - cmp r0, 0x2 - bgt _0809CF14 - cmp r0, 0x1 - beq _0809CF2A - b _0809CF54 -_0809CF14: - cmp r0, 0x3 - beq _0809CF2A - cmp r0, 0x4 - beq _0809CF3C - b _0809CF54 -_0809CF1E: - movs r0, 0x4 - str r0, [r4] - movs r0, 0x1E - bl sub_8098D80 - b _0809CF46 -_0809CF2A: - movs r0, 0x4 - str r0, [r4] - str r5, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 - strb r0, [r7] - movs r0, 0x4 - b _0809CFDA -_0809CF3C: - str r0, [r4] - movs r0, 0x45 - movs r1, 0 - bl GroundMap_ExecuteEvent -_0809CF46: - str r5, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_0809CF4E: - strb r0, [r7] - ldr r0, [r4] - b _0809CFDA -_0809CF54: - movs r0, 0x2 - bl sub_809D9B8 - b _0809CFCC -_0809CF5C: - add r0, sp, 0x4 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - beq _0809CFCC - adds r0, r4, 0 - bl sub_809CD7C - movs r0, 0x1 - str r0, [r4] - b _0809CFDA -_0809CF74: - ldr r0, [r4, 0x8] - cmp r0, 0 - ble _0809CF86 - subs r0, 0x1 - str r0, [r4, 0x8] - movs r0, 0x9 - str r0, [r6] - ldrb r0, [r4, 0xC] - b _0809CFD6 -_0809CF86: - ldr r0, _0809CFA0 - ldrh r1, [r0] - movs r0, 0x9 - str r0, [r6] - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _0809CFA4 - movs r0, 0x4 - b _0809CFB6 - .align 2, 0 -_0809CFA0: .4byte gRealInputs -_0809CFA4: - movs r0, 0x80 - ands r1, r0 - cmp r1, 0 - beq _0809CFB0 - strb r2, [r7] - b _0809CFB8 -_0809CFB0: - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_0809CFB6: - strb r0, [r7] -_0809CFB8: - ldrb r0, [r7] - strb r0, [r4, 0xC] - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - cmp r0, r1 - beq _0809CFD8 - movs r0, 0x20 - str r0, [r4, 0x8] - b _0809CFD8 -_0809CFCC: - movs r0, 0 - str r0, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_0809CFD6: - strb r0, [r7] -_0809CFD8: - mov r0, r8 -_0809CFDA: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809CDC8 - .align 2,0 diff --git a/asm/code_809A560.s b/asm/code_809A560.s new file mode 100644 index 000000000..24f69e9d3 --- /dev/null +++ b/asm/code_809A560.s @@ -0,0 +1,5089 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_809A7EC +sub_809A7EC: + push {r4-r6,lr} + ldr r0, _0809A830 + ldr r0, [r0] + ldr r2, _0809A834 + adds r1, r0, r2 + ldr r0, _0809A838 + adds r6, r0, 0 + movs r3, 0 + movs r2, 0 + movs r4, 0x9 + movs r5, 0xFF +_0809A802: + ldrh r0, [r1] + orrs r0, r6 + strh r0, [r1] + strh r2, [r1, 0x2] + strb r3, [r1, 0x4] + strb r3, [r1, 0x5] + ldrb r0, [r1, 0x6] + orrs r0, r5 + strb r0, [r1, 0x6] + strb r3, [r1, 0x7] + str r2, [r1, 0x8] + str r2, [r1, 0xC] + str r2, [r1, 0x10] + str r2, [r1, 0x14] + strb r3, [r1, 0x1C] + str r2, [r1, 0x20] + subs r4, 0x1 + adds r1, 0x24 + cmp r4, 0 + bge _0809A802 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809A830: .4byte gUnknown_3001B64 +_0809A834: .4byte 0x0000043c +_0809A838: .4byte 0x0000ffff + thumb_func_end sub_809A7EC + + thumb_func_start sub_809A83C +sub_809A83C: + push {r4-r7,lr} + lsls r0, 16 + asrs r0, 16 + ldr r2, _0809A8A0 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r3, _0809A8A4 + adds r1, r3 + ldr r2, [r2] + adds r6, r2, r1 + ldr r1, _0809A8A8 + strh r1, [r6] + movs r2, 0 + movs r7, 0 + strh r7, [r6, 0x2] + strb r2, [r6, 0x4] + strb r2, [r6, 0x5] + movs r1, 0xFF + strb r1, [r6, 0x6] + strb r2, [r6, 0x7] + str r7, [r6, 0x8] + str r7, [r6, 0xC] + str r7, [r6, 0x10] + str r7, [r6, 0x14] + strb r2, [r6, 0x1C] + lsls r4, r0, 2 + adds r4, r0 + lsls r4, 4 + ldr r0, _0809A8AC + adds r0, r4, r0 + ldr r5, _0809A8B0 + adds r1, r5, 0 + bl strcpy + ldr r0, _0809A8B4 + adds r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl strcpy + ldr r0, [r6, 0x20] + cmp r0, 0 + beq _0809A89A + bl CloseFile + str r7, [r6, 0x20] +_0809A89A: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809A8A0: .4byte gUnknown_3001B64 +_0809A8A4: .4byte 0x0000043c +_0809A8A8: .4byte 0x0000ffff +_0809A8AC: .4byte gAvailablePokemonNames +_0809A8B0: .4byte gInvalidityText +_0809A8B4: .4byte gPlayerName + thumb_func_end sub_809A83C + + thumb_func_start sub_809A8B8 +sub_809A8B8: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 16 + asrs r0, 16 + mov r9, r0 + mov r0, sp + strh r1, [r0] + ldr r1, _0809A928 + mov r2, r9 + lsls r0, r2, 3 + add r0, r9 + lsls r0, 2 + ldr r2, _0809A92C + adds r0, r2 + ldr r1, [r1] + adds r7, r1, r0 + movs r0, 0x1 + mov r10, r0 + movs r1, 0 + str r1, [sp, 0x4] + ldr r0, [r7, 0x20] + cmp r0, 0 + beq _0809A8F6 + bl CloseFile + ldr r2, [sp, 0x4] + str r2, [r7, 0x20] +_0809A8F6: + mov r4, sp + adds r4, 0x2 + mov r0, sp + adds r1, r4, 0 + bl sub_80A7DDC + mov r0, sp + ldrh r0, [r0] + subs r0, 0xA + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x13 + bhi _0809A9D6 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_80A8D54 + adds r5, r0, 0 + cmp r5, 0 + bne _0809A930 + movs r2, 0 + mov r10, r2 + b _0809A9D6 + .align 2, 0 +_0809A928: .4byte gUnknown_3001B64 +_0809A92C: .4byte 0x0000043c +_0809A930: + bl sub_808D3BC + cmp r5, r0 + bne _0809A940 + mov r1, sp + movs r0, 0x21 + strh r0, [r1] + b _0809A9D6 +_0809A940: + bl sub_808D3F8 + cmp r5, r0 + bne _0809A950 + mov r1, sp + movs r0, 0x22 + strh r0, [r1] + b _0809A9D6 +_0809A950: + ldrb r0, [r5, 0x4] + subs r0, 0x43 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bhi _0809A990 + movs r0, 0 + ldrsh r1, [r4, r0] + ldr r0, _0809A978 + cmp r1, r0 + beq _0809A9D6 + cmp r1, r0 + ble _0809A97C + adds r0, 0x16 + cmp r1, r0 + bgt _0809A98A + subs r0, 0x1 + cmp r1, r0 + blt _0809A98A + b _0809A9D6 + .align 2, 0 +_0809A978: .4byte 0x00000183 +_0809A97C: + movs r0, 0x82 + lsls r0, 1 + cmp r1, r0 + beq _0809A9D6 + adds r0, 0x2F + cmp r1, r0 + beq _0809A9D6 +_0809A98A: + movs r1, 0 + mov r10, r1 + b _0809A9D6 +_0809A990: + movs r2, 0 + ldrsh r1, [r4, r2] + movs r0, 0x87 + lsls r0, 1 + cmp r1, r0 + bgt _0809A9B0 + subs r0, 0x2 + cmp r1, r0 + bge _0809A9D6 + cmp r1, 0x90 + blt _0809A9D2 + cmp r1, 0x92 + ble _0809A9D6 + cmp r1, 0x96 + beq _0809A9D6 + b _0809A9D2 +_0809A9B0: + movs r0, 0xCF + lsls r0, 1 + cmp r1, r0 + bgt _0809A9CC + subs r0, 0x4 + cmp r1, r0 + bge _0809A9D6 + subs r0, 0x87 + cmp r1, r0 + bgt _0809A9D2 + subs r0, 0x1 + cmp r1, r0 + blt _0809A9D2 + b _0809A9D6 +_0809A9CC: + ldr r0, _0809A9F0 + cmp r1, r0 + beq _0809A9D6 +_0809A9D2: + movs r0, 0 + mov r10, r0 +_0809A9D6: + mov r0, sp + ldrh r0, [r0] + subs r0, 0x1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x21 + bhi _0809AA98 + lsls r0, 2 + ldr r1, _0809A9F4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809A9F0: .4byte 0x000001a7 +_0809A9F4: .4byte _0809A9F8 + .align 2, 0 +_0809A9F8: + .4byte _0809AA80 + .4byte _0809AA80 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA80 + .4byte _0809AA80 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA98 + .4byte _0809AA80 + .4byte _0809AA80 +_0809AA80: + movs r1, 0 + ldrsh r0, [r4, r1] + bl sub_80A8CF0 + lsls r0, 24 + cmp r0, 0 + beq _0809AA94 + movs r2, 0x1 + str r2, [sp, 0x4] + b _0809AA98 +_0809AA94: + movs r0, 0 + mov r10, r0 +_0809AA98: + mov r0, sp + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809AB34 + mov r0, sp + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_80A7AE8 + lsls r0, 16 + asrs r1, r0, 16 + cmp r1, 0 + blt _0809AACE + mov r0, sp + ldrh r0, [r0] + movs r2, 0 + mov r8, r2 + movs r6, 0 + strh r0, [r7] + adds r0, r1, 0 + bl sub_80A8BFC + strh r0, [r7, 0x2] + b _0809AAE6 +_0809AACE: + ldrh r1, [r4] + movs r2, 0 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0809AB34 + mov r0, sp + ldrh r0, [r0] + movs r2, 0 + mov r8, r2 + movs r6, 0 + strh r0, [r7] + strh r1, [r7, 0x2] +_0809AAE6: + mov r0, r9 + lsls r4, r0, 2 + add r4, r9 + lsls r4, 4 + ldr r0, _0809AB28 + adds r0, r4, r0 + ldr r5, _0809AB2C + adds r1, r5, 0 + bl strcpy + ldr r0, _0809AB30 + adds r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl strcpy + mov r1, r10 + strb r1, [r7, 0x4] + mov r2, sp + ldrb r2, [r2, 0x4] + strb r2, [r7, 0x5] + movs r0, 0xFF + strb r0, [r7, 0x6] + mov r0, r8 + strb r0, [r7, 0x7] + str r6, [r7, 0x8] + str r6, [r7, 0xC] + str r6, [r7, 0x10] + str r6, [r7, 0x14] + strb r0, [r7, 0x1C] + movs r0, 0x1 + b _0809AB3C + .align 2, 0 +_0809AB28: .4byte gAvailablePokemonNames +_0809AB2C: .4byte gUndefineText +_0809AB30: .4byte gPlayerName +_0809AB34: + mov r0, r9 + bl sub_809A83C + movs r0, 0 +_0809AB3C: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809A8B8 + + thumb_func_start sub_809AB4C +sub_809AB4C: + push {r4-r6,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r1, 16 + ldr r2, _0809AB78 + lsls r0, r5, 3 + adds r0, r5 + lsls r0, 2 + ldr r3, _0809AB7C + adds r0, r3 + ldr r2, [r2] + adds r6, r2, r0 + adds r0, r5, 0 + bl sub_809A8B8 + lsls r0, 24 + cmp r0, 0 + bne _0809AB80 + movs r0, 0 + b _0809ABA0 + .align 2, 0 +_0809AB78: .4byte gUnknown_3001B64 +_0809AB7C: .4byte 0x0000043c +_0809AB80: + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 4 + ldr r0, _0809ABA8 + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r6, r2] + bl CopyCyanMonsterNametoBuffer + ldr r0, _0809ABAC + adds r4, r0 + ldr r1, _0809ABB0 + adds r0, r4, 0 + bl strcpy + movs r0, 0x1 +_0809ABA0: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809ABA8: .4byte gAvailablePokemonNames +_0809ABAC: .4byte gPlayerName +_0809ABB0: .4byte gUnknown_811617C + thumb_func_end sub_809AB4C + + thumb_func_start sub_809ABB4 +sub_809ABB4: + push {r4-r6,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r1, 16 + ldr r2, _0809ABE0 + lsls r0, r5, 3 + adds r0, r5 + lsls r0, 2 + ldr r3, _0809ABE4 + adds r0, r3 + ldr r2, [r2] + adds r6, r2, r0 + adds r0, r5, 0 + bl sub_809A8B8 + lsls r0, 24 + cmp r0, 0 + bne _0809ABE8 + movs r0, 0 + b _0809AC0A + .align 2, 0 +_0809ABE0: .4byte gUnknown_3001B64 +_0809ABE4: .4byte 0x0000043c +_0809ABE8: + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 4 + ldr r5, _0809AC10 + adds r5, r4, r5 + movs r0, 0x2 + ldrsh r1, [r6, r0] + adds r0, r5, 0 + bl CopyCyanMonsterNametoBuffer + ldr r0, _0809AC14 + adds r4, r0 + adds r0, r4, 0 + adds r1, r5, 0 + bl strcpy + movs r0, 0x1 +_0809AC0A: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809AC10: .4byte gAvailablePokemonNames +_0809AC14: .4byte gPlayerName + thumb_func_end sub_809ABB4 + + thumb_func_start sub_809AC18 +sub_809AC18: + push {r4-r6,lr} + lsls r0, 16 + asrs r5, r0, 16 + lsls r1, 16 + asrs r1, 16 + ldr r2, _0809AC44 + lsls r0, r5, 3 + adds r0, r5 + lsls r0, 2 + ldr r3, _0809AC48 + adds r0, r3 + ldr r2, [r2] + adds r6, r2, r0 + adds r0, r5, 0 + bl sub_809A8B8 + lsls r0, 24 + cmp r0, 0 + bne _0809AC4C + movs r0, 0 + b _0809AC6E + .align 2, 0 +_0809AC44: .4byte gUnknown_3001B64 +_0809AC48: .4byte 0x0000043c +_0809AC4C: + lsls r4, r5, 2 + adds r4, r5 + lsls r4, 4 + ldr r0, _0809AC74 + adds r0, r4, r0 + movs r2, 0x2 + ldrsh r1, [r6, r2] + bl CopyCyanMonsterNametoBuffer + ldr r0, _0809AC78 + adds r4, r0 + movs r3, 0 + ldrsh r1, [r6, r3] + adds r0, r4, 0 + bl sub_80A8EC0 + movs r0, 0x1 +_0809AC6E: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809AC74: .4byte gAvailablePokemonNames +_0809AC78: .4byte gPlayerName + thumb_func_end sub_809AC18 + + thumb_func_start sub_809AC7C +sub_809AC7C: + push {r4-r6,lr} + lsls r0, 16 + asrs r0, 16 + lsls r1, 24 + asrs r5, r1, 24 + lsls r2, 24 + lsrs r6, r2, 24 + ldr r2, _0809AD10 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0809AD14 + adds r1, r0 + ldr r0, [r2] + adds r4, r0, r1 + ldr r0, [r4, 0x20] + cmp r0, 0 + beq _0809ACA8 + bl CloseFile + movs r0, 0 + str r0, [r4, 0x20] +_0809ACA8: + movs r0, 0x2 + ldrsh r1, [r4, r0] + cmp r1, 0 + bge _0809ACB2 + b _0809ADC0 +_0809ACB2: + movs r0, 0x1 + negs r0, r0 + cmp r5, r0 + bne _0809ACBC + b _0809ADC0 +_0809ACBC: + cmp r1, 0 + bne _0809ACC2 + b _0809ADC0 +_0809ACC2: + cmp r6, 0x15 + beq _0809ACCE + movs r0, 0 + strb r6, [r4, 0x7] + str r0, [r4, 0x8] + str r0, [r4, 0xC] +_0809ACCE: + ldr r2, _0809AD18 + ldrb r0, [r4, 0x7] + lsls r0, 3 + adds r0, r2 + ldr r1, [r4, 0x8] + ldrh r0, [r0] + adds r0, r1 + movs r6, 0 + movs r3, 0 + strh r0, [r4, 0x18] + ldrb r0, [r4, 0x7] + lsls r0, 3 + adds r0, r2 + ldr r1, [r4, 0xC] + ldrh r0, [r0, 0x2] + adds r0, r1 + strh r0, [r4, 0x1A] + ldrb r0, [r4, 0x7] + lsls r0, 3 + adds r0, r2 + ldrb r0, [r0, 0x4] + strb r0, [r4, 0x1D] + strb r6, [r4, 0x1E] + movs r0, 0x2 + negs r0, r0 + cmp r5, r0 + bne _0809AD1C + strb r5, [r4, 0x6] + str r3, [r4, 0x10] + str r3, [r4, 0x14] + strb r6, [r4, 0x1C] + movs r0, 0 + b _0809ADD2 + .align 2, 0 +_0809AD10: .4byte gUnknown_3001B64 +_0809AD14: .4byte 0x0000043c +_0809AD18: .4byte gUnknown_8116040 +_0809AD1C: + ldrb r0, [r4, 0x4] + cmp r0, 0 + beq _0809ADC0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + bl OpenPokemonDialogueSpriteFile + str r0, [r4, 0x20] + cmp r0, 0 + beq _0809ADB6 + strb r5, [r4, 0x6] + str r0, [r4, 0x10] + movs r1, 0 + bl GetFileDataPtr + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x4D + beq _0809AD62 + cmp r0, 0x4D + bgt _0809AD4C + cmp r0, 0x47 + beq _0809AD56 + b _0809ADA8 +_0809AD4C: + cmp r0, 0x53 + beq _0809AD76 + cmp r0, 0x73 + beq _0809AD8A + b _0809ADA8 +_0809AD56: + movs r0, 0xF + ands r0, r5 + cmp r0, 0x5 + bgt _0809ADA8 + adds r0, r5, 0x6 + b _0809AD9C +_0809AD62: + ldrb r0, [r4, 0x1D] + cmp r0, 0 + beq _0809ADA8 + movs r0, 0xF + ands r0, r5 + cmp r0, 0x3 + bgt _0809ADA8 + strb r6, [r4, 0x1D] + adds r0, r5, 0x4 + b _0809AD9C +_0809AD76: + ldrb r0, [r4, 0x1D] + cmp r0, 0 + beq _0809ADA8 + movs r0, 0xF + ands r0, r5 + cmp r0, 0 + bgt _0809ADA8 + strb r6, [r4, 0x1D] + adds r0, r5, 0x1 + b _0809AD9C +_0809AD8A: + ldrb r0, [r4, 0x1D] + cmp r0, 0 + beq _0809ADA8 + movs r0, 0xF + ands r0, r5 + cmp r0, 0x1 + bgt _0809ADA8 + strb r6, [r4, 0x1D] + adds r0, r5, 0x2 +_0809AD9C: + lsls r0, 24 + asrs r5, r0, 24 + movs r0, 0x40 + orrs r5, r0 + lsls r0, r5, 24 + asrs r5, r0, 24 +_0809ADA8: + ldr r0, [r4, 0x20] + ldr r0, [r0, 0x4] + str r0, [r4, 0x14] + movs r0, 0xF + ands r5, r0 + strb r5, [r4, 0x1C] + b _0809ADBC +_0809ADB6: + str r0, [r4, 0x10] + str r0, [r4, 0x14] + strb r6, [r4, 0x1C] +_0809ADBC: + movs r0, 0x1 + b _0809ADD2 +_0809ADC0: + movs r0, 0xFF + strb r0, [r4, 0x6] + movs r0, 0 + strb r0, [r4, 0x7] + str r0, [r4, 0x8] + str r0, [r4, 0xC] + str r0, [r4, 0x10] + str r0, [r4, 0x14] + strb r0, [r4, 0x1C] +_0809ADD2: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_809AC7C + + thumb_func_start sub_809ADD8 +sub_809ADD8: + push {r4,lr} + adds r4, r1, 0 + lsls r0, 16 + asrs r0, 16 + ldr r2, _0809AE28 + lsls r1, r0, 3 + adds r1, r0 + lsls r1, 2 + ldr r0, _0809AE2C + adds r1, r0 + ldr r0, [r2] + adds r3, r0, r1 + movs r1, 0x2 + ldrsh r0, [r3, r1] + cmp r0, 0 + blt _0809AE34 + cmp r0, 0 + beq _0809AE34 + ldr r0, [r4] + ldr r1, [r4, 0x4] + str r0, [r3, 0x8] + str r1, [r3, 0xC] + ldr r2, _0809AE30 + ldrb r0, [r3, 0x7] + lsls r0, 3 + adds r0, r2 + ldr r1, [r3, 0x8] + ldrh r0, [r0] + adds r0, r1 + strh r0, [r3, 0x18] + ldrb r0, [r3, 0x7] + lsls r0, 3 + adds r0, r2 + ldr r1, [r3, 0xC] + ldrh r0, [r0, 0x2] + adds r0, r1 + strh r0, [r3, 0x1A] + movs r0, 0x1 + b _0809AE36 + .align 2, 0 +_0809AE28: .4byte gUnknown_3001B64 +_0809AE2C: .4byte 0x0000043c +_0809AE30: .4byte gUnknown_8116040 +_0809AE34: + movs r0, 0 +_0809AE36: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809ADD8 + + thumb_func_start sub_809AE3C +sub_809AE3C: + push {r4,lr} + lsls r0, 16 + asrs r2, r0, 16 + cmp r2, 0 + blt _0809AE88 + ldr r1, _0809AE80 + lsls r0, r2, 3 + adds r0, r2 + lsls r0, 2 + ldr r3, _0809AE84 + adds r0, r3 + ldr r1, [r1] + adds r4, r1, r0 + movs r1, 0x2 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0809AE74 + movs r1, 0x6 + ldrsb r1, [r4, r1] + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + bne _0809AE74 + adds r0, r2, 0 + movs r1, 0 + movs r2, 0 + bl sub_809AC7C +_0809AE74: + ldr r0, [r4, 0x10] + cmp r0, 0 + beq _0809AE88 + adds r0, r4, 0 + adds r0, 0x10 + b _0809AE8A + .align 2, 0 +_0809AE80: .4byte gUnknown_3001B64 +_0809AE84: .4byte 0x0000043c +_0809AE88: + movs r0, 0 +_0809AE8A: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809AE3C + + thumb_func_start sub_809AE90 +sub_809AE90: + push {r4-r6,lr} + adds r5, r0, 0 + adds r4, r2, 0 + lsls r1, 16 + asrs r6, r1, 16 + cmp r4, 0 + bne _0809AEA4 + bl sub_809A76C + b _0809AEE0 +_0809AEA4: + ldrb r0, [r4] + cmp r0, 0 + beq _0809AEDC + ldr r1, _0809AED0 + lsls r0, r5, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_809A680 + ldr r0, _0809AED4 + ldr r0, [r0] + adds r0, 0xC + ldr r2, _0809AED8 + lsls r1, r5, 1 + adds r1, r2 + ldrh r1, [r1] + adds r2, r6, 0 + adds r3, r4, 0 + bl sub_809B2B8 + b _0809AEE0 + .align 2, 0 +_0809AED0: .4byte gUnknown_8116134 +_0809AED4: .4byte gUnknown_3001B64 +_0809AED8: .4byte gUnknown_8116148 +_0809AEDC: + bl sub_809A7B4 +_0809AEE0: + lsls r0, 24 + lsrs r0, 24 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_809AE90 + + thumb_func_start sub_809AEEC +sub_809AEEC: + push {r4,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _0809AF1C + ldrb r0, [r4] + cmp r0, 0 + beq _0809AF1C + movs r0, 0x2 + movs r1, 0x1 + bl sub_809A680 + ldr r0, _0809AF18 + ldr r0, [r0] + adds r0, 0xC + movs r2, 0x1 + negs r2, r2 + movs r1, 0xC2 + adds r3, r4, 0 + bl sub_809B2B8 + b _0809AF20 + .align 2, 0 +_0809AF18: .4byte gUnknown_3001B64 +_0809AF1C: + bl sub_809A76C +_0809AF20: + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809AEEC + + thumb_func_start sub_809AF2C +sub_809AF2C: + push {r4,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _0809AF5C + ldrb r0, [r4] + cmp r0, 0 + beq _0809AF5C + movs r0, 0x2 + movs r1, 0x1 + bl sub_809A680 + ldr r0, _0809AF58 + ldr r0, [r0] + adds r0, 0xC + movs r2, 0x1 + negs r2, r2 + movs r1, 0xC2 + adds r3, r4, 0 + bl sub_809B2B8 + b _0809AF60 + .align 2, 0 +_0809AF58: .4byte gUnknown_3001B64 +_0809AF5C: + bl sub_809A76C +_0809AF60: + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809AF2C + + thumb_func_start sub_809AF6C +sub_809AF6C: + push {r4,lr} + adds r4, r1, 0 + cmp r4, 0 + beq _0809AF9C + ldrb r0, [r4] + cmp r0, 0 + beq _0809AF9C + movs r0, 0x3 + movs r1, 0x1 + bl sub_809A680 + ldr r0, _0809AF98 + ldr r0, [r0] + adds r0, 0xC + movs r2, 0x1 + negs r2, r2 + movs r1, 0x65 + adds r3, r4, 0 + bl sub_809B2B8 + b _0809AFA0 + .align 2, 0 +_0809AF98: .4byte gUnknown_3001B64 +_0809AF9C: + bl sub_809A76C +_0809AFA0: + lsls r0, 24 + lsrs r0, 24 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809AF6C + + thumb_func_start sub_809AFAC +sub_809AFAC: + push {lr} + movs r1, 0 + ldr r0, _0809AFC4 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x4 + bne _0809AFBC + movs r1, 0x1 +_0809AFBC: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809AFC4: .4byte gUnknown_3001B64 + thumb_func_end sub_809AFAC + + thumb_func_start sub_809AFC8 +sub_809AFC8: + push {r4,r5,lr} + sub sp, 0x8 + adds r5, r1, 0 + adds r1, r2, 0 + lsls r0, 24 + lsrs r0, 24 + lsls r1, 16 + asrs r1, 16 + ldr r4, _0809AFF8 + negs r2, r0 + orrs r2, r0 + lsrs r2, 31 + str r1, [sp] + str r3, [sp, 0x4] + adds r0, r4, 0 + movs r1, 0 + adds r3, r5, 0 + bl sub_809B028 + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809AFF8: .4byte gUnknown_81160E8 + thumb_func_end sub_809AFC8 + + thumb_func_start sub_809AFFC +sub_809AFFC: + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + mov r0, sp + bl sub_809B18C + lsls r0, 24 + lsrs r2, r0, 24 + cmp r4, 0 + beq _0809B01C + movs r1, 0 + ldr r0, [sp] + cmp r0, 0x1 + bne _0809B01A + movs r1, 0x1 +_0809B01A: + strb r1, [r4] +_0809B01C: + adds r0, r2, 0 + add sp, 0x4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_809AFFC + + thumb_func_start sub_809B028 +sub_809B028: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x14 + mov r8, r0 + adds r7, r2, 0 + adds r6, r3, 0 + ldr r0, [sp, 0x2C] + lsls r1, 24 + lsrs r5, r1, 24 + lsls r0, 16 + asrs r4, r0, 16 + ldr r1, _0809B084 + lsls r0, r6, 2 + adds r0, r1 + ldr r0, [r0] + movs r1, 0 + bl sub_809A680 + ldr r0, _0809B088 + ldr r1, [r0] + ldr r0, _0809B08C + adds r2, r1, r0 + movs r0, 0x1 + str r0, [r2] + movs r0, 0x83 + lsls r0, 3 + adds r2, r1, r0 + movs r0, 0 + str r0, [r2] + ldr r2, _0809B090 + adds r0, r1, r2 + mov r2, r8 + str r2, [r0] + movs r2, 0x84 + lsls r2, 3 + adds r0, r1, r2 + movs r2, 0x2 + str r2, [r0] + ldr r0, _0809B094 + adds r1, r0 + cmp r5, 0 + beq _0809B098 + str r2, [r1] + b _0809B09A + .align 2, 0 +_0809B084: .4byte gUnknown_8116134 +_0809B088: .4byte gUnknown_3001B64 +_0809B08C: .4byte 0x00000414 +_0809B090: .4byte 0x0000041c +_0809B094: .4byte 0x00000424 +_0809B098: + str r5, [r1] +_0809B09A: + ldr r0, _0809B0D4 + ldr r0, [r0] + movs r1, 0x85 + lsls r1, 3 + adds r2, r0, r1 + movs r1, 0 + str r1, [r2] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + str r7, [r0] + ldr r0, _0809B0D8 + lsls r2, r6, 1 + adds r0, r2, r0 + ldrh r1, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r1 + adds r5, r2, 0 + cmp r0, 0 + beq _0809B0F6 + cmp r4, 0 + bge _0809B0E4 + ldr r0, _0809B0DC + ldr r1, _0809B0E0 + bl strcpy + b _0809B0F6 + .align 2, 0 +_0809B0D4: .4byte gUnknown_3001B64 +_0809B0D8: .4byte gUnknown_8116148 +_0809B0DC: .4byte gUnknown_202E5D8 +_0809B0E0: .4byte gUnknown_8116180 +_0809B0E4: + ldr r0, _0809B134 + ldr r1, _0809B138 + lsls r2, r4, 2 + adds r2, r4 + lsls r2, 4 + ldr r3, _0809B13C + adds r2, r3 + bl sprintfStatic +_0809B0F6: + adds r0, r4, 0 + bl sub_809AE3C + ldr r4, _0809B140 + movs r1, 0 + str r1, [sp] + movs r3, 0x4 + str r3, [sp, 0x4] + str r1, [sp, 0x8] + str r0, [sp, 0xC] + ldr r0, _0809B144 + adds r0, r5, r0 + ldrh r2, [r0] + movs r0, 0x80 + lsls r0, 1 + ands r0, r2 + cmp r0, 0 + beq _0809B11C + movs r1, 0xC +_0809B11C: + movs r0, 0x80 + lsls r0, 2 + ands r0, r2 + cmp r0, 0 + beq _0809B128 + orrs r1, r3 +_0809B128: + movs r0, 0x20 + ands r0, r2 + cmp r0, 0 + beq _0809B148 + movs r0, 0x21 + b _0809B14A + .align 2, 0 +_0809B134: .4byte gUnknown_202E5D8 +_0809B138: .4byte gUnknown_8116188 +_0809B13C: .4byte gPlayerName +_0809B140: .4byte sub_809B428 +_0809B144: .4byte gUnknown_8116148 +_0809B148: + movs r0, 0x1 +_0809B14A: + orrs r0, r1 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x10] + ldr r0, [sp, 0x30] + adds r1, r4, 0 + adds r2, r7, 0 + mov r3, r8 + bl sub_8014248 + ldr r0, _0809B184 + ldr r0, [r0] + ldr r1, _0809B188 + adds r0, r1 + ldr r0, [r0] + movs r1, 0x2 + ands r0, r1 + cmp r0, 0 + beq _0809B176 + movs r0, 0x1 + bl sub_809A6E4 +_0809B176: + add sp, 0x14 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0809B184: .4byte gUnknown_3001B64 +_0809B188: .4byte 0x00000424 + thumb_func_end sub_809B028 + + thumb_func_start sub_809B18C +sub_809B18C: + push {lr} + adds r1, r0, 0 + ldr r2, _0809B1BC + cmp r1, 0 + beq _0809B1A2 + ldr r0, [r2] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + ldr r0, [r0] + str r0, [r1] +_0809B1A2: + movs r1, 0 + ldr r0, [r2] + movs r2, 0x84 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x3 + bne _0809B1B4 + movs r1, 0x1 +_0809B1B4: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809B1BC: .4byte gUnknown_3001B64 + thumb_func_end sub_809B18C + + thumb_func_start sub_809B1C0 +sub_809B1C0: + push {lr} + adds r3, r2, 0 + movs r2, 0 + bl sub_809B1D4 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_809B1C0 + + thumb_func_start sub_809B1D4 +sub_809B1D4: + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + cmp r4, 0xB + beq _0809B1E8 + cmp r4, 0xC + beq _0809B1F0 + b _0809B202 +_0809B1E8: + adds r0, r5, 0 + bl sub_8021700 + b _0809B1F8 +_0809B1F0: + bl sub_8001D88 + bl sub_802FCF0 +_0809B1F8: + lsls r0, 24 + cmp r0, 0 + beq _0809B202 + movs r0, 0 + b _0809B24C +_0809B202: + movs r0, 0x4 + movs r1, 0 + bl sub_809A680 + ldr r0, _0809B254 + ldr r1, [r0] + ldr r2, _0809B258 + adds r0, r1, r2 + str r4, [r0] + movs r3, 0x83 + lsls r3, 3 + adds r0, r1, r3 + movs r2, 0 + str r2, [r0] + adds r3, 0x4 + adds r0, r1, r3 + str r2, [r0] + movs r0, 0x84 + lsls r0, 3 + adds r2, r1, r0 + movs r0, 0x1 + str r0, [r2] + ldr r2, _0809B25C + adds r0, r1, r2 + str r5, [r0] + adds r3, 0xC + adds r0, r1, r3 + str r6, [r0] + adds r2, 0x8 + adds r0, r1, r2 + str r7, [r0] + adds r3, 0x8 + adds r1, r3 + movs r0, 0x1 + negs r0, r0 + str r0, [r1] + movs r0, 0x1 +_0809B24C: + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0809B254: .4byte gUnknown_3001B64 +_0809B258: .4byte 0x00000414 +_0809B25C: .4byte 0x00000424 + thumb_func_end sub_809B1D4 + + thumb_func_start sub_809B260 +sub_809B260: + push {lr} + adds r1, r0, 0 + ldr r2, _0809B290 + cmp r1, 0 + beq _0809B276 + ldr r0, [r2] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + ldr r0, [r0] + str r0, [r1] +_0809B276: + movs r1, 0 + ldr r0, [r2] + movs r2, 0x84 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x3 + bne _0809B288 + movs r1, 0x1 +_0809B288: + adds r0, r1, 0 + pop {r1} + bx r1 + .align 2, 0 +_0809B290: .4byte gUnknown_3001B64 + thumb_func_end sub_809B260 + + thumb_func_start sub_809B294 +sub_809B294: + push {lr} + movs r0, 0x3 + bl sub_80063D8 + ldr r0, _0809B2B4 + ldr r0, [r0] + adds r0, 0xC + movs r2, 0x1 + negs r2, r2 + movs r1, 0 + movs r3, 0 + bl sub_809B2B8 + pop {r0} + bx r0 + .align 2, 0 +_0809B2B4: .4byte gUnknown_3001B64 + thumb_func_end sub_809B294 + + thumb_func_start sub_809B2B8 +sub_809B2B8: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x14 + adds r4, r0, 0 + adds r7, r3, 0 + lsls r1, 16 + lsrs r5, r1, 16 + lsls r2, 16 + asrs r6, r2, 16 + strh r5, [r4] + cmp r7, 0 + bne _0809B2F6 + cmp r5, 0 + bne _0809B2DE + str r7, [r4, 0x4] + movs r0, 0 + b _0809B3FC +_0809B2DE: + movs r0, 0x4 + ands r0, r5 + cmp r0, 0 + bne _0809B2E8 + b _0809B3FA +_0809B2E8: + bl sub_8014490 + movs r0, 0 + movs r1, 0x1 + bl sub_809A680 + b _0809B3FA +_0809B2F6: + movs r0, 0x1 + str r0, [r4, 0x4] + adds r0, 0xFF + ands r0, r5 + cmp r0, 0 + beq _0809B32A + cmp r6, 0 + bge _0809B318 + ldr r0, _0809B310 + ldr r1, _0809B314 + bl strcpy + b _0809B32A + .align 2, 0 +_0809B310: .4byte gUnknown_202E5D8 +_0809B314: .4byte gUnknown_8116180 +_0809B318: + ldr r0, _0809B3D0 + ldr r1, _0809B3D4 + lsls r2, r6, 2 + adds r2, r6 + lsls r2, 4 + ldr r3, _0809B3D8 + adds r2, r3 + bl sprintfStatic +_0809B32A: + ldr r0, _0809B3DC + mov r8, r0 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0x3 + bne _0809B344 + adds r4, 0x8 + ldr r1, _0809B3E0 + adds r0, r4, 0 + adds r2, r7, 0 + bl sprintfStatic + adds r7, r4, 0 +_0809B344: + adds r0, r6, 0 + bl sub_809AE3C + ldr r1, _0809B3E4 + mov r9, r1 + movs r1, 0x1 + negs r1, r1 + mov r12, r1 + movs r2, 0 + str r2, [sp] + movs r1, 0x3 + str r1, [sp, 0x4] + str r2, [sp, 0x8] + str r0, [sp, 0xC] + movs r6, 0x80 + lsls r6, 1 + adds r0, r5, 0 + ands r0, r6 + movs r1, 0 + cmp r0, 0 + beq _0809B370 + movs r1, 0xC +_0809B370: + movs r4, 0x80 + lsls r4, 2 + adds r0, r5, 0 + ands r0, r4 + cmp r0, 0 + beq _0809B380 + movs r0, 0x4 + orrs r1, r0 +_0809B380: + mov r0, r8 + ldr r3, [r0] + ldr r2, [r3] + cmp r2, 0x3 + bne _0809B38E + movs r0, 0x10 + orrs r1, r0 +_0809B38E: + cmp r2, 0x2 + bne _0809B396 + movs r0, 0x10 + orrs r1, r0 +_0809B396: + adds r2, r1, 0 + movs r1, 0x20 + adds r0, r5, 0 + ands r0, r1 + cmp r0, 0 + beq _0809B3A4 + orrs r2, r1 +_0809B3A4: + lsrs r1, r5, 6 + movs r0, 0x1 + ands r1, r0 + orrs r1, r2 + movs r0, 0x80 + ands r0, r5 + cmp r0, 0 + beq _0809B3B6 + orrs r1, r6 +_0809B3B6: + movs r0, 0x4 + ands r0, r5 + cmp r0, 0 + beq _0809B3C0 + orrs r1, r4 +_0809B3C0: + ldr r0, [r3, 0x4] + cmp r0, r12 + beq _0809B3E8 + movs r0, 0x2 + orrs r0, r1 + lsls r0, 16 + b _0809B3EA + .align 2, 0 +_0809B3D0: .4byte gUnknown_202E5D8 +_0809B3D4: .4byte gUnknown_8116188 +_0809B3D8: .4byte gPlayerName +_0809B3DC: .4byte gUnknown_3001B64 +_0809B3E0: .4byte gUnknown_8116190 +_0809B3E4: .4byte sub_809B428 +_0809B3E8: + lsls r0, r1, 16 +_0809B3EA: + lsrs r0, 16 + str r0, [sp, 0x10] + adds r0, r7, 0 + mov r1, r9 + mov r2, r12 + movs r3, 0 + bl sub_8014248 +_0809B3FA: + movs r0, 0x1 +_0809B3FC: + add sp, 0x14 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809B2B8 + + thumb_func_start sub_809B40C +sub_809B40C: + push {lr} + ldr r0, [r0, 0x4] + cmp r0, 0 + beq _0809B41C + cmp r0, 0x3 + bhi _0809B420 + cmp r0, 0x2 + bcc _0809B420 +_0809B41C: + movs r0, 0 + b _0809B422 +_0809B420: + movs r0, 0x1 +_0809B422: + pop {r1} + bx r1 + thumb_func_end sub_809B40C + + thumb_func_start sub_809B428 +sub_809B428: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r2, 0 + ldrb r0, [r5, 0x2] + cmp r0, 0x4F + beq _0809B44C + cmp r0, 0x4F + bgt _0809B43E + cmp r0, 0x49 + beq _0809B444 + b _0809B46A +_0809B43E: + cmp r0, 0x57 + beq _0809B454 + b _0809B46A +_0809B444: + movs r0, 0x1E + bl sub_8099A34 + b _0809B462 +_0809B44C: + movs r0, 0x1E + bl sub_8099A48 + b _0809B462 +_0809B454: + bl sub_8099B94 + lsls r0, 24 + cmp r0, 0 + beq _0809B462 + adds r0, r5, 0 + b _0809B46C +_0809B462: + adds r1, r4, 0 + adds r1, 0x21 + movs r0, 0x1 + strb r0, [r1] +_0809B46A: + movs r0, 0 +_0809B46C: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_809B428 + + thumb_func_start sub_809B474 +sub_809B474: + push {r4-r6,lr} + ldr r0, _0809B498 + ldr r1, [r0] + ldr r2, [r1] + adds r6, r0, 0 + cmp r2, 0x3 + bls _0809B56E + cmp r2, 0x4 + bne _0809B56E + movs r5, 0x84 + lsls r5, 3 + adds r0, r1, r5 + ldr r0, [r0] + cmp r0, 0x1 + beq _0809B49C + cmp r0, 0x2 + beq _0809B508 + b _0809B56E + .align 2, 0 +_0809B498: .4byte gUnknown_3001B64 +_0809B49C: + bl sub_809B648 + lsls r0, 24 + cmp r0, 0 + bne _0809B4B0 + ldr r0, [r6] + adds r0, r5 + movs r1, 0x3 + str r1, [r0] + b _0809B4E8 +_0809B4B0: + ldr r0, [r6] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r4, [r0] + cmp r4, 0 + beq _0809B4F8 + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _0809B4F2 + bl sub_809B294 + ldr r0, [r4, 0x4] + bl _call_via_r0 + lsls r0, 24 + cmp r0, 0 + bne _0809B4F2 + ldr r1, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r2, r1, r3 + movs r0, 0x1 + negs r0, r0 + str r0, [r2] + adds r1, r5 + movs r0, 0x3 + str r0, [r1] +_0809B4E8: + movs r0, 0 + movs r1, 0x1 + bl sub_809A680 + b _0809B56E +_0809B4F2: + ldrh r0, [r4] + bl sub_809A6E4 +_0809B4F8: + ldr r0, _0809B534 + ldr r1, [r0] + movs r2, 0x84 + lsls r2, 3 + adds r1, r2 + movs r2, 0x2 + str r2, [r1] + adds r6, r0, 0 +_0809B508: + ldr r0, [r6] + movs r3, 0x83 + lsls r3, 3 + adds r0, r3 + ldr r4, [r0] + cmp r4, 0 + beq _0809B54E + ldr r0, [r4, 0xC] + bl _call_via_r0 + adds r2, r0, 0 + cmp r2, 0x1 + bls _0809B56E + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r1, r0, r3 + cmp r2, 0x2 + bne _0809B538 + movs r0, 0x1 + negs r0, r0 + b _0809B53A + .align 2, 0 +_0809B534: .4byte gUnknown_3001B64 +_0809B538: + movs r0, 0 +_0809B53A: + str r0, [r1] + ldr r0, [r4, 0x8] + cmp r0, 0 + beq _0809B546 + bl _call_via_r0 +_0809B546: + ldrh r0, [r4] + bl sub_809A6F8 + b _0809B558 +_0809B54E: + bl sub_809B648 + lsls r0, 24 + cmp r0, 0 + bne _0809B56E +_0809B558: + ldr r0, _0809B578 + ldr r0, [r0] + movs r1, 0x84 + lsls r1, 3 + adds r0, r1 + movs r1, 0x3 + str r1, [r0] + movs r0, 0 + movs r1, 0x1 + bl sub_809A680 +_0809B56E: + bl sub_809B57C + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0809B578: .4byte gUnknown_3001B64 + thumb_func_end sub_809B474 + + thumb_func_start sub_809B57C +sub_809B57C: + push {r4,r5,lr} + sub sp, 0x8 + bl xxx_draw_string_80144C4 + ldr r5, _0809B5C8 + ldr r0, [r5] + ldr r1, [r0] + cmp r1, 0x3 + bhi _0809B5E4 + cmp r1, 0x1 + bcc _0809B5E4 + movs r4, 0x84 + lsls r4, 3 + adds r0, r4 + ldr r0, [r0] + cmp r0, 0 + beq _0809B5CC + cmp r0, 0x3 + beq _0809B5CC + mov r0, sp + bl sub_80144A4 + cmp r0, 0 + bne _0809B5E4 + ldr r1, [sp] + movs r0, 0x1 + bl sub_809D9E0 + ldr r1, [r5] + adds r2, r1, r4 + movs r0, 0x3 + str r0, [r2] + movs r0, 0x86 + lsls r0, 3 + adds r1, r0 + ldr r0, [sp] + str r0, [r1] + b _0809B5E4 + .align 2, 0 +_0809B5C8: .4byte gUnknown_3001B64 +_0809B5CC: + add r0, sp, 0x4 + bl sub_80144A4 + adds r4, r0, 0 + cmp r4, 0 + bne _0809B5E4 + movs r0, 0 + bl sub_809D9B8 + ldr r0, _0809B5FC + ldr r0, [r0] + str r4, [r0] +_0809B5E4: + ldr r0, _0809B5FC + ldr r0, [r0] + ldr r1, _0809B600 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + bge _0809B604 + movs r0, 0 + movs r1, 0 + bl sub_8005838 + b _0809B60C + .align 2, 0 +_0809B5FC: .4byte gUnknown_3001B64 +_0809B600: .4byte 0x00000434 +_0809B604: + movs r0, 0 + movs r1, 0x5 + bl sub_8005838 +_0809B60C: + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809B57C + + thumb_func_start sub_809B614 +sub_809B614: + push {lr} + bl sub_80060EC + ldr r0, _0809B62C + ldr r2, _0809B630 + ldrh r1, [r2] + strh r1, [r0] + ldr r0, _0809B634 + ands r0, r1 + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_0809B62C: .4byte gUnknown_20399DE +_0809B630: .4byte gUnknown_20399DC +_0809B634: .4byte 0x0000fffd + thumb_func_end sub_809B614 + + thumb_func_start sub_809B638 +sub_809B638: + push {lr} + bl xxx_call_update_bg_vram + pop {r0} + bx r0 + thumb_func_end sub_809B638 + + thumb_func_start nullsub_210 +nullsub_210: + bx lr + thumb_func_end nullsub_210 + + thumb_func_start sub_809B648 +sub_809B648: + push {r4-r6,lr} + sub sp, 0x24 + ldr r0, _0809B66C + ldr r1, [r0] + ldr r2, _0809B670 + adds r1, r2 + ldr r1, [r1] + subs r1, 0x2 + adds r6, r0, 0 + cmp r1, 0x2C + bls _0809B662 + bl _0809C392 +_0809B662: + lsls r0, r1, 2 + ldr r1, _0809B674 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809B66C: .4byte gUnknown_3001B64 +_0809B670: .4byte 0x00000414 +_0809B674: .4byte _0809B678 + .align 2, 0 +_0809B678: + .4byte _0809B72C + .4byte _0809B772 + .4byte _0809B7AC + .4byte _0809B834 + .4byte _0809B89C + .4byte _0809B8FC + .4byte _0809B91C + .4byte _0809B944 + .4byte _0809B9D2 + .4byte _0809BA2A + .4byte _0809BAA8 + .4byte _0809BB66 + .4byte _0809BBDA + .4byte _0809BBDA + .4byte _0809BC26 + .4byte _0809BC68 + .4byte _0809C1B4 + .4byte _0809BC78 + .4byte _0809C1C2 + .4byte _0809C1C2 + .4byte _0809C1C8 + .4byte _0809BCBC + .4byte _0809BCBC + .4byte _0809BD1C + .4byte _0809BD64 + .4byte _0809BDE8 + .4byte _0809BE30 + .4byte _0809BE40 + .4byte _0809BE50 + .4byte _0809BE60 + .4byte _0809BE9C + .4byte _0809BEB8 + .4byte _0809BED4 + .4byte _0809BF70 + .4byte _0809BFFC + .4byte _0809C072 + .4byte _0809C0B8 + .4byte _0809C0FC + .4byte _0809C148 + .4byte _0809C158 + .4byte _0809C168 + .4byte _0809C204 + .4byte _0809C238 + .4byte _0809C280 + .4byte _0809C32A +_0809B72C: + ldr r2, [r6] + movs r3, 0x84 + lsls r3, 3 + adds r0, r2, r3 + ldr r0, [r0] + cmp r0, 0x1 + beq _0809B780 + ldr r0, _0809B754 + ldrh r0, [r0, 0x2] + movs r1, 0x3 + ands r0, r1 + cmp r0, 0 + beq _0809B758 + movs r0, 0x86 + lsls r0, 3 + adds r1, r2, r0 + movs r0, 0x1 + str r0, [r1] + bl _0809C392 + .align 2, 0 +_0809B754: .4byte gRealInputs +_0809B758: + bl sub_8094D14 + lsls r0, 24 + cmp r0, 0 + beq _0809B784 + ldr r0, [r6] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + movs r1, 0x2 + str r1, [r0] + bl _0809C392 +_0809B772: + ldr r0, [r6] + movs r2, 0x84 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809B78A +_0809B780: + bl sub_809B294 +_0809B784: + movs r0, 0x1 + bl _0809C394 +_0809B78A: + ldr r0, _0809B7A8 + ldrh r1, [r0] + ldrh r0, [r0, 0x2] + movs r2, 0x2 + ands r0, r2 + cmp r0, 0 + beq _0809B79C + bl _0809C392 +_0809B79C: + ands r1, r2 + cmp r1, 0 + bne _0809B784 + bl _0809C392 + .align 2, 0 +_0809B7A8: .4byte gRealInputs +_0809B7AC: + ldr r0, [r6] + movs r3, 0x84 + lsls r3, 3 + adds r0, r3 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809B7F4 + bl sub_809B294 + ldr r1, [r6] + ldr r2, _0809B7D8 + adds r0, r1, r2 + ldr r0, [r0] + cmp r0, 0 + bne _0809B7E0 + ldr r3, _0809B7DC + adds r0, r1, r3 + ldr r1, [r0] + movs r0, 0 + bl sub_801602C + b _0809B784 + .align 2, 0 +_0809B7D8: .4byte 0x00000424 +_0809B7DC: .4byte 0x0000042c +_0809B7E0: + ldr r2, _0809B7F0 + adds r0, r1, r2 + ldr r1, [r0] + movs r0, 0x2 + bl sub_801602C + b _0809B784 + .align 2, 0 +_0809B7F0: .4byte 0x0000042c +_0809B7F4: + bl sub_8016080 + cmp r0, 0x3 + bne _0809B80C + bl sub_80160D8 + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + bl _0809C1BC +_0809B80C: + cmp r0, 0x2 + bne _0809B784 + ldr r0, [r6] + ldr r1, _0809B830 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0 + beq _0809B784 + bl sub_80160D8 + ldr r0, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 +_0809B828: + movs r1, 0 + str r1, [r0] + bl _0809C392 + .align 2, 0 +_0809B830: .4byte 0x00000424 +_0809B834: + ldr r0, [r6] + movs r3, 0x84 + lsls r3, 3 + adds r0, r3 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809B85C + bl sub_809B294 + ldr r0, [r6] + ldr r1, _0809B858 + adds r0, r1 + ldr r1, [r0] + movs r0, 0x1 + bl sub_801602C + b _0809B784 + .align 2, 0 +_0809B858: .4byte 0x0000042c +_0809B85C: + bl sub_8016080 + cmp r0, 0x3 + bne _0809B874 + bl sub_80160D8 + ldr r0, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + bl _0809C1BC +_0809B874: + cmp r0, 0x2 + beq _0809B87A + b _0809B784 +_0809B87A: + ldr r0, [r6] + ldr r3, _0809B898 + adds r0, r3 + ldr r0, [r0] + cmp r0, 0 + bne _0809B888 + b _0809B784 +_0809B888: + bl sub_80160D8 + ldr r0, [r6] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + b _0809B828 + .align 2, 0 +_0809B898: .4byte 0x00000424 +_0809B89C: + ldr r0, [r6] + movs r2, 0x84 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809B8C4 + bl sub_809B294 + ldr r0, [r6] + ldr r3, _0809B8C0 + adds r0, r3 + ldr r1, [r0] + movs r0, 0x4 + bl sub_80151C0 + b _0809B784 + .align 2, 0 +_0809B8C0: .4byte 0x0000042c +_0809B8C4: + bl sub_80154F0 + cmp r0, 0x3 + bne _0809B8D4 + bl sub_80155F0 + bl _0809C1B4 +_0809B8D4: + cmp r0, 0x2 + beq _0809B8DA + b _0809B784 +_0809B8DA: + ldr r0, [r6] + ldr r2, _0809B8F8 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0 + bne _0809B8E8 + b _0809B784 +_0809B8E8: + bl sub_80155F0 + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + b _0809B828 + .align 2, 0 +_0809B8F8: .4byte 0x00000424 +_0809B8FC: + ldr r0, [r6] + ldr r1, _0809B914 + adds r0, r1 + ldr r0, [r0] + bl sub_801D014 + ldr r0, [r6] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809B918 + b _0809B932 + .align 2, 0 +_0809B914: .4byte 0x0000042c +_0809B918: .4byte gUnknown_81161A8 +_0809B91C: + ldr r0, [r6] + ldr r3, _0809B93C + adds r0, r3 + ldr r0, [r0] + bl sub_801D014 + ldr r0, [r6] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r1, _0809B940 +_0809B932: + str r1, [r0] + movs r0, 0x4 + bl PlayMenuSoundEffect + b _0809B784 + .align 2, 0 +_0809B93C: .4byte 0x0000042c +_0809B940: .4byte gUnknown_81161B8 +_0809B944: + bl sub_809B294 + ldr r4, _0809B984 + ldr r0, [r4] + movs r2, 0x84 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809B998 + bl sub_809B294 + ldr r0, [r4] + ldr r3, _0809B988 + adds r0, r3 + ldr r0, [r0] + ldr r1, _0809B98C + bl sub_8015080 + lsls r0, 24 + cmp r0, 0 + bne _0809B990 + ldr r0, [r4] +_0809B972: + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 +_0809B978: + movs r1, 0x1 + negs r1, r1 + str r1, [r0] + bl _0809C392 + .align 2, 0 +_0809B984: .4byte gUnknown_3001B64 +_0809B988: .4byte 0x0000042c +_0809B98C: .4byte gUnknown_811610C +_0809B990: + movs r0, 0x4 + bl PlayMenuSoundEffect + b _0809B784 +_0809B998: + bl sub_801516C + cmp r0, 0x2 + beq _0809B9BC + cmp r0, 0x3 + beq _0809B9A6 + b _0809B784 +_0809B9A6: + bl sub_8015198 + ldr r1, [r4] + movs r2, 0x86 + lsls r2, 3 + adds r1, r2 + str r0, [r1] + bl sub_80151A4 + bl _0809C392 +_0809B9BC: + ldr r0, [r4] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] + bl sub_80151A4 + bl _0809C392 +_0809B9D2: + bl sub_809B294 + ldr r4, _0809BA08 + ldr r0, [r4] + movs r1, 0x84 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809BA1C + bl sub_809B294 + ldr r0, [r4] + ldr r2, _0809BA0C + adds r0, r2 + ldr r0, [r0] + ldr r1, _0809BA10 + bl sub_8015080 + lsls r0, 24 + cmp r0, 0 + bne _0809BA14 + ldr r0, [r4] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + b _0809B978 + .align 2, 0 +_0809BA08: .4byte gUnknown_3001B64 +_0809BA0C: .4byte 0x0000042c +_0809BA10: .4byte gUnknown_811612C +_0809BA14: + movs r0, 0x4 + bl PlayMenuSoundEffect + b _0809B784 +_0809BA1C: + bl sub_801516C + cmp r0, 0x2 + beq _0809B9BC + cmp r0, 0x3 + beq _0809B9A6 + b _0809B784 +_0809BA2A: + ldr r0, [r6] + movs r1, 0x84 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809BA68 + bl sub_809B294 + ldr r0, [r6] + ldr r2, _0809BA5C + adds r0, r2 + ldr r0, [r0] + movs r1, 0x3 + bl sub_80211AC + lsls r0, 24 + cmp r0, 0 + bne _0809BA60 + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + b _0809B978 + .align 2, 0 +_0809BA5C: .4byte 0x00000424 +_0809BA60: + movs r0, 0x4 + bl PlayMenuSoundEffect + b _0809B784 +_0809BA68: + movs r0, 0x1 + bl sub_8021274 + cmp r0, 0x2 + beq _0809BA92 + cmp r0, 0x3 + beq _0809BA78 + b _0809B784 +_0809BA78: + bl sub_802132C + ldr r1, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r1, r2 + lsls r0, 24 + lsrs r0, 24 + str r0, [r1] + bl sub_80213A0 + bl _0809C392 +_0809BA92: + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] + bl sub_80213A0 + bl _0809C392 +_0809BAA8: + ldr r0, [r6] + movs r1, 0x84 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809BB10 + movs r0, 0 + movs r1, 0x12 + bl sub_8001658 + lsls r0, 16 + asrs r0, 16 + bl sub_80A2654 + lsls r0, 16 + asrs r4, r0, 16 + bl sub_809B294 + movs r0, 0x3 + movs r1, 0 + movs r2, 0xA + movs r3, 0x1 + bl sub_802F73C + lsls r0, 24 + cmp r0, 0 + bne _0809BAEA + ldr r0, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + b _0809B978 +_0809BAEA: + movs r5, 0x1 + negs r5, r5 + cmp r4, r5 + beq _0809BB08 + adds r0, r4, 0 + bl sub_802F848 + lsls r0, 24 + cmp r0, 0 + bne _0809BB08 + movs r0, 0 + movs r1, 0x12 + adds r2, r5, 0 + bl sub_80018D8 +_0809BB08: + movs r0, 0x4 + bl PlayMenuSoundEffect + b _0809B784 +_0809BB10: + movs r0, 0x1 + bl sub_802F8A0 + cmp r0, 0x2 + beq _0809BB50 + cmp r0, 0x3 + beq _0809BB20 + b _0809B784 +_0809BB20: + bl sub_802F90C + adds r4, r0, 0 + lsls r4, 16 + asrs r4, 16 + adds r0, r4, 0 + bl sub_80A26B8 + adds r2, r0, 0 + lsls r2, 16 + asrs r2, 16 + movs r0, 0 + movs r1, 0x12 + bl sub_80018D8 + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + str r4, [r0] + bl sub_802F974 + bl _0809C392 +_0809BB50: + ldr r0, [r6] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] + bl sub_802F974 + bl _0809C392 +_0809BB66: + ldr r0, [r6] + movs r2, 0x84 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809BB9A + bl sub_809B294 + movs r0, 0x3 + movs r1, 0 + movs r2, 0xA + bl sub_80302E8 + lsls r0, 24 + cmp r0, 0 + bne _0809BB92 + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + b _0809B978 +_0809BB92: + movs r0, 0x4 + bl PlayMenuSoundEffect + b _0809B784 +_0809BB9A: + movs r0, 0x1 + bl sub_80303AC + cmp r0, 0x2 + beq _0809BBC4 + cmp r0, 0x3 + beq _0809BBAA + b _0809B784 +_0809BBAA: + bl sub_8030418 + ldr r1, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r1, r2 + lsls r0, 16 + asrs r0, 16 + str r0, [r1] + bl sub_8030480 + bl _0809C392 +_0809BBC4: + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] + bl sub_8030480 + bl _0809C392 +_0809BBDA: + ldr r0, [r6] + movs r1, 0x84 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809BC14 + bl sub_809B294 + ldr r0, [r6] + ldr r2, _0809BC10 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0xE + bne _0809BC02 + movs r0, 0 + movs r1, 0x18 + movs r2, 0x1 + bl sub_80018D8 +_0809BC02: + movs r0, 0x1 + bl sub_8011C28 + movs r0, 0 + bl PrepareSavePakWrite + b _0809B784 + .align 2, 0 +_0809BC10: .4byte 0x00000414 +_0809BC14: + bl WriteSavePak + lsls r0, 24 + cmp r0, 0 + beq _0809BC20 + b _0809B784 +_0809BC20: + bl FinishWriteSavePak + b _0809C392 +_0809BC26: + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + lsrs r0, 24 + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_809B294 + adds r0, r4, 0 + bl CreateKangaskhanStorage + lsls r0, 24 + cmp r0, 0 + beq _0809BC5C + ldr r0, _0809BC54 + ldr r0, [r0] + movs r3, 0x83 + lsls r3, 3 + adds r0, r3 + ldr r1, _0809BC58 + b _0809C266 + .align 2, 0 +_0809BC54: .4byte gUnknown_3001B64 +_0809BC58: .4byte gUnknown_81161C8 +_0809BC5C: + ldr r0, _0809BC64 + ldr r0, [r0] + b _0809B972 + .align 2, 0 +_0809BC64: .4byte gUnknown_3001B64 +_0809BC68: + ldr r0, [r6] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809BC74 + b _0809C266 + .align 2, 0 +_0809BC74: .4byte gUnknown_81161D8 +_0809BC78: + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + lsrs r0, 24 + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_809B294 + adds r0, r4, 0 + bl CreateFelicityBank + lsls r0, 24 + cmp r0, 0 + beq _0809BCB0 + ldr r0, _0809BCA8 + ldr r0, [r0] + movs r3, 0x83 + lsls r3, 3 + adds r0, r3 + ldr r1, _0809BCAC + b _0809C266 + .align 2, 0 +_0809BCA8: .4byte gUnknown_3001B64 +_0809BCAC: .4byte gUnknown_81161E8 +_0809BCB0: + ldr r0, _0809BCB8 + ldr r0, [r0] + b _0809B972 + .align 2, 0 +_0809BCB8: .4byte gUnknown_3001B64 +_0809BCBC: + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_809B294 + ldr r0, _0809BCE0 + ldr r0, [r0] + ldr r2, _0809BCE4 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x17 + bne _0809BCE8 + negs r0, r4 + orrs r0, r4 + lsrs r0, 31 + b _0809BCF0 + .align 2, 0 +_0809BCE0: .4byte gUnknown_3001B64 +_0809BCE4: .4byte 0x00000414 +_0809BCE8: + movs r0, 0x2 + cmp r4, 0 + beq _0809BCF0 + movs r0, 0x3 +_0809BCF0: + bl CreateKecleonBros + lsls r0, 24 + cmp r0, 0 + beq _0809BD10 + ldr r0, _0809BD08 + ldr r0, [r0] + movs r3, 0x83 + lsls r3, 3 + adds r0, r3 + ldr r1, _0809BD0C + b _0809C266 + .align 2, 0 +_0809BD08: .4byte gUnknown_3001B64 +_0809BD0C: .4byte gUnknown_81161F8 +_0809BD10: + ldr r0, _0809BD18 + ldr r0, [r0] + b _0809B972 + .align 2, 0 +_0809BD18: .4byte gUnknown_3001B64 +_0809BD1C: + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + lsrs r0, 24 + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_809B294 + adds r0, r4, 0 + bl sub_801FB50 + lsls r0, 24 + cmp r0, 0 + beq _0809BD54 + ldr r0, _0809BD4C + ldr r0, [r0] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809BD50 + b _0809C266 + .align 2, 0 +_0809BD4C: .4byte gUnknown_3001B64 +_0809BD50: .4byte gUnknown_8116208 +_0809BD54: + ldr r0, _0809BD60 + ldr r0, [r0] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + b _0809B978 + .align 2, 0 +_0809BD60: .4byte gUnknown_3001B64 +_0809BD64: + ldr r0, [r6] + movs r1, 0x84 + lsls r1, 3 + adds r0, r1 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809BD84 + bl sub_809B294 + movs r0, 0 + movs r1, 0x39 + bl sub_80015C0 + bl sub_802465C + b _0809B784 +_0809BD84: + bl sub_80246F0 + adds r4, r0, 0 + movs r0, 0 + movs r1, 0x39 + bl sub_8001658 + cmp r0, 0 + bne _0809BDB2 + bl HasEvolutionCompleted + lsls r0, 24 + cmp r0, 0 + beq _0809BDB2 + movs r0, 0 + movs r1, 0x39 + movs r2, 0x1 + bl sub_80018D8 + movs r0, 0x46 + movs r1, 0 + bl GroundMap_ExecuteEvent +_0809BDB2: + cmp r4, 0x3 + bne _0809BDCC + bl CleanLuminousCave + ldr r0, _0809BDC8 + ldr r0, [r0] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + b _0809C1BC + .align 2, 0 +_0809BDC8: .4byte gUnknown_3001B64 +_0809BDCC: + cmp r4, 0x2 + beq _0809BDD2 + b _0809B784 +_0809BDD2: + bl CleanLuminousCave + ldr r0, _0809BDE4 + ldr r0, [r0] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + b _0809B828 + .align 2, 0 +_0809BDE4: .4byte gUnknown_3001B64 +_0809BDE8: + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + lsrs r0, 24 + negs r4, r0 + orrs r4, r0 + lsrs r4, 31 + bl sub_809B294 + adds r0, r4, 0 + bl CreateWigglytuffShop + lsls r0, 24 + cmp r0, 0 + beq _0809BE20 + ldr r0, _0809BE18 + ldr r0, [r0] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r1, _0809BE1C + b _0809C266 + .align 2, 0 +_0809BE18: .4byte gUnknown_3001B64 +_0809BE1C: .4byte gUnknown_8116218 +_0809BE20: + ldr r0, _0809BE2C + ldr r0, [r0] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + b _0809B978 + .align 2, 0 +_0809BE2C: .4byte gUnknown_3001B64 +_0809BE30: + ldr r0, [r6] + movs r3, 0x83 + lsls r3, 3 + adds r0, r3 + ldr r1, _0809BE3C + b _0809C266 + .align 2, 0 +_0809BE3C: .4byte gUnknown_8116228 +_0809BE40: + ldr r0, [r6] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r1, _0809BE4C + b _0809C266 + .align 2, 0 +_0809BE4C: .4byte gUnknown_8116238 +_0809BE50: + ldr r0, [r6] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809BE5C + b _0809C266 + .align 2, 0 +_0809BE5C: .4byte gUnknown_8116248 +_0809BE60: + bl sub_809B294 + movs r0, 0x98 + lsls r0, 1 + bl CreateHelperPelipperMenu + lsls r0, 24 + cmp r0, 0 + bne _0809BE84 + ldr r0, _0809BE80 + ldr r0, [r0] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + b _0809B978 + .align 2, 0 +_0809BE80: .4byte gUnknown_3001B64 +_0809BE84: + ldr r0, _0809BE94 + ldr r0, [r0] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r1, _0809BE98 + b _0809C266 + .align 2, 0 +_0809BE94: .4byte gUnknown_3001B64 +_0809BE98: .4byte gUnknown_8116258 +_0809BE9C: + movs r0, 0x4 + bl PlayMenuSoundEffect + ldr r0, _0809BEB0 + ldr r0, [r0] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809BEB4 + b _0809C266 + .align 2, 0 +_0809BEB0: .4byte gUnknown_3001B64 +_0809BEB4: .4byte gUnknown_8116268 +_0809BEB8: + movs r0, 0x4 + bl PlayMenuSoundEffect + ldr r0, _0809BECC + ldr r0, [r0] + movs r3, 0x83 + lsls r3, 3 + adds r0, r3 + ldr r1, _0809BED0 + b _0809C266 + .align 2, 0 +_0809BECC: .4byte gUnknown_3001B64 +_0809BED0: .4byte gUnknown_8116278 +_0809BED4: + mov r0, sp + bl sub_8099328 + lsls r0, 24 + cmp r0, 0 + beq _0809BF4E + add r1, sp, 0x4 + add r2, sp, 0x8 + movs r0, 0x2 + bl sub_8001B88 + ldr r0, [sp, 0x8] + cmp r0, 0x7 + bgt _0809BF4E + add r4, sp, 0xC +_0809BEF2: + lsls r1, r0, 24 + lsrs r1, 24 + mov r0, sp + ldrb r2, [r0] + adds r0, r4, 0 + bl sub_8096AF8 + ldrb r0, [r4] + cmp r0, 0 + beq _0809BF44 + ldr r1, [sp, 0x4] + ldr r2, [sp, 0x8] + movs r0, 0x2 + bl ScenarioCalc + ldr r0, _0809BF40 + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 3 + adds r2, r0, r1 + ldrh r1, [r4, 0x2] + lsls r1, 16 + asrs r1, 16 + negs r0, r1 + orrs r0, r1 + lsrs r1, r0, 31 + movs r3, 0x4 + ldrsh r0, [r4, r3] + cmp r0, 0 + beq _0809BF30 + adds r1, 0x2 +_0809BF30: + str r1, [r2] + cmp r1, 0 + beq _0809BF38 + b _0809C392 +_0809BF38: + movs r0, 0x3 + str r0, [r2] + b _0809C392 + .align 2, 0 +_0809BF40: .4byte gUnknown_3001B64 +_0809BF44: + ldr r0, [sp, 0x8] + adds r0, 0x1 + str r0, [sp, 0x8] + cmp r0, 0x7 + ble _0809BEF2 +_0809BF4E: + ldr r0, _0809BF6C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + movs r1, 0 + str r1, [r0] + bl sub_8096BD0 + movs r0, 0x2 + movs r1, 0 + movs r2, 0 + bl ScenarioCalc + b _0809C392 + .align 2, 0 +_0809BF6C: .4byte gUnknown_3001B64 +_0809BF70: + mov r5, sp + adds r5, 0x1 + adds r0, r5, 0 + bl sub_8099328 + lsls r0, 24 + cmp r0, 0 + bne _0809BF82 + b _0809C392 +_0809BF82: + add r1, sp, 0x14 + add r2, sp, 0x18 + movs r0, 0x2 + bl sub_8001B88 + add r4, sp, 0x1C + ldr r1, [sp, 0x18] + lsls r1, 24 + lsrs r1, 24 + ldrb r2, [r5] + adds r0, r4, 0 + bl sub_8096AF8 + ldrb r0, [r4] + cmp r0, 0 + bne _0809BFA4 + b _0809C392 +_0809BFA4: + ldr r0, [sp, 0x18] + lsls r0, 24 + lsrs r0, 24 + ldrb r1, [r5] + bl sub_802DB28 + lsls r0, 24 + cmp r0, 0 + bne _0809BFB8 + b _0809C392 +_0809BFB8: + movs r0, 0 + movs r1, 0x19 + bl sub_8001658 + cmp r0, 0x63 + bgt _0809BFCE + adds r2, r0, 0x1 + movs r0, 0 + movs r1, 0x19 + bl sub_80018D8 +_0809BFCE: + movs r0, 0 + movs r1, 0x39 + movs r2, 0x1 + bl sub_80018D8 + ldr r1, [sp, 0x14] + ldr r2, [sp, 0x18] + adds r2, 0x1 + movs r0, 0x2 + bl ScenarioCalc + ldr r0, _0809BFF4 + ldr r0, [r0] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809BFF8 + b _0809C266 + .align 2, 0 +_0809BFF4: .4byte gUnknown_3001B64 +_0809BFF8: .4byte gUnknown_8116288 +_0809BFFC: + ldr r0, [r6] + movs r3, 0x84 + lsls r3, 3 + adds r0, r3 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809C036 + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + lsrs r0, 24 + negs r4, r0 + orrs r4, r0 + asrs r4, 31 + movs r0, 0x4 + ands r4, r0 + bl sub_809B294 + adds r0, r4, 0 + bl MakuhitaDojo_New + lsls r0, 24 + cmp r0, 0 + beq _0809C032 + bl _0809B784 +_0809C032: + ldr r0, [r6] + b _0809B972 +_0809C036: + bl sub_802FE58 + cmp r0, 0x2 + beq _0809C05E + cmp r0, 0x3 + beq _0809C046 + bl _0809B784 +_0809C046: + bl sub_802FED0 + ldr r1, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r1, r2 + lsls r0, 16 + asrs r0, 16 + str r0, [r1] + bl MakuhitaDojo_Delete + b _0809C392 +_0809C05E: + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] + bl MakuhitaDojo_Delete + b _0809C392 +_0809C072: + movs r4, 0x1 + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _0809C082 + movs r4, 0x5 +_0809C082: + bl sub_809B294 + adds r0, r4, 0 + bl MakuhitaDojo_New + lsls r0, 24 + cmp r0, 0 + beq _0809C0A8 + ldr r0, _0809C0A0 + ldr r0, [r0] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r1, _0809C0A4 + b _0809C266 + .align 2, 0 +_0809C0A0: .4byte gUnknown_3001B64 +_0809C0A4: .4byte gUnknown_8116298 +_0809C0A8: + ldr r0, _0809C0B4 + ldr r0, [r0] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + b _0809B978 + .align 2, 0 +_0809C0B4: .4byte gUnknown_3001B64 +_0809C0B8: + movs r4, 0x2 + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _0809C0C8 + movs r4, 0x6 +_0809C0C8: + bl sub_809B294 + adds r0, r4, 0 + bl MakuhitaDojo_New + lsls r0, 24 + cmp r0, 0 + beq _0809C0F0 + ldr r0, _0809C0E8 + ldr r0, [r0] + movs r3, 0x83 + lsls r3, 3 + adds r0, r3 + ldr r1, _0809C0EC + b _0809C266 + .align 2, 0 +_0809C0E8: .4byte gUnknown_3001B64 +_0809C0EC: .4byte gUnknown_81162A8 +_0809C0F0: + ldr r0, _0809C0F8 + ldr r0, [r0] + b _0809B972 + .align 2, 0 +_0809C0F8: .4byte gUnknown_3001B64 +_0809C0FC: + movs r4, 0x3 + movs r0, 0x4 + bl sub_80023E4 + lsls r0, 24 + cmp r0, 0 + beq _0809C10C + movs r4, 0x7 +_0809C10C: + bl sub_809B294 + adds r0, r4, 0 + bl MakuhitaDojo_New + lsls r0, 24 + cmp r0, 0 + beq _0809C134 + ldr r0, _0809C12C + ldr r0, [r0] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809C130 + b _0809C266 + .align 2, 0 +_0809C12C: .4byte gUnknown_3001B64 +_0809C130: .4byte gUnknown_81162B8 +_0809C134: + ldr r0, _0809C144 + ldr r0, [r0] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + bl _0809B978 + .align 2, 0 +_0809C144: .4byte gUnknown_3001B64 +_0809C148: + ldr r0, [r6] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r1, _0809C154 + b _0809C266 + .align 2, 0 +_0809C154: .4byte gUnknown_81162C8 +_0809C158: + ldr r0, [r6] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809C164 + b _0809C266 + .align 2, 0 +_0809C164: .4byte gUnknown_81162D8 +_0809C168: + bl sub_809B294 + bl sub_803B050 + lsls r0, 24 + cmp r0, 0 + beq _0809C1A0 + ldr r4, _0809C194 + ldr r0, [r4] + ldr r3, _0809C198 + adds r0, r3 + movs r1, 0 + ldrsh r0, [r0, r1] + bl sub_803B100 + ldr r0, [r4] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809C19C + b _0809C266 + .align 2, 0 +_0809C194: .4byte gUnknown_3001B64 +_0809C198: .4byte 0x000005a4 +_0809C19C: .4byte gUnknown_81162E8 +_0809C1A0: + ldr r0, _0809C1B0 + ldr r0, [r0] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + bl _0809B978 + .align 2, 0 +_0809C1B0: .4byte gUnknown_3001B64 +_0809C1B4: + ldr r0, [r6] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 +_0809C1BC: + movs r1, 0x1 + str r1, [r0] + b _0809C392 +_0809C1C2: + bl sub_809B294 + b _0809C392 +_0809C1C8: + movs r0, 0x2 + bl sub_80252F0 + lsls r0, 24 + cmp r0, 0 + beq _0809C1EC + ldr r0, _0809C1E4 + ldr r0, [r0] + movs r2, 0x83 + lsls r2, 3 + adds r0, r2 + ldr r1, _0809C1E8 + b _0809C266 + .align 2, 0 +_0809C1E4: .4byte gUnknown_3001B64 +_0809C1E8: .4byte gUnknown_81162F8 +_0809C1EC: + ldr r0, _0809C200 + ldr r0, [r0] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + movs r1, 0x2 + negs r1, r1 + str r1, [r0] + b _0809C392 + .align 2, 0 +_0809C200: .4byte gUnknown_3001B64 +_0809C204: + ldr r1, [r6] + ldr r2, _0809C230 + adds r0, r1, r2 + ldr r0, [r0] + movs r3, 0x85 + lsls r3, 3 + adds r1, r3 + ldr r1, [r1] + bl sub_809CCDC + ldr r1, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r2, r1, r3 + str r0, [r2] + movs r0, 0x83 + lsls r0, 3 + adds r1, r0 + ldr r0, _0809C234 + str r0, [r1] + bl _0809B784 + .align 2, 0 +_0809C230: .4byte 0x00000424 +_0809C234: .4byte gUnknown_8116308 +_0809C238: + ldr r0, [r6] + movs r2, 0x85 + lsls r2, 3 + adds r1, r0, r2 + ldr r5, [r1] + ldr r3, _0809C26C + adds r0, r3 + ldrb r4, [r0] + bl sub_809B294 + adds r0, r5, 0 + adds r1, r4, 0 + movs r2, 0x1 + bl sub_801B60C + lsls r0, 24 + cmp r0, 0 + beq _0809C274 + ldr r0, [r6] + movs r1, 0x83 + lsls r1, 3 + adds r0, r1 + ldr r1, _0809C270 +_0809C266: + str r1, [r0] + bl _0809B784 + .align 2, 0 +_0809C26C: .4byte 0x00000424 +_0809C270: .4byte gUnknown_8116318 +_0809C274: + ldr r0, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + bl _0809B978 +_0809C280: + ldr r0, [r6] + movs r3, 0x84 + lsls r3, 3 + adds r0, r3 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809C2B8 + bl sub_809B294 + movs r0, 0 + movs r1, 0x1 + movs r2, 0x1 + bl sub_800641C + movs r0, 0 + movs r1, 0 + movs r2, 0 + movs r3, 0xA + bl sub_801A5D8 + lsls r0, 24 + cmp r0, 0 + beq _0809C2B2 + bl _0809B784 +_0809C2B2: + ldr r0, [r6] + bl _0809B972 +_0809C2B8: + movs r0, 0x1 + bl sub_801A6E8 + cmp r0, 0x2 + beq _0809C320 + cmp r0, 0x3 + beq _0809C2CA + bl _0809B784 +_0809C2CA: + bl sub_801A8AC + adds r5, r0, 0 + ldr r0, _0809C304 + ldr r0, [r0] + lsls r1, r5, 2 + adds r0, r1 + ldrb r4, [r0, 0x2] + adds r0, r4, 0 + bl IsEdibleItem + lsls r0, 24 + cmp r0, 0 + beq _0809C30C + ldr r0, _0809C308 + adds r1, r4, 0 + movs r2, 0 + bl BufferItemName + adds r0, r5, 0 + bl ShiftItemsDownFrom + ldr r0, [r6] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + movs r1, 0x1 + b _0809C318 + .align 2, 0 +_0809C304: .4byte gTeamInventoryRef +_0809C308: .4byte gUnknown_202DE58 +_0809C30C: + ldr r0, [r6] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 +_0809C314: + movs r1, 0x1 + negs r1, r1 +_0809C318: + str r1, [r0] + bl sub_801A928 + b _0809C392 +_0809C320: + ldr r0, [r6] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + b _0809C314 +_0809C32A: + adds r4, r6, 0 + ldr r0, [r4] + movs r2, 0x84 + lsls r2, 3 + adds r0, r2 + ldr r0, [r0] + cmp r0, 0x1 + bne _0809C36C + bl sub_809B294 + ldr r1, [r4] + ldr r3, _0809C368 + adds r0, r1, r3 + ldr r0, [r0] + movs r2, 0x85 + lsls r2, 3 + adds r1, r2 + ldr r1, [r1] + bl DrawCredits + lsls r0, 24 + cmp r0, 0 + beq _0809C35C + bl _0809B784 +_0809C35C: + ldr r0, [r4] + movs r3, 0x86 + lsls r3, 3 + adds r0, r3 + bl _0809B978 + .align 2, 0 +_0809C368: .4byte 0x00000424 +_0809C36C: + bl sub_8035574 + cmp r0, 0x3 + bls _0809C378 + bl _0809B784 +_0809C378: + cmp r0, 0x2 + bcs _0809C380 + bl _0809B784 +_0809C380: + ldr r0, [r6] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] + bl sub_803565C +_0809C392: + movs r0, 0 +_0809C394: + add sp, 0x24 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_809B648 + + thumb_func_start sub_809C39C +sub_809C39C: + push {lr} + bl sub_801D178 + ldr r1, _0809C3D4 + ldr r1, [r1] + movs r2, 0x86 + lsls r2, 3 + adds r1, r2 + str r0, [r1] + cmp r0, 0x3 + bne _0809C3CC + bl sub_801D1D4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8002694 + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1 + negs r2, r2 + movs r1, 0 + bl GroundMainGroundRequest +_0809C3CC: + bl sub_801D1E0 + pop {r0} + bx r0 + .align 2, 0 +_0809C3D4: .4byte gUnknown_3001B64 + thumb_func_end sub_809C39C + + thumb_func_start sub_809C3D8 +sub_809C3D8: + push {lr} + bl sub_801D178 + ldr r1, _0809C410 + ldr r1, [r1] + movs r2, 0x86 + lsls r2, 3 + adds r1, r2 + str r0, [r1] + cmp r0, 0x3 + bne _0809C408 + bl sub_801D1D4 + lsls r0, 24 + lsrs r0, 24 + bl sub_8002694 + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1 + negs r2, r2 + movs r1, 0 + bl GroundMainGroundRequest +_0809C408: + bl sub_801D1E0 + pop {r0} + bx r0 + .align 2, 0 +_0809C410: .4byte gUnknown_3001B64 + thumb_func_end sub_809C3D8 + + thumb_func_start sub_809C414 +sub_809C414: + push {lr} + bl sub_802540C + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0 + beq _0809C448 + ldr r0, _0809C444 + ldr r0, [r0] + movs r2, 0x86 + lsls r2, 3 + adds r0, r2 + str r1, [r0] + adds r0, r1, 0 + bl sub_8002694 + lsls r0, 16 + asrs r0, 16 + movs r2, 0x1 + negs r2, r2 + movs r1, 0 + bl GroundMainGroundRequest + b _0809C458 + .align 2, 0 +_0809C444: .4byte gUnknown_3001B64 +_0809C448: + ldr r0, _0809C460 + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] +_0809C458: + bl sub_8025418 + pop {r0} + bx r0 + .align 2, 0 +_0809C460: .4byte gUnknown_3001B64 + thumb_func_end sub_809C414 + + thumb_func_start sub_809C464 +sub_809C464: + push {lr} + bl DeleteTestTracker + bl sub_8001064 + bl sub_809965C + pop {r0} + bx r0 + thumb_func_end sub_809C464 + + thumb_func_start sub_809C478 +sub_809C478: + push {lr} + sub sp, 0x8 + bl sub_80356A0 + cmp r0, 0x3 + bne _0809C492 + ldr r0, _0809C4AC + bl PlaySound + bl InitFlash + bl ClearFlashData +_0809C492: + bl sub_8035758 + add r2, sp, 0x4 + movs r0, 0x3 + mov r1, sp + bl sub_8001B88 + movs r0, 0 + bl sub_80993C0 + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_0809C4AC: .4byte 0x00000313 + thumb_func_end sub_809C478 + + thumb_func_start sub_809C4B0 +sub_809C4B0: + push {r4,r5,lr} + movs r4, 0x1 + negs r4, r4 + ldr r5, _0809C4FC + ldr r0, [r5] + movs r2, 0x86 + lsls r2, 3 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, 0 + bne _0809C4DE + bl sub_803B168 + lsls r0, 16 + ldr r1, [r5] + ldr r3, _0809C500 + adds r2, r1, r3 + asrs r4, r0, 16 + lsrs r0, 16 + strh r0, [r2] + movs r0, 0x86 + lsls r0, 3 + adds r1, r0 +_0809C4DE: + str r4, [r1] + bl sub_803B1BC + movs r0, 0x1 + negs r0, r0 + cmp r4, r0 + beq _0809C4F4 + adds r0, r4, 0 + movs r1, 0 + bl GroundMap_ExecuteEvent +_0809C4F4: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809C4FC: .4byte gUnknown_3001B64 +_0809C500: .4byte 0x000005a4 + thumb_func_end sub_809C4B0 + + thumb_func_start sub_809C504 +sub_809C504: + push {r4,lr} + sub sp, 0x4 + mov r0, sp + bl sub_80282DC + adds r4, r0, 0 + cmp r4, 0x1 + bne _0809C530 + mov r0, sp + ldrb r0, [r0] + bl sub_809927C + ldr r0, _0809C52C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + str r4, [r0] + b _0809C540 + .align 2, 0 +_0809C52C: .4byte gUnknown_3001B64 +_0809C530: + ldr r0, _0809C54C + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + movs r1, 0x1 + negs r1, r1 + str r1, [r0] +_0809C540: + bl sub_80282FC + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C54C: .4byte gUnknown_3001B64 + thumb_func_end sub_809C504 + + thumb_func_start sub_809C550 +sub_809C550: + push {r4,r5,lr} + bl sub_802E90C + adds r4, r0, 0 + movs r5, 0 + bl sub_802E918 + cmp r4, 0x2 + beq _0809C586 + cmp r4, 0x2 + bhi _0809C56C + cmp r4, 0x1 + beq _0809C572 + b _0809C5AC +_0809C56C: + cmp r4, 0x3 + beq _0809C59A + b _0809C5AC +_0809C572: + movs r0, 0x4 + movs r1, 0x1D + movs r2, 0x3 + bl sub_8001CC4 + lsls r0, 24 + cmp r0, 0 + beq _0809C5AC + movs r5, 0x1 + b _0809C5AC +_0809C586: + movs r0, 0x4 + movs r1, 0x1F + movs r2, 0x2 + bl sub_8001CC4 + lsls r0, 24 + cmp r0, 0 + beq _0809C5AC + movs r5, 0x2 + b _0809C5AC +_0809C59A: + movs r0, 0xB + movs r1, 0x33 + movs r2, 0x8 + bl sub_8001CC4 + lsls r0, 24 + cmp r0, 0 + beq _0809C5AC + movs r5, 0x3 +_0809C5AC: + ldr r0, _0809C5C0 + ldr r0, [r0] + movs r1, 0x86 + lsls r1, 3 + adds r0, r1 + str r5, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0809C5C0: .4byte gUnknown_3001B64 + thumb_func_end sub_809C550 + + thumb_func_start sub_809C5C4 +sub_809C5C4: + push {r4,lr} + ldr r4, _0809C610 + movs r0, 0x24 + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + movs r2, 0 + str r2, [r0] + str r2, [r0, 0x4] + movs r3, 0 + strh r2, [r0, 0x8] + strh r2, [r0, 0xA] + strb r3, [r0, 0xD] + ldr r0, [r4] + strb r3, [r0, 0xE] + ldr r1, [r4] + str r2, [r1, 0x10] + ldr r0, _0809C614 + strh r0, [r1, 0x14] + movs r0, 0x23 + strh r0, [r1, 0x16] + strb r3, [r1, 0x18] + ldr r1, [r4] + movs r0, 0x3F + strb r0, [r1, 0x19] + ldr r0, [r4] + str r2, [r0, 0x1C] + adds r0, 0x20 + strb r3, [r0] + bl nullsub_107 + bl sub_809C63C + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C610: .4byte gUnknown_3001B68 +_0809C614: .4byte 0x0000ffff + thumb_func_end sub_809C5C4 + + thumb_func_start sub_809C618 +sub_809C618: + push {r4,lr} + bl sub_809C63C + bl nullsub_107 + bl nullsub_108 + ldr r4, _0809C638 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809C638: .4byte gUnknown_3001B68 + thumb_func_end sub_809C618 + + thumb_func_start sub_809C63C +sub_809C63C: + push {lr} + bl nullsub_108 + ldr r0, _0809C654 + ldr r0, [r0] + movs r1, 0 + str r1, [r0, 0x1C] + adds r0, 0x20 + strb r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0809C654: .4byte gUnknown_3001B68 + thumb_func_end sub_809C63C + + thumb_func_start sub_809C658 +sub_809C658: + push {lr} + ldr r0, _0809C670 + ldr r0, [r0] + ldrh r0, [r0, 0xA] + cmp r0, 0x5 + bhi _0809C6C8 + lsls r0, 2 + ldr r1, _0809C674 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C670: .4byte gUnknown_3001B68 +_0809C674: .4byte _0809C678 + .align 2, 0 +_0809C678: + .4byte _0809C6C0 + .4byte _0809C6C0 + .4byte _0809C6AC + .4byte _0809C690 + .4byte _0809C69E + .4byte _0809C6B6 +_0809C690: + bl nullsub_111 + bl nullsub_112 + bl nullsub_113 + b _0809C6C8 +_0809C69E: + bl nullsub_114 + bl nullsub_115 + bl nullsub_116 + b _0809C6C8 +_0809C6AC: + bl nullsub_109 + bl nullsub_110 + b _0809C6C8 +_0809C6B6: + bl nullsub_107 + bl nullsub_108 + b _0809C6C8 +_0809C6C0: + bl nullsub_107 + bl nullsub_108 +_0809C6C8: + pop {r0} + bx r0 + thumb_func_end sub_809C658 + + thumb_func_start sub_809C6CC +sub_809C6CC: + push {lr} + lsls r0, 16 + lsrs r2, r0, 16 + ldr r0, _0809C6E8 + ldr r1, [r0] + ldrh r0, [r1, 0x8] + cmp r0, r2 + beq _0809C6E2 + movs r0, 0 + strh r2, [r1, 0x8] + strb r0, [r1, 0xE] +_0809C6E2: + pop {r0} + bx r0 + .align 2, 0 +_0809C6E8: .4byte gUnknown_3001B68 + thumb_func_end sub_809C6CC + + thumb_func_start sub_809C6EC +sub_809C6EC: + push {lr} + bl sub_8098F88 + lsls r0, 24 + cmp r0, 0 + bne _0809C718 + ldr r0, _0809C70C + ldr r0, [r0] + ldrb r0, [r0, 0xC] + cmp r0, 0 + bne _0809C710 + movs r0, 0x4 + bl sub_809C6CC + b _0809C71E + .align 2, 0 +_0809C70C: .4byte gGameOptionsRef +_0809C710: + movs r0, 0x3 + bl sub_809C6CC + b _0809C71E +_0809C718: + movs r0, 0x5 + bl sub_809C6CC +_0809C71E: + pop {r0} + bx r0 + thumb_func_end sub_809C6EC + + thumb_func_start sub_809C724 +sub_809C724: + ldr r0, _0809C72C + ldr r0, [r0] + ldrh r0, [r0, 0x8] + bx lr + .align 2, 0 +_0809C72C: .4byte gUnknown_3001B68 + thumb_func_end sub_809C724 + + thumb_func_start sub_809C730 +sub_809C730: + push {lr} + bl sub_809C740 + lsls r0, 24 + lsrs r0, 24 + pop {r1} + bx r1 + thumb_func_end sub_809C730 + + thumb_func_start sub_809C740 +sub_809C740: + push {lr} + ldr r0, _0809C750 + ldr r0, [r0] + ldr r0, [r0] + cmp r0, 0 + beq _0809C754 + movs r0, 0 + b _0809C756 + .align 2, 0 +_0809C750: .4byte gUnknown_3001B68 +_0809C754: + movs r0, 0x1 +_0809C756: + pop {r1} + bx r1 + thumb_func_end sub_809C740 + + thumb_func_start nullsub_104 +nullsub_104: + bx lr + thumb_func_end nullsub_104 + + thumb_func_start sub_809C760 +sub_809C760: + ldr r0, _0809C76C + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0xE] + bx lr + .align 2, 0 +_0809C76C: .4byte gUnknown_3001B68 + thumb_func_end sub_809C760 + + thumb_func_start sub_809C770 +sub_809C770: + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + asrs r0, 16 + mov r8, r0 + lsls r1, 16 + asrs r6, r1, 16 + ldr r4, _0809C790 + ldr r1, [r4] + ldrb r0, [r1, 0xE] + cmp r0, 0 + beq _0809C794 + movs r0, 0 + strb r0, [r1, 0xE] + b _0809CA10 + .align 2, 0 +_0809C790: .4byte gUnknown_3001B68 +_0809C794: + ldrh r0, [r1, 0x8] + cmp r0, 0 + bne _0809C79E + bl sub_809C6EC +_0809C79E: + ldr r0, [r4] + ldrb r5, [r0, 0x18] + ldrb r7, [r0, 0x19] + cmp r6, 0x26 + bls _0809C7AA + b _0809C8C8 +_0809C7AA: + lsls r0, r6, 2 + ldr r1, _0809C7B4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C7B4: .4byte _0809C7B8 + .align 2, 0 +_0809C7B8: + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C854 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C86E + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 +_0809C854: + mov r0, r8 + bl sub_8002658 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0809C864 + b _0809CA10 +_0809C864: + movs r4, 0x1 + b _0809C988 +_0809C868: + movs r4, 0x1 + movs r5, 0 + b _0809C988 +_0809C86E: + mov r0, r8 + subs r0, 0xA4 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bls _0809C87C + b _0809CA10 +_0809C87C: + lsls r0, 2 + ldr r1, _0809C888 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C888: .4byte _0809C88C + .align 2, 0 +_0809C88C: + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809CA10 + .4byte _0809CA10 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809CA10 + .4byte _0809CA10 + .4byte _0809CA10 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 +_0809C8C4: + movs r4, 0 + b _0809C988 +_0809C8C8: + adds r0, r6, 0 + subs r0, 0xC + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x16 + bhi _0809C968 + lsls r0, 2 + ldr r1, _0809C8E0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C8E0: .4byte _0809C8E4 + .align 2, 0 +_0809C8E4: + .4byte _0809C968 + .4byte _0809C940 + .4byte _0809C968 + .4byte _0809C968 + .4byte _0809C968 + .4byte _0809C968 + .4byte _0809C944 + .4byte _0809C944 + .4byte _0809C948 + .4byte _0809C948 + .4byte _0809C94C + .4byte _0809C968 + .4byte _0809C950 + .4byte _0809C950 + .4byte _0809C954 + .4byte _0809C954 + .4byte _0809C958 + .4byte _0809C958 + .4byte _0809C95C + .4byte _0809C95C + .4byte _0809C960 + .4byte _0809C960 + .4byte _0809C964 +_0809C940: + movs r1, 0 + b _0809C974 +_0809C944: + movs r1, 0x7 + b _0809C974 +_0809C948: + movs r1, 0x9 + b _0809C974 +_0809C94C: + movs r1, 0xA + b _0809C974 +_0809C950: + movs r1, 0xB + b _0809C974 +_0809C954: + movs r1, 0xD + b _0809C974 +_0809C958: + movs r1, 0xF + b _0809C974 +_0809C95C: + movs r1, 0x11 + b _0809C974 +_0809C960: + movs r1, 0x13 + b _0809C974 +_0809C964: + movs r1, 0x20 + b _0809C974 +_0809C968: + movs r0, 0 + movs r1, 0x13 + bl sub_8001658 + lsls r0, 16 + asrs r1, r0, 16 +_0809C974: + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809CA10 + adds r0, r1, 0 + bl sub_80A2740 + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0x2 +_0809C988: + ldr r0, _0809C99C + ldr r2, [r0] + ldr r1, [r2, 0x10] + adds r3, r0, 0 + cmp r1, r4 + beq _0809C9A0 + movs r0, 0x2 + str r0, [r2] + b _0809C9DE + .align 2, 0 +_0809C99C: .4byte gUnknown_3001B68 +_0809C9A0: + cmp r4, 0x1 + bne _0809C9CC + ldrb r0, [r2, 0x18] + cmp r5, r0 + bne _0809C9B2 + movs r1, 0x14 + ldrsh r0, [r2, r1] + cmp r0, r8 + beq _0809C9BC +_0809C9B2: + strb r4, [r2, 0xC] + ldr r0, [r3] + adds r0, 0x20 + strb r4, [r0] + b _0809C9E8 +_0809C9BC: + cmp r5, 0 + bne _0809C9E8 + movs r1, 0x16 + ldrsh r0, [r2, r1] + cmp r0, r6 + beq _0809C9E8 + strb r4, [r2, 0xC] + b _0809C9E8 +_0809C9CC: + cmp r4, 0x2 + bne _0809C9E8 + ldrb r0, [r2, 0x19] + cmp r7, r0 + bne _0809C9DE + movs r1, 0x16 + ldrsh r0, [r2, r1] + cmp r0, r6 + beq _0809C9E8 +_0809C9DE: + movs r1, 0x1 + strb r1, [r2, 0xC] + ldr r0, [r3] + adds r0, 0x20 + strb r1, [r0] +_0809C9E8: + ldr r1, [r3] + ldrb r0, [r1, 0xC] + cmp r0, 0 + beq _0809CA10 + str r4, [r1, 0x10] + movs r2, 0 + mov r0, r8 + strh r0, [r1, 0x14] + strh r6, [r1, 0x16] + strb r5, [r1, 0x18] + ldr r0, [r3] + strb r7, [r0, 0x19] + ldr r1, [r3] + ldrh r0, [r1, 0x8] + cmp r0, 0x4 + beq _0809CA10 + strb r2, [r1, 0xC] + ldr r0, [r3] + adds r0, 0x20 + strb r2, [r0] +_0809CA10: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809C770 + + thumb_func_start nullsub_105 +nullsub_105: + bx lr + thumb_func_end nullsub_105 + + thumb_func_start sub_809CA20 +sub_809CA20: + push {lr} + ldr r1, _0809CA74 + ldr r2, [r1] + ldr r0, [r2] + cmp r0, 0 + beq _0809CA38 + movs r0, 0 + str r0, [r2] + movs r0, 0x1F + str r0, [r2, 0x4] + movs r0, 0x1 + strb r0, [r2, 0xC] +_0809CA38: + ldr r1, [r1] + ldrb r0, [r1, 0xC] + cmp r0, 0 + beq _0809CAE8 + ldrh r0, [r1, 0x8] + strh r0, [r1, 0xA] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bne _0809CA5E + ldr r2, [r1, 0x10] + cmp r2, 0 + bne _0809CA5E + movs r0, 0x2 + strh r0, [r1, 0xA] + str r2, [r1, 0x1C] + adds r1, 0x20 + movs r0, 0 + strb r0, [r1] +_0809CA5E: + ldr r0, _0809CA74 + ldr r0, [r0] + ldrh r0, [r0, 0xA] + cmp r0, 0x5 + bhi _0809CADA + lsls r0, 2 + ldr r1, _0809CA78 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809CA74: .4byte gUnknown_3001B68 +_0809CA78: .4byte _0809CA7C + .align 2, 0 +_0809CA7C: + .4byte _0809CAD2 + .4byte _0809CAD2 + .4byte _0809CABE + .4byte _0809CA94 + .4byte _0809CAB0 + .4byte _0809CAC8 +_0809CA94: + bl nullsub_111 + bl nullsub_113 + bl nullsub_112 + ldr r0, _0809CAAC + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0xD] + b _0809CADA + .align 2, 0 +_0809CAAC: .4byte gUnknown_3001B68 +_0809CAB0: + bl nullsub_114 + bl nullsub_115 + bl nullsub_116 + b _0809CADA +_0809CABE: + bl nullsub_109 + bl nullsub_110 + b _0809CADA +_0809CAC8: + bl nullsub_107 + bl nullsub_108 + b _0809CADA +_0809CAD2: + bl nullsub_107 + bl nullsub_108 +_0809CADA: + ldr r0, _0809CAE4 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0xC] + b _0809CB1E + .align 2, 0 +_0809CAE4: .4byte gUnknown_3001B68 +_0809CAE8: + ldrh r0, [r1, 0xA] + cmp r0, 0x5 + bhi _0809CB1E + lsls r0, 2 + ldr r1, _0809CAF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809CAF8: .4byte _0809CAFC + .align 2, 0 +_0809CAFC: + .4byte _0809CB1E + .4byte _0809CB1E + .4byte _0809CB1E + .4byte _0809CB14 + .4byte _0809CB1A + .4byte _0809CB1E +_0809CB14: + bl nullsub_113 + b _0809CB1E +_0809CB1A: + bl nullsub_116 +_0809CB1E: + pop {r0} + bx r0 + thumb_func_end sub_809CA20 + + thumb_func_start nullsub_106 +nullsub_106: + bx lr + thumb_func_end nullsub_106 + + thumb_func_start nullsub_107 +nullsub_107: + bx lr + thumb_func_end nullsub_107 + + thumb_func_start nullsub_108 +nullsub_108: + bx lr + thumb_func_end nullsub_108 + + thumb_func_start nullsub_109 +nullsub_109: + bx lr + thumb_func_end nullsub_109 + + thumb_func_start nullsub_110 +nullsub_110: + bx lr + thumb_func_end nullsub_110 + + thumb_func_start nullsub_111 +nullsub_111: + bx lr + thumb_func_end nullsub_111 + + thumb_func_start nullsub_112 +nullsub_112: + bx lr + thumb_func_end nullsub_112 + + thumb_func_start nullsub_113 +nullsub_113: + bx lr + thumb_func_end nullsub_113 + + thumb_func_start nullsub_114 +nullsub_114: + bx lr + thumb_func_end nullsub_114 + + thumb_func_start nullsub_115 +nullsub_115: + bx lr + thumb_func_end nullsub_115 + + thumb_func_start nullsub_116 +nullsub_116: + bx lr + thumb_func_end nullsub_116 + + thumb_func_start sub_809CB50 +sub_809CB50: + push {r4,lr} + ldr r4, _0809CB70 + movs r0, 0xC + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + movs r1, 0x1 + negs r1, r1 + str r1, [r0, 0x4] + movs r1, 0 + str r1, [r0, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809CB70: .4byte gUnknown_20399E0 + thumb_func_end sub_809CB50 + + thumb_func_start sub_809CB74 +sub_809CB74: + push {r4,lr} + ldr r4, _0809CB88 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809CB88: .4byte gUnknown_20399E0 + thumb_func_end sub_809CB74 + + thumb_func_start sub_809CB8C +sub_809CB8C: + push {lr} + movs r0, 0 + movs r1, 0x3B + bl sub_80015C0 + movs r0, 0 + movs r1, 0x3D + bl sub_80015C0 + pop {r0} + bx r0 + thumb_func_end sub_809CB8C + + thumb_func_start sub_809CBA4 +sub_809CBA4: + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl FindItemInInventory + cmp r0, 0 + bge _0809CBB6 + movs r0, 0 + b _0809CBB8 +_0809CBB6: + movs r0, 0x1 +_0809CBB8: + pop {r1} + bx r1 + thumb_func_end sub_809CBA4 + + thumb_func_start sub_809CBBC +sub_809CBBC: + push {r4-r7,lr} + sub sp, 0x54 + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + adds r7, r3, 0 + ldrb r1, [r4] + cmp r1, 0x69 + bne _0809CC20 + ldr r1, _0809CC0C + movs r0, 0x2 + ldrsh r2, [r4, r0] + ldr r0, _0809CC10 + ldr r0, [r0] + movs r3, 0xD2 + lsls r3, 4 + adds r0, r3 + ldr r3, [r0] + mov r0, sp + bl sprintfStatic + ldr r0, _0809CC14 + ldr r0, [r0] + movs r1, 0x98 + lsls r1, 2 + adds r2, r0, r1 + movs r3, 0x2 + ldrsh r1, [r4, r3] + ldr r0, [r2] + adds r1, r0, r1 + ldr r0, _0809CC18 + cmp r1, r0 + ble _0809CC1C + cmp r6, 0 + beq _0809CC4E + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + adds r2, r6, 0 + b _0809CC4A + .align 2, 0 +_0809CC0C: .4byte gUnknown_81163E4 +_0809CC10: .4byte gItemParametersData +_0809CC14: .4byte gTeamInventoryRef +_0809CC18: .4byte 0x0001869f +_0809CC1C: + str r1, [r2] + b _0809CC5E +_0809CC20: + ldrb r0, [r4, 0x2] + lsls r1, 16 + lsls r0, 8 + orrs r0, r1 + str r0, [sp, 0x50] + add r4, sp, 0x50 + mov r0, sp + adds r1, r4, 0 + movs r2, 0 + bl sub_8090E14 + bl GetNumberOfFilledInventorySlots + cmp r0, 0x13 + ble _0809CC52 + cmp r5, 0 + beq _0809CC4E + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + adds r2, r5, 0 +_0809CC4A: + bl sub_809AE90 +_0809CC4E: + movs r0, 0 + b _0809CC82 +_0809CC52: + ldrb r0, [r4, 0x2] + movs r1, 0 + bl sub_809124C + bl FillInventoryGaps +_0809CC5E: + cmp r7, 0 + beq _0809CC80 + ldr r0, _0809CC8C + mov r1, sp + bl strcpy + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + adds r2, r7, 0 + bl sub_809AE90 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0xCB + bl xxx_call_play_fanfare_se +_0809CC80: + movs r0, 0x1 +_0809CC82: + add sp, 0x54 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0809CC8C: .4byte gUnknown_202DE58 + thumb_func_end sub_809CBBC + + thumb_func_start sub_809CC90 +sub_809CC90: + push {lr} + lsls r0, 2 + ldr r1, _0809CCBC + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x69 + bne _0809CCC8 + ldr r0, _0809CCC0 + ldr r0, [r0] + movs r2, 0x98 + lsls r2, 2 + adds r0, r2 + movs r2, 0x2 + ldrsh r1, [r1, r2] + ldr r0, [r0] + adds r0, r1 + ldr r1, _0809CCC4 + cmp r0, r1 + ble _0809CCD4 + movs r0, 0x2 + b _0809CCD6 + .align 2, 0 +_0809CCBC: .4byte gUnknown_81163BC +_0809CCC0: .4byte gTeamInventoryRef +_0809CCC4: .4byte 0x0001869f +_0809CCC8: + bl GetNumberOfFilledInventorySlots + cmp r0, 0x13 + ble _0809CCD4 + movs r0, 0x2 + b _0809CCD6 +_0809CCD4: + movs r0, 0x1 +_0809CCD6: + pop {r1} + bx r1 + thumb_func_end sub_809CC90 + + thumb_func_start sub_809CCDC +sub_809CCDC: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + lsls r1, r6, 2 + ldr r0, _0809CD20 + adds r5, r1, r0 + ldr r0, _0809CD24 + ldr r1, [r0] + movs r0, 0x1 + negs r0, r0 + str r0, [r1, 0x4] + movs r0, 0 + str r0, [r1, 0x8] + movs r0, 0x2 + cmp r4, 0x63 + bgt _0809CD04 + movs r0, 0 + cmp r4, 0x1 + ble _0809CD04 + movs r0, 0x1 +_0809CD04: + ldr r1, _0809CD28 + ldr r2, _0809CD2C + ldr r3, _0809CD30 + lsls r0, 2 + adds r0, r3 + ldr r3, [r0] + adds r0, r5, 0 + bl sub_809CBBC + lsls r0, 24 + cmp r0, 0 + bne _0809CD34 + movs r0, 0x2 + b _0809CD3E + .align 2, 0 +_0809CD20: .4byte gUnknown_81163BC +_0809CD24: .4byte gUnknown_20399E0 +_0809CD28: .4byte gUnknown_81163F0 +_0809CD2C: .4byte gUnknown_811642C +_0809CD30: .4byte gUnknown_203B4A0 +_0809CD34: + ldr r0, _0809CD44 + ldr r0, [r0] + str r6, [r0, 0x4] + str r4, [r0, 0x8] + movs r0, 0x1 +_0809CD3E: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809CD44: .4byte gUnknown_20399E0 + thumb_func_end sub_809CCDC + + thumb_func_start sub_809CD48 +sub_809CD48: + push {lr} + bl sub_809A750 + lsls r0, 24 + cmp r0, 0 + bne _0809CD58 + movs r0, 0x3 + b _0809CD5A +_0809CD58: + movs r0, 0 +_0809CD5A: + pop {r1} + bx r1 + thumb_func_end sub_809CD48 + + thumb_func_start nullsub_117 +nullsub_117: + bx lr + thumb_func_end nullsub_117 + + thumb_func_start nullsub_118 +nullsub_118: + bx lr + thumb_func_end nullsub_118 + + thumb_func_start sub_809CD68 +sub_809CD68: + movs r2, 0 + str r2, [r0] + str r2, [r0, 0x4] + movs r1, 0x1 + negs r1, r1 + str r1, [r0, 0x10] + str r2, [r0, 0x14] + str r2, [r0, 0x8] + strb r2, [r0, 0x18] + bx lr + thumb_func_end sub_809CD68 + + thumb_func_start sub_809CD7C +sub_809CD7C: + movs r2, 0 + str r2, [r0] + movs r1, 0x1 + negs r1, r1 + str r1, [r0, 0x10] + str r2, [r0, 0x14] + str r2, [r0, 0x8] + bx lr + thumb_func_end sub_809CD7C + + thumb_func_start sub_809CD8C +sub_809CD8C: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + cmp r4, 0x5 + bne _0809CD9E + bl sub_809CD68 + str r4, [r5] + b _0809CDB0 +_0809CD9E: + ldr r0, [r5, 0x4] + cmp r0, r4 + beq _0809CDB0 + str r4, [r5, 0x4] + movs r0, 0x1 + negs r0, r0 + str r0, [r5, 0x10] + movs r0, 0 + str r0, [r5, 0x14] +_0809CDB0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809CD8C + + thumb_func_start sub_809CDB8 +sub_809CDB8: + push {lr} + adds r1, r0, 0 + ldr r0, [r1, 0x4] + cmp r0, 0 + bne _0809CDC4 + ldr r0, [r1] +_0809CDC4: + pop {r1} + bx r1 + thumb_func_end sub_809CDB8 + + thumb_func_start sub_809CDC8 +sub_809CDC8: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r4, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + ldr r1, [sp, 0x24] + movs r0, 0x1 + negs r0, r0 + str r0, [r3] + ldr r0, [r4] + cmp r0, 0x1 + beq _0809CDEA + cmp r0, 0x2 + beq _0809CDFE + b _0809CE12 +_0809CDEA: + movs r0, 0x80 + lsls r0, 6 + ands r1, r0 + cmp r1, 0 + beq _0809CE12 + adds r0, r4, 0 + bl sub_809CD68 + movs r0, 0x2 + b _0809CE10 +_0809CDFE: + movs r0, 0x80 + lsls r0, 6 + ands r1, r0 + cmp r1, 0 + bne _0809CE12 + adds r0, r4, 0 + bl sub_809CD68 + movs r0, 0x1 +_0809CE10: + str r0, [r4] +_0809CE12: + ldr r0, [r4, 0x4] + mov r8, r0 + cmp r0, 0 + bne _0809CE1E + ldr r1, [r4] + mov r8, r1 +_0809CE1E: + mov r0, r8 + subs r0, 0x1 + cmp r0, 0x6 + bls _0809CE28 + b _0809CFCC +_0809CE28: + lsls r0, 2 + ldr r1, _0809CE34 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809CE34: .4byte _0809CE38 + .align 2, 0 +_0809CE38: + .4byte _0809CE54 + .4byte _0809CF74 + .4byte _0809CFCC + .4byte _0809CFCC + .4byte _0809CECC + .4byte _0809CF5C + .4byte _0809CF5C +_0809CE54: + ldr r0, _0809CE70 + ldrh r2, [r0] + ldrh r1, [r0, 0x2] + movs r0, 0xF0 + ands r0, r2 + cmp r0, 0 + beq _0809CE74 + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _0809CEA4 + movs r0, 0 + b _0809CEA8 + .align 2, 0 +_0809CE70: .4byte gRealInputs +_0809CE74: + movs r3, 0x2 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _0809CE82 + movs r0, 0x14 + b _0809CEA8 +_0809CE82: + ldr r0, [r4, 0x10] + cmp r0, 0x1 + ble _0809CEA4 + subs r0, 0x1 + str r0, [r4, 0x10] + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + bne _0809CEAA + movs r0, 0x13 + str r0, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 + strb r0, [r7] + movs r0, 0x5 + b _0809CFDA +_0809CEA4: + movs r0, 0x1 + negs r0, r0 +_0809CEA8: + str r0, [r4, 0x10] +_0809CEAA: + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0809CEB6 + movs r0, 0xA + b _0809CEC2 +_0809CEB6: + ldr r0, [r4, 0x10] + cmp r0, 0 + bne _0809CEC0 + movs r0, 0x8 + b _0809CEC2 +_0809CEC0: + movs r0, 0x7 +_0809CEC2: + str r0, [r6] + adds r0, r2, 0 + bl sub_809CFE8 + b _0809CF4E +_0809CECC: + mov r0, sp + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + beq _0809CFCC + ldr r0, _0809CEEC + ldr r0, [r0] + ldrb r0, [r0, 0xC] + cmp r0, 0 + bne _0809CEF0 + movs r0, 0x4 + bl sub_809C6CC + b _0809CEF6 + .align 2, 0 +_0809CEEC: .4byte gGameOptionsRef +_0809CEF0: + movs r0, 0x3 + bl sub_809C6CC +_0809CEF6: + bl nullsub_104 + adds r0, r4, 0 + bl sub_809CD7C + movs r5, 0x1 + str r5, [r4] + ldr r0, [sp] + cmp r0, 0x2 + beq _0809CF1E + cmp r0, 0x2 + bgt _0809CF14 + cmp r0, 0x1 + beq _0809CF2A + b _0809CF54 +_0809CF14: + cmp r0, 0x3 + beq _0809CF2A + cmp r0, 0x4 + beq _0809CF3C + b _0809CF54 +_0809CF1E: + movs r0, 0x4 + str r0, [r4] + movs r0, 0x1E + bl sub_8098D80 + b _0809CF46 +_0809CF2A: + movs r0, 0x4 + str r0, [r4] + str r5, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 + strb r0, [r7] + movs r0, 0x4 + b _0809CFDA +_0809CF3C: + str r0, [r4] + movs r0, 0x45 + movs r1, 0 + bl GroundMap_ExecuteEvent +_0809CF46: + str r5, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 +_0809CF4E: + strb r0, [r7] + ldr r0, [r4] + b _0809CFDA +_0809CF54: + movs r0, 0x2 + bl sub_809D9B8 + b _0809CFCC +_0809CF5C: + add r0, sp, 0x4 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + beq _0809CFCC + adds r0, r4, 0 + bl sub_809CD7C + movs r0, 0x1 + str r0, [r4] + b _0809CFDA +_0809CF74: + ldr r0, [r4, 0x8] + cmp r0, 0 + ble _0809CF86 + subs r0, 0x1 + str r0, [r4, 0x8] + movs r0, 0x9 + str r0, [r6] + ldrb r0, [r4, 0xC] + b _0809CFD6 +_0809CF86: + ldr r0, _0809CFA0 + ldrh r1, [r0] + movs r0, 0x9 + str r0, [r6] + movs r0, 0x40 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _0809CFA4 + movs r0, 0x4 + b _0809CFB6 + .align 2, 0 +_0809CFA0: .4byte gRealInputs +_0809CFA4: + movs r0, 0x80 + ands r1, r0 + cmp r1, 0 + beq _0809CFB0 + strb r2, [r7] + b _0809CFB8 +_0809CFB0: + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 +_0809CFB6: + strb r0, [r7] +_0809CFB8: + ldrb r0, [r7] + strb r0, [r4, 0xC] + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + cmp r0, r1 + beq _0809CFD8 + movs r0, 0x20 + str r0, [r4, 0x8] + b _0809CFD8 +_0809CFCC: + movs r0, 0 + str r0, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 +_0809CFD6: + strb r0, [r7] +_0809CFD8: + mov r0, r8 +_0809CFDA: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809CDC8 + + .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index c4748c232..0857cb236 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -329,6 +329,8 @@ SECTIONS { asm/code_8098468.o(.text); src/ground_main.o(.text); asm/code_8098BDC.o(.text); + src/code_809A560.o(.text); + asm/code_809A560.o(.text); src/code_809D148.o(.text); asm/code_809D148.o(.text); src/ground_script.o(.text); diff --git a/src/code_809A560.c b/src/code_809A560.c new file mode 100644 index 000000000..3c3124d7c --- /dev/null +++ b/src/code_809A560.c @@ -0,0 +1,189 @@ +#include "global.h" +#include "text1.h" +#include "memory.h" + +struct unkStruct_3001B64 +{ + // size: 0x5A8 + u32 unk0; + u32 unk4; + u32 unk8; + u32 unkC; + u8 fill10[0x414 - 0x10]; + u32 unk414; + u32 unk418; + u32 unk41C; + u32 unk420; + u32 unk424; + u32 unk428; + u32 unk42C; + u32 unk430; + u32 unk434; + u8 fill438[0x5A4 - 0x438]; + u16 unk5A4; +}; + +extern struct unkStruct_3001B64 *gUnknown_3001B64; + +extern u16 gUnknown_20399DC; +extern u16 gUnknown_20399DE; + +extern u8 sub_809B2B8(u32 *, u32, u32, u32); +extern u32 sub_809B40C(u32 *); +extern void sub_801416C(s32, s32); +extern void sub_809A83C(s16); +extern u32 sub_809A680(u32, u32); +extern void sub_809A62C(void); +extern void sub_80095CC(u32, u32); +extern void sub_8009408(u32, u32); +extern void sub_809B294(void); +extern void sub_8014144(void); +extern void sub_809A7EC(void); + +void sub_809A560(void) +{ + sub_8014144(); + gUnknown_3001B64 = MemoryAlloc(0x5a8,6); + gUnknown_3001B64->unk0 = 0; + gUnknown_3001B64->unk4 = -1; + gUnknown_3001B64->unk8 = -1; + gUnknown_20399DC = 0; + gUnknown_20399DE = 0; + sub_80095CC(0,0x14); + sub_800641C(0,1,1); + sub_8009408(0,0x14); + sub_809B294(); + gUnknown_3001B64->unk414 = 0; + gUnknown_3001B64->unk418 = 0; + gUnknown_3001B64->unk41C = 0; + gUnknown_3001B64->unk420 = 0; + gUnknown_3001B64->unk424 = 0; + gUnknown_3001B64->unk428 = 0; + gUnknown_3001B64->unk42C = 0; + gUnknown_3001B64->unk430 = -1; + gUnknown_3001B64->unk434 = -1; + sub_809A7EC(); + gUnknown_3001B64->unk5A4 = -1; +} + +void sub_809A610(void) +{ + sub_809A62C(); + MemoryFree(gUnknown_3001B64); + gUnknown_3001B64 = NULL; +} + +void sub_809A62C(void) +{ + s32 iVar2; + + gUnknown_3001B64->unk0 = 0; + gUnknown_3001B64->unk4 = -1; + gUnknown_3001B64->unk8 = -1; + gUnknown_20399DC = 0; + gUnknown_20399DE = 0; + for(iVar2 = 0; iVar2 < 10; iVar2++) + { + sub_809A83C(iVar2); + } + gUnknown_3001B64->unk414 = 0; + sub_809A680(0, 1); +} + +u32 sub_809A680(u32 param_1, u32 param_2) +{ + switch(param_1) { + case 0: + sub_809B294(); + sub_800641C(0,1,1); + break; + case 1: + sub_809B294(); + break; + case 2: + sub_809B294(); + break; + case 3: + sub_809B294(); + break; + case 4: + sub_809B294(); + break; + default: + sub_809B294(); + sub_800641C(0,1,1); + } + gUnknown_3001B64->unk0 = param_1; + return 1; +} + +void sub_809A6E4(u16 r0) +{ + gUnknown_20399DC |= r0; +} + +void sub_809A6F8(u16 r0) +{ + gUnknown_20399DC &= ~r0; +} + +u16 sub_809A70C(u16 r0) +{ + return gUnknown_20399DC; +} + +void nullsub_209(void) {} + +void sub_809A71C(s32 param_1) +{ + gUnknown_3001B64->unk4 = param_1; + gUnknown_3001B64->unk8 = param_1; + sub_801416C(param_1, param_1); +} + +void sub_809A738(s32 param_1, s32 param_2) +{ + gUnknown_3001B64->unk4 = param_1; + gUnknown_3001B64->unk8 = param_2; + sub_801416C(param_1, param_2); +} + +u8 sub_809A750(void) +{ + return sub_809B40C(&gUnknown_3001B64->unkC); +} + +u32 sub_809A768(void) +{ + return 0; +} + +u8 sub_809A76C(void) +{ + switch(gUnknown_3001B64->unk0) + { + case 3: + return sub_809B2B8(&gUnknown_3001B64->unkC,4,-1,0); + case 1: + case 2: + return sub_809B2B8(&gUnknown_3001B64->unkC,0x84,-1,0); + default: + sub_809A680(0, 1); + return 0; + } +} + +u8 sub_809A7B4(void) +{ + switch(gUnknown_3001B64->unk0) + { + case 3: + case 1: + case 2: + return sub_809B2B8(&gUnknown_3001B64->unkC,4,-1,0); + default: + sub_809A680(0, 1); + return 0; + } +} + From 287b7e6539e6ae3f15612841ca7ee4180968bd3c Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 29 Jan 2024 11:05:16 -0800 Subject: [PATCH 14/18] More splitting and decomping --- asm/code_809A560.s | 1396 -------------------------------------------- asm/code_809C5C4.s | 1132 +++++++++++++++++++++++++++++++++++ ld_script.txt | 2 + src/code_809A560.c | 94 ++- src/code_809C5C4.c | 152 +++++ 5 files changed, 1371 insertions(+), 1405 deletions(-) create mode 100644 asm/code_809C5C4.s create mode 100644 src/code_809C5C4.c diff --git a/asm/code_809A560.s b/asm/code_809A560.s index 24f69e9d3..db92d1d42 100644 --- a/asm/code_809A560.s +++ b/asm/code_809A560.s @@ -5,49 +5,6 @@ .text - thumb_func_start sub_809A7EC -sub_809A7EC: - push {r4-r6,lr} - ldr r0, _0809A830 - ldr r0, [r0] - ldr r2, _0809A834 - adds r1, r0, r2 - ldr r0, _0809A838 - adds r6, r0, 0 - movs r3, 0 - movs r2, 0 - movs r4, 0x9 - movs r5, 0xFF -_0809A802: - ldrh r0, [r1] - orrs r0, r6 - strh r0, [r1] - strh r2, [r1, 0x2] - strb r3, [r1, 0x4] - strb r3, [r1, 0x5] - ldrb r0, [r1, 0x6] - orrs r0, r5 - strb r0, [r1, 0x6] - strb r3, [r1, 0x7] - str r2, [r1, 0x8] - str r2, [r1, 0xC] - str r2, [r1, 0x10] - str r2, [r1, 0x14] - strb r3, [r1, 0x1C] - str r2, [r1, 0x20] - subs r4, 0x1 - adds r1, 0x24 - cmp r4, 0 - bge _0809A802 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0809A830: .4byte gUnknown_3001B64 -_0809A834: .4byte 0x0000043c -_0809A838: .4byte 0x0000ffff - thumb_func_end sub_809A7EC - thumb_func_start sub_809A83C sub_809A83C: push {r4-r7,lr} @@ -3733,1357 +3690,4 @@ _0809C5AC: _0809C5C0: .4byte gUnknown_3001B64 thumb_func_end sub_809C550 - thumb_func_start sub_809C5C4 -sub_809C5C4: - push {r4,lr} - ldr r4, _0809C610 - movs r0, 0x24 - movs r1, 0x6 - bl MemoryAlloc - str r0, [r4] - movs r2, 0 - str r2, [r0] - str r2, [r0, 0x4] - movs r3, 0 - strh r2, [r0, 0x8] - strh r2, [r0, 0xA] - strb r3, [r0, 0xD] - ldr r0, [r4] - strb r3, [r0, 0xE] - ldr r1, [r4] - str r2, [r1, 0x10] - ldr r0, _0809C614 - strh r0, [r1, 0x14] - movs r0, 0x23 - strh r0, [r1, 0x16] - strb r3, [r1, 0x18] - ldr r1, [r4] - movs r0, 0x3F - strb r0, [r1, 0x19] - ldr r0, [r4] - str r2, [r0, 0x1C] - adds r0, 0x20 - strb r3, [r0] - bl nullsub_107 - bl sub_809C63C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C610: .4byte gUnknown_3001B68 -_0809C614: .4byte 0x0000ffff - thumb_func_end sub_809C5C4 - - thumb_func_start sub_809C618 -sub_809C618: - push {r4,lr} - bl sub_809C63C - bl nullsub_107 - bl nullsub_108 - ldr r4, _0809C638 - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809C638: .4byte gUnknown_3001B68 - thumb_func_end sub_809C618 - - thumb_func_start sub_809C63C -sub_809C63C: - push {lr} - bl nullsub_108 - ldr r0, _0809C654 - ldr r0, [r0] - movs r1, 0 - str r1, [r0, 0x1C] - adds r0, 0x20 - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0809C654: .4byte gUnknown_3001B68 - thumb_func_end sub_809C63C - - thumb_func_start sub_809C658 -sub_809C658: - push {lr} - ldr r0, _0809C670 - ldr r0, [r0] - ldrh r0, [r0, 0xA] - cmp r0, 0x5 - bhi _0809C6C8 - lsls r0, 2 - ldr r1, _0809C674 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C670: .4byte gUnknown_3001B68 -_0809C674: .4byte _0809C678 - .align 2, 0 -_0809C678: - .4byte _0809C6C0 - .4byte _0809C6C0 - .4byte _0809C6AC - .4byte _0809C690 - .4byte _0809C69E - .4byte _0809C6B6 -_0809C690: - bl nullsub_111 - bl nullsub_112 - bl nullsub_113 - b _0809C6C8 -_0809C69E: - bl nullsub_114 - bl nullsub_115 - bl nullsub_116 - b _0809C6C8 -_0809C6AC: - bl nullsub_109 - bl nullsub_110 - b _0809C6C8 -_0809C6B6: - bl nullsub_107 - bl nullsub_108 - b _0809C6C8 -_0809C6C0: - bl nullsub_107 - bl nullsub_108 -_0809C6C8: - pop {r0} - bx r0 - thumb_func_end sub_809C658 - - thumb_func_start sub_809C6CC -sub_809C6CC: - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, _0809C6E8 - ldr r1, [r0] - ldrh r0, [r1, 0x8] - cmp r0, r2 - beq _0809C6E2 - movs r0, 0 - strh r2, [r1, 0x8] - strb r0, [r1, 0xE] -_0809C6E2: - pop {r0} - bx r0 - .align 2, 0 -_0809C6E8: .4byte gUnknown_3001B68 - thumb_func_end sub_809C6CC - - thumb_func_start sub_809C6EC -sub_809C6EC: - push {lr} - bl sub_8098F88 - lsls r0, 24 - cmp r0, 0 - bne _0809C718 - ldr r0, _0809C70C - ldr r0, [r0] - ldrb r0, [r0, 0xC] - cmp r0, 0 - bne _0809C710 - movs r0, 0x4 - bl sub_809C6CC - b _0809C71E - .align 2, 0 -_0809C70C: .4byte gGameOptionsRef -_0809C710: - movs r0, 0x3 - bl sub_809C6CC - b _0809C71E -_0809C718: - movs r0, 0x5 - bl sub_809C6CC -_0809C71E: - pop {r0} - bx r0 - thumb_func_end sub_809C6EC - - thumb_func_start sub_809C724 -sub_809C724: - ldr r0, _0809C72C - ldr r0, [r0] - ldrh r0, [r0, 0x8] - bx lr - .align 2, 0 -_0809C72C: .4byte gUnknown_3001B68 - thumb_func_end sub_809C724 - - thumb_func_start sub_809C730 -sub_809C730: - push {lr} - bl sub_809C740 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_809C730 - - thumb_func_start sub_809C740 -sub_809C740: - push {lr} - ldr r0, _0809C750 - ldr r0, [r0] - ldr r0, [r0] - cmp r0, 0 - beq _0809C754 - movs r0, 0 - b _0809C756 - .align 2, 0 -_0809C750: .4byte gUnknown_3001B68 -_0809C754: - movs r0, 0x1 -_0809C756: - pop {r1} - bx r1 - thumb_func_end sub_809C740 - - thumb_func_start nullsub_104 -nullsub_104: - bx lr - thumb_func_end nullsub_104 - - thumb_func_start sub_809C760 -sub_809C760: - ldr r0, _0809C76C - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xE] - bx lr - .align 2, 0 -_0809C76C: .4byte gUnknown_3001B68 - thumb_func_end sub_809C760 - - thumb_func_start sub_809C770 -sub_809C770: - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - asrs r0, 16 - mov r8, r0 - lsls r1, 16 - asrs r6, r1, 16 - ldr r4, _0809C790 - ldr r1, [r4] - ldrb r0, [r1, 0xE] - cmp r0, 0 - beq _0809C794 - movs r0, 0 - strb r0, [r1, 0xE] - b _0809CA10 - .align 2, 0 -_0809C790: .4byte gUnknown_3001B68 -_0809C794: - ldrh r0, [r1, 0x8] - cmp r0, 0 - bne _0809C79E - bl sub_809C6EC -_0809C79E: - ldr r0, [r4] - ldrb r5, [r0, 0x18] - ldrb r7, [r0, 0x19] - cmp r6, 0x26 - bls _0809C7AA - b _0809C8C8 -_0809C7AA: - lsls r0, r6, 2 - ldr r1, _0809C7B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C7B4: .4byte _0809C7B8 - .align 2, 0 -_0809C7B8: - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C854 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C86E - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 -_0809C854: - mov r0, r8 - bl sub_8002658 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0809C864 - b _0809CA10 -_0809C864: - movs r4, 0x1 - b _0809C988 -_0809C868: - movs r4, 0x1 - movs r5, 0 - b _0809C988 -_0809C86E: - mov r0, r8 - subs r0, 0xA4 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bls _0809C87C - b _0809CA10 -_0809C87C: - lsls r0, 2 - ldr r1, _0809C888 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C888: .4byte _0809C88C - .align 2, 0 -_0809C88C: - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 -_0809C8C4: - movs r4, 0 - b _0809C988 -_0809C8C8: - adds r0, r6, 0 - subs r0, 0xC - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x16 - bhi _0809C968 - lsls r0, 2 - ldr r1, _0809C8E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C8E0: .4byte _0809C8E4 - .align 2, 0 -_0809C8E4: - .4byte _0809C968 - .4byte _0809C940 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C944 - .4byte _0809C944 - .4byte _0809C948 - .4byte _0809C948 - .4byte _0809C94C - .4byte _0809C968 - .4byte _0809C950 - .4byte _0809C950 - .4byte _0809C954 - .4byte _0809C954 - .4byte _0809C958 - .4byte _0809C958 - .4byte _0809C95C - .4byte _0809C95C - .4byte _0809C960 - .4byte _0809C960 - .4byte _0809C964 -_0809C940: - movs r1, 0 - b _0809C974 -_0809C944: - movs r1, 0x7 - b _0809C974 -_0809C948: - movs r1, 0x9 - b _0809C974 -_0809C94C: - movs r1, 0xA - b _0809C974 -_0809C950: - movs r1, 0xB - b _0809C974 -_0809C954: - movs r1, 0xD - b _0809C974 -_0809C958: - movs r1, 0xF - b _0809C974 -_0809C95C: - movs r1, 0x11 - b _0809C974 -_0809C960: - movs r1, 0x13 - b _0809C974 -_0809C964: - movs r1, 0x20 - b _0809C974 -_0809C968: - movs r0, 0 - movs r1, 0x13 - bl sub_8001658 - lsls r0, 16 - asrs r1, r0, 16 -_0809C974: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809CA10 - adds r0, r1, 0 - bl sub_80A2740 - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0x2 -_0809C988: - ldr r0, _0809C99C - ldr r2, [r0] - ldr r1, [r2, 0x10] - adds r3, r0, 0 - cmp r1, r4 - beq _0809C9A0 - movs r0, 0x2 - str r0, [r2] - b _0809C9DE - .align 2, 0 -_0809C99C: .4byte gUnknown_3001B68 -_0809C9A0: - cmp r4, 0x1 - bne _0809C9CC - ldrb r0, [r2, 0x18] - cmp r5, r0 - bne _0809C9B2 - movs r1, 0x14 - ldrsh r0, [r2, r1] - cmp r0, r8 - beq _0809C9BC -_0809C9B2: - strb r4, [r2, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r4, [r0] - b _0809C9E8 -_0809C9BC: - cmp r5, 0 - bne _0809C9E8 - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r6 - beq _0809C9E8 - strb r4, [r2, 0xC] - b _0809C9E8 -_0809C9CC: - cmp r4, 0x2 - bne _0809C9E8 - ldrb r0, [r2, 0x19] - cmp r7, r0 - bne _0809C9DE - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r6 - beq _0809C9E8 -_0809C9DE: - movs r1, 0x1 - strb r1, [r2, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r1, [r0] -_0809C9E8: - ldr r1, [r3] - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0809CA10 - str r4, [r1, 0x10] - movs r2, 0 - mov r0, r8 - strh r0, [r1, 0x14] - strh r6, [r1, 0x16] - strb r5, [r1, 0x18] - ldr r0, [r3] - strb r7, [r0, 0x19] - ldr r1, [r3] - ldrh r0, [r1, 0x8] - cmp r0, 0x4 - beq _0809CA10 - strb r2, [r1, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r2, [r0] -_0809CA10: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809C770 - - thumb_func_start nullsub_105 -nullsub_105: - bx lr - thumb_func_end nullsub_105 - - thumb_func_start sub_809CA20 -sub_809CA20: - push {lr} - ldr r1, _0809CA74 - ldr r2, [r1] - ldr r0, [r2] - cmp r0, 0 - beq _0809CA38 - movs r0, 0 - str r0, [r2] - movs r0, 0x1F - str r0, [r2, 0x4] - movs r0, 0x1 - strb r0, [r2, 0xC] -_0809CA38: - ldr r1, [r1] - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0809CAE8 - ldrh r0, [r1, 0x8] - strh r0, [r1, 0xA] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bne _0809CA5E - ldr r2, [r1, 0x10] - cmp r2, 0 - bne _0809CA5E - movs r0, 0x2 - strh r0, [r1, 0xA] - str r2, [r1, 0x1C] - adds r1, 0x20 - movs r0, 0 - strb r0, [r1] -_0809CA5E: - ldr r0, _0809CA74 - ldr r0, [r0] - ldrh r0, [r0, 0xA] - cmp r0, 0x5 - bhi _0809CADA - lsls r0, 2 - ldr r1, _0809CA78 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CA74: .4byte gUnknown_3001B68 -_0809CA78: .4byte _0809CA7C - .align 2, 0 -_0809CA7C: - .4byte _0809CAD2 - .4byte _0809CAD2 - .4byte _0809CABE - .4byte _0809CA94 - .4byte _0809CAB0 - .4byte _0809CAC8 -_0809CA94: - bl nullsub_111 - bl nullsub_113 - bl nullsub_112 - ldr r0, _0809CAAC - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xD] - b _0809CADA - .align 2, 0 -_0809CAAC: .4byte gUnknown_3001B68 -_0809CAB0: - bl nullsub_114 - bl nullsub_115 - bl nullsub_116 - b _0809CADA -_0809CABE: - bl nullsub_109 - bl nullsub_110 - b _0809CADA -_0809CAC8: - bl nullsub_107 - bl nullsub_108 - b _0809CADA -_0809CAD2: - bl nullsub_107 - bl nullsub_108 -_0809CADA: - ldr r0, _0809CAE4 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0xC] - b _0809CB1E - .align 2, 0 -_0809CAE4: .4byte gUnknown_3001B68 -_0809CAE8: - ldrh r0, [r1, 0xA] - cmp r0, 0x5 - bhi _0809CB1E - lsls r0, 2 - ldr r1, _0809CAF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CAF8: .4byte _0809CAFC - .align 2, 0 -_0809CAFC: - .4byte _0809CB1E - .4byte _0809CB1E - .4byte _0809CB1E - .4byte _0809CB14 - .4byte _0809CB1A - .4byte _0809CB1E -_0809CB14: - bl nullsub_113 - b _0809CB1E -_0809CB1A: - bl nullsub_116 -_0809CB1E: - pop {r0} - bx r0 - thumb_func_end sub_809CA20 - - thumb_func_start nullsub_106 -nullsub_106: - bx lr - thumb_func_end nullsub_106 - - thumb_func_start nullsub_107 -nullsub_107: - bx lr - thumb_func_end nullsub_107 - - thumb_func_start nullsub_108 -nullsub_108: - bx lr - thumb_func_end nullsub_108 - - thumb_func_start nullsub_109 -nullsub_109: - bx lr - thumb_func_end nullsub_109 - - thumb_func_start nullsub_110 -nullsub_110: - bx lr - thumb_func_end nullsub_110 - - thumb_func_start nullsub_111 -nullsub_111: - bx lr - thumb_func_end nullsub_111 - - thumb_func_start nullsub_112 -nullsub_112: - bx lr - thumb_func_end nullsub_112 - - thumb_func_start nullsub_113 -nullsub_113: - bx lr - thumb_func_end nullsub_113 - - thumb_func_start nullsub_114 -nullsub_114: - bx lr - thumb_func_end nullsub_114 - - thumb_func_start nullsub_115 -nullsub_115: - bx lr - thumb_func_end nullsub_115 - - thumb_func_start nullsub_116 -nullsub_116: - bx lr - thumb_func_end nullsub_116 - - thumb_func_start sub_809CB50 -sub_809CB50: - push {r4,lr} - ldr r4, _0809CB70 - movs r0, 0xC - movs r1, 0x6 - bl MemoryAlloc - str r0, [r4] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x4] - movs r1, 0 - str r1, [r0, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809CB70: .4byte gUnknown_20399E0 - thumb_func_end sub_809CB50 - - thumb_func_start sub_809CB74 -sub_809CB74: - push {r4,lr} - ldr r4, _0809CB88 - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809CB88: .4byte gUnknown_20399E0 - thumb_func_end sub_809CB74 - - thumb_func_start sub_809CB8C -sub_809CB8C: - push {lr} - movs r0, 0 - movs r1, 0x3B - bl sub_80015C0 - movs r0, 0 - movs r1, 0x3D - bl sub_80015C0 - pop {r0} - bx r0 - thumb_func_end sub_809CB8C - - thumb_func_start sub_809CBA4 -sub_809CBA4: - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl FindItemInInventory - cmp r0, 0 - bge _0809CBB6 - movs r0, 0 - b _0809CBB8 -_0809CBB6: - movs r0, 0x1 -_0809CBB8: - pop {r1} - bx r1 - thumb_func_end sub_809CBA4 - - thumb_func_start sub_809CBBC -sub_809CBBC: - push {r4-r7,lr} - sub sp, 0x54 - adds r4, r0, 0 - adds r6, r1, 0 - adds r5, r2, 0 - adds r7, r3, 0 - ldrb r1, [r4] - cmp r1, 0x69 - bne _0809CC20 - ldr r1, _0809CC0C - movs r0, 0x2 - ldrsh r2, [r4, r0] - ldr r0, _0809CC10 - ldr r0, [r0] - movs r3, 0xD2 - lsls r3, 4 - adds r0, r3 - ldr r3, [r0] - mov r0, sp - bl sprintfStatic - ldr r0, _0809CC14 - ldr r0, [r0] - movs r1, 0x98 - lsls r1, 2 - adds r2, r0, r1 - movs r3, 0x2 - ldrsh r1, [r4, r3] - ldr r0, [r2] - adds r1, r0, r1 - ldr r0, _0809CC18 - cmp r1, r0 - ble _0809CC1C - cmp r6, 0 - beq _0809CC4E - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - adds r2, r6, 0 - b _0809CC4A - .align 2, 0 -_0809CC0C: .4byte gUnknown_81163E4 -_0809CC10: .4byte gItemParametersData -_0809CC14: .4byte gTeamInventoryRef -_0809CC18: .4byte 0x0001869f -_0809CC1C: - str r1, [r2] - b _0809CC5E -_0809CC20: - ldrb r0, [r4, 0x2] - lsls r1, 16 - lsls r0, 8 - orrs r0, r1 - str r0, [sp, 0x50] - add r4, sp, 0x50 - mov r0, sp - adds r1, r4, 0 - movs r2, 0 - bl sub_8090E14 - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _0809CC52 - cmp r5, 0 - beq _0809CC4E - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - adds r2, r5, 0 -_0809CC4A: - bl sub_809AE90 -_0809CC4E: - movs r0, 0 - b _0809CC82 -_0809CC52: - ldrb r0, [r4, 0x2] - movs r1, 0 - bl sub_809124C - bl FillInventoryGaps -_0809CC5E: - cmp r7, 0 - beq _0809CC80 - ldr r0, _0809CC8C - mov r1, sp - bl strcpy - movs r1, 0x1 - negs r1, r1 - movs r0, 0 - adds r2, r7, 0 - bl sub_809AE90 - movs r1, 0x80 - lsls r1, 1 - movs r0, 0xCB - bl xxx_call_play_fanfare_se -_0809CC80: - movs r0, 0x1 -_0809CC82: - add sp, 0x54 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0809CC8C: .4byte gUnknown_202DE58 - thumb_func_end sub_809CBBC - - thumb_func_start sub_809CC90 -sub_809CC90: - push {lr} - lsls r0, 2 - ldr r1, _0809CCBC - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x69 - bne _0809CCC8 - ldr r0, _0809CCC0 - ldr r0, [r0] - movs r2, 0x98 - lsls r2, 2 - adds r0, r2 - movs r2, 0x2 - ldrsh r1, [r1, r2] - ldr r0, [r0] - adds r0, r1 - ldr r1, _0809CCC4 - cmp r0, r1 - ble _0809CCD4 - movs r0, 0x2 - b _0809CCD6 - .align 2, 0 -_0809CCBC: .4byte gUnknown_81163BC -_0809CCC0: .4byte gTeamInventoryRef -_0809CCC4: .4byte 0x0001869f -_0809CCC8: - bl GetNumberOfFilledInventorySlots - cmp r0, 0x13 - ble _0809CCD4 - movs r0, 0x2 - b _0809CCD6 -_0809CCD4: - movs r0, 0x1 -_0809CCD6: - pop {r1} - bx r1 - thumb_func_end sub_809CC90 - - thumb_func_start sub_809CCDC -sub_809CCDC: - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r1, r6, 2 - ldr r0, _0809CD20 - adds r5, r1, r0 - ldr r0, _0809CD24 - ldr r1, [r0] - movs r0, 0x1 - negs r0, r0 - str r0, [r1, 0x4] - movs r0, 0 - str r0, [r1, 0x8] - movs r0, 0x2 - cmp r4, 0x63 - bgt _0809CD04 - movs r0, 0 - cmp r4, 0x1 - ble _0809CD04 - movs r0, 0x1 -_0809CD04: - ldr r1, _0809CD28 - ldr r2, _0809CD2C - ldr r3, _0809CD30 - lsls r0, 2 - adds r0, r3 - ldr r3, [r0] - adds r0, r5, 0 - bl sub_809CBBC - lsls r0, 24 - cmp r0, 0 - bne _0809CD34 - movs r0, 0x2 - b _0809CD3E - .align 2, 0 -_0809CD20: .4byte gUnknown_81163BC -_0809CD24: .4byte gUnknown_20399E0 -_0809CD28: .4byte gUnknown_81163F0 -_0809CD2C: .4byte gUnknown_811642C -_0809CD30: .4byte gUnknown_203B4A0 -_0809CD34: - ldr r0, _0809CD44 - ldr r0, [r0] - str r6, [r0, 0x4] - str r4, [r0, 0x8] - movs r0, 0x1 -_0809CD3E: - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_0809CD44: .4byte gUnknown_20399E0 - thumb_func_end sub_809CCDC - - thumb_func_start sub_809CD48 -sub_809CD48: - push {lr} - bl sub_809A750 - lsls r0, 24 - cmp r0, 0 - bne _0809CD58 - movs r0, 0x3 - b _0809CD5A -_0809CD58: - movs r0, 0 -_0809CD5A: - pop {r1} - bx r1 - thumb_func_end sub_809CD48 - - thumb_func_start nullsub_117 -nullsub_117: - bx lr - thumb_func_end nullsub_117 - - thumb_func_start nullsub_118 -nullsub_118: - bx lr - thumb_func_end nullsub_118 - - thumb_func_start sub_809CD68 -sub_809CD68: - movs r2, 0 - str r2, [r0] - str r2, [r0, 0x4] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x10] - str r2, [r0, 0x14] - str r2, [r0, 0x8] - strb r2, [r0, 0x18] - bx lr - thumb_func_end sub_809CD68 - - thumb_func_start sub_809CD7C -sub_809CD7C: - movs r2, 0 - str r2, [r0] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x10] - str r2, [r0, 0x14] - str r2, [r0, 0x8] - bx lr - thumb_func_end sub_809CD7C - - thumb_func_start sub_809CD8C -sub_809CD8C: - push {r4,r5,lr} - adds r5, r0, 0 - adds r4, r1, 0 - cmp r4, 0x5 - bne _0809CD9E - bl sub_809CD68 - str r4, [r5] - b _0809CDB0 -_0809CD9E: - ldr r0, [r5, 0x4] - cmp r0, r4 - beq _0809CDB0 - str r4, [r5, 0x4] - movs r0, 0x1 - negs r0, r0 - str r0, [r5, 0x10] - movs r0, 0 - str r0, [r5, 0x14] -_0809CDB0: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_809CD8C - - thumb_func_start sub_809CDB8 -sub_809CDB8: - push {lr} - adds r1, r0, 0 - ldr r0, [r1, 0x4] - cmp r0, 0 - bne _0809CDC4 - ldr r0, [r1] -_0809CDC4: - pop {r1} - bx r1 - thumb_func_end sub_809CDB8 - - thumb_func_start sub_809CDC8 -sub_809CDC8: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - adds r4, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - ldr r1, [sp, 0x24] - movs r0, 0x1 - negs r0, r0 - str r0, [r3] - ldr r0, [r4] - cmp r0, 0x1 - beq _0809CDEA - cmp r0, 0x2 - beq _0809CDFE - b _0809CE12 -_0809CDEA: - movs r0, 0x80 - lsls r0, 6 - ands r1, r0 - cmp r1, 0 - beq _0809CE12 - adds r0, r4, 0 - bl sub_809CD68 - movs r0, 0x2 - b _0809CE10 -_0809CDFE: - movs r0, 0x80 - lsls r0, 6 - ands r1, r0 - cmp r1, 0 - bne _0809CE12 - adds r0, r4, 0 - bl sub_809CD68 - movs r0, 0x1 -_0809CE10: - str r0, [r4] -_0809CE12: - ldr r0, [r4, 0x4] - mov r8, r0 - cmp r0, 0 - bne _0809CE1E - ldr r1, [r4] - mov r8, r1 -_0809CE1E: - mov r0, r8 - subs r0, 0x1 - cmp r0, 0x6 - bls _0809CE28 - b _0809CFCC -_0809CE28: - lsls r0, 2 - ldr r1, _0809CE34 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CE34: .4byte _0809CE38 - .align 2, 0 -_0809CE38: - .4byte _0809CE54 - .4byte _0809CF74 - .4byte _0809CFCC - .4byte _0809CFCC - .4byte _0809CECC - .4byte _0809CF5C - .4byte _0809CF5C -_0809CE54: - ldr r0, _0809CE70 - ldrh r2, [r0] - ldrh r1, [r0, 0x2] - movs r0, 0xF0 - ands r0, r2 - cmp r0, 0 - beq _0809CE74 - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _0809CEA4 - movs r0, 0 - b _0809CEA8 - .align 2, 0 -_0809CE70: .4byte gRealInputs -_0809CE74: - movs r3, 0x2 - adds r0, r1, 0 - ands r0, r3 - cmp r0, 0 - beq _0809CE82 - movs r0, 0x14 - b _0809CEA8 -_0809CE82: - ldr r0, [r4, 0x10] - cmp r0, 0x1 - ble _0809CEA4 - subs r0, 0x1 - str r0, [r4, 0x10] - adds r0, r2, 0 - ands r0, r3 - cmp r0, 0 - bne _0809CEAA - movs r0, 0x13 - str r0, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 - strb r0, [r7] - movs r0, 0x5 - b _0809CFDA -_0809CEA4: - movs r0, 0x1 - negs r0, r0 -_0809CEA8: - str r0, [r4, 0x10] -_0809CEAA: - movs r0, 0x1 - ands r1, r0 - cmp r1, 0 - beq _0809CEB6 - movs r0, 0xA - b _0809CEC2 -_0809CEB6: - ldr r0, [r4, 0x10] - cmp r0, 0 - bne _0809CEC0 - movs r0, 0x8 - b _0809CEC2 -_0809CEC0: - movs r0, 0x7 -_0809CEC2: - str r0, [r6] - adds r0, r2, 0 - bl sub_809CFE8 - b _0809CF4E -_0809CECC: - mov r0, sp - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - beq _0809CFCC - ldr r0, _0809CEEC - ldr r0, [r0] - ldrb r0, [r0, 0xC] - cmp r0, 0 - bne _0809CEF0 - movs r0, 0x4 - bl sub_809C6CC - b _0809CEF6 - .align 2, 0 -_0809CEEC: .4byte gGameOptionsRef -_0809CEF0: - movs r0, 0x3 - bl sub_809C6CC -_0809CEF6: - bl nullsub_104 - adds r0, r4, 0 - bl sub_809CD7C - movs r5, 0x1 - str r5, [r4] - ldr r0, [sp] - cmp r0, 0x2 - beq _0809CF1E - cmp r0, 0x2 - bgt _0809CF14 - cmp r0, 0x1 - beq _0809CF2A - b _0809CF54 -_0809CF14: - cmp r0, 0x3 - beq _0809CF2A - cmp r0, 0x4 - beq _0809CF3C - b _0809CF54 -_0809CF1E: - movs r0, 0x4 - str r0, [r4] - movs r0, 0x1E - bl sub_8098D80 - b _0809CF46 -_0809CF2A: - movs r0, 0x4 - str r0, [r4] - str r5, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 - strb r0, [r7] - movs r0, 0x4 - b _0809CFDA -_0809CF3C: - str r0, [r4] - movs r0, 0x45 - movs r1, 0 - bl GroundMap_ExecuteEvent -_0809CF46: - str r5, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_0809CF4E: - strb r0, [r7] - ldr r0, [r4] - b _0809CFDA -_0809CF54: - movs r0, 0x2 - bl sub_809D9B8 - b _0809CFCC -_0809CF5C: - add r0, sp, 0x4 - bl sub_809B260 - lsls r0, 24 - cmp r0, 0 - beq _0809CFCC - adds r0, r4, 0 - bl sub_809CD7C - movs r0, 0x1 - str r0, [r4] - b _0809CFDA -_0809CF74: - ldr r0, [r4, 0x8] - cmp r0, 0 - ble _0809CF86 - subs r0, 0x1 - str r0, [r4, 0x8] - movs r0, 0x9 - str r0, [r6] - ldrb r0, [r4, 0xC] - b _0809CFD6 -_0809CF86: - ldr r0, _0809CFA0 - ldrh r1, [r0] - movs r0, 0x9 - str r0, [r6] - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _0809CFA4 - movs r0, 0x4 - b _0809CFB6 - .align 2, 0 -_0809CFA0: .4byte gRealInputs -_0809CFA4: - movs r0, 0x80 - ands r1, r0 - cmp r1, 0 - beq _0809CFB0 - strb r2, [r7] - b _0809CFB8 -_0809CFB0: - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_0809CFB6: - strb r0, [r7] -_0809CFB8: - ldrb r0, [r7] - strb r0, [r4, 0xC] - lsls r0, 24 - movs r1, 0xFF - lsls r1, 24 - cmp r0, r1 - beq _0809CFD8 - movs r0, 0x20 - str r0, [r4, 0x8] - b _0809CFD8 -_0809CFCC: - movs r0, 0 - str r0, [r6] - movs r1, 0x1 - negs r1, r1 - adds r0, r1, 0 -_0809CFD6: - strb r0, [r7] -_0809CFD8: - mov r0, r8 -_0809CFDA: - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_809CDC8 - .align 2,0 diff --git a/asm/code_809C5C4.s b/asm/code_809C5C4.s new file mode 100644 index 000000000..b3aec36d8 --- /dev/null +++ b/asm/code_809C5C4.s @@ -0,0 +1,1132 @@ + #include "asm/constants/gba_constants.inc" + #include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_809C770 +sub_809C770: + push {r4-r7,lr} + mov r7, r8 + push {r7} + lsls r0, 16 + asrs r0, 16 + mov r8, r0 + lsls r1, 16 + asrs r6, r1, 16 + ldr r4, _0809C790 + ldr r1, [r4] + ldrb r0, [r1, 0xE] + cmp r0, 0 + beq _0809C794 + movs r0, 0 + strb r0, [r1, 0xE] + b _0809CA10 + .align 2, 0 +_0809C790: .4byte gUnknown_3001B68 +_0809C794: + ldrh r0, [r1, 0x8] + cmp r0, 0 + bne _0809C79E + bl sub_809C6EC +_0809C79E: + ldr r0, [r4] + ldrb r5, [r0, 0x18] + ldrb r7, [r0, 0x19] + cmp r6, 0x26 + bls _0809C7AA + b _0809C8C8 +_0809C7AA: + lsls r0, r6, 2 + ldr r1, _0809C7B4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C7B4: .4byte _0809C7B8 + .align 2, 0 +_0809C7B8: + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C854 + .4byte _0809C868 + .4byte _0809C868 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C8C8 + .4byte _0809C86E + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 +_0809C854: + mov r0, r8 + bl sub_8002658 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0 + bne _0809C864 + b _0809CA10 +_0809C864: + movs r4, 0x1 + b _0809C988 +_0809C868: + movs r4, 0x1 + movs r5, 0 + b _0809C988 +_0809C86E: + mov r0, r8 + subs r0, 0xA4 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0xD + bls _0809C87C + b _0809CA10 +_0809C87C: + lsls r0, 2 + ldr r1, _0809C888 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C888: .4byte _0809C88C + .align 2, 0 +_0809C88C: + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809CA10 + .4byte _0809CA10 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809CA10 + .4byte _0809CA10 + .4byte _0809CA10 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 + .4byte _0809C8C4 +_0809C8C4: + movs r4, 0 + b _0809C988 +_0809C8C8: + adds r0, r6, 0 + subs r0, 0xC + lsls r0, 16 + asrs r0, 16 + cmp r0, 0x16 + bhi _0809C968 + lsls r0, 2 + ldr r1, _0809C8E0 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C8E0: .4byte _0809C8E4 + .align 2, 0 +_0809C8E4: + .4byte _0809C968 + .4byte _0809C940 + .4byte _0809C968 + .4byte _0809C968 + .4byte _0809C968 + .4byte _0809C968 + .4byte _0809C944 + .4byte _0809C944 + .4byte _0809C948 + .4byte _0809C948 + .4byte _0809C94C + .4byte _0809C968 + .4byte _0809C950 + .4byte _0809C950 + .4byte _0809C954 + .4byte _0809C954 + .4byte _0809C958 + .4byte _0809C958 + .4byte _0809C95C + .4byte _0809C95C + .4byte _0809C960 + .4byte _0809C960 + .4byte _0809C964 +_0809C940: + movs r1, 0 + b _0809C974 +_0809C944: + movs r1, 0x7 + b _0809C974 +_0809C948: + movs r1, 0x9 + b _0809C974 +_0809C94C: + movs r1, 0xA + b _0809C974 +_0809C950: + movs r1, 0xB + b _0809C974 +_0809C954: + movs r1, 0xD + b _0809C974 +_0809C958: + movs r1, 0xF + b _0809C974 +_0809C95C: + movs r1, 0x11 + b _0809C974 +_0809C960: + movs r1, 0x13 + b _0809C974 +_0809C964: + movs r1, 0x20 + b _0809C974 +_0809C968: + movs r0, 0 + movs r1, 0x13 + bl sub_8001658 + lsls r0, 16 + asrs r1, r0, 16 +_0809C974: + movs r0, 0x1 + negs r0, r0 + cmp r1, r0 + beq _0809CA10 + adds r0, r1, 0 + bl sub_80A2740 + lsls r0, 24 + lsrs r7, r0, 24 + movs r4, 0x2 +_0809C988: + ldr r0, _0809C99C + ldr r2, [r0] + ldr r1, [r2, 0x10] + adds r3, r0, 0 + cmp r1, r4 + beq _0809C9A0 + movs r0, 0x2 + str r0, [r2] + b _0809C9DE + .align 2, 0 +_0809C99C: .4byte gUnknown_3001B68 +_0809C9A0: + cmp r4, 0x1 + bne _0809C9CC + ldrb r0, [r2, 0x18] + cmp r5, r0 + bne _0809C9B2 + movs r1, 0x14 + ldrsh r0, [r2, r1] + cmp r0, r8 + beq _0809C9BC +_0809C9B2: + strb r4, [r2, 0xC] + ldr r0, [r3] + adds r0, 0x20 + strb r4, [r0] + b _0809C9E8 +_0809C9BC: + cmp r5, 0 + bne _0809C9E8 + movs r1, 0x16 + ldrsh r0, [r2, r1] + cmp r0, r6 + beq _0809C9E8 + strb r4, [r2, 0xC] + b _0809C9E8 +_0809C9CC: + cmp r4, 0x2 + bne _0809C9E8 + ldrb r0, [r2, 0x19] + cmp r7, r0 + bne _0809C9DE + movs r1, 0x16 + ldrsh r0, [r2, r1] + cmp r0, r6 + beq _0809C9E8 +_0809C9DE: + movs r1, 0x1 + strb r1, [r2, 0xC] + ldr r0, [r3] + adds r0, 0x20 + strb r1, [r0] +_0809C9E8: + ldr r1, [r3] + ldrb r0, [r1, 0xC] + cmp r0, 0 + beq _0809CA10 + str r4, [r1, 0x10] + movs r2, 0 + mov r0, r8 + strh r0, [r1, 0x14] + strh r6, [r1, 0x16] + strb r5, [r1, 0x18] + ldr r0, [r3] + strb r7, [r0, 0x19] + ldr r1, [r3] + ldrh r0, [r1, 0x8] + cmp r0, 0x4 + beq _0809CA10 + strb r2, [r1, 0xC] + ldr r0, [r3] + adds r0, 0x20 + strb r2, [r0] +_0809CA10: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_809C770 + + thumb_func_start nullsub_105 +nullsub_105: + bx lr + thumb_func_end nullsub_105 + + thumb_func_start sub_809CA20 +sub_809CA20: + push {lr} + ldr r1, _0809CA74 + ldr r2, [r1] + ldr r0, [r2] + cmp r0, 0 + beq _0809CA38 + movs r0, 0 + str r0, [r2] + movs r0, 0x1F + str r0, [r2, 0x4] + movs r0, 0x1 + strb r0, [r2, 0xC] +_0809CA38: + ldr r1, [r1] + ldrb r0, [r1, 0xC] + cmp r0, 0 + beq _0809CAE8 + ldrh r0, [r1, 0x8] + strh r0, [r1, 0xA] + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x4 + bne _0809CA5E + ldr r2, [r1, 0x10] + cmp r2, 0 + bne _0809CA5E + movs r0, 0x2 + strh r0, [r1, 0xA] + str r2, [r1, 0x1C] + adds r1, 0x20 + movs r0, 0 + strb r0, [r1] +_0809CA5E: + ldr r0, _0809CA74 + ldr r0, [r0] + ldrh r0, [r0, 0xA] + cmp r0, 0x5 + bhi _0809CADA + lsls r0, 2 + ldr r1, _0809CA78 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809CA74: .4byte gUnknown_3001B68 +_0809CA78: .4byte _0809CA7C + .align 2, 0 +_0809CA7C: + .4byte _0809CAD2 + .4byte _0809CAD2 + .4byte _0809CABE + .4byte _0809CA94 + .4byte _0809CAB0 + .4byte _0809CAC8 +_0809CA94: + bl nullsub_111 + bl nullsub_113 + bl nullsub_112 + ldr r0, _0809CAAC + ldr r1, [r0] + movs r0, 0x1 + strb r0, [r1, 0xD] + b _0809CADA + .align 2, 0 +_0809CAAC: .4byte gUnknown_3001B68 +_0809CAB0: + bl nullsub_114 + bl nullsub_115 + bl nullsub_116 + b _0809CADA +_0809CABE: + bl nullsub_109 + bl nullsub_110 + b _0809CADA +_0809CAC8: + bl nullsub_107 + bl nullsub_108 + b _0809CADA +_0809CAD2: + bl nullsub_107 + bl nullsub_108 +_0809CADA: + ldr r0, _0809CAE4 + ldr r1, [r0] + movs r0, 0 + strb r0, [r1, 0xC] + b _0809CB1E + .align 2, 0 +_0809CAE4: .4byte gUnknown_3001B68 +_0809CAE8: + ldrh r0, [r1, 0xA] + cmp r0, 0x5 + bhi _0809CB1E + lsls r0, 2 + ldr r1, _0809CAF8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809CAF8: .4byte _0809CAFC + .align 2, 0 +_0809CAFC: + .4byte _0809CB1E + .4byte _0809CB1E + .4byte _0809CB1E + .4byte _0809CB14 + .4byte _0809CB1A + .4byte _0809CB1E +_0809CB14: + bl nullsub_113 + b _0809CB1E +_0809CB1A: + bl nullsub_116 +_0809CB1E: + pop {r0} + bx r0 + thumb_func_end sub_809CA20 + + thumb_func_start nullsub_106 +nullsub_106: + bx lr + thumb_func_end nullsub_106 + + thumb_func_start nullsub_107 +nullsub_107: + bx lr + thumb_func_end nullsub_107 + + thumb_func_start nullsub_108 +nullsub_108: + bx lr + thumb_func_end nullsub_108 + + thumb_func_start nullsub_109 +nullsub_109: + bx lr + thumb_func_end nullsub_109 + + thumb_func_start nullsub_110 +nullsub_110: + bx lr + thumb_func_end nullsub_110 + + thumb_func_start nullsub_111 +nullsub_111: + bx lr + thumb_func_end nullsub_111 + + thumb_func_start nullsub_112 +nullsub_112: + bx lr + thumb_func_end nullsub_112 + + thumb_func_start nullsub_113 +nullsub_113: + bx lr + thumb_func_end nullsub_113 + + thumb_func_start nullsub_114 +nullsub_114: + bx lr + thumb_func_end nullsub_114 + + thumb_func_start nullsub_115 +nullsub_115: + bx lr + thumb_func_end nullsub_115 + + thumb_func_start nullsub_116 +nullsub_116: + bx lr + thumb_func_end nullsub_116 + + thumb_func_start sub_809CB50 +sub_809CB50: + push {r4,lr} + ldr r4, _0809CB70 + movs r0, 0xC + movs r1, 0x6 + bl MemoryAlloc + str r0, [r4] + movs r1, 0x1 + negs r1, r1 + str r1, [r0, 0x4] + movs r1, 0 + str r1, [r0, 0x8] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809CB70: .4byte gUnknown_20399E0 + thumb_func_end sub_809CB50 + + thumb_func_start sub_809CB74 +sub_809CB74: + push {r4,lr} + ldr r4, _0809CB88 + ldr r0, [r4] + bl MemoryFree + movs r0, 0 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0809CB88: .4byte gUnknown_20399E0 + thumb_func_end sub_809CB74 + + thumb_func_start sub_809CB8C +sub_809CB8C: + push {lr} + movs r0, 0 + movs r1, 0x3B + bl sub_80015C0 + movs r0, 0 + movs r1, 0x3D + bl sub_80015C0 + pop {r0} + bx r0 + thumb_func_end sub_809CB8C + + thumb_func_start sub_809CBA4 +sub_809CBA4: + push {lr} + lsls r0, 24 + lsrs r0, 24 + bl FindItemInInventory + cmp r0, 0 + bge _0809CBB6 + movs r0, 0 + b _0809CBB8 +_0809CBB6: + movs r0, 0x1 +_0809CBB8: + pop {r1} + bx r1 + thumb_func_end sub_809CBA4 + + thumb_func_start sub_809CBBC +sub_809CBBC: + push {r4-r7,lr} + sub sp, 0x54 + adds r4, r0, 0 + adds r6, r1, 0 + adds r5, r2, 0 + adds r7, r3, 0 + ldrb r1, [r4] + cmp r1, 0x69 + bne _0809CC20 + ldr r1, _0809CC0C + movs r0, 0x2 + ldrsh r2, [r4, r0] + ldr r0, _0809CC10 + ldr r0, [r0] + movs r3, 0xD2 + lsls r3, 4 + adds r0, r3 + ldr r3, [r0] + mov r0, sp + bl sprintfStatic + ldr r0, _0809CC14 + ldr r0, [r0] + movs r1, 0x98 + lsls r1, 2 + adds r2, r0, r1 + movs r3, 0x2 + ldrsh r1, [r4, r3] + ldr r0, [r2] + adds r1, r0, r1 + ldr r0, _0809CC18 + cmp r1, r0 + ble _0809CC1C + cmp r6, 0 + beq _0809CC4E + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + adds r2, r6, 0 + b _0809CC4A + .align 2, 0 +_0809CC0C: .4byte gUnknown_81163E4 +_0809CC10: .4byte gItemParametersData +_0809CC14: .4byte gTeamInventoryRef +_0809CC18: .4byte 0x0001869f +_0809CC1C: + str r1, [r2] + b _0809CC5E +_0809CC20: + ldrb r0, [r4, 0x2] + lsls r1, 16 + lsls r0, 8 + orrs r0, r1 + str r0, [sp, 0x50] + add r4, sp, 0x50 + mov r0, sp + adds r1, r4, 0 + movs r2, 0 + bl sub_8090E14 + bl GetNumberOfFilledInventorySlots + cmp r0, 0x13 + ble _0809CC52 + cmp r5, 0 + beq _0809CC4E + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + adds r2, r5, 0 +_0809CC4A: + bl sub_809AE90 +_0809CC4E: + movs r0, 0 + b _0809CC82 +_0809CC52: + ldrb r0, [r4, 0x2] + movs r1, 0 + bl sub_809124C + bl FillInventoryGaps +_0809CC5E: + cmp r7, 0 + beq _0809CC80 + ldr r0, _0809CC8C + mov r1, sp + bl strcpy + movs r1, 0x1 + negs r1, r1 + movs r0, 0 + adds r2, r7, 0 + bl sub_809AE90 + movs r1, 0x80 + lsls r1, 1 + movs r0, 0xCB + bl xxx_call_play_fanfare_se +_0809CC80: + movs r0, 0x1 +_0809CC82: + add sp, 0x54 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0809CC8C: .4byte gUnknown_202DE58 + thumb_func_end sub_809CBBC + + thumb_func_start sub_809CC90 +sub_809CC90: + push {lr} + lsls r0, 2 + ldr r1, _0809CCBC + adds r1, r0, r1 + ldrb r0, [r1] + cmp r0, 0x69 + bne _0809CCC8 + ldr r0, _0809CCC0 + ldr r0, [r0] + movs r2, 0x98 + lsls r2, 2 + adds r0, r2 + movs r2, 0x2 + ldrsh r1, [r1, r2] + ldr r0, [r0] + adds r0, r1 + ldr r1, _0809CCC4 + cmp r0, r1 + ble _0809CCD4 + movs r0, 0x2 + b _0809CCD6 + .align 2, 0 +_0809CCBC: .4byte gUnknown_81163BC +_0809CCC0: .4byte gTeamInventoryRef +_0809CCC4: .4byte 0x0001869f +_0809CCC8: + bl GetNumberOfFilledInventorySlots + cmp r0, 0x13 + ble _0809CCD4 + movs r0, 0x2 + b _0809CCD6 +_0809CCD4: + movs r0, 0x1 +_0809CCD6: + pop {r1} + bx r1 + thumb_func_end sub_809CC90 + + thumb_func_start sub_809CCDC +sub_809CCDC: + push {r4-r6,lr} + adds r6, r0, 0 + adds r4, r1, 0 + lsls r1, r6, 2 + ldr r0, _0809CD20 + adds r5, r1, r0 + ldr r0, _0809CD24 + ldr r1, [r0] + movs r0, 0x1 + negs r0, r0 + str r0, [r1, 0x4] + movs r0, 0 + str r0, [r1, 0x8] + movs r0, 0x2 + cmp r4, 0x63 + bgt _0809CD04 + movs r0, 0 + cmp r4, 0x1 + ble _0809CD04 + movs r0, 0x1 +_0809CD04: + ldr r1, _0809CD28 + ldr r2, _0809CD2C + ldr r3, _0809CD30 + lsls r0, 2 + adds r0, r3 + ldr r3, [r0] + adds r0, r5, 0 + bl sub_809CBBC + lsls r0, 24 + cmp r0, 0 + bne _0809CD34 + movs r0, 0x2 + b _0809CD3E + .align 2, 0 +_0809CD20: .4byte gUnknown_81163BC +_0809CD24: .4byte gUnknown_20399E0 +_0809CD28: .4byte gUnknown_81163F0 +_0809CD2C: .4byte gUnknown_811642C +_0809CD30: .4byte gUnknown_203B4A0 +_0809CD34: + ldr r0, _0809CD44 + ldr r0, [r0] + str r6, [r0, 0x4] + str r4, [r0, 0x8] + movs r0, 0x1 +_0809CD3E: + pop {r4-r6} + pop {r1} + bx r1 + .align 2, 0 +_0809CD44: .4byte gUnknown_20399E0 + thumb_func_end sub_809CCDC + + thumb_func_start sub_809CD48 +sub_809CD48: + push {lr} + bl sub_809A750 + lsls r0, 24 + cmp r0, 0 + bne _0809CD58 + movs r0, 0x3 + b _0809CD5A +_0809CD58: + movs r0, 0 +_0809CD5A: + pop {r1} + bx r1 + thumb_func_end sub_809CD48 + + thumb_func_start nullsub_117 +nullsub_117: + bx lr + thumb_func_end nullsub_117 + + thumb_func_start nullsub_118 +nullsub_118: + bx lr + thumb_func_end nullsub_118 + + thumb_func_start sub_809CD68 +sub_809CD68: + movs r2, 0 + str r2, [r0] + str r2, [r0, 0x4] + movs r1, 0x1 + negs r1, r1 + str r1, [r0, 0x10] + str r2, [r0, 0x14] + str r2, [r0, 0x8] + strb r2, [r0, 0x18] + bx lr + thumb_func_end sub_809CD68 + + thumb_func_start sub_809CD7C +sub_809CD7C: + movs r2, 0 + str r2, [r0] + movs r1, 0x1 + negs r1, r1 + str r1, [r0, 0x10] + str r2, [r0, 0x14] + str r2, [r0, 0x8] + bx lr + thumb_func_end sub_809CD7C + + thumb_func_start sub_809CD8C +sub_809CD8C: + push {r4,r5,lr} + adds r5, r0, 0 + adds r4, r1, 0 + cmp r4, 0x5 + bne _0809CD9E + bl sub_809CD68 + str r4, [r5] + b _0809CDB0 +_0809CD9E: + ldr r0, [r5, 0x4] + cmp r0, r4 + beq _0809CDB0 + str r4, [r5, 0x4] + movs r0, 0x1 + negs r0, r0 + str r0, [r5, 0x10] + movs r0, 0 + str r0, [r5, 0x14] +_0809CDB0: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_809CD8C + + thumb_func_start sub_809CDB8 +sub_809CDB8: + push {lr} + adds r1, r0, 0 + ldr r0, [r1, 0x4] + cmp r0, 0 + bne _0809CDC4 + ldr r0, [r1] +_0809CDC4: + pop {r1} + bx r1 + thumb_func_end sub_809CDB8 + + thumb_func_start sub_809CDC8 +sub_809CDC8: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + adds r4, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + ldr r1, [sp, 0x24] + movs r0, 0x1 + negs r0, r0 + str r0, [r3] + ldr r0, [r4] + cmp r0, 0x1 + beq _0809CDEA + cmp r0, 0x2 + beq _0809CDFE + b _0809CE12 +_0809CDEA: + movs r0, 0x80 + lsls r0, 6 + ands r1, r0 + cmp r1, 0 + beq _0809CE12 + adds r0, r4, 0 + bl sub_809CD68 + movs r0, 0x2 + b _0809CE10 +_0809CDFE: + movs r0, 0x80 + lsls r0, 6 + ands r1, r0 + cmp r1, 0 + bne _0809CE12 + adds r0, r4, 0 + bl sub_809CD68 + movs r0, 0x1 +_0809CE10: + str r0, [r4] +_0809CE12: + ldr r0, [r4, 0x4] + mov r8, r0 + cmp r0, 0 + bne _0809CE1E + ldr r1, [r4] + mov r8, r1 +_0809CE1E: + mov r0, r8 + subs r0, 0x1 + cmp r0, 0x6 + bls _0809CE28 + b _0809CFCC +_0809CE28: + lsls r0, 2 + ldr r1, _0809CE34 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809CE34: .4byte _0809CE38 + .align 2, 0 +_0809CE38: + .4byte _0809CE54 + .4byte _0809CF74 + .4byte _0809CFCC + .4byte _0809CFCC + .4byte _0809CECC + .4byte _0809CF5C + .4byte _0809CF5C +_0809CE54: + ldr r0, _0809CE70 + ldrh r2, [r0] + ldrh r1, [r0, 0x2] + movs r0, 0xF0 + ands r0, r2 + cmp r0, 0 + beq _0809CE74 + movs r0, 0x2 + ands r0, r2 + cmp r0, 0 + beq _0809CEA4 + movs r0, 0 + b _0809CEA8 + .align 2, 0 +_0809CE70: .4byte gRealInputs +_0809CE74: + movs r3, 0x2 + adds r0, r1, 0 + ands r0, r3 + cmp r0, 0 + beq _0809CE82 + movs r0, 0x14 + b _0809CEA8 +_0809CE82: + ldr r0, [r4, 0x10] + cmp r0, 0x1 + ble _0809CEA4 + subs r0, 0x1 + str r0, [r4, 0x10] + adds r0, r2, 0 + ands r0, r3 + cmp r0, 0 + bne _0809CEAA + movs r0, 0x13 + str r0, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 + strb r0, [r7] + movs r0, 0x5 + b _0809CFDA +_0809CEA4: + movs r0, 0x1 + negs r0, r0 +_0809CEA8: + str r0, [r4, 0x10] +_0809CEAA: + movs r0, 0x1 + ands r1, r0 + cmp r1, 0 + beq _0809CEB6 + movs r0, 0xA + b _0809CEC2 +_0809CEB6: + ldr r0, [r4, 0x10] + cmp r0, 0 + bne _0809CEC0 + movs r0, 0x8 + b _0809CEC2 +_0809CEC0: + movs r0, 0x7 +_0809CEC2: + str r0, [r6] + adds r0, r2, 0 + bl sub_809CFE8 + b _0809CF4E +_0809CECC: + mov r0, sp + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + beq _0809CFCC + ldr r0, _0809CEEC + ldr r0, [r0] + ldrb r0, [r0, 0xC] + cmp r0, 0 + bne _0809CEF0 + movs r0, 0x4 + bl sub_809C6CC + b _0809CEF6 + .align 2, 0 +_0809CEEC: .4byte gGameOptionsRef +_0809CEF0: + movs r0, 0x3 + bl sub_809C6CC +_0809CEF6: + bl nullsub_104 + adds r0, r4, 0 + bl sub_809CD7C + movs r5, 0x1 + str r5, [r4] + ldr r0, [sp] + cmp r0, 0x2 + beq _0809CF1E + cmp r0, 0x2 + bgt _0809CF14 + cmp r0, 0x1 + beq _0809CF2A + b _0809CF54 +_0809CF14: + cmp r0, 0x3 + beq _0809CF2A + cmp r0, 0x4 + beq _0809CF3C + b _0809CF54 +_0809CF1E: + movs r0, 0x4 + str r0, [r4] + movs r0, 0x1E + bl sub_8098D80 + b _0809CF46 +_0809CF2A: + movs r0, 0x4 + str r0, [r4] + str r5, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 + strb r0, [r7] + movs r0, 0x4 + b _0809CFDA +_0809CF3C: + str r0, [r4] + movs r0, 0x45 + movs r1, 0 + bl GroundMap_ExecuteEvent +_0809CF46: + str r5, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 +_0809CF4E: + strb r0, [r7] + ldr r0, [r4] + b _0809CFDA +_0809CF54: + movs r0, 0x2 + bl sub_809D9B8 + b _0809CFCC +_0809CF5C: + add r0, sp, 0x4 + bl sub_809B260 + lsls r0, 24 + cmp r0, 0 + beq _0809CFCC + adds r0, r4, 0 + bl sub_809CD7C + movs r0, 0x1 + str r0, [r4] + b _0809CFDA +_0809CF74: + ldr r0, [r4, 0x8] + cmp r0, 0 + ble _0809CF86 + subs r0, 0x1 + str r0, [r4, 0x8] + movs r0, 0x9 + str r0, [r6] + ldrb r0, [r4, 0xC] + b _0809CFD6 +_0809CF86: + ldr r0, _0809CFA0 + ldrh r1, [r0] + movs r0, 0x9 + str r0, [r6] + movs r0, 0x40 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _0809CFA4 + movs r0, 0x4 + b _0809CFB6 + .align 2, 0 +_0809CFA0: .4byte gRealInputs +_0809CFA4: + movs r0, 0x80 + ands r1, r0 + cmp r1, 0 + beq _0809CFB0 + strb r2, [r7] + b _0809CFB8 +_0809CFB0: + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 +_0809CFB6: + strb r0, [r7] +_0809CFB8: + ldrb r0, [r7] + strb r0, [r4, 0xC] + lsls r0, 24 + movs r1, 0xFF + lsls r1, 24 + cmp r0, r1 + beq _0809CFD8 + movs r0, 0x20 + str r0, [r4, 0x8] + b _0809CFD8 +_0809CFCC: + movs r0, 0 + str r0, [r6] + movs r1, 0x1 + negs r1, r1 + adds r0, r1, 0 +_0809CFD6: + strb r0, [r7] +_0809CFD8: + mov r0, r8 +_0809CFDA: + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_809CDC8 + + .align 2,0 diff --git a/ld_script.txt b/ld_script.txt index 0857cb236..ba769ddb6 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -331,6 +331,8 @@ SECTIONS { asm/code_8098BDC.o(.text); src/code_809A560.o(.text); asm/code_809A560.o(.text); + src/code_809C5C4.o(.text); + asm/code_809C5C4.o(.text); src/code_809D148.o(.text); asm/code_809D148.o(.text); src/ground_script.o(.text); diff --git a/src/code_809A560.c b/src/code_809A560.c index 3c3124d7c..90ae02752 100644 --- a/src/code_809A560.c +++ b/src/code_809A560.c @@ -1,6 +1,26 @@ #include "global.h" #include "text1.h" #include "memory.h" +#include "file_system.h" + +struct unkStruct_3001B64_sub +{ + // size: 0x24 + u16 unk0; + /* 0x2 */ s16 speciesID; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u32 unk8; + u32 unkC; + u32 unk10; + /* 0x14 */ u32 faceData; + u32 fill18; + u8 unk1C; + u8 fill1D[0x20 - 0x1D]; + /* 0x20 */ OpenedFile *faceFile; +}; struct unkStruct_3001B64 { @@ -19,7 +39,8 @@ struct unkStruct_3001B64 u32 unk42C; u32 unk430; u32 unk434; - u8 fill438[0x5A4 - 0x438]; + u32 fill438; + struct unkStruct_3001B64_sub unk43C[10]; u16 unk5A4; }; @@ -27,23 +48,28 @@ extern struct unkStruct_3001B64 *gUnknown_3001B64; extern u16 gUnknown_20399DC; extern u16 gUnknown_20399DE; +extern u8 gInvalidityText[]; +extern u8 gAvailablePokemonNames[]; +extern u8 gPlayerName[]; extern u8 sub_809B2B8(u32 *, u32, u32, u32); extern u32 sub_809B40C(u32 *); extern void sub_801416C(s32, s32); -extern void sub_809A83C(s16); -extern u32 sub_809A680(u32, u32); -extern void sub_809A62C(void); extern void sub_80095CC(u32, u32); extern void sub_8009408(u32, u32); extern void sub_809B294(void); extern void sub_8014144(void); -extern void sub_809A7EC(void); + +u32 sub_809A680(u32 param_1, u32 param_2); +void sub_809A62C(void); +void sub_809A7EC(void); +void sub_809A83C(s16 index); + void sub_809A560(void) { sub_8014144(); - gUnknown_3001B64 = MemoryAlloc(0x5a8,6); + gUnknown_3001B64 = MemoryAlloc(sizeof(struct unkStruct_3001B64), 6); gUnknown_3001B64->unk0 = 0; gUnknown_3001B64->unk4 = -1; gUnknown_3001B64->unk8 = -1; @@ -75,16 +101,16 @@ void sub_809A610(void) void sub_809A62C(void) { - s32 iVar2; + s32 index; gUnknown_3001B64->unk0 = 0; gUnknown_3001B64->unk4 = -1; gUnknown_3001B64->unk8 = -1; gUnknown_20399DC = 0; gUnknown_20399DE = 0; - for(iVar2 = 0; iVar2 < 10; iVar2++) + for(index = 0; index < 10; index++) { - sub_809A83C(iVar2); + sub_809A83C(index); } gUnknown_3001B64->unk414 = 0; sub_809A680(0, 1); @@ -187,3 +213,53 @@ u8 sub_809A7B4(void) } } +void sub_809A7EC(void) +{ + s32 counter; + struct unkStruct_3001B64_sub *temp; + + temp = &gUnknown_3001B64->unk43C[0]; + + for(counter = 0; counter < 10; counter++, temp++) + { + temp->unk0 |= -1; + temp->speciesID = MONSTER_NONE; + temp->unk4 = 0; + temp->unk5 = 0; + temp->unk6 |= -1; + temp->unk7 = 0; + temp->unk8 = 0; + temp->unkC = 0; + temp->unk10 = 0; + temp->faceData = 0; + temp->unk1C = 0; + temp->faceFile = NULL; + } +} + +// https://decomp.me/scratch/4MpWc (96.23% matching - Seth) +// void sub_809A83C(s16 index) +// { +// struct unkStruct_3001B64_sub *temp; +// +// temp = &gUnknown_3001B64->unk43C[index]; +// +// temp->unk0 = -1; +// temp->speciesID = MONSTER_NONE; +// temp->unk4 = 0; +// temp->unk5 = 0; +// temp->unk6 = -1; +// temp->unk7 = 0; +// temp->unk8 = 0; +// temp->unkC = 0; +// temp->unk10 = 0; +// temp->faceData = NULL; +// temp->unk1C = 0; +// strcpy(gAvailablePokemonNames + (index * 0x50), gInvalidityText); +// strcpy(gPlayerName + (index * 0x50), gInvalidityText); +// if(temp->faceFile) +// { +// CloseFile(temp->faceFile); +// temp->faceFile = NULL; +// } +// } diff --git a/src/code_809C5C4.c b/src/code_809C5C4.c new file mode 100644 index 000000000..2b60dfe41 --- /dev/null +++ b/src/code_809C5C4.c @@ -0,0 +1,152 @@ +#include "global.h" +#include "memory.h" +#include "game_options.h" +#include "ground_main.h" + +struct unkStruct_3001B68 +{ + u32 unk0; + u32 unk4; + u16 unk8; + u16 unkA; + u8 unkC; + u8 unkD; + u8 unkE; + u32 unk10; + u16 unk14; + u16 unk16; + u8 unk18; + u8 unk19; + u32 unk1C; + u8 unk20; +}; + +extern struct unkStruct_3001B68 *gUnknown_3001B68; + +void sub_809C63C(); +u8 sub_809C740(void); +void nullsub_107(); +void nullsub_108(); +void nullsub_109(); +void nullsub_110(); +void nullsub_111(); +void nullsub_112(); +void nullsub_113(); +void nullsub_114(); +void nullsub_115(); +void nullsub_116(); + +void sub_809C5C4(void) +{ + gUnknown_3001B68 = MemoryAlloc(sizeof(struct unkStruct_3001B68), 6); + gUnknown_3001B68->unk0 = 0; + gUnknown_3001B68->unk4 = 0; + gUnknown_3001B68->unk8 = 0; + gUnknown_3001B68->unkA = 0; + gUnknown_3001B68->unkD = 0; + gUnknown_3001B68->unkE = 0; + gUnknown_3001B68->unk10 = 0; + gUnknown_3001B68->unk14 = 0xffff; + gUnknown_3001B68->unk16 = 0x23; + gUnknown_3001B68->unk18 = 0; + gUnknown_3001B68->unk19 = 0x3f; + gUnknown_3001B68->unk1C = 0; + gUnknown_3001B68->unk20 = 0; + nullsub_107(); + sub_809C63C(); +} + +void sub_809C618(void) +{ + sub_809C63C(); + nullsub_107(); + nullsub_108(); + MemoryFree(gUnknown_3001B68); + gUnknown_3001B68 = NULL; +} + +void sub_809C63C(void) +{ + nullsub_108(); + gUnknown_3001B68->unk1C = 0; + gUnknown_3001B68->unk20 = 0; +} + +void sub_809C658(void) +{ + switch(gUnknown_3001B68->unkA) { + case 3: + nullsub_111(); + nullsub_112(); + nullsub_113(); + break; + case 4: + nullsub_114(); + nullsub_115(); + nullsub_116(); + break; + case 2: + nullsub_109(); + nullsub_110(); + break; + case 5: + nullsub_107(); + nullsub_108(); + break; + case 0: + case 1: + nullsub_107(); + nullsub_108(); + break; + } +} + +void sub_809C6CC(u16 param_1) +{ + if(gUnknown_3001B68->unk8 != param_1) + { + gUnknown_3001B68->unk8 = param_1; + gUnknown_3001B68->unkE = 0; + } +} + +void sub_809C6EC(void) +{ + if (sub_8098F88() == 0) { + if (gGameOptionsRef->unkC == 0) { + sub_809C6CC(4); + } + else { + sub_809C6CC(3); + } + } + else { + sub_809C6CC(5); + } +} + +u16 sub_809C724(void) +{ + return gUnknown_3001B68->unk8; +} + +u8 sub_809C730(void) +{ + return sub_809C740(); +} + +u8 sub_809C740(void) +{ + if(gUnknown_3001B68->unk0 == 0) + return 1; + else + return 0; +} + +void nullsub_104(void) +{ } + +void sub_809C760(void) +{ + gUnknown_3001B68->unkE = 1; +} From 86a9f61835a96cf458befed92a31e6336fd342bc Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 29 Jan 2024 12:47:56 -0800 Subject: [PATCH 15/18] More decomping --- asm/code_809C5C4.s | 543 --------------------------------------------- src/code_809C5C4.c | 283 ++++++++++++++++++++++- 2 files changed, 281 insertions(+), 545 deletions(-) diff --git a/asm/code_809C5C4.s b/asm/code_809C5C4.s index b3aec36d8..b0631ff6c 100644 --- a/asm/code_809C5C4.s +++ b/asm/code_809C5C4.s @@ -5,549 +5,6 @@ .text - thumb_func_start sub_809C770 -sub_809C770: - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - asrs r0, 16 - mov r8, r0 - lsls r1, 16 - asrs r6, r1, 16 - ldr r4, _0809C790 - ldr r1, [r4] - ldrb r0, [r1, 0xE] - cmp r0, 0 - beq _0809C794 - movs r0, 0 - strb r0, [r1, 0xE] - b _0809CA10 - .align 2, 0 -_0809C790: .4byte gUnknown_3001B68 -_0809C794: - ldrh r0, [r1, 0x8] - cmp r0, 0 - bne _0809C79E - bl sub_809C6EC -_0809C79E: - ldr r0, [r4] - ldrb r5, [r0, 0x18] - ldrb r7, [r0, 0x19] - cmp r6, 0x26 - bls _0809C7AA - b _0809C8C8 -_0809C7AA: - lsls r0, r6, 2 - ldr r1, _0809C7B4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C7B4: .4byte _0809C7B8 - .align 2, 0 -_0809C7B8: - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C854 - .4byte _0809C868 - .4byte _0809C868 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C8C8 - .4byte _0809C86E - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 -_0809C854: - mov r0, r8 - bl sub_8002658 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0 - bne _0809C864 - b _0809CA10 -_0809C864: - movs r4, 0x1 - b _0809C988 -_0809C868: - movs r4, 0x1 - movs r5, 0 - b _0809C988 -_0809C86E: - mov r0, r8 - subs r0, 0xA4 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xD - bls _0809C87C - b _0809CA10 -_0809C87C: - lsls r0, 2 - ldr r1, _0809C888 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C888: .4byte _0809C88C - .align 2, 0 -_0809C88C: - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809CA10 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 - .4byte _0809C8C4 -_0809C8C4: - movs r4, 0 - b _0809C988 -_0809C8C8: - adds r0, r6, 0 - subs r0, 0xC - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x16 - bhi _0809C968 - lsls r0, 2 - ldr r1, _0809C8E0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809C8E0: .4byte _0809C8E4 - .align 2, 0 -_0809C8E4: - .4byte _0809C968 - .4byte _0809C940 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C968 - .4byte _0809C944 - .4byte _0809C944 - .4byte _0809C948 - .4byte _0809C948 - .4byte _0809C94C - .4byte _0809C968 - .4byte _0809C950 - .4byte _0809C950 - .4byte _0809C954 - .4byte _0809C954 - .4byte _0809C958 - .4byte _0809C958 - .4byte _0809C95C - .4byte _0809C95C - .4byte _0809C960 - .4byte _0809C960 - .4byte _0809C964 -_0809C940: - movs r1, 0 - b _0809C974 -_0809C944: - movs r1, 0x7 - b _0809C974 -_0809C948: - movs r1, 0x9 - b _0809C974 -_0809C94C: - movs r1, 0xA - b _0809C974 -_0809C950: - movs r1, 0xB - b _0809C974 -_0809C954: - movs r1, 0xD - b _0809C974 -_0809C958: - movs r1, 0xF - b _0809C974 -_0809C95C: - movs r1, 0x11 - b _0809C974 -_0809C960: - movs r1, 0x13 - b _0809C974 -_0809C964: - movs r1, 0x20 - b _0809C974 -_0809C968: - movs r0, 0 - movs r1, 0x13 - bl sub_8001658 - lsls r0, 16 - asrs r1, r0, 16 -_0809C974: - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _0809CA10 - adds r0, r1, 0 - bl sub_80A2740 - lsls r0, 24 - lsrs r7, r0, 24 - movs r4, 0x2 -_0809C988: - ldr r0, _0809C99C - ldr r2, [r0] - ldr r1, [r2, 0x10] - adds r3, r0, 0 - cmp r1, r4 - beq _0809C9A0 - movs r0, 0x2 - str r0, [r2] - b _0809C9DE - .align 2, 0 -_0809C99C: .4byte gUnknown_3001B68 -_0809C9A0: - cmp r4, 0x1 - bne _0809C9CC - ldrb r0, [r2, 0x18] - cmp r5, r0 - bne _0809C9B2 - movs r1, 0x14 - ldrsh r0, [r2, r1] - cmp r0, r8 - beq _0809C9BC -_0809C9B2: - strb r4, [r2, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r4, [r0] - b _0809C9E8 -_0809C9BC: - cmp r5, 0 - bne _0809C9E8 - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r6 - beq _0809C9E8 - strb r4, [r2, 0xC] - b _0809C9E8 -_0809C9CC: - cmp r4, 0x2 - bne _0809C9E8 - ldrb r0, [r2, 0x19] - cmp r7, r0 - bne _0809C9DE - movs r1, 0x16 - ldrsh r0, [r2, r1] - cmp r0, r6 - beq _0809C9E8 -_0809C9DE: - movs r1, 0x1 - strb r1, [r2, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r1, [r0] -_0809C9E8: - ldr r1, [r3] - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0809CA10 - str r4, [r1, 0x10] - movs r2, 0 - mov r0, r8 - strh r0, [r1, 0x14] - strh r6, [r1, 0x16] - strb r5, [r1, 0x18] - ldr r0, [r3] - strb r7, [r0, 0x19] - ldr r1, [r3] - ldrh r0, [r1, 0x8] - cmp r0, 0x4 - beq _0809CA10 - strb r2, [r1, 0xC] - ldr r0, [r3] - adds r0, 0x20 - strb r2, [r0] -_0809CA10: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_809C770 - - thumb_func_start nullsub_105 -nullsub_105: - bx lr - thumb_func_end nullsub_105 - - thumb_func_start sub_809CA20 -sub_809CA20: - push {lr} - ldr r1, _0809CA74 - ldr r2, [r1] - ldr r0, [r2] - cmp r0, 0 - beq _0809CA38 - movs r0, 0 - str r0, [r2] - movs r0, 0x1F - str r0, [r2, 0x4] - movs r0, 0x1 - strb r0, [r2, 0xC] -_0809CA38: - ldr r1, [r1] - ldrb r0, [r1, 0xC] - cmp r0, 0 - beq _0809CAE8 - ldrh r0, [r1, 0x8] - strh r0, [r1, 0xA] - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x4 - bne _0809CA5E - ldr r2, [r1, 0x10] - cmp r2, 0 - bne _0809CA5E - movs r0, 0x2 - strh r0, [r1, 0xA] - str r2, [r1, 0x1C] - adds r1, 0x20 - movs r0, 0 - strb r0, [r1] -_0809CA5E: - ldr r0, _0809CA74 - ldr r0, [r0] - ldrh r0, [r0, 0xA] - cmp r0, 0x5 - bhi _0809CADA - lsls r0, 2 - ldr r1, _0809CA78 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CA74: .4byte gUnknown_3001B68 -_0809CA78: .4byte _0809CA7C - .align 2, 0 -_0809CA7C: - .4byte _0809CAD2 - .4byte _0809CAD2 - .4byte _0809CABE - .4byte _0809CA94 - .4byte _0809CAB0 - .4byte _0809CAC8 -_0809CA94: - bl nullsub_111 - bl nullsub_113 - bl nullsub_112 - ldr r0, _0809CAAC - ldr r1, [r0] - movs r0, 0x1 - strb r0, [r1, 0xD] - b _0809CADA - .align 2, 0 -_0809CAAC: .4byte gUnknown_3001B68 -_0809CAB0: - bl nullsub_114 - bl nullsub_115 - bl nullsub_116 - b _0809CADA -_0809CABE: - bl nullsub_109 - bl nullsub_110 - b _0809CADA -_0809CAC8: - bl nullsub_107 - bl nullsub_108 - b _0809CADA -_0809CAD2: - bl nullsub_107 - bl nullsub_108 -_0809CADA: - ldr r0, _0809CAE4 - ldr r1, [r0] - movs r0, 0 - strb r0, [r1, 0xC] - b _0809CB1E - .align 2, 0 -_0809CAE4: .4byte gUnknown_3001B68 -_0809CAE8: - ldrh r0, [r1, 0xA] - cmp r0, 0x5 - bhi _0809CB1E - lsls r0, 2 - ldr r1, _0809CAF8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0809CAF8: .4byte _0809CAFC - .align 2, 0 -_0809CAFC: - .4byte _0809CB1E - .4byte _0809CB1E - .4byte _0809CB1E - .4byte _0809CB14 - .4byte _0809CB1A - .4byte _0809CB1E -_0809CB14: - bl nullsub_113 - b _0809CB1E -_0809CB1A: - bl nullsub_116 -_0809CB1E: - pop {r0} - bx r0 - thumb_func_end sub_809CA20 - - thumb_func_start nullsub_106 -nullsub_106: - bx lr - thumb_func_end nullsub_106 - - thumb_func_start nullsub_107 -nullsub_107: - bx lr - thumb_func_end nullsub_107 - - thumb_func_start nullsub_108 -nullsub_108: - bx lr - thumb_func_end nullsub_108 - - thumb_func_start nullsub_109 -nullsub_109: - bx lr - thumb_func_end nullsub_109 - - thumb_func_start nullsub_110 -nullsub_110: - bx lr - thumb_func_end nullsub_110 - - thumb_func_start nullsub_111 -nullsub_111: - bx lr - thumb_func_end nullsub_111 - - thumb_func_start nullsub_112 -nullsub_112: - bx lr - thumb_func_end nullsub_112 - - thumb_func_start nullsub_113 -nullsub_113: - bx lr - thumb_func_end nullsub_113 - - thumb_func_start nullsub_114 -nullsub_114: - bx lr - thumb_func_end nullsub_114 - - thumb_func_start nullsub_115 -nullsub_115: - bx lr - thumb_func_end nullsub_115 - - thumb_func_start nullsub_116 -nullsub_116: - bx lr - thumb_func_end nullsub_116 - - thumb_func_start sub_809CB50 -sub_809CB50: - push {r4,lr} - ldr r4, _0809CB70 - movs r0, 0xC - movs r1, 0x6 - bl MemoryAlloc - str r0, [r4] - movs r1, 0x1 - negs r1, r1 - str r1, [r0, 0x4] - movs r1, 0 - str r1, [r0, 0x8] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809CB70: .4byte gUnknown_20399E0 - thumb_func_end sub_809CB50 - - thumb_func_start sub_809CB74 -sub_809CB74: - push {r4,lr} - ldr r4, _0809CB88 - ldr r0, [r4] - bl MemoryFree - movs r0, 0 - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0809CB88: .4byte gUnknown_20399E0 - thumb_func_end sub_809CB74 - - thumb_func_start sub_809CB8C -sub_809CB8C: - push {lr} - movs r0, 0 - movs r1, 0x3B - bl sub_80015C0 - movs r0, 0 - movs r1, 0x3D - bl sub_80015C0 - pop {r0} - bx r0 - thumb_func_end sub_809CB8C - - thumb_func_start sub_809CBA4 -sub_809CBA4: - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl FindItemInInventory - cmp r0, 0 - bge _0809CBB6 - movs r0, 0 - b _0809CBB8 -_0809CBB6: - movs r0, 0x1 -_0809CBB8: - pop {r1} - bx r1 - thumb_func_end sub_809CBA4 - thumb_func_start sub_809CBBC sub_809CBBC: push {r4-r7,lr} diff --git a/src/code_809C5C4.c b/src/code_809C5C4.c index 2b60dfe41..3a01d45ad 100644 --- a/src/code_809C5C4.c +++ b/src/code_809C5C4.c @@ -1,7 +1,9 @@ #include "global.h" +#include "items.h" #include "memory.h" #include "game_options.h" #include "ground_main.h" +#include "code_80A26CC.h" struct unkStruct_3001B68 { @@ -13,8 +15,8 @@ struct unkStruct_3001B68 u8 unkD; u8 unkE; u32 unk10; - u16 unk14; - u16 unk16; + s16 unk14; + s16 unk16; u8 unk18; u8 unk19; u32 unk1C; @@ -23,6 +25,17 @@ struct unkStruct_3001B68 extern struct unkStruct_3001B68 *gUnknown_3001B68; + +struct unkStruct_20399E0 +{ + u32 unk0; + s32 unk4; + u32 unk8; +}; + +extern struct unkStruct_20399E0 *gUnknown_20399E0; + + void sub_809C63C(); u8 sub_809C740(void); void nullsub_107(); @@ -36,6 +49,11 @@ void nullsub_114(); void nullsub_115(); void nullsub_116(); +// Event_flag.h +u8 sub_8002658(s16); +s16 sub_8001658(u32, u32); +extern void sub_80015C0(u32, u32); + void sub_809C5C4(void) { gUnknown_3001B68 = MemoryAlloc(sizeof(struct unkStruct_3001B68), 6); @@ -150,3 +168,264 @@ void sub_809C760(void) { gUnknown_3001B68->unkE = 1; } + +void sub_809C770(s16 param_1, s16 param_2) +{ + u8 uVar2; + u8 uVar3; + s32 iVar5; + u32 uVar6; + + s32 param_1_s32; + s32 param_2_s32; + + param_1_s32 = param_1; + param_2_s32 = param_2; + + if (gUnknown_3001B68->unkE != 0) { + gUnknown_3001B68->unkE = 0; + return; + } + if (gUnknown_3001B68->unk8 == 0) { + sub_809C6EC(); + } + uVar2 = gUnknown_3001B68->unk18; + uVar3 = gUnknown_3001B68->unk19; + switch(param_2_s32) { + case 9: + uVar2 = sub_8002658(param_1_s32); + if (uVar2 == 0) { + return; + } + uVar6 = 1; + break; + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 10: + case 0xb: + uVar6 = 1; + uVar2 = 0; + break; + case 0x23: + switch((s16)(param_1_s32)) { + case 0xA4: + case 0xA5: + case 0xA8: + case 0xA9: + case 0xAA: + case 0xAE: + case 0xAF: + case 0xB0: + case 0xB1: + uVar6 = 0; + break; + default: + return; + } + break; + case 0x24: + case 0x25: + case 0x26: + uVar6 = 0; + break; + default: + switch((s16)(param_2_s32 - 0xc)) { + case 1: + iVar5 = 0; + break; + case 6: + case 7: + iVar5 = 7; + break; + case 8: + case 9: + iVar5 = 9; + break; + case 10: + iVar5 = 10; + break; + case 0xc: + case 0xd: + iVar5 = 0xb; + break; + case 0xe: + case 0xf: + iVar5 = 0xd; + break; + case 0x10: + case 0x11: + iVar5 = 0xf; + break; + case 0x12: + case 0x13: + iVar5 = 0x11; + break; + case 0x14: + case 0x15: + iVar5 = 0x13; + break; + case 0x16: + iVar5 = 0x20; + break; + case 0: + default: + iVar5 = sub_8001658(0,0x13); + break; + + } + if (iVar5 == -1) { + return; + } + uVar3 = sub_80A2740(iVar5); + uVar6 = 2; + break; + } + if (gUnknown_3001B68->unk10 != uVar6) { + gUnknown_3001B68->unk0 = 2; + gUnknown_3001B68->unkC = 1; + gUnknown_3001B68->unk20 = 1; + } + else + { + if (uVar6 == 1) { + if ((uVar2 != gUnknown_3001B68->unk18) || + (gUnknown_3001B68->unk14 != param_1_s32)) { + gUnknown_3001B68->unkC = 1; + gUnknown_3001B68->unk20 = 1; + } + else { + if ((uVar2 == 0) && (gUnknown_3001B68->unk16 != param_2_s32)) { + gUnknown_3001B68->unkC = 1; + } + } + } + else if ((uVar6 == 2) && + ((uVar3 != gUnknown_3001B68->unk19 || (gUnknown_3001B68->unk16 != param_2_s32)))) + { + gUnknown_3001B68->unkC = 1; + gUnknown_3001B68->unk20 = 1; + } + } + if (gUnknown_3001B68->unkC != 0) { + gUnknown_3001B68->unk10 = uVar6; + gUnknown_3001B68->unk14 = param_1_s32; + gUnknown_3001B68->unk16 = param_2_s32; + gUnknown_3001B68->unk18 = uVar2; + gUnknown_3001B68->unk19 = uVar3; + if (gUnknown_3001B68->unk8 != 4) { + gUnknown_3001B68->unkC = 0; + gUnknown_3001B68->unk20 = 0; + } + } +} + +void nullsub_105(void) {} + +void sub_809CA20(void) +{ + u16 *puVar1; + + if (gUnknown_3001B68->unk0 != 0) { + gUnknown_3001B68->unk0 = 0; + gUnknown_3001B68->unk4 = 0x1f; + gUnknown_3001B68->unkC = 1; + } + if (gUnknown_3001B68->unkC != 0) { + puVar1 = &gUnknown_3001B68->unk8; + gUnknown_3001B68->unkA = *puVar1; + if ((*puVar1 == 4) && (gUnknown_3001B68->unk10 == 0)) { + gUnknown_3001B68->unkA = 2; + gUnknown_3001B68->unk1C = 0; + gUnknown_3001B68->unk20 = 0; + } + switch(gUnknown_3001B68->unkA) { + case 3: + nullsub_111(); + nullsub_113(); + nullsub_112(); + gUnknown_3001B68->unkD = 1; + break; + case 4: + nullsub_114(); + nullsub_115(); + nullsub_116(); + break; + case 2: + nullsub_109(); + nullsub_110(); + break; + case 5: + nullsub_107(); + nullsub_108(); + break; + case 0: + case 1: + nullsub_107(); + nullsub_108(); + break; + } + gUnknown_3001B68->unkC = 0; + + } + else { + switch(gUnknown_3001B68->unkA) { + case 3: + nullsub_113(); + break; + case 4: + nullsub_116(); + case 0: + case 1: + case 2: + case 5: + break; + } + } +} + + +void nullsub_106(void) {} +void nullsub_107(void) {} +void nullsub_108(void) {} +void nullsub_109(void) {} +void nullsub_110(void) {} +void nullsub_111(void) {} +void nullsub_112(void) {} +void nullsub_113(void) {} +void nullsub_114(void) {} +void nullsub_115(void) {} +void nullsub_116(void) {} + +void sub_809CB50(void) +{ + gUnknown_20399E0 = MemoryAlloc(sizeof(struct unkStruct_20399E0), 6); + gUnknown_20399E0->unk4 = -1; + gUnknown_20399E0->unk8 = 0; +} + +void sub_809CB74(void) { + MemoryFree(gUnknown_20399E0); + gUnknown_20399E0 = NULL; +} + + +void sub_809CB8C(void) { + sub_80015C0(0, 0x3B); + sub_80015C0(0, 0x3D); +} + +bool8 sub_809CBA4(u8 param_1) +{ + + if(FindItemInInventory(param_1) >= 0) + return 1; + else + return 0; +} From 3b3a7186e1aef8e5844274eb9f47076da035f021 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 29 Jan 2024 14:28:44 -0800 Subject: [PATCH 16/18] small cleanup --- src/code_809C5C4.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/code_809C5C4.c b/src/code_809C5C4.c index 3a01d45ad..7f33870e5 100644 --- a/src/code_809C5C4.c +++ b/src/code_809C5C4.c @@ -421,11 +421,10 @@ void sub_809CB8C(void) { sub_80015C0(0, 0x3D); } -bool8 sub_809CBA4(u8 param_1) +bool8 sub_809CBA4(u8 item) { - - if(FindItemInInventory(param_1) >= 0) - return 1; - else - return 0; + if(FindItemInInventory(item) >= 0) + return TRUE; + else + return FALSE; } From 11c5c7505d4b215419888791a1f3cf15d5bae7b7 Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 29 Jan 2024 14:50:49 -0800 Subject: [PATCH 17/18] address review comment --- asm/code_80521D0.s | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 9d59f90e9..224cc33c5 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -4665,7 +4665,7 @@ _08054CFE: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl TrapperOrbAction + bl TrapperOrbAction b _080554BA _08054D0C: adds r0, r7, 0 From a372938d6cc7db73091c6105c2e3787e5eff97dd Mon Sep 17 00:00:00 2001 From: Seth Barberee Date: Mon, 29 Jan 2024 14:55:36 -0800 Subject: [PATCH 18/18] address more review comments --- asm/code_80521D0.s | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/asm/code_80521D0.s b/asm/code_80521D0.s index 224cc33c5..ed603c8ca 100644 --- a/asm/code_80521D0.s +++ b/asm/code_80521D0.s @@ -4800,7 +4800,7 @@ _08054E0C: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl SpikesMoveAction + bl SpikesMoveAction b _080554BA _08054E1A: adds r0, r7, 0 @@ -5094,7 +5094,7 @@ _08055058: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl PetrifyOrbAction + bl PetrifyOrbAction b _080554BA _08055066: adds r0, r7, 0 @@ -5264,7 +5264,7 @@ _080551AC: adds r1, r5, 0 mov r2, r8 mov r3, r9 - bl InvisifyOrbAction + bl InvisifyOrbAction b _080554BA _080551BA: adds r0, r7, 0