diff options
92 files changed, 9847 insertions, 20005 deletions
diff --git a/asm/battle_4.s b/asm/battle_4.s index 0581d1e7d..bbdeb1c6e 100644 --- a/asm/battle_4.s +++ b/asm/battle_4.s @@ -13392,7 +13392,7 @@ sub_8022784: @ 8022784 lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag _080227D0: ldr r2, _08022824 @ =gUnknown_02024C0C ldr r1, _08022828 @ =gBitTable @@ -15716,7 +15716,7 @@ sub_8023AD8: @ 8023AD8 movs r2, 0x1D movs r3, 0xD bl sub_802BBD4 - bl sub_814A7FC + bl DestroyMenuCursor add sp, 0x4 pop {r0} bx r0 @@ -31340,7 +31340,7 @@ _0802B73C: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 movs r4, 0xA cmp r0, 0 @@ -31657,7 +31657,7 @@ sub_802B9E0: @ 802B9E0 lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 beq _0802BA2C @@ -31688,7 +31688,7 @@ _0802BA2C: lsls r0, 16 lsrs r0, 16 movs r1, 0x3 - bl sub_8090D90 + bl GetNationalPokedexFlag ldrb r0, [r6] adds r2, r0, 0 muls r2, r5 diff --git a/asm/battle_5.s b/asm/battle_5.s index 01541c120..7c3f005ff 100644 --- a/asm/battle_5.s +++ b/asm/battle_5.s @@ -190,7 +190,7 @@ sub_802C098: @ 802C098 beq _0802C13E movs r0, 0x5 bl PlaySE - bl sub_814A7FC + bl DestroyMenuCursor ldr r1, _0802C108 @ =gUnknown_02024E60 ldrb r0, [r4] adds r0, r1 @@ -398,7 +398,7 @@ _0802C278: movs r2, 0 bl dp01_build_cmdbuf_x21_a_bb bl dp01_tbl1_exec_completed - bl sub_814A7FC + bl DestroyMenuCursor b _0802C2AC .align 2, 0 _0802C294: .4byte gBattleTypeFlags @@ -484,7 +484,7 @@ _0802C32E: ands r0, r1 cmp r0, 0 beq _0802C3A8 - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x5 bl PlaySE ldr r2, _0802C394 @ =gSprites @@ -1028,7 +1028,7 @@ _0802C7B2: cmp r0, 0 bne _0802C7DC _0802C7B8: - bl sub_814A7FC + bl DestroyMenuCursor ldr r1, _0802C7D0 @ =gUnknown_02024E64 ldr r0, _0802C7D8 @ =gUnknown_02024A60 ldrb r0, [r0] @@ -1112,7 +1112,7 @@ _0802C864: ands r0, r1 cmp r0, 0 beq _0802C8A4 - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x5 bl PlaySE ldr r0, _0802C898 @ =gUnknown_030042A4 diff --git a/asm/battle_7.s b/asm/battle_7.s deleted file mode 100644 index 593a5bbb1..000000000 --- a/asm/battle_7.s +++ /dev/null @@ -1,4290 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80312F0 -sub_80312F0: @ 80312F0 - push {r4-r7,lr} - adds r6, r0, 0 - ldrh r0, [r6, 0x30] - lsls r0, 24 - lsrs r0, 24 - ldr r7, _08031334 @ =gSprites - lsls r1, r0, 4 - adds r1, r0 - lsls r5, r1, 2 - adds r3, r5, r7 - adds r0, r3, 0 - adds r0, 0x3F - ldrb r4, [r0] - lsls r0, r4, 26 - cmp r0, 0 - bge _08031354 - adds r0, r3, 0 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - blt _08031354 - adds r1, r3, 0 - adds r1, 0x2C - ldrb r2, [r1] - lsls r0, r2, 25 - cmp r0, 0 - bge _08031338 - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - b _08031354 - .align 2, 0 -_08031334: .4byte gSprites -_08031338: - lsls r0, r4, 27 - cmp r0, 0 - bge _08031354 - adds r0, r7, 0 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _0803135C @ =sub_80105DC - str r1, [r0] - adds r0, r3, 0 - movs r1, 0 - bl StartSpriteAffineAnim - ldr r0, _08031360 @ =SpriteCallbackDummy - str r0, [r6, 0x1C] -_08031354: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803135C: .4byte sub_80105DC -_08031360: .4byte SpriteCallbackDummy - thumb_func_end sub_80312F0 - - thumb_func_start unref_sub_8031364 -unref_sub_8031364: @ 8031364 - push {r4,lr} - adds r4, r0, 0 - lsls r1, 24 - adds r3, r4, 0 - adds r3, 0x2C - ldrb r0, [r3] - movs r2, 0x40 - orrs r0, r2 - strb r0, [r3] - ldr r0, _08031388 @ =SpriteCallbackDummy - str r0, [r4, 0x1C] - cmp r1, 0 - bne _0803138C - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim - b _08031394 - .align 2, 0 -_08031388: .4byte SpriteCallbackDummy -_0803138C: - adds r0, r4, 0 - movs r1, 0x1 - bl StartSpriteAffineAnim -_08031394: - adds r0, r4, 0 - bl AnimateSprite - pop {r4} - pop {r0} - bx r0 - thumb_func_end unref_sub_8031364 - - thumb_func_start sub_80313A0 -sub_80313A0: @ 80313A0 - push {lr} - adds r2, r0, 0 - ldr r0, _080313C8 @ =gUnknown_02024DE8 - ldrh r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080313C2 - ldrh r0, [r2, 0x2E] - ldrh r1, [r2, 0x24] - adds r0, r1 - strh r0, [r2, 0x24] - lsls r0, 16 - cmp r0, 0 - bne _080313C2 - ldr r0, _080313CC @ =SpriteCallbackDummy - str r0, [r2, 0x1C] -_080313C2: - pop {r0} - bx r0 - .align 2, 0 -_080313C8: .4byte gUnknown_02024DE8 -_080313CC: .4byte SpriteCallbackDummy - thumb_func_end sub_80313A0 - - thumb_func_start move_anim_start_t2_for_situation -move_anim_start_t2_for_situation: @ 80313D0 - push {r4-r6,lr} - adds r4, r1, 0 - lsls r0, 24 - ldr r5, _08031400 @ =gUnknown_02024A60 - ldrb r2, [r5] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - ldr r6, _08031404 @ =0x02017810 - adds r1, r6 - ldrb r2, [r1] - movs r3, 0x10 - orrs r2, r3 - strb r2, [r1] - cmp r0, 0 - bne _0803144C - cmp r4, 0x20 - bne _08031408 - ldrb r0, [r5] - movs r1, 0x6 - bl move_anim_start_t2 - b _080314C2 - .align 2, 0 -_08031400: .4byte gUnknown_02024A60 -_08031404: .4byte 0x02017810 -_08031408: - cmp r4, 0x8 - beq _08031414 - movs r0, 0x80 - ands r0, r4 - cmp r0, 0 - beq _0803141E -_08031414: - ldrb r0, [r5] - movs r1, 0 - bl move_anim_start_t2 - b _080314C2 -_0803141E: - cmp r4, 0x10 - bne _0803142C - ldrb r0, [r5] - movs r1, 0x2 - bl move_anim_start_t2 - b _080314C2 -_0803142C: - movs r0, 0x7 - ands r0, r4 - cmp r0, 0 - beq _0803143E - ldrb r0, [r5] - movs r1, 0x4 - bl move_anim_start_t2 - b _080314C2 -_0803143E: - cmp r4, 0x40 - bne _080314AE - ldrb r0, [r5] - movs r1, 0x5 - bl move_anim_start_t2 - b _080314C2 -_0803144C: - movs r0, 0xF0 - lsls r0, 12 - ands r0, r4 - cmp r0, 0 - beq _08031460 - ldrb r0, [r5] - movs r1, 0x3 - bl move_anim_start_t2 - b _080314C2 -_08031460: - movs r0, 0x7 - ands r0, r4 - cmp r0, 0 - beq _08031472 - ldrb r0, [r5] - movs r1, 0x1 - bl move_anim_start_t2 - b _080314C2 -_08031472: - movs r0, 0x80 - lsls r0, 21 - ands r0, r4 - cmp r0, 0 - beq _08031486 - ldrb r0, [r5] - movs r1, 0x7 - bl move_anim_start_t2 - b _080314C2 -_08031486: - movs r0, 0x80 - lsls r0, 20 - ands r0, r4 - cmp r0, 0 - beq _0803149A - ldrb r0, [r5] - movs r1, 0x8 - bl move_anim_start_t2 - b _080314C2 -_0803149A: - movs r0, 0xE0 - lsls r0, 8 - ands r0, r4 - cmp r0, 0 - beq _080314AE - ldrb r0, [r5] - movs r1, 0x9 - bl move_anim_start_t2 - b _080314C2 -_080314AE: - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - strb r0, [r1] -_080314C2: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end move_anim_start_t2_for_situation - - thumb_func_start move_anim_start_t3 -move_anim_start_t3: @ 80314C8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - ldr r4, [sp, 0x20] - lsls r0, 24 - lsrs r6, r0, 24 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - lsls r2, 24 - lsrs r2, 24 - mov r10, r2 - lsls r3, 24 - lsrs r5, r3, 24 - lsls r4, 16 - lsrs r7, r4, 16 - cmp r5, 0 - bne _0803150C - movs r0, 0x80 - ands r0, r7 - cmp r0, 0 - beq _0803150C - ldr r0, _08031508 @ =gBattleMonForms - adds r0, r6, r0 - movs r2, 0x7F - adds r1, r7, 0 - ands r1, r2 - strb r1, [r0] - movs r0, 0x1 - b _080315C2 - .align 2, 0 -_08031508: .4byte gBattleMonForms -_0803150C: - lsls r1, r6, 2 - ldr r0, _08031530 @ =0x02017800 - adds r4, r1, r0 - ldrb r1, [r4] - movs r0, 0x4 - mov r8, r0 - ands r0, r1 - cmp r0, 0 - beq _08031578 - adds r0, r5, 0 - bl sub_803163C - lsls r0, 24 - cmp r0, 0 - bne _08031534 - movs r0, 0x1 - b _080315C2 - .align 2, 0 -_08031530: .4byte 0x02017800 -_08031534: - ldrb r1, [r4] - mov r0, r8 - ands r0, r1 - cmp r0, 0 - beq _08031578 - cmp r5, 0x2 - bne _08031578 - ldr r1, _08031570 @ =gSprites - ldr r0, _08031574 @ =gUnknown_02024BE0 - adds r0, r6, r0 - ldrb r2, [r0] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 29 - cmp r0, 0 - bge _08031578 - adds r0, r6, 0 - movs r1, 0x1 - bl refresh_graphics_maybe - adds r0, r6, 0 - bl sub_80324E0 - movs r0, 0x1 - b _080315C2 - .align 2, 0 -_08031570: .4byte gSprites -_08031574: .4byte gUnknown_02024BE0 -_08031578: - ldr r0, _080315D0 @ =gBattleAnimPlayerMonIndex - mov r1, r9 - strb r1, [r0] - ldr r0, _080315D4 @ =gBattleAnimEnemyMonIndex - mov r1, r10 - strb r1, [r0] - ldr r4, _080315D8 @ =0x02017840 - strh r7, [r4] - ldr r0, _080315DC @ =gBattleAnims_Unknown1 - adds r1, r5, 0 - movs r2, 0 - bl DoMoveAnim - ldr r0, _080315E0 @ =sub_80315E8 - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080315E4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r6, [r1, 0x8] - movs r0, 0x8 - ldrsh r1, [r1, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - subs r4, 0x30 - adds r0, r4 - ldrb r1, [r0] - movs r2, 0x20 - orrs r1, r2 - strb r1, [r0] - movs r0, 0 -_080315C2: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080315D0: .4byte gBattleAnimPlayerMonIndex -_080315D4: .4byte gBattleAnimEnemyMonIndex -_080315D8: .4byte 0x02017840 -_080315DC: .4byte gBattleAnims_Unknown1 -_080315E0: .4byte sub_80315E8 -_080315E4: .4byte gTasks - thumb_func_end move_anim_start_t3 - - thumb_func_start sub_80315E8 -sub_80315E8: @ 80315E8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0803162C @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08031630 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _08031626 - ldr r1, _08031634 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _08031638 @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x21 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_08031626: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0803162C: .4byte gAnimScriptCallback -_08031630: .4byte gAnimScriptActive -_08031634: .4byte gTasks -_08031638: .4byte 0x02017810 - thumb_func_end sub_80315E8 - - thumb_func_start sub_803163C -sub_803163C: @ 803163C - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xD - bgt _08031650 - cmp r0, 0xA - bge _08031654 - cmp r0, 0x2 - beq _08031654 - b _08031658 -_08031650: - cmp r0, 0x11 - bne _08031658 -_08031654: - movs r0, 0x1 - b _0803165A -_08031658: - movs r0, 0 -_0803165A: - pop {r1} - bx r1 - thumb_func_end sub_803163C - - thumb_func_start move_anim_start_t4 -move_anim_start_t4: @ 8031660 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _080316B4 @ =gBattleAnimPlayerMonIndex - strb r1, [r0] - ldr r0, _080316B8 @ =gBattleAnimEnemyMonIndex - strb r2, [r0] - ldr r0, _080316BC @ =gBattleAnims_Unknown2 - adds r1, r3, 0 - movs r2, 0 - bl DoMoveAnim - ldr r0, _080316C0 @ =sub_80316CC - movs r1, 0xA - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080316C4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - movs r0, 0x8 - ldrsh r1, [r1, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080316C8 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r2, 0x40 - orrs r1, r2 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080316B4: .4byte gBattleAnimPlayerMonIndex -_080316B8: .4byte gBattleAnimEnemyMonIndex -_080316BC: .4byte gBattleAnims_Unknown2 -_080316C0: .4byte sub_80316CC -_080316C4: .4byte gTasks -_080316C8: .4byte 0x02017810 - thumb_func_end move_anim_start_t4 - - thumb_func_start sub_80316CC -sub_80316CC: @ 80316CC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _08031710 @ =gAnimScriptCallback - ldr r0, [r0] - bl _call_via_r0 - ldr r0, _08031714 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _0803170A - ldr r1, _08031718 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x8 - ldrsh r0, [r0, r1] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _0803171C @ =0x02017810 - adds r1, r0 - ldrb r2, [r1] - movs r0, 0x41 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0803170A: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031710: .4byte gAnimScriptCallback -_08031714: .4byte gAnimScriptActive -_08031718: .4byte gTasks -_0803171C: .4byte 0x02017810 - thumb_func_end sub_80316CC - - thumb_func_start sub_8031720 -sub_8031720: @ 8031720 - movs r0, 0 - bx lr - thumb_func_end sub_8031720 - - thumb_func_start mplay_80342A4 -mplay_80342A4: @ 8031724 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r5, 0 - bl IsSEPlaying - lsls r0, 24 - cmp r0, 0 - beq _08031764 - lsls r1, r4, 1 - adds r1, r4 - lsls r1, 2 - ldr r2, _0803176C @ =0x02017810 - adds r1, r2 - ldrb r0, [r1, 0x8] - adds r0, 0x1 - strb r0, [r1, 0x8] - ldr r0, _08031770 @ =gUnknown_02024A60 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0, 0x8] - cmp r0, 0x1D - bls _08031768 - ldr r0, _08031774 @ =gMPlay_SE1 - bl m4aMPlayStop - ldr r0, _08031778 @ =gMPlay_SE2 - bl m4aMPlayStop -_08031764: - cmp r5, 0 - beq _0803177C -_08031768: - movs r0, 0x1 - b _0803178A - .align 2, 0 -_0803176C: .4byte 0x02017810 -_08031770: .4byte gUnknown_02024A60 -_08031774: .4byte gMPlay_SE1 -_08031778: .4byte gMPlay_SE2 -_0803177C: - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - ldr r1, _08031790 @ =0x02017810 - adds r0, r1 - strb r5, [r0, 0x8] - movs r0, 0 -_0803178A: - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_08031790: .4byte 0x02017810 - thumb_func_end mplay_80342A4 - - thumb_func_start sub_8031794 -sub_8031794: @ 8031794 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r1, 0 - bl GetMonData - str r0, [sp, 0xC] - mov r0, r9 - lsls r1, r0, 2 - ldr r0, _080317D0 @ =0x02017800 - adds r2, r1, r0 - ldrh r0, [r2, 0x2] - cmp r0, 0 - bne _080317D4 - mov r0, r8 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - ldr r7, [sp, 0xC] - b _080317DC - .align 2, 0 -_080317D0: .4byte 0x02017800 -_080317D4: - ldrh r6, [r2, 0x2] - ldr r0, _08031838 @ =gUnknown_02024E70 - adds r0, r1, r0 - ldr r7, [r0] -_080317DC: - mov r0, r8 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - mov r0, r9 - bl battle_get_per_side_status - lsls r0, 24 - lsls r5, r6, 3 - ldr r1, _0803183C @ =gMonFrontPicTable - adds r5, r1 - ldr r1, _08031840 @ =gMonFrontPicCoords - lsls r2, r6, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08031844 @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - str r6, [sp, 0x4] - str r7, [sp, 0x8] - adds r0, r5, 0 - bl HandleLoadSpecialPokePic - mov r1, r9 - lsls r2, r1, 4 - movs r0, 0x80 - lsls r0, 1 - adds r7, r2, r0 - lsls r1, 2 - ldr r0, _08031848 @ =0x02017800 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - str r1, [sp, 0x10] - adds r4, r2, 0 - cmp r0, 0 - bne _0803184C - mov r0, r8 - bl pokemon_get_pal - b _08031856 - .align 2, 0 -_08031838: .4byte gUnknown_02024E70 -_0803183C: .4byte gMonFrontPicTable -_08031840: .4byte gMonFrontPicCoords -_08031844: .4byte gUnknown_081FAF4C -_08031848: .4byte 0x02017800 -_0803184C: - adds r0, r6, 0 - mov r1, r10 - ldr r2, [sp, 0xC] - bl species_and_otid_get_pal -_08031856: - adds r5, r0, 0 - ldr r1, _080318E0 @ =0x02000000 - mov r8, r1 - adds r0, r5, 0 - bl sub_800D238 - mov r0, r8 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette - adds r1, r4, 0 - adds r1, 0x80 - mov r0, r8 - movs r2, 0x20 - bl LoadPalette - ldr r0, _080318E4 @ =SPECIES_CASTFORM - cmp r6, r0 - bne _080318A2 - subs r0, 0x81 - adds r7, r4, r0 - movs r4, 0xB2 - lsls r4, 9 - add r4, r8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_800D238 - ldr r0, _080318E8 @ =gBattleMonForms - add r0, r9 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r4 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette -_080318A2: - movs r0, 0xBC - lsls r0, 9 - add r0, r8 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _080318CE - ldr r3, _080318EC @ =0x00007fff - adds r0, r7, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r7, 1 - ldr r0, _080318F0 @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _080318F4 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _080318F8 @ =REG_BG0CNT - bl CpuSet -_080318CE: - 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 -_080318E0: .4byte 0x02000000 -_080318E4: .4byte SPECIES_CASTFORM -_080318E8: .4byte gBattleMonForms -_080318EC: .4byte 0x00007fff -_080318F0: .4byte gPlttBufferFaded -_080318F4: .4byte gPlttBufferUnfaded -_080318F8: .4byte REG_BG0CNT - thumb_func_end sub_8031794 - - thumb_func_start sub_80318FC -sub_80318FC: @ 80318FC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - mov r9, r1 - movs r1, 0 - bl GetMonData - str r0, [sp, 0xC] - mov r0, r9 - lsls r1, r0, 2 - ldr r0, _08031938 @ =0x02017800 - adds r2, r1, r0 - ldrh r0, [r2, 0x2] - cmp r0, 0 - bne _0803193C - mov r0, r8 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - ldr r7, [sp, 0xC] - b _08031944 - .align 2, 0 -_08031938: .4byte 0x02017800 -_0803193C: - ldrh r6, [r2, 0x2] - ldr r0, _080319A0 @ =gUnknown_02024E70 - adds r0, r1, r0 - ldr r7, [r0] -_08031944: - mov r0, r8 - movs r1, 0x1 - bl GetMonData - mov r10, r0 - mov r0, r9 - bl battle_get_per_side_status - lsls r0, 24 - lsls r5, r6, 3 - ldr r1, _080319A4 @ =gMonBackPicTable - adds r5, r1 - ldr r1, _080319A8 @ =gMonBackPicCoords - lsls r2, r6, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _080319AC @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - str r6, [sp, 0x4] - str r7, [sp, 0x8] - adds r0, r5, 0 - bl HandleLoadSpecialPokePic - mov r1, r9 - lsls r2, r1, 4 - movs r0, 0x80 - lsls r0, 1 - adds r7, r2, r0 - lsls r1, 2 - ldr r0, _080319B0 @ =0x02017800 - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - str r1, [sp, 0x10] - adds r4, r2, 0 - cmp r0, 0 - bne _080319B4 - mov r0, r8 - bl pokemon_get_pal - b _080319BE - .align 2, 0 -_080319A0: .4byte gUnknown_02024E70 -_080319A4: .4byte gMonBackPicTable -_080319A8: .4byte gMonBackPicCoords -_080319AC: .4byte gUnknown_081FAF4C -_080319B0: .4byte 0x02017800 -_080319B4: - adds r0, r6, 0 - mov r1, r10 - ldr r2, [sp, 0xC] - bl species_and_otid_get_pal -_080319BE: - adds r5, r0, 0 - ldr r1, _08031A48 @ =0x02000000 - mov r8, r1 - adds r0, r5, 0 - bl sub_800D238 - mov r0, r8 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette - adds r1, r4, 0 - adds r1, 0x80 - mov r0, r8 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08031A4C @ =SPECIES_CASTFORM - cmp r6, r0 - bne _08031A0A - subs r0, 0x81 - adds r7, r4, r0 - movs r4, 0xB2 - lsls r4, 9 - add r4, r8 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_800D238 - ldr r0, _08031A50 @ =gBattleMonForms - add r0, r9 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r4 - adds r1, r7, 0 - movs r2, 0x20 - bl LoadPalette -_08031A0A: - movs r0, 0xBC - lsls r0, 9 - add r0, r8 - ldr r1, [sp, 0x10] - adds r0, r1, r0 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _08031A36 - ldr r3, _08031A54 @ =0x00007fff - adds r0, r7, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r7, 1 - ldr r0, _08031A58 @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _08031A5C @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _08031A60 @ =REG_BG0CNT - bl CpuSet -_08031A36: - 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 -_08031A48: .4byte 0x02000000 -_08031A4C: .4byte SPECIES_CASTFORM -_08031A50: .4byte gBattleMonForms -_08031A54: .4byte 0x00007fff -_08031A58: .4byte gPlttBufferFaded -_08031A5C: .4byte gPlttBufferUnfaded -_08031A60: .4byte REG_BG0CNT - thumb_func_end sub_80318FC - - thumb_func_start unref_sub_8031A64 -unref_sub_8031A64: @ 8031A64 - bx lr - thumb_func_end unref_sub_8031A64 - - thumb_func_start nullsub_9 -nullsub_9: @ 8031A68 - bx lr - thumb_func_end nullsub_9 - - thumb_func_start sub_8031A6C -sub_8031A6C: @ 8031A6C - push {r4-r6,lr} - sub sp, 0x10 - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r0, 24 - lsrs r0, 24 - bl battle_get_per_side_status - lsls r0, 24 - lsls r6, r4, 3 - ldr r5, _08031ADC @ =gTrainerFrontPicTable - adds r5, r6, r5 - ldr r1, _08031AE0 @ =gTrainerFrontPicCoords - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08031AE4 @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r4, [r0] - str r4, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r5, 0 - bl DecompressPicFromTable_2 - str r4, [sp, 0x8] - ldrh r2, [r5, 0x4] - ldr r0, _08031AE8 @ =0xffff0000 - ldr r1, [sp, 0xC] - ands r1, r0 - orrs r1, r2 - str r1, [sp, 0xC] - ldrh r2, [r5, 0x6] - lsls r2, 16 - ldr r0, _08031AEC @ =0x0000ffff - ands r0, r1 - orrs r0, r2 - str r0, [sp, 0xC] - add r0, sp, 0x8 - bl LoadCompressedObjectPic - ldr r0, _08031AF0 @ =gTrainerFrontPicPaletteTable - adds r6, r0 - adds r0, r6, 0 - bl LoadCompressedObjectPalette - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08031ADC: .4byte gTrainerFrontPicTable -_08031AE0: .4byte gTrainerFrontPicCoords -_08031AE4: .4byte gUnknown_081FAF4C -_08031AE8: .4byte 0xffff0000 -_08031AEC: .4byte 0x0000ffff -_08031AF0: .4byte gTrainerFrontPicPaletteTable - thumb_func_end sub_8031A6C - - thumb_func_start sub_8031AF4 -sub_8031AF4: @ 8031AF4 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 16 - lsrs r4, 16 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - bl battle_get_per_side_status - lsls r0, 24 - lsls r1, r4, 3 - mov r8, r1 - ldr r6, _08031B60 @ =gTrainerBackPicTable - add r6, r8 - ldr r1, _08031B64 @ =gTrainerBackPicCoords - lsls r4, 2 - adds r4, r1 - ldrb r1, [r4] - ldrb r2, [r4, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08031B68 @ =gUnknown_081FAF4C - lsrs r0, 22 - adds r0, r4 - ldr r0, [r0] - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - adds r0, r6, 0 - bl DecompressPicFromTable_2 - ldr r0, _08031B6C @ =gTrainerBackPicPaletteTable - add r8, r0 - mov r1, r8 - ldr r0, [r1] - lsls r5, 20 - movs r1, 0x80 - lsls r1, 17 - adds r5, r1 - lsrs r5, 16 - adds r1, r5, 0 - movs r2, 0x20 - bl LoadCompressedPalette - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08031B60: .4byte gTrainerBackPicTable -_08031B64: .4byte gTrainerBackPicCoords -_08031B68: .4byte gUnknown_081FAF4C -_08031B6C: .4byte gTrainerBackPicPaletteTable - thumb_func_end sub_8031AF4 - - thumb_func_start nullsub_10 -nullsub_10: @ 8031B70 - bx lr - thumb_func_end nullsub_10 - - thumb_func_start sub_8031B74 -sub_8031B74: @ 8031B74 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - ldr r0, _08031B98 @ =gTrainerFrontPicPaletteTable - lsrs r4, 13 - adds r0, r4, r0 - ldrh r0, [r0, 0x4] - bl FreeSpritePaletteByTag - ldr r0, _08031B9C @ =gTrainerFrontPicTable - adds r4, r0 - ldrh r0, [r4, 0x6] - bl FreeSpriteTilesByTag - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031B98: .4byte gTrainerFrontPicPaletteTable -_08031B9C: .4byte gTrainerFrontPicTable - thumb_func_end sub_8031B74 - - thumb_func_start unref_sub_8031BA0 -unref_sub_8031BA0: @ 8031BA0 - push {r4-r7,lr} - ldr r4, _08031BCC @ =gUnknown_0820A4D4 - adds r0, r4, 0 - bl LoadSpritePalette - adds r4, 0x8 - adds r0, r4, 0 - bl LoadSpritePalette - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08031BD8 - ldr r0, _08031BD0 @ =gUnknown_0820A47C - bl LoadCompressedObjectPic - ldr r0, _08031BD4 @ =gUnknown_0820A484 - bl LoadCompressedObjectPic - movs r5, 0x2 - b _08031BFA - .align 2, 0 -_08031BCC: .4byte gUnknown_0820A4D4 -_08031BD0: .4byte gUnknown_0820A47C -_08031BD4: .4byte gUnknown_0820A484 -_08031BD8: - ldr r4, _08031C20 @ =gUnknown_0820A48C - adds r0, r4, 0 - bl LoadCompressedObjectPic - adds r4, 0x8 - adds r0, r4, 0 - bl LoadCompressedObjectPic - ldr r4, _08031C24 @ =gUnknown_0820A49C - adds r0, r4, 0 - bl LoadCompressedObjectPic - adds r4, 0x8 - adds r0, r4, 0 - bl LoadCompressedObjectPic - movs r5, 0x4 -_08031BFA: - movs r4, 0 - cmp r4, r5 - bcs _08031C1A - ldr r7, _08031C28 @ =gUnknown_02024A72 - ldr r6, _08031C2C @ =gUnknown_0820A4B4 -_08031C04: - adds r0, r4, r7 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r6 - bl LoadCompressedObjectPic - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, r5 - bcc _08031C04 -_08031C1A: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031C20: .4byte gUnknown_0820A48C -_08031C24: .4byte gUnknown_0820A49C -_08031C28: .4byte gUnknown_02024A72 -_08031C2C: .4byte gUnknown_0820A4B4 - thumb_func_end unref_sub_8031BA0 - - thumb_func_start sub_8031C30 -sub_8031C30: @ 8031C30 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - movs r6, 0 - cmp r4, 0 - bne _08031C40 - b _08031D52 -_08031C40: - cmp r4, 0x1 - bne _08031C5C - ldr r4, _08031C58 @ =gUnknown_0820A4D4 - adds r0, r4, 0 - bl LoadSpritePalette - adds r4, 0x8 - adds r0, r4, 0 - bl LoadSpritePalette - b _08031D52 - .align 2, 0 -_08031C58: .4byte gUnknown_0820A4D4 -_08031C5C: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08031CC4 - cmp r4, 0x2 - bne _08031C94 - ldr r0, _08031C80 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08031C88 - ldr r0, _08031C84 @ =gUnknown_0820A4AC - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031C80: .4byte gBattleTypeFlags -_08031C84: .4byte gUnknown_0820A4AC -_08031C88: - ldr r0, _08031C90 @ =gUnknown_0820A47C - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031C90: .4byte gUnknown_0820A47C -_08031C94: - cmp r4, 0x3 - bne _08031CA4 - ldr r0, _08031CA0 @ =gUnknown_0820A484 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CA0: .4byte gUnknown_0820A484 -_08031CA4: - cmp r4, 0x4 - bne _08031CB4 - ldr r0, _08031CB0 @ =gUnknown_02024A72 - ldrb r0, [r0] - b _08031D3C - .align 2, 0 -_08031CB0: .4byte gUnknown_02024A72 -_08031CB4: - cmp r4, 0x5 - bne _08031D50 - ldr r0, _08031CC0 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x1] - b _08031D3C - .align 2, 0 -_08031CC0: .4byte gUnknown_02024A72 -_08031CC4: - cmp r4, 0x2 - bne _08031CD4 - ldr r0, _08031CD0 @ =gUnknown_0820A48C - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CD0: .4byte gUnknown_0820A48C -_08031CD4: - cmp r4, 0x3 - bne _08031CE4 - ldr r0, _08031CE0 @ =gUnknown_0820A494 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CE0: .4byte gUnknown_0820A494 -_08031CE4: - cmp r4, 0x4 - bne _08031CF4 - ldr r0, _08031CF0 @ =gUnknown_0820A49C - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031CF0: .4byte gUnknown_0820A49C -_08031CF4: - cmp r4, 0x5 - bne _08031D04 - ldr r0, _08031D00 @ =gUnknown_0820A4A4 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031D00: .4byte gUnknown_0820A4A4 -_08031D04: - cmp r4, 0x6 - bne _08031D14 - ldr r0, _08031D10 @ =gUnknown_02024A72 - ldrb r0, [r0] - b _08031D3C - .align 2, 0 -_08031D10: .4byte gUnknown_02024A72 -_08031D14: - cmp r4, 0x7 - bne _08031D24 - ldr r0, _08031D20 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x1] - b _08031D3C - .align 2, 0 -_08031D20: .4byte gUnknown_02024A72 -_08031D24: - cmp r4, 0x8 - bne _08031D34 - ldr r0, _08031D30 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x2] - b _08031D3C - .align 2, 0 -_08031D30: .4byte gUnknown_02024A72 -_08031D34: - cmp r5, 0x9 - bne _08031D50 - ldr r0, _08031D48 @ =gUnknown_02024A72 - ldrb r0, [r0, 0x3] -_08031D3C: - lsls r0, 3 - ldr r1, _08031D4C @ =gUnknown_0820A4B4 - adds r0, r1 - bl LoadCompressedObjectPic - b _08031D52 - .align 2, 0 -_08031D48: .4byte gUnknown_02024A72 -_08031D4C: .4byte gUnknown_0820A4B4 -_08031D50: - movs r6, 0x1 -_08031D52: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8031C30 - - thumb_func_start load_gfxc_health_bar -load_gfxc_health_bar: @ 8031D5C - push {lr} - ldr r0, _08031D6C @ =gUnknown_08D09C48 - movs r1, 0x80 - lsls r1, 18 - bl sub_800D238 - pop {r0} - bx r0 - .align 2, 0 -_08031D6C: .4byte gUnknown_08D09C48 - thumb_func_end load_gfxc_health_bar - - thumb_func_start battle_load_something -battle_load_something: @ 8031D70 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r6, 0 - ldrb r0, [r5] - cmp r0, 0x6 - bls _08031D80 - b _08031EDE -_08031D80: - lsls r0, 2 - ldr r1, _08031D8C @ =_08031D90 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08031D8C: .4byte _08031D90 - .align 2, 0 -_08031D90: - .4byte _08031DAC - .4byte _08031DB2 - .4byte _08031EBC - .4byte _08031DC8 - .4byte _08031DF8 - .4byte _08031E34 - .4byte _08031ED4 -_08031DAC: - bl sub_8031F0C - b _08031EBC -_08031DB2: - ldrb r0, [r4] - bl sub_8031C30 - lsls r0, 24 - cmp r0, 0 - beq _08031DC0 - b _08031EB8 -_08031DC0: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - b _08031EDE -_08031DC8: - ldr r0, _08031DE0 @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08031DE4 - ldrb r0, [r4] - cmp r0, 0 - bne _08031DE4 - bl battle_make_oam_safari_battle - b _08031DEA - .align 2, 0 -_08031DE0: .4byte gBattleTypeFlags -_08031DE4: - ldrb r0, [r4] - bl battle_make_oam_normal_battle -_08031DEA: - ldr r2, _08031DF4 @ =gUnknown_03004340 - ldrb r1, [r4] - adds r1, r2 - strb r0, [r1] - b _08031EA6 - .align 2, 0 -_08031DF4: .4byte gUnknown_03004340 -_08031DF8: - ldrb r0, [r4] - bl sub_8043F44 - ldr r0, _08031E18 @ =gUnknown_02024A72 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0x1 - bhi _08031E20 - ldr r0, _08031E1C @ =gUnknown_03004340 - adds r0, r1, r0 - ldrb r0, [r0] - movs r1, 0 - bl nullsub_11 - b _08031EA6 - .align 2, 0 -_08031E18: .4byte gUnknown_02024A72 -_08031E1C: .4byte gUnknown_03004340 -_08031E20: - ldr r0, _08031E30 @ =gUnknown_03004340 - adds r0, r1, r0 - ldrb r0, [r0] - movs r1, 0x1 - bl nullsub_11 - b _08031EA6 - .align 2, 0 -_08031E30: .4byte gUnknown_03004340 -_08031E34: - ldrb r0, [r4] - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _08031E7C - ldr r0, _08031E6C @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08031E9A - ldr r0, _08031E70 @ =gUnknown_03004340 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08031E74 @ =gUnknown_02024A6A - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08031E78 @ =gPlayerParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - b _08031E9A - .align 2, 0 -_08031E6C: .4byte gBattleTypeFlags -_08031E70: .4byte gUnknown_03004340 -_08031E74: .4byte gUnknown_02024A6A -_08031E78: .4byte gPlayerParty -_08031E7C: - ldr r0, _08031EC4 @ =gUnknown_03004340 - ldrb r1, [r4] - adds r0, r1, r0 - ldrb r0, [r0] - ldr r2, _08031EC8 @ =gUnknown_02024A6A - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _08031ECC @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C -_08031E9A: - ldr r1, _08031EC4 @ =gUnknown_03004340 - ldrb r0, [r4] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 -_08031EA6: - ldrb r0, [r4] - adds r0, 0x1 - strb r0, [r4] - ldr r1, _08031ED0 @ =gUnknown_02024A68 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _08031EDE -_08031EB8: - movs r0, 0 - strb r0, [r4] -_08031EBC: - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] - b _08031EDE - .align 2, 0 -_08031EC4: .4byte gUnknown_03004340 -_08031EC8: .4byte gUnknown_02024A6A -_08031ECC: .4byte gEnemyParty -_08031ED0: .4byte gUnknown_02024A68 -_08031ED4: - bl sub_80327CC - bl sub_8094958 - movs r6, 0x1 -_08031EDE: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end battle_load_something - - thumb_func_start sub_8031EE8 -sub_8031EE8: @ 8031EE8 - push {r4,lr} - ldr r4, _08031F08 @ =0x02017810 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x30 - bl memset - adds r4, 0x30 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - bl memset - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08031F08: .4byte 0x02017810 - thumb_func_end sub_8031EE8 - - thumb_func_start sub_8031F0C -sub_8031F0C: @ 8031F0C - push {lr} - bl sub_8031EE8 - ldr r0, _08031F20 @ =0x02017800 - movs r1, 0 - movs r2, 0x10 - bl memset - pop {r0} - bx r0 - .align 2, 0 -_08031F20: .4byte 0x02017800 - thumb_func_end sub_8031F0C - - thumb_func_start sub_8031F24 -sub_8031F24: @ 8031F24 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - ldr r5, _08031F78 @ =gUnknown_02024A68 - ldrb r0, [r5] - cmp r4, r0 - bge _08031F6E - ldr r0, _08031F7C @ =gSprites - mov r8, r0 - movs r7, 0x1 - movs r0, 0x2 - negs r0, r0 - mov r12, r0 - ldr r6, _08031F80 @ =gUnknown_02024BE0 - ldr r3, _08031F84 @ =0x02017800 -_08031F44: - adds r0, r4, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - ands r1, r7 - ldrb r2, [r3] - mov r0, r12 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - adds r3, 0x4 - adds r4, 0x1 - ldrb r0, [r5] - cmp r4, r0 - blt _08031F44 -_08031F6E: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08031F78: .4byte gUnknown_02024A68 -_08031F7C: .4byte gSprites -_08031F80: .4byte gUnknown_02024BE0 -_08031F84: .4byte 0x02017800 - thumb_func_end sub_8031F24 - - thumb_func_start sub_8031F88 -sub_8031F88: @ 8031F88 - lsls r0, 24 - lsrs r0, 24 - lsls r3, r0, 2 - ldr r1, _08031FB8 @ =0x02017800 - adds r3, r1 - ldr r2, _08031FBC @ =gSprites - ldr r1, _08031FC0 @ =gUnknown_02024BE0 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r1, [r0] - lsls r1, 29 - lsrs r1, 31 - ldrb r2, [r3] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] - bx lr - .align 2, 0 -_08031FB8: .4byte 0x02017800 -_08031FBC: .4byte gSprites -_08031FC0: .4byte gUnknown_02024BE0 - thumb_func_end sub_8031F88 - - thumb_func_start sub_8031FC4 -sub_8031FC4: @ 8031FC4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r1, 24 - str r1, [sp, 0xC] - lsls r2, 24 - cmp r2, 0 - beq _08032088 - ldr r0, _08032064 @ =gUnknown_02024BE0 - mov r1, r8 - adds r6, r1, r0 - ldrb r1, [r6] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r7, _08032068 @ =gSprites - adds r0, r7 - ldr r4, _0803206C @ =0x02017840 - ldrb r1, [r4] - bl StartSpriteAnim - mov r2, r8 - lsls r0, r2, 20 - movs r5, 0x80 - lsls r5, 17 - adds r0, r5 - lsrs r5, r0, 16 - ldrh r0, [r4] - lsls r0, 5 - ldr r2, _08032070 @ =0xffffebc0 - adds r1, r4, r2 - adds r0, r1 - adds r1, r5, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08032074 @ =gBattleMonForms - add r0, r8 - ldrh r1, [r4] - strb r1, [r0] - mov r1, r8 - lsls r0, r1, 2 - subs r4, 0x40 - adds r0, r4 - ldrh r0, [r0, 0x2] - cmp r0, 0 - beq _0803204C - ldr r3, _08032078 @ =0x00007fff - adds r0, r5, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r5, 1 - ldr r0, _0803207C @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _08032080 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _08032084 @ =REG_BG0CNT - bl CpuSet -_0803204C: - mov r0, r8 - bl sub_8077F68 - ldrb r2, [r6] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - adds r1, r7 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x22] - b _080322F6 - .align 2, 0 -_08032064: .4byte gUnknown_02024BE0 -_08032068: .4byte gSprites -_0803206C: .4byte 0x02017840 -_08032070: .4byte 0xffffebc0 -_08032074: .4byte gBattleMonForms -_08032078: .4byte 0x00007fff -_0803207C: .4byte gPlttBufferFaded -_08032080: .4byte gPlttBufferUnfaded -_08032084: .4byte REG_BG0CNT -_08032088: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _080320D0 - movs r2, 0 - mov r10, r2 - ldr r5, _080320C0 @ =0x02019348 - ldrh r7, [r5, 0x2] - ldr r4, [r5, 0x8] - mov r9, r4 - ldr r6, [r5, 0xC] - lsls r0, r7, 3 - ldr r1, _080320C4 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _080320C8 @ =gMonBackPicCoords - lsls r2, r7, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _080320CC @ =gUnknown_081FAF4C - ldr r4, [r4] - str r4, [sp] - str r7, [sp, 0x4] - ldr r4, [r5, 0x10] - b _08032184 - .align 2, 0 -_080320C0: .4byte 0x02019348 -_080320C4: .4byte gMonBackPicTable -_080320C8: .4byte gMonBackPicCoords -_080320CC: .4byte gUnknown_081FAF4C -_080320D0: - mov r0, r8 - bl battle_get_per_side_status - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r0, [sp, 0xC] - bl battle_side_get_owner - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08032104 - ldr r1, _080320FC @ =gUnknown_02024A6A - ldr r5, [sp, 0xC] - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08032100 @ =gEnemyParty - b _08032114 - .align 2, 0 -_080320FC: .4byte gUnknown_02024A6A -_08032100: .4byte gEnemyParty -_08032104: - ldr r1, _0803218C @ =gUnknown_02024A6A - ldr r2, [sp, 0xC] - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08032190 @ =gPlayerParty -_08032114: - adds r0, r1 - movs r1, 0xB - bl GetMonData - lsls r0, 16 - lsrs r7, r0, 16 - mov r0, r8 - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - bne _080321A4 - ldr r0, _0803218C @ =gUnknown_02024A6A - mov r5, r8 - lsls r4, r5, 1 - adds r4, r0 - ldrh r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r5, _08032190 @ =gPlayerParty - adds r0, r5 - movs r1, 0 - bl GetMonData - mov r9, r0 - ldrh r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - adds r6, r0, 0 - lsls r0, r7, 3 - ldr r1, _08032194 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _08032198 @ =gMonBackPicCoords - lsls r2, r7, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _0803219C @ =gUnknown_081FAF4C - mov r12, r4 - mov r5, r10 - lsls r4, r5, 2 - add r4, r12 - ldr r4, [r4] - str r4, [sp] - str r7, [sp, 0x4] - ldr r4, _080321A0 @ =gUnknown_02024E70 - mov r12, r4 - mov r5, r8 - lsls r4, r5, 2 - add r4, r12 - ldr r4, [r4] -_08032184: - str r4, [sp, 0x8] - bl HandleLoadSpecialPokePic - b _08032202 - .align 2, 0 -_0803218C: .4byte gUnknown_02024A6A -_08032190: .4byte gPlayerParty -_08032194: .4byte gMonBackPicTable -_08032198: .4byte gMonBackPicCoords -_0803219C: .4byte gUnknown_081FAF4C -_080321A0: .4byte gUnknown_02024E70 -_080321A4: - ldr r0, _08032308 @ =gUnknown_02024A6A - mov r1, r8 - lsls r4, r1, 1 - adds r4, r0 - ldrh r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r5, _0803230C @ =gEnemyParty - adds r0, r5 - movs r1, 0 - bl GetMonData - mov r9, r0 - ldrh r0, [r4] - muls r0, r6 - adds r0, r5 - movs r1, 0x1 - bl GetMonData - adds r6, r0, 0 - lsls r0, r7, 3 - ldr r1, _08032310 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _08032314 @ =gMonFrontPicCoords - lsls r2, r7, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _08032318 @ =gUnknown_081FAF4C - mov r12, r4 - mov r5, r10 - lsls r4, r5, 2 - add r4, r12 - ldr r4, [r4] - str r4, [sp] - str r7, [sp, 0x4] - ldr r4, _0803231C @ =gUnknown_02024E70 - mov r12, r4 - mov r5, r8 - lsls r4, r5, 2 - add r4, r12 - ldr r4, [r4] - str r4, [sp, 0x8] - bl HandleLoadSpecialPokePic -_08032202: - ldr r1, _08032318 @ =gUnknown_081FAF4C - mov r2, r10 - lsls r0, r2, 2 - adds r0, r1 - ldr r2, [r0] - ldr r0, _08032320 @ =gUnknown_02024BE0 - add r0, r8 - mov r10, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _08032324 @ =gSprites - adds r0, r4 - ldrh r0, [r0, 0x4] - lsls r0, 22 - lsrs r0, 17 - ldr r1, _08032328 @ =0x06010000 - adds r0, r1 - ldr r1, _0803232C @ =0x040000d4 - str r2, [r1] - str r0, [r1, 0x4] - ldr r0, _08032330 @ =0x84000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - mov r5, r8 - lsls r0, r5, 20 - movs r1, 0x80 - lsls r1, 17 - adds r0, r1 - lsrs r5, r0, 16 - adds r0, r7, 0 - adds r1, r6, 0 - mov r2, r9 - bl species_and_otid_get_pal - adds r6, r0, 0 - ldr r2, _08032334 @ =0x02000000 - mov r9, r2 - mov r1, r9 - bl sub_800D238 - mov r0, r9 - adds r1, r5, 0 - movs r2, 0x20 - bl LoadPalette - ldr r0, _08032338 @ =SPECIES_CASTFORM - cmp r7, r0 - bne _08032288 - movs r4, 0xB2 - lsls r4, 9 - add r4, r9 - adds r0, r6, 0 - adds r1, r4, 0 - bl sub_800D238 - ldr r0, _0803233C @ =gBattleMonForms - ldr r1, [sp, 0xC] - adds r0, r1, r0 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r4 - adds r1, r5, 0 - movs r2, 0x20 - bl LoadPalette -_08032288: - ldr r3, _08032340 @ =0x00007fff - adds r0, r5, 0 - movs r1, 0x10 - movs r2, 0x6 - bl BlendPalette - lsls r1, r5, 1 - ldr r0, _08032344 @ =gPlttBufferFaded - adds r0, r1, r0 - ldr r2, _08032348 @ =gPlttBufferUnfaded - adds r1, r2 - ldr r2, _0803234C @ =REG_BG0CNT - bl CpuSet - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _080322C8 - mov r2, r8 - lsls r0, r2, 2 - movs r1, 0xBC - lsls r1, 9 - add r1, r9 - adds r0, r1 - strh r7, [r0, 0x2] - ldr r0, _0803233C @ =gBattleMonForms - adds r1, r2, r0 - ldr r4, [sp, 0xC] - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] -_080322C8: - mov r0, r8 - bl sub_8077F68 - mov r5, r10 - ldrb r2, [r5] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r2, _08032324 @ =gSprites - adds r1, r2 - lsls r0, 24 - lsrs r0, 24 - strh r0, [r1, 0x22] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _0803233C @ =gBattleMonForms - add r1, r8 - ldrb r1, [r1] - bl StartSpriteAnim -_080322F6: - 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 -_08032308: .4byte gUnknown_02024A6A -_0803230C: .4byte gEnemyParty -_08032310: .4byte gMonFrontPicTable -_08032314: .4byte gMonFrontPicCoords -_08032318: .4byte gUnknown_081FAF4C -_0803231C: .4byte gUnknown_02024E70 -_08032320: .4byte gUnknown_02024BE0 -_08032324: .4byte gSprites -_08032328: .4byte 0x06010000 -_0803232C: .4byte 0x040000d4 -_08032330: .4byte 0x84000200 -_08032334: .4byte 0x02000000 -_08032338: .4byte SPECIES_CASTFORM -_0803233C: .4byte gBattleMonForms -_08032340: .4byte 0x00007fff -_08032344: .4byte gPlttBufferFaded -_08032348: .4byte gPlttBufferUnfaded -_0803234C: .4byte REG_BG0CNT - thumb_func_end sub_8031FC4 - - thumb_func_start sub_8032350 -sub_8032350: @ 8032350 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r5, r4, 0 - lsls r1, 24 - cmp r1, 0 - bne _08032408 - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _0803236C - movs r4, 0 - b _08032376 -_0803236C: - adds r0, r4, 0 - bl battle_get_per_side_status - lsls r0, 24 - lsrs r4, r0, 24 -_08032376: - bl IsContest - lsls r0, 24 - cmp r0, 0 - beq _08032388 - ldr r0, _08032384 @ =gSubstituteDollTilemap - b _08032396 - .align 2, 0 -_08032384: .4byte gSubstituteDollTilemap -_08032388: - adds r0, r5, 0 - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - beq _080323AC - ldr r0, _080323A4 @ =gSubstituteDollGfx -_08032396: - ldr r1, _080323A8 @ =gUnknown_081FAF4C - lsls r4, 2 - adds r1, r4, r1 - ldr r1, [r1] - bl LZDecompressVram - b _080323BA - .align 2, 0 -_080323A4: .4byte gSubstituteDollGfx -_080323A8: .4byte gUnknown_081FAF4C -_080323AC: - ldr r0, _080323F4 @ =gSubstituteDollTilemap - ldr r1, _080323F8 @ =gUnknown_081FAF4C - lsls r4, 2 - adds r1, r4, r1 - ldr r1, [r1] - bl LZDecompressVram -_080323BA: - lsls r7, r5, 4 - ldr r0, _080323FC @ =gSubstituteDollPal - mov r12, r0 - ldr r0, _080323F8 @ =gUnknown_081FAF4C - adds r0, r4, r0 - ldr r4, [r0] - ldr r3, _08032400 @ =0x040000d4 - ldr r6, _08032404 @ =0x84000200 - movs r0, 0x80 - lsls r0, 4 - adds r2, r4, r0 - adds r5, r0, 0 - movs r1, 0x2 -_080323D4: - str r4, [r3] - str r2, [r3, 0x4] - str r6, [r3, 0x8] - ldr r0, [r3, 0x8] - adds r2, r5 - subs r1, 0x1 - cmp r1, 0 - bge _080323D4 - movs r0, 0x80 - lsls r0, 1 - adds r1, r7, r0 - mov r0, r12 - movs r2, 0x20 - bl LoadCompressedPalette - b _08032456 - .align 2, 0 -_080323F4: .4byte gSubstituteDollTilemap -_080323F8: .4byte gUnknown_081FAF4C -_080323FC: .4byte gSubstituteDollPal -_08032400: .4byte 0x040000d4 -_08032404: .4byte 0x84000200 -_08032408: - bl IsContest - lsls r0, 24 - cmp r0, 0 - bne _08032456 - adds r0, r4, 0 - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - beq _08032440 - ldr r1, _08032438 @ =gUnknown_02024A6A - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0803243C @ =gEnemyParty - adds r0, r1 - adds r1, r4, 0 - bl sub_8031794 - b _08032456 - .align 2, 0 -_08032438: .4byte gUnknown_02024A6A -_0803243C: .4byte gEnemyParty -_08032440: - ldr r1, _0803245C @ =gUnknown_02024A6A - lsls r0, r5, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _08032460 @ =gPlayerParty - adds r0, r1 - adds r1, r5, 0 - bl sub_80318FC -_08032456: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0803245C: .4byte gUnknown_02024A6A -_08032460: .4byte gPlayerParty - thumb_func_end sub_8032350 - - thumb_func_start refresh_graphics_maybe -refresh_graphics_maybe: @ 8032464 - push {r4-r6,lr} - adds r5, r1, 0 - adds r4, r2, 0 - lsls r0, 24 - lsrs r6, r0, 24 - lsls r5, 24 - lsrs r5, 24 - lsls r4, 24 - lsrs r4, 24 - adds r0, r6, 0 - adds r1, r5, 0 - bl sub_8032350 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r1, _080324A0 @ =gSprites - adds r4, r0, r1 - ldr r0, _080324A4 @ =gBattleMonForms - adds r0, r6, r0 - ldrb r1, [r0] - adds r0, r4, 0 - bl StartSpriteAnim - cmp r5, 0 - bne _080324A8 - adds r0, r6, 0 - bl sub_8077F7C - b _080324AE - .align 2, 0 -_080324A0: .4byte gSprites -_080324A4: .4byte gBattleMonForms -_080324A8: - adds r0, r6, 0 - bl sub_8077F68 -_080324AE: - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end refresh_graphics_maybe - - thumb_func_start sub_80324BC -sub_80324BC: @ 80324BC - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r1, 16 - cmp r1, 0xA4 - bne _080324D8 - lsls r2, r0, 2 - ldr r0, _080324DC @ =0x02017800 - adds r2, r0 - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_080324D8: - pop {r0} - bx r0 - .align 2, 0 -_080324DC: .4byte 0x02017800 - thumb_func_end sub_80324BC - - thumb_func_start sub_80324E0 -sub_80324E0: @ 80324E0 - lsls r0, 24 - lsrs r0, 22 - ldr r1, _080324F4 @ =0x02017800 - adds r0, r1 - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 -_080324F4: .4byte 0x02017800 - thumb_func_end sub_80324E0 - - thumb_func_start sub_80324F8 -sub_80324F8: @ 80324F8 - push {r4-r7,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r6, r1, 24 - adds r7, r6, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r4, 16 - asrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08032568 - lsls r0, r6, 2 - ldr r3, _08032564 @ =0x02017800 - adds r4, r0, r3 - ldrb r1, [r4] - movs r5, 0x2 - movs r2, 0x2 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080325B2 - adds r0, r6, 0 - eors r0, r5 - lsls r0, 2 - adds r0, r3 - ldrb r1, [r0] - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0803255A - movs r0, 0x5A - bl PlaySE -_0803255A: - ldrb r0, [r4] - orrs r0, r5 - strb r0, [r4] - b _080325B2 - .align 2, 0 -_08032564: .4byte 0x02017800 -_08032568: - lsls r1, r6, 2 - ldr r4, _0803258C @ =0x02017800 - adds r1, r4 - ldrb r2, [r1] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - strb r0, [r1] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - bne _08032590 - movs r0, 0x5A - bl m4aSongNumStop - b _080325B2 - .align 2, 0 -_0803258C: .4byte 0x02017800 -_08032590: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080325B2 - movs r0, 0x2 - eors r7, r0 - lsls r0, r7, 2 - adds r0, r4 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080325B2 - movs r0, 0x5A - bl m4aSongNumStop -_080325B2: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80324F8 - - thumb_func_start sub_80325B8 -sub_80325B8: @ 80325B8 - push {r4-r6,lr} - movs r0, 0 - bl battle_get_side_with_given_state - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, r4, 2 - ldr r6, _08032600 @ =0x02017800 - adds r1, r6 - ldrb r2, [r1] - movs r5, 0x3 - negs r5, r5 - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080325F2 - movs r0, 0x2 - adds r1, r4, 0 - eors r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1] - adds r0, r5, 0 - ands r0, r2 - strb r0, [r1] -_080325F2: - movs r0, 0x5A - bl m4aSongNumStop - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032600: .4byte 0x02017800 - thumb_func_end sub_80325B8 - - thumb_func_start unref_sub_8032604 -unref_sub_8032604: @ 8032604 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x39 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x3A - bl GetMonData - adds r1, r0, 0 - lsls r4, 16 - asrs r4, 16 - lsls r1, 16 - asrs r1, 16 - adds r0, r4, 0 - bl GetHPBarLevel - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end unref_sub_8032604 - - thumb_func_start sub_8032638 -sub_8032638: @ 8032638 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _080326DC @ =gMain - ldr r1, _080326E0 @ =0x0000043d - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080326CE - movs r0, 0 - bl battle_get_side_with_given_state - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r0, 0x2 - bl battle_get_side_with_given_state - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r5, _080326E4 @ =gUnknown_02024A6A - mov r1, r8 - lsls r0, r1, 1 - adds r0, r5 - ldrb r0, [r0] - bl pokemon_order_func - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r9 - lsls r0, r1, 1 - adds r0, r5 - ldrb r0, [r0] - bl pokemon_order_func - lsls r0, 24 - lsrs r5, r0, 24 - movs r7, 0x64 - adds r0, r4, 0 - muls r0, r7 - ldr r6, _080326E8 @ =gPlayerParty - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080326AA - adds r0, r4, 0 - mov r1, r8 - bl sub_80324F8 -_080326AA: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _080326CE - adds r0, r5, 0 - muls r0, r7 - adds r4, r0, r6 - adds r0, r4, 0 - movs r1, 0x39 - bl GetMonData - cmp r0, 0 - beq _080326CE - adds r0, r4, 0 - mov r1, r9 - bl sub_80324F8 -_080326CE: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080326DC: .4byte gMain -_080326E0: .4byte 0x0000043d -_080326E4: .4byte gUnknown_02024A6A -_080326E8: .4byte gPlayerParty - thumb_func_end sub_8032638 - - thumb_func_start sub_80326EC -sub_80326EC: @ 80326EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r5, 0 - ldr r0, _08032778 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r5, r0 - bge _080327B4 - movs r0, 0x3 - mov r10, r8 - mov r1, r10 - ands r1, r0 - mov r10, r1 - movs r6, 0 - movs r2, 0x3F - negs r2, r2 - mov r9, r2 -_08032718: - lsls r0, r5, 24 - lsrs r0, 24 - bl sub_8078874 - lsls r0, 24 - cmp r0, 0 - beq _080327A8 - ldr r4, _0803277C @ =gSprites - ldr r0, _08032780 @ =gUnknown_02024BE0 - adds r3, r5, r0 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x1] - movs r7, 0x4 - negs r7, r7 - adds r2, r7, 0 - ands r1, r2 - mov r2, r10 - orrs r1, r2 - strb r1, [r0, 0x1] - mov r7, r8 - cmp r7, 0 - bne _08032788 - ldr r2, _08032784 @ =0x02017810 - adds r2, r6, r2 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r0, [r0, 0x3] - lsls r0, 26 - lsrs r0, 27 - strb r0, [r2, 0x6] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0, 0x3] - mov r2, r9 - ands r1, r2 - strb r1, [r0, 0x3] - b _080327A8 - .align 2, 0 -_08032778: .4byte gUnknown_02024A68 -_0803277C: .4byte gSprites -_08032780: .4byte gUnknown_02024BE0 -_08032784: .4byte 0x02017810 -_08032788: - ldrb r0, [r3] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r4 - ldr r0, _080327C4 @ =0x02017810 - adds r0, r6, r0 - ldrb r1, [r0, 0x6] - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r0, [r2, 0x3] - mov r3, r9 - ands r0, r3 - orrs r0, r1 - strb r0, [r2, 0x3] -_080327A8: - adds r6, 0xC - adds r5, 0x1 - ldr r0, _080327C8 @ =gUnknown_02024A68 - ldrb r0, [r0] - cmp r5, r0 - blt _08032718 -_080327B4: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080327C4: .4byte 0x02017810 -_080327C8: .4byte gUnknown_02024A68 - thumb_func_end sub_80326EC - - thumb_func_start sub_80327CC -sub_80327CC: @ 80327CC - push {r4-r7,lr} - mov r7, r8 - push {r7} - ldr r0, _08032894 @ =gUnknown_081FAF24 - bl LoadCompressedObjectPic - movs r0, 0x1 - bl battle_get_side_with_given_state - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, _08032898 @ =gSpriteTemplate_81FAF34 - mov r8, r0 - adds r0, r5, 0 - movs r1, 0 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8077ABC - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 8 - movs r0, 0x80 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - mov r0, r8 - adds r1, r4, 0 - movs r3, 0xC8 - bl CreateSprite - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - ldr r6, _0803289C @ =0x02017810 - adds r1, r6 - strb r0, [r1, 0x7] - ldr r7, _080328A0 @ =gSprites - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r5, [r0, 0x2E] - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _0803288A - movs r0, 0x3 - bl battle_get_side_with_given_state - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - adds r0, r5, 0 - movs r1, 0 - bl sub_8077ABC - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - movs r1, 0x1 - bl sub_8077ABC - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 8 - movs r0, 0x80 - lsls r0, 14 - adds r2, r0 - asrs r2, 16 - mov r0, r8 - adds r1, r4, 0 - movs r3, 0xC8 - bl CreateSprite - lsls r1, r5, 1 - adds r1, r5 - lsls r1, 2 - adds r1, r6 - strb r0, [r1, 0x7] - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r5, [r0, 0x2E] -_0803288A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032894: .4byte gUnknown_081FAF24 -_08032898: .4byte gSpriteTemplate_81FAF34 -_0803289C: .4byte 0x02017810 -_080328A0: .4byte gSprites - thumb_func_end sub_80327CC - - thumb_func_start sub_80328A4 -sub_80328A4: @ 80328A4 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r5, r0, 0 - movs r0, 0 - mov r8, r0 - ldrh r0, [r5, 0x2E] - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080328E8 @ =gUnknown_02024BE0 - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080328EC @ =gSprites - adds r7, r0, r1 - adds r6, r7, 0 - adds r6, 0x3E - ldrb r1, [r6] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080328E0 - adds r0, r4, 0 - bl sub_8078874 - lsls r0, 24 - cmp r0, 0 - bne _080328F4 -_080328E0: - ldr r0, _080328F0 @ =sub_8032978 - str r0, [r5, 0x1C] - b _08032964 - .align 2, 0 -_080328E8: .4byte gUnknown_02024BE0 -_080328EC: .4byte gSprites -_080328F0: .4byte sub_8032978 -_080328F4: - ldr r0, _08032910 @ =gAnimScriptActive - ldrb r0, [r0] - cmp r0, 0 - bne _08032906 - ldrb r1, [r6] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032918 -_08032906: - movs r0, 0x1 - mov r8, r0 - lsls r4, 2 - ldr r6, _08032914 @ =0x02017800 - b _08032938 - .align 2, 0 -_08032910: .4byte gAnimScriptActive -_08032914: .4byte 0x02017800 -_08032918: - lsls r0, r4, 2 - ldr r1, _08032970 @ =0x02017800 - adds r3, r0, r1 - ldrh r2, [r3, 0x2] - adds r4, r0, 0 - adds r6, r1, 0 - cmp r2, 0 - beq _08032938 - ldr r0, _08032974 @ =gEnemyMonElevation - adds r1, r2, 0 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - bne _08032938 - movs r0, 0x1 - mov r8, r0 -_08032938: - adds r0, r4, r6 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08032948 - movs r0, 0x1 - mov r8, r0 -_08032948: - ldrh r0, [r7, 0x20] - strh r0, [r5, 0x20] - ldrh r0, [r7, 0x24] - strh r0, [r5, 0x24] - adds r2, r5, 0 - adds r2, 0x3E - mov r0, r8 - lsls r3, r0, 2 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - orrs r0, r3 - strb r0, [r2] -_08032964: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032970: .4byte 0x02017800 -_08032974: .4byte gEnemyMonElevation - thumb_func_end sub_80328A4 - - thumb_func_start sub_8032978 -sub_8032978: @ 8032978 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - bx lr - thumb_func_end sub_8032978 - - thumb_func_start sub_8032984 -sub_8032984: @ 8032984 - push {r4-r6,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r6, r4, 0 - lsls r1, 16 - lsrs r5, r1, 16 - adds r0, r4, 0 - bl battle_side_get_owner - lsls r0, 24 - cmp r0, 0 - beq _080329FA - lsls r0, r4, 2 - ldr r3, _080329D0 @ =0x02017800 - adds r1, r0, r3 - ldrh r0, [r1, 0x2] - cmp r0, 0 - beq _080329AA - adds r5, r0, 0 -_080329AA: - ldr r0, _080329D4 @ =gEnemyMonElevation - adds r0, r5, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _080329E0 - ldr r2, _080329D8 @ =gSprites - lsls r0, r4, 1 - adds r0, r4 - lsls r0, 2 - adds r0, r3, r0 - ldrb r1, [r0, 0x17] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _080329DC @ =sub_80328A4 - b _080329F8 - .align 2, 0 -_080329D0: .4byte 0x02017800 -_080329D4: .4byte gEnemyMonElevation -_080329D8: .4byte gSprites -_080329DC: .4byte sub_80328A4 -_080329E0: - ldr r2, _08032A00 @ =gSprites - lsls r0, r6, 1 - adds r0, r6 - lsls r0, 2 - adds r0, r3, r0 - ldrb r1, [r0, 0x17] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08032A04 @ =sub_8032978 -_080329F8: - str r1, [r0] -_080329FA: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032A00: .4byte gSprites -_08032A04: .4byte sub_8032978 - thumb_func_end sub_8032984 - - thumb_func_start sub_8032A08 -sub_8032A08: @ 8032A08 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _08032A2C @ =gSprites - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r0, _08032A30 @ =0x02017810 - adds r1, r0 - ldrb r1, [r1, 0x7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, _08032A34 @ =sub_8032978 - str r1, [r0] - bx lr - .align 2, 0 -_08032A2C: .4byte gSprites -_08032A30: .4byte 0x02017810 -_08032A34: .4byte sub_8032978 - thumb_func_end sub_8032A08 - - thumb_func_start sub_8032A38 -sub_8032A38: @ 8032A38 - push {r4-r6,lr} - ldr r3, _08032AA4 @ =0x06000240 - movs r0, 0 - movs r6, 0xF0 - lsls r6, 8 -_08032A42: - adds r5, r0, 0x1 - movs r4, 0xF -_08032A46: - ldrh r1, [r3] - adds r0, r6, 0 - ands r0, r1 - cmp r0, 0 - bne _08032A56 - adds r0, r6, 0 - orrs r0, r1 - strh r0, [r3] -_08032A56: - ldrh r1, [r3] - movs r2, 0xF0 - lsls r2, 4 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _08032A6A - adds r0, r2, 0 - orrs r0, r1 - strh r0, [r3] -_08032A6A: - ldrh r1, [r3] - movs r2, 0xF0 - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0 - bne _08032A7C - adds r0, r1, 0 - orrs r0, r2 - strh r0, [r3] -_08032A7C: - ldrh r1, [r3] - movs r2, 0xF - movs r0, 0xF - ands r0, r1 - cmp r0, 0 - bne _08032A8E - adds r0, r1, 0 - orrs r0, r2 - strh r0, [r3] -_08032A8E: - adds r3, 0x2 - subs r4, 0x1 - cmp r4, 0 - bge _08032A46 - adds r0, r5, 0 - cmp r0, 0x8 - ble _08032A42 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032AA4: .4byte 0x06000240 - thumb_func_end sub_8032A38 - - thumb_func_start sub_8032AA8 -sub_8032AA8: @ 8032AA8 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsls r2, r4, 2 - ldr r0, _08032AD4 @ =0x02017800 - adds r2, r0 - movs r3, 0 - movs r0, 0 - strh r0, [r2, 0x2] - ldr r0, _08032AD8 @ =gBattleMonForms - adds r0, r4, r0 - strb r3, [r0] - cmp r1, 0 - bne _08032ACC - adds r0, r4, 0 - bl sub_80324E0 -_08032ACC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08032AD4: .4byte 0x02017800 -_08032AD8: .4byte gBattleMonForms - thumb_func_end sub_8032AA8 - - thumb_func_start nullsub_45 -nullsub_45: @ 8032ADC - bx lr - thumb_func_end nullsub_45 - - thumb_func_start sub_8032AE0 -sub_8032AE0: @ 8032AE0 - ldr r1, _08032AF0 @ =gUnknown_03004330 - ldr r0, _08032AF4 @ =gUnknown_02024A60 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032AF8 @ =sub_8032AFC - str r1, [r0] - bx lr - .align 2, 0 -_08032AF0: .4byte gUnknown_03004330 -_08032AF4: .4byte gUnknown_02024A60 -_08032AF8: .4byte sub_8032AFC - thumb_func_end sub_8032AE0 - - thumb_func_start sub_8032AFC -sub_8032AFC: @ 8032AFC - push {lr} - ldr r2, _08032B30 @ =gUnknown_02024A64 - ldr r1, _08032B34 @ =gBitTable - ldr r0, _08032B38 @ =gUnknown_02024A60 - ldrb r3, [r0] - lsls r0, r3, 2 - adds r0, r1 - ldr r1, [r2] - ldr r0, [r0] - ands r1, r0 - cmp r1, 0 - beq _08032B48 - ldr r0, _08032B3C @ =gUnknown_02023A60 - lsls r1, r3, 9 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x38 - bhi _08032B44 - ldr r0, _08032B40 @ =gUnknown_081FAF5C - ldrb r1, [r1] - lsls r1, 2 - adds r1, r0 - ldr r0, [r1] - bl _call_via_r0 - b _08032B48 - .align 2, 0 -_08032B30: .4byte gUnknown_02024A64 -_08032B34: .4byte gBitTable -_08032B38: .4byte gUnknown_02024A60 -_08032B3C: .4byte gUnknown_02023A60 -_08032B40: .4byte gUnknown_081FAF5C -_08032B44: - bl sub_80334EC -_08032B48: - pop {r0} - bx r0 - thumb_func_end sub_8032AFC - - thumb_func_start sub_8032B4C -sub_8032B4C: @ 8032B4C - push {lr} - ldr r2, _08032B74 @ =gSprites - ldr r1, _08032B78 @ =gUnknown_02024BE0 - ldr r0, _08032B7C @ =gUnknown_02024A60 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08032B80 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08032B70 - bl sub_80334EC -_08032B70: - pop {r0} - bx r0 - .align 2, 0 -_08032B74: .4byte gSprites -_08032B78: .4byte gUnknown_02024BE0 -_08032B7C: .4byte gUnknown_02024A60 -_08032B80: .4byte SpriteCallbackDummy - thumb_func_end sub_8032B4C - - thumb_func_start sub_8032B84 -sub_8032B84: @ 8032B84 - push {lr} - ldr r2, _08032BAC @ =gSprites - ldr r1, _08032BB0 @ =gUnknown_02024BE0 - ldr r0, _08032BB4 @ =gUnknown_02024A60 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08032BB8 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08032BA8 - bl sub_80334EC -_08032BA8: - pop {r0} - bx r0 - .align 2, 0 -_08032BAC: .4byte gSprites -_08032BB0: .4byte gUnknown_02024BE0 -_08032BB4: .4byte gUnknown_02024A60 -_08032BB8: .4byte SpriteCallbackDummy - thumb_func_end sub_8032B84 - - thumb_func_start sub_8032BBC -sub_8032BBC: @ 8032BBC - push {r4-r6,lr} - ldr r4, _08032C34 @ =gSprites - ldr r6, _08032C38 @ =gUnknown_02024BE0 - ldr r5, _08032C3C @ =gUnknown_02024A60 - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r2, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r2, r0 - ldr r1, [r0] - ldr r0, _08032C40 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08032C2C - adds r0, r2, r4 - ldrh r0, [r0, 0x6] - bl sub_8031B74 - ldrb r0, [r5] - adds r0, r6 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r4 - ldrh r0, [r1, 0x38] - ldr r2, _08032C44 @ =0x000003ff - ands r2, r0 - ldrh r3, [r1, 0x4] - ldr r0, _08032C48 @ =0xfffffc00 - ands r0, r3 - orrs r0, r2 - strh r0, [r1, 0x4] - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r5] - adds r0, r6 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - bl sub_80334EC -_08032C2C: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08032C34: .4byte gSprites -_08032C38: .4byte gUnknown_02024BE0 -_08032C3C: .4byte gUnknown_02024A60 -_08032C40: .4byte SpriteCallbackDummy -_08032C44: .4byte 0x000003ff -_08032C48: .4byte 0xfffffc00 - thumb_func_end sub_8032BBC - - thumb_func_start sub_8032C4C -sub_8032C4C: @ 8032C4C - push {lr} - ldr r3, _08032C80 @ =gUnknown_02024A60 - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - ldr r2, _08032C84 @ =0x02017810 - adds r1, r2 - ldrb r0, [r1, 0x9] - subs r0, 0x1 - strb r0, [r1, 0x9] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08032C7C - ldrb r0, [r3] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r0, 0 - strb r0, [r1, 0x9] - bl sub_80334EC -_08032C7C: - pop {r0} - bx r0 - .align 2, 0 -_08032C80: .4byte gUnknown_02024A60 -_08032C84: .4byte 0x02017810 - thumb_func_end sub_8032C4C - - thumb_func_start sub_8032C88 -sub_8032C88: @ 8032C88 - push {r4-r7,lr} - movs r6, 0 - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08032CAC - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08032CE0 - ldr r0, _08032CCC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08032CE0 -_08032CAC: - ldr r2, _08032CD0 @ =gSprites - ldr r1, _08032CD4 @ =gUnknown_03004340 - ldr r0, _08032CD8 @ =gUnknown_02024A60 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _08032CDC @ =SpriteCallbackDummy - cmp r1, r0 - bne _08032D16 - b _08032D14 - .align 2, 0 -_08032CCC: .4byte gBattleTypeFlags -_08032CD0: .4byte gSprites -_08032CD4: .4byte gUnknown_03004340 -_08032CD8: .4byte gUnknown_02024A60 -_08032CDC: .4byte SpriteCallbackDummy -_08032CE0: - ldr r2, _08032DC4 @ =gSprites - ldr r5, _08032DC8 @ =gUnknown_03004340 - ldr r0, _08032DCC @ =gUnknown_02024A60 - ldrb r3, [r0] - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r4, [r0] - ldr r0, _08032DD0 @ =SpriteCallbackDummy - cmp r4, r0 - bne _08032D16 - movs r0, 0x2 - eors r3, r0 - adds r0, r3, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - cmp r0, r4 - bne _08032D16 -_08032D14: - movs r6, 0x1 -_08032D16: - bl IsCryPlayingOrClearCrySongs - lsls r0, 24 - cmp r0, 0 - beq _08032D22 - movs r6, 0 -_08032D22: - cmp r6, 0 - beq _08032E0E - ldr r7, _08032DCC @ =gUnknown_02024A60 - ldrb r2, [r7] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r5, _08032DD4 @ =0x02017810 - adds r4, r0, r5 - ldrb r1, [r4, 0x1] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032E0E - movs r6, 0x2 - adds r1, r6, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032E0E - ldrb r1, [r4] - movs r3, 0x7F - adds r0, r3, 0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - ldrb r2, [r1, 0x1] - movs r4, 0x2 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - strb r0, [r1, 0x1] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0] - ands r3, r1 - strb r3, [r0] - ldrb r0, [r7] - adds r1, r6, 0 - eors r1, r0 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldrb r1, [r0, 0x1] - ands r4, r1 - strb r4, [r0, 0x1] - ldr r4, _08032DD8 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r0, _08032DDC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08032DE4 - ldr r0, _08032DE0 @ =gMPlay_BGM - bl m4aMPlayContinue - b _08032DF0 - .align 2, 0 -_08032DC4: .4byte gSprites -_08032DC8: .4byte gUnknown_03004340 -_08032DCC: .4byte gUnknown_02024A60 -_08032DD0: .4byte SpriteCallbackDummy -_08032DD4: .4byte 0x02017810 -_08032DD8: .4byte 0x000027f9 -_08032DDC: .4byte gBattleTypeFlags -_08032DE0: .4byte gMPlay_BGM -_08032DE4: - ldr r0, _08032E14 @ =gMPlay_BGM - ldr r1, _08032E18 @ =0x0000ffff - movs r2, 0x80 - lsls r2, 1 - bl m4aMPlayVolumeControl -_08032DF0: - ldr r2, _08032E1C @ =gUnknown_02024A60 - ldrb r1, [r2] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08032E20 @ =0x02017810 - adds r0, r1 - movs r1, 0x3 - strb r1, [r0, 0x9] - ldr r1, _08032E24 @ =gUnknown_03004330 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08032E28 @ =sub_8032C4C - str r1, [r0] -_08032E0E: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032E14: .4byte gMPlay_BGM -_08032E18: .4byte 0x0000ffff -_08032E1C: .4byte gUnknown_02024A60 -_08032E20: .4byte 0x02017810 -_08032E24: .4byte gUnknown_03004330 -_08032E28: .4byte sub_8032C4C - thumb_func_end sub_8032C88 - - thumb_func_start sub_8032E2C -sub_8032E2C: @ 8032E2C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r0, _08032FEC @ =gUnknown_02024A60 - mov r9, r0 - ldrb r2, [r0] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r4, _08032FF0 @ =0x02017810 - adds r0, r4 - ldrb r1, [r0] - movs r5, 0x88 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08032E64 - ldr r0, _08032FF4 @ =gUnknown_02024A6A - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08032FF8 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08032E64: - mov r1, r9 - ldrb r0, [r1] - movs r7, 0x2 - adds r2, r7, 0 - eors r2, r0 - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _08032E94 - ldr r0, _08032FF4 @ =gUnknown_02024A6A - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08032FF8 @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08032E94: - mov r0, r9 - ldrb r2, [r0] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - movs r3, 0x8 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032EAE - b _08032FE0 -_08032EAE: - adds r1, r7, 0 - eors r1, r2 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - ldrb r1, [r0] - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _08032EC6 - b _08032FE0 -_08032EC6: - bl IsDoubleBattle - lsls r0, 24 - cmp r0, 0 - beq _08032F58 - ldr r0, _08032FFC @ =gBattleTypeFlags - ldrh r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _08032F58 - ldr r1, _08033000 @ =gUnknown_0300434C - mov r2, r9 - ldrb r0, [r2] - eors r0, r7 - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08033004 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r4, _08033008 @ =gUnknown_03004340 - mov r1, r9 - ldrb r0, [r1] - adds r1, r7, 0 - eors r1, r0 - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _08032FF4 @ =gUnknown_02024A6A - mov r8, r2 - lsls r1, 1 - add r1, r8 - ldrh r1, [r1] - movs r6, 0x64 - muls r1, r6 - ldr r5, _08032FF8 @ =gEnemyParty - adds r1, r5 - movs r2, 0 - bl sub_8045A5C - mov r1, r9 - ldrb r0, [r1] - eors r0, r7 - bl sub_804777C - mov r2, r9 - ldrb r0, [r2] - eors r0, r7 - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC - mov r1, r9 - ldrb r0, [r1] - adds r4, r7, 0 - eors r4, r0 - lsls r0, r4, 1 - add r0, r8 - ldrh r0, [r0] - muls r0, r6 - adds r0, r5 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 -_08032F58: - ldr r1, _08033000 @ =gUnknown_0300434C - ldr r4, _08032FEC @ =gUnknown_02024A60 - ldrb r0, [r4] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _08033004 @ =gSprites - adds r0, r1 - bl DestroySprite - ldr r5, _08033008 @ =gUnknown_03004340 - ldrb r1, [r4] - adds r0, r1, r5 - ldrb r0, [r0] - ldr r2, _08032FF4 @ =gUnknown_02024A6A - mov r9, r2 - lsls r1, 1 - add r1, r9 - ldrh r1, [r1] - movs r2, 0x64 - mov r8, r2 - mov r2, r8 - muls r2, r1 - adds r1, r2, 0 - ldr r6, _08032FF8 @ =gEnemyParty - adds r1, r6 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r4] - bl sub_804777C - ldrb r0, [r4] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - ldrb r5, [r4] - lsls r0, r5, 1 - add r0, r9 - ldrh r0, [r0] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r5, 0 - bl sub_8032984 - ldr r2, _0803300C @ =0x02017840 - ldrb r1, [r2, 0x9] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - strb r0, [r2, 0x9] - ldr r1, _08033010 @ =gUnknown_03004330 - ldrb r0, [r4] - lsls r0, 2 - adds r0, r1 - ldr r1, _08033014 @ =sub_8032C88 - str r1, [r0] -_08032FE0: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08032FEC: .4byte gUnknown_02024A60 -_08032FF0: .4byte 0x02017810 -_08032FF4: .4byte gUnknown_02024A6A -_08032FF8: .4byte gEnemyParty -_08032FFC: .4byte gBattleTypeFlags -_08033000: .4byte gUnknown_0300434C -_08033004: .4byte gSprites -_08033008: .4byte gUnknown_03004340 -_0803300C: .4byte 0x02017840 -_08033010: .4byte gUnknown_03004330 -_08033014: .4byte sub_8032C88 - thumb_func_end sub_8032E2C - - thumb_func_start sub_8033018 -sub_8033018: @ 8033018 - push {r4-r7,lr} - ldr r2, _08033070 @ =gSprites - ldr r0, _08033074 @ =gUnknown_02024BE0 - ldr r7, _08033078 @ =gUnknown_02024A60 - ldrb r3, [r7] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - adds r0, r1, 0 - adds r0, 0x3F - ldrb r0, [r0] - lsls r0, 27 - lsrs r2, r0, 31 - cmp r2, 0x1 - bne _080330BC - movs r4, 0x24 - ldrsh r0, [r1, r4] - cmp r0, 0 - bne _080330BC - lsls r4, r3, 1 - adds r0, r4, r3 - lsls r0, 2 - ldr r6, _0803307C @ =0x02017810 - adds r1, r0, r6 - ldrb r5, [r1] - movs r0, 0x80 - ands r0, r5 - cmp r0, 0 - bne _08033088 - ldr r0, _08033080 @ =gUnknown_02024A6A - adds r0, r4, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _08033084 @ =gEnemyParty - adds r1, r0 - adds r0, r3, 0 - bl sub_8141828 - b _080330BC - .align 2, 0 -_08033070: .4byte gSprites -_08033074: .4byte gUnknown_02024BE0 -_08033078: .4byte gUnknown_02024A60 -_0803307C: .4byte 0x02017810 -_08033080: .4byte gUnknown_02024A6A -_08033084: .4byte gEnemyParty -_08033088: - ldrb r0, [r1, 0x1] - ands r2, r0 - cmp r2, 0 - beq _080330BC - movs r0, 0x7F - ands r0, r5 - strb r0, [r1] - ldrb r0, [r7] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _080330C4 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - bl sub_80334EC -_080330BC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080330C4: .4byte 0x000027f9 - thumb_func_end sub_8033018 - - thumb_func_start sub_80330C8 -sub_80330C8: @ 80330C8 - push {r4-r6,lr} - ldr r6, _08033108 @ =gUnknown_02024A60 - ldrb r0, [r6] - ldr r5, _0803310C @ =gUnknown_03004340 - adds r1, r0, r5 - ldrb r1, [r1] - movs r2, 0 - movs r3, 0 - bl sub_8045C78 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - bl sub_8043DFC - lsls r4, 16 - asrs r1, r4, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08033110 - ldrb r0, [r6] - adds r0, r5 - ldrb r0, [r0] - movs r2, 0 - bl sub_80440EC - b _08033114 - .align 2, 0 -_08033108: .4byte gUnknown_02024A60 -_0803310C: .4byte gUnknown_03004340 -_08033110: - bl sub_80334EC -_08033114: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80330C8 - - thumb_func_start sub_803311C -sub_803311C: @ 803311C - push {lr} - ldr r2, _08033150 @ =gSprites - ldr r0, _08033154 @ =gUnknown_02024BE0 - ldr r1, _08033158 @ =gUnknown_02024A60 - ldrb r3, [r1] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - lsls r0, 31 - cmp r0, 0 - bne _0803314A - ldr r0, _0803315C @ =gUnknown_03004340 - adds r0, r3, r0 - ldrb r0, [r0] - bl sub_8043DB0 - bl sub_80334EC -_0803314A: - pop {r0} - bx r0 - .align 2, 0 -_08033150: .4byte gSprites -_08033154: .4byte gUnknown_02024BE0 -_08033158: .4byte gUnknown_02024A60 -_0803315C: .4byte gUnknown_03004340 - thumb_func_end sub_803311C - - thumb_func_start sub_8033160 -sub_8033160: @ 8033160 - push {r4-r6,lr} - ldr r6, _080331BC @ =gUnknown_02024A60 - ldrb r2, [r6] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - ldr r1, _080331C0 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080331B6 - ldr r5, _080331C4 @ =gUnknown_02024BE0 - adds r0, r2, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _080331C8 @ =gSprites - adds r0, r4 - bl FreeSpriteOamMatrix - ldrb r0, [r6] - adds r0, r5 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - ldrb r0, [r6] - bl sub_8032A08 - ldr r1, _080331CC @ =gUnknown_03004340 - ldrb r0, [r6] - adds r0, r1 - ldrb r0, [r0] - bl sub_8043DB0 - bl sub_80334EC -_080331B6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080331BC: .4byte gUnknown_02024A60 -_080331C0: .4byte 0x02017810 -_080331C4: .4byte gUnknown_02024BE0 -_080331C8: .4byte gSprites -_080331CC: .4byte gUnknown_03004340 - thumb_func_end sub_8033160 - - thumb_func_start sub_80331D0 -sub_80331D0: @ 80331D0 - push {lr} - ldr r0, _080331E4 @ =gUnknown_03004210 - ldrh r0, [r0, 0x16] - cmp r0, 0 - bne _080331DE - bl sub_80334EC -_080331DE: - pop {r0} - bx r0 - .align 2, 0 -_080331E4: .4byte gUnknown_03004210 - thumb_func_end sub_80331D0 - - thumb_func_start bx_blink_t7 -bx_blink_t7: @ 80331E8 - push {r4,lr} - ldr r1, _08033224 @ =gUnknown_02024BE0 - ldr r0, _08033228 @ =gUnknown_02024A60 - ldrb r0, [r0] - adds r0, r1 - ldrb r1, [r0] - ldr r2, _0803322C @ =gSprites - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r4, r0, r2 - movs r1, 0x30 - ldrsh r0, [r4, r1] - cmp r0, 0x20 - bne _08033234 - movs r3, 0 - movs r0, 0 - strh r0, [r4, 0x30] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - subs r0, 0x5 - ands r0, r1 - strb r0, [r2] - ldr r0, _08033230 @ =gUnknown_02024E6D - strb r3, [r0] - bl sub_80334EC - b _0803325E - .align 2, 0 -_08033224: .4byte gUnknown_02024BE0 -_08033228: .4byte gUnknown_02024A60 -_0803322C: .4byte gSprites -_08033230: .4byte gUnknown_02024E6D -_08033234: - ldrh r0, [r4, 0x30] - movs r1, 0x3 - ands r0, r1 - cmp r0, 0 - bne _08033258 - adds r3, r4, 0 - adds r3, 0x3E - ldrb r2, [r3] - lsls r0, r2, 29 - lsrs r0, 31 - movs r1, 0x1 - eors r1, r0 - lsls r1, 2 - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3] -_08033258: - ldrh r0, [r4, 0x30] - adds r0, 0x1 - strh r0, [r4, 0x30] -_0803325E: - pop {r4} - pop {r0} - bx r0 - thumb_func_end bx_blink_t7 - - thumb_func_start sub_8033264 -sub_8033264: @ 8033264 - push {r4,lr} - ldr r2, _080332B4 @ =gSprites - ldr r0, _080332B8 @ =gUnknown_03004340 - ldr r4, _080332BC @ =gUnknown_02024A60 - ldrb r3, [r4] - adds r0, r3, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, 0x1C - adds r0, r2 - ldr r1, [r0] - ldr r0, _080332C0 @ =SpriteCallbackDummy - cmp r1, r0 - bne _080332AC - lsls r0, r3, 2 - ldr r1, _080332C4 @ =0x02017800 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080332A0 - adds r0, r3, 0 - adds r1, r3, 0 - adds r2, r3, 0 - movs r3, 0x6 - bl move_anim_start_t4 -_080332A0: - ldr r0, _080332C8 @ =gUnknown_03004330 - ldrb r1, [r4] - lsls r1, 2 - adds r1, r0 - ldr r0, _080332CC @ =sub_80332D0 - str r0, [r1] -_080332AC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080332B4: .4byte gSprites -_080332B8: .4byte gUnknown_03004340 -_080332BC: .4byte gUnknown_02024A60 -_080332C0: .4byte SpriteCallbackDummy -_080332C4: .4byte 0x02017800 -_080332C8: .4byte gUnknown_03004330 -_080332CC: .4byte sub_80332D0 - thumb_func_end sub_8033264 - - thumb_func_start sub_80332D0 -sub_80332D0: @ 80332D0 - push {lr} - ldr r0, _080332FC @ =gUnknown_02024A60 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _08033300 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080332F6 - ldr r0, _08033304 @ =c3_0802FDF4 - movs r1, 0xA - bl CreateTask - bl sub_80334EC -_080332F6: - pop {r0} - bx r0 - .align 2, 0 -_080332FC: .4byte gUnknown_02024A60 -_08033300: .4byte 0x02017810 -_08033304: .4byte c3_0802FDF4 - thumb_func_end sub_80332D0 - - thumb_func_start sub_8033308 -sub_8033308: @ 8033308 - push {r4,r5,lr} - ldr r5, _080333AC @ =gUnknown_02024A60 - ldrb r1, [r5] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r3, _080333B0 @ =0x02017810 - adds r2, r0, r3 - ldrb r1, [r2, 0x1] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080333A4 - ldrb r1, [r2] - movs r0, 0x7F - ands r0, r1 - strb r0, [r2] - ldrb r0, [r5] - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrb r2, [r1, 0x1] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - strb r0, [r1, 0x1] - ldr r4, _080333B4 @ =0x000027f9 - adds r0, r4, 0 - bl FreeSpriteTilesByTag - adds r0, r4, 0 - bl FreeSpritePaletteByTag - ldr r1, _080333B8 @ =gUnknown_02024BE0 - ldrb r0, [r5] - adds r0, r1 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _080333BC @ =gSprites - adds r0, r1 - movs r1, 0 - bl StartSpriteAnim - ldr r4, _080333C0 @ =gUnknown_03004340 - ldrb r1, [r5] - adds r0, r1, r4 - ldrb r0, [r0] - ldr r2, _080333C4 @ =gUnknown_02024A6A - lsls r1, 1 - adds r1, r2 - ldrh r2, [r1] - movs r1, 0x64 - muls r1, r2 - ldr r2, _080333C8 @ =gEnemyParty - adds r1, r2 - movs r2, 0 - bl sub_8045A5C - ldrb r0, [r5] - bl sub_804777C - ldrb r0, [r5] - adds r0, r4 - ldrb r0, [r0] - bl sub_8043DFC - ldrb r0, [r5] - bl sub_8031F88 - ldr r1, _080333CC @ =gUnknown_03004330 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _080333D0 @ =sub_8033264 - str r1, [r0] -_080333A4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080333AC: .4byte gUnknown_02024A60 -_080333B0: .4byte 0x02017810 -_080333B4: .4byte 0x000027f9 -_080333B8: .4byte gUnknown_02024BE0 -_080333BC: .4byte gSprites -_080333C0: .4byte gUnknown_03004340 -_080333C4: .4byte gUnknown_02024A6A -_080333C8: .4byte gEnemyParty -_080333CC: .4byte gUnknown_03004330 -_080333D0: .4byte sub_8033264 - thumb_func_end sub_8033308 - - thumb_func_start sub_80333D4 -sub_80333D4: @ 80333D4 - push {r4-r6,lr} - ldr r5, _08033470 @ =gUnknown_02024A60 - ldrb r2, [r5] - lsls r3, r2, 1 - adds r0, r3, r2 - lsls r0, 2 - ldr r6, _08033474 @ =0x02017810 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x88 - ands r0, r1 - cmp r0, 0 - bne _08033402 - ldr r0, _08033478 @ =gUnknown_02024A6A - adds r0, r3, r0 - ldrh r1, [r0] - movs r0, 0x64 - muls r1, r0 - ldr r0, _0803347C @ =gEnemyParty - adds r1, r0 - adds r0, r2, 0 - bl sub_8141828 -_08033402: - ldr r4, _08033480 @ =gSprites - ldr r0, _08033484 @ =gUnknown_0300434C - ldrb r2, [r5] - adds r0, r2, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r3, r0, 2 - adds r0, r4, 0 - adds r0, 0x1C - adds r0, r3, r0 - ldr r1, [r0] - ldr r0, _08033488 @ =SpriteCallbackDummy - cmp r1, r0 - bne _08033468 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0] - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - bne _08033468 - adds r0, r3, r4 - bl DestroySprite - ldrb r4, [r5] - ldr r1, _08033478 @ =gUnknown_02024A6A - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _0803347C @ =gEnemyParty - adds r0, r1 - movs r1, 0xB - bl GetMonData - adds r1, r0, 0 - lsls r1, 16 - lsrs r1, 16 - adds r0, r4, 0 - bl sub_8032984 - ldr r1, _0803348C @ =gUnknown_03004330 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r1 - ldr r1, _08033490 @ =sub_8033308 - str r1, [r0] -_08033468: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08033470: .4byte gUnknown_02024A60 -_08033474: .4byte 0x02017810 -_08033478: .4byte gUnknown_02024A6A -_0803347C: .4byte gEnemyParty -_08033480: .4byte gSprites -_08033484: .4byte gUnknown_0300434C -_08033488: .4byte SpriteCallbackDummy -_0803348C: .4byte gUnknown_03004330 -_08033490: .4byte sub_8033308 - thumb_func_end sub_80333D4 - - thumb_func_start sub_8033494 -sub_8033494: @ 8033494 - push {lr} - ldr r0, _080334B8 @ =gUnknown_02024A60 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080334BC @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - bne _080334B2 - bl sub_80334EC -_080334B2: - pop {r0} - bx r0 - .align 2, 0 -_080334B8: .4byte gUnknown_02024A60 -_080334BC: .4byte 0x02017810 - thumb_func_end sub_8033494 - - thumb_func_start sub_80334C0 -sub_80334C0: @ 80334C0 - push {lr} - ldr r0, _080334E4 @ =gUnknown_02024A60 - ldrb r1, [r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080334E8 @ =0x02017810 - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - bne _080334DE - bl sub_80334EC -_080334DE: - pop {r0} - bx r0 - .align 2, 0 -_080334E4: .4byte gUnknown_02024A60 -_080334E8: .4byte 0x02017810 - thumb_func_end sub_80334C0 - - thumb_func_start sub_80334EC -sub_80334EC: @ 80334EC - ldr r1, _08033510 @ =gUnknown_03004330 - ldr r2, _08033514 @ =gUnknown_02024A60 - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, _08033518 @ =sub_8032AFC - str r1, [r0] - ldr r3, _0803351C @ =gUnknown_02024A64 - ldr r1, _08033520 @ =gBitTable - ldrb r0, [r2] - lsls r0, 2 - adds r0, r1 - ldr r1, [r0] - ldr r0, [r3] - bics r0, r1 - str r0, [r3] - bx lr - .align 2, 0 -_08033510: .4byte gUnknown_03004330 -_08033514: .4byte gUnknown_02024A60 -_08033518: .4byte sub_8032AFC -_0803351C: .4byte gUnknown_02024A64 -_08033520: .4byte gBitTable - thumb_func_end sub_80334EC - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s index 86abad6f3..be9b806d9 100644 --- a/asm/battle_anim_81258BC.s +++ b/asm/battle_anim_81258BC.s @@ -802,7 +802,7 @@ bx_battle_menu_t6_2: @ 812B4D4 beq _0812B546 movs r0, 0x5 bl PlaySE - bl sub_814A7FC + bl DestroyMenuCursor ldr r1, _0812B50C @ =gUnknown_02024E60 ldr r0, _0812B510 @ =gUnknown_02024A60 ldrb r0, [r0] diff --git a/asm/battle_anim_8137220.s b/asm/battle_anim_8137220.s index 134e18e6f..13773361a 100644 --- a/asm/battle_anim_8137220.s +++ b/asm/battle_anim_8137220.s @@ -234,7 +234,7 @@ _081373E8: bne _08137410 movs r0, 0x5 bl PlaySE - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x1 movs r1, 0x1 movs r2, 0 @@ -3871,7 +3871,7 @@ sub_8139208: @ 8139208 ldrh r0, [r4] cmp r0, 0x2 bne _0813922A - bl sub_814A7FC + bl DestroyMenuCursor _0813922A: ldrh r0, [r4] bl sub_8120AA8 @@ -4061,7 +4061,7 @@ _081393B2: lsls r0, 24 cmp r0, 0 bne _081393DE - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x5 bl PlaySE movs r2, 0x80 diff --git a/asm/battle_tower.s b/asm/battle_tower.s index 9dfce6c1c..c50903de5 100644 --- a/asm/battle_tower.s +++ b/asm/battle_tower.s @@ -1522,7 +1522,7 @@ _081350AE: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 beq _081350C6 @@ -1555,7 +1555,7 @@ AppendBattleTowerBannedSpeciesName: @ 81350E0 lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 beq _081351E6 diff --git a/asm/berry_blender.s b/asm/berry_blender.s index 666882c04..b6ee5f9f3 100644 --- a/asm/berry_blender.s +++ b/asm/berry_blender.s @@ -5484,7 +5484,7 @@ _08050ED8: adds r0, 0x6F movs r1, 0x3 strb r1, [r0] - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x17 movs r1, 0x8 movs r2, 0x1C @@ -5513,7 +5513,7 @@ _08050F18: ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x17 movs r1, 0x8 movs r2, 0x1C @@ -5794,7 +5794,7 @@ _0805116E: adds r0, 0x6F movs r1, 0x3 strb r1, [r0] - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x17 movs r1, 0x8 movs r2, 0x1C @@ -5810,7 +5810,7 @@ _08051190: ldrb r1, [r0] adds r1, 0x1 strb r1, [r0] - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x17 movs r1, 0x8 movs r2, 0x1C diff --git a/asm/choose_party.s b/asm/choose_party.s index 25122e4ef..09f00ac77 100644 --- a/asm/choose_party.s +++ b/asm/choose_party.s @@ -1131,7 +1131,7 @@ _081226DC: movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect - bl sub_8072DEC + bl HandleDestroyMenuCursors bl sub_806D5A4 ldr r0, _0812271C @ =gOtherText_NoMoreThreePoke movs r1, 0x1 @@ -1178,7 +1178,7 @@ _0812274A: movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect - bl sub_8072DEC + bl HandleDestroyMenuCursors adds r0, r4, 0 bl sub_8122838 _08122760: @@ -1276,7 +1276,7 @@ sub_81227FC: @ 81227FC movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 bl sub_806D538 @@ -2395,7 +2395,7 @@ sub_81230F4: @ 81230F4 movs r2, 0x1D movs r3, 0x13 bl MenuZeroFillWindowRect - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0xF movs r1, 0 bl sub_806D538 diff --git a/asm/contest.s b/asm/contest.s index 214935952..1f92f6fad 100644 --- a/asm/contest.s +++ b/asm/contest.s @@ -1577,7 +1577,7 @@ _080ABEC6: ands r5, r0 cmp r5, 0 beq _080ABF08 - bl sub_814A7FC + bl DestroyMenuCursor movs r0, 0x5 bl PlaySE ldr r0, _080ABF00 @ =gTasks diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index 672eb4c1a..7bd7de240 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -1601,7 +1601,7 @@ _080C2D42: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag adds r5, 0x40 subs r4, 0x1 cmp r4, 0 diff --git a/asm/daycare.s b/asm/daycare.s index 2944f7565..a0ea9124a 100644 --- a/asm/daycare.s +++ b/asm/daycare.s @@ -2279,7 +2279,7 @@ _0804279C: ands r0, r1 cmp r0, 0 beq _080427E8 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0x5 bl PlaySE ldr r3, _080427DC @ =gLastFieldPokeMenuOpened @@ -2311,7 +2311,7 @@ _080427E8: ands r0, r1 cmp r0, 0 beq _08042816 - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r0, _0804281C @ =gLastFieldPokeMenuOpened ldr r1, _08042820 @ =gScriptResult strh r4, [r1] diff --git a/asm/decoration.s b/asm/decoration.s deleted file mode 100644 index 221c749c5..000000000 --- a/asm/decoration.s +++ /dev/null @@ -1,7033 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80FE1DC -sub_80FE1DC: @ 80FE1DC - push {lr} - sub sp, 0x8 - bl sub_80FE2B4 - movs r0, 0 - movs r1, 0 - movs r2, 0xA - movs r3, 0x9 - bl MenuDrawTextWindow - ldr r3, _080FE218 @ =gUnknown_083EC604 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x4 - bl PrintMenuItems - ldr r0, _080FE21C @ =gUnknown_020388D4 - ldrb r0, [r0] - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x4 - bl InitMenu - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080FE218: .4byte gUnknown_083EC604 -_080FE21C: .4byte gUnknown_020388D4 - thumb_func_end sub_80FE1DC - - thumb_func_start sub_80FE220 -sub_80FE220: @ 80FE220 - push {lr} - ldr r1, _080FE238 @ =gUnknown_020388D4 - movs r0, 0 - strb r0, [r1] - bl ScriptContext2_Enable - bl sub_80FE1DC - bl sub_80FE394 - pop {r0} - bx r0 - .align 2, 0 -_080FE238: .4byte gUnknown_020388D4 - thumb_func_end sub_80FE220 - - thumb_func_start DecorationPC -DecorationPC: @ 80FE23C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80FE220 - ldr r1, _080FE25C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080FE260 @ =Task_DecorationPCProcessMenuInput - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FE25C: .4byte gTasks -_080FE260: .4byte Task_DecorationPCProcessMenuInput - thumb_func_end DecorationPC - - thumb_func_start Task_SecretBasePC_Decoration -Task_SecretBasePC_Decoration: @ 80FE264 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DecorationPC - ldr r1, _080FE284 @ =0x0201f000 - ldr r0, _080FE288 @ =gSaveBlock1 + 0x1A1A - str r0, [r1] - adds r0, 0x10 - str r0, [r1, 0x4] - movs r2, 0 - movs r0, 0x10 - strb r0, [r1, 0x8] - strb r2, [r1, 0x9] - pop {r0} - bx r0 - .align 2, 0 -_080FE284: .4byte 0x0201f000 -_080FE288: .4byte gSaveBlock1 + 0x1A1A - thumb_func_end Task_SecretBasePC_Decoration - - thumb_func_start DoPlayerPCDecoration -DoPlayerPCDecoration: @ 80FE28C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DecorationPC - ldr r1, _080FE2AC @ =0x0201f000 - ldr r0, _080FE2B0 @ =gSaveBlock1 + 0x2688 - str r0, [r1] - adds r0, 0xC - str r0, [r1, 0x4] - movs r0, 0xC - strb r0, [r1, 0x8] - movs r0, 0x1 - strb r0, [r1, 0x9] - pop {r0} - bx r0 - .align 2, 0 -_080FE2AC: .4byte 0x0201f000 -_080FE2B0: .4byte gSaveBlock1 + 0x2688 - thumb_func_end DoPlayerPCDecoration - - thumb_func_start sub_80FE2B4 -sub_80FE2B4: @ 80FE2B4 - push {lr} - sub sp, 0x8 - ldr r1, _080FE2E8 @ =gUnknown_083EC654 - mov r0, sp - movs r2, 0x6 - bl memcpy - add r0, sp, 0x4 - movs r1, 0xDF - movs r2, 0x2 - bl LoadPalette - mov r0, sp - adds r0, 0x2 - movs r1, 0xD1 - movs r2, 0x2 - bl LoadPalette - mov r0, sp - movs r1, 0xD8 - movs r2, 0x2 - bl LoadPalette - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080FE2E8: .4byte gUnknown_083EC654 - thumb_func_end sub_80FE2B4 - - thumb_func_start Task_DecorationPCProcessMenuInput -Task_DecorationPCProcessMenuInput: @ 80FE2EC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - adds r7, r6, 0 - ldr r0, _080FE368 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r5, 0x80 - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - bne _080FE38C - ldr r4, _080FE36C @ =gMain - ldrh r1, [r4, 0x2E] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080FE324 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - ldr r1, _080FE370 @ =gUnknown_020388D4 - strb r0, [r1] - bl sub_80FE394 -_080FE324: - ldrh r1, [r4, 0x2E] - adds r0, r5, 0 - ands r0, r1 - cmp r0, 0 - beq _080FE342 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - ldr r1, _080FE370 @ =gUnknown_020388D4 - strb r0, [r1] - bl sub_80FE394 -_080FE342: - ldrh r1, [r4, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FE378 - movs r0, 0x5 - bl PlaySE - ldr r1, _080FE374 @ =gUnknown_083EC604 - ldr r0, _080FE370 @ =gUnknown_020388D4 - ldrb r0, [r0] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r6, 0 - bl _call_via_r1 - b _080FE38C - .align 2, 0 -_080FE368: .4byte gPaletteFade -_080FE36C: .4byte gMain -_080FE370: .4byte gUnknown_020388D4 -_080FE374: .4byte gUnknown_083EC604 -_080FE378: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080FE38C - movs r0, 0x5 - bl PlaySE - adds r0, r7, 0 - bl gpu_pal_decompress_alloc_tag_and_upload -_080FE38C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end Task_DecorationPCProcessMenuInput - - thumb_func_start sub_80FE394 -sub_80FE394: @ 80FE394 - push {lr} - movs r0, 0x2 - movs r1, 0xF - movs r2, 0x1B - movs r3, 0x12 - bl MenuFillWindowRectWithBlankTile - ldr r1, _080FE3BC @ =gUnknown_083EC624 - ldr r0, _080FE3C0 @ =gUnknown_020388D4 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x2 - movs r2, 0xF - bl MenuPrint - pop {r0} - bx r0 - .align 2, 0 -_080FE3BC: .4byte gUnknown_083EC624 -_080FE3C0: .4byte gUnknown_020388D4 - thumb_func_end sub_80FE394 - - thumb_func_start gpu_pal_decompress_alloc_tag_and_upload -gpu_pal_decompress_alloc_tag_and_upload: @ 80FE3C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8072DEC - movs r0, 0 - movs r1, 0 - movs r2, 0xA - movs r3, 0x9 - bl MenuZeroFillWindowRect - movs r0, 0x2 - movs r1, 0xF - movs r2, 0x1B - movs r3, 0x12 - bl MenuFillWindowRectWithBlankTile - movs r0, 0x6 - bl FreeSpritePaletteByTag - ldr r0, _080FE404 @ =0x0201f000 - ldrb r0, [r0, 0x9] - cmp r0, 0 - bne _080FE40C - ldr r0, _080FE408 @ =gUnknown_0815F399 - bl ScriptContext1_SetupScript - adds r0, r4, 0 - bl DestroyTask - b _080FE412 - .align 2, 0 -_080FE404: .4byte 0x0201f000 -_080FE408: .4byte gUnknown_0815F399 -_080FE40C: - adds r0, r4, 0 - bl ReshowPlayerPC -_080FE412: - pop {r4} - pop {r0} - bx r0 - thumb_func_end gpu_pal_decompress_alloc_tag_and_upload - - thumb_func_start sub_80FE418 -sub_80FE418: @ 80FE418 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80FE5AC - pop {r0} - bx r0 - thumb_func_end sub_80FE418 - - thumb_func_start sub_80FE428 -sub_80FE428: @ 80FE428 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080FE464 @ =gUnknown_020388D4 - ldrb r0, [r0] - str r0, [sp] - movs r0, 0x9 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x4 - bl InitMenu - bl sub_80FE394 - ldr r1, _080FE468 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080FE46C @ =Task_DecorationPCProcessMenuInput - str r1, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FE464: .4byte gUnknown_020388D4 -_080FE468: .4byte gTasks -_080FE46C: .4byte Task_DecorationPCProcessMenuInput - thumb_func_end sub_80FE428 - - thumb_func_start sub_80FE470 -sub_80FE470: @ 80FE470 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - adds r4, r0, 0 - mov r8, r1 - mov r9, r2 - adds r5, r3, 0 - lsls r4, 24 - lsrs r4, 24 - mov r0, r8 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r5, 24 - lsrs r5, 24 - bl sub_8072CBC - adds r6, r0, 0 - lsls r6, 24 - lsrs r6, 24 - ldr r7, _080FE51C @ =gStringVar4 - movs r0, 0xFC - strb r0, [r7] - movs r0, 0x5 - mov r10, r0 - strb r0, [r7, 0x1] - strb r5, [r7, 0x2] - adds r7, 0x3 - ldr r1, _080FE520 @ =gUnknown_083EC5E4 - lsls r0, r4, 2 - adds r0, r1 - ldr r1, [r0] - adds r0, r7, 0 - bl StringCopy - adds r7, r0, 0 - adds r0, r4, 0 - bl sub_8134194 - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, r7, 0 - movs r2, 0x56 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r0, 0xBA - strb r0, [r7] - adds r7, 0x1 - ldr r0, _080FE524 @ =gDecorationInventories - lsls r4, 3 - adds r4, r0 - ldrb r1, [r4, 0x4] - adds r0, r7, 0 - movs r2, 0x68 - movs r3, 0x1 - bl sub_8072C14 - adds r7, r0, 0 - movs r0, 0xFC - strb r0, [r7] - mov r0, r10 - strb r0, [r7, 0x1] - strb r6, [r7, 0x2] - movs r0, 0xFF - strb r0, [r7, 0x3] - ldr r0, _080FE51C @ =gStringVar4 - mov r1, r8 - mov r2, r9 - bl MenuPrint - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FE51C: .4byte gStringVar4 -_080FE520: .4byte gUnknown_083EC5E4 -_080FE524: .4byte gDecorationInventories - thumb_func_end sub_80FE470 - - thumb_func_start sub_80FE528 -sub_80FE528: @ 80FE528 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0xE - movs r3, 0x13 - bl MenuDrawTextWindow - movs r5, 0 - ldr r1, _080FE574 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r4, r0, r1 -_080FE548: - ldr r0, _080FE578 @ =0x0201f000 - ldrb r0, [r0, 0x9] - cmp r0, 0x1 - bne _080FE57C - movs r1, 0x1E - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _080FE57C - cmp r5, 0x6 - beq _080FE57C - cmp r5, 0x7 - beq _080FE57C - lsls r2, r5, 1 - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r3, 0xD - bl sub_80FE470 - b _080FE58E - .align 2, 0 -_080FE574: .4byte gTasks -_080FE578: .4byte 0x0201f000 -_080FE57C: - lsls r2, r5, 1 - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - movs r1, 0x1 - movs r3, 0xFF - bl sub_80FE470 -_080FE58E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x7 - bls _080FE548 - ldr r0, _080FE5A8 @ =gUnknownText_Exit - movs r1, 0x1 - movs r2, 0x11 - bl MenuPrint - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FE5A8: .4byte gUnknownText_Exit - thumb_func_end sub_80FE528 - - thumb_func_start sub_80FE5AC -sub_80FE5AC: @ 80FE5AC - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8072DEC - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl sub_80FE528 - ldr r0, _080FE5F8 @ =gUnknown_020388F6 - ldrb r0, [r0] - str r0, [sp] - movs r0, 0xD - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x9 - bl InitMenu - ldr r1, _080FE5FC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080FE600 @ =sub_80FE604 - str r1, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FE5F8: .4byte gUnknown_020388F6 -_080FE5FC: .4byte gTasks -_080FE600: .4byte sub_80FE604 - thumb_func_end sub_80FE5AC - - thumb_func_start sub_80FE604 -sub_80FE604: @ 80FE604 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, r5, 0 - ldr r0, _080FE638 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r3, 0x80 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080FE61C - b _080FE720 -_080FE61C: - ldr r2, _080FE63C @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080FE640 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _080FE720 - .align 2, 0 -_080FE638: .4byte gPaletteFade -_080FE63C: .4byte gMain -_080FE640: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _080FE656 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _080FE720 -_080FE656: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FE70C - movs r0, 0x5 - bl PlaySE - bl GetMenuCursorPos - ldr r4, _080FE6C0 @ =gUnknown_020388F6 - strb r0, [r4] - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x8 - beq _080FE704 - ldrb r0, [r4] - bl sub_8134194 - ldr r1, _080FE6C4 @ =gUnknown_020388D5 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - beq _080FE6DC - ldrb r0, [r4] - bl sub_8134104 - ldr r2, _080FE6C8 @ =gUnknown_020388D0 - ldr r1, _080FE6CC @ =gDecorationInventories - ldrb r0, [r4] - lsls r0, 3 - adds r0, r1 - ldr r0, [r0] - str r0, [r2] - adds r0, r5, 0 - bl sub_80FEF50 - bl sub_80F944C - ldr r0, _080FE6D0 @ =gUnknown_020388F7 - movs r1, 0x8 - bl sub_80F9480 - bl LoadScrollIndicatorPalette - ldr r1, _080FE6D4 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldr r1, _080FE6D8 @ =sub_80FE868 - str r1, [r0] - b _080FE720 - .align 2, 0 -_080FE6C0: .4byte gUnknown_020388F6 -_080FE6C4: .4byte gUnknown_020388D5 -_080FE6C8: .4byte gUnknown_020388D0 -_080FE6CC: .4byte gDecorationInventories -_080FE6D0: .4byte gUnknown_020388F7 -_080FE6D4: .4byte gTasks -_080FE6D8: .4byte sub_80FE868 -_080FE6DC: - bl sub_8072DEC - movs r0, 0 - movs r1, 0 - movs r2, 0xE - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _080FE6FC @ =gSecretBaseText_NoDecors - ldr r2, _080FE700 @ =sub_80FE418 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _080FE720 - .align 2, 0 -_080FE6FC: .4byte gSecretBaseText_NoDecors -_080FE700: .4byte sub_80FE418 -_080FE704: - adds r0, r5, 0 - bl sub_80FE728 - b _080FE720 -_080FE70C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080FE720 - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_80FE728 -_080FE720: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FE604 - - thumb_func_start sub_80FE728 -sub_80FE728: @ 80FE728 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080FE748 @ =gTasks - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1E - ldrsh r0, [r0, r1] - cmp r0, 0x3 - beq _080FE74C - adds r0, r2, 0 - bl sub_80FE758 - b _080FE752 - .align 2, 0 -_080FE748: .4byte gTasks -_080FE74C: - adds r0, r2, 0 - bl sub_8109DAC -_080FE752: - pop {r0} - bx r0 - thumb_func_end sub_80FE728 - - thumb_func_start sub_80FE758 -sub_80FE758: @ 80FE758 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_8072DEC - movs r0, 0 - movs r1, 0 - movs r2, 0xE - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _080FE794 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0x1E - ldrsh r0, [r5, r1] - cmp r0, 0x2 - beq _080FE79C - bl sub_80FE1DC - bl MenuDisplayMessageBox - bl sub_80FE394 - ldr r0, _080FE798 @ =Task_DecorationPCProcessMenuInput - str r0, [r5] - b _080FE7A2 - .align 2, 0 -_080FE794: .4byte gTasks -_080FE798: .4byte Task_DecorationPCProcessMenuInput -_080FE79C: - adds r0, r4, 0 - bl sub_80B3068 -_080FE7A2: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_80FE758 - - thumb_func_start sub_80FE7A8 -sub_80FE7A8: @ 80FE7A8 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080FE7CC @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r3, 0 - movs r2, 0x3 - strh r2, [r1, 0x1E] - ldr r1, _080FE7D0 @ =gUnknown_020388F6 - strb r3, [r1] - bl sub_80FE5AC - pop {r0} - bx r0 - .align 2, 0 -_080FE7CC: .4byte gTasks -_080FE7D0: .4byte gUnknown_020388F6 - thumb_func_end sub_80FE7A8 - - thumb_func_start sub_80FE7D4 -sub_80FE7D4: @ 80FE7D4 - push {lr} - lsls r1, 24 - ldr r2, _080FE7E8 @ =gUnknown_083EC5E4 - lsrs r1, 22 - adds r1, r2 - ldr r1, [r1] - bl StringCopy - pop {r0} - bx r0 - .align 2, 0 -_080FE7E8: .4byte gUnknown_083EC5E4 - thumb_func_end sub_80FE7D4 - - .section .text_80FE868 - - thumb_func_start sub_80FE868 -sub_80FE868: @ 80FE868 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_80FE7EC - ldr r1, _080FE88C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080FE890 @ =sub_80FE948 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FE88C: .4byte gTasks -_080FE890: .4byte sub_80FE948 - thumb_func_end sub_80FE868 - - thumb_func_start sub_80FE894 -sub_80FE894: @ 80FE894 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r7, r2, 24 - movs r0, 0 - mov r10, r0 - ldr r6, _080FE920 @ =gUnknown_020388F2 - ldrb r1, [r6] - ldr r4, _080FE924 @ =gUnknown_020388F4 - ldrb r0, [r4] - adds r1, r0 - ldr r2, _080FE928 @ =gUnknown_020388D5 - mov r9, r2 - ldrb r0, [r2] - cmp r1, r0 - bne _080FE8C8 - movs r1, 0x1 - mov r10, r1 -_080FE8C8: - movs r0, 0x5 - bl PlaySE - lsls r0, r5, 24 - asrs r0, 24 - cmp r0, 0 - beq _080FE8DC - bl MoveMenuCursor - strb r0, [r6] -_080FE8DC: - cmp r7, 0 - beq _080FE8EE - ldrb r0, [r4] - adds r0, r7 - strb r0, [r4] - mov r0, r8 - movs r1, 0x1 - bl sub_80FEABC -_080FE8EE: - ldrb r0, [r6] - ldrb r1, [r4] - adds r0, r1 - mov r2, r9 - ldrb r2, [r2] - cmp r0, r2 - beq _080FE92C - mov r0, r10 - cmp r0, 0 - beq _080FE90E - movs r0, 0xF - movs r1, 0xC - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow -_080FE90E: - ldrb r0, [r4] - ldrb r6, [r6] - adds r0, r6 - lsls r0, 24 - lsrs r0, 24 - bl sub_80FECE0 - b _080FE938 - .align 2, 0 -_080FE920: .4byte gUnknown_020388F2 -_080FE924: .4byte gUnknown_020388F4 -_080FE928: .4byte gUnknown_020388D5 -_080FE92C: - movs r0, 0xF - movs r1, 0xC - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect -_080FE938: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FE894 - - thumb_func_start sub_80FE948 -sub_80FE948: @ 80FE948 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080FE980 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080FE95C - b _080FEAAC -_080FE95C: - ldr r0, _080FE984 @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0x40 - bne _080FE9A0 - ldr r0, _080FE988 @ =gUnknown_020388F2 - ldrb r0, [r0] - cmp r0, 0 - beq _080FE98C - movs r1, 0x1 - negs r1, r1 - adds r0, r4, 0 - movs r2, 0 - bl sub_80FE894 - b _080FE9A0 - .align 2, 0 -_080FE980: .4byte gPaletteFade -_080FE984: .4byte gMain -_080FE988: .4byte gUnknown_020388F2 -_080FE98C: - ldr r0, _080FE9C4 @ =gUnknown_020388F4 - ldrb r0, [r0] - cmp r0, 0 - beq _080FE9A0 - movs r2, 0x1 - negs r2, r2 - adds r0, r4, 0 - movs r1, 0 - bl sub_80FE894 -_080FE9A0: - ldr r0, _080FE9C8 @ =gMain - ldrh r1, [r0, 0x30] - movs r0, 0xF0 - ands r0, r1 - cmp r0, 0x80 - bne _080FE9EE - ldr r2, _080FE9CC @ =gUnknown_020388F2 - ldr r1, _080FE9D0 @ =gUnknown_020388F3 - ldrb r0, [r2] - ldrb r1, [r1] - cmp r0, r1 - beq _080FE9D4 - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0 - bl sub_80FE894 - b _080FE9EE - .align 2, 0 -_080FE9C4: .4byte gUnknown_020388F4 -_080FE9C8: .4byte gMain -_080FE9CC: .4byte gUnknown_020388F2 -_080FE9D0: .4byte gUnknown_020388F3 -_080FE9D4: - ldr r0, _080FEA38 @ =gUnknown_020388F4 - ldrb r0, [r0] - ldrb r1, [r2] - adds r0, r1 - ldr r1, _080FEA3C @ =gUnknown_020388D5 - ldrb r1, [r1] - cmp r0, r1 - beq _080FE9EE - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - bl sub_80FE894 -_080FE9EE: - ldr r0, _080FEA40 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080FEA7C - bl sub_8072DEC - movs r0, 0x5 - bl PlaySE - ldr r2, _080FEA44 @ =gUnknown_020388F5 - ldr r1, _080FEA48 @ =gUnknown_020388F2 - ldr r0, _080FEA38 @ =gUnknown_020388F4 - ldrb r0, [r0] - ldrb r1, [r1] - adds r0, r1 - strb r0, [r2] - ldr r1, _080FEA3C @ =gUnknown_020388D5 - lsls r0, 24 - lsrs r0, 24 - ldrb r1, [r1] - cmp r0, r1 - bne _080FEA54 - ldr r1, _080FEA4C @ =gUnknown_083EC634 - ldr r2, _080FEA50 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - movs r2, 0x1E - ldrsh r0, [r0, r2] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - b _080FEA68 - .align 2, 0 -_080FEA38: .4byte gUnknown_020388F4 -_080FEA3C: .4byte gUnknown_020388D5 -_080FEA40: .4byte gMain -_080FEA44: .4byte gUnknown_020388F5 -_080FEA48: .4byte gUnknown_020388F2 -_080FEA4C: .4byte gUnknown_083EC634 -_080FEA50: .4byte gTasks -_080FEA54: - ldr r2, _080FEA74 @ =gUnknown_083EC634 - ldr r1, _080FEA78 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1E - ldrsh r0, [r0, r1] - lsls r0, 3 - adds r0, r2 -_080FEA68: - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 - b _080FEAAC - .align 2, 0 -_080FEA74: .4byte gUnknown_083EC634 -_080FEA78: .4byte gTasks -_080FEA7C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080FEAAC - bl sub_8072DEC - movs r0, 0x5 - bl PlaySE - ldr r1, _080FEAB4 @ =gUnknown_083EC634 - ldr r2, _080FEAB8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r2 - movs r2, 0x1E - ldrsh r0, [r0, r2] - lsls r0, 3 - adds r1, 0x4 - adds r0, r1 - ldr r1, [r0] - adds r0, r4, 0 - bl _call_via_r1 -_080FEAAC: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FEAB4: .4byte gUnknown_083EC634 -_080FEAB8: .4byte gTasks - thumb_func_end sub_80FE948 - - thumb_func_start sub_80FEABC -sub_80FEABC: @ 80FEABC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r4, _080FEB58 @ =gUnknown_020388F4 - ldrb r0, [r4] - cmp r0, 0 - bne _080FEADE - movs r0, 0 - bl DestroyVerticalScrollIndicator - ldrb r0, [r4] - cmp r0, 0 - beq _080FEAE8 -_080FEADE: - movs r0, 0 - movs r1, 0x3C - movs r2, 0x8 - bl CreateVerticalScrollIndicators -_080FEAE8: - ldr r5, _080FEB58 @ =gUnknown_020388F4 - ldrb r0, [r5] - adds r0, 0x7 - ldr r4, _080FEB5C @ =gUnknown_020388D5 - ldrb r1, [r4] - cmp r0, r1 - bne _080FEAFC - movs r0, 0x1 - bl DestroyVerticalScrollIndicator -_080FEAFC: - ldrb r0, [r5] - adds r0, 0x7 - ldrb r4, [r4] - cmp r0, r4 - bge _080FEB10 - movs r0, 0x1 - movs r1, 0x3C - movs r2, 0x98 - bl CreateVerticalScrollIndicators -_080FEB10: - ldrb r4, [r5] - adds r0, r4, 0 - adds r0, 0x8 - cmp r4, r0 - blt _080FEB1C - b _080FEC7E -_080FEB1C: - adds r7, r5, 0 -_080FEB1E: - ldrb r1, [r7] - subs r1, r4, r1 - lsls r0, r1, 25 - movs r2, 0x80 - lsls r2, 18 - adds r0, r2 - lsrs r6, r0, 24 - ldr r0, _080FEB60 @ =gUnknown_020388F7 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080FEB3C - adds r0, r1, 0 - bl sub_80F94F8 -_080FEB3C: - ldr r0, _080FEB5C @ =gUnknown_020388D5 - ldrb r0, [r0] - cmp r4, r0 - bne _080FEB68 - lsls r2, r6, 3 - movs r0, 0x1 - str r0, [sp] - ldr r0, _080FEB64 @ =gUnknownText_Exit - movs r1, 0x8 - movs r3, 0x68 - bl sub_8072A18 - b _080FEC7E - .align 2, 0 -_080FEB58: .4byte gUnknown_020388F4 -_080FEB5C: .4byte gUnknown_020388D5 -_080FEB60: .4byte gUnknown_020388F7 -_080FEB64: .4byte gUnknownText_Exit -_080FEB68: - ldr r0, _080FEBC0 @ =gUnknown_020388D0 - ldr r1, [r0] - adds r2, r1, r4 - ldrb r1, [r2] - mov r12, r0 - adds r5, r4, 0x1 - cmp r1, 0 - bne _080FEB7A - b _080FEC70 -_080FEB7A: - ldr r0, _080FEBC4 @ =0x0201f000 - ldrb r5, [r0, 0x9] - cmp r5, 0x1 - bne _080FEBDC - ldr r0, _080FEBC8 @ =gUnknown_020388F6 - ldrb r0, [r0] - cmp r0, 0x6 - beq _080FEBDC - cmp r0, 0x7 - beq _080FEBDC - ldr r0, _080FEBCC @ =gTasks - mov r3, r8 - lsls r1, r3, 2 - add r1, r8 - lsls r1, 3 - adds r1, r0 - movs r3, 0x1E - ldrsh r0, [r1, r3] - cmp r0, 0 - bne _080FEBDC - ldrb r1, [r2] - lsls r1, 5 - ldr r0, _080FEBD0 @ =gDecorations + 0x1 - adds r1, r0 - ldr r0, _080FEBD4 @ =gStringVar1 - bl StringCopy - lsls r2, r6, 3 - str r5, [sp] - ldr r0, _080FEBD8 @ =gUnknown_083EC65A - movs r1, 0x8 - movs r3, 0x68 - bl sub_8072A18 - b _080FEBF8 - .align 2, 0 -_080FEBC0: .4byte gUnknown_020388D0 -_080FEBC4: .4byte 0x0201f000 -_080FEBC8: .4byte gUnknown_020388F6 -_080FEBCC: .4byte gTasks -_080FEBD0: .4byte gDecorations + 0x1 -_080FEBD4: .4byte gStringVar1 -_080FEBD8: .4byte gUnknown_083EC65A -_080FEBDC: - mov r1, r12 - ldr r0, [r1] - adds r0, r4 - ldrb r0, [r0] - lsls r0, 5 - ldr r1, _080FEC00 @ =gDecorations + 0x1 - adds r0, r1 - lsls r2, r6, 3 - movs r1, 0x1 - str r1, [sp] - movs r1, 0x8 - movs r3, 0x68 - bl sub_8072A18 -_080FEBF8: - movs r1, 0 - adds r5, r4, 0x1 - b _080FEC0A - .align 2, 0 -_080FEC00: .4byte gDecorations + 0x1 -_080FEC04: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 -_080FEC0A: - cmp r1, 0xF - bhi _080FEC34 - ldr r0, _080FEC38 @ =gUnknown_020388D6 - adds r0, r1, r0 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, r4 - bne _080FEC04 - ldrb r3, [r7] - subs r3, r4, r3 - ldr r1, _080FEC3C @ =gUnknown_020388F7 - adds r1, r3, r1 - lsls r3, 20 - movs r2, 0xC0 - lsls r2, 13 - adds r3, r2 - asrs r3, 16 - movs r0, 0x4 - movs r2, 0x6C - bl sub_80F94A4 -_080FEC34: - movs r1, 0 - b _080FEC46 - .align 2, 0 -_080FEC38: .4byte gUnknown_020388D6 -_080FEC3C: .4byte gUnknown_020388F7 -_080FEC40: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 -_080FEC46: - cmp r1, 0xB - bhi _080FEC70 - ldr r0, _080FEC8C @ =gUnknown_020388E6 - adds r0, r1, r0 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, r4 - bne _080FEC40 - ldrb r3, [r7] - subs r3, r4, r3 - ldr r1, _080FEC90 @ =gUnknown_020388F7 - adds r1, r3, r1 - lsls r3, 20 - movs r0, 0xC0 - lsls r0, 13 - adds r3, r0 - asrs r3, 16 - movs r0, 0x5 - movs r2, 0x6C - bl sub_80F94A4 -_080FEC70: - lsls r0, r5, 16 - lsrs r4, r0, 16 - ldrb r0, [r7] - adds r0, 0x8 - cmp r4, r0 - bge _080FEC7E - b _080FEB1E -_080FEC7E: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FEC8C: .4byte gUnknown_020388E6 -_080FEC90: .4byte gUnknown_020388F7 - thumb_func_end sub_80FEABC - - thumb_func_start sub_80FEC94 -sub_80FEC94: @ 80FEC94 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0xE - movs r3, 0x13 - bl MenuDrawTextWindow - adds r0, r4, 0 - movs r1, 0 - bl sub_80FEABC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FEC94 - - thumb_func_start sub_80FECB8 -sub_80FECB8: @ 80FECB8 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0xF - movs r1, 0 - movs r2, 0x1D - movs r3, 0x3 - bl MenuDrawTextWindow - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x1 - movs r3, 0xFF - bl sub_80FE470 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FECB8 - - thumb_func_start sub_80FECE0 -sub_80FECE0: @ 80FECE0 - push {lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080FED14 @ =gDecorations - ldr r1, _080FED18 @ =gUnknown_020388D0 - ldr r1, [r1] - adds r1, r0 - ldrb r0, [r1] - lsls r0, 5 - adds r2, 0x18 - adds r0, r2 - ldr r0, [r0] - movs r1, 0x30 - str r1, [sp] - movs r1, 0x1 - str r1, [sp, 0x4] - movs r1, 0x80 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_080FED14: .4byte gDecorations -_080FED18: .4byte gUnknown_020388D0 - thumb_func_end sub_80FECE0 - - thumb_func_start sub_80FED1C -sub_80FED1C: @ 80FED1C - push {lr} - movs r0, 0xF - movs r1, 0 - movs r2, 0x1D - movs r3, 0x3 - bl MenuZeroFillWindowRect - movs r0, 0xF - movs r1, 0xC - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - thumb_func_end sub_80FED1C - - thumb_func_start sub_80FED3C -sub_80FED3C: @ 80FED3C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl LoadScrollIndicatorPalette - ldr r1, _080FED5C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080FED60 @ =sub_80FE868 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FED5C: .4byte gTasks -_080FED60: .4byte sub_80FE868 - thumb_func_end sub_80FED3C - - thumb_func_start sub_80FED64 -sub_80FED64: @ 80FED64 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - movs r1, 0 - ldr r3, _080FED7C @ =gUnknown_020388D6 -_080FED6E: - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _080FED80 - movs r0, 0x1 - b _080FED8C - .align 2, 0 -_080FED7C: .4byte gUnknown_020388D6 -_080FED80: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080FED6E - movs r0, 0 -_080FED8C: - pop {r1} - bx r1 - thumb_func_end sub_80FED64 - - thumb_func_start sub_80FED90 -sub_80FED90: @ 80FED90 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - movs r6, 0 - movs r3, 0 - ldr r4, _080FEE30 @ =gUnknown_020388D6 - movs r1, 0 - ldr r2, _080FEE34 @ =gUnknown_020388E6 -_080FEDA4: - adds r0, r3, r4 - strb r1, [r0] - cmp r3, 0xB - bhi _080FEDB0 - adds r0, r3, r2 - strb r1, [r0] -_080FEDB0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0xF - bls _080FEDA4 - movs r3, 0 - ldr r0, _080FEE38 @ =gSaveBlock1 + 0x1A1A - mov r10, r0 - ldr r1, _080FEE3C @ =gDecorationInventories - mov r9, r1 - ldr r2, _080FEE40 @ =gUnknown_020388F6 - mov r8, r2 -_080FEDC8: - mov r1, r10 - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080FEE5A - movs r1, 0 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 3 - add r0, r9 - ldrb r0, [r0, 0x4] - cmp r1, r0 - bcs _080FEE5A - ldr r0, _080FEE38 @ =gSaveBlock1 + 0x1A1A - adds r0, r3 - mov r12, r0 - ldr r7, _080FEE30 @ =gUnknown_020388D6 -_080FEDEA: - ldr r0, _080FEE44 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - adds r4, r1, 0x1 - mov r1, r12 - ldrb r1, [r1] - cmp r0, r1 - bne _080FEE48 - movs r1, 0 - cmp r1, r6 - bcs _080FEE1E - ldrb r0, [r7] - cmp r0, r4 - beq _080FEE1E - ldr r5, _080FEE30 @ =gUnknown_020388D6 - adds r2, r4, 0 -_080FEE0C: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r6 - bcs _080FEE1E - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, r2 - bne _080FEE0C -_080FEE1E: - cmp r1, r6 - bne _080FEE48 - adds r0, r6, r7 - strb r4, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - b _080FEE5A - .align 2, 0 -_080FEE30: .4byte gUnknown_020388D6 -_080FEE34: .4byte gUnknown_020388E6 -_080FEE38: .4byte gSaveBlock1 + 0x1A1A -_080FEE3C: .4byte gDecorationInventories -_080FEE40: .4byte gUnknown_020388F6 -_080FEE44: .4byte gUnknown_020388D0 -_080FEE48: - lsls r0, r4, 16 - lsrs r1, r0, 16 - mov r2, r8 - ldrb r0, [r2] - lsls r0, 3 - add r0, r9 - ldrb r0, [r0, 0x4] - cmp r1, r0 - bcc _080FEDEA -_080FEE5A: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0xF - bls _080FEDC8 - movs r6, 0 - movs r3, 0 - ldr r0, _080FEEE4 @ =gDecorationInventories - mov r8, r0 -_080FEE6C: - ldr r0, _080FEEE8 @ =gSaveBlock1 - ldr r1, _080FEEEC @ =0x00002688 - adds r0, r1 - adds r2, r3, r0 - ldrb r0, [r2] - adds r7, r3, 0x1 - cmp r0, 0 - beq _080FEF0E - movs r1, 0 - ldr r0, _080FEEF0 @ =gUnknown_020388F6 - ldrb r0, [r0] - lsls r0, 3 - add r0, r8 - ldrb r0, [r0, 0x4] - cmp r1, r0 - bcs _080FEF0E - adds r5, r2, 0 -_080FEE8E: - ldr r0, _080FEEF4 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - adds r4, r1, 0x1 - ldrb r2, [r5] - cmp r0, r2 - bne _080FEEFC - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80FED64 - lsls r0, 24 - cmp r0, 0 - bne _080FEEFC - movs r1, 0 - cmp r1, r6 - bcs _080FEED0 - ldr r2, _080FEEF8 @ =gUnknown_020388E6 - ldrb r0, [r2] - cmp r0, r4 - beq _080FEED0 - adds r3, r2, 0 - adds r2, r4, 0 -_080FEEBE: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r6 - bcs _080FEED0 - adds r0, r1, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _080FEEBE -_080FEED0: - cmp r1, r6 - bne _080FEEFC - ldr r0, _080FEEF8 @ =gUnknown_020388E6 - adds r0, r6, r0 - strb r4, [r0] - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - b _080FEF0E - .align 2, 0 -_080FEEE4: .4byte gDecorationInventories -_080FEEE8: .4byte gSaveBlock1 -_080FEEEC: .4byte 0x00002688 -_080FEEF0: .4byte gUnknown_020388F6 -_080FEEF4: .4byte gUnknown_020388D0 -_080FEEF8: .4byte gUnknown_020388E6 -_080FEEFC: - lsls r0, r4, 16 - lsrs r1, r0, 16 - ldr r0, _080FEF24 @ =gUnknown_020388F6 - ldrb r0, [r0] - lsls r0, 3 - add r0, r8 - ldrb r0, [r0, 0x4] - cmp r1, r0 - bcc _080FEE8E -_080FEF0E: - lsls r0, r7, 16 - lsrs r3, r0, 16 - cmp r3, 0xB - bls _080FEE6C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080FEF24: .4byte gUnknown_020388F6 - thumb_func_end sub_80FED90 - - thumb_func_start sub_80FEF28 -sub_80FEF28: @ 80FEF28 - push {lr} - ldr r0, _080FEF38 @ =gUnknown_020388D5 - ldrb r1, [r0] - cmp r1, 0x7 - bhi _080FEF40 - ldr r0, _080FEF3C @ =gUnknown_020388F3 - strb r1, [r0] - b _080FEF46 - .align 2, 0 -_080FEF38: .4byte gUnknown_020388D5 -_080FEF3C: .4byte gUnknown_020388F3 -_080FEF40: - ldr r1, _080FEF4C @ =gUnknown_020388F3 - movs r0, 0x7 - strb r0, [r1] -_080FEF46: - pop {r0} - bx r0 - .align 2, 0 -_080FEF4C: .4byte gUnknown_020388F3 - thumb_func_end sub_80FEF28 - - thumb_func_start sub_80FEF50 -sub_80FEF50: @ 80FEF50 - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl sub_80FED90 - bl sub_80FEF28 - ldr r0, _080FEF6C @ =gUnknown_020388F2 - movs r1, 0 - strb r1, [r0] - ldr r0, _080FEF70 @ =gUnknown_020388F4 - strb r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_080FEF6C: .4byte gUnknown_020388F2 -_080FEF70: .4byte gUnknown_020388F4 - thumb_func_end sub_80FEF50 - - thumb_func_start sub_80FEF74 -sub_80FEF74: @ 80FEF74 - push {lr} - ldr r0, _080FEFA0 @ =gUnknown_020388F7 - movs r1, 0x8 - bl sub_80F9520 - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - bl sub_8072DEC - movs r0, 0 - movs r1, 0 - movs r2, 0xE - movs r3, 0x13 - bl MenuZeroFillWindowRect - pop {r0} - bx r0 - .align 2, 0 -_080FEFA0: .4byte gUnknown_020388F7 - thumb_func_end sub_80FEF74 - - thumb_func_start sub_80FEFA4 -sub_80FEFA4: @ 80FEFA4 - push {r4,lr} - movs r2, 0 - ldr r0, _080FEFD0 @ =gUnknown_020388F4 - ldrb r0, [r0] - ldr r1, _080FEFD4 @ =gUnknown_020388F2 - ldrb r1, [r1] - adds r0, r1 - adds r1, r0, 0x1 - ldr r4, _080FEFD8 @ =gUnknown_020388D6 - ldr r3, _080FEFDC @ =gUnknown_020388E6 -_080FEFB8: - adds r0, r2, r4 - ldrb r0, [r0] - cmp r0, r1 - beq _080FEFCC - cmp r2, 0xB - bhi _080FEFE0 - adds r0, r2, r3 - ldrb r0, [r0] - cmp r0, r1 - bne _080FEFE0 -_080FEFCC: - movs r0, 0 - b _080FEFEC - .align 2, 0 -_080FEFD0: .4byte gUnknown_020388F4 -_080FEFD4: .4byte gUnknown_020388F2 -_080FEFD8: .4byte gUnknown_020388D6 -_080FEFDC: .4byte gUnknown_020388E6 -_080FEFE0: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _080FEFB8 - movs r0, 0x1 -_080FEFEC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FEFA4 - - thumb_func_start sub_80FEFF4 -sub_80FEFF4: @ 80FEFF4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080FF028 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080FF00E - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080FF020 -_080FF00E: - bl LoadScrollIndicatorPalette - ldr r0, _080FF02C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080FF030 @ =sub_80FE868 - str r0, [r1] -_080FF020: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF028: .4byte gMain -_080FF02C: .4byte gTasks -_080FF030: .4byte sub_80FE868 - thumb_func_end sub_80FEFF4 - - thumb_func_start sub_80FF034 -sub_80FF034: @ 80FF034 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8072DEC - movs r0, 0 - movs r1, 0 - movs r2, 0xE - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl sub_80FE5AC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FF034 - - thumb_func_start sub_80FF058 -sub_80FF058: @ 80FF058 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080FF08C @ =gUnknown_020388F7 - movs r1, 0x8 - bl sub_80F9520 - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - bl BuyMenuFreeMemory - ldr r1, _080FF090 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080FF094 @ =sub_80FF034 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF08C: .4byte gUnknown_020388F7 -_080FF090: .4byte gTasks -_080FF094: .4byte sub_80FF034 - thumb_func_end sub_80FF058 - - thumb_func_start sub_80FF098 -sub_80FF098: @ 80FF098 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080FF0D4 @ =gUnknown_020388D5 - ldrb r0, [r1] - subs r0, 0x1 - strb r0, [r1] - ldr r3, _080FF0D8 @ =gUnknown_020388F4 - ldrb r2, [r3] - adds r0, r2, 0x7 - ldrb r1, [r1] - cmp r0, r1 - ble _080FF0BA - cmp r2, 0 - beq _080FF0BA - subs r0, r2, 0x1 - strb r0, [r3] -_080FF0BA: - ldr r0, _080FF0DC @ =gUnknown_020388F6 - ldrb r0, [r0] - bl sub_8134104 - adds r0, r4, 0 - bl sub_80FED90 - bl sub_80FEF28 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF0D4: .4byte gUnknown_020388D5 -_080FF0D8: .4byte gUnknown_020388F4 -_080FF0DC: .4byte gUnknown_020388F6 - thumb_func_end sub_80FF098 - - thumb_func_start sub_80FF0E0 -sub_80FF0E0: @ 80FF0E0 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080FF10C @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r4, r2, r3 - ldr r1, _080FF110 @ =gSaveBlock1 - ldrh r0, [r1] - strh r0, [r4, 0xE] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x10] - adds r3, 0x8 - adds r2, r3 - adds r1, r2, 0x2 - adds r0, r2, 0 - bl PlayerGetDestCoords - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF10C: .4byte gTasks -_080FF110: .4byte gSaveBlock1 - thumb_func_end sub_80FF0E0 - - thumb_func_start sub_80FF114 -sub_80FF114: @ 80FF114 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - bl DrawWholeMapView - ldr r1, _080FF158 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - ldr r3, _080FF15C @ =gTasks - lsls r4, r5, 2 - adds r4, r5 - lsls r4, 3 - adds r4, r3 - movs r3, 0xE - ldrsb r3, [r4, r3] - ldrb r4, [r4, 0x10] - lsls r4, 24 - asrs r4, 24 - str r4, [sp] - bl warp1_set - bl warp_in - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FF158: .4byte gSaveBlock1 -_080FF15C: .4byte gTasks - thumb_func_end sub_80FF114 - - thumb_func_start sub_80FF160 -sub_80FF160: @ 80FF160 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_81341D4 - lsls r0, 24 - cmp r0, 0 - bne _080FF188 - ldr r1, _080FF180 @ =gSecretBaseText_NoDecors - ldr r2, _080FF184 @ =sub_80FE428 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _080FF1A2 - .align 2, 0 -_080FF180: .4byte gSecretBaseText_NoDecors -_080FF184: .4byte sub_80FE428 -_080FF188: - ldr r1, _080FF1A8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x1E] - ldr r0, _080FF1AC @ =gUnknown_020388F6 - strb r2, [r0] - adds r0, r4, 0 - bl sub_80FE5AC -_080FF1A2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF1A8: .4byte gTasks -_080FF1AC: .4byte gUnknown_020388F6 - thumb_func_end sub_80FF160 - - thumb_func_start sub_80FF1B0 -sub_80FF1B0: @ 80FF1B0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _080FF1D0 @ =0x0000ffff - cmp r2, 0x22 - beq _080FF1D8 - cmp r2, 0x26 - bne _080FF1E2 - ldr r0, _080FF1D4 @ =gUnknown_083EC97C - adds r0, r1, r0 - ldrb r0, [r0] - lsls r0, 28 - lsrs r0, 16 - b _080FF1E2 - .align 2, 0 -_080FF1D0: .4byte 0x0000ffff -_080FF1D4: .4byte gUnknown_083EC97C -_080FF1D8: - ldr r0, _080FF1E8 @ =gUnknown_083EC984 - adds r0, r1, r0 - ldrb r0, [r0] - lsls r0, 28 - lsrs r0, 16 -_080FF1E2: - pop {r1} - bx r1 - .align 2, 0 -_080FF1E8: .4byte gUnknown_083EC984 - thumb_func_end sub_80FF1B0 - - thumb_func_start sub_80FF1EC -sub_80FF1EC: @ 80FF1EC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x34 - ldr r4, [sp, 0x54] - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x4] - lsls r2, 24 - lsrs r2, 24 - str r2, [sp, 0x8] - lsls r3, 24 - lsrs r3, 24 - str r3, [sp, 0xC] - lsls r4, 16 - lsrs r4, 16 - str r4, [sp, 0x10] - movs r2, 0 - lsls r0, r3, 16 - cmp r2, r3 - bcc _080FF222 - b _080FF384 -_080FF222: - ldr r1, [sp, 0x8] - str r1, [sp, 0x28] - str r0, [sp, 0x2C] -_080FF228: - ldr r3, [sp, 0x4] - ldr r4, [sp, 0xC] - subs r1, r3, r4 - lsls r0, r2, 16 - asrs r0, 16 - adds r0, 0x1 - adds r1, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp, 0x14] - movs r0, 0 - mov r10, r0 - adds r1, r2, 0x1 - str r1, [sp, 0x30] - ldr r3, [sp, 0x28] - cmp r10, r3 - bcc _080FF24C - b _080FF374 -_080FF24C: - ldr r4, [sp, 0x10] - lsls r4, 5 - str r4, [sp, 0x18] - ldr r0, _080FF2B4 @ =gDecorations + 0x1C - adds r0, r4, r0 - str r0, [sp, 0x1C] - ldr r0, _080FF2B8 @ =gDecorations - adds r0, r4, r0 - str r0, [sp, 0x24] - ldr r3, [sp, 0x8] - adds r1, r2, 0 - muls r1, r3 - str r1, [sp, 0x20] -_080FF266: - ldr r0, [sp] - add r0, r10 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r1, [sp, 0x20] - add r1, r10 - ldr r4, [sp, 0x1C] - ldr r0, [r4] - lsls r1, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - lsls r4, r0, 16 - lsls r0, r4, 8 - lsrs r0, 24 - bl sub_8057288 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FF2AC - ldr r3, [sp, 0x24] - ldrb r0, [r3, 0x11] - cmp r0, 0x1 - beq _080FF2BC - lsrs r0, r4, 28 - cmp r0, 0 - beq _080FF2BC -_080FF2AC: - movs r4, 0xC0 - lsls r4, 4 - mov r8, r4 - b _080FF2C0 - .align 2, 0 -_080FF2B4: .4byte gDecorations + 0x1C -_080FF2B8: .4byte gDecorations -_080FF2BC: - movs r0, 0 - mov r8, r0 -_080FF2C0: - ldr r1, [sp, 0x24] - ldrb r0, [r1, 0x11] - lsls r7, r5, 16 - ldr r2, [sp, 0x14] - lsls r2, 16 - mov r9, r2 - cmp r0, 0x3 - beq _080FF2EA - asrs r0, r7, 16 - asrs r1, r2, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl sub_80572B0 - lsls r0, 24 - lsrs r0, 24 - movs r6, 0x1 - cmp r0, 0x1 - beq _080FF2EC -_080FF2EA: - movs r6, 0 -_080FF2EC: - ldr r3, [sp, 0x18] - ldr r4, _080FF334 @ =gDecorations - adds r0, r3, r4 - ldrb r0, [r0] - ldr r4, [sp, 0x20] - add r4, r10 - lsls r1, r4, 24 - lsrs r1, 24 - bl sub_80FF1B0 - lsls r0, 16 - lsrs r5, r0, 16 - ldr r0, _080FF338 @ =0x0000ffff - cmp r5, r0 - beq _080FF33C - asrs r0, r7, 16 - mov r2, r9 - asrs r1, r2, 16 - ldr r3, [sp, 0x1C] - ldr r2, [r3] - lsls r3, r4, 1 - adds r3, r2 - movs r4, 0x80 - lsls r4, 2 - adds r2, r4, 0 - orrs r6, r2 - ldrh r3, [r3] - adds r2, r6, r3 - mov r3, r8 - orrs r3, r2 - orrs r3, r5 - lsls r2, r3, 16 - lsrs r2, 16 - bl MapGridSetMetatileEntryAt - b _080FF362 - .align 2, 0 -_080FF334: .4byte gDecorations -_080FF338: .4byte 0x0000ffff -_080FF33C: - asrs r0, r7, 16 - mov r2, r9 - asrs r1, r2, 16 - ldr r3, [sp, 0x1C] - ldr r2, [r3] - lsls r3, r4, 1 - adds r3, r2 - movs r4, 0x80 - lsls r4, 2 - adds r2, r4, 0 - orrs r6, r2 - ldrh r3, [r3] - adds r2, r6, r3 - mov r3, r8 - orrs r3, r2 - lsls r2, r3, 16 - lsrs r2, 16 - bl MapGridSetMetatileIdAt -_080FF362: - mov r0, r10 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - ldr r4, [sp, 0x28] - cmp r10, r4 - bcs _080FF374 - b _080FF266 -_080FF374: - ldr r1, [sp, 0x30] - lsls r0, r1, 16 - lsrs r2, r0, 16 - ldr r3, [sp, 0x2C] - lsrs r0, r3, 16 - cmp r2, r0 - bcs _080FF384 - b _080FF228 -_080FF384: - add sp, 0x34 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FF1EC - - thumb_func_start sub_80FF394 -sub_80FF394: @ 80FF394 - push {r4,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r3, r0, 16 - lsls r1, 16 - lsrs r4, r1, 16 - lsls r2, 16 - lsrs r2, 16 - ldr r1, _080FF3BC @ =gDecorations - lsls r0, r2, 5 - adds r0, r1 - ldrb r0, [r0, 0x12] - cmp r0, 0x9 - bhi _080FF46C - lsls r0, 2 - ldr r1, _080FF3C0 @ =_080FF3C4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FF3BC: .4byte gDecorations -_080FF3C0: .4byte _080FF3C4 - .align 2, 0 -_080FF3C4: - .4byte _080FF3EC - .4byte _080FF3F6 - .4byte _080FF400 - .4byte _080FF410 - .4byte _080FF41A - .4byte _080FF424 - .4byte _080FF434 - .4byte _080FF43E - .4byte _080FF44E - .4byte _080FF45E -_080FF3EC: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 - b _080FF408 -_080FF3F6: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - b _080FF408 -_080FF400: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 -_080FF408: - movs r3, 0x1 - bl sub_80FF1EC - b _080FF46C -_080FF410: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x4 - b _080FF42C -_080FF41A: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - b _080FF42C -_080FF424: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 -_080FF42C: - movs r3, 0x2 - bl sub_80FF1EC - b _080FF46C -_080FF434: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x1 - b _080FF456 -_080FF43E: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x2 - movs r3, 0x4 - bl sub_80FF1EC - b _080FF46C -_080FF44E: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 -_080FF456: - movs r3, 0x3 - bl sub_80FF1EC - b _080FF46C -_080FF45E: - str r2, [sp] - adds r0, r3, 0 - adds r1, r4, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_80FF1EC -_080FF46C: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80FF394 - - thumb_func_start sub_80FF474 -sub_80FF474: @ 80FF474 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - movs r6, 0 - ldr r0, _080FF54C @ =gMapHeader - mov r8, r0 - ldr r1, _080FF550 @ =gSpecialVar_0x8005 - mov r9, r1 - ldr r2, _080FF554 @ =gSpecialVar_0x8006 - mov r10, r2 - ldr r7, _080FF558 @ =gSaveBlock1 -_080FF490: - adds r5, r6, 0 - adds r5, 0xAE - adds r4, r5, 0 - adds r0, r4, 0 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF570 - adds r0, r4, 0 - bl FlagReset - movs r2, 0 - mov r4, r8 - ldr r0, [r4, 0x4] - ldrb r6, [r0] - cmp r2, r6 - bcs _080FF4E0 - ldr r0, [r0, 0x4] - ldrh r0, [r0, 0x14] - cmp r0, r5 - beq _080FF4E0 - ldr r0, _080FF54C @ =gMapHeader - ldr r3, [r0, 0x4] - ldrb r6, [r3] - adds r4, r5, 0 -_080FF4C6: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, r6 - bcs _080FF4E0 - ldr r0, [r3, 0x4] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x14] - cmp r0, r4 - bne _080FF4C6 -_080FF4E0: - mov r1, r8 - ldr r0, [r1, 0x4] - ldr r1, [r0, 0x4] - lsls r4, r2, 1 - adds r4, r2 - lsls r4, 3 - adds r1, r4, r1 - ldr r2, _080FF55C @ =0x00003f20 - adds r0, r2, 0 - ldrb r1, [r1, 0x1] - adds r0, r1 - ldr r1, _080FF560 @ =gUnknown_02038900 - ldr r1, [r1] - ldr r1, [r1, 0x1C] - ldrh r1, [r1] - bl VarSet - mov r5, r8 - ldr r0, [r5, 0x4] - ldr r0, [r0, 0x4] - adds r4, r0 - ldrb r0, [r4] - mov r6, r9 - strh r0, [r6] - ldr r1, _080FF564 @ =gUnknown_020391A4 - ldrh r1, [r1] - mov r2, r10 - strh r1, [r2] - ldr r1, _080FF568 @ =gUnknown_020391A6 - ldrh r1, [r1] - ldr r4, _080FF56C @ =gSpecialVar_0x8007 - strh r1, [r4] - ldrb r1, [r7, 0x5] - ldrb r2, [r7, 0x4] - bl show_sprite - ldrb r0, [r6] - ldrb r1, [r7, 0x5] - ldrb r2, [r7, 0x4] - mov r5, r10 - movs r6, 0 - ldrsh r3, [r5, r6] - movs r5, 0 - ldrsh r4, [r4, r5] - str r4, [sp] - bl sub_805C0F8 - mov r6, r9 - ldrb r0, [r6] - ldrb r1, [r7, 0x5] - ldrb r2, [r7, 0x4] - bl sub_805C78C - b _080FF57A - .align 2, 0 -_080FF54C: .4byte gMapHeader -_080FF550: .4byte gSpecialVar_0x8005 -_080FF554: .4byte gSpecialVar_0x8006 -_080FF558: .4byte gSaveBlock1 -_080FF55C: .4byte 0x00003f20 -_080FF560: .4byte gUnknown_02038900 -_080FF564: .4byte gUnknown_020391A4 -_080FF568: .4byte gUnknown_020391A6 -_080FF56C: .4byte gSpecialVar_0x8007 -_080FF570: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0xD - bls _080FF490 -_080FF57A: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FF474 - - thumb_func_start sub_80FF58C -sub_80FF58C: @ 80FF58C - push {lr} - movs r1, 0 - ldr r0, _080FF5A8 @ =0x0201f000 - ldrb r2, [r0, 0x8] - cmp r1, r2 - bcs _080FF5B6 - ldr r3, [r0] -_080FF59A: - adds r0, r3, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080FF5AC - movs r0, 0x1 - b _080FF5B8 - .align 2, 0 -_080FF5A8: .4byte 0x0201f000 -_080FF5AC: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r2 - bcc _080FF59A -_080FF5B6: - movs r0, 0 -_080FF5B8: - pop {r1} - bx r1 - thumb_func_end sub_80FF58C - - thumb_func_start sub_80FF5BC -sub_80FF5BC: @ 80FF5BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _080FF5E4 @ =0x0201f000 - ldrb r0, [r0, 0x9] - cmp r0, 0x1 - bne _080FF5F0 - ldr r0, _080FF5E8 @ =gUnknown_020388F6 - ldrb r0, [r0] - cmp r0, 0x6 - beq _080FF5F0 - cmp r0, 0x7 - beq _080FF5F0 - bl sub_80FEF74 - bl sub_80FED1C - ldr r1, _080FF5EC @ =gSecretBaseText_DecorCantPlace - b _080FF66E - .align 2, 0 -_080FF5E4: .4byte 0x0201f000 -_080FF5E8: .4byte gUnknown_020388F6 -_080FF5EC: .4byte gSecretBaseText_DecorCantPlace -_080FF5F0: - bl sub_80FEFA4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF688 - bl sub_80FF58C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF62C - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _080FF624 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, _080FF628 @ =sub_80FF6AC - str r1, [r0] - b _080FF69C - .align 2, 0 -_080FF624: .4byte gTasks -_080FF628: .4byte sub_80FF6AC -_080FF62C: - bl sub_80FEF74 - bl sub_80FED1C - ldr r0, _080FF654 @ =gStringVar1 - ldr r4, _080FF658 @ =0x0201f000 - ldrb r1, [r4, 0x8] - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - ldrb r0, [r4, 0x9] - cmp r0, 0 - bne _080FF664 - ldr r0, _080FF65C @ =gStringVar4 - ldr r1, _080FF660 @ =gSecretBaseText_NoMoreDecor - bl StringExpandPlaceholders - b _080FF66C - .align 2, 0 -_080FF654: .4byte gStringVar1 -_080FF658: .4byte 0x0201f000 -_080FF65C: .4byte gStringVar4 -_080FF660: .4byte gSecretBaseText_NoMoreDecor -_080FF664: - ldr r0, _080FF67C @ =gStringVar4 - ldr r1, _080FF680 @ =gSecretBaseText_NoMoreDecor2 - bl StringExpandPlaceholders -_080FF66C: - ldr r1, _080FF67C @ =gStringVar4 -_080FF66E: - ldr r2, _080FF684 @ =sub_80FEFF4 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _080FF69C - .align 2, 0 -_080FF67C: .4byte gStringVar4 -_080FF680: .4byte gSecretBaseText_NoMoreDecor2 -_080FF684: .4byte sub_80FEFF4 -_080FF688: - bl sub_80FEF74 - bl sub_80FED1C - ldr r1, _080FF6A4 @ =gSecretBaseText_InUseAlready - ldr r2, _080FF6A8 @ =sub_80FEFF4 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField -_080FF69C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080FF6A4: .4byte gSecretBaseText_InUseAlready -_080FF6A8: .4byte sub_80FEFF4 - thumb_func_end sub_80FF5BC - - thumb_func_start sub_80FF6AC -sub_80FF6AC: @ 80FF6AC - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r1, _080FF6D0 @ =gTasks - lsls r0, r6, 2 - adds r0, r6 - lsls r0, 3 - adds r7, r0, r1 - movs r1, 0xC - ldrsh r0, [r7, r1] - cmp r0, 0x1 - beq _080FF714 - cmp r0, 0x1 - bgt _080FF6D4 - cmp r0, 0 - beq _080FF6DA - b _080FF77A - .align 2, 0 -_080FF6D0: .4byte gTasks -_080FF6D4: - cmp r0, 0x2 - beq _080FF764 - b _080FF77A -_080FF6DA: - ldr r0, _080FF70C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080FF77A - adds r0, r6, 0 - bl sub_80FF0E0 - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - ldr r0, _080FF710 @ =gUnknown_020388F7 - movs r1, 0x8 - bl sub_80F9520 - bl BuyMenuFreeMemory - movs r0, 0x1 - strh r0, [r7, 0xC] - b _080FF77A - .align 2, 0 -_080FF70C: .4byte gPaletteFade -_080FF710: .4byte gUnknown_020388F7 -_080FF714: - ldr r4, _080FF754 @ =gPaletteFade - ldrb r0, [r4, 0x8] - movs r1, 0x80 - orrs r0, r1 - strb r0, [r4, 0x8] - ldr r5, _080FF758 @ =gUnknown_02038900 - ldr r0, _080FF75C @ =gUnknown_020388F5 - ldrb r1, [r0] - ldr r0, _080FF760 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r1, [r0] - adds r0, r5, 0 - bl AddDecorationIconObjectFromFieldObject - adds r0, r6, 0 - bl sub_80FF960 - adds r0, r6, 0 - adds r1, r5, 0 - bl SetUpPlacingDecorationPlayerAvatar - bl pal_fill_black - ldrb r1, [r4, 0x8] - movs r0, 0x7F - ands r0, r1 - strb r0, [r4, 0x8] - movs r0, 0x2 - strh r0, [r7, 0xC] - b _080FF77A - .align 2, 0 -_080FF754: .4byte gPaletteFade -_080FF758: .4byte gUnknown_02038900 -_080FF75C: .4byte gUnknown_020388F5 -_080FF760: .4byte gUnknown_020388D0 -_080FF764: - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FF77A - movs r0, 0 - strh r0, [r7, 0x20] - adds r0, r6, 0 - bl sub_810065C -_080FF77A: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80FF6AC - - thumb_func_start AddDecorationIconObjectFromFieldObject -AddDecorationIconObjectFromFieldObject: @ 80FF780 - push {r4-r6,lr} - sub sp, 0x4 - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - bl sub_80FEF74 - bl sub_80FED1C - adds r0, r5, 0 - bl sub_81006D0 - lsls r4, 5 - ldr r0, _080FF810 @ =gDecorations - adds r4, r0 - str r4, [r5] - ldrb r0, [r4, 0x11] - cmp r0, 0x4 - beq _080FF834 - adds r0, r5, 0 - bl sub_81008BC - ldr r0, [r5] - ldrb r0, [r0, 0x12] - bl sub_8100930 - adds r0, r5, 0 - bl sub_8100874 - ldr r1, _080FF814 @ =0x00000884 - adds r0, r5, r1 - ldr r1, _080FF818 @ =gMapHeader - ldr r1, [r1] - ldr r2, [r1, 0x14] - ldr r1, [r5] - ldr r1, [r1, 0x1C] - ldrh r1, [r1] - ldr r2, [r2, 0xC] - lsls r1, 4 - adds r1, r2 - ldrh r1, [r1, 0xE] - lsrs r1, 12 - bl sub_810070C - ldr r0, _080FF81C @ =gUnknown_083EC954 - bl LoadSpritePalette - ldr r3, _080FF820 @ =gUnknown_020391A8 - ldr r2, _080FF824 @ =gSprites - ldr r4, _080FF828 @ =gUnknown_03004880 - ldr r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strb r0, [r3] - ldr r0, _080FF82C @ =gSpriteTemplate_83EC93C - ldr r3, _080FF830 @ =gUnknown_083EC900 - ldr r1, [r5] - ldrb r2, [r1, 0x12] - lsls r2, 2 - adds r2, r3 - ldrb r1, [r2, 0x2] - ldrb r2, [r2, 0x3] - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - str r0, [r4, 0x4] - b _080FF87E - .align 2, 0 -_080FF810: .4byte gDecorations -_080FF814: .4byte 0x00000884 -_080FF818: .4byte gMapHeader -_080FF81C: .4byte gUnknown_083EC954 -_080FF820: .4byte gUnknown_020391A8 -_080FF824: .4byte gSprites -_080FF828: .4byte gUnknown_03004880 -_080FF82C: .4byte gSpriteTemplate_83EC93C -_080FF830: .4byte gUnknown_083EC900 -_080FF834: - ldr r2, _080FF888 @ =gUnknown_020391A8 - ldr r6, _080FF88C @ =gSprites - ldr r5, _080FF890 @ =gUnknown_03004880 - ldr r1, [r5, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r0, [r0, 0x2E] - strb r0, [r2] - ldr r0, [r4, 0x1C] - ldrh r0, [r0] - ldr r1, _080FF894 @ =sub_81009A8 - ldr r2, _080FF898 @ =gUnknown_083EC900 - ldrb r3, [r4, 0x12] - lsls r3, 2 - adds r3, r2 - ldrb r2, [r3, 0x2] - ldrb r3, [r3, 0x3] - movs r4, 0x1 - str r4, [sp] - bl AddPseudoFieldObject - lsls r0, 24 - lsrs r0, 24 - str r0, [r5, 0x4] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x5] - movs r0, 0xD - negs r0, r0 - ands r0, r2 - movs r2, 0x4 - orrs r0, r2 - strb r0, [r1, 0x5] -_080FF87E: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080FF888: .4byte gUnknown_020391A8 -_080FF88C: .4byte gSprites -_080FF890: .4byte gUnknown_03004880 -_080FF894: .4byte sub_81009A8 -_080FF898: .4byte gUnknown_083EC900 - thumb_func_end AddDecorationIconObjectFromFieldObject - - thumb_func_start SetUpPlacingDecorationPlayerAvatar -SetUpPlacingDecorationPlayerAvatar: @ 80FF89C - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _080FF8F0 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - ldrb r2, [r2, 0x12] - ldr r3, _080FF8F4 @ =gUnknown_083EC900 - ldr r0, [r1] - ldrb r4, [r0, 0x12] - lsls r1, r4, 2 - adds r1, r3 - lsls r0, r2, 4 - ldrb r1, [r1, 0x2] - adds r0, r1 - subs r2, 0x1 - lsls r2, 3 - subs r0, r2 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r4, 0x2 - beq _080FF8D6 - cmp r4, 0x8 - beq _080FF8D6 - cmp r4, 0x9 - bne _080FF8DE -_080FF8D6: - adds r0, r2, 0 - subs r0, 0x8 - lsls r0, 24 - lsrs r2, r0, 24 -_080FF8DE: - ldr r0, _080FF8F8 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080FF900 - ldr r1, _080FF8FC @ =SpriteCallbackDummy - str r0, [sp] - movs r0, 0xC1 - b _080FF908 - .align 2, 0 -_080FF8F0: .4byte gTasks -_080FF8F4: .4byte gUnknown_083EC900 -_080FF8F8: .4byte gSaveBlock2 -_080FF8FC: .4byte SpriteCallbackDummy -_080FF900: - ldr r1, _080FF94C @ =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - movs r0, 0xC2 -_080FF908: - movs r3, 0x48 - bl AddPseudoFieldObject - ldr r1, _080FF950 @ =gUnknown_020391A9 - strb r0, [r1] - ldr r3, _080FF954 @ =gSprites - ldr r0, _080FF950 @ =gUnknown_020391A9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrb r2, [r0, 0x5] - movs r1, 0xD - negs r1, r1 - ands r1, r2 - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0, 0x5] - ldr r4, _080FF958 @ =gUnknown_020391A8 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - bl DestroySprite - ldr r0, _080FF95C @ =gUnknown_03004880 - ldr r0, [r0, 0x4] - strb r0, [r4] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FF94C: .4byte SpriteCallbackDummy -_080FF950: .4byte gUnknown_020391A9 -_080FF954: .4byte gSprites -_080FF958: .4byte gUnknown_020391A8 -_080FF95C: .4byte gUnknown_03004880 - thumb_func_end SetUpPlacingDecorationPlayerAvatar - - thumb_func_start sub_80FF960 -sub_80FF960: @ 80FF960 - push {lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r2, _080FF98C @ =gDecorations - ldr r0, _080FF990 @ =gUnknown_020388F5 - ldrb r1, [r0] - ldr r0, _080FF994 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r2 - ldrb r0, [r0, 0x12] - cmp r0, 0x9 - bls _080FF980 - b _080FFAA6 -_080FF980: - lsls r0, 2 - ldr r1, _080FF998 @ =_080FF99C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FF98C: .4byte gDecorations -_080FF990: .4byte gUnknown_020388F5 -_080FF994: .4byte gUnknown_020388D0 -_080FF998: .4byte _080FF99C - .align 2, 0 -_080FF99C: - .4byte _080FF9C4 - .4byte _080FF9D8 - .4byte _080FF9F0 - .4byte _080FFA08 - .4byte _080FFA1C - .4byte _080FFA30 - .4byte _080FFA44 - .4byte _080FFA64 - .4byte _080FFA7C - .4byte _080FFA94 -_080FF9C4: - ldr r0, _080FF9D4 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - b _080FFA88 - .align 2, 0 -_080FF9D4: .4byte gTasks -_080FF9D8: - ldr r1, _080FF9EC @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x12] - movs r1, 0x1 - b _080FFAA4 - .align 2, 0 -_080FF9EC: .4byte gTasks -_080FF9F0: - ldr r1, _080FFA04 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3 - strh r1, [r0, 0x12] - movs r1, 0x1 - b _080FFAA4 - .align 2, 0 -_080FFA04: .4byte gTasks -_080FFA08: - ldr r1, _080FFA18 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x4 - b _080FFAA0 - .align 2, 0 -_080FFA18: .4byte gTasks -_080FFA1C: - ldr r0, _080FFA2C @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x2 - b _080FFA88 - .align 2, 0 -_080FFA2C: .4byte gTasks -_080FFA30: - ldr r1, _080FFA40 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x1 - b _080FFAA0 - .align 2, 0 -_080FFA40: .4byte gTasks -_080FFA44: - ldr r0, _080FFA60 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x1 - strh r0, [r1, 0x12] - movs r0, 0x3 - strh r0, [r1, 0x14] - ldrh r0, [r1, 0xA] - adds r0, 0x1 - strh r0, [r1, 0xA] - b _080FFAA6 - .align 2, 0 -_080FFA60: .4byte gTasks -_080FFA64: - ldr r1, _080FFA78 @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x2 - strh r1, [r0, 0x12] - movs r1, 0x4 - b _080FFAA4 - .align 2, 0 -_080FFA78: .4byte gTasks -_080FFA7C: - ldr r0, _080FFA90 @ =gTasks - lsls r1, r3, 2 - adds r1, r3 - lsls r1, 3 - adds r1, r0 - movs r0, 0x3 -_080FFA88: - strh r0, [r1, 0x12] - strh r0, [r1, 0x14] - b _080FFAA6 - .align 2, 0 -_080FFA90: .4byte gTasks -_080FFA94: - ldr r1, _080FFAAC @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r1, 0x3 -_080FFAA0: - strh r1, [r0, 0x12] - movs r1, 0x2 -_080FFAA4: - strh r1, [r0, 0x14] -_080FFAA6: - pop {r0} - bx r0 - .align 2, 0 -_080FFAAC: .4byte gTasks - thumb_func_end sub_80FF960 - - thumb_func_start sub_80FFAB0 -sub_80FFAB0: @ 80FFAB0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080FFAF8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - ldr r3, _080FFAFC @ =gSprites - ldr r0, _080FFB00 @ =gUnknown_020391A8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r2, 0x1 - strh r2, [r0, 0x3C] - ldr r0, _080FFB04 @ =gUnknown_020391A9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x3C] - bl sub_810045C - adds r0, r4, 0 - bl sub_8100038 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FFAF8: .4byte gTasks -_080FFAFC: .4byte gSprites -_080FFB00: .4byte gUnknown_020391A8 -_080FFB04: .4byte gUnknown_020391A9 - thumb_func_end sub_80FFAB0 - - thumb_func_start sub_80FFB08 -sub_80FFB08: @ 80FFB08 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080FFB54 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - ldr r3, _080FFB58 @ =gSprites - ldr r0, _080FFB5C @ =gUnknown_020391A8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r2, 0x1 - strh r2, [r0, 0x3C] - ldr r0, _080FFB60 @ =gUnknown_020391A9 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x3C] - bl sub_810045C - ldr r1, _080FFB64 @ =gSecretBaseText_CancelDecorating - ldr r2, _080FFB68 @ =sub_8100248 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080FFB54: .4byte gTasks -_080FFB58: .4byte gSprites -_080FFB5C: .4byte gUnknown_020391A8 -_080FFB60: .4byte gUnknown_020391A9 -_080FFB64: .4byte gSecretBaseText_CancelDecorating -_080FFB68: .4byte sub_8100248 - thumb_func_end sub_80FFB08 - - thumb_func_start sub_80FFB6C -sub_80FFB6C: @ 80FFB6C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 16 - lsrs r4, r1, 16 - bl sub_8057274 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080FFB86 - cmp r4, 0 - beq _080FFB8A -_080FFB86: - movs r0, 0 - b _080FFB8C -_080FFB8A: - movs r0, 0x1 -_080FFB8C: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80FFB6C - - thumb_func_start sub_80FFB94 -sub_80FFB94: @ 80FFB94 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r2, 16 - lsrs r4, r2, 16 - lsls r3, 16 - lsrs r5, r3, 16 - lsls r1, 16 - asrs r1, 16 - ldr r3, _080FFBD0 @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - movs r3, 0xE - ldrsh r0, [r2, r3] - adds r0, 0x7 - cmp r1, r0 - bne _080FFBD4 - lsls r1, r4, 16 - asrs r1, 16 - movs r3, 0x10 - ldrsh r0, [r2, r3] - adds r0, 0x7 - cmp r1, r0 - bne _080FFBD4 - cmp r5, 0 - beq _080FFBD4 - movs r0, 0 - b _080FFBD6 - .align 2, 0 -_080FFBD0: .4byte gTasks -_080FFBD4: - movs r0, 0x1 -_080FFBD6: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80FFB94 - - thumb_func_start sub_80FFBDC -sub_80FFBDC: @ 80FFBDC - push {r4-r6,lr} - adds r5, r1, 0 - lsls r0, 16 - lsrs r6, r0, 16 - lsls r0, r6, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8057274 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FFC1C - ldrb r0, [r5] - cmp r0, 0x21 - bne _080FFC0A - adds r0, r4, 0 - bl sub_8057300 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080FFC18 -_080FFC0A: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_805729C - lsls r0, 24 - cmp r0, 0 - beq _080FFC1C -_080FFC18: - movs r0, 0x1 - b _080FFC1E -_080FFC1C: - movs r0, 0 -_080FFC1E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80FFBDC - - thumb_func_start sub_80FFC24 -sub_80FFC24: @ 80FFC24 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r1, [sp] - lsls r0, 24 - lsrs r0, 24 - mov r10, r0 - ldr r1, _080FFC60 @ =gTasks - lsls r0, 2 - add r0, r10 - lsls r0, 3 - adds r0, r1 - ldrb r2, [r0, 0x14] - str r2, [sp, 0x4] - ldrb r0, [r0, 0x12] - str r0, [sp, 0x8] - ldr r3, [sp] - ldrb r0, [r3, 0x11] - adds r2, r1, 0 - cmp r0, 0x4 - bls _080FFC56 - b _08100024 -_080FFC56: - lsls r0, 2 - ldr r1, _080FFC64 @ =_080FFC68 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080FFC60: .4byte gTasks -_080FFC64: .4byte _080FFC68 - .align 2, 0 -_080FFC68: - .4byte _080FFC7C - .4byte _080FFC7C - .4byte _080FFD68 - .4byte _080FFF1C - .4byte _080FFFA0 -_080FFC7C: - movs r6, 0 - ldr r0, [sp, 0x4] - cmp r6, r0 - bcc _080FFC86 - b _08100024 -_080FFC86: - mov r1, r10 - lsls r1, 2 - str r1, [sp, 0x1C] -_080FFC8C: - mov r2, r10 - lsls r0, r2, 2 - add r0, r10 - lsls r0, 3 - ldr r3, _080FFD64 @ =gTasks - adds r0, r3 - ldrh r0, [r0, 0xA] - subs r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - adds r6, 0x1 - str r6, [sp, 0x14] - ldr r0, [sp, 0x8] - cmp r7, r0 - bcs _080FFD56 - mov r1, r9 - lsls r1, 16 - str r1, [sp, 0xC] - asrs r1, 16 - mov r9, r1 -_080FFCB8: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - ldr r2, _080FFD64 @ =gTasks - adds r0, r2 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - mov r8, r0 - asrs r6, r0, 16 - adds r0, r6, 0 - mov r1, r9 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp, 0x4] - ldr r1, [sp, 0x14] - subs r0, r3, r1 - ldr r2, [sp, 0x8] - adds r1, r0, 0 - muls r1, r2 - adds r1, r7 - ldr r3, [sp] - ldr r0, [r3, 0x1C] - lsls r1, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - movs r3, 0xF0 - lsls r3, 8 - adds r1, r3, 0 - adds r5, r1, 0 - ands r5, r0 - adds r0, r4, 0 - ldr r1, [sp] - bl sub_80FFBDC - lsls r0, 24 - cmp r0, 0 - bne _080FFD1A - b _080FFFF4 -_080FFD1A: - mov r0, r10 - adds r1, r6, 0 - mov r2, r9 - adds r3, r5, 0 - bl sub_80FFB94 - lsls r0, 24 - cmp r0, 0 - bne _080FFD2E - b _080FFFF4 -_080FFD2E: - mov r1, r8 - lsrs r0, r1, 16 - ldr r2, [sp, 0xC] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080FFD4A - cmp r4, 0x10 - beq _080FFD4A - b _080FFFF4 -_080FFD4A: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _080FFCB8 -_080FFD56: - ldr r1, [sp, 0x14] - lsls r0, r1, 24 - lsrs r6, r0, 24 - ldr r2, [sp, 0x4] - cmp r6, r2 - bcc _080FFC8C - b _08100024 - .align 2, 0 -_080FFD64: .4byte gTasks -_080FFD68: - movs r6, 0 - mov r3, r10 - lsls r3, 2 - str r3, [sp, 0x1C] - ldr r0, [sp, 0x4] - subs r0, 0x1 - str r0, [sp, 0x18] - cmp r6, r0 - bge _080FFE54 - adds r0, r3, 0 - add r0, r10 - lsls r0, 3 - str r0, [sp, 0x10] -_080FFD82: - ldr r1, [sp, 0x10] - adds r0, r1, r2 - ldrh r0, [r0, 0xA] - subs r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - adds r6, 0x1 - str r6, [sp, 0x14] - ldr r3, [sp, 0x8] - cmp r7, r3 - bcs _080FFE48 - lsls r0, 16 - str r0, [sp, 0x20] -_080FFDA0: - ldr r1, [sp, 0x10] - adds r0, r1, r2 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - mov r8, r0 - asrs r6, r0, 16 - mov r2, r9 - lsls r1, r2, 16 - adds r0, r6, 0 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp, 0x4] - ldr r1, [sp, 0x14] - subs r0, r3, r1 - ldr r2, [sp, 0x8] - adds r1, r0, 0 - muls r1, r2 - adds r1, r7 - ldr r3, [sp] - ldr r0, [r3, 0x1C] - lsls r1, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - movs r3, 0xF0 - lsls r3, 8 - adds r1, r3, 0 - adds r5, r1, 0 - ands r5, r0 - adds r0, r4, 0 - bl sub_805729C - lsls r0, 24 - cmp r0, 0 - bne _080FFE0C - adds r0, r4, 0 - adds r1, r5, 0 - bl sub_80FFB6C - lsls r0, 24 - cmp r0, 0 - bne _080FFE0C - b _080FFFF4 -_080FFE0C: - mov r0, r10 - adds r1, r6, 0 - ldr r3, [sp, 0x20] - asrs r2, r3, 16 - adds r3, r5, 0 - bl sub_80FFB94 - lsls r0, 24 - cmp r0, 0 - bne _080FFE22 - b _080FFFF4 -_080FFE22: - mov r1, r8 - lsrs r0, r1, 16 - ldr r2, [sp, 0x20] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - beq _080FFE3A - b _080FFFF4 -_080FFE3A: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _080FFF18 @ =gTasks - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _080FFDA0 -_080FFE48: - ldr r1, [sp, 0x14] - lsls r0, r1, 24 - lsrs r6, r0, 24 - ldr r3, [sp, 0x18] - cmp r6, r3 - blt _080FFD82 -_080FFE54: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0xA] - ldr r1, [sp, 0x4] - subs r0, r1 - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _080FFE74 - b _08100024 -_080FFE74: - lsls r0, 16 - str r0, [sp, 0x20] -_080FFE78: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - ldr r1, _080FFF18 @ =gTasks - adds r0, r1 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - mov r8, r0 - asrs r6, r0, 16 - mov r2, r9 - lsls r1, r2, 16 - adds r0, r6, 0 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp] - ldr r0, [r3, 0x1C] - lsls r1, r7, 1 - adds r1, r0 - movs r2, 0x80 - lsls r2, 2 - adds r0, r2, 0 - ldrh r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl GetBehaviorByMetatileId - movs r3, 0xF0 - lsls r3, 8 - adds r1, r3, 0 - adds r5, r1, 0 - ands r5, r0 - adds r0, r4, 0 - bl sub_805729C - lsls r0, 24 - cmp r0, 0 - bne _080FFEDA - adds r0, r4, 0 - bl sub_80572B0 - lsls r0, 24 - cmp r0, 0 - bne _080FFEDA - b _080FFFF4 -_080FFEDA: - mov r0, r10 - adds r1, r6, 0 - ldr r3, [sp, 0x20] - asrs r2, r3, 16 - adds r3, r5, 0 - bl sub_80FFB94 - lsls r0, 24 - cmp r0, 0 - bne _080FFEF0 - b _080FFFF4 -_080FFEF0: - mov r1, r8 - lsrs r0, r1, 16 - ldr r2, [sp, 0x20] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - beq _080FFF0A - cmp r4, 0x10 - bne _080FFFF4 -_080FFF0A: - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _080FFE78 - b _08100024 - .align 2, 0 -_080FFF18: .4byte gTasks -_080FFF1C: - movs r6, 0 - ldr r0, [sp, 0x4] - cmp r6, r0 - bcc _080FFF26 - b _08100024 -_080FFF26: - mov r1, r10 - lsls r0, r1, 2 - add r0, r10 - lsls r1, r0, 3 - ldr r2, _080FFF9C @ =gTasks - adds r0, r1, r2 - ldrh r0, [r0, 0xA] - subs r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcs _080FFF8C - adds r0, r2, 0 - adds r1, r0 - mov r8, r1 - mov r1, r9 - lsls r0, r1, 16 - asrs r5, r0, 16 -_080FFF50: - mov r2, r8 - ldrh r0, [r2, 0x8] - adds r0, r7 - lsls r0, 16 - asrs r4, r0, 16 - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl sub_80572B0 - lsls r0, 24 - cmp r0, 0 - beq _080FFFF4 - adds r0, r4, 0 - adds r1, r5, 0x1 - bl MapGridGetMetatileIdAt - movs r1, 0xA3 - lsls r1, 2 - cmp r0, r1 - beq _080FFFF4 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _080FFF50 -_080FFF8C: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, [sp, 0x4] - cmp r6, r0 - bcc _080FFF26 - b _08100024 - .align 2, 0 -_080FFF9C: .4byte gTasks -_080FFFA0: - mov r3, r10 - lsls r1, r3, 2 - adds r0, r1, r3 - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0xA] - mov r9, r0 - movs r7, 0 - str r1, [sp, 0x1C] - ldr r0, [sp, 0x8] - cmp r7, r0 - bcs _08100024 - adds r6, r2, 0 - mov r1, r9 - lsls r1, 16 - str r1, [sp, 0x20] -_080FFFC0: - ldr r0, [sp, 0x1C] - add r0, r10 - lsls r0, 3 - adds r0, r6 - ldrh r0, [r0, 0x8] - adds r0, r7 - lsls r0, 16 - lsrs r5, r0, 16 - asrs r0, 16 - mov r2, r9 - lsls r1, r2, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - ldr r3, [sp] - ldrb r0, [r3, 0x12] - cmp r0, 0x5 - bne _080FFFF8 -_080FFFE8: - adds r0, r4, 0 - bl sub_80572EC - lsls r0, 24 - cmp r0, 0 - bne _08100004 -_080FFFF4: - movs r0, 0 - b _08100026 -_080FFFF8: - adds r0, r4, 0 - bl sub_80572D8 - lsls r0, 24 - cmp r0, 0 - beq _080FFFE8 -_08100004: - adds r0, r5, 0 - ldr r2, [sp, 0x20] - lsrs r1, r2, 16 - movs r2, 0 - bl GetFieldObjectIdByXYZ - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x10 - bne _080FFFF4 - adds r0, r7, 0x1 - lsls r0, 24 - lsrs r7, r0, 24 - ldr r3, [sp, 0x8] - cmp r7, r3 - bcc _080FFFC0 -_08100024: - movs r0, 0x1 -_08100026: - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80FFC24 - - thumb_func_start sub_8100038 -sub_8100038: @ 8100038 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0810006C @ =gUnknown_020388F5 - ldrb r1, [r0] - ldr r0, _08100070 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r1, [r0] - lsls r1, 5 - ldr r0, _08100074 @ =gDecorations - adds r1, r0 - adds r0, r4, 0 - bl sub_80FFC24 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08100080 - ldr r1, _08100078 @ =gSecretBaseText_PlaceItHere - ldr r2, _0810007C @ =sub_81000A0 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _08100092 - .align 2, 0 -_0810006C: .4byte gUnknown_020388F5 -_08100070: .4byte gUnknown_020388D0 -_08100074: .4byte gDecorations -_08100078: .4byte gSecretBaseText_PlaceItHere -_0810007C: .4byte sub_81000A0 -_08100080: - movs r0, 0x20 - bl PlaySE - ldr r1, _08100098 @ =gSecretBaseText_CantBePlacedHere - ldr r2, _0810009C @ =sub_81006A8 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField -_08100092: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08100098: .4byte gSecretBaseText_CantBePlacedHere -_0810009C: .4byte sub_81006A8 - thumb_func_end sub_8100038 - - thumb_func_start sub_81000A0 -sub_81000A0: @ 81000A0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _081000C0 @ =gUnknown_083EC95C - adds r0, r4, 0 - bl sub_80F914C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081000C0: .4byte gUnknown_083EC95C - thumb_func_end sub_81000A0 - - thumb_func_start sub_81000C4 -sub_81000C4: @ 81000C4 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl sub_8100174 - ldr r2, _0810010C @ =gDecorations - ldr r0, _08100110 @ =gUnknown_020388F5 - ldrb r1, [r0] - ldr r0, _08100114 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r3, [r0] - lsls r0, r3, 5 - adds r0, r2 - ldrb r0, [r0, 0x11] - cmp r0, 0x4 - beq _0810011C - ldr r0, _08100118 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - ldrh r1, [r1, 0xA] - adds r2, r3, 0 - bl sub_80FF394 - b _0810013C - .align 2, 0 -_0810010C: .4byte gDecorations -_08100110: .4byte gUnknown_020388F5 -_08100114: .4byte gUnknown_020388D0 -_08100118: .4byte gTasks -_0810011C: - ldr r2, _0810015C @ =gUnknown_020391A4 - ldr r0, _08100160 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - subs r0, 0x7 - strh r0, [r2] - ldr r2, _08100164 @ =gUnknown_020391A6 - ldrh r0, [r1, 0xA] - subs r0, 0x7 - strh r0, [r2] - ldr r0, _08100168 @ =gUnknown_081A2F7B - bl ScriptContext1_SetupScript -_0810013C: - ldr r2, _0810016C @ =gSprites - ldr r0, _08100170 @ =gUnknown_020391A8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r1, [r0, 0x22] - adds r1, 0x2 - strh r1, [r0, 0x22] - adds r0, r4, 0 - bl sub_810028C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810015C: .4byte gUnknown_020391A4 -_08100160: .4byte gTasks -_08100164: .4byte gUnknown_020391A6 -_08100168: .4byte gUnknown_081A2F7B -_0810016C: .4byte gSprites -_08100170: .4byte gUnknown_020391A8 - thumb_func_end sub_81000C4 - - thumb_func_start sub_8100174 -sub_8100174: @ 8100174 - push {r4-r6,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r3, 0 - ldr r0, _081001B0 @ =0x0201f000 - ldrb r1, [r0, 0x8] - adds r5, r0, 0 - cmp r3, r1 - bcs _0810019A - ldr r4, [r5] -_08100188: - adds r2, r4, r3 - ldrb r0, [r2] - cmp r0, 0 - beq _081001B8 - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r1 - bcc _08100188 -_0810019A: - ldrb r0, [r5, 0x9] - cmp r0, 0 - bne _08100204 - movs r3, 0 - ldr r0, _081001B4 @ =gUnknown_020388D6 - ldrb r1, [r0] - adds r2, r0, 0 - cmp r1, 0 - bne _081001F0 - b _08100210 - .align 2, 0 -_081001B0: .4byte 0x0201f000 -_081001B4: .4byte gUnknown_020388D6 -_081001B8: - ldr r0, _081001E4 @ =gUnknown_020388F5 - ldrb r1, [r0] - ldr r0, _081001E8 @ =gUnknown_020388D0 - ldr r0, [r0] - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - ldr r2, [r5, 0x4] - adds r2, r3 - ldr r0, _081001EC @ =gTasks - lsls r1, r6, 2 - adds r1, r6 - lsls r1, 3 - adds r1, r0 - ldrb r0, [r1, 0x8] - subs r0, 0x7 - lsls r0, 4 - ldrb r1, [r1, 0xA] - subs r1, 0x7 - adds r0, r1 - strb r0, [r2] - b _0810019A - .align 2, 0 -_081001E4: .4byte gUnknown_020388F5 -_081001E8: .4byte gUnknown_020388D0 -_081001EC: .4byte gTasks -_081001F0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0xF - bhi _0810023E - adds r1, r3, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _081001F0 - b _08100236 -_08100204: - movs r3, 0 - ldr r0, _0810021C @ =gUnknown_020388E6 - ldrb r1, [r0] - adds r2, r0, 0 - cmp r1, 0 - bne _08100224 -_08100210: - ldr r0, _08100220 @ =gUnknown_020388F5 - ldrb r0, [r0] - adds r0, 0x1 - strb r0, [r2] - b _0810023E - .align 2, 0 -_0810021C: .4byte gUnknown_020388E6 -_08100220: .4byte gUnknown_020388F5 -_08100224: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0xB - bhi _0810023E - adds r1, r3, r2 - ldrb r0, [r1] - cmp r0, 0 - bne _08100224 -_08100236: - ldr r0, _08100244 @ =gUnknown_020388F5 - ldrb r0, [r0] - adds r0, 0x1 - strb r0, [r1] -_0810023E: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08100244: .4byte gUnknown_020388F5 - thumb_func_end sub_8100174 - - thumb_func_start sub_8100248 -sub_8100248: @ 8100248 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _08100268 @ =gUnknown_083EC964 - adds r0, r4, 0 - bl sub_80F914C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08100268: .4byte gUnknown_083EC964 - thumb_func_end sub_8100248 - - thumb_func_start sub_810026C -sub_810026C: @ 810026C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl sub_810028C - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_810026C - - thumb_func_start sub_810028C -sub_810028C: @ 810028C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _081002B4 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, _081002B8 @ =c1_overworld_prev_quest - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081002B4: .4byte gTasks -_081002B8: .4byte c1_overworld_prev_quest - thumb_func_end sub_810028C - - thumb_func_start c1_overworld_prev_quest -c1_overworld_prev_quest: @ 81002BC - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _081002DC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _081002E0 - cmp r0, 0x1 - beq _08100300 - b _0810031C - .align 2, 0 -_081002DC: .4byte gTasks -_081002E0: - bl ScriptContext2_Enable - ldr r0, _081002FC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0810031C - adds r0, r4, 0 - bl sub_80FF114 - movs r0, 0x1 - strh r0, [r5, 0xC] - b _0810031C - .align 2, 0 -_081002FC: .4byte gPaletteFade -_08100300: - bl sub_81016F4 - ldr r0, _08100324 @ =0x00000bb8 - bl FreeSpritePaletteByTag - ldr r1, _08100328 @ =gUnknown_0300485C - ldr r0, _0810032C @ =sub_8100364 - str r0, [r1] - ldr r0, _08100330 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_0810031C: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08100324: .4byte 0x00000bb8 -_08100328: .4byte gUnknown_0300485C -_0810032C: .4byte sub_8100364 -_08100330: .4byte c2_exit_to_overworld_2_switch - thumb_func_end c1_overworld_prev_quest - - thumb_func_start sub_8100334 -sub_8100334: @ 8100334 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08100354 - ldr r0, _0810035C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08100360 @ =sub_80FE948 - str r0, [r1] -_08100354: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810035C: .4byte gTasks -_08100360: .4byte sub_80FE948 - thumb_func_end sub_8100334 - - thumb_func_start sub_8100364 -sub_8100364: @ 8100364 - push {lr} - bl ScriptContext2_Enable - bl LoadScrollIndicatorPalette - bl pal_fill_black - ldr r0, _08100388 @ =sub_8100334 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl sub_80FE7EC - pop {r0} - bx r0 - .align 2, 0 -_08100388: .4byte sub_8100334 - thumb_func_end sub_8100364 - - thumb_func_start sub_810038C -sub_810038C: @ 810038C - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _081003BC @ =gTasks + 0x8 - adds r2, r1, r0 - ldr r0, _081003C0 @ =gUnknown_020391AA - ldrb r1, [r0] - adds r3, r0, 0 - cmp r1, 0x1 - bne _081003C4 - movs r1, 0x2 - ldrsh r0, [r2, r1] - movs r4, 0xC - ldrsh r1, [r2, r4] - subs r0, r1 - subs r0, 0x6 - cmp r0, 0 - bge _081003C4 - ldrh r0, [r2, 0x2] - adds r0, 0x1 - b _081003DE - .align 2, 0 -_081003BC: .4byte gTasks + 0x8 -_081003C0: .4byte gUnknown_020391AA -_081003C4: - ldrb r0, [r3] - cmp r0, 0x2 - bne _081003E8 - movs r0, 0x2 - ldrsh r1, [r2, r0] - subs r1, 0x7 - ldr r0, _081003E4 @ =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x4] - cmp r1, r0 - blt _081003E8 - ldrh r0, [r2, 0x2] - subs r0, 0x1 -_081003DE: - strh r0, [r2, 0x2] - movs r0, 0 - b _0810042A - .align 2, 0 -_081003E4: .4byte gMapHeader -_081003E8: - ldrb r0, [r3] - cmp r0, 0x3 - bne _081003FE - movs r1, 0 - ldrsh r0, [r2, r1] - subs r0, 0x7 - cmp r0, 0 - bge _081003FE - ldrh r0, [r2] - adds r0, 0x1 - b _0810041E -_081003FE: - ldrb r0, [r3] - cmp r0, 0x4 - bne _08100428 - movs r3, 0 - ldrsh r1, [r2, r3] - movs r4, 0xA - ldrsh r0, [r2, r4] - adds r1, r0 - subs r1, 0x8 - ldr r0, _08100424 @ =gMapHeader - ldr r0, [r0] - ldr r0, [r0] - cmp r1, r0 - blt _08100428 - ldrh r0, [r2] - subs r0, 0x1 -_0810041E: - strh r0, [r2] - movs r0, 0 - b _0810042A - .align 2, 0 -_08100424: .4byte gMapHeader -_08100428: - movs r0, 0x1 -_0810042A: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_810038C - - thumb_func_start sub_8100430 -sub_8100430: @ 8100430 - push {lr} - ldr r0, _08100450 @ =gMain - ldrh r0, [r0, 0x2C] - movs r1, 0xF0 - ands r1, r0 - cmp r1, 0x40 - beq _08100454 - cmp r1, 0x80 - beq _08100454 - cmp r1, 0x20 - beq _08100454 - cmp r1, 0x10 - beq _08100454 - movs r0, 0 - b _08100456 - .align 2, 0 -_08100450: .4byte gMain -_08100454: - movs r0, 0x1 -_08100456: - pop {r1} - bx r1 - thumb_func_end sub_8100430 - - thumb_func_start sub_810045C -sub_810045C: @ 810045C - push {r4,lr} - ldr r1, _08100488 @ =gUnknown_020391AA - movs r0, 0 - strb r0, [r1] - ldr r4, _0810048C @ =gSprites - ldr r3, _08100490 @ =gUnknown_020391A8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r2, 0 - strh r2, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - strh r2, [r0, 0x34] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08100488: .4byte gUnknown_020391AA -_0810048C: .4byte gSprites -_08100490: .4byte gUnknown_020391A8 - thumb_func_end sub_810045C - - thumb_func_start sub_8100494 -sub_8100494: @ 8100494 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r5, _081004D0 @ =gSprites - ldr r3, _081004D4 @ =gUnknown_020391A8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x36 - ldrsh r6, [r0, r1] - cmp r6, 0 - beq _081004B2 - b _081005DE -_081004B2: - ldr r1, _081004D8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x1C - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _081004E0 - ldr r0, _081004DC @ =gUnknown_083EC96C - movs r3, 0x20 - ldrsh r1, [r2, r3] - lsls r1, 3 - b _081004EE - .align 2, 0 -_081004D0: .4byte gSprites -_081004D4: .4byte gUnknown_020391A8 -_081004D8: .4byte gTasks -_081004DC: .4byte gUnknown_083EC96C -_081004E0: - cmp r0, 0x2 - bne _08100500 - ldr r0, _081004FC @ =gUnknown_083EC96C - movs r3, 0x20 - ldrsh r1, [r2, r3] - lsls r1, 3 - adds r0, 0x4 -_081004EE: - adds r1, r0 - ldr r1, [r1] - adds r0, r4, 0 - bl _call_via_r1 - b _0810063C - .align 2, 0 -_081004FC: .4byte gUnknown_083EC96C -_08100500: - ldr r7, _08100644 @ =gMain - ldrh r1, [r7, 0x2C] - movs r0, 0xF0 - mov r12, r0 - ands r0, r1 - cmp r0, 0x40 - bne _08100534 - ldr r1, _08100648 @ =gUnknown_020391AA - movs r0, 0x1 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0810064C @ =0x0000fffe - strh r1, [r0, 0x34] - ldrh r0, [r2, 0xA] - subs r0, 0x1 - strh r0, [r2, 0xA] -_08100534: - ldrh r1, [r7, 0x2C] - mov r0, r12 - ands r0, r1 - cmp r0, 0x80 - bne _08100564 - ldr r1, _08100648 @ =gUnknown_020391AA - movs r0, 0x2 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x2 - strh r1, [r0, 0x34] - ldrh r0, [r2, 0xA] - adds r0, 0x1 - strh r0, [r2, 0xA] -_08100564: - ldrh r1, [r7, 0x2C] - mov r0, r12 - ands r0, r1 - cmp r0, 0x20 - bne _08100594 - ldr r1, _08100648 @ =gUnknown_020391AA - movs r0, 0x3 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - ldr r1, _0810064C @ =0x0000fffe - strh r1, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x34] - ldrh r0, [r2, 0x8] - subs r0, 0x1 - strh r0, [r2, 0x8] -_08100594: - ldrh r1, [r7, 0x2C] - mov r0, r12 - ands r0, r1 - cmp r0, 0x10 - bne _081005C4 - ldr r1, _08100648 @ =gUnknown_020391AA - movs r0, 0x4 - strb r0, [r1] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - movs r1, 0x2 - strh r1, [r0, 0x32] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - strh r6, [r0, 0x34] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] -_081005C4: - bl sub_8100430 - lsls r0, 24 - cmp r0, 0 - beq _081005DA - adds r0, r4, 0 - bl sub_810038C - lsls r0, 24 - cmp r0, 0 - bne _081005DE -_081005DA: - bl sub_810045C -_081005DE: - ldr r0, _08100648 @ =gUnknown_020391AA - ldrb r0, [r0] - cmp r0, 0 - beq _0810060C - ldr r3, _08100650 @ =gSprites - ldr r2, _08100654 @ =gUnknown_020391A8 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - ldrh r1, [r0, 0x36] - adds r1, 0x1 - strh r1, [r0, 0x36] - ldrb r0, [r2] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r3 - ldrh r2, [r1, 0x36] - movs r0, 0x7 - ands r0, r2 - strh r0, [r1, 0x36] -_0810060C: - ldr r0, _08100658 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r2, r1, r0 - movs r1, 0x1C - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _0810063C - ldr r4, _08100644 @ =gMain - ldrh r1, [r4, 0x2E] - movs r3, 0x1 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0810062E - strh r3, [r2, 0x1C] -_0810062E: - ldrh r1, [r4, 0x2E] - movs r3, 0x2 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0810063C - strh r3, [r2, 0x1C] -_0810063C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08100644: .4byte gMain -_08100648: .4byte gUnknown_020391AA -_0810064C: .4byte 0x0000fffe -_08100650: .4byte gSprites -_08100654: .4byte gUnknown_020391A8 -_08100658: .4byte gTasks - thumb_func_end sub_8100494 - - thumb_func_start sub_810065C -sub_810065C: @ 810065C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r2, _08100698 @ =gSprites - ldr r0, _0810069C @ =gUnknown_020391A8 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r2, 0 - strh r2, [r0, 0x3C] - ldr r1, _081006A0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - strh r2, [r0, 0x1C] - ldr r1, _081006A4 @ =sub_8100494 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08100698: .4byte gSprites -_0810069C: .4byte gUnknown_020391A8 -_081006A0: .4byte gTasks -_081006A4: .4byte sub_8100494 - thumb_func_end sub_810065C - - thumb_func_start sub_81006A8 -sub_81006A8: @ 81006A8 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _081006CC @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _081006C2 - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _081006C8 -_081006C2: - adds r0, r2, 0 - bl sub_810065C -_081006C8: - pop {r0} - bx r0 - .align 2, 0 -_081006CC: .4byte gMain - thumb_func_end sub_81006A8 - - thumb_func_start sub_81006D0 -sub_81006D0: @ 81006D0 - push {r4,r5,lr} - adds r3, r0, 0 - movs r1, 0 - adds r2, r3, 0 - adds r2, 0x84 - movs r5, 0 - ldr r4, _08100708 @ =0x000007ff -_081006DE: - adds r0, r2, r1 - strb r5, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r4 - bls _081006DE - movs r1, 0 - adds r2, r3, 0x4 - movs r3, 0 -_081006F2: - lsls r0, r1, 1 - adds r0, r2, r0 - strh r3, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3F - bls _081006F2 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08100708: .4byte 0x000007ff - thumb_func_end sub_81006D0 - - thumb_func_start sub_810070C -sub_810070C: @ 810070C - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 16 - movs r2, 0 - ldr r0, _0810073C @ =gMapHeader - ldr r0, [r0] - ldr r0, [r0, 0x10] - lsrs r4, r1, 12 - ldr r3, [r0, 0x8] -_0810071E: - lsls r1, r2, 1 - adds r1, r5 - adds r0, r4, r2 - lsls r0, 1 - adds r0, r3 - ldrh r0, [r0] - strh r0, [r1] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _0810071E - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810073C: .4byte gMapHeader - thumb_func_end sub_810070C - - thumb_func_start sub_8100740 -sub_8100740: @ 8100740 - push {r4-r7,lr} - sub sp, 0x20 - adds r7, r0, 0 - lsls r1, 16 - lsrs r2, r1, 16 - lsrs r3, r1, 26 - cmp r2, 0 - beq _08100754 - ldr r0, _08100784 @ =0x000003ff - ands r2, r0 -_08100754: - movs r5, 0 - ldr r0, _08100788 @ =gMapHeader - ldr r6, [r0] - lsls r4, r2, 5 -_0810075C: - mov r0, sp - adds r2, r0, r5 - ldr r0, [r6, 0x10] - ldr r0, [r0, 0x4] - adds r1, r4, r5 - adds r0, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1F - bls _0810075C - cmp r3, 0x1 - beq _081007AE - cmp r3, 0x1 - bgt _0810078C - cmp r3, 0 - beq _08100796 - b _0810086A - .align 2, 0 -_08100784: .4byte 0x000003ff -_08100788: .4byte gMapHeader -_0810078C: - cmp r3, 0x2 - beq _0810080E - cmp r3, 0x3 - beq _08100846 - b _0810086A -_08100796: - movs r5, 0 -_08100798: - adds r1, r7, r5 - mov r2, sp - adds r0, r2, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1F - bls _08100798 - b _0810086A -_081007AE: - movs r5, 0 - movs r6, 0xF -_081007B2: - lsls r4, r5, 2 - adds r4, r7 - adds r5, 0x1 - lsls r3, r5, 2 - subs r0, r3, 0x1 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4] - subs r0, r3, 0x2 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4, 0x1] - subs r0, r3, 0x3 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4, 0x2] - subs r3, 0x4 - mov r1, sp - adds r0, r1, r3 - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r4, 0x3] - lsls r5, 16 - lsrs r5, 16 - cmp r5, 0x7 - bls _081007B2 - b _0810086A -_0810080E: - movs r5, 0 - movs r3, 0x7 -_08100812: - lsls r2, r5, 2 - adds r2, r7 - subs r1, r3, r5 - lsls r1, 2 - mov r4, sp - adds r0, r4, r1 - ldrb r0, [r0] - strb r0, [r2] - adds r0, r1, 0x1 - add r0, sp - ldrb r0, [r0] - strb r0, [r2, 0x1] - adds r0, r1, 0x2 - add r0, sp - ldrb r0, [r0] - strb r0, [r2, 0x2] - adds r1, 0x3 - adds r0, r4, r1 - ldrb r0, [r0] - strb r0, [r2, 0x3] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _08100812 - b _0810086A -_08100846: - movs r5, 0 - movs r4, 0x1F - movs r6, 0xF -_0810084C: - adds r3, r7, r5 - subs r0, r4, r5 - add r0, sp - ldrb r2, [r0] - lsrs r1, r2, 4 - adds r0, r6, 0 - ands r0, r2 - lsls r0, 4 - adds r1, r0 - strb r1, [r3] - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x1F - bls _0810084C -_0810086A: - add sp, 0x20 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8100740 - - thumb_func_start sub_8100874 -sub_8100874: @ 8100874 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 -_0810087A: - lsls r0, r4, 5 - adds r0, 0x84 - adds r0, r5, r0 - lsls r2, r4, 1 - adds r1, r5, 0x4 - adds r1, r2 - ldrh r1, [r1] - bl sub_8100740 - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3F - bls _0810087A - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8100874 - - thumb_func_start sub_810089C -sub_810089C: @ 810089C - lsls r0, 16 - ldr r1, _081008B4 @ =gMapHeader - ldr r1, [r1] - ldr r1, [r1, 0x14] - ldr r1, [r1, 0xC] - lsrs r0, 15 - adds r0, r1 - ldrh r1, [r0] - ldr r0, _081008B8 @ =0x00000fff - ands r0, r1 - bx lr - .align 2, 0 -_081008B4: .4byte gMapHeader -_081008B8: .4byte 0x00000fff - thumb_func_end sub_810089C - - thumb_func_start sub_81008BC -sub_81008BC: @ 81008BC - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - ldr r0, [r0] - ldrb r0, [r0, 0x12] - movs r6, 0 - ldr r1, _0810092C @ =gUnknown_083EC860 - lsls r5, r0, 4 - adds r0, r5, r1 - ldrb r0, [r0, 0xC] - cmp r6, r0 - bcs _08100920 - adds r7, r1, 0 -_081008D8: - mov r4, r8 - ldm r4!, {r1} - adds r0, r7, 0x4 - adds r0, r5, r0 - ldr r0, [r0] - adds r0, r6 - ldrb r0, [r0] - ldr r1, [r1, 0x1C] - lsls r0, 1 - adds r0, r1 - ldrh r0, [r0] - adds r1, r7, 0 - adds r1, 0x8 - adds r1, r5, r1 - ldr r1, [r1] - adds r1, r6 - lsls r0, 3 - ldrb r1, [r1] - adds r0, r1 - lsls r0, 16 - lsrs r0, 16 - bl sub_810089C - adds r2, r5, r7 - ldr r1, [r2] - adds r1, r6 - ldrb r1, [r1] - lsls r1, 1 - adds r4, r1 - strh r0, [r4] - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - ldrb r2, [r2, 0xC] - cmp r6, r2 - bcc _081008D8 -_08100920: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810092C: .4byte gUnknown_083EC860 - thumb_func_end sub_81008BC - - thumb_func_start sub_8100930 -sub_8100930: @ 8100930 - push {r4,r5,lr} - lsls r0, 24 - ldr r3, _08100998 @ =gUnknown_020391AC - movs r1, 0 - strb r1, [r3] - ldrb r2, [r3, 0x1] - subs r1, 0x4 - ands r1, r2 - movs r4, 0xD - negs r4, r4 - ands r1, r4 - movs r2, 0x11 - negs r2, r2 - ands r1, r2 - subs r2, 0x10 - ands r1, r2 - strb r1, [r3, 0x1] - ldr r1, _0810099C @ =gUnknown_083EC900 - lsrs r0, 22 - adds r0, r1 - ldrb r1, [r0] - movs r5, 0x3F - lsls r1, 6 - strb r1, [r3, 0x1] - ldrh r2, [r3, 0x2] - ldr r1, _081009A0 @ =0xfffffe00 - ands r1, r2 - strh r1, [r3, 0x2] - ldrb r2, [r3, 0x3] - movs r1, 0x3F - negs r1, r1 - ands r1, r2 - strb r1, [r3, 0x3] - ldrb r0, [r0, 0x1] - lsls r0, 6 - ands r5, r1 - orrs r5, r0 - strb r5, [r3, 0x3] - ldrh r1, [r3, 0x4] - ldr r0, _081009A4 @ =0xfffffc00 - ands r0, r1 - strh r0, [r3, 0x4] - ldrb r0, [r3, 0x5] - ands r4, r0 - movs r0, 0x4 - orrs r4, r0 - movs r0, 0xF - ands r4, r0 - strb r4, [r3, 0x5] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08100998: .4byte gUnknown_020391AC -_0810099C: .4byte gUnknown_083EC900 -_081009A0: .4byte 0xfffffe00 -_081009A4: .4byte 0xfffffc00 - thumb_func_end sub_8100930 - - thumb_func_start sub_81009A8 -sub_81009A8: @ 81009A8 - movs r1, 0 - strh r1, [r0, 0x32] - strh r1, [r0, 0x34] - strh r1, [r0, 0x36] - strh r1, [r0, 0x38] - strh r1, [r0, 0x3A] - strh r1, [r0, 0x3C] - ldr r1, _081009BC @ =sub_81009C0 - str r1, [r0, 0x1C] - bx lr - .align 2, 0 -_081009BC: .4byte sub_81009C0 - thumb_func_end sub_81009A8 - - thumb_func_start sub_81009C0 -sub_81009C0: @ 81009C0 - push {lr} - adds r2, r0, 0 - movs r1, 0x3C - ldrsh r0, [r2, r1] - cmp r0, 0 - bne _081009FA - movs r1, 0x3A - ldrsh r0, [r2, r1] - cmp r0, 0xE - bgt _081009E2 - adds r3, r2, 0 - adds r3, 0x3E - ldrb r1, [r3] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - b _081009EC -_081009E2: - adds r3, r2, 0 - adds r3, 0x3E - ldrb r0, [r3] - movs r1, 0x4 - orrs r0, r1 -_081009EC: - strb r0, [r3] - ldrh r0, [r2, 0x3A] - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - strh r0, [r2, 0x3A] - b _08100A06 -_081009FA: - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_08100A06: - pop {r0} - bx r0 - thumb_func_end sub_81009C0 - - thumb_func_start sub_8100A0C -sub_8100A0C: @ 8100A0C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_8100D38 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08100A44 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _08100A3C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, _08100A40 @ =sub_8100E70 - str r1, [r0] - b _08100A50 - .align 2, 0 -_08100A3C: .4byte gTasks -_08100A40: .4byte sub_8100E70 -_08100A44: - ldr r1, _08100A58 @ =gSecretBaseText_NoDecorInUse - ldr r2, _08100A5C @ =sub_80FE428 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField -_08100A50: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08100A58: .4byte gSecretBaseText_NoDecorInUse -_08100A5C: .4byte sub_80FE428 - thumb_func_end sub_8100A0C - - thumb_func_start sub_8100A60 -sub_8100A60: @ 8100A60 - lsls r0, 24 - lsrs r0, 24 - ldr r3, _08100A78 @ =0x0201f000 - ldr r1, [r3] - adds r1, r0 - movs r2, 0 - strb r2, [r1] - ldr r1, [r3, 0x4] - adds r1, r0 - strb r2, [r1] - bx lr - .align 2, 0 -_08100A78: .4byte 0x0201f000 - thumb_func_end sub_8100A60 - - thumb_func_start sub_8100A7C -sub_8100A7C: @ 8100A7C - push {r4-r6,lr} - ldr r6, _08100A9C @ =gSpecialVar_0x8005 - movs r0, 0 - strh r0, [r6] - ldr r2, _08100AA0 @ =gScriptResult - strh r0, [r2] - ldr r4, _08100AA4 @ =gSpecialVar_0x8004 - ldr r1, _08100AA8 @ =gUnknown_02039234 - ldrh r0, [r4] - ldrb r1, [r1] - cmp r0, r1 - bne _08100AB8 - movs r0, 0x1 - strh r0, [r2] - b _08100B0A - .align 2, 0 -_08100A9C: .4byte gSpecialVar_0x8005 -_08100AA0: .4byte gScriptResult -_08100AA4: .4byte gSpecialVar_0x8004 -_08100AA8: .4byte gUnknown_02039234 -_08100AAC: - ldr r1, _08100AB4 @ =gSpecialVar_0x8006 - ldrb r0, [r2] - strh r0, [r1] - b _08100B0A - .align 2, 0 -_08100AB4: .4byte gSpecialVar_0x8006 -_08100AB8: - ldr r3, _08100B10 @ =gDecorations - ldr r2, _08100B14 @ =0x0201f000 - ldr r1, _08100B18 @ =gUnknown_020391B4 - ldrh r0, [r4] - lsls r0, 3 - adds r4, r0, r1 - ldrb r1, [r4] - ldr r0, [r2] - adds r0, r1 - ldrb r0, [r0] - lsls r0, 5 - adds r0, r3 - ldrb r0, [r0, 0x11] - cmp r0, 0x4 - bne _08100B0A - ldrh r0, [r4, 0x4] - strh r0, [r6] - ldrb r0, [r4] - bl sub_8100A60 - movs r1, 0 - ldr r0, _08100B1C @ =gMapHeader - ldr r0, [r0, 0x4] - ldrb r2, [r0] - cmp r1, r2 - bcs _08100B0A - ldr r5, [r0, 0x4] - ldrh r4, [r6] - adds r3, r2, 0 -_08100AF2: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 3 - adds r2, r0, r5 - ldrh r0, [r2, 0x14] - cmp r0, r4 - beq _08100AAC - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, r3 - bcc _08100AF2 -_08100B0A: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08100B10: .4byte gDecorations -_08100B14: .4byte 0x0201f000 -_08100B18: .4byte gUnknown_020391B4 -_08100B1C: .4byte gMapHeader - thumb_func_end sub_8100A7C - - thumb_func_start sub_8100B20 -sub_8100B20: @ 8100B20 - push {r4-r6,lr} - movs r2, 0 - ldr r0, _08100B4C @ =gMapHeader - ldr r0, [r0, 0x4] - ldrb r1, [r0] - cmp r2, r1 - bcs _08100B64 - adds r3, r0, 0 - ldr r5, [r3, 0x4] - ldr r0, _08100B50 @ =gSpecialVar_0x8004 - ldrh r4, [r0] - ldr r6, _08100B54 @ =gSpecialVar_0x8005 -_08100B38: - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - adds r1, r0, r5 - ldrh r0, [r1, 0x14] - cmp r0, r4 - bne _08100B58 - ldrb r0, [r1] - strh r0, [r6] - b _08100B64 - .align 2, 0 -_08100B4C: .4byte gMapHeader -_08100B50: .4byte gSpecialVar_0x8004 -_08100B54: .4byte gSpecialVar_0x8005 -_08100B58: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - ldrb r0, [r3] - cmp r2, r0 - bcc _08100B38 -_08100B64: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8100B20 - - thumb_func_start sub_8100B6C -sub_8100B6C: @ 8100B6C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r7, 0 - b _08100C64 -_08100B7C: - lsls r3, r7, 3 - ldr r0, _08100BE0 @ =gUnknown_020391B4 - adds r4, r3, r0 - ldrb r1, [r4] - ldr r2, _08100BE4 @ =0x0201f000 - ldr r0, [r2] - adds r0, r1 - ldrb r6, [r0] - lsls r0, r6, 5 - ldr r5, _08100BE8 @ =gDecorations - adds r0, r5 - ldrb r2, [r0, 0x11] - ldr r5, _08100BE4 @ =0x0201f000 - ldr r0, [r5, 0x4] - adds r0, r1 - ldrb r0, [r0] - lsrs r1, r0, 4 - mov r9, r1 - movs r5, 0xF - mov r10, r5 - mov r1, r10 - ands r1, r0 - mov r10, r1 - adds r5, r3, 0 - adds r3, r7, 0x1 - str r3, [sp] - cmp r2, 0x4 - beq _08100C5E - cmp r6, 0x29 - bne _08100BD0 - mov r0, r9 - adds r0, 0x7 - adds r1, 0x7 - bl MapGridGetMetatileIdAt - movs r1, 0xA3 - lsls r1, 2 - cmp r0, r1 - bne _08100BD0 - ldrb r0, [r4, 0x2] - adds r0, 0x1 - strb r0, [r4, 0x2] -_08100BD0: - movs r6, 0 - ldr r1, _08100BE0 @ =gUnknown_020391B4 - adds r2, r5, 0 - adds r0, r5, r1 - adds r3, r7, 0x1 - str r3, [sp] - b _08100C4E - .align 2, 0 -_08100BE0: .4byte gUnknown_020391B4 -_08100BE4: .4byte 0x0201f000 -_08100BE8: .4byte gDecorations -_08100BEC: - movs r4, 0 - adds r0, r2, r1 - adds r7, r6, 0x1 - str r7, [sp, 0x4] - ldrb r0, [r0, 0x1] - cmp r4, r0 - bcs _08100C42 - ldr r0, _08100C7C @ =gUnknown_020391B4 - adds r0, r5 - mov r8, r0 - subs r1, r6, 0x7 - str r1, [sp, 0x8] -_08100C04: - adds r0, r4, 0x7 - add r0, r9 - ldr r1, _08100C80 @ =gMapHeader - ldr r3, [r1] - mov r7, r10 - subs r2, r7, r6 - ldr r1, [r3] - muls r2, r1 - mov r7, r9 - adds r1, r7, r4 - adds r1, r2 - ldr r2, [r3, 0xC] - lsls r1, 1 - adds r1, r2 - ldrh r1, [r1] - movs r3, 0xC0 - lsls r3, 6 - adds r2, r3, 0 - orrs r2, r1 - mov r7, r10 - ldr r3, [sp, 0x8] - subs r1, r7, r3 - bl MapGridSetMetatileEntryAt - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - mov r7, r8 - ldrb r7, [r7, 0x1] - cmp r4, r7 - bcc _08100C04 -_08100C42: - ldr r1, [sp, 0x4] - lsls r0, r1, 24 - lsrs r6, r0, 24 - ldr r1, _08100C7C @ =gUnknown_020391B4 - adds r2, r5, 0 - adds r0, r5, r1 -_08100C4E: - ldrb r0, [r0, 0x2] - cmp r6, r0 - bcc _08100BEC - ldr r2, _08100C7C @ =gUnknown_020391B4 - adds r0, r5, r2 - ldrb r0, [r0] - bl sub_8100A60 -_08100C5E: - ldr r3, [sp] - lsls r0, r3, 24 - lsrs r7, r0, 24 -_08100C64: - ldr r0, _08100C84 @ =gUnknown_02039234 - ldrb r0, [r0] - cmp r7, r0 - bcc _08100B7C - 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 -_08100C7C: .4byte gUnknown_020391B4 -_08100C80: .4byte gMapHeader -_08100C84: .4byte gUnknown_02039234 - thumb_func_end sub_8100B6C - - thumb_func_start sub_8100C88 -sub_8100C88: @ 8100C88 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08100CAC @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08100CC4 - cmp r0, 0x1 - bgt _08100CB0 - cmp r0, 0 - beq _08100CBA - b _08100D24 - .align 2, 0 -_08100CAC: .4byte gTasks -_08100CB0: - cmp r0, 0x2 - beq _08100CF4 - cmp r0, 0x3 - beq _08100D08 - b _08100D24 -_08100CBA: - bl sub_8100B6C - movs r0, 0x1 - strh r0, [r5, 0xC] - b _08100D24 -_08100CC4: - ldr r0, _08100CEC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08100D24 - bl DrawWholeMapView - ldr r0, _08100CF0 @ =gUnknown_081A2F8A - bl ScriptContext1_SetupScript - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0x2 - strh r0, [r5, 0xC] - b _08100D24 - .align 2, 0 -_08100CEC: .4byte gPaletteFade -_08100CF0: .4byte gUnknown_081A2F8A -_08100CF4: - bl ScriptContext2_Enable - adds r0, r4, 0 - bl sub_80FED90 - bl pal_fill_black - movs r0, 0x3 - strh r0, [r5, 0xC] - b _08100D24 -_08100D08: - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08100D24 - ldr r0, _08100D2C @ =0x0000ffff - strh r0, [r5, 0x22] - ldr r1, _08100D30 @ =gSecretBaseText_DecorReturned - ldr r2, _08100D34 @ =sub_81010F0 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField -_08100D24: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08100D2C: .4byte 0x0000ffff -_08100D30: .4byte gSecretBaseText_DecorReturned -_08100D34: .4byte sub_81010F0 - thumb_func_end sub_8100C88 - - thumb_func_start sub_8100D38 -sub_8100D38: @ 8100D38 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r0, _08100D68 @ =0x0201f000 - adds r4, r0, 0 - ldrb r0, [r4, 0x8] - cmp r2, r0 - bcs _08100D7C - adds r5, r4, 0 - ldr r1, _08100D6C @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r1, r0, r1 -_08100D56: - ldr r0, [r5] - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _08100D70 - strh r2, [r1, 0x22] - movs r0, 0x1 - b _08100D7E - .align 2, 0 -_08100D68: .4byte 0x0201f000 -_08100D6C: .4byte gTasks -_08100D70: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - ldrb r0, [r4, 0x8] - cmp r2, r0 - bcc _08100D56 -_08100D7C: - movs r0, 0 -_08100D7E: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_8100D38 - - thumb_func_start SetUpPuttingAwayDecorationPlayerAvatar -SetUpPuttingAwayDecorationPlayerAvatar: @ 8100D84 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x4 - bl player_get_direction_lower_nybble - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r3, _08100DD8 @ =gUnknown_020391A8 - ldr r2, _08100DDC @ =gSprites - ldr r4, _08100DE0 @ =gUnknown_03004880 - ldr r1, [r4, 0x4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x2E] - strb r0, [r3] - bl sub_81016C8 - ldr r0, _08100DE4 @ =gSpriteTemplate_83ECA88 - movs r1, 0x78 - movs r2, 0x50 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - str r0, [r4, 0x4] - ldr r0, _08100DE8 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _08100DF0 - ldr r1, _08100DEC @ =SpriteCallbackDummy - str r0, [sp] - movs r0, 0xC1 - b _08100DF8 - .align 2, 0 -_08100DD8: .4byte gUnknown_020391A8 -_08100DDC: .4byte gSprites -_08100DE0: .4byte gUnknown_03004880 -_08100DE4: .4byte gSpriteTemplate_83ECA88 -_08100DE8: .4byte gSaveBlock2 -_08100DEC: .4byte SpriteCallbackDummy -_08100DF0: - ldr r1, _08100E5C @ =SpriteCallbackDummy - movs r0, 0 - str r0, [sp] - movs r0, 0xC2 -_08100DF8: - movs r2, 0x88 - movs r3, 0x48 - bl AddPseudoFieldObject - ldr r1, _08100E60 @ =gUnknown_020391A9 - strb r0, [r1] - ldr r6, _08100E64 @ =gSprites - ldr r0, _08100E60 @ =gUnknown_020391A9 - ldrb r0, [r0] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrb r2, [r1, 0x5] - movs r4, 0xD - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - movs r2, 0x4 - mov r8, r2 - mov r2, r8 - orrs r0, r2 - strb r0, [r1, 0x5] - ldr r5, _08100E68 @ =gUnknown_020391A8 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - bl DestroySprite - ldr r0, _08100E6C @ =gUnknown_03004880 - ldr r0, [r0, 0x4] - strb r0, [r5] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r1, [r0, 0x5] - ands r4, r1 - mov r1, r8 - orrs r4, r1 - strb r4, [r0, 0x5] - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08100E5C: .4byte SpriteCallbackDummy -_08100E60: .4byte gUnknown_020391A9 -_08100E64: .4byte gSprites -_08100E68: .4byte gUnknown_020391A8 -_08100E6C: .4byte gUnknown_03004880 - thumb_func_end SetUpPuttingAwayDecorationPlayerAvatar - - thumb_func_start sub_8100E70 -sub_8100E70: @ 8100E70 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _08100E94 @ =gTasks + 0x8 - adds r4, r0, r1 - movs r1, 0x4 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _08100EC4 - cmp r0, 0x1 - bgt _08100E98 - cmp r0, 0 - beq _08100E9E - b _08100EE6 - .align 2, 0 -_08100E94: .4byte gTasks + 0x8 -_08100E98: - cmp r0, 0x2 - beq _08100ED2 - b _08100EE6 -_08100E9E: - ldr r0, _08100EC0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08100EE6 - adds r0, r5, 0 - bl sub_80FF0E0 - movs r0, 0x1 - strh r0, [r4, 0x4] - strh r0, [r4, 0xC] - strh r0, [r4, 0xA] - bl sub_8072DEC - b _08100EE6 - .align 2, 0 -_08100EC0: .4byte gPaletteFade -_08100EC4: - bl SetUpPuttingAwayDecorationPlayerAvatar - bl pal_fill_black - movs r0, 0x2 - strh r0, [r4, 0x4] - b _08100EE6 -_08100ED2: - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08100EE6 - strh r0, [r4, 0x18] - adds r0, r5, 0 - bl sub_8100EEC -_08100EE6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8100E70 - - thumb_func_start sub_8100EEC -sub_8100EEC: @ 8100EEC - push {r4-r6,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r4, _08100F70 @ =gSprites - ldr r3, _08100F74 @ =gUnknown_020391A8 - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r6, 0 - strh r6, [r0, 0x3C] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r1, r4, 0 - adds r1, 0x1C - adds r0, r1 - ldr r1, _08100F78 @ =sub_8101698 - str r1, [r0] - ldr r2, _08100F7C @ =gUnknown_020391A9 - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x88 - strh r1, [r0, 0x20] - ldrb r1, [r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - movs r1, 0x48 - strh r1, [r0, 0x22] - ldr r1, _08100F80 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - strh r6, [r0, 0x1C] - ldr r1, _08100F84 @ =sub_8100494 - str r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08100F70: .4byte gSprites -_08100F74: .4byte gUnknown_020391A8 -_08100F78: .4byte sub_8101698 -_08100F7C: .4byte gUnknown_020391A9 -_08100F80: .4byte gTasks -_08100F84: .4byte sub_8100494 - thumb_func_end sub_8100EEC - - thumb_func_start sub_8100F88 -sub_8100F88: @ 8100F88 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _08100FB0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - bl sub_810045C - adds r0, r4, 0 - bl sub_8101024 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08100FB0: .4byte gTasks - thumb_func_end sub_8100F88 - - thumb_func_start sub_8100FB4 -sub_8100FB4: @ 8100FB4 - push {r4,r5,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _0810100C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0x1C] - bl sub_810045C - ldr r3, _08101010 @ =gSprites - ldr r5, _08101014 @ =gUnknown_020391A8 - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r5] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, 0x1C - adds r0, r3 - ldr r1, _08101018 @ =SpriteCallbackDummy - str r1, [r0] - ldr r1, _0810101C @ =gSecretBaseText_StopPuttingAwayDecor - ldr r2, _08101020 @ =sub_810156C - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810100C: .4byte gTasks -_08101010: .4byte gSprites -_08101014: .4byte gUnknown_020391A8 -_08101018: .4byte SpriteCallbackDummy -_0810101C: .4byte gSecretBaseText_StopPuttingAwayDecor -_08101020: .4byte sub_810156C - thumb_func_end sub_8100FB4 - - thumb_func_start sub_8101024 -sub_8101024: @ 8101024 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r0, r5, 0 - bl sub_8101460 - ldr r0, _08101040 @ =gUnknown_02039234 - ldrb r0, [r0] - cmp r0, 0 - beq _0810104C - ldr r1, _08101044 @ =gSecretBaseText_ReturnDecor - ldr r2, _08101048 @ =sub_8101518 - b _081010B0 - .align 2, 0 -_08101040: .4byte gUnknown_02039234 -_08101044: .4byte gSecretBaseText_ReturnDecor -_08101048: .4byte sub_8101518 -_0810104C: - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - ldr r0, _081010BC @ =gTasks + 0x8 - adds r1, r0 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r2, 0x2 - ldrsh r1, [r1, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsSecretBasePC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08101082 - adds r0, r4, 0 - bl sub_805738C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081010D4 -_08101082: - ldr r3, _081010C0 @ =gSprites - ldr r4, _081010C4 @ =gUnknown_020391A8 - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - adds r0, 0x3E - ldrb r2, [r0] - movs r1, 0x5 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - ldrb r1, [r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r3, 0x1C - adds r0, r3 - ldr r1, _081010C8 @ =SpriteCallbackDummy - str r1, [r0] - ldr r1, _081010CC @ =gSecretBaseText_StopPuttingAwayDecor - ldr r2, _081010D0 @ =sub_810156C -_081010B0: - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _081010E0 - .align 2, 0 -_081010BC: .4byte gTasks + 0x8 -_081010C0: .4byte gSprites -_081010C4: .4byte gUnknown_020391A8 -_081010C8: .4byte SpriteCallbackDummy -_081010CC: .4byte gSecretBaseText_StopPuttingAwayDecor -_081010D0: .4byte sub_810156C -_081010D4: - ldr r1, _081010E8 @ =gSecretBaseText_NoDecor - ldr r2, _081010EC @ =sub_81010F0 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField -_081010E0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_081010E8: .4byte gSecretBaseText_NoDecor -_081010EC: .4byte sub_81010F0 - thumb_func_end sub_8101024 - - thumb_func_start sub_81010F0 -sub_81010F0: @ 81010F0 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, _08101114 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0810110A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08101110 -_0810110A: - adds r0, r2, 0 - bl sub_8100EEC -_08101110: - pop {r0} - bx r0 - .align 2, 0 -_08101114: .4byte gMain - thumb_func_end sub_81010F0 - - thumb_func_start sub_8101118 -sub_8101118: @ 8101118 - push {lr} - adds r2, r1, 0 - lsls r0, 24 - ldr r1, _08101130 @ =gDecorations - lsrs r0, 19 - adds r0, r1 - ldrb r1, [r0, 0x12] - cmp r1, 0 - bne _08101134 - movs r0, 0x1 - strb r0, [r2, 0x1] - b _08101192 - .align 2, 0 -_08101130: .4byte gDecorations -_08101134: - cmp r1, 0x1 - bne _08101140 - movs r0, 0x2 - strb r0, [r2, 0x1] - strb r1, [r2, 0x2] - b _08101194 -_08101140: - cmp r1, 0x2 - bne _0810114C - movs r0, 0x3 - strb r0, [r2, 0x1] - movs r0, 0x1 - b _08101192 -_0810114C: - cmp r1, 0x3 - bne _08101154 - movs r0, 0x4 - b _0810118E -_08101154: - cmp r1, 0x4 - bne _0810115E - movs r0, 0x2 - strb r0, [r2, 0x1] - b _08101192 -_0810115E: - cmp r1, 0x5 - bne _08101166 - movs r0, 0x1 - b _0810118E -_08101166: - cmp r1, 0x6 - bne _08101172 - movs r0, 0x1 - strb r0, [r2, 0x1] - movs r0, 0x3 - b _08101192 -_08101172: - cmp r1, 0x7 - bne _0810117E - movs r0, 0x2 - strb r0, [r2, 0x1] - movs r0, 0x4 - b _08101192 -_0810117E: - cmp r1, 0x8 - bne _08101188 - movs r0, 0x3 - strb r0, [r2, 0x1] - b _08101192 -_08101188: - cmp r1, 0x9 - bne _08101194 - movs r0, 0x3 -_0810118E: - strb r0, [r2, 0x1] - movs r0, 0x2 -_08101192: - strb r0, [r2, 0x2] -_08101194: - pop {r0} - bx r0 - thumb_func_end sub_8101118 - - thumb_func_start sub_8101198 -sub_8101198: @ 8101198 - push {r4-r6,lr} - lsls r0, 24 - lsls r1, 24 - ldr r5, _081011F0 @ =gSprites - ldr r6, _081011F4 @ =gUnknown_020391A8 - ldrb r3, [r6] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r5 - adds r2, 0x3E - ldrb r3, [r2] - movs r4, 0x4 - orrs r3, r4 - strb r3, [r2] - ldrb r3, [r6] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r3, r5, 0 - adds r3, 0x1C - adds r2, r3 - ldr r3, _081011F8 @ =SpriteCallbackDummy - str r3, [r2] - ldr r4, _081011FC @ =gUnknown_020391A9 - ldrb r3, [r4] - lsls r2, r3, 4 - adds r2, r3 - lsls r2, 2 - adds r2, r5 - lsrs r0, 20 - adds r0, 0x88 - strh r0, [r2, 0x20] - ldrb r2, [r4] - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r5 - lsrs r1, 20 - adds r1, 0x48 - strh r1, [r0, 0x22] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_081011F0: .4byte gSprites -_081011F4: .4byte gUnknown_020391A8 -_081011F8: .4byte SpriteCallbackDummy -_081011FC: .4byte gUnknown_020391A9 - thumb_func_end sub_8101198 - - thumb_func_start sub_8101200 -sub_8101200: @ 8101200 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - ldr r3, _0810128C @ =gTasks - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 3 - adds r2, r3 - ldrb r0, [r2, 0x8] - subs r0, 0x7 - lsls r0, 24 - lsrs r7, r0, 24 - ldrb r0, [r2, 0xA] - subs r0, 0x7 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r2, _08101290 @ =0x0201f000 - ldr r0, [r2, 0x4] - adds r0, r1 - ldrb r0, [r0] - lsrs r4, r0, 4 - movs r5, 0xF - ands r5, r0 - ldr r0, [r2] - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x29 - bne _0810125A - adds r0, r4, 0x7 - adds r1, r5, 0x7 - bl MapGridGetMetatileIdAt - movs r1, 0xA3 - lsls r1, 2 - cmp r0, r1 - bne _0810125A - ldrb r0, [r6, 0x2] - subs r0, 0x1 - strb r0, [r6, 0x2] -_0810125A: - cmp r7, r4 - bcc _08101294 - ldrb r1, [r6, 0x1] - adds r0, r4, r1 - cmp r7, r0 - bge _08101294 - ldrb r0, [r6, 0x2] - subs r0, r5, r0 - cmp r8, r0 - ble _08101294 - cmp r8, r5 - bhi _08101294 - subs r0, r7, r4 - adds r0, 0x1 - subs r0, r1, r0 - lsls r0, 24 - lsrs r0, 24 - mov r2, r8 - subs r1, r5, r2 - lsls r1, 24 - lsrs r1, 24 - bl sub_8101198 - movs r0, 0x1 - b _08101296 - .align 2, 0 -_0810128C: .4byte gTasks -_08101290: .4byte 0x0201f000 -_08101294: - movs r0, 0 -_08101296: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8101200 - - thumb_func_start sub_81012A0 -sub_81012A0: @ 81012A0 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - ldr r2, _0810130C @ =0x0201f000 - ldr r3, _08101310 @ =gUnknown_020391B4 - ldr r0, _08101314 @ =gUnknown_02039234 - ldrb r0, [r0] - lsls r0, 3 - adds r0, r3 - ldrb r1, [r0] - ldr r0, [r2, 0x4] - adds r0, r1 - ldrb r0, [r0] - lsrs r7, r0, 4 - movs r6, 0xF - ands r6, r0 - movs r5, 0 - ldr r0, _08101318 @ =gSaveBlock1 - mov r8, r0 - mov r9, r3 -_081012CA: - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - mov r2, r8 - adds r1, r0, r2 - ldr r2, _0810131C @ =0x00000c24 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r7 - bne _08101328 - ldr r2, _08101320 @ =0x00000c26 - adds r0, r1, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, r6 - bne _08101328 - ldr r0, _08101324 @ =0x00000c34 - adds r4, r1, r0 - ldrh r0, [r4] - bl FlagGet - lsls r0, 24 - cmp r0, 0 - bne _08101328 - ldr r0, _08101314 @ =gUnknown_02039234 - ldrb r0, [r0] - lsls r0, 3 - add r0, r9 - ldrh r1, [r4] - strh r1, [r0, 0x4] - b _08101332 - .align 2, 0 -_0810130C: .4byte 0x0201f000 -_08101310: .4byte gUnknown_020391B4 -_08101314: .4byte gUnknown_02039234 -_08101318: .4byte gSaveBlock1 -_0810131C: .4byte 0x00000c24 -_08101320: .4byte 0x00000c26 -_08101324: .4byte 0x00000c34 -_08101328: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x3F - bls _081012CA -_08101332: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_81012A0 - - thumb_func_start sub_8101340 -sub_8101340: @ 8101340 - push {r4-r7,lr} - lsls r0, 24 - lsrs r7, r0, 24 - movs r6, 0 - b _081013A2 -_0810134A: - ldr r0, [r0] - adds r1, r0, r6 - ldrb r0, [r1] - cmp r0, 0 - beq _0810139C - ldr r0, _08101390 @ =gDecorations - ldrb r2, [r1] - lsls r1, r2, 5 - adds r1, r0 - ldrb r0, [r1, 0x11] - cmp r0, 0x4 - bne _0810139C - ldr r5, _08101394 @ =gUnknown_020391B4 - adds r0, r2, 0 - adds r1, r5, 0 - bl sub_8101118 - lsls r1, r6, 24 - lsrs r1, 24 - adds r0, r7, 0 - adds r2, r5, 0 - bl sub_8101200 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1 - bne _0810139C - strb r6, [r5] - bl sub_81012A0 - ldr r0, _08101398 @ =gUnknown_02039234 - strb r4, [r0] - movs r0, 0x1 - b _081013AC - .align 2, 0 -_08101390: .4byte gDecorations -_08101394: .4byte gUnknown_020391B4 -_08101398: .4byte gUnknown_02039234 -_0810139C: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 -_081013A2: - ldr r0, _081013B4 @ =0x0201f000 - ldrb r1, [r0, 0x8] - cmp r6, r1 - bcc _0810134A - movs r0, 0 -_081013AC: - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_081013B4: .4byte 0x0201f000 - thumb_func_end sub_8101340 - - thumb_func_start sub_81013B8 -sub_81013B8: @ 81013B8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - lsls r1, 24 - lsrs r1, 24 - mov r10, r1 - lsls r2, 24 - lsrs r2, 24 - mov r9, r2 - lsls r3, 24 - lsrs r3, 24 - mov r8, r3 - movs r4, 0 - ldr r7, _08101450 @ =0x0201f000 - ldrb r0, [r7, 0x8] - cmp r4, r0 - bcs _0810143E - adds r6, r7, 0 - ldr r5, _08101454 @ =gUnknown_02039234 -_081013EA: - ldr r0, [r6] - adds r0, r4 - ldrb r1, [r0] - ldr r0, [r6, 0x4] - adds r0, r4 - ldrb r0, [r0] - lsrs r3, r0, 4 - movs r2, 0xF - ands r2, r0 - cmp r1, 0 - beq _08101432 - ldr r0, _08101458 @ =gDecorations - lsls r1, 5 - adds r1, r0 - ldrb r0, [r1, 0x11] - cmp r0, 0x4 - bne _08101432 - ldr r0, [sp] - cmp r0, r3 - bhi _08101432 - cmp r10, r2 - bhi _08101432 - cmp r9, r3 - bcc _08101432 - cmp r8, r2 - bcc _08101432 - ldr r0, _0810145C @ =gUnknown_020391B4 - ldrb r1, [r5] - lsls r1, 3 - adds r1, r0 - strb r4, [r1] - bl sub_81012A0 - ldrb r0, [r5] - adds r0, 0x1 - strb r0, [r5] -_08101432: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - ldrb r0, [r7, 0x8] - cmp r4, r0 - bcc _081013EA -_0810143E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08101450: .4byte 0x0201f000 -_08101454: .4byte gUnknown_02039234 -_08101458: .4byte gDecorations -_0810145C: .4byte gUnknown_020391B4 - thumb_func_end sub_81013B8 - - thumb_func_start sub_8101460 -sub_8101460: @ 8101460 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r4, _081014B8 @ =gUnknown_02039234 - movs r0, 0 - strb r0, [r4] - adds r0, r6, 0 - bl sub_8101340 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08101504 - movs r5, 0 - ldr r0, _081014BC @ =0x0201f000 - ldrb r1, [r0, 0x8] - cmp r5, r1 - bcs _081014D2 - adds r7, r4, 0 -_08101486: - ldr r0, [r0] - adds r0, r5 - ldrb r1, [r0] - cmp r1, 0 - beq _081014C4 - ldr r4, _081014C0 @ =gUnknown_020391B4 - adds r0, r1, 0 - adds r1, r4, 0 - bl sub_8101118 - adds r0, r6, 0 - adds r1, r5, 0 - adds r2, r4, 0 - bl sub_8101200 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _081014C4 - strb r5, [r4] - ldrb r0, [r7] - adds r0, 0x1 - strb r0, [r7] - b _081014D2 - .align 2, 0 -_081014B8: .4byte gUnknown_02039234 -_081014BC: .4byte 0x0201f000 -_081014C0: .4byte gUnknown_020391B4 -_081014C4: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, _0810150C @ =0x0201f000 - ldrb r1, [r0, 0x8] - cmp r5, r1 - bcc _08101486 -_081014D2: - ldr r0, _08101510 @ =gUnknown_02039234 - ldrb r0, [r0] - cmp r0, 0 - beq _08101504 - ldr r0, _0810150C @ =0x0201f000 - ldr r2, _08101514 @ =gUnknown_020391B4 - ldrb r1, [r2] - ldr r0, [r0, 0x4] - adds r0, r1 - ldrb r1, [r0] - lsrs r0, r1, 4 - movs r3, 0xF - ands r3, r1 - ldrb r1, [r2, 0x2] - subs r1, r3, r1 - adds r1, 0x1 - lsls r1, 24 - lsrs r1, 24 - ldrb r2, [r2, 0x1] - adds r2, r0 - subs r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - bl sub_81013B8 -_08101504: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0810150C: .4byte 0x0201f000 -_08101510: .4byte gUnknown_02039234 -_08101514: .4byte gUnknown_020391B4 - thumb_func_end sub_8101460 - - thumb_func_start sub_8101518 -sub_8101518: @ 8101518 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _08101538 @ =gUnknown_083EC9CC - adds r0, r4, 0 - bl sub_80F914C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101538: .4byte gUnknown_083EC9CC - thumb_func_end sub_8101518 - - thumb_func_start sub_810153C -sub_810153C: @ 810153C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _08101564 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, _08101568 @ =sub_8100C88 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101564: .4byte gTasks -_08101568: .4byte sub_8100C88 - thumb_func_end sub_810153C - - thumb_func_start sub_810156C -sub_810156C: @ 810156C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _0810158C @ =gUnknown_083EC9D4 - adds r0, r4, 0 - bl sub_80F914C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810158C: .4byte gUnknown_083EC9D4 - thumb_func_end sub_810156C - - thumb_func_start sub_8101590 -sub_8101590: @ 8101590 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl sub_81015B0 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8101590 - - thumb_func_start sub_81015B0 -sub_81015B0: @ 81015B0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _081015D8 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r1, 0 - strh r1, [r0, 0xC] - ldr r1, _081015DC @ =sub_81015E0 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081015D8: .4byte gTasks -_081015DC: .4byte sub_81015E0 - thumb_func_end sub_81015B0 - - thumb_func_start sub_81015E0 -sub_81015E0: @ 81015E0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08101600 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r5, r0, r1 - movs r1, 0xC - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _08101604 - cmp r0, 0x1 - beq _08101620 - b _08101636 - .align 2, 0 -_08101600: .4byte gTasks -_08101604: - ldr r0, _0810161C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08101636 - adds r0, r4, 0 - bl sub_80FF114 - movs r0, 0x1 - strh r0, [r5, 0xC] - b _08101636 - .align 2, 0 -_0810161C: .4byte gPaletteFade -_08101620: - bl sub_81016F4 - ldr r0, _0810163C @ =gUnknown_0300485C - ldr r1, _08101640 @ =sub_8101678 - str r1, [r0] - ldr r0, _08101644 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_08101636: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810163C: .4byte gUnknown_0300485C -_08101640: .4byte sub_8101678 -_08101644: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_81015E0 - - thumb_func_start sub_8101648 -sub_8101648: @ 8101648 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08101668 - ldr r0, _08101670 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _08101674 @ =Task_DecorationPCProcessMenuInput - str r0, [r1] -_08101668: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101670: .4byte gTasks -_08101674: .4byte Task_DecorationPCProcessMenuInput - thumb_func_end sub_8101648 - - thumb_func_start sub_8101678 -sub_8101678: @ 8101678 - push {lr} - bl pal_fill_black - bl MenuDisplayMessageBox - bl sub_80FE220 - ldr r0, _08101694 @ =sub_8101648 - movs r1, 0x8 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_08101694: .4byte sub_8101648 - thumb_func_end sub_8101678 - - thumb_func_start sub_8101698 -sub_8101698: @ 8101698 - push {lr} - adds r2, r0, 0 - ldrh r0, [r2, 0x2E] - adds r0, 0x1 - movs r1, 0x1F - ands r0, r1 - strh r0, [r2, 0x2E] - cmp r0, 0xF - ble _081016B8 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _081016C4 -_081016B8: - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_081016C4: - pop {r0} - bx r0 - thumb_func_end sub_8101698 - - thumb_func_start sub_81016C8 -sub_81016C8: @ 81016C8 - push {lr} - ldr r0, _081016DC @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _081016E4 - ldr r0, _081016E0 @ =gUnknown_083ECA5C - bl LoadSpritePalette - b _081016EA - .align 2, 0 -_081016DC: .4byte gSaveBlock2 -_081016E0: .4byte gUnknown_083ECA5C -_081016E4: - ldr r0, _081016F0 @ =gUnknown_083ECA64 - bl LoadSpritePalette -_081016EA: - pop {r0} - bx r0 - .align 2, 0 -_081016F0: .4byte gUnknown_083ECA64 - thumb_func_end sub_81016C8 - - thumb_func_start sub_81016F4 -sub_81016F4: @ 81016F4 - push {lr} - movs r0, 0x8 - bl FreeSpritePaletteByTag - pop {r0} - bx r0 - thumb_func_end sub_81016F4 - - thumb_func_start sub_8101700 -sub_8101700: @ 8101700 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_81341D4 - lsls r0, 24 - cmp r0, 0 - bne _08101728 - ldr r1, _08101720 @ =gSecretBaseText_NoDecors - ldr r2, _08101724 @ =sub_80FE428 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _08101742 - .align 2, 0 -_08101720: .4byte gSecretBaseText_NoDecors -_08101724: .4byte sub_80FE428 -_08101728: - ldr r1, _08101748 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x1 - strh r1, [r0, 0x1E] - ldr r0, _0810174C @ =gUnknown_020388F6 - strb r2, [r0] - adds r0, r4, 0 - bl sub_80FE5AC -_08101742: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101748: .4byte gTasks -_0810174C: .4byte gUnknown_020388F6 - thumb_func_end sub_8101700 - - thumb_func_start unref_sub_8101750 -unref_sub_8101750: @ 8101750 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_81341D4 - lsls r0, 24 - cmp r0, 0 - bne _08101778 - ldr r1, _08101770 @ =gSecretBaseText_NoDecors - ldr r2, _08101774 @ =sub_80FE428 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _08101792 - .align 2, 0 -_08101770: .4byte gSecretBaseText_NoDecors -_08101774: .4byte sub_80FE428 -_08101778: - ldr r1, _08101798 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - movs r2, 0 - movs r1, 0x2 - strh r1, [r0, 0x1E] - ldr r0, _0810179C @ =gUnknown_020388F6 - strb r2, [r0] - adds r0, r4, 0 - bl sub_80FE5AC -_08101792: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101798: .4byte gTasks -_0810179C: .4byte gUnknown_020388F6 - thumb_func_end unref_sub_8101750 - - thumb_func_start sub_81017A0 -sub_81017A0: @ 81017A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - bl sub_80FEF74 - bl sub_80FED1C - bl sub_80FEFA4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08101808 - ldr r0, _081017EC @ =gStringVar1 - ldr r1, _081017F0 @ =gUnknown_020388F5 - ldrb r2, [r1] - ldr r1, _081017F4 @ =gUnknown_020388D0 - ldr r1, [r1] - adds r1, r2 - ldrb r1, [r1] - lsls r1, 5 - ldr r2, _081017F8 @ =gDecorations + 0x1 - adds r1, r2 - bl StringCopy - ldr r4, _081017FC @ =gStringVar4 - ldr r1, _08101800 @ =gSecretBaseText_WillBeDiscarded - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _08101804 @ =sub_8101824 - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _08101814 - .align 2, 0 -_081017EC: .4byte gStringVar1 -_081017F0: .4byte gUnknown_020388F5 -_081017F4: .4byte gUnknown_020388D0 -_081017F8: .4byte gDecorations + 0x1 -_081017FC: .4byte gStringVar4 -_08101800: .4byte gSecretBaseText_WillBeDiscarded -_08101804: .4byte sub_8101824 -_08101808: - ldr r1, _0810181C @ =gSecretBaseText_DecorInUse - ldr r2, _08101820 @ =sub_80FEFF4 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField -_08101814: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810181C: .4byte gSecretBaseText_DecorInUse -_08101820: .4byte sub_80FEFF4 - thumb_func_end sub_81017A0 - - thumb_func_start sub_8101824 -sub_8101824: @ 8101824 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _08101844 @ =gUnknown_083ECAA0 - adds r0, r4, 0 - bl sub_80F914C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08101844: .4byte gUnknown_083ECAA0 - thumb_func_end sub_8101824 - - thumb_func_start sub_8101848 -sub_8101848: @ 8101848 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1A - movs r3, 0xE - bl MenuZeroFillWindowRect - ldr r6, _08101890 @ =gUnknown_020388F5 - ldrb r1, [r6] - ldr r5, _08101894 @ =gUnknown_020388D0 - ldr r0, [r5] - adds r0, r1 - ldrb r0, [r0] - bl sub_8109A30 - ldrb r1, [r6] - ldr r0, [r5] - adds r0, r1 - movs r1, 0 - strb r1, [r0] - adds r0, r4, 0 - bl sub_80FF098 - ldr r1, _08101898 @ =gSecretBaseText_DecorThrownAway - ldr r2, _0810189C @ =sub_80FEFF4 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08101890: .4byte gUnknown_020388F5 -_08101894: .4byte gUnknown_020388D0 -_08101898: .4byte gSecretBaseText_DecorThrownAway -_0810189C: .4byte sub_80FEFF4 - thumb_func_end sub_8101848 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/easy_chat.s b/asm/easy_chat.s index 2983deea0..c34212a24 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -1595,7 +1595,7 @@ _080E6D58: .align 2, 0 _080E6D60: .4byte 0x02001000 _080E6D64: - bl sub_8072DEC + bl HandleDestroyMenuCursors bl sub_80E81FC ldr r0, _080E6D78 @ =sub_80E6AC4 bl sub_80E682C @@ -1781,7 +1781,7 @@ _080E6ED0: .4byte 0x00009c7c _080E6ED4: .4byte 0x0000ffff _080E6ED8: .4byte sub_80E752C _080E6EDC: - bl sub_8072DEC + bl HandleDestroyMenuCursors bl sub_80E81FC ldr r4, _080E6EFC @ =0x02001000 ldrb r0, [r4, 0x8] @@ -9975,7 +9975,7 @@ _080EAE50: lsls r0, 16 lsrs r0, 16 movs r1, 0 - bl sub_8090D90 + bl GetNationalPokedexFlag b _080EAE7C _080EAE62: ldr r0, _080EAE74 @ =gUnknown_083DB694 diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s index 2f11d4111..101f9e5c3 100644 --- a/asm/egg_hatch.s +++ b/asm/egg_hatch.s @@ -46,10 +46,10 @@ AddHatchedMonToParty: @ 80429EC lsrs r4, 16 adds r0, r4, 0 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag adds r0, r4, 0 movs r1, 0x3 - bl sub_8090D90 + bl GetNationalPokedexFlag ldr r1, _08042AA4 @ =gStringVar1 adds r0, r5, 0 bl GetMonNick diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s index 404270195..159d96298 100644 --- a/asm/evolution_scene.s +++ b/asm/evolution_scene.s @@ -1233,13 +1233,13 @@ _08112354: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag ldrh r0, [r4, 0xC] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 - bl sub_8090D90 + bl GetNationalPokedexFlag adds r0, r5, 0 movs r1, 0xB bl GetMonData @@ -1739,13 +1739,13 @@ _081127BE: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag ldrh r0, [r4, 0x10] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 - bl sub_8090D90 + bl GetNationalPokedexFlag movs r0, 0xE bl IncrementGameStat b _08112FD0 @@ -3047,13 +3047,13 @@ _08113316: lsls r0, 16 lsrs r0, 16 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag ldrh r0, [r4, 0x10] bl SpeciesToNationalPokedexNum lsls r0, 16 lsrs r0, 16 movs r1, 0x3 - bl sub_8090D90 + bl GetNationalPokedexFlag movs r0, 0xE bl IncrementGameStat b _08113B3A @@ -3517,7 +3517,7 @@ _08113768: movs r2, 0x8 movs r3, 0x1D bl ZeroFillWindowRect - bl sub_814A7FC + bl DestroyMenuCursor ldr r0, _081137D8 @ =gUnknown_08400F8C movs r1, 0x92 lsls r1, 3 @@ -3591,7 +3591,7 @@ _08113818: movs r2, 0x8 movs r3, 0x1D bl ZeroFillWindowRect - bl sub_814A7FC + bl DestroyMenuCursor ldr r0, _08113874 @ =gUnknown_08400F8C movs r1, 0x92 lsls r1, 3 diff --git a/asm/field_specials.s b/asm/field_specials.s index 63677b6a0..136489b80 100644 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -3086,7 +3086,7 @@ _0810F17A: ands r0, r1 cmp r0, 0 beq _0810F1AE - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r0, _0810F1F0 @ =gScriptResult ldr r1, _0810F1E8 @ =gUnknown_0203925B ldrb r1, [r1] @@ -3107,7 +3107,7 @@ _0810F1AE: ands r0, r1 cmp r0, 0 beq _0810F1DE - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r1, _0810F1F0 @ =gScriptResult movs r0, 0x7F strh r0, [r1] diff --git a/asm/item_menu.s b/asm/item_menu.s index 7463663d8..bb6e59f54 100644 --- a/asm/item_menu.s +++ b/asm/item_menu.s @@ -8369,7 +8369,7 @@ sub_80A73F0: @ 80A73F0 thumb_func_start sub_80A73FC sub_80A73FC: @ 80A73FC push {lr} - bl sub_8072DEC + bl HandleDestroyMenuCursors bl sub_814AD44 pop {r0} bx r0 diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s index 90d97e9a4..726de6fc1 100644 --- a/asm/mauville_old_man.s +++ b/asm/mauville_old_man.s @@ -1410,7 +1410,7 @@ _080F8840: ldr r0, _080F8870 @ =gUnknown_03000748 strb r4, [r0] _080F8848: - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 movs r2, 0x19 diff --git a/asm/mon_markings.s b/asm/mon_markings.s index 28bc116a9..caab4e299 100644 --- a/asm/mon_markings.s +++ b/asm/mon_markings.s @@ -246,7 +246,7 @@ _080F7434: lsrs r3, r0, 16 cmp r3, 0x3 bls _080F7434 - bl sub_814A7FC + bl DestroyMenuCursor lsls r0, r5, 16 asrs r0, 16 lsls r1, r6, 16 @@ -322,7 +322,7 @@ _080F74C8: lsrs r4, r0, 16 cmp r4, 0x3 bls _080F74C8 - bl sub_814A7FC + bl DestroyMenuCursor ldr r0, [r5] ldr r0, [r0, 0x24] cmp r0, 0 diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s index 93abd97bc..02b6a0a48 100644 --- a/asm/mystery_event_script.s +++ b/asm/mystery_event_script.s @@ -667,10 +667,10 @@ _0812668C: lsrs r4, 16 adds r0, r4, 0 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag adds r0, r4, 0 movs r1, 0x3 - bl sub_8090D90 + bl GetNationalPokedexFlag _081266C6: adds r0, r7, 0 movs r1, 0xC diff --git a/asm/party_menu.s b/asm/party_menu.s index 053d8b8b0..8a7c153b9 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -7423,7 +7423,7 @@ sub_806E7D0: @ 806E7D0 lsls r3, 24 lsrs r3, 24 bl MenuZeroFillWindowRect - bl sub_8072DEC + bl HandleDestroyMenuCursors add sp, 0x4 pop {r4-r6} pop {r0} diff --git a/asm/player_pc.s b/asm/player_pc.s deleted file mode 100644 index 5e2adb775..000000000 --- a/asm/player_pc.s +++ /dev/null @@ -1,1298 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_813AD58 -sub_813AD58: @ 813AD58 - push {lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r1, r0, 16 - ldr r2, _0813AD74 @ =0xffff0009 - adds r0, r1, r2 - cmp r0, 0x8 - bhi _0813ADE8 - lsls r0, 2 - ldr r1, _0813AD78 @ =_0813AD7C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813AD74: .4byte 0xffff0009 -_0813AD78: .4byte _0813AD7C - .align 2, 0 -_0813AD7C: - .4byte _0813ADE0 - .4byte _0813ADD8 - .4byte _0813ADD0 - .4byte _0813ADC8 - .4byte _0813ADC0 - .4byte _0813ADB8 - .4byte _0813ADB0 - .4byte _0813ADA8 - .4byte _0813ADA0 -_0813ADA0: - ldr r1, _0813ADA4 @ =gMenuText_GoBackToPrev - b _0813ADF0 - .align 2, 0 -_0813ADA4: .4byte gMenuText_GoBackToPrev -_0813ADA8: - ldr r1, _0813ADAC @ =gOtherText_HowManyToWithdraw - b _0813ADF0 - .align 2, 0 -_0813ADAC: .4byte gOtherText_HowManyToWithdraw -_0813ADB0: - ldr r1, _0813ADB4 @ =gOtherText_WithdrewThing - b _0813ADF0 - .align 2, 0 -_0813ADB4: .4byte gOtherText_WithdrewThing -_0813ADB8: - ldr r1, _0813ADBC @ =gOtherText_HowManyToToss - b _0813ADF0 - .align 2, 0 -_0813ADBC: .4byte gOtherText_HowManyToToss -_0813ADC0: - ldr r1, _0813ADC4 @ =gOtherText_ThrewAwayItem - b _0813ADF0 - .align 2, 0 -_0813ADC4: .4byte gOtherText_ThrewAwayItem -_0813ADC8: - ldr r1, _0813ADCC @ =gOtherText_NoMoreRoom - b _0813ADF0 - .align 2, 0 -_0813ADCC: .4byte gOtherText_NoMoreRoom -_0813ADD0: - ldr r1, _0813ADD4 @ =gOtherText_TooImportant - b _0813ADF0 - .align 2, 0 -_0813ADD4: .4byte gOtherText_TooImportant -_0813ADD8: - ldr r1, _0813ADDC @ =gOtherText_OkayToThrowAwayPrompt - b _0813ADF0 - .align 2, 0 -_0813ADDC: .4byte gOtherText_OkayToThrowAwayPrompt -_0813ADE0: - ldr r1, _0813ADE4 @ =gOtherText_SwitchWhichItem - b _0813ADF0 - .align 2, 0 -_0813ADE4: .4byte gOtherText_SwitchWhichItem -_0813ADE8: - adds r0, r1, 0 - bl ItemId_GetDescription - adds r1, r0, 0 -_0813ADF0: - movs r0, 0x30 - str r0, [sp] - movs r0, 0x1 - str r0, [sp, 0x4] - adds r0, r1, 0 - movs r1, 0x8 - movs r2, 0x68 - movs r3, 0x68 - bl sub_8072AB0 - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_813AD58 - - thumb_func_start sub_813AE0C -sub_813AE0C: @ 813AE0C - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r2, _0813AE48 @ =gTasks + 0x8 - adds r4, r1, r2 - ldrh r1, [r4] - ldrh r2, [r4, 0x2] - adds r1, r2 - lsls r1, 16 - lsrs r5, r1, 16 - bl sub_813ABE8 - movs r1, 0x12 - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0813AE62 - lsls r0, r5, 16 - asrs r1, r0, 16 - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r1, r0 - bne _0813AE50 - ldr r0, _0813AE4C @ =0x0000ffff - bl sub_813AD58 - b _0813AE62 - .align 2, 0 -_0813AE48: .4byte gTasks + 0x8 -_0813AE4C: .4byte 0x0000ffff -_0813AE50: - ldr r0, _0813AE68 @ =gSaveBlock1 - lsls r1, 2 - adds r1, r0 - movs r0, 0x93 - lsls r0, 3 - adds r1, r0 - ldrh r0, [r1] - bl sub_813AD58 -_0813AE62: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813AE68: .4byte gSaveBlock1 - thumb_func_end sub_813AE0C - - thumb_func_start sub_813AE6C -sub_813AE6C: @ 813AE6C - push {r4-r6,lr} - sub sp, 0x8 - adds r6, r0, 0 - adds r4, r1, 0 - lsls r6, 24 - lsrs r6, 24 - lsls r4, 24 - lsrs r4, 24 - lsls r5, r6, 2 - adds r5, r6 - lsls r5, 3 - ldr r0, _0813AEF8 @ =gTasks + 0x8 - adds r5, r0 - bl sub_80F944C - bl LoadScrollIndicatorPalette - bl sub_813AF04 - movs r0, 0xF - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - movs r0, 0 - movs r1, 0xC - movs r2, 0xE - movs r3, 0x13 - bl MenuDrawTextWindow - movs r0, 0 - movs r1, 0 - movs r2, 0xB - movs r3, 0x3 - bl MenuDrawTextWindow - ldr r0, _0813AEFC @ =gSaveBlock1 - movs r1, 0x93 - lsls r1, 3 - adds r0, r1 - ldrh r0, [r0] - bl sub_813AD58 - ldr r0, _0813AF00 @ =gUnknown_084062C0 - lsls r4, 3 - adds r4, r0 - ldr r0, [r4] - movs r1, 0x1 - movs r2, 0x1 - bl MenuPrint - adds r0, r6, 0 - bl sub_813ABE8 - ldrb r3, [r5, 0x8] - ldrb r0, [r5] - str r0, [sp] - movs r0, 0xD - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x10 - movs r2, 0x2 - bl InitMenu - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813AEF8: .4byte gTasks + 0x8 -_0813AEFC: .4byte gSaveBlock1 -_0813AF00: .4byte gUnknown_084062C0 - thumb_func_end sub_813AE6C - - thumb_func_start sub_813AF04 -sub_813AF04: @ 813AF04 - push {lr} - sub sp, 0x8 - ldr r1, _0813AF38 @ =gUnknown_08406334 - mov r0, sp - movs r2, 0x6 - bl memcpy - add r0, sp, 0x4 - movs r1, 0xDF - movs r2, 0x2 - bl LoadPalette - mov r0, sp - adds r0, 0x2 - movs r1, 0xD1 - movs r2, 0x2 - bl LoadPalette - mov r0, sp - movs r1, 0xD8 - movs r2, 0x2 - bl LoadPalette - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0813AF38: .4byte gUnknown_08406334 - thumb_func_end sub_813AF04 - - thumb_func_start sub_813AF3C -sub_813AF3C: @ 813AF3C - push {r4,lr} - movs r2, 0 - movs r1, 0x6 - ldr r4, _0813AF70 @ =gSaveBlock1 - ldr r3, _0813AF74 @ =0x00002b6c -_0813AF46: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _0813AF5C - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_0813AF5C: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _0813AF46 - adds r0, r2, 0 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_0813AF70: .4byte gSaveBlock1 -_0813AF74: .4byte 0x00002b6c - thumb_func_end sub_813AF3C - - thumb_func_start sub_813AF78 -sub_813AF78: @ 813AF78 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - movs r2, 0x6 -_0813AF86: - adds r1, r2, 0x1 - lsls r0, r1, 24 - lsrs r3, r0, 24 - mov r10, r1 - cmp r3, 0xF - bhi _0813AFF4 - ldr r0, _0813B010 @ =gSaveBlock1 - mov r12, r0 - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - add r0, r12 - ldr r1, _0813B014 @ =0x00002b6c - adds r1, r0 - mov r8, r1 - ldr r2, _0813B018 @ =0x00002b4c - mov r9, r2 - adds r4, r0, r2 -_0813AFAA: - mov r5, r8 - ldrh r0, [r5] - cmp r0, 0 - bne _0813AFEA - mov r1, sp - adds r0, r4, 0 - ldm r0!, {r2,r6,r7} - stm r1!, {r2,r6,r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r2,r5,r6} - stm r1!, {r2,r5,r6} - lsls r2, r3, 3 - adds r2, r3 - lsls r2, 2 - add r2, r12 - add r2, r9 - adds r1, r4, 0 - adds r0, r2, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - mov r0, sp - ldm r0!, {r1,r5,r7} - stm r2!, {r1,r5,r7} - ldm r0!, {r1,r6,r7} - stm r2!, {r1,r6,r7} - ldm r0!, {r5-r7} - stm r2!, {r5-r7} -_0813AFEA: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0xF - bls _0813AFAA -_0813AFF4: - mov r1, r10 - lsls r0, r1, 24 - lsrs r2, r0, 24 - cmp r2, 0xE - bls _0813AF86 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813B010: .4byte gSaveBlock1 -_0813B014: .4byte 0x00002b6c -_0813B018: .4byte 0x00002b4c - thumb_func_end sub_813AF78 - - thumb_func_start sub_813B01C -sub_813B01C: @ 813B01C - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r7, 0 - ldr r1, _0813B0B8 @ =0x0201fe00 - ldrb r4, [r1, 0x2] - ldrb r0, [r1, 0x1] - adds r0, r4, r0 - cmp r4, r0 - bge _0813B08A - adds r6, r1, 0 - ldr r0, _0813B0BC @ =gStringVar1 - mov r8, r0 -_0813B036: - ldrb r0, [r6, 0x2] - subs r0, r4, r0 - lsls r0, 17 - lsrs r7, r0, 16 - adds r0, r7, 0x2 - lsls r0, 24 - lsrs r5, r0, 24 - adds r3, r7, 0x3 - lsls r3, 24 - lsrs r3, 24 - movs r0, 0x15 - adds r1, r5, 0 - movs r2, 0x1C - bl MenuFillWindowRectWithBlankTile - ldrb r0, [r6, 0x3] - cmp r4, r0 - beq _0813B0C4 - lsls r1, r4, 3 - adds r1, r4 - lsls r1, 2 - ldr r0, _0813B0C0 @ =gSaveBlock1 + 0x2C36 - adds r1, r0 - mov r0, r8 - bl StringCopy - mov r0, r8 - bl SanitizeNameString - mov r0, r8 - movs r1, 0x15 - adds r2, r5, 0 - bl MenuPrint - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldrb r0, [r6, 0x2] - ldrb r1, [r6, 0x1] - adds r0, r1 - cmp r4, r0 - blt _0813B036 -_0813B08A: - ldr r5, _0813B0B8 @ =0x0201fe00 - ldrb r0, [r5, 0x2] - subs r0, r4, r0 - cmp r0, 0x8 - beq _0813B0A4 - adds r1, r7, 0x4 - lsls r1, 24 - lsrs r1, 24 - movs r0, 0x15 - movs r2, 0x1C - movs r3, 0x12 - bl MenuFillWindowRectWithBlankTile -_0813B0A4: - ldrb r0, [r5, 0x2] - cmp r0, 0 - beq _0813B0D4 - movs r0, 0 - movs r1, 0xC8 - movs r2, 0x8 - bl CreateVerticalScrollIndicators - b _0813B0DA - .align 2, 0 -_0813B0B8: .4byte 0x0201fe00 -_0813B0BC: .4byte gStringVar1 -_0813B0C0: .4byte gSaveBlock1 + 0x2C36 -_0813B0C4: - ldr r0, _0813B0D0 @ =gOtherText_CancelNoTerminator - movs r1, 0x15 - adds r2, r5, 0 - bl MenuPrint - b _0813B08A - .align 2, 0 -_0813B0D0: .4byte gOtherText_CancelNoTerminator -_0813B0D4: - movs r0, 0 - bl DestroyVerticalScrollIndicator -_0813B0DA: - ldr r0, _0813B0F4 @ =0x0201fe00 - ldrb r1, [r0, 0x2] - ldrb r2, [r0, 0x1] - adds r1, r2 - ldrb r0, [r0, 0x3] - cmp r1, r0 - bgt _0813B0F8 - movs r0, 0x1 - movs r1, 0xC8 - movs r2, 0x98 - bl CreateVerticalScrollIndicators - b _0813B0FE - .align 2, 0 -_0813B0F4: .4byte 0x0201fe00 -_0813B0F8: - movs r0, 0x1 - bl DestroyVerticalScrollIndicator -_0813B0FE: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_813B01C - - thumb_func_start sub_813B108 -sub_813B108: @ 813B108 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_80F944C - bl LoadScrollIndicatorPalette - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - movs r0, 0 - movs r1, 0 - movs r2, 0x8 - movs r3, 0x3 - bl MenuDrawTextWindow - ldr r0, _0813B16C @ =gPCText_Mailbox - movs r1, 0x1 - movs r2, 0x1 - bl MenuPrint - movs r0, 0x14 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - adds r0, r4, 0 - bl sub_813B01C - ldr r0, _0813B170 @ =0x0201fe00 - ldrb r3, [r0, 0x1] - ldrb r0, [r0] - str r0, [sp] - movs r0, 0x8 - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x15 - movs r2, 0x2 - bl InitMenu - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B16C: .4byte gPCText_Mailbox -_0813B170: .4byte 0x0201fe00 - thumb_func_end sub_813B108 - - thumb_func_start sub_813B174 -sub_813B174: @ 813B174 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, r5, 0 - ldr r0, _0813B1AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r3, 0x80 - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - bne _0813B274 - ldr r2, _0813B1B0 @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0813B1CA - ldr r4, _0813B1B4 @ =0x0201fe00 - ldrb r0, [r4] - cmp r0, 0 - beq _0813B1B8 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - b _0813B1E6 - .align 2, 0 -_0813B1AC: .4byte gPaletteFade -_0813B1B0: .4byte gMain -_0813B1B4: .4byte 0x0201fe00 -_0813B1B8: - ldrb r0, [r4, 0x2] - cmp r0, 0 - beq _0813B274 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x2] - subs r0, 0x1 - b _0813B208 -_0813B1CA: - adds r0, r3, 0 - ands r0, r1 - cmp r0, 0 - beq _0813B212 - ldr r4, _0813B1F0 @ =0x0201fe00 - ldrb r1, [r4] - ldrb r0, [r4, 0x1] - subs r0, 0x1 - cmp r1, r0 - beq _0813B1F4 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 -_0813B1E6: - bl MoveMenuCursor - strb r0, [r4] - b _0813B274 - .align 2, 0 -_0813B1F0: .4byte 0x0201fe00 -_0813B1F4: - ldrb r0, [r4, 0x2] - adds r0, r1 - ldrb r1, [r4, 0x3] - cmp r0, r1 - beq _0813B274 - movs r0, 0x5 - bl PlaySE - ldrb r0, [r4, 0x2] - adds r0, 0x1 -_0813B208: - strb r0, [r4, 0x2] - adds r0, r5, 0 - bl sub_813B01C - b _0813B274 -_0813B212: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813B25C - bl sub_8072DEC - movs r0, 0x5 - bl PlaySE - ldr r0, _0813B23C @ =0x0201fe00 - ldrb r1, [r0, 0x2] - ldrb r2, [r0] - adds r1, r2 - ldrb r0, [r0, 0x3] - cmp r1, r0 - bne _0813B240 - adds r0, r5, 0 - bl sub_813B320 - b _0813B274 - .align 2, 0 -_0813B23C: .4byte 0x0201fe00 -_0813B240: - bl sub_813B27C - ldr r0, _0813B254 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813B258 @ =sub_813B294 - str r0, [r1] - b _0813B274 - .align 2, 0 -_0813B254: .4byte gTasks -_0813B258: .4byte sub_813B294 -_0813B25C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813B274 - bl sub_8072DEC - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl sub_813B320 -_0813B274: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813B174 - - thumb_func_start sub_813B27C -sub_813B27C: @ 813B27C - push {lr} - bl BuyMenuFreeMemory - movs r0, 0 - bl DestroyVerticalScrollIndicator - movs r0, 0x1 - bl DestroyVerticalScrollIndicator - pop {r0} - bx r0 - thumb_func_end sub_813B27C - - thumb_func_start sub_813B294 -sub_813B294: @ 813B294 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r4, _0813B2E8 @ =gStringVar1 - ldr r1, _0813B2EC @ =0x0201fe00 - ldrb r0, [r1] - adds r0, 0x6 - ldrb r1, [r1, 0x2] - adds r0, r1 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0813B2F0 @ =gSaveBlock1 + 0x2B5E - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - adds r0, r4, 0 - bl SanitizeNameString - ldr r4, _0813B2F4 @ =gStringVar4 - ldr r1, _0813B2F8 @ =gOtherText_WhatWillYouDoMail - adds r0, r4, 0 - bl StringExpandPlaceholders - ldr r2, _0813B2FC @ =sub_813B348 - adds r0, r5, 0 - adds r1, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813B2E8: .4byte gStringVar1 -_0813B2EC: .4byte 0x0201fe00 -_0813B2F0: .4byte gSaveBlock1 + 0x2B5E -_0813B2F4: .4byte gStringVar4 -_0813B2F8: .4byte gOtherText_WhatWillYouDoMail -_0813B2FC: .4byte sub_813B348 - thumb_func_end sub_813B294 - - thumb_func_start sub_813B300 -sub_813B300: @ 813B300 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl ReshowPlayerPC - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813B300 - - thumb_func_start sub_813B320 -sub_813B320: @ 813B320 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_813B27C - ldr r1, _0813B340 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813B344 @ =sub_813B300 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B340: .4byte gTasks -_0813B344: .4byte sub_813B300 - thumb_func_end sub_813B320 - - thumb_func_start sub_813B348 -sub_813B348: @ 813B348 - push {r4,lr} - sub sp, 0x8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0 - movs r1, 0 - movs r2, 0xC - movs r3, 0x9 - bl MenuDrawTextWindow - ldr r3, _0813B394 @ =gUnknown_084062F8 - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x4 - bl PrintMenuItems - movs r0, 0 - str r0, [sp] - movs r0, 0xB - str r0, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0x1 - movs r3, 0x4 - bl InitMenu - ldr r1, _0813B398 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813B39C @ =sub_813B3A0 - str r1, [r0] - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B394: .4byte gUnknown_084062F8 -_0813B398: .4byte gTasks -_0813B39C: .4byte sub_813B3A0 - thumb_func_end sub_813B348 - - thumb_func_start sub_813B3A0 -sub_813B3A0: @ 813B3A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - adds r4, r5, 0 - ldr r2, _0813B3C4 @ =gMain - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0813B3C8 - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - negs r0, r0 - bl MoveMenuCursor - b _0813B420 - .align 2, 0 -_0813B3C4: .4byte gMain -_0813B3C8: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _0813B3DE - movs r0, 0x5 - bl PlaySE - movs r0, 0x1 - bl MoveMenuCursor - b _0813B420 -_0813B3DE: - ldrh r1, [r2, 0x2E] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813B40C - movs r0, 0x5 - bl PlaySE - ldr r4, _0813B408 @ =gUnknown_084062F8 - bl GetMenuCursorPos - lsls r0, 24 - lsrs r0, 21 - adds r4, 0x4 - adds r0, r4 - ldr r1, [r0] - adds r0, r5, 0 - bl _call_via_r1 - b _0813B420 - .align 2, 0 -_0813B408: .4byte gUnknown_084062F8 -_0813B40C: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _0813B420 - movs r0, 0x5 - bl PlaySE - adds r0, r4, 0 - bl Mailbox_Cancel -_0813B420: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813B3A0 - - thumb_func_start Mailbox_Read -Mailbox_Read: @ 813B428 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r1, _0813B44C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813B450 @ =sub_813B454 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B44C: .4byte gTasks -_0813B450: .4byte sub_813B454 - thumb_func_end Mailbox_Read - - thumb_func_start sub_813B454 -sub_813B454: @ 813B454 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813B490 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813B488 - ldr r0, _0813B494 @ =0x0201fe00 - ldrb r1, [r0] - adds r1, 0x6 - ldrb r0, [r0, 0x2] - adds r1, r0 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _0813B498 @ =gSaveBlock1 + 0x2B4C - adds r0, r1 - ldr r1, _0813B49C @ =sub_813B4F0 - movs r2, 0x1 - bl HandleReadMail - adds r0, r4, 0 - bl DestroyTask -_0813B488: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B490: .4byte gPaletteFade -_0813B494: .4byte 0x0201fe00 -_0813B498: .4byte gSaveBlock1 + 0x2B4C -_0813B49C: .4byte sub_813B4F0 - thumb_func_end sub_813B454 - - thumb_func_start sub_813B4A0 -sub_813B4A0: @ 813B4A0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0813B4C0 - ldr r0, _0813B4C8 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813B4CC @ =sub_813B174 - str r0, [r1] -_0813B4C0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B4C8: .4byte gTasks -_0813B4CC: .4byte sub_813B174 - thumb_func_end sub_813B4A0 - - thumb_func_start sub_813B4D0 -sub_813B4D0: @ 813B4D0 - push {lr} - ldr r0, _0813B4EC @ =sub_813B4A0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - bl sub_813B108 - bl pal_fill_black - pop {r0} - bx r0 - .align 2, 0 -_0813B4EC: .4byte sub_813B4A0 - thumb_func_end sub_813B4D0 - - thumb_func_start sub_813B4F0 -sub_813B4F0: @ 813B4F0 - push {lr} - ldr r0, _0813B504 @ =gUnknown_0300485C - ldr r1, _0813B508 @ =sub_813B4D0 - str r1, [r0] - ldr r0, _0813B50C @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0813B504: .4byte gUnknown_0300485C -_0813B508: .4byte sub_813B4D0 -_0813B50C: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_813B4F0 - - thumb_func_start Mailbox_MoveToBag -Mailbox_MoveToBag: @ 813B510 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8072DEC - ldr r0, _0813B540 @ =gStringVar1 - ldr r1, _0813B544 @ =gOtherText_MoveToBag - bl StringCopy - ldr r0, _0813B548 @ =gUnknown_0840633A - movs r1, 0x1 - movs r2, 0x3 - bl MenuPrint - ldr r1, _0813B54C @ =gOtherText_MessageWillBeLost - ldr r2, _0813B550 @ =sub_813B554 - adds r0, r4, 0 - movs r3, 0 - bl DisplayItemMessageOnField - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B540: .4byte gStringVar1 -_0813B544: .4byte gOtherText_MoveToBag -_0813B548: .4byte gUnknown_0840633A -_0813B54C: .4byte gOtherText_MessageWillBeLost -_0813B550: .4byte sub_813B554 - thumb_func_end Mailbox_MoveToBag - - thumb_func_start sub_813B554 -sub_813B554: @ 813B554 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1 - bl DisplayYesNoMenu - ldr r1, _0813B574 @ =gUnknown_084062E8 - adds r0, r4, 0 - bl sub_80F914C - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B574: .4byte gUnknown_084062E8 - thumb_func_end sub_813B554 - - thumb_func_start sub_813B578 -sub_813B578: @ 813B578 - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r4, _0813B5BC @ =0x0201fe00 - ldrb r0, [r4] - adds r0, 0x6 - ldrb r1, [r4, 0x2] - adds r0, r1 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - ldr r0, _0813B5C0 @ =gSaveBlock1 + 0x2B4C - adds r6, r1, r0 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1A - movs r3, 0xD - bl MenuZeroFillWindowRect - ldrh r0, [r6, 0x20] - movs r1, 0x1 - bl AddBagItem - lsls r0, 24 - cmp r0, 0 - bne _0813B5CC - ldr r1, _0813B5C4 @ =gOtherText_BagIsFull - ldr r2, _0813B5C8 @ =sub_813B758 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField - b _0813B602 - .align 2, 0 -_0813B5BC: .4byte 0x0201fe00 -_0813B5C0: .4byte gSaveBlock1 + 0x2B4C -_0813B5C4: .4byte gOtherText_BagIsFull -_0813B5C8: .4byte sub_813B758 -_0813B5CC: - ldr r1, _0813B608 @ =gOtherText_MailWasReturned - ldr r2, _0813B60C @ =sub_813B758 - adds r0, r5, 0 - movs r3, 0 - bl DisplayItemMessageOnField - adds r0, r6, 0 - bl ClearMailStruct - bl sub_813AF78 - ldrb r0, [r4, 0x3] - subs r0, 0x1 - strb r0, [r4, 0x3] - ldrb r1, [r4, 0x3] - ldrb r0, [r4, 0x1] - ldrb r2, [r4, 0x2] - adds r0, r2 - cmp r1, r0 - bge _0813B5FC - cmp r2, 0 - beq _0813B5FC - subs r0, r2, 0x1 - strb r0, [r4, 0x2] -_0813B5FC: - adds r0, r5, 0 - bl sub_813A240 -_0813B602: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813B608: .4byte gOtherText_MailWasReturned -_0813B60C: .4byte sub_813B758 - thumb_func_end sub_813B578 - - thumb_func_start sub_813B610 -sub_813B610: @ 813B610 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - movs r0, 0x14 - movs r1, 0x8 - movs r2, 0x1A - movs r3, 0xD - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl sub_813B758 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813B610 - - thumb_func_start Mailbox_Give -Mailbox_Give: @ 813B630 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - bl CalculatePlayerPartyCount - lsls r0, 24 - cmp r0, 0 - bne _0813B648 - adds r0, r4, 0 - bl sub_813B718 - b _0813B65E -_0813B648: - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _0813B664 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _0813B668 @ =sub_813B66C - str r0, [r1] -_0813B65E: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B664: .4byte gTasks -_0813B668: .4byte sub_813B66C - thumb_func_end Mailbox_Give - - thumb_func_start sub_813B66C -sub_813B66C: @ 813B66C - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813B698 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813B690 - ldr r0, _0813B69C @ =sub_808B020 - bl SetMainCallback2 - ldr r1, _0813B6A0 @ =gUnknown_02038561 - movs r0, 0x3 - strb r0, [r1] - adds r0, r4, 0 - bl DestroyTask -_0813B690: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B698: .4byte gPaletteFade -_0813B69C: .4byte sub_808B020 -_0813B6A0: .4byte gUnknown_02038561 - thumb_func_end sub_813B66C - - thumb_func_start sub_813B6A4 -sub_813B6A4: @ 813B6A4 - push {r4-r6,lr} - ldr r0, _0813B6F0 @ =sub_813B4A0 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r6, r0, 24 - ldr r5, _0813B6F4 @ =0x0201fe00 - ldrb r4, [r5, 0x3] - bl sub_813AF3C - strb r0, [r5, 0x3] - bl sub_813AF78 - ldrb r0, [r5, 0x3] - cmp r4, r0 - beq _0813B6DA - ldrb r1, [r5, 0x3] - ldrb r0, [r5, 0x1] - ldrb r2, [r5, 0x2] - adds r0, r2 - cmp r1, r0 - bge _0813B6DA - cmp r2, 0 - beq _0813B6DA - subs r0, r2, 0x1 - strb r0, [r5, 0x2] -_0813B6DA: - adds r0, r6, 0 - bl sub_813A240 - adds r0, r6, 0 - bl sub_813B108 - bl pal_fill_black - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813B6F0: .4byte sub_813B4A0 -_0813B6F4: .4byte 0x0201fe00 - thumb_func_end sub_813B6A4 - - thumb_func_start sub_813B6F8 -sub_813B6F8: @ 813B6F8 - push {lr} - ldr r0, _0813B70C @ =gUnknown_0300485C - ldr r1, _0813B710 @ =sub_813B6A4 - str r1, [r0] - ldr r0, _0813B714 @ =c2_exit_to_overworld_2_switch - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_0813B70C: .4byte gUnknown_0300485C -_0813B710: .4byte sub_813B6A4 -_0813B714: .4byte c2_exit_to_overworld_2_switch - thumb_func_end sub_813B6F8 - - thumb_func_start sub_813B718 -sub_813B718: @ 813B718 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813B72C @ =gOtherText_NoPokemon - ldr r2, _0813B730 @ =sub_813B758 - movs r3, 0 - bl DisplayItemMessageOnField - pop {r0} - bx r0 - .align 2, 0 -_0813B72C: .4byte gOtherText_NoPokemon -_0813B730: .4byte sub_813B758 - thumb_func_end sub_813B718 - - thumb_func_start Mailbox_Cancel -Mailbox_Cancel: @ 813B734 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - bl sub_8072DEC - movs r0, 0 - movs r1, 0 - movs r2, 0xC - movs r3, 0x9 - bl MenuZeroFillWindowRect - adds r0, r4, 0 - bl sub_813B758 - pop {r4} - pop {r0} - bx r0 - thumb_func_end Mailbox_Cancel - - thumb_func_start sub_813B758 -sub_813B758: @ 813B758 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl sub_813B108 - ldr r1, _0813B77C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _0813B780 @ =sub_813B174 - str r1, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813B77C: .4byte gTasks -_0813B780: .4byte sub_813B174 - thumb_func_end sub_813B758 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/pokeblock.s b/asm/pokeblock.s index 44ac16b7e..669811f53 100644 --- a/asm/pokeblock.s +++ b/asm/pokeblock.s @@ -1830,7 +1830,7 @@ sub_810C540: @ 810C540 lsrs r5, 24 ldr r0, _0810C5A0 @ =gWindowConfig_81E6E50 bl BasicInitMenuWindow - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0x7 movs r1, 0x4 movs r2, 0xD @@ -2078,7 +2078,7 @@ sub_810C748: @ 810C748 bl sub_80F98DC movs r0, 0x1 bl sub_80F98DC - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0x7 movs r1, 0x4 movs r2, 0xD diff --git a/asm/pokedex.s b/asm/pokedex.s index 8fd971840..6416bf938 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -756,8 +756,8 @@ _08090D88: _08090D8C: .4byte gPokedexEntries thumb_func_end GetPokedexHeightWeight - thumb_func_start sub_8090D90 -sub_8090D90: @ 8090D90 + thumb_func_start GetNationalPokedexFlag +GetNationalPokedexFlag: @ 8090D90 push {r4-r7,lr} lsls r0, 16 lsls r1, 24 @@ -951,7 +951,7 @@ _08090F0A: bx r1 .align 2, 0 _08090F14: .4byte gSaveBlock2 - thumb_func_end sub_8090D90 + thumb_func_end GetNationalPokedexFlag thumb_func_start GetNationalPokedexCount GetNationalPokedexCount: @ 8090F18 @@ -982,7 +982,7 @@ _08090F3E: lsrs r0, 16 movs r1, 0x1 _08090F46: - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 beq _08090F56 @@ -1032,7 +1032,7 @@ _08090F90: lsrs r0, 16 movs r1, 0x1 _08090FA0: - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 beq _08090FB0 @@ -1063,7 +1063,7 @@ _08090FC4: lsls r0, 16 lsrs r0, 16 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 bne _08090FE4 @@ -1090,7 +1090,7 @@ _08090FF8: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 beq _08091046 @@ -1104,7 +1104,7 @@ _08091014: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 beq _08091046 @@ -1119,7 +1119,7 @@ _08091032: lsrs r4, r0, 16 adds r0, r4, 0 movs r1, 0x1 - bl sub_8090D90 + bl GetNationalPokedexFlag lsls r0, 24 cmp r0, 0 bne _08091050 diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s index 57bcd4904..110ccb6e4 100644 --- a/asm/pokemon_menu.s +++ b/asm/pokemon_menu.s @@ -718,7 +718,7 @@ PokemonMenu_Switch: @ 808A02C adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r0, _0808A054 @ =0x02001000 ldr r1, _0808A058 @ =sub_806CD5C str r1, [r0, 0xC] @@ -849,7 +849,7 @@ PokemonMenu_Item: @ 808A140 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r1, _0808A174 @ =gUnknown_0202FFA8 movs r0, 0 strb r0, [r1] @@ -1497,7 +1497,7 @@ PokemonMenu_TakeItem: @ 808A688 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0x13 movs r1, 0 movs r2, 0x1D @@ -1520,7 +1520,7 @@ PokemonMenu_TakeMail: @ 808A6B8 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0x13 movs r1, 0 movs r2, 0x1D @@ -1543,7 +1543,7 @@ PokemonMenu_Mail: @ 808A6E8 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r1, _0808A728 @ =gUnknown_0202FFA8 movs r0, 0 strb r0, [r1] @@ -1812,7 +1812,7 @@ PokemonMenu_Cancel: @ 808A918 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0x5 bl PlaySE adds r0, r4, 0 @@ -1828,7 +1828,7 @@ PokemonMenu_CancelSubmenu: @ 808A938 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0x5 bl PlaySE movs r0, 0x13 @@ -1867,7 +1867,7 @@ PokemonMenu_FieldMove: @ 808A984 lsls r6, r0, 3 ldr r7, _0808A9D0 @ =gTasks + 0x8 adds r4, r6, r7 - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r1, _0808A9D4 @ =gUnknown_0202FFAA ldr r0, _0808A9D8 @ =gUnknown_0202FFA8 ldrb r0, [r0] diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 176a42124..b3ef00ecf 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -931,7 +931,7 @@ _08095FA2: _08095FC0: .4byte gMain _08095FC4: .4byte gUnknown_083B600C _08095FC8: - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 movs r2, 0xD @@ -5915,7 +5915,7 @@ sub_8098A38: @ 8098A38 thumb_func_start sub_8098A5C sub_8098A5C: @ 8098A5C push {lr} - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0xA movs r1, 0x10 movs r2, 0x1D @@ -14831,7 +14831,7 @@ _0809CF8E: negs r0, r0 cmp r5, r0 beq _0809CFB2 - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r0, _0809CFD0 @ =gUnknown_083B6DB4 ldr r1, [r0] ldr r2, _0809CFD4 @ =0x000011ba diff --git a/asm/secret_base.s b/asm/secret_base.s index 8f2df8396..020953dbe 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -584,7 +584,7 @@ _080BC8C2: ldrsh r1, [r4, r2] cmp r0, r1 bne _080BC8FC - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 movs r2, 0x1D @@ -594,7 +594,7 @@ _080BC8C2: bl sub_80BCC54 b _080BC940 _080BC8FC: - bl sub_8072DEC + bl HandleDestroyMenuCursors ldrb r0, [r4, 0x4] ldrb r1, [r4, 0x2] adds r0, r1 @@ -614,7 +614,7 @@ _080BC91C: beq _080BC940 movs r0, 0x5 bl PlaySE - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 movs r2, 0x1D @@ -799,7 +799,7 @@ sub_80BCA84: @ 80BCA84 bl DestroyVerticalScrollIndicator movs r0, 0x1 bl DestroyVerticalScrollIndicator - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 movs r2, 0x1D diff --git a/asm/shop.s b/asm/shop.s index 1d0863469..ba4c53885 100644 --- a/asm/shop.s +++ b/asm/shop.s @@ -1777,7 +1777,7 @@ _080B41CE: adds r0, r1, 0 movs r2, 0x1 bl sub_80B39D0 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0xC movs r2, 0xD diff --git a/asm/trade.s b/asm/trade.s index 756423ee7..a26afa254 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -3266,7 +3266,7 @@ _08049800: .4byte gUnknown_03004824 thumb_func_start sub_8049804 sub_8049804: @ 8049804 push {lr} - bl sub_8072DEC + bl HandleDestroyMenuCursors bl sub_804A80C ldr r3, _08049850 @ =gUnknown_03004824 ldr r0, [r3] @@ -4315,7 +4315,7 @@ _08049F8E: lsls r0, 2 adds r0, r7 bl sub_8078A34 - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r3, _0804A09C @ =gUnknown_03004824 ldr r0, [r3] adds r0, 0x4 @@ -5363,7 +5363,7 @@ _0804A89C: .4byte gUnknown_03004824 _0804A8A0: .4byte gUnknown_0820C330 _0804A8A4: .4byte gTradePartyBoxTilemap _0804A8A8: - bl sub_8072DEC + bl HandleDestroyMenuCursors ldr r4, _0804A924 @ =gUnknown_03004824 ldr r0, [r4] adds r0, 0x4 @@ -7560,10 +7560,10 @@ sub_804BA18: @ 804BA18 lsrs r4, 16 adds r0, r4, 0 movs r1, 0x2 - bl sub_8090D90 + bl GetNationalPokedexFlag adds r0, r4, 0 movs r1, 0x3 - bl sub_8090D90 + bl GetNationalPokedexFlag _0804BA5A: pop {r4} pop {r0} diff --git a/asm/trader.s b/asm/trader.s index be3627e90..3bda1d8dc 100644 --- a/asm/trader.s +++ b/asm/trader.s @@ -290,7 +290,7 @@ _08109B54: ldr r0, _08109B78 @ =gSpecialVar_0x8004 strh r1, [r0] _08109B58: - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0x1 movs r2, 0xC @@ -509,7 +509,7 @@ sub_8109D04: @ 8109D04 push {r4-r6,lr} lsls r0, 24 lsrs r6, r0, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 movs r2, 0x1D @@ -581,7 +581,7 @@ sub_8109DAC: @ 8109DAC adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 - bl sub_8072DEC + bl HandleDestroyMenuCursors movs r0, 0 movs r1, 0 movs r2, 0x1D diff --git a/asm/tv.s b/asm/tv.s deleted file mode 100644 index ec5296064..000000000 --- a/asm/tv.s +++ /dev/null @@ -1,1822 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/misc_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start special_0x44 -special_0x44: @ 80BD800 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r4, 0x5 - ldr r1, _080BD874 @ =gSaveBlock1 - ldr r2, _080BD878 @ =0x000027ec - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080BD834 - adds r2, r1, 0 - ldr r1, _080BD87C @ =0x00002738 -_080BD81A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x17 - bhi _080BD834 - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080BD81A -_080BD834: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - ldr r7, _080BD874 @ =gSaveBlock1 - ldr r0, _080BD87C @ =0x00002738 - adds r0, r7 - mov r9, r0 -_080BD850: - lsls r0, r4, 3 - adds r0, r4 - lsls r6, r0, 2 - adds r5, r6, r7 - ldr r1, _080BD87C @ =0x00002738 - adds r0, r5, r1 - ldrb r0, [r0] - bl sub_80BFB54 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _080BD884 - ldr r2, _080BD880 @ =0x00002739 - adds r0, r5, r2 - ldrb r0, [r0] - b _080BD890 - .align 2, 0 -_080BD874: .4byte gSaveBlock1 -_080BD878: .4byte 0x000027ec -_080BD87C: .4byte 0x00002738 -_080BD880: .4byte 0x00002739 -_080BD884: - mov r0, r9 - adds r1, r6, r0 - ldrh r0, [r1, 0x16] - cmp r0, 0 - bne _080BD898 - ldrb r0, [r1, 0x1] -_080BD890: - cmp r0, 0x1 - bne _080BD898 - adds r0, r4, 0 - b _080BD8AC -_080BD898: - cmp r4, 0 - bne _080BD8A0 - movs r4, 0x17 - b _080BD8A6 -_080BD8A0: - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080BD8A6: - cmp r4, r8 - bne _080BD850 - movs r0, 0xFF -_080BD8AC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end special_0x44 - - thumb_func_start sub_80BD8B8 -sub_80BD8B8: @ 80BD8B8 - push {lr} - bl special_0x44 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - bne _080BD8CA - movs r0, 0xFF - b _080BD902 -_080BD8CA: - ldr r2, _080BD8F4 @ =gSaveBlock1 - ldr r3, _080BD8F8 @ =0x00002afc - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _080BD900 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r2, _080BD8FC @ =0x00002738 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080BD900 - bl sub_80BDA30 - lsls r0, 24 - lsrs r0, 24 - b _080BD902 - .align 2, 0 -_080BD8F4: .4byte gSaveBlock1 -_080BD8F8: .4byte 0x00002afc -_080BD8FC: .4byte 0x00002738 -_080BD900: - adds r0, r1, 0 -_080BD902: - pop {r1} - bx r1 - thumb_func_end sub_80BD8B8 - - thumb_func_start UpdateTVScreensOnMap -UpdateTVScreensOnMap: @ 80BD908 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _080BD938 @ =0x00000831 - bl FlagSet - bl CheckForBigMovieOrEmergencyNewsOnTV - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BD92C - cmp r0, 0x2 - beq _080BD97E - ldr r0, _080BD93C @ =gSaveBlock1 - ldrh r0, [r0, 0x4] - cmp r0, 0xD - bne _080BD940 -_080BD92C: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl SetTVMetatilesOnMap - b _080BD97E - .align 2, 0 -_080BD938: .4byte 0x00000831 -_080BD93C: .4byte gSaveBlock1 -_080BD940: - ldr r0, _080BD984 @ =0x00000832 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080BD97E - bl sub_80BD8B8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080BD96E - bl sub_80BECA0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080BD96E - bl IsTVShowInSearchOfTrainersAiring - lsls r0, 24 - cmp r0, 0 - beq _080BD97E -_080BD96E: - ldr r0, _080BD988 @ =0x00000831 - bl FlagReset - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl SetTVMetatilesOnMap -_080BD97E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BD984: .4byte 0x00000832 -_080BD988: .4byte 0x00000831 - thumb_func_end UpdateTVScreensOnMap - - thumb_func_start SetTVMetatilesOnMap -SetTVMetatilesOnMap: @ 80BD98C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - movs r5, 0 - cmp r5, r10 - bge _080BD9E0 - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1, 0 - mov r8, r2 - mov r1, r8 - orrs r1, r0 - mov r8, r1 -_080BD9B2: - movs r4, 0 - adds r7, r5, 0x1 - cmp r4, r9 - bge _080BD9DA - mov r0, r8 - lsls r6, r0, 16 -_080BD9BE: - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - cmp r0, 0x86 - bne _080BD9D4 - adds r0, r4, 0 - adds r1, r5, 0 - lsrs r2, r6, 16 - bl MapGridSetMetatileIdAt -_080BD9D4: - adds r4, 0x1 - cmp r4, r9 - blt _080BD9BE -_080BD9DA: - adds r5, r7, 0 - cmp r5, r10 - blt _080BD9B2 -_080BD9E0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SetTVMetatilesOnMap - - thumb_func_start TurnOffTVScreen -TurnOffTVScreen: @ 80BD9F0 - push {lr} - ldr r1, _080BDA08 @ =gUnknown_03004870 - ldr r0, [r1] - ldr r1, [r1, 0x4] - movs r2, 0x2 - bl SetTVMetatilesOnMap - bl DrawWholeMapView - pop {r0} - bx r0 - .align 2, 0 -_080BDA08: .4byte gUnknown_03004870 - thumb_func_end TurnOffTVScreen - - thumb_func_start sub_80BDA0C -sub_80BDA0C: @ 80BDA0C - ldr r2, _080BDA24 @ =gSaveBlock1 - ldr r0, _080BDA28 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080BDA2C @ =0x00002738 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080BDA24: .4byte gSaveBlock1 -_080BDA28: .4byte gSpecialVar_0x8004 -_080BDA2C: .4byte 0x00002738 - thumb_func_end sub_80BDA0C - - thumb_func_start sub_80BDA30 -sub_80BDA30: @ 80BDA30 - push {r4,lr} - movs r2, 0 - ldr r3, _080BDA5C @ =gSaveBlock1 -_080BDA36: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r3 - ldr r4, _080BDA60 @ =0x00002738 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080BDA64 - cmp r0, 0x29 - beq _080BDA64 - adds r4, 0x1 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BDA64 - adds r0, r2, 0 - b _080BDA70 - .align 2, 0 -_080BDA5C: .4byte gSaveBlock1 -_080BDA60: .4byte 0x00002738 -_080BDA64: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080BDA36 - movs r0, 0xFF -_080BDA70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BDA30 - - thumb_func_start special_0x4a -special_0x4a: @ 80BDA78 - push {lr} - ldr r2, _080BDAA4 @ =gSpecialVar_0x8004 - ldrh r1, [r2] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BDAA8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080BDAAC - movs r3, 0xF1 - lsls r3, 2 - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _080BDAAC - bl sub_80BDA30 - lsls r0, 24 - lsrs r0, 24 - b _080BDAAE - .align 2, 0 -_080BDAA4: .4byte gSpecialVar_0x8004 -_080BDAA8: .4byte gSaveBlock1 + 0x2738 -_080BDAAC: - ldrb r0, [r2] -_080BDAAE: - pop {r1} - bx r1 - thumb_func_end special_0x4a - - thumb_func_start ResetGabbyAndTy -ResetGabbyAndTy: @ 80BDAB4 - push {r4,lr} - ldr r2, _080BDAF8 @ =gSaveBlock1 - ldr r1, _080BDAFC @ =0x00002b10 - adds r0, r2, r1 - movs r3, 0 - movs r1, 0 - strh r1, [r0] - ldr r4, _080BDB00 @ =0x00002b12 - adds r0, r2, r4 - strh r1, [r0] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldr r0, _080BDB04 @ =0x00002b16 - adds r1, r2, r0 - ldr r0, _080BDB08 @ =0x0000ffff - strh r0, [r1] - adds r4, 0x6 - adds r1, r2, r4 - movs r0, 0 - strb r0, [r1] - ldr r0, _080BDB0C @ =0x00002b1b - adds r1, r2, r0 - movs r0, 0 - strb r0, [r1] - ldr r1, _080BDB10 @ =0x00002b18 - adds r0, r2, r1 - strb r3, [r0] - subs r4, 0x1 - adds r2, r4 - strb r3, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BDAF8: .4byte gSaveBlock1 -_080BDAFC: .4byte 0x00002b10 -_080BDB00: .4byte 0x00002b12 -_080BDB04: .4byte 0x00002b16 -_080BDB08: .4byte 0x0000ffff -_080BDB0C: .4byte 0x00002b1b -_080BDB10: .4byte 0x00002b18 - thumb_func_end ResetGabbyAndTy - - thumb_func_start GabbyAndTyBeforeInterview -GabbyAndTyBeforeInterview: @ 80BDB14 - push {r4,r5,lr} - ldr r2, _080BDB68 @ =gSaveBlock1 - ldr r3, _080BDB6C @ =gUnknown_030042E0 - ldrh r1, [r3, 0x6] - ldr r4, _080BDB70 @ =0x00002b10 - adds r0, r2, r4 - strh r1, [r0] - ldrh r1, [r3, 0x26] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldrh r1, [r3, 0x22] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldr r0, _080BDB74 @ =0x00002b19 - adds r4, r2, r0 - ldrb r1, [r4] - adds r0, r1, 0 - adds r5, r2, 0 - cmp r0, 0xFF - beq _080BDB44 - adds r0, r1, 0x1 - strb r0, [r4] -_080BDB44: - ldrb r0, [r3, 0x5] - lsls r0, 31 - ldr r1, _080BDB78 @ =0x00002b1a - adds r4, r5, r1 - lsrs r0, 31 - ldrb r1, [r4] - movs r2, 0x2 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4] - ldrb r0, [r3] - cmp r0, 0 - beq _080BDB7C - movs r0, 0x2 - orrs r2, r0 - b _080BDB82 - .align 2, 0 -_080BDB68: .4byte gSaveBlock1 -_080BDB6C: .4byte gUnknown_030042E0 -_080BDB70: .4byte 0x00002b10 -_080BDB74: .4byte 0x00002b19 -_080BDB78: .4byte 0x00002b1a -_080BDB7C: - movs r0, 0x3 - negs r0, r0 - ands r2, r0 -_080BDB82: - strb r2, [r4] - ldrb r0, [r3, 0x3] - cmp r0, 0 - beq _080BDB9C - ldr r4, _080BDB98 @ =0x00002b1a - adds r0, r5, r4 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _080BDBAA - .align 2, 0 -_080BDB98: .4byte 0x00002b1a -_080BDB9C: - ldr r0, _080BDBDC @ =0x00002b1a - adds r2, r5, r0 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080BDBAA: - ldrb r1, [r3, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080BDBE0 - movs r1, 0 - adds r0, r3, 0 - adds r0, 0x36 - ldrb r0, [r0] - cmp r0, 0 - bne _080BDBE0 -_080BDBC0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bhi _080BDBEC - adds r0, r3, 0 - adds r0, 0x36 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _080BDBC0 - ldr r4, _080BDBDC @ =0x00002b1a - adds r0, r5, r4 - b _080BDBE4 - .align 2, 0 -_080BDBDC: .4byte 0x00002b1a -_080BDBE0: - ldr r1, _080BDC08 @ =0x00002b1a - adds r0, r5, r1 -_080BDBE4: - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_080BDBEC: - bl TakeTVShowInSearchOfTrainersOffTheAir - ldr r0, _080BDC0C @ =gSaveBlock1 - ldr r4, _080BDC10 @ =0x00002b14 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0 - bne _080BDC02 - movs r0, 0x1 - bl FlagSet -_080BDC02: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BDC08: .4byte 0x00002b1a -_080BDC0C: .4byte gSaveBlock1 -_080BDC10: .4byte 0x00002b14 - thumb_func_end GabbyAndTyBeforeInterview - - thumb_func_start sub_80BDC14 -sub_80BDC14: @ 80BDC14 - push {r4-r6,lr} - ldr r4, _080BDC70 @ =gSaveBlock1 - ldr r0, _080BDC74 @ =0x00002b1a - adds r6, r4, r0 - ldrb r3, [r6] - lsls r1, r3, 31 - adds r0, 0x1 - adds r5, r4, r0 - lsrs r1, 31 - ldrb r2, [r5] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - movs r1, 0x2 - ands r1, r3 - movs r2, 0x3 - negs r2, r2 - ands r0, r2 - orrs r0, r1 - movs r1, 0x4 - ands r1, r3 - subs r2, 0x2 - ands r0, r2 - orrs r0, r1 - movs r1, 0x8 - ands r1, r3 - subs r2, 0x4 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - movs r0, 0x10 - orrs r3, r0 - strb r3, [r6] - ldr r0, _080BDC78 @ =gMapHeader - ldrb r0, [r0, 0x14] - ldr r1, _080BDC7C @ =0x00002b18 - adds r4, r1 - strb r0, [r4] - movs r0, 0x6 - bl IncrementGameStat - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BDC70: .4byte gSaveBlock1 -_080BDC74: .4byte 0x00002b1a -_080BDC78: .4byte gMapHeader -_080BDC7C: .4byte 0x00002b18 - thumb_func_end sub_80BDC14 - - thumb_func_start TakeTVShowInSearchOfTrainersOffTheAir -TakeTVShowInSearchOfTrainersOffTheAir: @ 80BDC80 - ldr r0, _080BDC94 @ =gSaveBlock1 - ldr r1, _080BDC98 @ =0x00002b1a - adds r0, r1 - ldrb r2, [r0] - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 -_080BDC94: .4byte gSaveBlock1 -_080BDC98: .4byte 0x00002b1a - thumb_func_end TakeTVShowInSearchOfTrainersOffTheAir - - thumb_func_start GabbyAndTyGetBattleNum -GabbyAndTyGetBattleNum: @ 80BDC9C - push {lr} - ldr r0, _080BDCBC @ =gSaveBlock1 - ldr r2, _080BDCC0 @ =0x00002b19 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x5 - bls _080BDCB8 - ldrb r0, [r1] - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x6 - lsls r0, 24 - lsrs r0, 24 -_080BDCB8: - pop {r1} - bx r1 - .align 2, 0 -_080BDCBC: .4byte gSaveBlock1 -_080BDCC0: .4byte 0x00002b19 - thumb_func_end GabbyAndTyGetBattleNum - - thumb_func_start IsTVShowInSearchOfTrainersAiring -IsTVShowInSearchOfTrainersAiring: @ 80BDCC4 - ldr r0, _080BDCD4 @ =gSaveBlock1 - ldr r1, _080BDCD8 @ =0x00002b1a - adds r0, r1 - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 31 - bx lr - .align 2, 0 -_080BDCD4: .4byte gSaveBlock1 -_080BDCD8: .4byte 0x00002b1a - thumb_func_end IsTVShowInSearchOfTrainersAiring - - thumb_func_start GabbyAndTyGetLastQuote -GabbyAndTyGetLastQuote: @ 80BDCDC - push {r4,r5,lr} - ldr r0, _080BDD00 @ =gSaveBlock1 - ldr r1, _080BDD04 @ =0x00002b16 - adds r4, r0, r1 - ldrh r0, [r4] - ldr r5, _080BDD08 @ =0x0000ffff - cmp r0, r5 - beq _080BDD10 - ldr r0, _080BDD0C @ =gStringVar1 - ldrh r1, [r4] - bl sub_80EB3FC - ldrh r1, [r4] - adds r0, r5, 0 - orrs r0, r1 - strh r0, [r4] - movs r0, 0x1 - b _080BDD12 - .align 2, 0 -_080BDD00: .4byte gSaveBlock1 -_080BDD04: .4byte 0x00002b16 -_080BDD08: .4byte 0x0000ffff -_080BDD0C: .4byte gStringVar1 -_080BDD10: - movs r0, 0 -_080BDD12: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GabbyAndTyGetLastQuote - - thumb_func_start sub_80BDD18 -sub_80BDD18: @ 80BDD18 - push {lr} - ldr r0, _080BDD30 @ =gSaveBlock1 - ldr r1, _080BDD34 @ =0x00002b1b - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BDD38 - movs r0, 0x1 - b _080BDD5E - .align 2, 0 -_080BDD30: .4byte gSaveBlock1 -_080BDD34: .4byte 0x00002b1b -_080BDD38: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080BDD44 - movs r0, 0x2 - b _080BDD5E -_080BDD44: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080BDD50 - movs r0, 0x3 - b _080BDD5E -_080BDD50: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080BDD5C - movs r0, 0 - b _080BDD5E -_080BDD5C: - movs r0, 0x4 -_080BDD5E: - pop {r1} - bx r1 - .align 2, 0 - thumb_func_end sub_80BDD18 - - .section .text_80BE8EC - - thumb_func_start sub_80C04A0 -sub_80C04A0: @ 80C04A0 - push {r4,r5,lr} - movs r3, 0 - movs r2, 0x5 - ldr r5, _080C0508 @ =gSaveBlock1 - ldr r4, _080C050C @ =0x00002738 -_080C04AA: - lsls r0, r2, 24 - asrs r1, r0, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080C04C8 - lsls r0, r3, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r3, r0, 24 -_080C04C8: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x17 - ble _080C04AA - movs r2, 0 - lsls r0, r3, 24 - asrs r0, 24 - movs r1, 0x5 - subs r0, r1, r0 - cmp r2, r0 - bge _080C0502 - adds r5, r0, 0 -_080C04E4: - lsls r1, r2, 24 - asrs r4, r1, 24 - movs r0, 0xA0 - lsls r0, 19 - adds r1, r0 - lsrs r1, 24 - ldr r0, _080C0510 @ =gSaveBlock1 + 0x2738 - bl sub_80BF55C - adds r4, 0x1 - lsls r4, 24 - lsrs r2, r4, 24 - asrs r4, 24 - cmp r4, r5 - blt _080C04E4 -_080C0502: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0508: .4byte gSaveBlock1 -_080C050C: .4byte 0x00002738 -_080C0510: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80C04A0 - - thumb_func_start sub_80C0514 -sub_80C0514: @ 80C0514 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r5, r2, 24 - movs r4, 0 -_080C0524: - lsls r0, r4, 6 - ldr r6, _080C0550 @ =0x02007000 - adds r0, r6 - adds r1, r4, 0 - muls r1, r7 - add r1, r8 - movs r2, 0x40 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080C0524 - adds r4, r6, 0 - cmp r5, 0x1 - beq _080C0578 - cmp r5, 0x1 - bgt _080C0554 - cmp r5, 0 - beq _080C055E - b _080C05AC - .align 2, 0 -_080C0550: .4byte 0x02007000 -_080C0554: - cmp r5, 0x2 - beq _080C0584 - cmp r5, 0x3 - beq _080C059C - b _080C05AC -_080C055E: - ldr r0, _080C0574 @ =gSaveBlock1 + 0x2ABC - adds r1, r4, 0 - adds r1, 0x40 - adds r2, r4, 0 - adds r2, 0x80 - adds r3, r4, 0 - adds r3, 0xC0 - bl sub_80C05C4 - b _080C05AC - .align 2, 0 -_080C0574: .4byte gSaveBlock1 + 0x2ABC -_080C0578: - ldr r1, _080C0580 @ =gSaveBlock1 + 0x2ABC - adds r2, r4, 0 - adds r2, 0x80 - b _080C058A - .align 2, 0 -_080C0580: .4byte gSaveBlock1 + 0x2ABC -_080C0584: - adds r1, r4, 0 - adds r1, 0x40 - ldr r2, _080C0598 @ =gSaveBlock1 + 0x2ABC -_080C058A: - adds r3, r4, 0 - adds r3, 0xC0 - adds r0, r4, 0 - bl sub_80C05C4 - b _080C05AC - .align 2, 0 -_080C0598: .4byte gSaveBlock1 + 0x2ABC -_080C059C: - adds r1, r6, 0 - adds r1, 0x40 - adds r2, r6, 0 - adds r2, 0x80 - ldr r3, _080C05C0 @ =gSaveBlock1 + 0x2ABC - adds r0, r6, 0 - bl sub_80C05C4 -_080C05AC: - bl sub_80C0750 - bl sub_80C0788 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C05C0: .4byte gSaveBlock1 + 0x2ABC - thumb_func_end sub_80C0514 - - thumb_func_start sub_80C05C4 -sub_80C05C4: @ 80C05C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r0, [sp, 0x10] - str r1, [sp, 0x14] - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - add r0, sp, 0x10 - str r0, [sp] - add r0, sp, 0x14 - str r0, [sp, 0x4] - add r0, sp, 0x18 - str r0, [sp, 0x8] - add r0, sp, 0x1C - str r0, [sp, 0xC] - bl GetLinkPlayerCount - ldr r1, _080C0600 @ =gUnknown_03000721 - strb r0, [r1] - movs r0, 0 - mov r10, r0 -_080C05F4: - movs r7, 0 - mov r1, r10 - adds r1, 0x1 - str r1, [sp, 0x20] - b _080C068C - .align 2, 0 -_080C0600: .4byte gUnknown_03000721 -_080C0604: - lsls r4, r7, 2 - mov r1, sp - adds r0, r1, r4 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r10 - bl sub_80C0730 - ldr r1, _080C06B0 @ =gUnknown_03000722 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - mov r8, r4 - adds r1, r7, 0x1 - mov r9, r1 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080C0686 - movs r5, 0 - ldr r1, _080C06B4 @ =gUnknown_03000721 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - bge _080C0686 - adds r6, r1, 0 -_080C0638: - adds r0, r7, r5 - adds r4, r0, 0x1 - ldrb r1, [r6] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - ldr r0, [r0] - bl sub_80BEBC8 - ldr r1, _080C06B8 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080C0678 - ldrb r1, [r6] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - mov r1, sp - add r1, r8 - ldr r1, [r1] - bl sub_80C06BC -_080C0678: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - subs r0, 0x1 - cmp r5, r0 - blt _080C0638 -_080C0686: - mov r1, r9 - lsls r0, r1, 24 - lsrs r7, r0, 24 -_080C068C: - ldr r0, _080C06B4 @ =gUnknown_03000721 - ldrb r0, [r0] - cmp r7, r0 - bcc _080C0604 - ldr r1, [sp, 0x20] - lsls r0, r1, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0xF - bls _080C05F4 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C06B0: .4byte gUnknown_03000722 -_080C06B4: .4byte gUnknown_03000721 -_080C06B8: .4byte gUnknown_03005D38 - thumb_func_end sub_80C05C4 - -.section .dotvshow - - thumb_func_start DoTVShowBravoTrainerPokemonProfile -DoTVShowBravoTrainerPokemonProfile: @ 80C091C - push {r4,r5,lr} - ldr r0, _080C0948 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C094C @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C0950 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C0954 @ =gUnknown_020387E8 - ldrb r5, [r0] - cmp r5, 0x8 - bls _080C093C - b _080C0B7A -_080C093C: - lsls r0, r5, 2 - ldr r1, _080C0958 @ =_080C095C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0948: .4byte gSpecialVar_0x8004 -_080C094C: .4byte gSaveBlock1 + 0x2738 -_080C0950: .4byte gScriptResult -_080C0954: .4byte gUnknown_020387E8 -_080C0958: .4byte _080C095C - .align 2, 0 -_080C095C: - .4byte _080C0980 - .4byte _080C09D8 - .4byte _080C0A10 - .4byte _080C0A40 - .4byte _080C0A74 - .4byte _080C0AA8 - .4byte _080C0AEC - .4byte _080C0B34 - .4byte _080C0B64 -_080C0980: - ldr r0, _080C09C0 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - ldrb r1, [r4, 0x13] - lsls r1, 27 - lsrs r1, 30 - movs r0, 0x2 - bl sub_80BEF10 - ldrh r1, [r4, 0x2] - movs r0, 0xB - muls r0, r1 - ldr r1, _080C09C4 @ =gSpeciesNames - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _080C09CC - ldr r1, _080C09C8 @ =gUnknown_020387E8 - movs r0, 0x8 - b _080C0B78 - .align 2, 0 -_080C09C0: .4byte gStringVar1 -_080C09C4: .4byte gSpeciesNames -_080C09C8: .4byte gUnknown_020387E8 -_080C09CC: - ldr r1, _080C09D4 @ =gUnknown_020387E8 - movs r0, 0x1 - b _080C0B78 - .align 2, 0 -_080C09D4: .4byte gUnknown_020387E8 -_080C09D8: - ldr r0, _080C0A04 @ =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0A08 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C0A0C @ =gStringVar2 - adds r1, r4, 0 - adds r1, 0x8 - ldrb r2, [r4, 0x1F] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x2 - bl CopyContestCategoryToStringVar - b _080C0B74 - .align 2, 0 -_080C0A04: .4byte gStringVar1 -_080C0A08: .4byte gSpeciesNames -_080C0A0C: .4byte gStringVar2 -_080C0A10: - ldr r0, _080C0A2C @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _080C0A34 - ldr r1, _080C0A30 @ =gUnknown_020387E8 - movs r0, 0x3 - b _080C0B78 - .align 2, 0 -_080C0A2C: .4byte gStringVar1 -_080C0A30: .4byte gUnknown_020387E8 -_080C0A34: - ldr r1, _080C0A3C @ =gUnknown_020387E8 - movs r0, 0x4 - b _080C0B78 - .align 2, 0 -_080C0A3C: .4byte gUnknown_020387E8 -_080C0A40: - ldr r0, _080C0A68 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C0A6C @ =gStringVar2 - ldrh r1, [r4, 0x4] - bl sub_80EB3FC - ldrb r1, [r4, 0x13] - lsls r1, 25 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x2 - bl sub_80BF088 - ldr r1, _080C0A70 @ =gUnknown_020387E8 - movs r0, 0x5 - b _080C0B78 - .align 2, 0 -_080C0A68: .4byte gStringVar1 -_080C0A6C: .4byte gStringVar2 -_080C0A70: .4byte gUnknown_020387E8 -_080C0A74: - ldr r0, _080C0A9C @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C0AA0 @ =gStringVar2 - ldrh r1, [r4, 0x4] - bl sub_80EB3FC - ldrb r1, [r4, 0x13] - lsls r1, 25 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x2 - bl sub_80BF088 - ldr r1, _080C0AA4 @ =gUnknown_020387E8 - movs r0, 0x5 - b _080C0B78 - .align 2, 0 -_080C0A9C: .4byte gStringVar1 -_080C0AA0: .4byte gStringVar2 -_080C0AA4: .4byte gUnknown_020387E8 -_080C0AA8: - ldr r0, _080C0AD4 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - ldr r0, _080C0AD8 @ =gStringVar3 - ldrh r1, [r4, 0x6] - bl sub_80EB3FC - ldrh r0, [r4, 0x14] - cmp r0, 0 - beq _080C0AE0 - ldr r1, _080C0ADC @ =gUnknown_020387E8 - movs r0, 0x6 - b _080C0B78 - .align 2, 0 -_080C0AD4: .4byte gStringVar1 -_080C0AD8: .4byte gStringVar3 -_080C0ADC: .4byte gUnknown_020387E8 -_080C0AE0: - ldr r1, _080C0AE8 @ =gUnknown_020387E8 - movs r0, 0x7 - b _080C0B78 - .align 2, 0 -_080C0AE8: .4byte gUnknown_020387E8 -_080C0AEC: - ldr r0, _080C0B1C @ =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0B20 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C0B24 @ =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xD - muls r1, r2 - ldr r2, _080C0B28 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, _080C0B2C @ =gStringVar3 - ldrh r1, [r4, 0x6] - bl sub_80EB3FC - ldr r1, _080C0B30 @ =gUnknown_020387E8 - movs r0, 0x7 - b _080C0B78 - .align 2, 0 -_080C0B1C: .4byte gStringVar1 -_080C0B20: .4byte gSpeciesNames -_080C0B24: .4byte gStringVar2 -_080C0B28: .4byte gMoveNames -_080C0B2C: .4byte gStringVar3 -_080C0B30: .4byte gUnknown_020387E8 -_080C0B34: - ldr r0, _080C0B58 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C0B5C @ =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0B60 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone - b _080C0B7A - .align 2, 0 -_080C0B58: .4byte gStringVar1 -_080C0B5C: .4byte gStringVar2 -_080C0B60: .4byte gSpeciesNames -_080C0B64: - ldr r0, _080C0B8C @ =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0B90 @ =gSpeciesNames - adds r1, r2 - bl StringCopy -_080C0B74: - ldr r1, _080C0B94 @ =gUnknown_020387E8 - movs r0, 0x2 -_080C0B78: - strb r0, [r1] -_080C0B7A: - ldr r0, _080C0B98 @ =gTVBravoTrainerTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0B8C: .4byte gStringVar1 -_080C0B90: .4byte gSpeciesNames -_080C0B94: .4byte gUnknown_020387E8 -_080C0B98: .4byte gTVBravoTrainerTextGroup - thumb_func_end DoTVShowBravoTrainerPokemonProfile - - thumb_func_start DoTVShowBravoTrainerBattleTowerProfile -DoTVShowBravoTrainerBattleTowerProfile: @ 80C0B9C - push {r4,r5,lr} - ldr r0, _080C0BC8 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C0BCC @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C0BD0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C0BD4 @ =gUnknown_020387E8 - ldrb r5, [r0] - adds r2, r0, 0 - cmp r5, 0xE - bls _080C0BBE - b _080C0DDE -_080C0BBE: - lsls r0, r5, 2 - ldr r1, _080C0BD8 @ =_080C0BDC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0BC8: .4byte gSpecialVar_0x8004 -_080C0BCC: .4byte gSaveBlock1 + 0x2738 -_080C0BD0: .4byte gScriptResult -_080C0BD4: .4byte gUnknown_020387E8 -_080C0BD8: .4byte _080C0BDC - .align 2, 0 -_080C0BDC: - .4byte _080C0C18 - .4byte _080C0C5C - .4byte _080C0C8C - .4byte _080C0CB0 - .4byte _080C0CDC - .4byte _080C0D24 - .4byte _080C0D30 - .4byte _080C0D3C - .4byte _080C0D42 - .4byte _080C0D42 - .4byte _080C0D42 - .4byte _080C0D5C - .4byte _080C0D88 - .4byte _080C0D88 - .4byte _080C0DC0 -_080C0C18: - ldr r0, _080C0C40 @ =gStringVar1 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0C44 @ =gStringVar2 - ldrh r2, [r4, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0C48 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrh r0, [r4, 0x16] - cmp r0, 0x6 - bls _080C0C50 - ldr r1, _080C0C4C @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C40: .4byte gStringVar1 -_080C0C44: .4byte gStringVar2 -_080C0C48: .4byte gSpeciesNames -_080C0C4C: .4byte gUnknown_020387E8 -_080C0C50: - ldr r1, _080C0C58 @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C58: .4byte gUnknown_020387E8 -_080C0C5C: - ldrb r1, [r4, 0x1A] - movs r0, 0 - bl sub_80BF088 - ldrh r1, [r4, 0x16] - movs r0, 0x1 - bl sub_80BF088 - ldrb r0, [r4, 0x1C] - cmp r0, 0x1 - bne _080C0C80 - ldr r1, _080C0C7C @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C7C: .4byte gUnknown_020387E8 -_080C0C80: - ldr r1, _080C0C88 @ =gUnknown_020387E8 - movs r0, 0x4 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C88: .4byte gUnknown_020387E8 -_080C0C8C: - ldr r0, _080C0CAC @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldrh r1, [r4, 0x16] - adds r1, 0x1 - movs r0, 0x1 - bl sub_80BF088 -_080C0CA2: - ldrb r0, [r4, 0x1B] - cmp r0, 0 - beq _080C0CFE - b _080C0D18 - .align 2, 0 -_080C0CAC: .4byte gStringVar1 -_080C0CB0: - ldr r0, _080C0CD0 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0CD4 @ =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0CD8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - b _080C0CA2 - .align 2, 0 -_080C0CD0: .4byte gStringVar1 -_080C0CD4: .4byte gStringVar2 -_080C0CD8: .4byte gSpeciesNames -_080C0CDC: - ldr r0, _080C0D08 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0D0C @ =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0D10 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _080C0D18 -_080C0CFE: - ldr r1, _080C0D14 @ =gUnknown_020387E8 - movs r0, 0x5 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D08: .4byte gStringVar1 -_080C0D0C: .4byte gStringVar2 -_080C0D10: .4byte gSpeciesNames -_080C0D14: .4byte gUnknown_020387E8 -_080C0D18: - ldr r1, _080C0D20 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D20: .4byte gUnknown_020387E8 -_080C0D24: - ldr r0, _080C0D2C @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - b _080C0D46 - .align 2, 0 -_080C0D2C: .4byte gStringVar1 -_080C0D30: - ldr r0, _080C0D38 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - b _080C0D46 - .align 2, 0 -_080C0D38: .4byte gStringVar1 -_080C0D3C: - movs r0, 0xB - strb r0, [r2] - b _080C0DDE -_080C0D42: - ldr r0, _080C0D54 @ =gStringVar1 - adds r1, r4, 0x2 -_080C0D46: - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r1, _080C0D58 @ =gUnknown_020387E8 - movs r0, 0xB - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D54: .4byte gStringVar1 -_080C0D58: .4byte gUnknown_020387E8 -_080C0D5C: - ldr r0, _080C0D74 @ =gStringVar1 - ldrh r1, [r4, 0x18] - bl sub_80EB3FC - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _080C0D7C - ldr r1, _080C0D78 @ =gUnknown_020387E8 - movs r0, 0xC - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D74: .4byte gStringVar1 -_080C0D78: .4byte gUnknown_020387E8 -_080C0D7C: - ldr r1, _080C0D84 @ =gUnknown_020387E8 - movs r0, 0xD - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D84: .4byte gUnknown_020387E8 -_080C0D88: - ldr r0, _080C0DB0 @ =gStringVar1 - ldrh r1, [r4, 0x18] - bl sub_80EB3FC - ldr r0, _080C0DB4 @ =gStringVar2 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0DB8 @ =gStringVar3 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r1, _080C0DBC @ =gUnknown_020387E8 - movs r0, 0xE - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0DB0: .4byte gStringVar1 -_080C0DB4: .4byte gStringVar2 -_080C0DB8: .4byte gStringVar3 -_080C0DBC: .4byte gUnknown_020387E8 -_080C0DC0: - ldr r0, _080C0DF0 @ =gStringVar1 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0DF4 @ =gStringVar2 - ldrh r2, [r4, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0DF8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080C0DDE: - ldr r0, _080C0DFC @ =gTVBravoTrainerBattleTowerTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0DF0: .4byte gStringVar1 -_080C0DF4: .4byte gStringVar2 -_080C0DF8: .4byte gSpeciesNames -_080C0DFC: .4byte gTVBravoTrainerBattleTowerTextGroup - thumb_func_end DoTVShowBravoTrainerBattleTowerProfile - - thumb_func_start DoTVShowTodaysSmartShopper -DoTVShowTodaysSmartShopper: @ 80C0E00 - push {r4-r6,lr} - ldr r0, _080C0E2C @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C0E30 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C0E34 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C0E38 @ =gUnknown_020387E8 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xC - bls _080C0E22 - b _080C1014 -_080C0E22: - lsls r0, r6, 2 - ldr r1, _080C0E3C @ =_080C0E40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0E2C: .4byte gSpecialVar_0x8004 -_080C0E30: .4byte gSaveBlock1 + 0x2738 -_080C0E34: .4byte gScriptResult -_080C0E38: .4byte gUnknown_020387E8 -_080C0E3C: .4byte _080C0E40 - .align 2, 0 -_080C0E40: - .4byte _080C0E74 - .4byte _080C0EB0 - .4byte _080C0EF8 - .4byte _080C0F0A - .4byte _080C0EF8 - .4byte _080C0EF8 - .4byte _080C0F34 - .4byte _080C0F64 - .4byte _080C0F94 - .4byte _080C0FA0 - .4byte _080C0FAE - .4byte _080C0FC0 - .4byte _080C1004 -_080C0E74: - ldr r0, _080C0E98 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r0, _080C0E9C @ =gStringVar2 - ldrb r1, [r5, 0x12] - movs r2, 0 - bl sub_80FBFB4 - ldrh r0, [r5, 0xC] - cmp r0, 0xFE - bls _080C0EA4 - ldr r1, _080C0EA0 @ =gUnknown_020387E8 - movs r0, 0xB - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0E98: .4byte gStringVar1 -_080C0E9C: .4byte gStringVar2 -_080C0EA0: .4byte gUnknown_020387E8 -_080C0EA4: - ldr r1, _080C0EAC @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0EAC: .4byte gUnknown_020387E8 -_080C0EB0: - ldr r0, _080C0EEC @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r4, _080C0EF0 @ =gStringVar2 - ldrh r0, [r5, 0x6] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0xC] - movs r0, 0x2 - bl sub_80BF088 - ldr r4, _080C0EF4 @ =gUnknown_020387E8 - bl Random - ldrb r2, [r4] - adds r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, r2 - strb r0, [r4] - b _080C1014 - .align 2, 0 -_080C0EEC: .4byte gStringVar1 -_080C0EF0: .4byte gStringVar2 -_080C0EF4: .4byte gUnknown_020387E8 -_080C0EF8: - ldrh r0, [r5, 0x8] - cmp r0, 0 - beq _080C0F04 - movs r0, 0x6 - strb r0, [r2] - b _080C1014 -_080C0F04: - movs r0, 0xA - strb r0, [r2] - b _080C1014 -_080C0F0A: - ldrh r1, [r5, 0xC] - adds r1, 0x1 - movs r0, 0x2 - bl sub_80BF088 - ldrh r0, [r5, 0x8] - cmp r0, 0 - beq _080C0F28 - ldr r1, _080C0F24 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F24: .4byte gUnknown_020387E8 -_080C0F28: - ldr r1, _080C0F30 @ =gUnknown_020387E8 - movs r0, 0xA - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F30: .4byte gUnknown_020387E8 -_080C0F34: - ldr r4, _080C0F5C @ =gStringVar2 - ldrh r0, [r5, 0x8] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0xE] - movs r0, 0x2 - bl sub_80BF088 - ldrh r0, [r5, 0xA] - cmp r0, 0 - beq _080C0F7C - ldr r1, _080C0F60 @ =gUnknown_020387E8 - movs r0, 0x7 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F5C: .4byte gStringVar2 -_080C0F60: .4byte gUnknown_020387E8 -_080C0F64: - ldr r4, _080C0F8C @ =gStringVar2 - ldrh r0, [r5, 0xA] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0x10] - movs r0, 0x2 - bl sub_80BF088 -_080C0F7C: - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - beq _080C0FE2 - ldr r1, _080C0F90 @ =gUnknown_020387E8 - movs r0, 0x9 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F8C: .4byte gStringVar2 -_080C0F90: .4byte gUnknown_020387E8 -_080C0F94: - ldrh r0, [r5, 0xC] - cmp r0, 0xFE - bls _080C0FBA - movs r0, 0xC - strb r0, [r2] - b _080C1014 -_080C0FA0: - movs r0, 0x1 - adds r1, r5, 0 - bl sub_80BF154 - bl TVShowDone - b _080C1014 -_080C0FAE: - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - bne _080C0FBA - movs r0, 0x8 - strb r0, [r2] - b _080C1014 -_080C0FBA: - movs r0, 0x9 - strb r0, [r2] - b _080C1014 -_080C0FC0: - ldr r0, _080C0FEC @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r4, _080C0FF0 @ =gStringVar2 - ldrh r0, [r5, 0x6] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - bne _080C0FF8 -_080C0FE2: - ldr r1, _080C0FF4 @ =gUnknown_020387E8 - movs r0, 0x8 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0FEC: .4byte gStringVar1 -_080C0FF0: .4byte gStringVar2 -_080C0FF4: .4byte gUnknown_020387E8 -_080C0FF8: - ldr r1, _080C1000 @ =gUnknown_020387E8 - movs r0, 0xC - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C1000: .4byte gUnknown_020387E8 -_080C1004: - ldr r0, _080C1028 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - bl TVShowDone -_080C1014: - ldr r0, _080C102C @ =gTVSmartShopperTextGroup - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C1028: .4byte gStringVar1 -_080C102C: .4byte gTVSmartShopperTextGroup - thumb_func_end DoTVShowTodaysSmartShopper - - .align 2, 0 @ Don't pad with nop. diff --git a/data/decoration.s b/data/decoration.s deleted file mode 100644 index d37e41823..000000000 --- a/data/decoration.s +++ /dev/null @@ -1,265 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .section .rodata - -@ 83E9FD0 - .include "data/decorations.inc" - - .align 2 -gUnknown_083EC5E4:: @ 83EC5E4 - .4byte SecretBaseText_Desk - .4byte SecretBaseText_Chair - .4byte SecretBaseText_Plant - .4byte SecretBaseText_Ornament - .4byte SecretBaseText_Mat - .4byte SecretBaseText_Poster - .4byte SecretBaseText_Doll - .4byte SecretBaseText_Cushion - - .align 2 -gUnknown_083EC604:: @ 83EC604 - .4byte SecretBaseText_Decorate, sub_80FF160 - .4byte SecretBaseText_PutAway, sub_8100A0C - .4byte SecretBaseText_Toss, sub_8101700 - .4byte gUnknownText_Exit, gpu_pal_decompress_alloc_tag_and_upload - - .align 2 -gUnknown_083EC624:: @ 83EC624 - .4byte SecretBaseText_PutOutDecor - .4byte SecretBaseText_StoreChosenDecor - .4byte SecretBaseText_ThrowAwayDecor - .4byte gMenuText_GoBackToPrev - - .align 2 -gUnknown_083EC634:: @ 83EC634 - .4byte sub_80FF5BC - .4byte sub_80FF058 - .4byte sub_81017A0 - .4byte sub_80FF058 - .4byte sub_81017A0 - .4byte sub_80FF058 - .4byte sub_8109D04 - .4byte sub_80FF058 - - .align 2 -gUnknown_083EC654:: @ 83EC654 - .2byte 0x6318, 0x739C, 0x7FFF - -gUnknown_083EC65A:: @ 83EC65A - .string "{PALETTE 13}{STR_VAR_1}$" - -Unknown_3EC660: @ 83EC660 - .byte 0, 1, 2, 3 - -Unknown_3EC664: @ 83EC664 - .byte 0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13 - -Unknown_3EC670: @ 83EC670 - .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 - -Unknown_3EC680: @ 83EC680 - .byte 0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21 - -Unknown_3EC68C: @ 83EC68C - .byte 0, 1, 2, 3, 4, 5, 6, 7 - -Unknown_3EC694: @ 83EC694 - .byte 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 - -Unknown_3EC6B4: @ 83EC6B4 - .byte 0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45 - -Unknown_3EC6D8: @ 83EC6D8 - .byte 0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29 - -Unknown_3EC6F0: @ 83EC6F0 - .byte 0, 0, 0, 0 - -Unknown_3EC6F4: @ 83EC6F4 - .byte 0, 0, 1, 1, 0, 0, 1, 1 - -Unknown_3EC6FC: @ 83EC6FC - .byte 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2 - -Unknown_3EC708: @ 83EC708 - .byte 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7 - -Unknown_3EC728: @ 83EC728 - .byte 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3 - -Unknown_3EC738: @ 83EC738 - .byte 0, 0, 0, 0, 1, 1, 1, 1 - -Unknown_3EC740: @ 83EC740 - .byte 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2 - -Unknown_3EC74C: @ 83EC74C - .byte 0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7 - -Unknown_3EC76C: @ 83EC76C - .byte 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8 - -Unknown_3EC790: @ 83EC790 - .byte 0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5 - -Unknown_3EC7A8: @ 83EC7A8 - .byte 4, 5, 6, 7 - -Unknown_3EC7AC: @ 83EC7AC - .byte 4, 5, 4, 5, 6, 7, 6, 7 - -Unknown_3EC7B4: @ 83EC7B4 - .byte 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7 - -Unknown_3EC7C0: @ 83EC7C0 - .byte 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7 - -Unknown_3EC7E0: @ 83EC7E0 - .byte 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7 - -Unknown_3EC7F0: @ 83EC7F0 - .byte 4, 5, 6, 7, 4, 5, 6, 7 - -Unknown_3EC7F8: @ 83EC7F8 - .byte 4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7 - -Unknown_3EC804: @ 83EC804 - .byte 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7 - -Unknown_3EC824: @ 83EC824 - .byte 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7 - -Unknown_3EC848: @ 83EC848 - .byte 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7 - - .align 2 -gUnknown_083EC860:: @ 83EC860 - .4byte Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4 - .4byte Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8 - .4byte Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc - .4byte Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20 - .4byte Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10 - .4byte Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8 - .4byte Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc - .4byte Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20 - .4byte Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24 - .4byte Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18 - -gUnknown_083EC900:: @ 83EC900 - .byte 0, 1, 120, 78 - .byte 1, 2, -128, 78 - .byte 1, 3, -112, 86 - .byte 1, 3, -112, 70 - .byte 0, 2, -128, 70 - .byte 2, 2, 120, 70 - .byte 2, 3, -128, 86 - .byte 2, 3, -128, 54 - .byte 0, 3, -112, 70 - .byte 1, 3, -112, 70 - - .align 2 -gSpriteAnim_83EC928:: @ 83EC928 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83EC930:: @ 83EC930 - .4byte gSpriteAnim_83EC928 - - .align 2 -gSpriteImageTable_83EC934: @ 83EC934 - obj_frame_tiles gUnknown_02038900+0x84, 0x800 - - .align 2 -gSpriteTemplate_83EC93C:: @ 83EC93C - spr_template 0xFFFF, 3000, 0x20391AC, gSpriteAnimTable_83EC930, gSpriteImageTable_83EC934, gDummySpriteAffineAnimTable, sub_81009A8 - - .align 2 -gUnknown_083EC954:: @ 83EC954 - obj_pal gUnknown_02038900+0x884, 3000 - - .align 2 -gUnknown_083EC95C:: @ 83EC95C - .4byte sub_81000C4 - .4byte sub_810065C - - .align 2 -gUnknown_083EC964:: @ 83EC964 - .4byte sub_810026C - .4byte sub_810065C - - .align 2 -gUnknown_083EC96C:: @ 83EC96C - .4byte sub_80FFAB0 - .4byte sub_80FFB08 - .4byte sub_8100F88 - .4byte sub_8100FB4 - -gUnknown_083EC97C:: @ 83EC97C - .byte 4, 4, 4, 4, 0, 3, 3, 0 - -gUnknown_083EC984:: @ 83EC984 - .byte 4, 4, 4, 4, 0, 4, 3, 0 - - .align 2 -gUnknown_083EC98C:: - .incbin "graphics/unknown/83EC98C.gbapal" - - .align 2 -Unknown_3EC9AC: @ 83EC9AC - .incbin "graphics/unknown/83EC9AC.gbapal" - - .align 2 -gUnknown_083EC9CC:: @ 83EC9CC - .4byte sub_810153C - .4byte sub_8100EEC - - .align 2 -gUnknown_083EC9D4:: @ 83EC9D4 - .4byte sub_8101590 - .4byte sub_8100EEC - - .align 2 -gSpriteImage_83EC9DC:: @ 83EC9DC - .incbin "graphics/unknown_sprites/83EC9DC.4bpp" - - .align 2 -gUnknown_083ECA5C:: @ 83ECA5C - obj_pal gUnknown_083EC98C, 0x0008 - - .align 2 -gUnknown_083ECA64:: @ 83ECA64 - obj_pal Unknown_3EC9AC, 0x0008 - - .align 2 -gOamData_83ECA6C:: @ 83ECA6C - .2byte 0x0000 - .2byte 0x4000 - .2byte 0x0400 - - .align 2 -gSpriteAnim_83ECA74:: @ 83ECA74 - obj_image_anim_frame 0, 0 - obj_image_anim_end - - .align 2 -gSpriteAnimTable_83ECA7C:: @ 83ECA7C - .4byte gSpriteAnim_83ECA74 - - .align 2 -gSpriteImageTable_83ECA80:: @ 83ECA80 - obj_frame_tiles gSpriteImage_83EC9DC, 0x80 - - .align 2 -gSpriteTemplate_83ECA88:: @ 83ECA88 - spr_template 0xFFFF, 8, gOamData_83ECA6C, gSpriteAnimTable_83ECA7C, gSpriteImageTable_83ECA80, gDummySpriteAffineAnimTable, sub_8101698 - - .align 2 -gUnknown_083ECAA0:: @ 83ECAA0 - .4byte sub_8101848 - .4byte sub_80FED3C - -@ XXX: what is this? - .align 2 - .4byte 0x2000000 diff --git a/data/decorations.inc b/data/decorations.inc deleted file mode 100644 index 268ebee9a..000000000 --- a/data/decorations.inc +++ /dev/null @@ -1,2432 +0,0 @@ -DecorDesc_SMALL_DESK: @ 83E9FD0 - .string "A small desk built\n" - .string "for one.$" - -DecorDesc_POKEMON_DESK: @ 83E9FEC - .string "A small desk built in\n" - .string "the shape of a POKé\n" - .string "BALL.$" - -DecorDesc_HEAVY_DESK: @ 83EA01C - .string "A large desk made\n" - .string "of steel. Put some\n" - .string "decorations on it.$" - -DecorDesc_RAGGED_DESK: @ 83EA054 - .string "A large desk made\n" - .string "of wood. Put some\n" - .string "decorations on it.$" - -DecorDesc_COMFORT_DESK: @ 83EA08B - .string "A large desk made\n" - .string "of leaves. Put some\n" - .string "decorations on it.$" - -DecorDesc_PRETTY_DESK: @ 83EA0C4 - .string "A huge desk made\n" - .string "of glass. Holds lots\n" - .string "of decorations.$" - -DecorDesc_BRICK_DESK: @ 83EA0FA - .string "A huge desk made\n" - .string "of brick. Holds lots\n" - .string "of decorations.$" - -DecorDesc_CAMP_DESK: @ 83EA130 - .string "A huge desk made\n" - .string "of logs. Put lots of\n" - .string "decorations on it.$" - -DecorDesc_HARD_DESK: @ 83EA169 - .string "A huge desk made\n" - .string "of rocks. Holds\n" - .string "many decorations.$" - -DecorDesc_SMALL_CHAIR: @ 83EA19C - .string "A small chair made\n" - .string "for one.$" - -DecorDesc_POKEMON_CHAIR: @ 83EA1B8 - .string "A small chair built\n" - .string "in the shape of a\n" - .string "POKé BALL.$" - -DecorDesc_HEAVY_CHAIR: @ 83EA1E9 - .string "A small chair made\n" - .string "of steel.$" - -DecorDesc_PRETTY_CHAIR: @ 83EA206 - .string "A small chair made\n" - .string "of glass.$" - -DecorDesc_COMFORT_CHAIR: @ 83EA223 - .string "A small chair made\n" - .string "of leaves.$" - -DecorDesc_RAGGED_CHAIR: @ 83EA241 - .string "A small chair made\n" - .string "of wood.$" - -DecorDesc_BRICK_CHAIR: @ 83EA25D - .string "A small chair made\n" - .string "of brick.$" - -DecorDesc_CAMP_CHAIR: @ 83EA27A - .string "A small chair made\n" - .string "of logs.$" - -DecorDesc_HARD_CHAIR: @ 83EA296 - .string "A small chair made\n" - .string "of rock.$" - -DecorDesc_RED_PLANT: @ 83EA2B2 - .string "A vivid red potted\n" - .string "plant.$" - -DecorDesc_TROPICAL_PLANT: @ 83EA2CC - .string "A flowering tropical\n" - .string "plant in a pot.$" - -DecorDesc_PRETTY_FLOWERS: @ 83EA2F1 - .string "A pot of cute\n" - .string "flowers.$" - -DecorDesc_COLORFUL_PLANT: @ 83EA308 - .string "A large pot with\n" - .string "many colorful\n" - .string "flowers.$" - -DecorDesc_BIG_PLANT: @ 83EA330 - .string "A large, umbrella-\n" - .string "shaped plant in a\n" - .string "big pot.$" - -DecorDesc_GORGEOUS_PLANT: @ 83EA35E - .string "A large, impressive\n" - .string "plant in a big pot.$" - -DecorDesc_RED_BRICK: @ 83EA386 - .string "A red-colored brick.\n" - .string "Decorations can be\n" - .string "placed on top.$" - -DecorDesc_YELLOW_BRICK: @ 83EA3BD - .string "A yellow-colored\n" - .string "brick. Put some\n" - .string "decorations on top.$" - -DecorDesc_BLUE_BRICK: @ 83EA3F2 - .string "A blue-colored\n" - .string "brick. Put some\n" - .string "decorations on top.$" - -DecorDesc_RED_BALLOON: @ 83EA425 - .string "A red balloon filled\n" - .string "with water. Bursts\n" - .string "if stepped on.$" - -DecorDesc_BLUE_BALLOON: @ 83EA45C - .string "A blue balloon filled\n" - .string "with water. Bursts\n" - .string "if stepped on.$" - -DecorDesc_YELLOW_BALLOON: @ 83EA494 - .string "A yellow balloon\n" - .string "filled with water.\n" - .string "Pops if stepped on.$" - -DecorDesc_RED_TENT: @ 83EA4CC - .string "A large red tent.\n" - .string "You can hide inside\n" - .string "it.$" - -DecorDesc_BLUE_TENT: @ 83EA4F6 - .string "A large blue tent.\n" - .string "You can hide inside\n" - .string "it.$" - -DecorDesc_SOLID_BOARD: @ 83EA521 - .string "Place over a hole to\n" - .string "cross to the other\n" - .string "side.$" - -DecorDesc_SLIDE: @ 83EA54F - .string "Use to slide down\n" - .string "from the platform.$" - -DecorDesc_FENCE_LENGTH: @ 83EA574 - .string "A small fence that\n" - .string "blocks passage.$" - -DecorDesc_FENCE_WIDTH: @ 83EA597 - .string "A small fence that\n" - .string "blocks passage.$" - -DecorDesc_TIRE: @ 83EA5BA - .string "An old large tire.\n" - .string "Decorations can be\n" - .string "placed on top.$" - -DecorDesc_STAND: @ 83EA5EF - .string "A large pedestal\n" - .string "with steps.$" - -DecorDesc_MUD_BALL: @ 83EA60C - .string "A large ball of mud.\n" - .string "Crumbles if stepped\n" - .string "on.$" - -DecorDesc_BREAKABLE_DOOR: @ 83EA639 - .string "A weird door that\n" - .string "people can walk\n" - .string "right through.$" - -DecorDesc_SAND_ORNAMENT: @ 83EA66A - .string "An ornament made\n" - .string "of sand. Crumbles if\n" - .string "touched.$" - -DecorDesc_SILVER_SHIELD: @ 83EA699 - .string "Awarded for 50\n" - .string "straight wins at\n" - .string "the BATTLE TOWER.$" - -DecorDesc_GOLD_SHIELD: @ 83EA6CB - .string "Awarded for 100\n" - .string "straight wins at\n" - .string "the BATTLE TOWER.$" - -DecorDesc_GLASS_ORNAMENT: @ 83EA6FE - .string "A glass replica of\n" - .string "a famous sculpture\n" - .string "at the ART MUSEUM.$" - -DecorDesc_TV: @ 83EA737 - .string "A small, gray-\n" - .string "colored toy TV.$" - -DecorDesc_ROUND_TV: @ 83EA756 - .string "A toy TV modeled\n" - .string "in the image of a\n" - .string "SEEDOT.$" - -DecorDesc_CUTE_TV: @ 83EA781 - .string "A toy TV modeled\n" - .string "in the image of a\n" - .string "SKITTY.$" - -DecorDesc_GLITTER_MAT: @ 83EA7AC - .string "An odd mat that\n" - .string "glitters if stepped\n" - .string "on.$" - -DecorDesc_JUMP_MAT: @ 83EA7D4 - .string "A trick mat that\n" - .string "jumps when it is\n" - .string "stepped on.$" - -DecorDesc_SPIN_MAT: @ 83EA802 - .string "A trick mat that\n" - .string "spins around when\n" - .string "stepped on.$" - -DecorDesc_C_LOW_NOTE_MAT: @ 83EA831 - .string "A mat that plays\n" - .string "a low C note when\n" - .string "stepped on.$" - -DecorDesc_D_NOTE_MAT: @ 83EA860 - .string "A mat that plays\n" - .string "a D note when\n" - .string "stepped on.$" - -DecorDesc_E_NOTE_MAT: @ 83EA88B - .string "A mat that plays\n" - .string "an E note when\n" - .string "stepped on.$" - -DecorDesc_F_NOTE_MAT: @ 83EA8B7 - .string "A mat that plays\n" - .string "an F note when\n" - .string "stepped on.$" - -DecorDesc_G_NOTE_MAT: @ 83EA8E3 - .string "A mat that plays\n" - .string "a G note when\n" - .string "stepped on.$" - -DecorDesc_A_NOTE_MAT: @ 83EA90E - .string "A mat that plays\n" - .string "an A note when\n" - .string "stepped on.$" - -DecorDesc_B_NOTE_MAT: @ 83EA93A - .string "A mat that plays\n" - .string "a B note when\n" - .string "stepped on.$" - -DecorDesc_C_HIGH_NOTE_MAT: @ 83EA965 - .string "A mat that plays\n" - .string "a high C note when\n" - .string "stepped on.$" - -DecorDesc_SURF_MAT: @ 83EA995 - .string "A mat designed with\n" - .string "a SURF image.\n" - .string "Put items on top.$" - -DecorDesc_THUNDER_MAT: @ 83EA9C9 - .string "A mat designed with\n" - .string "a THUNDER image.\n" - .string "Put items on top.$" - -DecorDesc_FIRE_BLAST_MAT: @ 83EAA00 - .string "A mat designed with\n" - .string "a FIRE BLAST image.\n" - .string "Put items on top.$" - -DecorDesc_POWDER_SNOW_MAT: @ 83EAA3A - .string "A mat with a POWDER\n" - .string "SNOW image design.\n" - .string "Put items on top.$" - -DecorDesc_ATTRACT_MAT: @ 83EAA73 - .string "A mat designed with\n" - .string "an ATTRACT image.\n" - .string "Put items on top.$" - -DecorDesc_FISSURE_MAT: @ 83EAAAB - .string "A mat designed with\n" - .string "a FISSURE image.\n" - .string "Put items on top.$" - -DecorDesc_SPIKES_MAT: @ 83EAAE2 - .string "A mat designed with\n" - .string "a SPIKES image.\n" - .string "Put items on top.$" - -DecorDesc_BALL_POSTER: @ 83EAB18 - .string "A small poster\n" - .string "printed with POKé\n" - .string "BALLS.$" - -DecorDesc_GREEN_POSTER: @ 83EAB40 - .string "A small poster with\n" - .string "a TREECKO print.$" - -DecorDesc_RED_POSTER: @ 83EAB65 - .string "A small poster with\n" - .string "a TORCHIC print.$" - -DecorDesc_BLUE_POSTER: @ 83EAB8A - .string "A small poster with\n" - .string "a MUDKIP print.$" - -DecorDesc_CUTE_POSTER: @ 83EABAE - .string "A small poster with\n" - .string "an AZURILL print.$" - -DecorDesc_PIKA_POSTER: @ 83EABD4 - .string "A large poster with\n" - .string "a PIKACHU and\n" - .string "PICHU print.$" - -DecorDesc_LONG_POSTER: @ 83EAC03 - .string "A large poster with\n" - .string "a SEVIPER print.$" - -DecorDesc_SEA_POSTER: @ 83EAC28 - .string "A large poster with\n" - .string "a RELICANTH print.$" - -DecorDesc_SKY_POSTER: @ 83EAC4F - .string "A large poster with\n" - .string "a WINGULL print.$" - -DecorDesc_KISS_POSTER: @ 83EAC74 - .string "A large poster with\n" - .string "a SMOOCHUM print.$" - -DecorDesc_PICHU_DOLL: @ 83EAC9A - .string "A PICHU doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_PIKACHU_DOLL: @ 83EACC5 - .string "A PIKACHU doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_MARILL_DOLL: @ 83EACF2 - .string "A MARILL doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_TOGEPI_DOLL: @ 83EAD1E - .if REVISION >= 1 - .string "A TOGEPI doll.\n" - .else - .string "A TOPGEPI doll.\n" - .endif - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_CYNDAQUIL_DOLL: @ 83EAD4B - .string "A CYNDAQUIL doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_CHIKORITA_DOLL: @ 83EAD7A - .string "A CHIKORITA doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_TOTODILE_DOLL: @ 83EADA9 - .string "A TOTODILE doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_JIGGLYPUFF_DOLL: @ 83EADD7 - .string "A JIGGLYPUFF doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_MEOWTH_DOLL: @ 83EAE07 - .string "A MEOWTH doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_CLEFAIRY_DOLL: @ 83EAE33 - .string "A CLEFAIRY doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_DITTO_DOLL: @ 83EAE61 - .string "A DITTO doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_SMOOCHUM_DOLL: @ 83EAE8C - .string "A SMOOCHUM doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_TREECKO_DOLL: @ 83EAEBA - .string "A TREECKO doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_TORCHIC_DOLL: @ 83EAEE7 - .string "A TORCHIC doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_MUDKIP_DOLL: @ 83EAF14 - .string "A MUDKIP doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_DUSKULL_DOLL: @ 83EAF40 - .string "A DUSKULL doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_WYNAUT_DOLL: @ 83EAF6D - .string "A WYNAUT doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_BALTOY_DOLL: @ 83EAF99 - .string "A BALTOY doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_KECLEON_DOLL: @ 83EAFC5 - .string "A KECLEON doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_AZURILL_DOLL: @ 83EAFF2 - .string "An AZURILL doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_SKITTY_DOLL: @ 83EB020 - .string "A SKITTY doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_SWABLU_DOLL: @ 83EB04C - .string "A SWABLU doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_GULPIN_DOLL: @ 83EB078 - .string "A GULPIN doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_LOTAD_DOLL: @ 83EB0A4 - .string "A LOTAD doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_SEEDOT_DOLL: @ 83EB0CF - .string "A SEEDOT doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_PIKA_CUSHION: @ 83EB0FB - .string "A PIKACHU cushion.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_ROUND_CUSHION: @ 83EB12B - .string "A MARILL cushion.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_KISS_CUSHION: @ 83EB15A - .string "A SMOOCHUM\n" - .string "cushion. Place it on\n" - .string "a mat or a desk.$" - -DecorDesc_ZIGZAG_CUSHION: @ 83EB18B - .string "A ZIGZAGOON\n" - .string "cushion. Place it on\n" - .string "a mat or a desk.$" - -DecorDesc_SPIN_CUSHION: @ 83EB1BD - .string "A SPINDA cushion.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_DIAMOND_CUSHION: @ 83EB1EC - .string "A SABLEYE cushion.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_BALL_CUSHION: @ 83EB21C - .string "A BALL cushion.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_GRASS_CUSHION: @ 83EB249 - .string "A grass-mark\n" - .string "cushion. Place it on\n" - .string "a mat or a desk.$" - -DecorDesc_FIRE_CUSHION: @ 83EB27C - .string "A fire-mark\n" - .string "cushion. Place it on\n" - .string "a mat or a desk.$" - -DecorDesc_WATER_CUSHION: @ 83EB2AE - .string "A water-mark\n" - .string "cushion. Place it on\n" - .string "a mat or a desk.$" - -DecorDesc_SNORLAX_DOLL: @ 83EB2E1 - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_RHYDON_DOLL: @ 83EB30C - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_LAPRAS_DOLL: @ 83EB337 - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_VENUSAUR_DOLL: @ 83EB362 - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_CHARIZARD_DOLL: @ 83EB38D - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_BLASTOISE_DOLL: @ 83EB3B8 - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_WAILMER_DOLL: @ 83EB3E3 - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_REGIROCK_DOLL: @ 83EB40E - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_REGICE_DOLL: @ 83EB439 - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - -DecorDesc_REGISTEEL_DOLL: @ 83EB464 - .string "A large doll.\n" - .string "Place it on a mat\n" - .string "or a desk.$" - - .align 1 -DecorGfx_SMALL_DESK: @ 83EB490 - .2byte 0x87 - - .align 1 -DecorGfx_POKEMON_DESK: @ 83EB492 - .2byte 0x8F - - .align 1 -DecorGfx_HEAVY_DESK: @ 83EB494 - .2byte 0x90 - .2byte 0x91 - .2byte 0x92 - .2byte 0x98 - .2byte 0x99 - .2byte 0x9A - - .align 1 -DecorGfx_RAGGED_DESK: @ 83EB4A0 - .2byte 0x93 - .2byte 0x94 - .2byte 0x95 - .2byte 0x9B - .2byte 0x9C - .2byte 0x9D - - .align 1 -DecorGfx_COMFORT_DESK: @ 83EB4AC - .2byte 0x96 - .2byte 0x97 - .2byte 0xA3 - .2byte 0x9E - .2byte 0x9F - .2byte 0xAB - - .align 1 -DecorGfx_PRETTY_DESK: @ 83EB4B8 - .2byte 0xBD - .2byte 0xBE - .2byte 0xBF - .2byte 0xC5 - .2byte 0xC6 - .2byte 0xC7 - .2byte 0xCD - .2byte 0xCE - .2byte 0xCF - - .align 1 -DecorGfx_BRICK_DESK: @ 83EB4CA - .2byte 0xA0 - .2byte 0xA1 - .2byte 0xA2 - .2byte 0xA8 - .2byte 0xA9 - .2byte 0xAA - .2byte 0xB0 - .2byte 0xB1 - .2byte 0xB2 - - .align 1 -DecorGfx_CAMP_DESK: @ 83EB4DC - .2byte 0xA4 - .2byte 0xA5 - .2byte 0xA6 - .2byte 0xAC - .2byte 0xAD - .2byte 0xAE - .2byte 0xB4 - .2byte 0xB5 - .2byte 0xB6 - - .align 1 -DecorGfx_HARD_DESK: @ 83EB4EE - .2byte 0xA7 - .2byte 0xBB - .2byte 0xBC - .2byte 0xAF - .2byte 0xC3 - .2byte 0xC4 - .2byte 0xB7 - .2byte 0xCB - .2byte 0xCC - - .align 1 -DecorGfx_SMALL_CHAIR: @ 83EB500 - .2byte 0xB8 - - .align 1 -DecorGfx_POKEMON_CHAIR: @ 83EB502 - .2byte 0xB9 - - .align 1 -DecorGfx_HEAVY_CHAIR: @ 83EB504 - .2byte 0xBA - - .align 1 -DecorGfx_PRETTY_CHAIR: @ 83EB506 - .2byte 0xC0 - - .align 1 -DecorGfx_COMFORT_CHAIR: @ 83EB508 - .2byte 0xC1 - - .align 1 -DecorGfx_RAGGED_CHAIR: @ 83EB50A - .2byte 0xC2 - - .align 1 -DecorGfx_BRICK_CHAIR: @ 83EB50C - .2byte 0xC8 - - .align 1 -DecorGfx_CAMP_CHAIR: @ 83EB50E - .2byte 0xC9 - - .align 1 -DecorGfx_HARD_CHAIR: @ 83EB510 - .2byte 0xCA - - .align 1 -DecorGfx_RED_PLANT: @ 83EB512 - .2byte 0xD0 - .2byte 0xD8 - - .align 1 -DecorGfx_TROPICAL_PLANT: @ 83EB516 - .2byte 0xD2 - .2byte 0xDA - - .align 1 -DecorGfx_PRETTY_FLOWERS: @ 83EB51A - .2byte 0xD4 - .2byte 0xDC - - .align 1 -DecorGfx_COLORFUL_PLANT: @ 83EB51E - .2byte 0xE0 - .2byte 0xE2 - .2byte 0xE8 - .2byte 0xE9 - - .align 1 -DecorGfx_BIG_PLANT: @ 83EB526 - .2byte 0xE4 - .2byte 0xE6 - .2byte 0xEC - .2byte 0xED - - .align 1 -DecorGfx_GORGEOUS_PLANT: @ 83EB52E - .2byte 0xF0 - .2byte 0xF2 - .2byte 0xF8 - .2byte 0xF9 - - .align 1 -DecorGfx_RED_BRICK: @ 83EB536 - .2byte 0x25 - .2byte 0x2D - - .align 1 -DecorGfx_YELLOW_BRICK: @ 83EB53A - .2byte 0x26 - .2byte 0x2E - - .align 1 -DecorGfx_BLUE_BRICK: @ 83EB53E - .2byte 0x27 - .2byte 0x2F - - .align 1 -DecorGfx_RED_BALLOON: @ 83EB542 - .2byte 0x138 - - .align 1 -DecorGfx_BLUE_BALLOON: @ 83EB544 - .2byte 0x13C - - .align 1 -DecorGfx_YELLOW_BALLOON: @ 83EB546 - .2byte 0x140 - - .align 1 -DecorGfx_RED_TENT: @ 83EB548 - .2byte 0x30 - .2byte 0x31 - .2byte 0x32 - .2byte 0x38 - .2byte 0x39 - .2byte 0x3A - .2byte 0x40 - .2byte 0x41 - .2byte 0x3B - - .align 1 -DecorGfx_BLUE_TENT: @ 83EB55A - .2byte 0x48 - .2byte 0x49 - .2byte 0x68 - .2byte 0x50 - .2byte 0x51 - .2byte 0x70 - .2byte 0x58 - .2byte 0x59 - .2byte 0x69 - - .align 1 -DecorGfx_SOLID_BOARD: @ 83EB56C - .2byte 0x34 - .2byte 0x3C - - .align 1 -DecorGfx_SLIDE: @ 83EB570 - .2byte 0x35 - .2byte 0x36 - .2byte 0x3D - .2byte 0x3E - .2byte 0x63 - .2byte 0x64 - .2byte 0x6F - .2byte 0x77 - - .align 1 -DecorGfx_FENCE_LENGTH: @ 83EB580 - .2byte 0x33 - - .align 1 -DecorGfx_FENCE_WIDTH: @ 83EB582 - .2byte 0x2C - - .align 1 -DecorGfx_TIRE: @ 83EB584 - .2byte 0x80 - .2byte 0x81 - .2byte 0x88 - .2byte 0x89 - - .align 1 -DecorGfx_STAND: @ 83EB58C - .2byte 0x6A - .2byte 0x6B - .2byte 0x6C - .2byte 0x6D - .2byte 0x72 - .2byte 0x73 - .2byte 0x74 - .2byte 0x75 - - .align 1 -DecorGfx_MUD_BALL: @ 83EB59C - .2byte 0x28 - - .align 1 -DecorGfx_BREAKABLE_DOOR: @ 83EB59E - .2byte 0x37 - .2byte 0x3F - - .align 1 -DecorGfx_SAND_ORNAMENT: @ 83EB5A2 - .2byte 0x85 - .2byte 0x8D - - .align 1 -DecorGfx_SILVER_SHIELD: @ 83EB5A6 - .2byte 0xD6 - .2byte 0xDE - - .align 1 -DecorGfx_GOLD_SHIELD: @ 83EB5AA - .2byte 0x12E - .2byte 0x136 - - .align 1 -DecorGfx_GLASS_ORNAMENT: @ 83EB5AE - .2byte 0x82 - .2byte 0x8A - - .align 1 -DecorGfx_TV: @ 83EB5B2 - .2byte 0xF4 - - .align 1 -DecorGfx_ROUND_TV: @ 83EB5B4 - .2byte 0xF5 - - .align 1 -DecorGfx_CUTE_TV: @ 83EB5B6 - .2byte 0xF6 - - .align 1 -DecorGfx_GLITTER_MAT: @ 83EB5B8 - .2byte 0x60 - - .align 1 -DecorGfx_JUMP_MAT: @ 83EB5BA - .2byte 0x61 - - .align 1 -DecorGfx_SPIN_MAT: @ 83EB5BC - .2byte 0x62 - - .align 1 -DecorGfx_C_LOW_NOTE_MAT: @ 83EB5BE - .2byte 0x78 - - .align 1 -DecorGfx_D_NOTE_MAT: @ 83EB5C0 - .2byte 0x79 - - .align 1 -DecorGfx_E_NOTE_MAT: @ 83EB5C2 - .2byte 0x7A - - .align 1 -DecorGfx_F_NOTE_MAT: @ 83EB5C4 - .2byte 0x7B - - .align 1 -DecorGfx_G_NOTE_MAT: @ 83EB5C6 - .2byte 0x7C - - .align 1 -DecorGfx_A_NOTE_MAT: @ 83EB5C8 - .2byte 0x7D - - .align 1 -DecorGfx_B_NOTE_MAT: @ 83EB5CA - .2byte 0x7E - - .align 1 -DecorGfx_C_HIGH_NOTE_MAT: @ 83EB5CC - .2byte 0xB3 - - .align 1 -DecorGfx_SURF_MAT: @ 83EB5CE - .2byte 0x42 - .2byte 0x43 - .2byte 0x44 - .2byte 0x4A - .2byte 0x4B - .2byte 0x4C - .2byte 0x52 - .2byte 0x53 - .2byte 0x54 - - .align 1 -DecorGfx_THUNDER_MAT: @ 83EB5E0 - .2byte 0x45 - .2byte 0x46 - .2byte 0x47 - .2byte 0x4D - .2byte 0x4E - .2byte 0x4F - .2byte 0x55 - .2byte 0x56 - .2byte 0x57 - - .align 1 -DecorGfx_FIRE_BLAST_MAT: @ 83EB5F2 - .2byte 0x5A - .2byte 0x5B - .2byte 0x5C - .2byte 0x5D - .2byte 0x5E - .2byte 0x5F - .2byte 0x65 - .2byte 0x66 - .2byte 0x67 - - .align 1 -DecorGfx_POWDER_SNOW_MAT: @ 83EB604 - .2byte 0x100 - .2byte 0x101 - .2byte 0x102 - .2byte 0x108 - .2byte 0x109 - .2byte 0x10A - .2byte 0x110 - .2byte 0x111 - .2byte 0x112 - - .align 1 -DecorGfx_ATTRACT_MAT: @ 83EB616 - .2byte 0x103 - .2byte 0x104 - .2byte 0x105 - .2byte 0x10B - .2byte 0x10C - .2byte 0x10D - .2byte 0x113 - .2byte 0x114 - .2byte 0x115 - - .align 1 -DecorGfx_FISSURE_MAT: @ 83EB628 - .2byte 0x106 - .2byte 0x107 - .2byte 0x118 - .2byte 0x10E - .2byte 0x10F - .2byte 0x120 - .2byte 0x116 - .2byte 0x117 - .2byte 0x128 - - .align 1 -DecorGfx_SPIKES_MAT: @ 83EB63A - .2byte 0x119 - .2byte 0x11A - .2byte 0x11B - .2byte 0x121 - .2byte 0x122 - .2byte 0x123 - .2byte 0x129 - .2byte 0x12A - .2byte 0x12B - - .align 1 -DecorGfx_BALL_POSTER: @ 83EB64C - .2byte 0x130 - - .align 1 -DecorGfx_GREEN_POSTER: @ 83EB64E - .2byte 0x131 - - .align 1 -DecorGfx_RED_POSTER: @ 83EB650 - .2byte 0x132 - - .align 1 -DecorGfx_BLUE_POSTER: @ 83EB652 - .2byte 0x133 - - .align 1 -DecorGfx_CUTE_POSTER: @ 83EB654 - .2byte 0x134 - - .align 1 -DecorGfx_PIKA_POSTER: @ 83EB656 - .2byte 0x11C - .2byte 0x11D - - .align 1 -DecorGfx_LONG_POSTER: @ 83EB65A - .2byte 0x11E - .2byte 0x11F - - .align 1 -DecorGfx_SEA_POSTER: @ 83EB65E - .2byte 0x124 - .2byte 0x125 - - .align 1 -DecorGfx_SKY_POSTER: @ 83EB662 - .2byte 0x126 - .2byte 0x127 - - .align 1 -DecorGfx_KISS_POSTER: @ 83EB666 - .2byte 0x12C - .2byte 0x12D - - .align 1 -DecorGfx_PICHU_DOLL: @ 83EB66A - .2byte MAP_OBJ_GFX_PICHU_DOLL - - .align 1 -DecorGfx_PIKACHU_DOLL: @ 83EB66C - .2byte MAP_OBJ_GFX_PIKACHU_DOLL - - .align 1 -DecorGfx_MARILL_DOLL: @ 83EB66E - .2byte MAP_OBJ_GFX_MARILL_DOLL - - .align 1 -DecorGfx_TOGEPI_DOLL: @ 83EB670 - .2byte MAP_OBJ_GFX_TOGEPI_DOLL - - .align 1 -DecorGfx_CYNDAQUIL_DOLL: @ 83EB672 - .2byte MAP_OBJ_GFX_CYNDAQUIL_DOLL - - .align 1 -DecorGfx_CHIKORITA_DOLL: @ 83EB674 - .2byte MAP_OBJ_GFX_CHIKORITA_DOLL - - .align 1 -DecorGfx_TOTODILE_DOLL: @ 83EB676 - .2byte MAP_OBJ_GFX_TOTODILE_DOLL - - .align 1 -DecorGfx_JIGGLYPUFF_DOLL: @ 83EB678 - .2byte MAP_OBJ_GFX_JIGGLYPUFF_DOLL - - .align 1 -DecorGfx_MEOWTH_DOLL: @ 83EB67A - .2byte MAP_OBJ_GFX_MEOWTH_DOLL - - .align 1 -DecorGfx_CLEFAIRY_DOLL: @ 83EB67C - .2byte MAP_OBJ_GFX_CLEFAIRY_DOLL - - .align 1 -DecorGfx_DITTO_DOLL: @ 83EB67E - .2byte MAP_OBJ_GFX_DITTO_DOLL - - .align 1 -DecorGfx_SMOOCHUM_DOLL: @ 83EB680 - .2byte MAP_OBJ_GFX_SMOOCHUM_DOLL - - .align 1 -DecorGfx_TREECKO_DOLL: @ 83EB682 - .2byte MAP_OBJ_GFX_TREECKO_DOLL - - .align 1 -DecorGfx_TORCHIC_DOLL: @ 83EB684 - .2byte MAP_OBJ_GFX_TORCHIC_DOLL - - .align 1 -DecorGfx_MUDKIP_DOLL: @ 83EB686 - .2byte MAP_OBJ_GFX_MUDKIP_DOLL - - .align 1 -DecorGfx_DUSKULL_DOLL: @ 83EB688 - .2byte MAP_OBJ_GFX_DUSKULL_DOLL - - .align 1 -DecorGfx_WYNAUT_DOLL: @ 83EB68A - .2byte MAP_OBJ_GFX_WYNAUT_DOLL - - .align 1 -DecorGfx_BALTOY_DOLL: @ 83EB68C - .2byte MAP_OBJ_GFX_BALTOY_DOLL - - .align 1 -DecorGfx_KECLEON_DOLL: @ 83EB68E - .2byte MAP_OBJ_GFX_KECLEON_DOLL - - .align 1 -DecorGfx_AZURILL_DOLL: @ 83EB690 - .2byte MAP_OBJ_GFX_AZURILL_DOLL - - .align 1 -DecorGfx_SKITTY_DOLL: @ 83EB692 - .2byte MAP_OBJ_GFX_SKITTY_DOLL - - .align 1 -DecorGfx_SWABLU_DOLL: @ 83EB694 - .2byte MAP_OBJ_GFX_SWABLU_DOLL - - .align 1 -DecorGfx_GULPIN_DOLL: @ 83EB696 - .2byte MAP_OBJ_GFX_GULPIN_DOLL - - .align 1 -DecorGfx_LOTAD_DOLL: @ 83EB698 - .2byte MAP_OBJ_GFX_LOTAD_DOLL - - .align 1 -DecorGfx_SEEDOT_DOLL: @ 83EB69A - .2byte MAP_OBJ_GFX_SEEDOT_DOLL - - .align 1 -DecorGfx_PIKA_CUSHION: @ 83EB69C - .2byte MAP_OBJ_GFX_PIKA_CUSHION - - .align 1 -DecorGfx_ROUND_CUSHION: @ 83EB69E - .2byte MAP_OBJ_GFX_ROUND_CUSHION - - .align 1 -DecorGfx_KISS_CUSHION: @ 83EB6A0 - .2byte MAP_OBJ_GFX_KISS_CUSHION - - .align 1 -DecorGfx_ZIGZAG_CUSHION: @ 83EB6A2 - .2byte MAP_OBJ_GFX_ZIGZAG_CUSHION - - .align 1 -DecorGfx_SPIN_CUSHION: @ 83EB6A4 - .2byte MAP_OBJ_GFX_SPIN_CUSHION - - .align 1 -DecorGfx_DIAMOND_CUSHION: @ 83EB6A6 - .2byte MAP_OBJ_GFX_DIAMOND_CUSHION - - .align 1 -DecorGfx_BALL_CUSHION: @ 83EB6A8 - .2byte MAP_OBJ_GFX_BALL_CUSHION - - .align 1 -DecorGfx_GRASS_CUSHION: @ 83EB6AA - .2byte MAP_OBJ_GFX_GRASS_CUSHION - - .align 1 -DecorGfx_FIRE_CUSHION: @ 83EB6AC - .2byte MAP_OBJ_GFX_FIRE_CUSHION - - .align 1 -DecorGfx_WATER_CUSHION: @ 83EB6AE - .2byte MAP_OBJ_GFX_WATER_CUSHION - - .align 1 -DecorGfx_SNORLAX_DOLL: @ 83EB6B0 - .2byte MAP_OBJ_GFX_BIG_SNORLAX_DOLL - - .align 1 -DecorGfx_RHYDON_DOLL: @ 83EB6B2 - .2byte MAP_OBJ_GFX_BIG_RHYDON_DOLL - - .align 1 -DecorGfx_LAPRAS_DOLL: @ 83EB6B4 - .2byte MAP_OBJ_GFX_BIG_LAPRAS_DOLL - - .align 1 -DecorGfx_VENUSAUR_DOLL: @ 83EB6B6 - .2byte MAP_OBJ_GFX_BIG_VENUSAUR_DOLL - - .align 1 -DecorGfx_CHARIZARD_DOLL: @ 83EB6B8 - .2byte MAP_OBJ_GFX_BIG_CHARIZARD_DOLL - - .align 1 -DecorGfx_BLASTOISE_DOLL: @ 83EB6BA - .2byte MAP_OBJ_GFX_BIG_BLASTOISE_DOLL - - .align 1 -DecorGfx_WAILMER_DOLL: @ 83EB6BC - .2byte MAP_OBJ_GFX_BIG_WAILMER_DOLL - - .align 1 -DecorGfx_REGIROCK_DOLL: @ 83EB6BE - .2byte MAP_OBJ_GFX_BIG_REGIROCK_DOLL - - .align 1 -DecorGfx_REGICE_DOLL: @ 83EB6C0 - .2byte MAP_OBJ_GFX_BIG_REGICE_DOLL - - .align 1 -DecorGfx_REGISTEEL_DOLL: @ 83EB6C2 - .2byte MAP_OBJ_GFX_BIG_REGISTEEL_DOLL - - .align 2 -gDecorations:: @ 83EB6C4 - .byte DECOR_NONE - .string "SMALL DESK$", 16 - .byte 0 - .byte 0 - .byte 0 - .2byte 0 - .space 2 - .4byte DecorDesc_SMALL_DESK - .4byte DecorGfx_SMALL_DESK - - .byte DECOR_SMALL_DESK - .string "SMALL DESK$", 16 - .byte 0 - .byte 0 - .byte 0 - .2byte 3000 - .space 2 - .4byte DecorDesc_SMALL_DESK - .4byte DecorGfx_SMALL_DESK - - .byte DECOR_POKEMON_DESK - .string "POKéMON DESK$", 16 - .byte 0 - .byte 0 - .byte 0 - .2byte 3000 - .space 2 - .4byte DecorDesc_POKEMON_DESK - .4byte DecorGfx_POKEMON_DESK - - .byte DECOR_HEAVY_DESK - .string "HEAVY DESK$", 16 - .byte 0 - .byte 9 - .byte 0 - .2byte 6000 - .space 2 - .4byte DecorDesc_HEAVY_DESK - .4byte DecorGfx_HEAVY_DESK - - .byte DECOR_RAGGED_DESK - .string "RAGGED DESK$", 16 - .byte 0 - .byte 9 - .byte 0 - .2byte 6000 - .space 2 - .4byte DecorDesc_RAGGED_DESK - .4byte DecorGfx_RAGGED_DESK - - .byte DECOR_COMFORT_DESK - .string "COMFORT DESK$", 16 - .byte 0 - .byte 9 - .byte 0 - .2byte 6000 - .space 2 - .4byte DecorDesc_COMFORT_DESK - .4byte DecorGfx_COMFORT_DESK - - .byte DECOR_PRETTY_DESK - .string "PRETTY DESK$", 16 - .byte 0 - .byte 8 - .byte 0 - .2byte 9000 - .space 2 - .4byte DecorDesc_PRETTY_DESK - .4byte DecorGfx_PRETTY_DESK - - .byte DECOR_BRICK_DESK - .string "BRICK DESK$", 16 - .byte 0 - .byte 8 - .byte 0 - .2byte 9000 - .space 2 - .4byte DecorDesc_BRICK_DESK - .4byte DecorGfx_BRICK_DESK - - .byte DECOR_CAMP_DESK - .string "CAMP DESK$", 16 - .byte 0 - .byte 8 - .byte 0 - .2byte 9000 - .space 2 - .4byte DecorDesc_CAMP_DESK - .4byte DecorGfx_CAMP_DESK - - .byte DECOR_HARD_DESK - .string "HARD DESK$", 16 - .byte 0 - .byte 8 - .byte 0 - .2byte 9000 - .space 2 - .4byte DecorDesc_HARD_DESK - .4byte DecorGfx_HARD_DESK - - .byte DECOR_SMALL_CHAIR - .string "SMALL CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_SMALL_CHAIR - .4byte DecorGfx_SMALL_CHAIR - - .byte DECOR_POKEMON_CHAIR - .string "POKéMON CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_POKEMON_CHAIR - .4byte DecorGfx_POKEMON_CHAIR - - .byte DECOR_HEAVY_CHAIR - .string "HEAVY CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_HEAVY_CHAIR - .4byte DecorGfx_HEAVY_CHAIR - - .byte DECOR_PRETTY_CHAIR - .string "PRETTY CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_PRETTY_CHAIR - .4byte DecorGfx_PRETTY_CHAIR - - .byte DECOR_COMFORT_CHAIR - .string "COMFORT CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_COMFORT_CHAIR - .4byte DecorGfx_COMFORT_CHAIR - - .byte DECOR_RAGGED_CHAIR - .string "RAGGED CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_RAGGED_CHAIR - .4byte DecorGfx_RAGGED_CHAIR - - .byte DECOR_BRICK_CHAIR - .string "BRICK CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_BRICK_CHAIR - .4byte DecorGfx_BRICK_CHAIR - - .byte DECOR_CAMP_CHAIR - .string "CAMP CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_CAMP_CHAIR - .4byte DecorGfx_CAMP_CHAIR - - .byte DECOR_HARD_CHAIR - .string "HARD CHAIR$", 16 - .byte 1 - .byte 0 - .byte 1 - .2byte 2000 - .space 2 - .4byte DecorDesc_HARD_CHAIR - .4byte DecorGfx_HARD_CHAIR - - .byte DECOR_RED_PLANT - .string "RED PLANT$", 16 - .byte 2 - .byte 5 - .byte 2 - .2byte 3000 - .space 2 - .4byte DecorDesc_RED_PLANT - .4byte DecorGfx_RED_PLANT - - .byte DECOR_TROPICAL_PLANT - .string "TROPICAL PLANT$", 16 - .byte 2 - .byte 5 - .byte 2 - .2byte 3000 - .space 2 - .4byte DecorDesc_TROPICAL_PLANT - .4byte DecorGfx_TROPICAL_PLANT - - .byte DECOR_PRETTY_FLOWERS - .string "PRETTY FLOWERS$", 16 - .byte 2 - .byte 5 - .byte 2 - .2byte 3000 - .space 2 - .4byte DecorDesc_PRETTY_FLOWERS - .4byte DecorGfx_PRETTY_FLOWERS - - .byte DECOR_COLORFUL_PLANT - .string "COLORFUL PLANT$", 16 - .byte 2 - .byte 4 - .byte 2 - .2byte 5000 - .space 2 - .4byte DecorDesc_COLORFUL_PLANT - .4byte DecorGfx_COLORFUL_PLANT - - .byte DECOR_BIG_PLANT - .string "BIG PLANT$", 16 - .byte 2 - .byte 4 - .byte 2 - .2byte 5000 - .space 2 - .4byte DecorDesc_BIG_PLANT - .4byte DecorGfx_BIG_PLANT - - .byte DECOR_GORGEOUS_PLANT - .string "GORGEOUS PLANT$", 16 - .byte 2 - .byte 4 - .byte 2 - .2byte 5000 - .space 2 - .4byte DecorDesc_GORGEOUS_PLANT - .4byte DecorGfx_GORGEOUS_PLANT - - .byte DECOR_RED_BRICK - .string "RED BRICK$", 16 - .byte 0 - .byte 5 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_RED_BRICK - .4byte DecorGfx_RED_BRICK - - .byte DECOR_YELLOW_BRICK - .string "YELLOW BRICK$", 16 - .byte 0 - .byte 5 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_YELLOW_BRICK - .4byte DecorGfx_YELLOW_BRICK - - .byte DECOR_BLUE_BRICK - .string "BLUE BRICK$", 16 - .byte 0 - .byte 5 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_BLUE_BRICK - .4byte DecorGfx_BLUE_BRICK - - .byte DECOR_RED_BALLOON - .string "RED BALLOON$", 16 - .byte 1 - .byte 0 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_RED_BALLOON - .4byte DecorGfx_RED_BALLOON - - .byte DECOR_BLUE_BALLOON - .string "BLUE BALLOON$", 16 - .byte 1 - .byte 0 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_BLUE_BALLOON - .4byte DecorGfx_BLUE_BALLOON - - .byte DECOR_YELLOW_BALLOON - .string "YELLOW BALLOON$", 16 - .byte 1 - .byte 0 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_YELLOW_BALLOON - .4byte DecorGfx_YELLOW_BALLOON - - .byte DECOR_RED_TENT - .string "RED TENT$", 16 - .byte 1 - .byte 8 - .byte 3 - .2byte 10000 - .space 2 - .4byte DecorDesc_RED_TENT - .4byte DecorGfx_RED_TENT - - .byte DECOR_BLUE_TENT - .string "BLUE TENT$", 16 - .byte 1 - .byte 8 - .byte 3 - .2byte 10000 - .space 2 - .4byte DecorDesc_BLUE_TENT - .4byte DecorGfx_BLUE_TENT - - .byte DECOR_SOLID_BOARD - .string "SOLID BOARD$", 16 - .byte 1 - .byte 5 - .byte 3 - .2byte 3000 - .space 2 - .4byte DecorDesc_SOLID_BOARD - .4byte DecorGfx_SOLID_BOARD - - .byte DECOR_SLIDE - .string "SLIDE$", 16 - .byte 1 - .byte 7 - .byte 3 - .2byte 8000 - .space 2 - .4byte DecorDesc_SLIDE - .4byte DecorGfx_SLIDE - - .byte DECOR_FENCE_LENGTH - .string "FENCE LENGTH$", 16 - .byte 0 - .byte 0 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_FENCE_LENGTH - .4byte DecorGfx_FENCE_LENGTH - - .byte DECOR_FENCE_WIDTH - .string "FENCE WIDTH$", 16 - .byte 0 - .byte 0 - .byte 3 - .2byte 500 - .space 2 - .4byte DecorDesc_FENCE_WIDTH - .4byte DecorGfx_FENCE_WIDTH - - .byte DECOR_TIRE - .string "TIRE$", 16 - .byte 0 - .byte 4 - .byte 3 - .2byte 800 - .space 2 - .4byte DecorDesc_TIRE - .4byte DecorGfx_TIRE - - .byte DECOR_STAND - .string "STAND$", 16 - .byte 1 - .byte 3 - .byte 3 - .2byte 7000 - .space 2 - .4byte DecorDesc_STAND - .4byte DecorGfx_STAND - - .byte DECOR_MUD_BALL - .string "MUD BALL$", 16 - .byte 1 - .byte 0 - .byte 3 - .2byte 200 - .space 2 - .4byte DecorDesc_MUD_BALL - .4byte DecorGfx_MUD_BALL - - .byte DECOR_BREAKABLE_DOOR - .string "BREAKABLE DOOR$", 16 - .byte 1 - .byte 5 - .byte 3 - .2byte 3000 - .space 2 - .4byte DecorDesc_BREAKABLE_DOOR - .4byte DecorGfx_BREAKABLE_DOOR - - .byte DECOR_SAND_ORNAMENT - .string "SAND ORNAMENT$", 16 - .byte 2 - .byte 5 - .byte 3 - .2byte 3000 - .space 2 - .4byte DecorDesc_SAND_ORNAMENT - .4byte DecorGfx_SAND_ORNAMENT - - .byte DECOR_SILVER_SHIELD - .string "SILVER SHIELD$", 16 - .byte 2 - .byte 5 - .byte 3 - .2byte 0 - .space 2 - .4byte DecorDesc_SILVER_SHIELD - .4byte DecorGfx_SILVER_SHIELD - - .byte DECOR_GOLD_SHIELD - .string "GOLD SHIELD$", 16 - .byte 2 - .byte 5 - .byte 3 - .2byte 0 - .space 2 - .4byte DecorDesc_GOLD_SHIELD - .4byte DecorGfx_GOLD_SHIELD - - .byte DECOR_GLASS_ORNAMENT - .string "GLASS ORNAMENT$", 16 - .byte 2 - .byte 5 - .byte 3 - .2byte 0 - .space 2 - .4byte DecorDesc_GLASS_ORNAMENT - .4byte DecorGfx_GLASS_ORNAMENT - - .byte DECOR_TV - .string "TV$", 16 - .byte 0 - .byte 0 - .byte 3 - .2byte 3000 - .space 2 - .4byte DecorDesc_TV - .4byte DecorGfx_TV - - .byte DECOR_ROUND_TV - .string "ROUND TV$", 16 - .byte 0 - .byte 0 - .byte 3 - .2byte 4000 - .space 2 - .4byte DecorDesc_ROUND_TV - .4byte DecorGfx_ROUND_TV - - .byte DECOR_CUTE_TV - .string "CUTE TV$", 16 - .byte 0 - .byte 0 - .byte 3 - .2byte 4000 - .space 2 - .4byte DecorDesc_CUTE_TV - .4byte DecorGfx_CUTE_TV - - .byte DECOR_GLITTER_MAT - .string "GLITTER MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 2000 - .space 2 - .4byte DecorDesc_GLITTER_MAT - .4byte DecorGfx_GLITTER_MAT - - .byte DECOR_JUMP_MAT - .string "JUMP MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 2000 - .space 2 - .4byte DecorDesc_JUMP_MAT - .4byte DecorGfx_JUMP_MAT - - .byte DECOR_SPIN_MAT - .string "SPIN MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 2000 - .space 2 - .4byte DecorDesc_SPIN_MAT - .4byte DecorGfx_SPIN_MAT - - .byte DECOR_C_LOW_NOTE_MAT - .string "C Low NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_C_LOW_NOTE_MAT - .4byte DecorGfx_C_LOW_NOTE_MAT - - .byte DECOR_D_NOTE_MAT - .string "D NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_D_NOTE_MAT - .4byte DecorGfx_D_NOTE_MAT - - .byte DECOR_E_NOTE_MAT - .string "E NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_E_NOTE_MAT - .4byte DecorGfx_E_NOTE_MAT - - .byte DECOR_F_NOTE_MAT - .string "F NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_F_NOTE_MAT - .4byte DecorGfx_F_NOTE_MAT - - .byte DECOR_G_NOTE_MAT - .string "G NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_G_NOTE_MAT - .4byte DecorGfx_G_NOTE_MAT - - .byte DECOR_A_NOTE_MAT - .string "A NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_A_NOTE_MAT - .4byte DecorGfx_A_NOTE_MAT - - .byte DECOR_B_NOTE_MAT - .string "B NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_B_NOTE_MAT - .4byte DecorGfx_B_NOTE_MAT - - .byte DECOR_C_HIGH_NOTE_MAT - .string "C High NOTE MAT$", 16 - .byte 1 - .byte 0 - .byte 4 - .2byte 500 - .space 2 - .4byte DecorDesc_C_HIGH_NOTE_MAT - .4byte DecorGfx_C_HIGH_NOTE_MAT - - .byte DECOR_SURF_MAT - .string "SURF MAT$", 16 - .byte 1 - .byte 8 - .byte 4 - .2byte 4000 - .space 2 - .4byte DecorDesc_SURF_MAT - .4byte DecorGfx_SURF_MAT - - .byte DECOR_THUNDER_MAT - .string "THUNDER MAT$", 16 - .byte 1 - .byte 8 - .byte 4 - .2byte 4000 - .space 2 - .4byte DecorDesc_THUNDER_MAT - .4byte DecorGfx_THUNDER_MAT - - .byte DECOR_FIRE_BLAST_MAT - .string "FIRE BLAST MAT$", 16 - .byte 1 - .byte 8 - .byte 4 - .2byte 4000 - .space 2 - .4byte DecorDesc_FIRE_BLAST_MAT - .4byte DecorGfx_FIRE_BLAST_MAT - - .byte DECOR_POWDER_SNOW_MAT - .string "POWDER SNOW MAT$", 16 - .byte 1 - .byte 8 - .byte 4 - .2byte 4000 - .space 2 - .4byte DecorDesc_POWDER_SNOW_MAT - .4byte DecorGfx_POWDER_SNOW_MAT - - .byte DECOR_ATTRACT_MAT - .string "ATTRACT MAT$", 16 - .byte 1 - .byte 8 - .byte 4 - .2byte 4000 - .space 2 - .4byte DecorDesc_ATTRACT_MAT - .4byte DecorGfx_ATTRACT_MAT - - .byte DECOR_FISSURE_MAT - .string "FISSURE MAT$", 16 - .byte 1 - .byte 8 - .byte 4 - .2byte 4000 - .space 2 - .4byte DecorDesc_FISSURE_MAT - .4byte DecorGfx_FISSURE_MAT - - .byte DECOR_SPIKES_MAT - .string "SPIKES MAT$", 16 - .byte 1 - .byte 8 - .byte 4 - .2byte 4000 - .space 2 - .4byte DecorDesc_SPIKES_MAT - .4byte DecorGfx_SPIKES_MAT - - .byte DECOR_BALL_POSTER - .string "BALL POSTER$", 16 - .byte 3 - .byte 0 - .byte 5 - .2byte 1000 - .space 2 - .4byte DecorDesc_BALL_POSTER - .4byte DecorGfx_BALL_POSTER - - .byte DECOR_GREEN_POSTER - .string "GREEN POSTER$", 16 - .byte 3 - .byte 0 - .byte 5 - .2byte 1000 - .space 2 - .4byte DecorDesc_GREEN_POSTER - .4byte DecorGfx_GREEN_POSTER - - .byte DECOR_RED_POSTER - .string "RED POSTER$", 16 - .byte 3 - .byte 0 - .byte 5 - .2byte 1000 - .space 2 - .4byte DecorDesc_RED_POSTER - .4byte DecorGfx_RED_POSTER - - .byte DECOR_BLUE_POSTER - .string "BLUE POSTER$", 16 - .byte 3 - .byte 0 - .byte 5 - .2byte 1000 - .space 2 - .4byte DecorDesc_BLUE_POSTER - .4byte DecorGfx_BLUE_POSTER - - .byte DECOR_CUTE_POSTER - .string "CUTE POSTER$", 16 - .byte 3 - .byte 0 - .byte 5 - .2byte 1000 - .space 2 - .4byte DecorDesc_CUTE_POSTER - .4byte DecorGfx_CUTE_POSTER - - .byte DECOR_PIKA_POSTER - .string "PIKA POSTER$", 16 - .byte 3 - .byte 1 - .byte 5 - .2byte 1500 - .space 2 - .4byte DecorDesc_PIKA_POSTER - .4byte DecorGfx_PIKA_POSTER - - .byte DECOR_LONG_POSTER - .string "LONG POSTER$", 16 - .byte 3 - .byte 1 - .byte 5 - .2byte 1500 - .space 2 - .4byte DecorDesc_LONG_POSTER - .4byte DecorGfx_LONG_POSTER - - .byte DECOR_SEA_POSTER - .string "SEA POSTER$", 16 - .byte 3 - .byte 1 - .byte 5 - .2byte 1500 - .space 2 - .4byte DecorDesc_SEA_POSTER - .4byte DecorGfx_SEA_POSTER - - .byte DECOR_SKY_POSTER - .string "SKY POSTER$", 16 - .byte 3 - .byte 1 - .byte 5 - .2byte 1500 - .space 2 - .4byte DecorDesc_SKY_POSTER - .4byte DecorGfx_SKY_POSTER - - .byte DECOR_KISS_POSTER - .string "KISS POSTER$", 16 - .byte 3 - .byte 1 - .byte 5 - .2byte 1500 - .space 2 - .4byte DecorDesc_KISS_POSTER - .4byte DecorGfx_KISS_POSTER - - .byte DECOR_PICHU_DOLL - .string "PICHU DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_PICHU_DOLL - .4byte DecorGfx_PICHU_DOLL - - .byte DECOR_PIKACHU_DOLL - .string "PIKACHU DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_PIKACHU_DOLL - .4byte DecorGfx_PIKACHU_DOLL - - .byte DECOR_MARILL_DOLL - .string "MARILL DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_MARILL_DOLL - .4byte DecorGfx_MARILL_DOLL - - .byte DECOR_TOGEPI_DOLL - .string "TOGEPI DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_TOGEPI_DOLL - .4byte DecorGfx_TOGEPI_DOLL - - .byte DECOR_CYNDAQUIL_DOLL - .string "CYNDAQUIL DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_CYNDAQUIL_DOLL - .4byte DecorGfx_CYNDAQUIL_DOLL - - .byte DECOR_CHIKORITA_DOLL - .string "CHIKORITA DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_CHIKORITA_DOLL - .4byte DecorGfx_CHIKORITA_DOLL - - .byte DECOR_TOTODILE_DOLL - .string "TOTODILE DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_TOTODILE_DOLL - .4byte DecorGfx_TOTODILE_DOLL - - .byte DECOR_JIGGLYPUFF_DOLL - .string "JIGGLYPUFF DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_JIGGLYPUFF_DOLL - .4byte DecorGfx_JIGGLYPUFF_DOLL - - .byte DECOR_MEOWTH_DOLL - .string "MEOWTH DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_MEOWTH_DOLL - .4byte DecorGfx_MEOWTH_DOLL - - .byte DECOR_CLEFAIRY_DOLL - .string "CLEFAIRY DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_CLEFAIRY_DOLL - .4byte DecorGfx_CLEFAIRY_DOLL - - .byte DECOR_DITTO_DOLL - .string "DITTO DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_DITTO_DOLL - .4byte DecorGfx_DITTO_DOLL - - .byte DECOR_SMOOCHUM_DOLL - .string "SMOOCHUM DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_SMOOCHUM_DOLL - .4byte DecorGfx_SMOOCHUM_DOLL - - .byte DECOR_TREECKO_DOLL - .string "TREECKO DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_TREECKO_DOLL - .4byte DecorGfx_TREECKO_DOLL - - .byte DECOR_TORCHIC_DOLL - .string "TORCHIC DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_TORCHIC_DOLL - .4byte DecorGfx_TORCHIC_DOLL - - .byte DECOR_MUDKIP_DOLL - .string "MUDKIP DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_MUDKIP_DOLL - .4byte DecorGfx_MUDKIP_DOLL - - .byte DECOR_DUSKULL_DOLL - .string "DUSKULL DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_DUSKULL_DOLL - .4byte DecorGfx_DUSKULL_DOLL - - .byte DECOR_WYNAUT_DOLL - .string "WYNAUT DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_WYNAUT_DOLL - .4byte DecorGfx_WYNAUT_DOLL - - .byte DECOR_BALTOY_DOLL - .string "BALTOY DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_BALTOY_DOLL - .4byte DecorGfx_BALTOY_DOLL - - .byte DECOR_KECLEON_DOLL - .string "KECLEON DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_KECLEON_DOLL - .4byte DecorGfx_KECLEON_DOLL - - .byte DECOR_AZURILL_DOLL - .string "AZURILL DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_AZURILL_DOLL - .4byte DecorGfx_AZURILL_DOLL - - .byte DECOR_SKITTY_DOLL - .string "SKITTY DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_SKITTY_DOLL - .4byte DecorGfx_SKITTY_DOLL - - .byte DECOR_SWABLU_DOLL - .string "SWABLU DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_SWABLU_DOLL - .4byte DecorGfx_SWABLU_DOLL - - .byte DECOR_GULPIN_DOLL - .string "GULPIN DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_GULPIN_DOLL - .4byte DecorGfx_GULPIN_DOLL - - .byte DECOR_LOTAD_DOLL - .string "LOTAD DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_LOTAD_DOLL - .4byte DecorGfx_LOTAD_DOLL - - .byte DECOR_SEEDOT_DOLL - .string "SEEDOT DOLL$", 16 - .byte 4 - .byte 0 - .byte 6 - .2byte 3000 - .space 2 - .4byte DecorDesc_SEEDOT_DOLL - .4byte DecorGfx_SEEDOT_DOLL - - .byte DECOR_PIKA_CUSHION - .string "PIKA CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_PIKA_CUSHION - .4byte DecorGfx_PIKA_CUSHION - - .byte DECOR_ROUND_CUSHION - .string "ROUND CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_ROUND_CUSHION - .4byte DecorGfx_ROUND_CUSHION - - .byte DECOR_KISS_CUSHION - .string "KISS CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_KISS_CUSHION - .4byte DecorGfx_KISS_CUSHION - - .byte DECOR_ZIGZAG_CUSHION - .string "ZIGZAG CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_ZIGZAG_CUSHION - .4byte DecorGfx_ZIGZAG_CUSHION - - .byte DECOR_SPIN_CUSHION - .string "SPIN CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_SPIN_CUSHION - .4byte DecorGfx_SPIN_CUSHION - - .byte DECOR_DIAMOND_CUSHION - .string "DIAMOND CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_DIAMOND_CUSHION - .4byte DecorGfx_DIAMOND_CUSHION - - .byte DECOR_BALL_CUSHION - .string "BALL CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_BALL_CUSHION - .4byte DecorGfx_BALL_CUSHION - - .byte DECOR_GRASS_CUSHION - .string "GRASS CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_GRASS_CUSHION - .4byte DecorGfx_GRASS_CUSHION - - .byte DECOR_FIRE_CUSHION - .string "FIRE CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_FIRE_CUSHION - .4byte DecorGfx_FIRE_CUSHION - - .byte DECOR_WATER_CUSHION - .string "WATER CUSHION$", 16 - .byte 4 - .byte 0 - .byte 7 - .2byte 2000 - .space 2 - .4byte DecorDesc_WATER_CUSHION - .4byte DecorGfx_WATER_CUSHION - - .byte DECOR_SNORLAX_DOLL - .string "SNORLAX DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_SNORLAX_DOLL - .4byte DecorGfx_SNORLAX_DOLL - - .byte DECOR_RHYDON_DOLL - .string "RHYDON DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_RHYDON_DOLL - .4byte DecorGfx_RHYDON_DOLL - - .byte DECOR_LAPRAS_DOLL - .string "LAPRAS DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_LAPRAS_DOLL - .4byte DecorGfx_LAPRAS_DOLL - - .byte DECOR_VENUSAUR_DOLL - .string "VENUSAUR DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_VENUSAUR_DOLL - .4byte DecorGfx_VENUSAUR_DOLL - - .byte DECOR_CHARIZARD_DOLL - .string "CHARIZARD DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_CHARIZARD_DOLL - .4byte DecorGfx_CHARIZARD_DOLL - - .byte DECOR_BLASTOISE_DOLL - .string "BLASTOISE DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_BLASTOISE_DOLL - .4byte DecorGfx_BLASTOISE_DOLL - - .byte DECOR_WAILMER_DOLL - .string "WAILMER DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_WAILMER_DOLL - .4byte DecorGfx_WAILMER_DOLL - - .byte DECOR_REGIROCK_DOLL - .string "REGIROCK DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_REGIROCK_DOLL - .4byte DecorGfx_REGIROCK_DOLL - - .byte DECOR_REGICE_DOLL - .string "REGICE DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_REGICE_DOLL - .4byte DecorGfx_REGICE_DOLL - - .byte DECOR_REGISTEEL_DOLL - .string "REGISTEEL DOLL$", 16 - .byte 4 - .byte 5 - .byte 6 - .2byte 10000 - .space 2 - .4byte DecorDesc_REGISTEEL_DOLL - .4byte DecorGfx_REGISTEEL_DOLL - diff --git a/data/player_pc.s b/data/player_pc.s index 200ae19c2..10f802bbb 100644 --- a/data/player_pc.s +++ b/data/player_pc.s @@ -4,27 +4,27 @@ .section .rodata .align 2 -gUnknown_08406288:: @ 8406288 +gPCText_OptionDescList:: @ 8406288 .4byte PCText_TakeOutItems .4byte PCText_StoreItems .4byte PCText_ThrowAwayItems .4byte gMenuText_GoBackToPrev .align 2 -gUnknown_08406298:: @ 8406298 +gPCText_PlayerPCOptionsText:: @ 8406298 .4byte SecretBaseText_ItemStorage, PlayerPC_ItemStorage .4byte gPCText_Mailbox, PlayerPC_Mailbox .4byte SecretBaseText_Decoration, PlayerPC_Decoration .4byte SecretBaseText_TurnOff, PlayerPC_TurnOff -gUnknown_084062B8:: @ 84062B8 +gBedroomPC_OptionOrder:: @ 84062B8 .byte 0, 1, 2, 3 -gUnknown_084062BC:: @ 84062BC +gPlayerPC_OptionOrder:: @ 84062BC .byte 0, 1, 3 .align 2 -gUnknown_084062C0:: @ 84062C0 +gPCText_ItemPCOptionsText:: @ 84062C0 .4byte PCText_WithdrawItem, ItemStorage_Withdraw .4byte PCText_DepositItem, ItemStorage_Deposit .4byte PCText_TossItem, ItemStorage_Toss @@ -32,8 +32,8 @@ gUnknown_084062C0:: @ 84062C0 .align 2 gUnknown_084062E0:: @ 84062E0 - .4byte sub_813A83C - .4byte sub_813A878 + .4byte ItemStorage_ResumeInputFromYesToss + .4byte ItemStorage_ResumeInputFromNoToss .align 2 gUnknown_084062E8:: @ 84062E8 diff --git a/data/text/pokedex_rating.inc b/data/text/pokedex_rating.inc index d816799b6..bcf57eb5b 100644 --- a/data/text/pokedex_rating.inc +++ b/data/text/pokedex_rating.inc @@ -12,111 +12,90 @@ Route101_Text_1C44DC:: @ 81C44DC .string "So, you’ve seen {STR_VAR_1} POKéMON,\n" .string "and you’ve caught {STR_VAR_2} POKéMON...$" -gUnknown_081C4520:: @ 81C4520 -UnknownString_81C4520: @ 81C4520 +gBirchDexRatingText_LessThan10:: @ 81C4520 .string "You should go into grassy areas more\n" .string "and look for POKéMON more carefully.$" -gUnknown_081C456A:: @ 81C456A -UnknownString_81C456A: @ 81C456A +gBirchDexRatingText_LessThan20:: @ 81C456A .string "I guess you’re getting the hang of it.\n" .string "But, it gets harder from here.$" -gUnknown_081C45B0:: @ 81C45B0 -UnknownString_81C45B0: @ 81C45B0 +gBirchDexRatingText_LessThan30:: @ 81C45B0 .string "Some POKéMON only appear in certain\n" .string "areas. You’ll need to be persistent.$" -gUnknown_081C45F9:: @ 81C45F9 -UnknownString_81C45F9: @ 81C45F9 +gBirchDexRatingText_LessThan40:: @ 81C45F9 .string "Well, it could use more quantity, but\n" .string "this is looking more like a POKéDEX now.$" -gUnknown_081C4648:: @ 81C4648 -UnknownString_81C4648: @ 81C4648 +gBirchDexRatingText_LessThan50:: @ 81C4648 .string "This is coming along pretty good.\n" .string "Keep up the effort.$" -gUnknown_081C467E:: @ 81C467E -UnknownString_81C467E: @ 81C467E +gBirchDexRatingText_LessThan60:: @ 81C467E .string "Are you using any RODS?\n" .string "There are many POKéMON in the sea.$" -gUnknown_081C46B9:: @ 81C46B9 -UnknownString_81C46B9: @ 81C46B9 +gBirchDexRatingText_LessThan70:: @ 81C46B9 .string "Instead of just catching POKéMON,\n" .string "how about making them evolve, too?$" -gUnknown_081C46FE:: @ 81C46FE -UnknownString_81C46FE: @ 81C46FE +gBirchDexRatingText_LessThan80:: @ 81C46FE .string "This is going to be a fantastic POKéDEX.\n" .string "That’s the feeling I’m getting.$" -gUnknown_081C4747:: @ 81C4747 -UnknownString_81C4747: @ 81C4747 +gBirchDexRatingText_LessThan90:: @ 81C4747 .string "You’ve collected this many...\n" .string "Your talent is remarkable!$" -gUnknown_081C4780:: @ 81C4780 -UnknownString_81C4780: @ 81C4780 +gBirchDexRatingText_LessThan100:: @ 81C4780 .string "Have you visited the SAFARI ZONE?\p" .string "I hear there are some POKéMON that\n" .string "can only be caught there.$" -gUnknown_081C47DF:: @ 81C47DF -UnknownString_81C47DF: @ 81C47DF +gBirchDexRatingText_LessThan110:: @ 81C47DF .string "You’ve finally reached the 100-kind\n" .string "mark. This is an impressive POKéDEX!$" -gUnknown_081C4828:: @ 81C4828 -UnknownString_81C4828: @ 81C4828 +gBirchDexRatingText_LessThan120:: @ 81C4828 .string "There might be POKéMON that can be\n" .string "found using ROCK SMASH.$" -gUnknown_081C4863:: @ 81C4863 -UnknownString_81C4863: @ 81C4863 +gBirchDexRatingText_LessThan130:: @ 81C4863 .string "You should get some more POKéMON by\n" .string "trading with others.$" -gUnknown_081C489C:: @ 81C489C -UnknownString_81C489C: @ 81C489C +gBirchDexRatingText_LessThan140:: @ 81C489C .string "I’ve heard of POKéMON that evolve when\n" .string "they come to fully love their TRAINERS.$" -gUnknown_081C48EB:: @ 81C48EB -UnknownString_81C48EB: @ 81C48EB +gBirchDexRatingText_LessThan150:: @ 81C48EB .string "I had no idea that there were so many\n" .string "POKéMON species in the HOENN region.$" -gUnknown_081C4936:: @ 81C4936 -UnknownString_81C4936: @ 81C4936 +gBirchDexRatingText_LessThan160:: @ 81C4936 .string "On occasion, some POKéMON appear in\n" .string "large numbers like wild outbreaks.\l" .string "Don’t miss opportunities like those.$" -gUnknown_081C49A2:: @ 81C49A2 -UnknownString_81C49A2: @ 81C49A2 +gBirchDexRatingText_LessThan170:: @ 81C49A2 .string "One can get a very good idea about the\n" .string "POKéMON of the HOENN region by looking\l" .string "through your POKéDEX.$" -gUnknown_081C4A06:: @ 81C4A06 -UnknownString_81C4A06: @ 81C4A06 +gBirchDexRatingText_LessThan180:: @ 81C4A06 .string "I’d say you already qualify as a POKéMON\n" .string "PROFESSOR, and a good one, too!$" -gUnknown_081C4A4F:: @ 81C4A4F -UnknownString_81C4A4F: @ 81C4A4F +gBirchDexRatingText_LessThan190:: @ 81C4A4F .string "With a POKéDEX this complete, you’re\n" .string "a real professional at this!$" -gUnknown_081C4A91:: @ 81C4A91 -UnknownString_81C4A91: @ 81C4A91 +gBirchDexRatingText_LessThan200:: @ 81C4A91 .string "You’re very close to completing this\n" .string "POKéDEX. I can feel it in my bones!$" -gUnknown_081C4ADA:: @ 81C4ADA -UnknownString_81C4ADA: @ 81C4ADA +gBirchDexRatingText_DexCompleted:: @ 81C4ADA .string "Congratulations!\n" .string "Your POKéDEX is complete!$" diff --git a/include/asm.inc.h b/include/asm.inc.h index dbd3f0820..dcc6190cc 100755..100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -24,7 +24,7 @@ void sub_802E3E4(u8, int); void nullsub_8(u8); // asm/battle_7.o -void sub_8032AA8(u8 index, int i); +void sub_8032AA8(u8, u8); // src/pokemon_3.o u16 SpeciesToNationalPokedexNum(u16); @@ -286,7 +286,7 @@ void sub_80BD674(void *, u32, u8); // asm/tv.o void ClearTVShowData(void); -void UpdateTVScreensOnMap(u32, u32); +void UpdateTVScreensOnMap(int, int); void ResetGabbyAndTy(void); u8 sub_80BDEAC(u8 *); void sub_80BE160(TVShow *); diff --git a/include/battle.h b/include/battle.h index 3b4771869..4d222834e 100644 --- a/include/battle.h +++ b/include/battle.h @@ -29,16 +29,6 @@ #define MAX_TRAINER_ITEMS 4 #define MAX_MON_MOVES 4 -// needed to match the hack that is get_item, thanks cam, someone else clean this up later. -extern u8 unk_2000000[]; - -// to do: maybe try to reduce the defines needed to match? -#define BATTLE_STRUCT ((struct BattleStruct *)(unk_2000000)) -#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(unk_2000000 + 0x16800)) -#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *)(unk_2000000 + 0x16A00)) -#define AI_STACK ((struct AI_Stack *)(unk_2000000 + 0x16C00)) -#define AI_ARRAY_160CC ((struct SmallItemStruct *)(unk_2000000 + 0x160CC)) - enum { WEATHER_SUN, @@ -107,9 +97,9 @@ struct SmallItemStruct struct BattleStruct /* 0x2000000 */ { u8 filler0[0x15DDE]; - /*0x15DDE*/ u8 unk15DDE; - /*0x15DDF*/ u8 unk15DDF; - /*0x15DE0*/ u8 filler15DE0[0x23C]; // 0xAF off? + /*0x15DDE*/ u8 unk15DDE; + /*0x15DDF*/ u8 unk15DDF; + /*0x15DE0*/ u8 filler15DE0[0x23C]; // 0xAF off? struct SmallBattleStruct1 unk; u8 filler1[0x68]; /* 0x16089 */ u8 safariFleeRate; @@ -142,8 +132,85 @@ struct UnkBattleStruct4 /*0x17*/ u8 filler17[0x4]; }; +struct Struct30042E0 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5_0:1; + u8 unk5_1:1; + u16 unk6; + u8 unk8[10]; + u8 unk12; + u8 unk13; + u8 unk14[10]; + u8 filler1E[2]; + u16 unk20; + u16 unk22; + u16 unk24; + u16 unk26; + u16 unk28; + u8 unk2A[10]; + u8 filler34[2]; + u8 unk36[10]; +}; + +struct Struct2017800 +{ + u8 unk0_0:1; + u8 unk0_1:1; + u8 unk0_2:1; + u8 unk0_3:1; + u8 unk0_4:1; + u16 unk2; +}; + +struct Struct2017810 +{ + u8 unk0_0:1; + u8 unk0_1:1; + u8 unk0_2:1; + u8 unk0_3:1; + u8 unk0_4:1; + u8 unk0_5:1; + u8 unk0_6:1; + u8 unk0_7:1; + u8 unk1_0:1; + u8 unk2; + u8 unk3; + //u8 filler2[2]; + u8 unk4; + u8 unk5; + u8 unk6; + u8 unk7; + u8 unk8; + u8 unk9; + u8 fillerA[2]; +}; + +struct Struct2017840 +{ + u16 unk0; + u8 filler2[7]; + u8 unk9_0:1; +}; + extern struct UnknownStruct1 unk_2016A00; extern struct UnkBattleStruct4 gUnknown_02024CA8[]; extern struct AI_ThinkingStruct gAIThinkingSpace; +// TODO: move ewram to global.h +extern u8 ewram[]; + +#define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x00000)) +#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800)) +#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00)) +#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00)) +#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC)) +#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800)) +#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810)) +#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840)) + #endif // GUARD_BATTLE_H diff --git a/include/battle_interface.h b/include/battle_interface.h index e85f87a30..70434f9a9 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -31,6 +31,6 @@ void sub_8045A5C(u8, struct Pokemon *, u8); s32 sub_8045C78(u8, u8, u8, u8); s16 sub_80460C8(struct BattleInterfaceStruct1 *, int *, void *, int); u8 GetScaledHPFraction(s16, s16, u8); -int GetHPBarLevel(s16, s16); +u8 GetHPBarLevel(s16, s16); #endif // GUARD_BATTLE_INTERFACE_H diff --git a/include/contest_painting.h b/include/contest_painting.h index a67748d02..5c1b065c2 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -8,10 +8,10 @@ enum { - NORMAL_RANK, - SUPER_RANK, - HYPER_RANK, - MASTER_RANK, + NORMAL_RANK, + SUPER_RANK, + HYPER_RANK, + MASTER_RANK, }; enum diff --git a/include/data2.h b/include/data2.h index 987c7cb2e..759efe3d3 100644 --- a/include/data2.h +++ b/include/data2.h @@ -29,7 +29,7 @@ extern const union AnimCmd *const *const gUnknown_081EC2A4[]; extern const union AnimCmd *const *const gUnknown_081ECACC[]; extern struct MonCoords gTrainerBackPicCoords[]; extern struct SpriteSheet gTrainerBackPicTable[]; -extern struct SpritePalette gTrainerBackPicPaletteTable[]; +extern const struct SpritePalette gTrainerBackPicPaletteTable[]; extern u8 gEnemyMonElevation[]; extern const u8 gTrainerClassNames[][13]; extern const struct Trainer gTrainers[]; @@ -40,7 +40,7 @@ extern const u8 gUnknown_081F96C8[]; extern struct SpriteSheet gUnknown_081FAEA4; extern struct SpritePalette gUnknown_081FAEAC; extern const struct SpriteTemplate gSpriteTemplate_81FAF0C; -extern void *gUnknown_081FAF4C[]; +extern void *const gUnknown_081FAF4C[]; extern struct BattleMove gBattleMoves[]; #endif // GUARD_DATA2_H diff --git a/include/decoration.h b/include/decoration.h index d041a8007..01a00ee91 100644..100755 --- a/include/decoration.h +++ b/include/decoration.h @@ -1,19 +1,376 @@ #ifndef GUARD_DECORATION_H #define GUARD_DECORATION_H +enum DecoId { + /*000*/ DECOR_NONE, + /*001*/ DECOR_SMALL_DESK, + /*002*/ DECOR_POKEMON_DESK, + /*003*/ DECOR_HEAVY_DESK, + /*004*/ DECOR_RAGGED_DESK, + /*005*/ DECOR_COMFORT_DESK, + /*006*/ DECOR_PRETTY_DESK, + /*007*/ DECOR_BRICK_DESK, + /*008*/ DECOR_CAMP_DESK, + /*009*/ DECOR_HARD_DESK, + /*010*/ DECOR_SMALL_CHAIR, + /*011*/ DECOR_POKEMON_CHAIR, + /*012*/ DECOR_HEAVY_CHAIR, + /*013*/ DECOR_PRETTY_CHAIR, + /*014*/ DECOR_COMFORT_CHAIR, + /*015*/ DECOR_RAGGED_CHAIR, + /*016*/ DECOR_BRICK_CHAIR, + /*017*/ DECOR_CAMP_CHAIR, + /*018*/ DECOR_HARD_CHAIR, + /*019*/ DECOR_RED_PLANT, + /*020*/ DECOR_TROPICAL_PLANT, + /*021*/ DECOR_PRETTY_FLOWERS, + /*022*/ DECOR_COLORFUL_PLANT, + /*023*/ DECOR_BIG_PLANT, + /*024*/ DECOR_GORGEOUS_PLANT, + /*025*/ DECOR_RED_BRICK, + /*026*/ DECOR_YELLOW_BRICK, + /*027*/ DECOR_BLUE_BRICK, + /*028*/ DECOR_RED_BALLOON, + /*029*/ DECOR_BLUE_BALLOON, + /*030*/ DECOR_YELLOW_BALLOON, + /*031*/ DECOR_RED_TENT, + /*032*/ DECOR_BLUE_TENT, + /*033*/ DECOR_SOLID_BOARD, + /*034*/ DECOR_SLIDE, + /*035*/ DECOR_FENCE_LENGTH, + /*036*/ DECOR_FENCE_WIDTH, + /*037*/ DECOR_TIRE, + /*038*/ DECOR_STAND, + /*039*/ DECOR_MUD_BALL, + /*040*/ DECOR_BREAKABLE_DOOR, + /*041*/ DECOR_SAND_ORNAMENT, + /*042*/ DECOR_SILVER_SHIELD, + /*043*/ DECOR_GOLD_SHIELD, + /*044*/ DECOR_GLASS_ORNAMENT, + /*045*/ DECOR_TV, + /*046*/ DECOR_ROUND_TV, + /*047*/ DECOR_CUTE_TV, + /*048*/ DECOR_GLITTER_MAT, + /*049*/ DECOR_JUMP_MAT, + /*050*/ DECOR_SPIN_MAT, + /*051*/ DECOR_C_LOW_NOTE_MAT, + /*052*/ DECOR_D_NOTE_MAT, + /*053*/ DECOR_E_NOTE_MAT, + /*054*/ DECOR_F_NOTE_MAT, + /*055*/ DECOR_G_NOTE_MAT, + /*056*/ DECOR_A_NOTE_MAT, + /*057*/ DECOR_B_NOTE_MAT, + /*058*/ DECOR_C_HIGH_NOTE_MAT, + /*059*/ DECOR_SURF_MAT, + /*060*/ DECOR_THUNDER_MAT, + /*061*/ DECOR_FIRE_BLAST_MAT, + /*062*/ DECOR_POWDER_SNOW_MAT, + /*063*/ DECOR_ATTRACT_MAT, + /*064*/ DECOR_FISSURE_MAT, + /*065*/ DECOR_SPIKES_MAT, + /*066*/ DECOR_BALL_POSTER, + /*067*/ DECOR_GREEN_POSTER, + /*068*/ DECOR_RED_POSTER, + /*069*/ DECOR_BLUE_POSTER, + /*070*/ DECOR_CUTE_POSTER, + /*071*/ DECOR_PIKA_POSTER, + /*072*/ DECOR_LONG_POSTER, + /*073*/ DECOR_SEA_POSTER, + /*074*/ DECOR_SKY_POSTER, + /*075*/ DECOR_KISS_POSTER, + /*076*/ DECOR_PICHU_DOLL, + /*077*/ DECOR_PIKACHU_DOLL, + /*078*/ DECOR_MARILL_DOLL, + /*079*/ DECOR_TOGEPI_DOLL, + /*080*/ DECOR_CYNDAQUIL_DOLL, + /*081*/ DECOR_CHIKORITA_DOLL, + /*082*/ DECOR_TOTODILE_DOLL, + /*083*/ DECOR_JIGGLYPUFF_DOLL, + /*084*/ DECOR_MEOWTH_DOLL, + /*085*/ DECOR_CLEFAIRY_DOLL, + /*086*/ DECOR_DITTO_DOLL, + /*087*/ DECOR_SMOOCHUM_DOLL, + /*088*/ DECOR_TREECKO_DOLL, + /*089*/ DECOR_TORCHIC_DOLL, + /*090*/ DECOR_MUDKIP_DOLL, + /*091*/ DECOR_DUSKULL_DOLL, + /*092*/ DECOR_WYNAUT_DOLL, + /*093*/ DECOR_BALTOY_DOLL, + /*094*/ DECOR_KECLEON_DOLL, + /*095*/ DECOR_AZURILL_DOLL, + /*096*/ DECOR_SKITTY_DOLL, + /*097*/ DECOR_SWABLU_DOLL, + /*098*/ DECOR_GULPIN_DOLL, + /*099*/ DECOR_LOTAD_DOLL, + /*100*/ DECOR_SEEDOT_DOLL, + /*101*/ DECOR_PIKA_CUSHION, + /*102*/ DECOR_ROUND_CUSHION, + /*103*/ DECOR_KISS_CUSHION, + /*104*/ DECOR_ZIGZAG_CUSHION, + /*105*/ DECOR_SPIN_CUSHION, + /*106*/ DECOR_DIAMOND_CUSHION, + /*107*/ DECOR_BALL_CUSHION, + /*108*/ DECOR_GRASS_CUSHION, + /*109*/ DECOR_FIRE_CUSHION, + /*110*/ DECOR_WATER_CUSHION, + /*111*/ DECOR_SNORLAX_DOLL, + /*112*/ DECOR_RHYDON_DOLL, + /*113*/ DECOR_LAPRAS_DOLL, + /*114*/ DECOR_VENUSAUR_DOLL, + /*115*/ DECOR_CHARIZARD_DOLL, + /*116*/ DECOR_BLASTOISE_DOLL, + /*117*/ DECOR_WAILMER_DOLL, + /*118*/ DECOR_REGIROCK_DOLL, + /*119*/ DECOR_REGICE_DOLL, + /*120*/ DECOR_REGISTEEL_DOLL +}; + +enum DecorPerm { + /* + * The nomenclature here describes collision and placement permissions, in that order. + */ + DECORPERM_SOLID_FLOOR, + DECORPERM_PASS_FLOOR, + DECORPERM_BEHIND_FLOOR, + DECORPERM_NA_WALL, + DECORPERM_SOLID_MAT +}; + +enum DecorShape { + /* + * Width-x-height + */ + DECORSHAPE_1x1, + DECORSHAPE_2x1, + DECORSHAPE_3x1, // unused + DECORSHAPE_4x2, + DECORSHAPE_2x2, + DECORSHAPE_1x2, + DECORSHAPE_1x3, // unused + DECORSHAPE_2x4, + DECORSHAPE_3x3, + DECORSHAPE_3x2 +}; + +enum DecoCat { + /* + * In which category you can find the decoration in the PC. + */ + /*0*/ DECORCAT_DESK, + /*1*/ DECORCAT_CHAIR, + /*2*/ DECORCAT_PLANT, + /*3*/ DECORCAT_ORNAMENT, + /*4*/ DECORCAT_MAT, + /*5*/ DECORCAT_POSTER, + /*6*/ DECORCAT_DOLL, + /*7*/ DECORCAT_CUSHION +}; + struct Decoration { /*0x00*/ u8 id; /*0x01*/ u8 name[16]; - /*0x11*/ u8 decor_field_11; - /*0x12*/ u8 decor_field_12; - /*0x13*/ u8 decor_field_13; + /*0x11*/ u8 permission; + /*0x12*/ u8 shape; + /*0x13*/ u8 category; /*0x14*/ u16 price; - /*0x18*/ u8 *description; - /*0x1c*/ u16 *tiles; + /*0x18*/ const u8 *description; + /*0x1c*/ const u16 *tiles; +}; + +struct DecoPCPointers +{ + /* 0x00 */ u8 *items; + /* 0x04 */ u8 *pos; + /* 0x08 */ u8 size; + /* 0x09 */ u8 isPlayerRoom; +}; + +struct DecorationInventory +{ + u8 *items; + u8 size; }; -extern struct Decoration gDecorations[0x77]; -extern void sub_80FF394(u16 unkr0, u16 unkr1, u16 unkr2); +struct UnkStruct_803EC860 +{ + const u8 *tiles; + const u8 *y; + const u8 *x; + u8 size; +}; + +extern const struct UnkStruct_803EC860 gUnknown_083EC860[]; + +extern u8 ewram[]; +#define ewram_1f000 (*(struct DecoPCPointers *)(ewram + 0x1f000)) + +struct UnkStruct_02038900 +{ + /*0x000; 0x02038900*/ const struct Decoration *decoration; + /*0x004; 0x02038904*/ u16 tiles[0x40]; + /*0x084; 0x02038984*/ u8 image[0x800]; + /*0x884; 0x02039184*/ u16 palette[16]; +}; + +struct UnkStruct_083EC900 +{ + u8 shape; + u8 size; + u8 x; + u8 y; +}; + +struct UnkStruct_020391B4 +{ + u8 decorId; + u8 width; + u8 height; + u16 flagId; +}; + +extern const struct UnkStruct_083EC900 gUnknown_083EC900[]; +extern const struct SpritePalette gUnknown_083EC954; +extern const struct SpritePalette gUnknown_083ECA5C; +extern const struct SpritePalette gUnknown_083ECA64; +extern const struct SpriteTemplate gSpriteTemplate_83EC93C; +extern const struct SpriteTemplate gSpriteTemplate_83ECA88; + +extern const struct Decoration gDecorations[]; +extern struct UnkStruct_02038900 gUnknown_02038900; +extern u8 *gUnknown_020388D0; +extern u8 gUnknown_081A2F7B[]; +extern u8 gUnknown_081A2F8A[]; +extern struct OamData gUnknown_020391AC; + +extern u8 gUnknown_020388D4; +extern u8 gUnknown_020388D5; +extern u8 gUnknown_020388F2; +extern u8 gUnknown_020388F3; +extern u8 gUnknown_020388F4; +extern u8 gUnknown_020388F5; +extern u8 gUnknown_020388F6; +extern u8 gUnknown_020388D6[16]; +extern u8 gUnknown_020388E6[12]; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; +extern u16 gSpecialVar_0x8007; +extern u16 gUnknown_020391A4; +extern u16 gUnknown_020391A6; +extern u8 gUnknown_020391A8; +extern u8 gUnknown_020391A9; +extern u8 gUnknown_020391AA; +extern u8 gUnknown_02039234; +extern void (*gUnknown_0300485C)(void); +extern const struct YesNoFuncTable gUnknown_083EC96C[]; +extern struct UnkStruct_020391B4 gUnknown_020391B4[16]; + +extern const u16 gUnknown_083EC654[3]; +extern const struct DecorationInventory gDecorationInventories[]; +extern const u8 *const gUnknown_083EC5E4[]; +extern const u8 *const gUnknown_083EC624[]; +extern u8 gUnknown_020388F7[]; +extern const struct MenuAction2 gUnknown_083EC604[]; +extern const struct MenuAction3 gUnknown_083EC634[]; +extern const u8 gUnknown_083EC65A[]; +extern const u8 gUnknown_083EC97C[]; +extern const u8 gUnknown_083EC984[]; +extern void sub_80B3068(u8); // src/shop +extern const struct YesNoFuncTable gUnknown_083EC95C; +extern const struct YesNoFuncTable gUnknown_083EC964; +extern const struct YesNoFuncTable gUnknown_083EC9CC; +extern const struct YesNoFuncTable gUnknown_083EC9D4; +extern const struct YesNoFuncTable gUnknown_083ECAA0; + +extern u8 sub_8134194(u8); // src/decoration_inventory +extern bool8 sub_81341D4(void); // src/decoration_inventory +extern void sub_8134104(u8); // src/decoration_inventory +extern bool8 sub_807D770(void); +extern void sub_80F944C(void); // src/menu_helpers +extern void sub_80F9480(u8 *, u8); // src/menu_helpers +extern void sub_80F94A4(u8, u8 *, u8, s16); // src/menu_helpers +extern void sub_80F94F8(u8 *); // src/menu_helpers +extern void sub_80F9520(u8 *, u8); // src/menu_helpers +extern void DestroyVerticalScrollIndicator(u8); // src/menu_helpers +extern void CreateVerticalScrollIndicators(u8, u8, u8); // src/menu_helpers +extern void LoadScrollIndicatorPalette(void); // src/menu_helpers +extern void DisplayItemMessageOnField(u8, const u8 *, TaskFunc, u16); // src/menu_helpers +extern void BuyMenuFreeMemory(void); // src/menu_helpers +extern void sub_8109DAC(u8); // src/trader +extern void ReshowPlayerPC(u8); // src/player_pc + +void sub_80FE2B4(void); +void Task_DecorationPCProcessMenuInput(u8); +void sub_80FE394(void); +void gpu_pal_decompress_alloc_tag_and_upload(u8); +void sub_80FE5AC(u8); +void sub_80FE604(u8); +void sub_80FE728(u8); +void sub_80FE758(u8); +void sub_80FE868(u8); +void sub_80FE948(u8); +void sub_80FEABC(u8, u8); +void sub_80FEC94(u8); +void sub_80FECB8(u8); +void sub_80FECE0(u8); +void sub_80FEF50(u8); +void sub_80FF394(u16, u16, u16); +void sub_80FF6AC(u8); +void sub_80FF960(u8); +void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 *, u8); +void SetUpPlacingDecorationPlayerAvatar(u8, struct UnkStruct_02038900 *); +void sub_8100038(u8); +void sub_81000A0(u8); +void sub_8100174(u8); +void sub_8100248(u8); +void sub_810028C(u8); +void c1_overworld_prev_quest(u8); +void sub_8100364(void); +void sub_810045C(void); +void sub_810065C(u8); +void sub_81006A8(u8); +void sub_81006D0(struct UnkStruct_02038900 *); +void sub_810070C(u16 *, u16); +void sub_8100874(struct UnkStruct_02038900 *); +void sub_81008BC(struct UnkStruct_02038900 *); +void sub_8100930(u8); +void sub_81009A8(struct Sprite *); +void sub_81009C0(struct Sprite *); +bool8 sub_8100D38(u8); +void sub_8100E70(u8); +void sub_8100EEC(u8); +void sub_8101024(u8); +void sub_81010F0(u8); +void sub_8101460(u8); +void sub_8101518(u8); +void sub_81015B0(u8); +void sub_81015E0(u8); +void sub_810156C(u8); +void sub_8101678(void); +void sub_8101698(struct Sprite *); +void sub_81016C8(void); +void sub_81016F4(void); +void sub_8101824(u8); +void sub_8109A30(u8); + +void sub_80FF160(u8); +void sub_80FF5BC(u8); +void sub_80FF058(u8); +void sub_8100A0C(u8); +void sub_8101700(u8); +void sub_81017A0(u8); +void sub_8109D04(u8); + +void sub_80FED3C(u8); +void sub_80FFAB0(u8); +void sub_80FFB08(u8); +void sub_81000C4(u8); +void sub_810026C(u8); +void sub_8100F88(u8); +void sub_8100FB4(u8); +void sub_810153C(u8); +void sub_8101590(u8); +void sub_8101848(u8); #endif // GUARD_DECORATION_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 62f492bdc..62f492bdc 100755..100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 0347b90d4..0347b90d4 100755..100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index fc21c4e3c..fc21c4e3c 100755..100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h diff --git a/include/fieldmap.h b/include/fieldmap.h index 530e15798..d08627ddc 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -2,9 +2,12 @@ #define GUARD_FIELDMAP2_H #include "field_map_obj.h" +extern struct BackupMapData gUnknown_03004870; struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection); int GetMapBorderIdAt(int x, int y); extern bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); int CanCameraMoveInDirection(int direction); +u32 GetBehaviorByMetatileId(u16 metatile); +void MapGridSetMetatileEntryAt(int, int, u16); #endif diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index c0874bcbb..d483d4ddc 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -639,6 +639,8 @@ #define KEY_INTR_ENABLE 0x0400 #define KEY_OR_INTR 0x0000 #define KEY_AND_INTR 0x8000 +#define DPAD_ANY 0x00F0 +#define JOY_EXCL_DPAD 0x030F // interrupt flags #define INTR_FLAG_VBLANK (1 << 0) diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 0b72bbec5..b8bab45d8 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -44,23 +44,30 @@ typedef void (*TilesetCB)(void); struct Tileset { - bool8 isCompressed; - bool8 isSecondary; - void *tiles; - void *palettes; - void *metatiles; - void *metatileAttributes; - TilesetCB callback; + /*0x00*/ bool8 isCompressed; + /*0x01*/ bool8 isSecondary; + /*0x04*/ void *tiles; + /*0x08*/ void *palettes; + /*0x0c*/ void *metatiles; + /*0x10*/ void *metatileAttributes; + /*0x14*/ TilesetCB callback; }; struct MapData { + /*0x00*/ s32 width; + /*0x04*/ s32 height; + /*0x08*/ u16 *border; + /*0x0c*/ u16 *map; + /*0x10*/ struct Tileset *primaryTileset; + /*0x14*/ struct Tileset *secondaryTileset; +}; + +struct BackupMapData +{ s32 width; s32 height; - u16 *border; u16 *map; - struct Tileset *primaryTileset; - struct Tileset *secondaryTileset; }; struct MapObjectTemplate @@ -153,20 +160,20 @@ struct MapConnections struct MapHeader { - struct MapData *mapData; - struct MapEvents *events; - u8 *mapScripts; - struct MapConnections *connections; - u16 music; - u16 mapDataId; - u8 name; - u8 cave; - u8 weather; + /* 0x00 */ struct MapData *mapData; + /* 0x04 */ struct MapEvents *events; + /* 0x08 */ u8 *mapScripts; + /* 0x0C */ struct MapConnections *connections; + /* 0x10 */ u16 music; + /* 0x12 */ u16 mapDataId; + /* 0x14 */ u8 name; + /* 0x15 */ u8 cave; + /* 0x16 */ u8 weather; /* 0x17 */ u8 mapType; - u8 filler_18; - u8 escapeRope; - u8 flags; - u8 battleType; + /* 0x18 */ u8 filler_18; + /* 0x19 */ u8 escapeRope; + /* 0x1A */ u8 flags; + /* 0x1B */ u8 battleType; }; struct MapObject diff --git a/include/global.h b/include/global.h index 34946c895..c4c78e65d 100644 --- a/include/global.h +++ b/include/global.h @@ -94,11 +94,11 @@ struct UCoords16 struct SecretBaseRecord { - /*0x1A08*/ u8 sbr_field_0; // ID? + /*ID?*/ /*0x1A08*/ u8 sbr_field_0; /*0x1A09*/ u8 sbr_field_1_0:4; /*0x1A09*/ u8 gender:1; /*0x1A09*/ u8 sbr_field_1_5:1; - /*0x1A09*/ u8 sbr_field_1_6:2; + /*0x1A09*/ u8 sbr_field_1_6:2; /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes? /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class /*0x1A16*/ u16 sbr_field_e; @@ -206,32 +206,6 @@ struct TVShowCommon { /*0x23*/ u8 trainerIdHi; }; -struct TVShowPokemonToday { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 language; - /*0x03*/ u8 language2; - /*0x04*/ u8 nickname[11]; - /*0x0F*/ u8 ball; - /*0x10*/ u16 species; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - - -struct TVShowPokemonTodayFailed { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 language; - /*0x03*/ u8 pad03[9]; - /*0x0c*/ u16 species; - /*0x0e*/ u16 species2; - /*0x10*/ u8 var10; - /*0x11*/ u8 var11; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - struct TVShowFanClubLetter { /*0x00*/ u8 var00; /*0x01*/ u8 var01; @@ -245,10 +219,10 @@ struct TVShowRecentHappenings { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 var02; - /*0x04*/ u16 var04[6]; + /*0x04*/ u16 var04[6]; /*0x10*/ u8 playerName[8]; /*0x18*/ u8 language; - u8 pad19[10]; + /*0x19*/ u8 pad19[10]; }; struct TVShowFanclubOpinions { @@ -256,7 +230,7 @@ struct TVShowFanclubOpinions { /*0x01*/ u8 var01; /*0x02*/ u16 var02; /*0x04*/ u8 var04A:4; - u8 var04B:4; + /*0x04*/ u8 var04B:4; /*0x05*/ u8 playerName[8]; /*0x0D*/ u8 language; /*0x0E*/ u8 var0E; @@ -266,6 +240,13 @@ struct TVShowFanclubOpinions { /*0x1C*/ u16 var1C[4]; }; +struct TVShowUnknownType04 { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 pad02[4]; + /*0x06*/ u16 var06; +}; + struct TVShowNameRaterShow { /*0x00*/ u8 var00; /*0x01*/ u8 var01; @@ -279,23 +260,72 @@ struct TVShowNameRaterShow { /*0x1F*/ u8 pokemonNameLanguage; }; -struct TVShowMassOutbreak { +struct TVShowBravoTrainerPokemonProfiles { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u16 species; + /*0x04*/ u16 var04[2]; + /*0x08*/ u8 pokemonNickname[11]; + /*0x13*/ u8 contestCategory:3; + /*0x13*/ u8 contestRank:2; + /*0x13*/ u8 contestResult:2; + /*0x13*/ u8 var13_7:1; + /*0x14*/ u16 var14; + /*0x16*/ u8 playerName[8]; + /*0x1E*/ u8 language; + /*0x1F*/ u8 var1f; +}; + +struct TVShowBravoTrainerBattleTowerSpotlight { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 trainerName[8]; + /*0x0A*/ u16 species; + /*0x0C*/ u8 pokemonName[8]; + /*0x14*/ u16 defeatedSpecies; + /*0x16*/ u16 var16; + /*0x18*/ u16 var18[1]; + /*0x1A*/ u8 btLevel; + /*0x1B*/ u8 var1b; + /*0x1C*/ u8 var1c; + /*0x1D*/ u8 language; +}; + +struct TVShowPokemonToday { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 moves[4]; - /*0x0C*/ u16 species; - /*0x0E*/ u16 var0E; - /*0x10*/ u8 locationMapNum; - /*0x11*/ u8 locationMapGroup; + /*0x02*/ u8 language; + /*0x03*/ u8 language2; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 ball; + /*0x10*/ u16 species; /*0x12*/ u8 var12; - /*0x13*/ u8 probability; - /*0x14*/ u8 level; - /*0x15*/ u8 var15; - /*0x16*/ u16 var16; - /*0x18*/ u8 language; - u8 pad19[11]; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowSmartShopper { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 priceReduced; + /*0x03*/ u8 language; + /*0x04*/ u8 pad04[2]; + /*0x06*/ u16 itemIds[3]; + /*0x0C*/ u16 itemAmounts[3]; + /*0x12*/ u8 shopLocation; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowPokemonTodayFailed { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 language; + /*0x03*/ u8 pad03[9]; + /*0x0c*/ u16 species; + /*0x0e*/ u16 species2; + /*0x10*/ u8 var10; + /*0x11*/ u8 var11; + /*0x12*/ u8 var12; + /*0x13*/ u8 playerName[8]; }; struct TVShowPokemonAngler { @@ -322,47 +352,23 @@ struct TVShowWorldOfMasters { /*0x13*/ u8 playerName[8]; }; -struct TVShowSmartShopper { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 priceReduced; - /*0x03*/ u8 language; - /*0x04*/ u8 pad04[2]; - /*0x06*/ u16 itemIds[3]; - /*0x0C*/ u16 itemAmounts[3]; - /*0x12*/ u8 shopLocation; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowBravoTrainerPokemonProfiles { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 species; - /*0x04*/ u16 var04[2]; - /*0x08*/ u8 pokemonNickname[11]; - /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 contestRank:2; - /*0x13*/ u8 var13_5:2; - /*0x13*/ u8 var13_7:1; - /*0x14*/ u16 var14; - /*0x16*/ u8 playerName[8]; - /*0x1E*/ u8 language; - /*0x1F*/ u8 var1f; -}; - -struct TVShowBravoTrainerBattleTowerSpotlight { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 trainerName[8]; - /*0x0A*/ u16 species; - /*0x0C*/ u8 pokemonName[8]; - /*0x14*/ u16 winningMove; - /*0x16*/ u16 var16; - /*0x18*/ u16 var18[1]; - /*0x1A*/ u8 btLevel; - /*0x1B*/ u8 var1b; - /*0x1C*/ u8 var1c; - /*0x1D*/ u8 language; +struct TVShowMassOutbreak { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 moves[4]; + /*0x0C*/ u16 species; + /*0x0E*/ u16 var0E; + /*0x10*/ u8 locationMapNum; + /*0x11*/ u8 locationMapGroup; + /*0x12*/ u8 var12; + /*0x13*/ u8 probability; + /*0x14*/ u8 level; + /*0x15*/ u8 var15; + /*0x16*/ u16 var16; + /*0x18*/ u8 language; + u8 pad19[11]; }; typedef union TVShow { @@ -370,15 +376,16 @@ typedef union TVShow { struct TVShowFanClubLetter fanclubLetter; struct TVShowRecentHappenings recentHappenings; struct TVShowFanclubOpinions fanclubOpinions; + struct TVShowUnknownType04 unkShow04; struct TVShowNameRaterShow nameRaterShow; - struct TVShowMassOutbreak massOutbreak; - struct TVShowPokemonAngler pokemonAngler; - struct TVShowWorldOfMasters worldOfMasters; - struct TVShowSmartShopper smartshopperShow; struct TVShowBravoTrainerPokemonProfiles bravoTrainer; struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower; struct TVShowPokemonToday pokemonToday; + struct TVShowSmartShopper smartshopperShow; struct TVShowPokemonTodayFailed pokemonTodayFailed; + struct TVShowPokemonAngler pokemonAngler; + struct TVShowWorldOfMasters worldOfMasters; + struct TVShowMassOutbreak massOutbreak; } TVShow; struct MailStruct @@ -438,34 +445,35 @@ typedef union SB_Struct { } SB_Struct; // size is 0x198 -struct SaveTVStruct { - TVShow shows[24]; - TVShow unknown_2A98; -}; - struct UnknownSaveStruct2ABC { - u8 val0; - u8 val1; - u16 val2; + u8 val0; + u8 val1; + u16 val2; }; struct GabbyAndTyData { - u16 mon1; - u16 mon2; - u16 move1; - u16 move2; - u8 mapnum; - u8 val9; - u8 valA_0:1; - u8 valA_1:1; - u8 valA_2:1; - u8 valA_3:1; - u8 valA_4:4; - u8 valB; + /*2b10*/ u16 mon1; + /*2b12*/ u16 mon2; + /*2b14*/ u16 lastMove; + /*2b16*/ u16 quote; + /*2b18*/ u8 mapnum; + /*2b19*/ u8 battleNum; + /*2b1a*/ u8 valA_0:1; + /*2b1a*/ u8 valA_1:1; + /*2b1a*/ u8 valA_2:1; + /*2b1a*/ u8 valA_3:1; + /*2b1a*/ u8 valA_4:1; + /*2b1a*/ u8 valA_5:3; + /*2b1b*/ u8 valB_0:1; + /*2b1b*/ u8 valB_1:1; + /*2b1b*/ u8 valB_2:1; + /*2b1b*/ u8 valB_3:1; + /*2b1b*/ u8 valB_4:1; + /*2b1b*/ u8 valB_5:3; }; struct RecordMixing_UnknownStruct { - u8 data[0x38]; + u8 data[0x38]; }; struct SaveBlock1 /* 0x02025734 */ @@ -517,7 +525,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2704*/ u8 decorDoll[40]; /*0x272C*/ u8 decorCushion[10]; /*0x2736*/ u8 padding_2736[2]; - /*0x2738*/ struct SaveTVStruct tvShows; + /*0x2738*/ TVShow tvShows[25]; /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16]; /*0x2AFC*/ u16 outbreakPokemonSpecies; /*0x2AFE*/ u8 outbreakLocationMapNum; @@ -529,7 +537,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2B0C*/ u8 outbreakUnk4; /*0x2B0D*/ u8 outbreakPokemonProbability; /*0x2B0E*/ u16 outbreakUnk5; - /*0x2B18*/ struct GabbyAndTyData gabbyAndTyData; + /*0x2B10*/ struct GabbyAndTyData gabbyAndTyData; /*0x2B1C*/ u16 unk2B1C[6]; /*0x2B28*/ u16 unk2B28[6]; /*0x2B34*/ u16 unk2B34[6]; @@ -584,8 +592,8 @@ struct Pokedex struct SaveBlock2_Sub { /*0x0000, 0x00A4*/ u8 filler_000[0x3D8]; - /*0x03D8, 0x0480*/ u16 var_480; - /*0x03DA, 0x0482*/ u16 var_482; + /*0x03D8, 0x0480*/ u16 var_480; + /*0x03DA, 0x0482*/ u16 var_482; /*0x03DC, 0x0484*/ u8 filler_3DC[0xD1]; /*0x04AD, 0x0555*/ u8 var_4AD; /*0x04AE, 0x0556*/ u8 var_4AE; @@ -612,11 +620,11 @@ struct SaveBlock2 /* 0x02024EA4 */ /*0x10*/ u8 playTimeMinutes; /*0x11*/ u8 playTimeSeconds; /*0x12*/ u8 playTimeVBlanks; - /*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] - /*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] + /*OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]*/ /*0x13*/ u8 optionsButtonMode; + /*OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]*/ /*0x14*/ u16 optionsTextSpeed:3; u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes - u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + /*OPTIONS_SOUND_[MONO/STEREO]*/ u16 optionsSound:1; + /*OPTIONS_BATTLE_STYLE_[SHIFT/SET]*/ u16 optionsBattleStyle:1; u16 optionsBattleSceneOff:1; // whether battle animations are disabled u16 regionMapZoom:1; // whether the map is zoomed in /*0x18*/ struct Pokedex pokedex; diff --git a/include/items.h b/include/items.h index 11cc2113c..f3c506b43 100644 --- a/include/items.h +++ b/include/items.h @@ -2,387 +2,387 @@ #define GUARD_ITEMS_H enum { - ITEM_NONE, // 0x000 - ITEM_MASTER_BALL, // 0x001 - ITEM_ULTRA_BALL, // 0x002 - ITEM_GREAT_BALL, // 0x003 - ITEM_POKE_BALL, // 0x004 - ITEM_SAFARI_BALL, // 0x005 - ITEM_NET_BALL, // 0x006 - ITEM_DIVE_BALL, // 0x007 - ITEM_NEST_BALL, // 0x008 - ITEM_REPEAT_BALL, // 0x009 - ITEM_TIMER_BALL, // 0x00a - ITEM_LUXURY_BALL, // 0x00b - ITEM_PREMIER_BALL, // 0x00c - ITEM_POTION, // 0x00d - ITEM_ANTIDOTE, // 0x00e - ITEM_BURN_HEAL, // 0x00f - ITEM_ICE_HEAL, // 0x010 - ITEM_AWAKENING, // 0x011 - ITEM_PARALYZE_HEAL, // 0x012 - ITEM_FULL_RESTORE, // 0x013 - ITEM_MAX_POTION, // 0x014 - ITEM_HYPER_POTION, // 0x015 - ITEM_SUPER_POTION, // 0x016 - ITEM_FULL_HEAL, // 0x017 - ITEM_REVIVE, // 0x018 - ITEM_MAX_REVIVE, // 0x019 - ITEM_FRESH_WATER, // 0x01a - ITEM_SODA_POP, // 0x01b - ITEM_LEMONADE, // 0x01c - ITEM_MOOMOO_MILK, // 0x01d - ITEM_ENERGY_POWDER, // 0x01e - ITEM_ENERGY_ROOT, // 0x01f - ITEM_HEAL_POWDER, // 0x020 - ITEM_REVIVAL_HERB, // 0x021 - ITEM_ETHER, // 0x022 - ITEM_MAX_ETHER, // 0x023 - ITEM_ELIXIR, // 0x024 - ITEM_MAX_ELIXIR, // 0x025 - ITEM_LAVA_COOKIE, // 0x026 - ITEM_BLUE_FLUTE, // 0x027 - ITEM_YELLOW_FLUTE, // 0x028 - ITEM_RED_FLUTE, // 0x029 - ITEM_BLACK_FLUTE, // 0x02a - ITEM_WHITE_FLUTE, // 0x02b - ITEM_BERRY_JUICE, // 0x02c - ITEM_SACRED_ASH, // 0x02d - ITEM_SHOAL_SALT, // 0x02e - ITEM_SHOAL_SHELL, // 0x02f - ITEM_RED_SHARD, // 0x030 - ITEM_BLUE_SHARD, // 0x031 - ITEM_YELLOW_SHARD, // 0x032 - ITEM_GREEN_SHARD, // 0x033 - ITEM_034, - ITEM_035, - ITEM_036, - ITEM_037, - ITEM_038, - ITEM_039, - ITEM_03A, - ITEM_03B, - ITEM_03C, - ITEM_03D, - ITEM_03E, - ITEM_HP_UP, // 0x03f - ITEM_PROTEIN, // 0x040 - ITEM_IRON, // 0x041 - ITEM_CARBOS, // 0x042 - ITEM_CALCIUM, // 0x043 - ITEM_RARE_CANDY, // 0x044 - ITEM_PP_UP, // 0x045 - ITEM_ZINC, // 0x046 - ITEM_PP_MAX, // 0x047 - ITEM_048, - ITEM_GUARD_SPEC, // 0x049 - ITEM_DIRE_HIT, // 0x04a - ITEM_X_ATTACK, // 0x04b - ITEM_X_DEFEND, // 0x04c - ITEM_X_SPEED, // 0x04d - ITEM_X_ACCURACY, // 0x04e - ITEM_X_SPECIAL, // 0x04f - ITEM_POKE_DOLL, // 0x050 - ITEM_FLUFFY_TAIL, // 0x051 - ITEM_052, - ITEM_SUPER_REPEL, // 0x053 - ITEM_MAX_REPEL, // 0x054 - ITEM_ESCAPE_ROPE, // 0x055 - ITEM_REPEL, // 0x056 - ITEM_057, - ITEM_058, - ITEM_059, - ITEM_05A, - ITEM_05B, - ITEM_05C, - ITEM_SUN_STONE, // 0x05d - ITEM_MOON_STONE, // 0x05e - ITEM_FIRE_STONE, // 0x05f - ITEM_THUNDER_STONE, // 0x060 - ITEM_WATER_STONE, // 0x061 - ITEM_LEAF_STONE, // 0x062 - ITEM_063, - ITEM_064, - ITEM_065, - ITEM_066, - ITEM_TINY_MUSHROOM, // 0x067 - ITEM_BIG_MUSHROOM, // 0x068 - ITEM_069, - ITEM_PEARL, // 0x06a - ITEM_BIG_PEARL, // 0x06b - ITEM_STARDUST, // 0x06c - ITEM_STAR_PIECE, // 0x06d - ITEM_NUGGET, // 0x06e - ITEM_HEART_SCALE, // 0x06f - ITEM_070, - ITEM_071, - ITEM_072, - ITEM_073, - ITEM_074, - ITEM_075, - ITEM_076, - ITEM_077, - ITEM_078, - ITEM_ORANGE_MAIL, // 0x079 - ITEM_HARBOR_MAIL, // 0x07a - ITEM_GLITTER_MAIL, // 0x07b - ITEM_MECH_MAIL, // 0x07c - ITEM_WOOD_MAIL, // 0x07d - ITEM_WAVE_MAIL, // 0x07e - ITEM_BEAD_MAIL, // 0x07f - ITEM_SHADOW_MAIL, // 0x080 - ITEM_TROPIC_MAIL, // 0x081 - ITEM_DREAM_MAIL, // 0x082 - ITEM_FAB_MAIL, // 0x083 - ITEM_RETRO_MAIL, // 0x084 - ITEM_CHERI_BERRY, // 0x085 - ITEM_CHESTO_BERRY, // 0x086 - ITEM_PECHA_BERRY, // 0x087 - ITEM_RAWST_BERRY, // 0x088 - ITEM_ASPEAR_BERRY, // 0x089 - ITEM_LEPPA_BERRY, // 0x08a - ITEM_ORAN_BERRY, // 0x08b - ITEM_PERSIM_BERRY, // 0x08c - ITEM_LUM_BERRY, // 0x08d - ITEM_SITRUS_BERRY, // 0x08e - ITEM_FIGY_BERRY, // 0x08f - ITEM_WIKI_BERRY, // 0x090 - ITEM_MAGO_BERRY, // 0x091 - ITEM_AGUAV_BERRY, // 0x092 - ITEM_IAPAPA_BERRY, // 0x093 - ITEM_RAZZ_BERRY, // 0x094 - ITEM_BLUK_BERRY, // 0x095 - ITEM_NANAB_BERRY, // 0x096 - ITEM_WEPEAR_BERRY, // 0x097 - ITEM_PINAP_BERRY, // 0x098 - ITEM_POMEG_BERRY, // 0x099 - ITEM_KELPSY_BERRY, // 0x09a - ITEM_QUALOT_BERRY, // 0x09b - ITEM_HONDEW_BERRY, // 0x09c - ITEM_GREPA_BERRY, // 0x09d - ITEM_TAMATO_BERRY, // 0x09e - ITEM_CORNN_BERRY, // 0x09f - ITEM_MAGOST_BERRY, // 0x0a0 - ITEM_RABUTA_BERRY, // 0x0a1 - ITEM_NOMEL_BERRY, // 0x0a2 - ITEM_SPELON_BERRY, // 0x0a3 - ITEM_PAMTRE_BERRY, // 0x0a4 - ITEM_WATMEL_BERRY, // 0x0a5 - ITEM_DURIN_BERRY, // 0x0a6 - ITEM_BELUE_BERRY, // 0x0a7 - ITEM_LIECHI_BERRY, // 0x0a8 - ITEM_GANLON_BERRY, // 0x0a9 - ITEM_SALAC_BERRY, // 0x0aa - ITEM_PETAYA_BERRY, // 0x0ab - ITEM_APICOT_BERRY, // 0x0ac - ITEM_LANSAT_BERRY, // 0x0ad - ITEM_STARF_BERRY, // 0x0ae - ITEM_ENIGMA_BERRY, // 0x0af - ITEM_0B0, - ITEM_0B1, - ITEM_0B2, - ITEM_BRIGHT_POWDER, // 0x0b3 - ITEM_WHITE_HERB, // 0x0b4 - ITEM_MACHO_BRACE, // 0x0b5 - ITEM_EXP_SHARE, // 0x0b6 - ITEM_QUICK_CLAW, // 0x0b7 - ITEM_SOOTHE_BELL, // 0x0b8 - ITEM_MENTAL_HERB, // 0x0b9 - ITEM_CHOICE_BAND, // 0x0ba - ITEM_KINGS_ROCK, // 0x0bb - ITEM_SILVER_POWDER, // 0x0bc - ITEM_AMULET_COIN, // 0x0bd - ITEM_CLEANSE_TAG, // 0x0be - ITEM_SOUL_DEW, // 0x0bf - ITEM_DEEP_SEA_TOOTH, // 0x0c0 - ITEM_DEEP_SEA_SCALE, // 0x0c1 - ITEM_SMOKE_BALL, // 0x0c2 - ITEM_EVERSTONE, // 0x0c3 - ITEM_FOCUS_BAND, // 0x0c4 - ITEM_LUCKY_EGG, // 0x0c5 - ITEM_SCOPE_LENS, // 0x0c6 - ITEM_METAL_COAT, // 0x0c7 - ITEM_LEFTOVERS, // 0x0c8 - ITEM_DRAGON_SCALE, // 0x0c9 - ITEM_LIGHT_BALL, // 0x0ca - ITEM_SOFT_SAND, // 0x0cb - ITEM_HARD_STONE, // 0x0cc - ITEM_MIRACLE_SEED, // 0x0cd - ITEM_BLACK_GLASSES, // 0x0ce - ITEM_BLACK_BELT, // 0x0cf - ITEM_MAGNET, // 0x0d0 - ITEM_MYSTIC_WATER, // 0x0d1 - ITEM_SHARP_BEAK, // 0x0d2 - ITEM_POISON_BARB, // 0x0d3 - ITEM_NEVER_MELT_ICE, // 0x0d4 - ITEM_SPELL_TAG, // 0x0d5 - ITEM_TWISTED_SPOON, // 0x0d6 - ITEM_CHARCOAL, // 0x0d7 - ITEM_DRAGON_FANG, // 0x0d8 - ITEM_SILK_SCARF, // 0x0d9 - ITEM_UP_GRADE, // 0x0da - ITEM_SHELL_BELL, // 0x0db - ITEM_SEA_INCENSE, // 0x0dc - ITEM_LAX_INCENSE, // 0x0dd - ITEM_LUCKY_PUNCH, // 0x0de - ITEM_METAL_POWDER, // 0x0df - ITEM_THICK_CLUB, // 0x0e0 - ITEM_STICK, // 0x0e1 - ITEM_0E2, - ITEM_0E3, - ITEM_0E4, - ITEM_0E5, - ITEM_0E6, - ITEM_0E7, - ITEM_0E8, - ITEM_0E9, - ITEM_0EA, - ITEM_0EB, - ITEM_0EC, - ITEM_0ED, - ITEM_0EE, - ITEM_0EF, - ITEM_0F0, - ITEM_0F1, - ITEM_0F2, - ITEM_0F3, - ITEM_0F4, - ITEM_0F5, - ITEM_0F6, - ITEM_0F7, - ITEM_0F8, - ITEM_0F9, - ITEM_0FA, - ITEM_0FB, - ITEM_0FC, - ITEM_0FD, - ITEM_RED_SCARF, // 0x0fe - ITEM_BLUE_SCARF, // 0x0ff - ITEM_PINK_SCARF, // 0x100 - ITEM_GREEN_SCARF, // 0x101 - ITEM_YELLOW_SCARF, // 0x102 - ITEM_MACH_BIKE, // 0x103 - ITEM_COIN_CASE, // 0x104 - ITEM_ITEMFINDER, // 0x105 - ITEM_OLD_ROD, // 0x106 - ITEM_GOOD_ROD, // 0x107 - ITEM_SUPER_ROD, // 0x108 - ITEM_SS_TICKET, // 0x109 - ITEM_CONTEST_PASS, // 0x10a - ITEM_10B, - ITEM_WAILMER_PAIL, // 0x10c - ITEM_DEVON_GOODS, // 0x10d - ITEM_SOOT_SACK, // 0x10e - ITEM_BASEMENT_KEY, // 0x10f - ITEM_ACRO_BIKE, // 0x110 - ITEM_POKEBLOCK_CASE, // 0x111 - ITEM_LETTER, // 0x112 - ITEM_EON_TICKET, // 0x113 - ITEM_RED_ORB, // 0x114 - ITEM_BLUE_ORB, // 0x115 - ITEM_SCANNER, // 0x116 - ITEM_GO_GOGGLES, // 0x117 - ITEM_METEORITE, // 0x118 - ITEM_ROOM_1_KEY, // 0x119 - ITEM_ROOM_2_KEY, // 0x11a - ITEM_ROOM_4_KEY, // 0x11b - ITEM_ROOM_6_KEY, // 0x11c - ITEM_STORAGE_KEY, // 0x11d - ITEM_ROOT_FOSSIL, // 0x11e - ITEM_CLAW_FOSSIL, // 0x11f - ITEM_DEVON_SCOPE, // 0x120 - ITEM_TM01, // 0x121 - ITEM_TM02, // 0x122 - ITEM_TM03, // 0x123 - ITEM_TM04, // 0x124 - ITEM_TM05, // 0x125 - ITEM_TM06, // 0x126 - ITEM_TM07, // 0x127 - ITEM_TM08, // 0x128 - ITEM_TM09, // 0x129 - ITEM_TM10, // 0x12a - ITEM_TM11, // 0x12b - ITEM_TM12, // 0x12c - ITEM_TM13, // 0x12d - ITEM_TM14, // 0x12e - ITEM_TM15, // 0x12f - ITEM_TM16, // 0x130 - ITEM_TM17, // 0x131 - ITEM_TM18, // 0x132 - ITEM_TM19, // 0x133 - ITEM_TM20, // 0x134 - ITEM_TM21, // 0x135 - ITEM_TM22, // 0x136 - ITEM_TM23, // 0x137 - ITEM_TM24, // 0x138 - ITEM_TM25, // 0x139 - ITEM_TM26, // 0x13a - ITEM_TM27, // 0x13b - ITEM_TM28, // 0x13c - ITEM_TM29, // 0x13d - ITEM_TM30, // 0x13e - ITEM_TM31, // 0x13f - ITEM_TM32, // 0x140 - ITEM_TM33, // 0x141 - ITEM_TM34, // 0x142 - ITEM_TM35, // 0x143 - ITEM_TM36, // 0x144 - ITEM_TM37, // 0x145 - ITEM_TM38, // 0x146 - ITEM_TM39, // 0x147 - ITEM_TM40, // 0x148 - ITEM_TM41, // 0x149 - ITEM_TM42, // 0x14a - ITEM_TM43, // 0x14b - ITEM_TM44, // 0x14c - ITEM_TM45, // 0x14d - ITEM_TM46, // 0x14e - ITEM_TM47, // 0x14f - ITEM_TM48, // 0x150 - ITEM_TM49, // 0x151 - ITEM_TM50, // 0x152 - ITEM_HM01, // 0x153 - ITEM_HM02, // 0x154 - ITEM_HM03, // 0x155 - ITEM_HM04, // 0x156 - ITEM_HM05, // 0x157 - ITEM_HM06, // 0x158 - ITEM_HM07, // 0x159 - ITEM_HM08, // 0x15a - ITEM_15B, - ITEM_15C, + ITEM_NONE, // 0x000 + ITEM_MASTER_BALL, // 0x001 + ITEM_ULTRA_BALL, // 0x002 + ITEM_GREAT_BALL, // 0x003 + ITEM_POKE_BALL, // 0x004 + ITEM_SAFARI_BALL, // 0x005 + ITEM_NET_BALL, // 0x006 + ITEM_DIVE_BALL, // 0x007 + ITEM_NEST_BALL, // 0x008 + ITEM_REPEAT_BALL, // 0x009 + ITEM_TIMER_BALL, // 0x00a + ITEM_LUXURY_BALL, // 0x00b + ITEM_PREMIER_BALL, // 0x00c + ITEM_POTION, // 0x00d + ITEM_ANTIDOTE, // 0x00e + ITEM_BURN_HEAL, // 0x00f + ITEM_ICE_HEAL, // 0x010 + ITEM_AWAKENING, // 0x011 + ITEM_PARALYZE_HEAL, // 0x012 + ITEM_FULL_RESTORE, // 0x013 + ITEM_MAX_POTION, // 0x014 + ITEM_HYPER_POTION, // 0x015 + ITEM_SUPER_POTION, // 0x016 + ITEM_FULL_HEAL, // 0x017 + ITEM_REVIVE, // 0x018 + ITEM_MAX_REVIVE, // 0x019 + ITEM_FRESH_WATER, // 0x01a + ITEM_SODA_POP, // 0x01b + ITEM_LEMONADE, // 0x01c + ITEM_MOOMOO_MILK, // 0x01d + ITEM_ENERGY_POWDER, // 0x01e + ITEM_ENERGY_ROOT, // 0x01f + ITEM_HEAL_POWDER, // 0x020 + ITEM_REVIVAL_HERB, // 0x021 + ITEM_ETHER, // 0x022 + ITEM_MAX_ETHER, // 0x023 + ITEM_ELIXIR, // 0x024 + ITEM_MAX_ELIXIR, // 0x025 + ITEM_LAVA_COOKIE, // 0x026 + ITEM_BLUE_FLUTE, // 0x027 + ITEM_YELLOW_FLUTE, // 0x028 + ITEM_RED_FLUTE, // 0x029 + ITEM_BLACK_FLUTE, // 0x02a + ITEM_WHITE_FLUTE, // 0x02b + ITEM_BERRY_JUICE, // 0x02c + ITEM_SACRED_ASH, // 0x02d + ITEM_SHOAL_SALT, // 0x02e + ITEM_SHOAL_SHELL, // 0x02f + ITEM_RED_SHARD, // 0x030 + ITEM_BLUE_SHARD, // 0x031 + ITEM_YELLOW_SHARD, // 0x032 + ITEM_GREEN_SHARD, // 0x033 + ITEM_034, + ITEM_035, + ITEM_036, + ITEM_037, + ITEM_038, + ITEM_039, + ITEM_03A, + ITEM_03B, + ITEM_03C, + ITEM_03D, + ITEM_03E, + ITEM_HP_UP, // 0x03f + ITEM_PROTEIN, // 0x040 + ITEM_IRON, // 0x041 + ITEM_CARBOS, // 0x042 + ITEM_CALCIUM, // 0x043 + ITEM_RARE_CANDY, // 0x044 + ITEM_PP_UP, // 0x045 + ITEM_ZINC, // 0x046 + ITEM_PP_MAX, // 0x047 + ITEM_048, + ITEM_GUARD_SPEC, // 0x049 + ITEM_DIRE_HIT, // 0x04a + ITEM_X_ATTACK, // 0x04b + ITEM_X_DEFEND, // 0x04c + ITEM_X_SPEED, // 0x04d + ITEM_X_ACCURACY, // 0x04e + ITEM_X_SPECIAL, // 0x04f + ITEM_POKE_DOLL, // 0x050 + ITEM_FLUFFY_TAIL, // 0x051 + ITEM_052, + ITEM_SUPER_REPEL, // 0x053 + ITEM_MAX_REPEL, // 0x054 + ITEM_ESCAPE_ROPE, // 0x055 + ITEM_REPEL, // 0x056 + ITEM_057, + ITEM_058, + ITEM_059, + ITEM_05A, + ITEM_05B, + ITEM_05C, + ITEM_SUN_STONE, // 0x05d + ITEM_MOON_STONE, // 0x05e + ITEM_FIRE_STONE, // 0x05f + ITEM_THUNDER_STONE, // 0x060 + ITEM_WATER_STONE, // 0x061 + ITEM_LEAF_STONE, // 0x062 + ITEM_063, + ITEM_064, + ITEM_065, + ITEM_066, + ITEM_TINY_MUSHROOM, // 0x067 + ITEM_BIG_MUSHROOM, // 0x068 + ITEM_069, + ITEM_PEARL, // 0x06a + ITEM_BIG_PEARL, // 0x06b + ITEM_STARDUST, // 0x06c + ITEM_STAR_PIECE, // 0x06d + ITEM_NUGGET, // 0x06e + ITEM_HEART_SCALE, // 0x06f + ITEM_070, + ITEM_071, + ITEM_072, + ITEM_073, + ITEM_074, + ITEM_075, + ITEM_076, + ITEM_077, + ITEM_078, + ITEM_ORANGE_MAIL, // 0x079 + ITEM_HARBOR_MAIL, // 0x07a + ITEM_GLITTER_MAIL, // 0x07b + ITEM_MECH_MAIL, // 0x07c + ITEM_WOOD_MAIL, // 0x07d + ITEM_WAVE_MAIL, // 0x07e + ITEM_BEAD_MAIL, // 0x07f + ITEM_SHADOW_MAIL, // 0x080 + ITEM_TROPIC_MAIL, // 0x081 + ITEM_DREAM_MAIL, // 0x082 + ITEM_FAB_MAIL, // 0x083 + ITEM_RETRO_MAIL, // 0x084 + ITEM_CHERI_BERRY, // 0x085 + ITEM_CHESTO_BERRY, // 0x086 + ITEM_PECHA_BERRY, // 0x087 + ITEM_RAWST_BERRY, // 0x088 + ITEM_ASPEAR_BERRY, // 0x089 + ITEM_LEPPA_BERRY, // 0x08a + ITEM_ORAN_BERRY, // 0x08b + ITEM_PERSIM_BERRY, // 0x08c + ITEM_LUM_BERRY, // 0x08d + ITEM_SITRUS_BERRY, // 0x08e + ITEM_FIGY_BERRY, // 0x08f + ITEM_WIKI_BERRY, // 0x090 + ITEM_MAGO_BERRY, // 0x091 + ITEM_AGUAV_BERRY, // 0x092 + ITEM_IAPAPA_BERRY, // 0x093 + ITEM_RAZZ_BERRY, // 0x094 + ITEM_BLUK_BERRY, // 0x095 + ITEM_NANAB_BERRY, // 0x096 + ITEM_WEPEAR_BERRY, // 0x097 + ITEM_PINAP_BERRY, // 0x098 + ITEM_POMEG_BERRY, // 0x099 + ITEM_KELPSY_BERRY, // 0x09a + ITEM_QUALOT_BERRY, // 0x09b + ITEM_HONDEW_BERRY, // 0x09c + ITEM_GREPA_BERRY, // 0x09d + ITEM_TAMATO_BERRY, // 0x09e + ITEM_CORNN_BERRY, // 0x09f + ITEM_MAGOST_BERRY, // 0x0a0 + ITEM_RABUTA_BERRY, // 0x0a1 + ITEM_NOMEL_BERRY, // 0x0a2 + ITEM_SPELON_BERRY, // 0x0a3 + ITEM_PAMTRE_BERRY, // 0x0a4 + ITEM_WATMEL_BERRY, // 0x0a5 + ITEM_DURIN_BERRY, // 0x0a6 + ITEM_BELUE_BERRY, // 0x0a7 + ITEM_LIECHI_BERRY, // 0x0a8 + ITEM_GANLON_BERRY, // 0x0a9 + ITEM_SALAC_BERRY, // 0x0aa + ITEM_PETAYA_BERRY, // 0x0ab + ITEM_APICOT_BERRY, // 0x0ac + ITEM_LANSAT_BERRY, // 0x0ad + ITEM_STARF_BERRY, // 0x0ae + ITEM_ENIGMA_BERRY, // 0x0af + ITEM_0B0, + ITEM_0B1, + ITEM_0B2, + ITEM_BRIGHT_POWDER, // 0x0b3 + ITEM_WHITE_HERB, // 0x0b4 + ITEM_MACHO_BRACE, // 0x0b5 + ITEM_EXP_SHARE, // 0x0b6 + ITEM_QUICK_CLAW, // 0x0b7 + ITEM_SOOTHE_BELL, // 0x0b8 + ITEM_MENTAL_HERB, // 0x0b9 + ITEM_CHOICE_BAND, // 0x0ba + ITEM_KINGS_ROCK, // 0x0bb + ITEM_SILVER_POWDER, // 0x0bc + ITEM_AMULET_COIN, // 0x0bd + ITEM_CLEANSE_TAG, // 0x0be + ITEM_SOUL_DEW, // 0x0bf + ITEM_DEEP_SEA_TOOTH, // 0x0c0 + ITEM_DEEP_SEA_SCALE, // 0x0c1 + ITEM_SMOKE_BALL, // 0x0c2 + ITEM_EVERSTONE, // 0x0c3 + ITEM_FOCUS_BAND, // 0x0c4 + ITEM_LUCKY_EGG, // 0x0c5 + ITEM_SCOPE_LENS, // 0x0c6 + ITEM_METAL_COAT, // 0x0c7 + ITEM_LEFTOVERS, // 0x0c8 + ITEM_DRAGON_SCALE, // 0x0c9 + ITEM_LIGHT_BALL, // 0x0ca + ITEM_SOFT_SAND, // 0x0cb + ITEM_HARD_STONE, // 0x0cc + ITEM_MIRACLE_SEED, // 0x0cd + ITEM_BLACK_GLASSES, // 0x0ce + ITEM_BLACK_BELT, // 0x0cf + ITEM_MAGNET, // 0x0d0 + ITEM_MYSTIC_WATER, // 0x0d1 + ITEM_SHARP_BEAK, // 0x0d2 + ITEM_POISON_BARB, // 0x0d3 + ITEM_NEVER_MELT_ICE, // 0x0d4 + ITEM_SPELL_TAG, // 0x0d5 + ITEM_TWISTED_SPOON, // 0x0d6 + ITEM_CHARCOAL, // 0x0d7 + ITEM_DRAGON_FANG, // 0x0d8 + ITEM_SILK_SCARF, // 0x0d9 + ITEM_UP_GRADE, // 0x0da + ITEM_SHELL_BELL, // 0x0db + ITEM_SEA_INCENSE, // 0x0dc + ITEM_LAX_INCENSE, // 0x0dd + ITEM_LUCKY_PUNCH, // 0x0de + ITEM_METAL_POWDER, // 0x0df + ITEM_THICK_CLUB, // 0x0e0 + ITEM_STICK, // 0x0e1 + ITEM_0E2, + ITEM_0E3, + ITEM_0E4, + ITEM_0E5, + ITEM_0E6, + ITEM_0E7, + ITEM_0E8, + ITEM_0E9, + ITEM_0EA, + ITEM_0EB, + ITEM_0EC, + ITEM_0ED, + ITEM_0EE, + ITEM_0EF, + ITEM_0F0, + ITEM_0F1, + ITEM_0F2, + ITEM_0F3, + ITEM_0F4, + ITEM_0F5, + ITEM_0F6, + ITEM_0F7, + ITEM_0F8, + ITEM_0F9, + ITEM_0FA, + ITEM_0FB, + ITEM_0FC, + ITEM_0FD, + ITEM_RED_SCARF, // 0x0fe + ITEM_BLUE_SCARF, // 0x0ff + ITEM_PINK_SCARF, // 0x100 + ITEM_GREEN_SCARF, // 0x101 + ITEM_YELLOW_SCARF, // 0x102 + ITEM_MACH_BIKE, // 0x103 + ITEM_COIN_CASE, // 0x104 + ITEM_ITEMFINDER, // 0x105 + ITEM_OLD_ROD, // 0x106 + ITEM_GOOD_ROD, // 0x107 + ITEM_SUPER_ROD, // 0x108 + ITEM_SS_TICKET, // 0x109 + ITEM_CONTEST_PASS, // 0x10a + ITEM_10B, + ITEM_WAILMER_PAIL, // 0x10c + ITEM_DEVON_GOODS, // 0x10d + ITEM_SOOT_SACK, // 0x10e + ITEM_BASEMENT_KEY, // 0x10f + ITEM_ACRO_BIKE, // 0x110 + ITEM_POKEBLOCK_CASE, // 0x111 + ITEM_LETTER, // 0x112 + ITEM_EON_TICKET, // 0x113 + ITEM_RED_ORB, // 0x114 + ITEM_BLUE_ORB, // 0x115 + ITEM_SCANNER, // 0x116 + ITEM_GO_GOGGLES, // 0x117 + ITEM_METEORITE, // 0x118 + ITEM_ROOM_1_KEY, // 0x119 + ITEM_ROOM_2_KEY, // 0x11a + ITEM_ROOM_4_KEY, // 0x11b + ITEM_ROOM_6_KEY, // 0x11c + ITEM_STORAGE_KEY, // 0x11d + ITEM_ROOT_FOSSIL, // 0x11e + ITEM_CLAW_FOSSIL, // 0x11f + ITEM_DEVON_SCOPE, // 0x120 + ITEM_TM01, // 0x121 + ITEM_TM02, // 0x122 + ITEM_TM03, // 0x123 + ITEM_TM04, // 0x124 + ITEM_TM05, // 0x125 + ITEM_TM06, // 0x126 + ITEM_TM07, // 0x127 + ITEM_TM08, // 0x128 + ITEM_TM09, // 0x129 + ITEM_TM10, // 0x12a + ITEM_TM11, // 0x12b + ITEM_TM12, // 0x12c + ITEM_TM13, // 0x12d + ITEM_TM14, // 0x12e + ITEM_TM15, // 0x12f + ITEM_TM16, // 0x130 + ITEM_TM17, // 0x131 + ITEM_TM18, // 0x132 + ITEM_TM19, // 0x133 + ITEM_TM20, // 0x134 + ITEM_TM21, // 0x135 + ITEM_TM22, // 0x136 + ITEM_TM23, // 0x137 + ITEM_TM24, // 0x138 + ITEM_TM25, // 0x139 + ITEM_TM26, // 0x13a + ITEM_TM27, // 0x13b + ITEM_TM28, // 0x13c + ITEM_TM29, // 0x13d + ITEM_TM30, // 0x13e + ITEM_TM31, // 0x13f + ITEM_TM32, // 0x140 + ITEM_TM33, // 0x141 + ITEM_TM34, // 0x142 + ITEM_TM35, // 0x143 + ITEM_TM36, // 0x144 + ITEM_TM37, // 0x145 + ITEM_TM38, // 0x146 + ITEM_TM39, // 0x147 + ITEM_TM40, // 0x148 + ITEM_TM41, // 0x149 + ITEM_TM42, // 0x14a + ITEM_TM43, // 0x14b + ITEM_TM44, // 0x14c + ITEM_TM45, // 0x14d + ITEM_TM46, // 0x14e + ITEM_TM47, // 0x14f + ITEM_TM48, // 0x150 + ITEM_TM49, // 0x151 + ITEM_TM50, // 0x152 + ITEM_HM01, // 0x153 + ITEM_HM02, // 0x154 + ITEM_HM03, // 0x155 + ITEM_HM04, // 0x156 + ITEM_HM05, // 0x157 + ITEM_HM06, // 0x158 + ITEM_HM07, // 0x159 + ITEM_HM08, // 0x15a + ITEM_15B, + ITEM_15C, - // FireRed/LeafGreen - ITEM_OAKS_PARCEL, // 0x15d - ITEM_POKE_FLUTE, // 0x15e - ITEM_SECRET_KEY, // 0x15f - ITEM_BIKE_VOUCHER, // 0x160 - ITEM_GOLD_TEETH, // 0x161 - ITEM_OLD_AMBER, // 0x162 - ITEM_CARD_KEY, // 0x163 - ITEM_LIFT_KEY, // 0x164 - ITEM_HELIX_FOSSIL, // 0x165 - ITEM_DOME_FOSSIL, // 0x166 - ITEM_SILPH_SCOPE, // 0x167 - ITEM_BICYCLE, // 0x168 - ITEM_TOWN_MAP, // 0x169 - ITEM_VS_SEEKER, // 0x16a - ITEM_FAME_CHECKER, // 0x16b - ITEM_TM_CASE, // 0x16c - ITEM_BERRY_POUCH, // 0x16d - ITEM_TEACHY_TV, // 0x16e - ITEM_TRI_PASS, // 0x16f - ITEM_RAINBOW_PASS, // 0x170 - ITEM_TEA, // 0x171 - ITEM_MYSTIC_TICKET, // 0x172 - ITEM_AURORA_TICKET, // 0x173 - ITEM_POWDER_JAR, // 0x174 - ITEM_RUBY, // 0x175 - ITEM_SAPPHIRE, // 0x176 + // FireRed/LeafGreen + ITEM_OAKS_PARCEL, // 0x15d + ITEM_POKE_FLUTE, // 0x15e + ITEM_SECRET_KEY, // 0x15f + ITEM_BIKE_VOUCHER, // 0x160 + ITEM_GOLD_TEETH, // 0x161 + ITEM_OLD_AMBER, // 0x162 + ITEM_CARD_KEY, // 0x163 + ITEM_LIFT_KEY, // 0x164 + ITEM_HELIX_FOSSIL, // 0x165 + ITEM_DOME_FOSSIL, // 0x166 + ITEM_SILPH_SCOPE, // 0x167 + ITEM_BICYCLE, // 0x168 + ITEM_TOWN_MAP, // 0x169 + ITEM_VS_SEEKER, // 0x16a + ITEM_FAME_CHECKER, // 0x16b + ITEM_TM_CASE, // 0x16c + ITEM_BERRY_POUCH, // 0x16d + ITEM_TEACHY_TV, // 0x16e + ITEM_TRI_PASS, // 0x16f + ITEM_RAINBOW_PASS, // 0x170 + ITEM_TEA, // 0x171 + ITEM_MYSTIC_TICKET, // 0x172 + ITEM_AURORA_TICKET, // 0x173 + ITEM_POWDER_JAR, // 0x174 + ITEM_RUBY, // 0x175 + ITEM_SAPPHIRE, // 0x176 - // Emerald - ITEM_MAGMA_EMBLEM, // 0x177 - ITEM_OLD_SEA_MAP, // 0x178 + // Emerald + ITEM_MAGMA_EMBLEM, // 0x177 + ITEM_OLD_SEA_MAP, // 0x178 }; #endif // GUARD_ITEMS_H diff --git a/include/menu.h b/include/menu.h index cb5efa448..09aa6b750 100644 --- a/include/menu.h +++ b/include/menu.h @@ -9,6 +9,18 @@ struct MenuAction u8 (*func)(); }; +struct MenuAction2 +{ + const u8 *text; + void (*func)(u8); +}; + +struct MenuAction3 +{ + void (*func1)(u8); + void (*func2)(u8); +}; + void CloseMenu(void); void AppendToList(u8 *list, u8 *pindex, u32 value); void InitMenuWindow(const struct WindowConfig *); @@ -52,7 +64,7 @@ s8 ProcessMenuInputNoWrap_(void); u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8); u8 sub_8072A18(const u8 *, u8, u16, u8, u32); u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32); -int sub_8072AB0(u8 *, u8, u16, u8, u8, u32); +int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32); void MenuPrint_RightAligned(u8 *, u8, u8); void sub_8072B80(u8 *, u8, u8, u8 *); void sub_8072BD8(const u8 *, u8, u8, u16); @@ -69,6 +81,6 @@ void RedrawMenuCursor(u8, u8); void unref_sub_8072DC0(void); void sub_8072DCC(u8); void sub_8072DDC(u8); -void sub_8072DEC(void); +void HandleDestroyMenuCursors(void); #endif // GUARD_MENU_H diff --git a/include/menu_cursor.h b/include/menu_cursor.h index cc6cc16bc..ca82ef244 100644 --- a/include/menu_cursor.h +++ b/include/menu_cursor.h @@ -7,7 +7,7 @@ void sub_814A590(void); u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5); u8 sub_814A758(u8 a1, u8 a2, u8 a3, u8 a4); u8 unref_sub_814A7AC(u8 a1, u16 a2, u8 a3); -void sub_814A7FC(void); +void DestroyMenuCursor(void); void sub_814A880(u8 a1, u8 a2); void sub_814A904(void); void sub_814A958(u8 a1); diff --git a/include/naming_screen.h b/include/naming_screen.h index 62d0c0029..d136417ba 100644 --- a/include/naming_screen.h +++ b/include/naming_screen.h @@ -45,7 +45,7 @@ struct NamingScreenData /*0x10*/ u8 unk10; /*0x11*/ u8 textBuffer[0x10]; /*0x21*/ u8 filler21[0x13]; - const struct NamingScreenTemplate *template; + const struct NamingScreenTemplate *template; /*0x38*/ u8 *destBuffer; /*0x3C*/ u16 unk3C; //savedKeyRepeatStartDelay /*0x3E*/ u16 unk3E; diff --git a/include/palette.h b/include/palette.h index 37fcb4d65..193773d24 100644 --- a/include/palette.h +++ b/include/palette.h @@ -16,22 +16,22 @@ enum struct PaletteFadeControl { - u32 multipurpose1; - u8 delayCounter:6; - u16 y:5; // blend coefficient - u16 targetY:5; // target blend coefficient - u16 blendColor:15; - u16 active:1; - u16 multipurpose2:6; - u16 yDec:1; // whether blend coefficient is decreasing - u16 bufferTransferDisabled:1; - u16 mode:2; - u16 shouldResetBlendRegisters:1; - u16 hardwareFadeFinishing:1; - u16 softwareFadeFinishingCounter:5; - u16 softwareFadeFinishing:1; - u16 objPaletteToggle:1; - u8 deltaY:4; // rate of change of blend coefficient + /*0x00*/ u32 multipurpose1; + /*0x04*/ u8 delayCounter:6; + /*0x05*/ u16 y:5; // blend coefficient + /*0x05-06*/ u16 targetY:5; // target blend coefficient + /*0x07*/ u16 blendColor:15; + /*0x07*/ u16 active:1; + /*0x08*/ u16 multipurpose2:6; + /*0x08*/ u16 yDec:1; // whether blend coefficient is decreasing + /*0x08*/ u16 bufferTransferDisabled:1; + /*0x09*/ u16 mode:2; + /*0x09*/ u16 shouldResetBlendRegisters:1; + /*0x09*/ u16 hardwareFadeFinishing:1; + /*0x09-0a*/ u16 softwareFadeFinishingCounter:5; + /*0x0a*/ u16 softwareFadeFinishing:1; + /*0x0a*/ u16 objPaletteToggle:1; + /*0x0a*/ u8 deltaY:4; // rate of change of blend coefficient }; extern struct PaletteFadeControl gPaletteFade; diff --git a/include/pokedex.h b/include/pokedex.h index 61597981b..a243e6064 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -135,7 +135,7 @@ void sub_8090A3C(u8); void sub_8090C68(void); u8 *GetPokemonCategory(u16); -s8 sub_8090D90(u16, u8); +s8 GetNationalPokedexFlag(u16, u8); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); bool8 sub_8090FC0(void); diff --git a/include/save.h b/include/save.h index 46bf48d60..3feaa1f3d 100644 --- a/include/save.h +++ b/include/save.h @@ -39,12 +39,12 @@ enum // Do save types enum { - NORMAL_SAVE, - LINK_SAVE, - EREADER_SAVE, // mossdeep event - HOF_SAVE, - DIFFERENT_FILE_SAVE, - HOF_DELETE_SAVE // unused + NORMAL_SAVE, + LINK_SAVE, + EREADER_SAVE, // mossdeep event + HOF_SAVE, + DIFFERENT_FILE_SAVE, + HOF_DELETE_SAVE // unused }; void ClearSaveData(void); diff --git a/include/script.h b/include/script.h index a4c7dd575..4070a838f 100644 --- a/include/script.h +++ b/include/script.h @@ -4,6 +4,7 @@ struct ScriptContext; typedef bool8 (*ScrCmdFunc)(struct ScriptContext *); +typedef u8 Script[]; struct ScriptContext { @@ -54,5 +55,6 @@ u32 CalculateRamScriptChecksum(void); void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); u8 *GetRamScript(u8 objectId, u8 *script); +u16 gScriptResult; #endif // GUARD_SCRIPT_H diff --git a/include/songs.h b/include/songs.h index d7829479f..51948fba8 100644 --- a/include/songs.h +++ b/include/songs.h @@ -93,7 +93,7 @@ enum SE_T_KAMI, SE_T_KAMI2, SE_ELEBETA, - SE_HINSI, + /*0x5A*/ SE_HINSI, SE_EXPMAX, SE_TAMAKORO, SE_TAMAKORO_E, diff --git a/include/sprite.h b/include/sprite.h index bda635885..13c03ab51 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -16,6 +16,8 @@ struct SpriteFrameImage u16 size; }; +#define obj_frame_tiles(ptr) {.data = (u8 *)ptr, .size = sizeof ptr} + struct SpritePalette { const u16 *data; @@ -142,7 +144,7 @@ struct SpriteTemplate u16 paletteTag; const struct OamData *oam; const union AnimCmd *const *anims; - struct SpriteFrameImage *images; + const struct SpriteFrameImage *images; const union AffineAnimCmd *const *affineAnims; void (*callback)(struct Sprite *); }; diff --git a/include/task.h b/include/task.h index d2b2302cf..6c6efdf4f 100644 --- a/include/task.h +++ b/include/task.h @@ -5,12 +5,12 @@ typedef void (*TaskFunc)(u8 taskId); struct Task { - TaskFunc func; - bool8 isActive; - u8 prev; - u8 next; - u8 priority; - s16 data[16]; + /*0x00*/ TaskFunc func; + /*0x04*/ bool8 isActive; + /*0x05*/ u8 prev; + /*0x06*/ u8 next; + /*0x07*/ u8 priority; + /*0x08*/ s16 data[16]; }; extern struct Task gTasks[]; diff --git a/include/trainer_see.h b/include/trainer_see.h index b80a41641..b80a41641 100755..100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h diff --git a/ld_script.txt b/ld_script.txt index 3ebd0b8a4..a2555016c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -59,7 +59,7 @@ SECTIONS { asm/battle_6.o(.text); src/battle_6.o(.text); asm/battle_6.o(.text_8030464); - asm/battle_7.o(.text); + src/battle_7.o(.text); asm/battle_8.o(.text); asm/battle_9.o(.text); asm/battle_10.o(.text); @@ -172,12 +172,6 @@ SECTIONS { src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); src/tv.o(.text); - asm/tv.o(.text); - src/tv.o(.text_a); - asm/tv.o(.text_80BE8EC); - src/tv.o(.dotvshow); - asm/tv.o(.dotvshow); - src/tv.o(.text_c); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); src/field_poison.o(.text); @@ -205,9 +199,7 @@ SECTIONS { src/heal_location.o(.text); asm/region_map.o(.text); asm/cute_sketch.o(.text); - asm/decoration.o(.text); src/decoration.o(.text); - asm/decoration.o(.text_80FE868); asm/slot_machine.o(.text); src/slot_machine.o(.text); asm/slot_machine.o(.text_8104D30) @@ -264,7 +256,6 @@ SECTIONS { asm/use_pokeblock.o(.text); asm/battle_anim_8137220.o(.text); src/player_pc.o(.text); - asm/player_pc.o(.text); src/intro.o(.text); src/field_region_map.o(.text); asm/battle_anim_813F0F4.o(.text); @@ -439,7 +430,7 @@ SECTIONS { src/heal_location.o(.rodata); data/region_map.o(.rodata); data/cute_sketch.o(.rodata); - data/decoration.o(.rodata); + src/decoration.o(.rodata); data/slot_machine.o(.rodata); src/contest_painting.o(.rodata); src/battle_ai.o(.rodata); diff --git a/shared_syms.txt b/shared_syms.txt index 16d4138e5..884f0e89d 100644 --- a/shared_syms.txt +++ b/shared_syms.txt @@ -22,7 +22,7 @@ unk_2016C00 = 0x2016C00; gTransformStatuses = 0x2017800; unk_2017810 = 0x2017810; -unk_201FE00 = 0x201FE00; +gMailboxInfo = 0x201FE00; gSecretBaseRecord = 0x2017000; diff --git a/src/battle_2.c b/src/battle_2.c index 79d62ce69..c147bdb95 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -55,48 +55,6 @@ struct UnknownPokemonStruct2 /*0x1D*/ u8 language; }; -struct UnknownStruct9 -{ - u8 unk0; - u16 unk2; -}; - -struct UnknownStruct10 -{ - u8 unk0_0:1; - u8 unk0_1:1; - u8 unk0_2:1; - u8 filler1[1]; - u8 unk2; - u8 unk3; - u8 filler4[8]; -}; - -struct UnknownStruct11 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 unk5_0:1; - u8 unk5_1:1; - u16 unk6; - u8 unk8[10]; - u8 unk12; - u8 unk13; - u8 unk14[10]; - u8 filler1E[2]; - u16 unk20; - u16 unk22; - u16 unk24; - u16 unk26; - u16 unk28; - u8 unk2A[10]; - u8 filler34[2]; - u8 unk36[10]; -}; - struct UnknownStruct12 { u32 unk0; @@ -172,8 +130,6 @@ extern u8 ewram[]; #define ewram17100 ((u32 *)(ewram + 0x17100)) #define ewram17130 (ewram[0x17130]) #define ewram17160 (ewram[0x17160]) -#define ewram17800 ((struct UnknownStruct9 *)(ewram + 0x17800)) -#define ewram17810 ((struct UnknownStruct10 *)(ewram + 0x17810)) #define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000)) extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; @@ -236,7 +192,7 @@ extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; extern MainCallback gUnknown_030042D0; extern void (*gUnknown_030042D4)(void); -extern struct UnknownStruct11 gUnknown_030042E0; +extern struct Struct30042E0 gUnknown_030042E0; extern u8 gUnknown_03004324; extern void (*gUnknown_03004330[])(void); extern u8 gUnknown_03004340[]; @@ -282,7 +238,7 @@ extern void dp01_build_cmdbuf_x2E_a(u8 a, u8 b); extern void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a); extern void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); extern void dp01_battle_side_mark_buffer_for_execution(); -extern u8 sub_8090D90(); +extern u8 GetNationalPokedexFlag(); extern void sub_800C704(u8, u8, u8); extern u8 sub_8018324(); extern u8 sub_801A02C(); @@ -2065,14 +2021,14 @@ void sub_8011384(void) } if (battle_side_get_owner(gUnknown_02024A60) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); } else { if (battle_side_get_owner(gUnknown_02024A60) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { - sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); dp01_build_cmdbuf_x04_4_4_4(0); dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); } @@ -2227,7 +2183,7 @@ void bc_801362C(void) { if (battle_side_get_owner(gUnknown_02024A60) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); } gUnknown_030042D4 = sub_8011970; } diff --git a/src/battle_7.c b/src/battle_7.c new file mode 100644 index 000000000..50f348406 --- /dev/null +++ b/src/battle_7.c @@ -0,0 +1,1236 @@ +#include "global.h" +#include "asm.h" +#include "battle.h" +#include "battle_anim.h" +#include "battle_interface.h" +#include "blend_palette.h" +#include "data2.h" +#include "decompress.h" +#include "main.h" +#include "m4a.h" +#include "palette.h" +#include "pokemon.h" +#include "songs.h" +#include "sound.h" +#include "species.h" +#include "sprite.h" +#include "task.h" +#include "text.h" +#include "gba/m4a_internal.h" + +struct Struct2019348 +{ + u8 filler0[2]; + u16 unk2; + u8 filler4[4]; + u32 unk8; + u32 unkC; + u32 unk10; +}; + +extern u8 gUnknown_02023A60[][0x200]; +extern u8 gUnknown_02024A60; +extern u32 gUnknown_02024A64; +extern u8 gUnknown_02024A68; +extern u16 gUnknown_02024A6A[]; +extern u8 gUnknown_02024A72[]; +extern u8 gUnknown_02024BE0[]; +extern u16 gUnknown_02024DE8; +extern u8 gUnknown_02024E6D; +extern u32 gUnknown_02024E70[]; +extern struct Window gUnknown_03004210; +extern void (*gUnknown_03004330[])(void); +extern u8 gUnknown_03004340[]; +extern u8 gUnknown_0300434C[]; +extern struct MusicPlayerInfo gMPlay_SE1; +extern struct MusicPlayerInfo gMPlay_SE2; +extern struct MusicPlayerInfo gMPlay_BGM; +extern u32 gBitTable[]; +extern u16 gBattleTypeFlags; +extern u8 gBattleMonForms[]; +extern u8 gBattleAnimPlayerMonIndex; +extern u8 gBattleAnimEnemyMonIndex; +extern void (*gAnimScriptCallback)(void); +extern u8 gAnimScriptActive; +extern const u8 *const gBattleAnims_Unknown1[]; +extern const u8 *const gBattleAnims_Unknown2[]; +extern const struct SpriteSheet gTrainerFrontPicTable[]; +extern const struct MonCoords gTrainerFrontPicCoords[]; +extern const struct SpritePalette gTrainerFrontPicPaletteTable[]; +extern const u8 gSubstituteDollTilemap[]; +extern const u8 gSubstituteDollGfx[]; +extern const u8 gSubstituteDollPal[]; +extern const struct SpriteSheet gUnknown_081FAF24; +extern const struct SpriteTemplate gSpriteTemplate_81FAF34; +extern void (*const gUnknown_081FAF5C[])(void); +extern const struct SpriteSheet gUnknown_0820A47C; +extern const struct SpriteSheet gUnknown_0820A484; +extern const struct SpriteSheet gUnknown_0820A48C[]; +extern const struct SpriteSheet gUnknown_0820A49C[]; +extern const struct SpriteSheet gUnknown_0820A4AC; +extern const struct SpriteSheet gUnknown_0820A4B4[]; +extern const struct SpritePalette gUnknown_0820A4D4[]; +extern const u8 gUnknown_08D09C48[]; + +#define ewram19348 (*(struct Struct2019348 *)(ewram + 0x19348)) + +extern void c3_0802FDF4(u8); +extern void sub_80440EC(); +extern void sub_804777C(); +extern void sub_8141828(); +extern u8 sub_8077ABC(); +extern u8 sub_8078874(u8); +extern u8 sub_8077F68(u8); +extern u8 sub_8077F7C(u8); +extern void sub_8094958(void); +extern const u16 *pokemon_get_pal(struct Pokemon *); +extern void sub_80105DC(struct Sprite *); +extern void move_anim_start_t2(); +extern const u16 *species_and_otid_get_pal(); + +void sub_80315E8(u8); +u8 sub_803163C(u8); +void sub_80316CC(u8); +void sub_8031F0C(void); +void refresh_graphics_maybe(u8, u8, u8); +void sub_80324E0(u8 a); +void sub_80327CC(void); +void sub_8032978(struct Sprite *); +void sub_80328A4(struct Sprite *); +void sub_8032AFC(void); +void sub_80332D0(void); +void sub_80334EC(void); + +void sub_80312F0(struct Sprite *sprite) +{ + u8 spriteId = sprite->data1; + + if (gSprites[spriteId].affineAnimEnded && !gSprites[spriteId].invisible) + { + if (gSprites[spriteId].animPaused) + gSprites[spriteId].animPaused = FALSE; + else if (gSprites[spriteId].animEnded) + { + gSprites[spriteId].callback = sub_80105DC; + StartSpriteAffineAnim(&gSprites[spriteId], 0); + sprite->callback = SpriteCallbackDummy; + } + } +} + +void unref_sub_8031364(struct Sprite *sprite, bool8 stupid) +{ + sprite->animPaused = TRUE; + sprite->callback = SpriteCallbackDummy; + if (!stupid) + StartSpriteAffineAnim(sprite, 1); + else + StartSpriteAffineAnim(sprite, 1); + AnimateSprite(sprite); +} + +void sub_80313A0(struct Sprite *sprite) +{ + if (!(gUnknown_02024DE8 & 1)) + { + sprite->pos2.x += sprite->data0; + if (sprite->pos2.x == 0) + sprite->callback = SpriteCallbackDummy; + } +} + +void move_anim_start_t2_for_situation(u8 a, u32 b) +{ + ewram17810[gUnknown_02024A60].unk0_4 = 1; + if (a == 0) + { + if (b == 0x20) + move_anim_start_t2(gUnknown_02024A60, 6); + else if (b == 8 || (b & 0x80)) + move_anim_start_t2(gUnknown_02024A60, 0); + else if (b == 0x10) + move_anim_start_t2(gUnknown_02024A60, 2); + else if (b & 7) + move_anim_start_t2(gUnknown_02024A60, 4); + else if (b == 0x40) + move_anim_start_t2(gUnknown_02024A60, 5); + else + ewram17810[gUnknown_02024A60].unk0_4 = 0; + } + else + { + if (b & 0x000F0000) + move_anim_start_t2(gUnknown_02024A60, 3); + else if (b & 7) + move_anim_start_t2(gUnknown_02024A60, 1); + else if (b & 0x10000000) + move_anim_start_t2(gUnknown_02024A60, 7); + else if (b & 0x08000000) + move_anim_start_t2(gUnknown_02024A60, 8); + else if (b & 0x0000E000) + move_anim_start_t2(gUnknown_02024A60, 9); + else + ewram17810[gUnknown_02024A60].unk0_4 = 0; + } +} + +bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e) +{ + u8 taskId; + + if (d == 0 && (e & 0x80)) + { + gBattleMonForms[a] = e & 0x7F; + return TRUE; + } + if (ewram17800[a].unk0_2 && sub_803163C(d) == 0) + return TRUE; + if (ewram17800[a].unk0_2 && d == 2 && gSprites[gUnknown_02024BE0[a]].invisible) + { + refresh_graphics_maybe(a, 1, gUnknown_02024BE0[a]); + sub_80324E0(a); + return TRUE; + } + gBattleAnimPlayerMonIndex = b; + gBattleAnimEnemyMonIndex = c; + ewram17840.unk0 = e; + DoMoveAnim(gBattleAnims_Unknown1, d, 0); + taskId = CreateTask(sub_80315E8, 10); + gTasks[taskId].data[0] = a; + ewram17810[gTasks[taskId].data[0]].unk0_5 = 1; + return FALSE; +} + +void sub_80315E8(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + ewram17810[gTasks[taskId].data[0]].unk0_5 = 0; + DestroyTask(taskId); + } +} + +u8 sub_803163C(u8 a) +{ + switch (a) + { + case 2: + case 10: + case 11: + case 12: + case 13: + case 17: + return 1; + default: + return 0; + } +} + +void move_anim_start_t4(u8 a, u8 b, u8 c, u8 d) +{ + u8 taskId; + + gBattleAnimPlayerMonIndex = b; + gBattleAnimEnemyMonIndex = c; + DoMoveAnim(gBattleAnims_Unknown2, d, 0); + taskId = CreateTask(sub_80316CC, 10); + gTasks[taskId].data[0] = a; + ewram17810[gTasks[taskId].data[0]].unk0_6 = 1; +} + +void sub_80316CC(u8 taskId) +{ + gAnimScriptCallback(); + if (!gAnimScriptActive) + { + ewram17810[gTasks[taskId].data[0]].unk0_6 = 0; + DestroyTask(taskId); + } +} + +u8 sub_8031720(int unused1, int unused2) +{ + return 0; +} + +bool8 mplay_80342A4(u8 a) +{ + u8 zero = 0; + + if (IsSEPlaying()) + { + ewram17810[a].unk8++; + if (ewram17810[gUnknown_02024A60].unk8 < 30) + return TRUE; + m4aMPlayStop(&gMPlay_SE1); + m4aMPlayStop(&gMPlay_SE2); + } + if (zero == 0) + { + ewram17810[a].unk8 = 0; + return FALSE; + } + return TRUE; +} + +void sub_8031794(struct Pokemon *pkmn, u8 b) +{ + u32 personalityValue; + u16 species; + u32 r7; + u32 otId; + u8 var; + u16 paletteOffset; + const u16 *palette; + + personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); + if (ewram17800[b].unk2 == 0) + { + species = GetMonData(pkmn, MON_DATA_SPECIES); + r7 = personalityValue; + } + else + { + species = ewram17800[b].unk2; + r7 = gUnknown_02024E70[b]; + } + otId = GetMonData(pkmn, MON_DATA_OT_ID); + var = battle_get_per_side_status(b); + HandleLoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[var], + species, + r7); + paletteOffset = 0x100 + b * 16; + if (ewram17800[b].unk2 == 0) + palette = pokemon_get_pal(pkmn); + else + palette = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(palette, ewram); + LoadPalette(ewram, paletteOffset, 0x20); + LoadPalette(ewram, 0x80 + b * 16, 0x20); + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + b * 16; + sub_800D238(palette, ewram + 0x16400); + LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + } + if (ewram17800[b].unk2 != 0) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void sub_80318FC(struct Pokemon *pkmn, u8 b) +{ + u32 personalityValue; + u16 species; + u32 r7; + u32 otId; + u8 var; + u16 paletteOffset; + const u16 *palette; + + personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY); + if (ewram17800[b].unk2 == 0) + { + species = GetMonData(pkmn, MON_DATA_SPECIES); + r7 = personalityValue; + } + else + { + species = ewram17800[b].unk2; + r7 = gUnknown_02024E70[b]; + } + otId = GetMonData(pkmn, MON_DATA_OT_ID); + var = battle_get_per_side_status(b); + HandleLoadSpecialPokePic( + &gMonBackPicTable[species], + gMonBackPicCoords[species].coords, + gMonBackPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[var], + species, + r7); + paletteOffset = 0x100 + b * 16; + if (ewram17800[b].unk2 == 0) + palette = pokemon_get_pal(pkmn); + else + palette = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(palette, ewram); + LoadPalette(ewram, paletteOffset, 0x20); + LoadPalette(ewram, 0x80 + b * 16, 0x20); + if (species == SPECIES_CASTFORM) + { + paletteOffset = 0x100 + b * 16; + sub_800D238(palette, ewram + 0x16400); + LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20); + } + if (ewram17800[b].unk2 != 0) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } +} + +void unref_sub_8031A64(void) +{ +} + +void nullsub_9(u16 unused) +{ +} + +void sub_8031A6C(u16 a, u8 b) +{ + u8 status; + struct SpriteSheet spriteSheet; + + status = battle_get_per_side_status(b); + DecompressPicFromTable_2( + &gTrainerFrontPicTable[a], + gTrainerFrontPicCoords[a].coords, + gTrainerFrontPicCoords[a].y_offset, + (void *)0x02000000, + gUnknown_081FAF4C[status], + 0); + spriteSheet.data = gUnknown_081FAF4C[status]; + spriteSheet.size = gTrainerFrontPicTable[a].size; + spriteSheet.tag = gTrainerFrontPicTable[a].tag; + LoadCompressedObjectPic(&spriteSheet); + LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]); +} + +void sub_8031AF4(u16 a, u8 b) +{ + u8 status; + + status = battle_get_per_side_status(b); + DecompressPicFromTable_2( + &gTrainerBackPicTable[a], + gTrainerBackPicCoords[a].coords, + gTrainerBackPicCoords[a].y_offset, + (void *)0x02000000, + gUnknown_081FAF4C[status], + 0); + LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + b * 16, 32); +} + +void nullsub_10(int unused) +{ +} + +void sub_8031B74(u16 a) +{ + FreeSpritePaletteByTag(gTrainerFrontPicPaletteTable[a].tag); + FreeSpriteTilesByTag(gTrainerFrontPicTable[a].tag); +} + +void unref_sub_8031BA0(void) +{ + u8 count; + u8 i; + + LoadSpritePalette(&gUnknown_0820A4D4[0]); + LoadSpritePalette(&gUnknown_0820A4D4[1]); + if (!IsDoubleBattle()) + { + LoadCompressedObjectPic(&gUnknown_0820A47C); + LoadCompressedObjectPic(&gUnknown_0820A484); + count = 2; + } + else + { + LoadCompressedObjectPic(&gUnknown_0820A48C[0]); + LoadCompressedObjectPic(&gUnknown_0820A48C[1]); + LoadCompressedObjectPic(&gUnknown_0820A49C[0]); + LoadCompressedObjectPic(&gUnknown_0820A49C[1]); + count = 4; + } + for (i = 0; i < count; i++) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[i]]); +} + +bool8 sub_8031C30(u8 a) +{ + bool8 retVal = FALSE; + + if (a != 0) + { + if (a == 1) + { + LoadSpritePalette(&gUnknown_0820A4D4[0]); + LoadSpritePalette(&gUnknown_0820A4D4[1]); + } + else if (!IsDoubleBattle()) + { + if (a == 2) + { + if (gBattleTypeFlags & 0x80) + LoadCompressedObjectPic(&gUnknown_0820A4AC); + else + LoadCompressedObjectPic(&gUnknown_0820A47C); + } + else if (a == 3) + LoadCompressedObjectPic(&gUnknown_0820A484); + else if (a == 4) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[0]]); + else if (a == 5) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[1]]); + else + retVal = TRUE; + } + else + { + if (a == 2) + LoadCompressedObjectPic(&gUnknown_0820A48C[0]); + else if (a == 3) + LoadCompressedObjectPic(&gUnknown_0820A48C[1]); + else if (a == 4) + LoadCompressedObjectPic(&gUnknown_0820A49C[0]); + else if (a == 5) + LoadCompressedObjectPic(&gUnknown_0820A49C[1]); + else if (a == 6) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[0]]); + else if (a == 7) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[1]]); + else if (a == 8) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[2]]); + else if (a == 9) + LoadCompressedObjectPic(&gUnknown_0820A4B4[gUnknown_02024A72[3]]); + else + retVal = TRUE; + } + } + return retVal; +} + +void load_gfxc_health_bar(void) +{ + sub_800D238(gUnknown_08D09C48, (void *)0x02000000); +} + +u8 battle_load_something(u8 *pState, u8 *b) +{ + bool8 retVal = FALSE; + + switch (*pState) + { + case 0: + sub_8031F0C(); + (*pState)++; + break; + case 1: + if (sub_8031C30(*b) == 0) + { + (*b)++; + } + else + { + *b = 0; + (*pState)++; + } + break; + case 2: + (*pState)++; + break; + case 3: + if ((gBattleTypeFlags & 0x80) && *b == 0) + gUnknown_03004340[*b] = battle_make_oam_safari_battle(); + else + gUnknown_03004340[*b] = battle_make_oam_normal_battle(*b); + (*b)++; + if (*b == gUnknown_02024A68) + { + *b = 0; + (*pState)++; + } + break; + case 4: + sub_8043F44(*b); + if (gUnknown_02024A72[*b] <= 1) + nullsub_11(gUnknown_03004340[*b], 0); + else + nullsub_11(gUnknown_03004340[*b], 1); + (*b)++; + if (*b == gUnknown_02024A68) + { + *b = 0; + (*pState)++; + } + break; + case 5: + if (battle_side_get_owner(*b) == 0) + { + if (!(gBattleTypeFlags & 0x80)) + sub_8045A5C(gUnknown_03004340[*b], &gPlayerParty[gUnknown_02024A6A[*b]], 0); + } + else + { + sub_8045A5C(gUnknown_03004340[*b], &gEnemyParty[gUnknown_02024A6A[*b]], 0); + } + sub_8043DB0(gUnknown_03004340[*b]); + (*b)++; + if (*b == gUnknown_02024A68) + { + *b = 0; + (*pState)++; + } + break; + case 6: + sub_80327CC(); + sub_8094958(); + retVal = TRUE; + break; + } + return retVal; +} + +void sub_8031EE8(void) +{ + memset(ewram17810, 0, 0x30); + memset(&ewram17840, 0, 0x10); +} + +void sub_8031F0C(void) +{ + sub_8031EE8(); + memset(ewram17800, 0, 0x10); +} + +void sub_8031F24(void) +{ + s32 i; + + for (i = 0; i < gUnknown_02024A68; i++) + ewram17800[i].unk0_0 = gSprites[gUnknown_02024BE0[i]].invisible; +} + +void sub_8031F88(u8 a) +{ + ewram17800[a].unk0_0 = gSprites[gUnknown_02024BE0[a]].invisible; +} + +void sub_8031FC4(u8 a, u8 b, bool8 c) +{ + u16 paletteOffset; + u16 species; + u32 personalityValue; + u32 otId; + u8 r10; + const u16 *palette; + + if (c) + { + StartSpriteAnim(&gSprites[gUnknown_02024BE0[a]], ewram17840.unk0); + paletteOffset = 0x100 + a * 16; + LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32); + gBattleMonForms[a] = ewram17840.unk0; + if (ewram17800[a].unk2 != 0) + { + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + } + gSprites[gUnknown_02024BE0[a]].pos1.y = sub_8077F68(a); + } + else + { + const void *src; + void *dst; + + if (IsContest()) + { + r10 = 0; + species = ewram19348.unk2; + personalityValue = ewram19348.unk8; + otId = ewram19348.unkC; + HandleLoadSpecialPokePic( + &gMonBackPicTable[species], + gMonBackPicCoords[species].coords, + gMonBackPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[0], + species, + ewram19348.unk10); + } + else + { + r10 = battle_get_per_side_status(a); + if (battle_side_get_owner(b) == 1) + species = GetMonData(&gEnemyParty[gUnknown_02024A6A[b]], MON_DATA_SPECIES); + else + species = GetMonData(&gPlayerParty[gUnknown_02024A6A[b]], MON_DATA_SPECIES); + if (battle_side_get_owner(a) == 0) + { + personalityValue = GetMonData(&gPlayerParty[gUnknown_02024A6A[a]], MON_DATA_PERSONALITY); + otId = GetMonData(&gPlayerParty[gUnknown_02024A6A[a]], MON_DATA_OT_ID); + HandleLoadSpecialPokePic( + &gMonBackPicTable[species], + gMonBackPicCoords[species].coords, + gMonBackPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[r10], + species, + gUnknown_02024E70[a]); + } + else + { + personalityValue = GetMonData(&gEnemyParty[gUnknown_02024A6A[a]], MON_DATA_PERSONALITY); + otId = GetMonData(&gEnemyParty[gUnknown_02024A6A[a]], MON_DATA_OT_ID); + HandleLoadSpecialPokePic( + &gMonFrontPicTable[species], + gMonFrontPicCoords[species].coords, + gMonFrontPicCoords[species].y_offset, + 0x02000000, + gUnknown_081FAF4C[r10], + species, + gUnknown_02024E70[a]); + } + } + src = gUnknown_081FAF4C[r10]; + dst = (void *)(VRAM + 0x10000 + gSprites[gUnknown_02024BE0[a]].oam.tileNum * 32); + DmaCopy32(3, src, dst, 0x800); + paletteOffset = 0x100 + a * 16; + palette = species_and_otid_get_pal(species, otId, personalityValue); + sub_800D238(palette, ewram); + LoadPalette(ewram, paletteOffset, 32); + if (species == SPECIES_CASTFORM) + { + u16 *paletteSrc = (u16 *)(ewram + 0x16400); + + sub_800D238(palette, paletteSrc); + LoadPalette(paletteSrc + gBattleMonForms[b] * 16, paletteOffset, 32); + } + BlendPalette(paletteOffset, 16, 6, 0x7FFF); + CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32); + if (!IsContest()) + { + ewram17800[a].unk2 = species; + gBattleMonForms[a] = gBattleMonForms[b]; + } + gSprites[gUnknown_02024BE0[a]].pos1.y = sub_8077F68(a); + StartSpriteAnim(&gSprites[gUnknown_02024BE0[a]], gBattleMonForms[a]); + } +} + +void sub_8032350(u8 a, u8 b) +{ + u8 r4; + u16 foo; + const u8 *gSubstituteDollPal_; + void *src; + s32 i; + + if (b == 0) + { + if (IsContest()) + r4 = 0; + else + r4 = battle_get_per_side_status(a); + if (IsContest()) + LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]); + else if (battle_side_get_owner(a) != 0) + LZDecompressVram(gSubstituteDollGfx, gUnknown_081FAF4C[r4]); + else + LZDecompressVram(gSubstituteDollTilemap, gUnknown_081FAF4C[r4]); + // There is probably a way to do this without all the temp variables, but I couldn't figure it out. + foo = a * 16; + gSubstituteDollPal_ = gSubstituteDollPal; + src = gUnknown_081FAF4C[r4]; + for (i = 0; i < 3; i++) + DmaCopy32(3, src, src + i * 0x800 + 0x800, 0x800); + LoadCompressedPalette(gSubstituteDollPal_, 0x100 + foo, 32); + } + else + { + if (!IsContest()) + { + if (battle_side_get_owner(a) != 0) + sub_8031794(&gEnemyParty[gUnknown_02024A6A[a]], a); + else + sub_80318FC(&gPlayerParty[gUnknown_02024A6A[a]], a); + } + } +} + +void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId) +{ + sub_8032350(a, b); + StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]); + if (b == 0) + gSprites[spriteId].pos1.y = sub_8077F7C(a); + else + gSprites[spriteId].pos1.y = sub_8077F68(a); +} + +void sub_80324BC(u8 a, u16 b) +{ + if (b == 0xA4) + ewram17800[a].unk0_2 = 1; +} + +void sub_80324E0(u8 a) +{ + ewram17800[a].unk0_2 = 0; +} + +void sub_80324F8(struct Pokemon *pkmn, u8 b) +{ + u16 hp = GetMonData(pkmn, MON_DATA_HP); + u16 maxHP = GetMonData(pkmn, MON_DATA_MAX_HP); + + if (GetHPBarLevel(hp, maxHP) == 1) + { + if (!ewram17800[b].unk0_1) + { + if (!ewram17800[b ^ 2].unk0_1) + PlaySE(SE_HINSI); + ewram17800[b].unk0_1 = 1; + } + } + else + { + ewram17800[b].unk0_1 = 0; + if (!IsDoubleBattle()) + { + m4aSongNumStop(SE_HINSI); + return; + } + if (IsDoubleBattle() && !ewram17800[b ^ 2].unk0_1) + { + m4aSongNumStop(SE_HINSI); + return; + } + } +} + +void sub_80325B8(void) +{ + u8 r4 = battle_get_side_with_given_state(0); + + ewram17800[r4].unk0_1 = 0; + if (IsDoubleBattle()) + ewram17800[r4 ^ 2].unk0_1 = 0; + m4aSongNumStop(SE_HINSI); +} + +u8 unref_sub_8032604(struct Pokemon *pkmn) +{ + u16 hp = GetMonData(pkmn, MON_DATA_HP); + u16 maxHP = GetMonData(pkmn, MON_DATA_MAX_HP); + + return GetHPBarLevel(hp, maxHP); +} + +void sub_8032638(void) +{ + if (gMain.inBattle) + { + u8 r8 = battle_get_side_with_given_state(0); + u8 r9 = battle_get_side_with_given_state(2); + u8 r4 = pokemon_order_func(gUnknown_02024A6A[r8]); + u8 r5 = pokemon_order_func(gUnknown_02024A6A[r9]); + + if (GetMonData(&gPlayerParty[r4], MON_DATA_HP) != 0) + sub_80324F8(&gPlayerParty[r4], r8); + if (IsDoubleBattle()) + { + if (GetMonData(&gPlayerParty[r5], MON_DATA_HP) != 0) + sub_80324F8(&gPlayerParty[r5], r9); + } + } +} + +void sub_80326EC(u8 a) +{ + s32 i; + + for (i = 0; i < gUnknown_02024A68; i++) + { + if (sub_8078874(i) != 0) + { + gSprites[gUnknown_02024BE0[i]].oam.affineMode = a; + if (a == 0) + { + ewram17810[i].unk6 = gSprites[gUnknown_02024BE0[i]].oam.matrixNum; + gSprites[gUnknown_02024BE0[i]].oam.matrixNum = 0; + } + else + { + gSprites[gUnknown_02024BE0[i]].oam.matrixNum = ewram17810[i].unk6; + } + } + } +} + +void sub_80327CC(void) +{ + u8 r5; + + LoadCompressedObjectPic(&gUnknown_081FAF24); + r5 = battle_get_side_with_given_state(1); + ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, sub_8077ABC(r5, 0), sub_8077ABC(r5, 1) + 32, 0xC8); + gSprites[ewram17810[r5].unk7].data0 = r5; + if (IsDoubleBattle()) + { + r5 = battle_get_side_with_given_state(3); + ewram17810[r5].unk7 = CreateSprite(&gSpriteTemplate_81FAF34, sub_8077ABC(r5, 0), sub_8077ABC(r5, 1) + 32, 0xC8); + gSprites[ewram17810[r5].unk7].data0 = r5; + } +} + +void sub_80328A4(struct Sprite *sprite) +{ + bool8 invisible = FALSE; + u8 r4 = sprite->data0; + struct Sprite *r7 = &gSprites[gUnknown_02024BE0[r4]]; + + if (!r7->inUse || sub_8078874(r4) == 0) + { + sprite->callback = sub_8032978; + return; + } + if (gAnimScriptActive || r7->invisible) + invisible = TRUE; + else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0) + invisible = TRUE; + if (ewram17800[r4].unk0_2) + invisible = TRUE; + sprite->pos1.x = r7->pos1.x; + sprite->pos2.x = r7->pos2.x; + sprite->invisible = invisible; +} + +void sub_8032978(struct Sprite *sprite) +{ + sprite->invisible = TRUE; +} + +void sub_8032984(u8 a, u16 b) +{ + if (battle_side_get_owner(a) != 0) + { + if (ewram17800[a].unk2 != 0) + b = ewram17800[a].unk2; + if (gEnemyMonElevation[b] != 0) + gSprites[ewram17810[a].unk7].callback = sub_80328A4; + else + gSprites[ewram17810[a].unk7].callback = sub_8032978; + } +} + +void sub_8032A08(u8 a) +{ + gSprites[ewram17810[a].unk7].callback = sub_8032978; +} + +void sub_8032A38(void) +{ + u16 *ptr = (u16 *)(VRAM + 0x240); + s32 i; + s32 j; + + for (i = 0; i < 9; i++) + { + for (j = 0; j < 16; j++) + { + if (!(*ptr & 0xF000)) + *ptr |= 0xF000; + if (!(*ptr & 0x0F00)) + *ptr |= 0x0F00; + if (!(*ptr & 0x00F0)) + *ptr |= 0x00F0; + if (!(*ptr & 0x000F)) + *ptr |= 0x000F; + ptr++; + } + } +} + +void sub_8032AA8(u8 a, u8 b) +{ + ewram17800[a].unk2 = 0; + gBattleMonForms[a] = 0; + if (b == 0) + sub_80324E0(a); +} + +void nullsub_45(void) +{ +} + +void sub_8032AE0(void) +{ + gUnknown_03004330[gUnknown_02024A60] = sub_8032AFC; +} + +void sub_8032AFC(void) +{ + if (gUnknown_02024A64 & gBitTable[gUnknown_02024A60]) + { + if (gUnknown_02023A60[gUnknown_02024A60][0] <= 0x38) + gUnknown_081FAF5C[gUnknown_02023A60[gUnknown_02024A60][0]](); + else + sub_80334EC(); + } +} + +void sub_8032B4C(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy) + sub_80334EC(); +} + +// Duplicate of sub_8032B4C +void sub_8032B84(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy) + sub_80334EC(); +} + +void sub_8032BBC(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].callback == SpriteCallbackDummy) + { + sub_8031B74(gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.affineParam); + gSprites[gUnknown_02024BE0[gUnknown_02024A60]].oam.tileNum = gSprites[gUnknown_02024BE0[gUnknown_02024A60]].data5; + FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + sub_80334EC(); + } +} + +void sub_8032C4C(void) +{ + if ((--ewram17810[gUnknown_02024A60].unk9) == 0xFF) + { + ewram17810[gUnknown_02024A60].unk9 = 0; + sub_80334EC(); + } +} + +void sub_8032C88(void) +{ + bool8 r6 = FALSE; + + if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI))) + { + if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + else + { + if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy + && gSprites[gUnknown_03004340[gUnknown_02024A60 ^ 2]].callback == SpriteCallbackDummy) + r6 = TRUE; + } + if (IsCryPlayingOrClearCrySongs()) + r6 = FALSE; + + if (r6 && ewram17810[gUnknown_02024A60].unk1_0 && ewram17810[gUnknown_02024A60 ^ 2].unk1_0) + { + ewram17810[gUnknown_02024A60].unk0_7 = 0; + ewram17810[gUnknown_02024A60].unk1_0 = 0; + ewram17810[gUnknown_02024A60 ^ 2].unk0_7 = 0; + ewram17810[gUnknown_02024A60 ^ 2].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + m4aMPlayContinue(&gMPlay_BGM); + else + m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256); + ewram17810[gUnknown_02024A60].unk9 = 3; + gUnknown_03004330[gUnknown_02024A60] = sub_8032C4C; + } +} + +void sub_8032E2C(void) +{ + if (!ewram17810[gUnknown_02024A60].unk0_3 && !ewram17810[gUnknown_02024A60].unk0_7) + sub_8141828(gUnknown_02024A60, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]]); + if (!ewram17810[gUnknown_02024A60 ^ 2].unk0_3 && !ewram17810[gUnknown_02024A60 ^ 2].unk0_7) + sub_8141828(gUnknown_02024A60 ^ 2, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60 ^ 2]]); + if (!ewram17810[gUnknown_02024A60].unk0_3 && !ewram17810[gUnknown_02024A60 ^ 2].unk0_3) + { + if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)) + { + DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60 ^ 2]]); + sub_8045A5C( + gUnknown_03004340[gUnknown_02024A60 ^ 2], + &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60 ^ 2]], + 0); + sub_804777C(gUnknown_02024A60 ^ 2); + sub_8043DFC(gUnknown_03004340[gUnknown_02024A60 ^ 2]); + sub_8032984( + gUnknown_02024A60 ^ 2, + GetMonData(&gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60 ^ 2]], MON_DATA_SPECIES)); + } + DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]); + sub_8045A5C( + gUnknown_03004340[gUnknown_02024A60], + &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]], + 0); + sub_804777C(gUnknown_02024A60); + sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]); + sub_8032984( + gUnknown_02024A60, + GetMonData(&gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_SPECIES)); + + ewram17840.unk9_0 = 0; + gUnknown_03004330[gUnknown_02024A60] = sub_8032C88; + } +} + +void sub_8033018(void) +{ + if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].animEnded == TRUE + && gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos2.x == 0) + { + if (!ewram17810[gUnknown_02024A60].unk0_7) + { + sub_8141828(gUnknown_02024A60, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]]); + return; + } + if (ewram17810[gUnknown_02024A60].unk1_0) + { + ewram17810[gUnknown_02024A60].unk0_7 = 0; + ewram17810[gUnknown_02024A60].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + sub_80334EC(); + return; + } + } +} + +void sub_80330C8(void) +{ + s16 r4 = sub_8045C78(gUnknown_02024A60, gUnknown_03004340[gUnknown_02024A60], 0, 0); + + sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]); + if (r4 != -1) + sub_80440EC(gUnknown_03004340[gUnknown_02024A60], r4, 0); + else + sub_80334EC(); +} + +void sub_803311C(void) +{ + if (!gSprites[gUnknown_02024BE0[gUnknown_02024A60]].inUse) + { + sub_8043DB0(gUnknown_03004340[gUnknown_02024A60]); + sub_80334EC(); + } +} + +void sub_8033160(void) +{ + if (!ewram17810[gUnknown_02024A60].unk0_6) + { + FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]); + sub_8032A08(gUnknown_02024A60); + sub_8043DB0(gUnknown_03004340[gUnknown_02024A60]); + sub_80334EC(); + } +} + +void sub_80331D0(void) +{ + if (gUnknown_03004210.state == 0) + sub_80334EC(); +} + +void bx_blink_t7(void) +{ + u8 spriteId = gUnknown_02024BE0[gUnknown_02024A60]; + + if (gSprites[spriteId].data1 == 32) + { + gSprites[spriteId].data1 = 0; + gSprites[spriteId].invisible = FALSE; + gUnknown_02024E6D = 0; + sub_80334EC(); + } + else + { + if (((u16)gSprites[spriteId].data1 % 4) == 0) + gSprites[spriteId].invisible ^= 1; + gSprites[spriteId].data1++; + } +} + +void sub_8033264(void) +{ + if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy) + { + if (ewram17800[gUnknown_02024A60].unk0_2) + move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 6); + gUnknown_03004330[gUnknown_02024A60] = sub_80332D0; + } +} + +void sub_80332D0(void) +{ + if (!ewram17810[gUnknown_02024A60].unk0_6) + { + CreateTask(c3_0802FDF4, 10); + sub_80334EC(); + } +} + +void sub_8033308(void) +{ + if (ewram17810[gUnknown_02024A60].unk1_0) + { + ewram17810[gUnknown_02024A60].unk0_7 = 0; + ewram17810[gUnknown_02024A60].unk1_0 = 0; + FreeSpriteTilesByTag(0x27F9); + FreeSpritePaletteByTag(0x27F9); + StartSpriteAnim(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], 0); + sub_8045A5C( + gUnknown_03004340[gUnknown_02024A60], + &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]], + 0); + sub_804777C(gUnknown_02024A60); + sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]); + sub_8031F88(gUnknown_02024A60); + gUnknown_03004330[gUnknown_02024A60] = sub_8033264; + } +} + +void sub_80333D4(void) +{ + if (!ewram17810[gUnknown_02024A60].unk0_3 && !ewram17810[gUnknown_02024A60].unk0_7) + sub_8141828(gUnknown_02024A60, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]]); + if (gSprites[gUnknown_0300434C[gUnknown_02024A60]].callback == SpriteCallbackDummy + && !ewram17810[gUnknown_02024A60].unk0_3) + { + DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]); + sub_8032984(gUnknown_02024A60, GetMonData(&gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_SPECIES)); + gUnknown_03004330[gUnknown_02024A60] = sub_8033308; + } +} + +void sub_8033494(void) +{ + if (!ewram17810[gUnknown_02024A60].unk0_4) + sub_80334EC(); +} + +void sub_80334C0(void) +{ + if (!ewram17810[gUnknown_02024A60].unk0_5) + sub_80334EC(); +} + +void sub_80334EC(void) +{ + gUnknown_03004330[gUnknown_02024A60] = sub_8032AFC; + gUnknown_02024A64 &= ~gBitTable[gUnknown_02024A60]; +} diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c index 56a4bd0c4..439e6b3c6 100644 --- a/src/battle_811DA74.c +++ b/src/battle_811DA74.c @@ -21,24 +21,6 @@ struct UnknownStruct1 u8 unk2[0x1FE]; }; -struct UnknownStruct2 -{ - u8 unk0_0:1; - u8 unk0_1:2; - u8 unk0_3:1; - u8 unk0_4:1; - u8 unk0_5:1; - u8 unk0_6:1; - u8 unk0_7:1; - u8 unk1_0:1; - u8 filler2[2]; - u8 unk4; - u8 unk5; - u8 filler6[3]; - u8 unk9; - u8 fillerA[2]; -}; - //Possibly PokemonSubstruct1 struct UnknownStruct3 { @@ -47,25 +29,12 @@ struct UnknownStruct3 u8 ppBonuses; }; -struct UnknownStruct4 -{ - u8 unk0_0:2; - u8 unk0_2:1; - u8 unk0_3:1; -}; - struct UnknownStruct5 { u8 unk0_0:7; u8 unk0_7:1; }; -struct UnknownStruct6 -{ - u8 filler0[9]; - u8 unk9; -}; - extern u32 gBitTable[]; extern u16 gBattleTypeFlags; @@ -100,12 +69,6 @@ extern u8 gAnimScriptActive; extern void (*gAnimScriptCallback)(void); extern void (*const gUnknown_083FE4F4[])(void); -extern u8 ewram[]; - -#define ewram17800 ((struct UnknownStruct4 *)(ewram + 0x17800)) -#define ewram17810 ((struct UnknownStruct2 *)(ewram + 0x17810)) -#define ewram17840 (*(struct UnknownStruct6 *)(ewram + 0x17840)) - extern u8 move_anim_start_t3(); extern u8 sub_8078874(); extern void sub_8044CA0(u8); @@ -1518,7 +1481,7 @@ void sub_8120588(void) gTasks[taskId].data[0] = gUnknown_02024A60; if (ewram17810[gUnknown_02024A60].unk0_0) gTasks[gUnknown_02024E68[gUnknown_02024A60]].func = sub_8044CA0; - ewram17840.unk9 |= 1; + ewram17840.unk9_0 = 1; gUnknown_03004330[gUnknown_02024A60] = nullsub_74; } diff --git a/src/battle_ai.c b/src/battle_ai.c index dbd926000..4f00cc7cb 100644 --- a/src/battle_ai.c +++ b/src/battle_ai.c @@ -1998,7 +1998,7 @@ static void BattleAICmd_get_item(void) index = gEnemyMonIndex; // this hack and a half matches. whatever. i dont care. someone else fix this mess later. PS: still cant fix this. - AI_THINKING_STRUCT->funcResult = unk_2000000[0x160CC + (index * 2)]; + AI_THINKING_STRUCT->funcResult = ewram[0x160CC + (index * 2)]; gAIScriptPtr += 2; } diff --git a/src/battle_interface.c b/src/battle_interface.c index 61a6a5853..c5d07e8e9 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1,5 +1,6 @@ #include "global.h" #include "asm.h" +#include "battle.h" #include "sprite.h" #include "string_util.h" #include "text.h" @@ -8,6 +9,7 @@ #include "songs.h" #include "battle.h" #include "palette.h" +#include "pokedex.h" #include "battle_interface.h" struct UnknownStruct5 @@ -19,18 +21,6 @@ struct UnknownStruct5 u32 unk10; }; -struct UnknownStruct6 -{ - u8 bit_0:1; - u8 bit_1:1; - u8 bit_2:1; - u8 bit_3:1; - u8 bit_4:1; - u8 bit_5:1; - u8 bit_6:1; - u8 bit_7:1; -}; - struct UnknownStruct7 { u8 filler0[0x180]; @@ -40,7 +30,6 @@ extern u8 ewram[]; #define ewram520 ((struct UnknownStruct7 *)(ewram + 0x00520)) #define ewram16088 (*(u8 *) (ewram + 0x16088)) #define ewram16089 (*(u8 *) (ewram + 0x16089)) -#define ewram17800 ((struct UnknownStruct6 *)(ewram + 0x17800)) #define ewram17850 ((struct UnknownStruct5 *)(ewram + 0x17850)) extern u8 gUnknown_020238CC[]; @@ -96,7 +85,6 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[]; #define MACRO1(n) ((n) - (n) / 8 * 8) + 64 * ((n) / 8) extern int sub_8040D3C(); -extern u8 sub_8090D90(); extern void load_gfxc_health_bar(); static void sub_8043D5C(struct Sprite *); @@ -939,7 +927,7 @@ static void sub_8044210(u8 a, s16 b, u8 c) // TODO: make this a local variable memcpy(str, gUnknown_0820A89C, sizeof(str)); r4 = gSprites[a].data6; - if ((ewram17800[r4].bit_4) == 0) + if ((ewram17800[r4].unk0_4) == 0) return; ptr = str + 6; if (c == 0) @@ -1312,8 +1300,8 @@ void sub_804454C(void) { u8 r6; - ewram17800[i].bit_4 ^= 1; - r6 = ewram17800[i].bit_4; + ewram17800[i].unk0_4 ^= 1; + r6 = ewram17800[i].unk0_4; if (battle_side_get_owner(i) == 0) { @@ -2518,7 +2506,7 @@ static void sub_8045458(u8 a, u8 b) if (battle_side_get_owner(r4) != 0) { u16 species = GetMonData(&gEnemyParty[gUnknown_02024A6A[r4]], MON_DATA_SPECIES); - if (sub_8090D90(SpeciesToNationalPokedexNum(species), 1) != 0) + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 1) != 0) { r4 = gSprites[a].data5; if (b != 0) @@ -2587,7 +2575,7 @@ static void draw_status_ailment_maybe(u8 a) for (i = 0; i < 3; i++) CpuCopy32(r6, (void *)(OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8 + i) * 32), 32); - if (!ewram17800[r7].bit_4) + if (!ewram17800[r7].unk0_4) CpuCopy32(sub_8043CDC(1), (void *)(OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32), 64); sub_8045458(a, 1); @@ -2602,7 +2590,7 @@ static void draw_status_ailment_maybe(u8 a) CpuCopy32(r6, (void *)(OBJ_VRAM0 + (gSprites[a].oam.tileNum + r8) * 32), 96); if (IsDoubleBattle() == TRUE || battle_side_get_owner(r7) == TRUE) { - if (!ewram17800[r7].bit_4) + if (!ewram17800[r7].unk0_4) { CpuCopy32(sub_8043CDC(0), (void *)(OBJ_VRAM0 + gSprites[r10].oam.tileNum * 32), 32); CpuCopy32(sub_8043CDC(0x41), (void *)(OBJ_VRAM0 + (gSprites[r10].oam.tileNum + 1) * 32), 32); @@ -2809,7 +2797,7 @@ s32 sub_8045C78(u8 a, u8 unused1, u8 c, u8 unused2) r5 = ABS(r8 / r5); r6 = sub_8045F58(ewram17850[a].unk4, ewram17850[a].unk8, r8, &ewram17850[a].unk10, 8, r5); } - if (c == 1 || (c == 0 && (!ewram17800[a].bit_4))) + if (c == 1 || (c == 0 && (!ewram17800[a].unk0_4))) sub_8045D58(a, c); if (r6 == -1) ewram17850[a].unk10 = 0; @@ -3044,7 +3032,7 @@ u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale) return result; } -int GetHPBarLevel(s16 hp, s16 maxhp) +u8 GetHPBarLevel(s16 hp, s16 maxhp) { int result; diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c index 5e3efcc0d..7b4eb0258 100644 --- a/src/battle_party_menu.c +++ b/src/battle_party_menu.c @@ -762,7 +762,7 @@ static void Task_BattlePartyMenuShift(u8 taskId) static void Task_BattlePartyMenuCancel(u8 taskId) { - sub_8072DEC(); + HandleDestroyMenuCursors(); sub_806E7D0(gTasks[taskId].data[4], sBattlePartyPopupMenus); gTasks[taskId].data[4] = gTasks[taskId].data[5]; sub_806D538(0, 0); diff --git a/src/birch_pc.c b/src/birch_pc.c index 89eafc0ce..f01107b3d 100644 --- a/src/birch_pc.c +++ b/src/birch_pc.c @@ -9,31 +9,31 @@ extern u16 gSpecialVar_0x8004; extern u16 gSpecialVar_0x8005; extern u16 gSpecialVar_0x8006; -extern const u8 gUnknown_081C4520[]; -extern const u8 gUnknown_081C456A[]; -extern const u8 gUnknown_081C45B0[]; -extern const u8 gUnknown_081C45F9[]; -extern const u8 gUnknown_081C4648[]; -extern const u8 gUnknown_081C467E[]; -extern const u8 gUnknown_081C46B9[]; -extern const u8 gUnknown_081C46FE[]; -extern const u8 gUnknown_081C4747[]; -extern const u8 gUnknown_081C4780[]; -extern const u8 gUnknown_081C47DF[]; -extern const u8 gUnknown_081C4828[]; -extern const u8 gUnknown_081C4863[]; -extern const u8 gUnknown_081C489C[]; -extern const u8 gUnknown_081C48EB[]; -extern const u8 gUnknown_081C4936[]; -extern const u8 gUnknown_081C49A2[]; -extern const u8 gUnknown_081C4A06[]; -extern const u8 gUnknown_081C4A4F[]; -extern const u8 gUnknown_081C4A91[]; -extern const u8 gUnknown_081C4ADA[]; +extern const u8 gBirchDexRatingText_LessThan10[]; +extern const u8 gBirchDexRatingText_LessThan20[]; +extern const u8 gBirchDexRatingText_LessThan30[]; +extern const u8 gBirchDexRatingText_LessThan40[]; +extern const u8 gBirchDexRatingText_LessThan50[]; +extern const u8 gBirchDexRatingText_LessThan60[]; +extern const u8 gBirchDexRatingText_LessThan70[]; +extern const u8 gBirchDexRatingText_LessThan80[]; +extern const u8 gBirchDexRatingText_LessThan90[]; +extern const u8 gBirchDexRatingText_LessThan100[]; +extern const u8 gBirchDexRatingText_LessThan110[]; +extern const u8 gBirchDexRatingText_LessThan120[]; +extern const u8 gBirchDexRatingText_LessThan130[]; +extern const u8 gBirchDexRatingText_LessThan140[]; +extern const u8 gBirchDexRatingText_LessThan150[]; +extern const u8 gBirchDexRatingText_LessThan160[]; +extern const u8 gBirchDexRatingText_LessThan170[]; +extern const u8 gBirchDexRatingText_LessThan180[]; +extern const u8 gBirchDexRatingText_LessThan190[]; +extern const u8 gBirchDexRatingText_LessThan200[]; +extern const u8 gBirchDexRatingText_DexCompleted[]; bool16 ScriptGetPokedexInfo(void) { - if (!gSpecialVar_0x8004) + if (gSpecialVar_0x8004 == 0) // is national dex not present? { gSpecialVar_0x8005 = GetHoennPokedexCount(0); gSpecialVar_0x8006 = GetHoennPokedexCount(1); @@ -47,65 +47,66 @@ bool16 ScriptGetPokedexInfo(void) return IsNationalPokedexEnabled(); } +// This shows your Hoenn Pokedex rating and not your National Dex. const u8 *GetPokedexRatingText(u16 count) { if (count < 10) - return gUnknown_081C4520; + return gBirchDexRatingText_LessThan10; if (count < 20) - return gUnknown_081C456A; + return gBirchDexRatingText_LessThan20; if (count < 30) - return gUnknown_081C45B0; + return gBirchDexRatingText_LessThan30; if (count < 40) - return gUnknown_081C45F9; + return gBirchDexRatingText_LessThan40; if (count < 50) - return gUnknown_081C4648; + return gBirchDexRatingText_LessThan50; if (count < 60) - return gUnknown_081C467E; + return gBirchDexRatingText_LessThan60; if (count < 70) - return gUnknown_081C46B9; + return gBirchDexRatingText_LessThan70; if (count < 80) - return gUnknown_081C46FE; + return gBirchDexRatingText_LessThan80; if (count < 90) - return gUnknown_081C4747; + return gBirchDexRatingText_LessThan90; if (count < 100) - return gUnknown_081C4780; + return gBirchDexRatingText_LessThan100; if (count < 110) - return gUnknown_081C47DF; + return gBirchDexRatingText_LessThan110; if (count < 120) - return gUnknown_081C4828; + return gBirchDexRatingText_LessThan120; if (count < 130) - return gUnknown_081C4863; + return gBirchDexRatingText_LessThan130; if (count < 140) - return gUnknown_081C489C; + return gBirchDexRatingText_LessThan140; if (count < 150) - return gUnknown_081C48EB; + return gBirchDexRatingText_LessThan150; if (count < 160) - return gUnknown_081C4936; + return gBirchDexRatingText_LessThan160; if (count < 170) - return gUnknown_081C49A2; + return gBirchDexRatingText_LessThan170; if (count < 180) - return gUnknown_081C4A06; + return gBirchDexRatingText_LessThan180; if (count < 190) - return gUnknown_081C4A4F; + return gBirchDexRatingText_LessThan190; if (count < 200) - return gUnknown_081C4A91; + return gBirchDexRatingText_LessThan200; if (count == 200) { - if (sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - || sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) - return gUnknown_081C4A91; - return gUnknown_081C4ADA; + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + || GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // Jirachi or Deoxys is not counted towards the dex completion. If either of these flags are enabled, it means the actual count is less than 200. + return gBirchDexRatingText_LessThan200; + return gBirchDexRatingText_DexCompleted; } if (count == 201) { - if (sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) - && sub_8090D90(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) - return gUnknown_081C4A91; - return gUnknown_081C4ADA; + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_JIRACHI), 1) + && GetNationalPokedexFlag(SpeciesToNationalPokedexNum(SPECIES_DEOXYS), 1)) // If both of these flags are enabled, it means the actual count is less than 200. + return gBirchDexRatingText_LessThan200; + return gBirchDexRatingText_DexCompleted; } if (count == 202) - return gUnknown_081C4ADA; - return gUnknown_081C4520; + return gBirchDexRatingText_DexCompleted; // Hoenn dex is considered complete, even though the hoenn dex count is 210. + return gBirchDexRatingText_LessThan10; } void ShowPokedexRatingMessage(void) diff --git a/src/credits.c b/src/credits.c index 5af2d1e3c..c8de577fc 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1585,7 +1585,7 @@ static void sub_81458DC(void) { for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++) { - if (sub_8090D90(dexNum, 1)) + if (GetNationalPokedexFlag(dexNum, 1)) { unk201C000->unk90[seenTypesCount] = dexNum; seenTypesCount++; diff --git a/src/decoration.c b/src/decoration.c index 279a7568b..d33931206 100644..100755 --- a/src/decoration.c +++ b/src/decoration.c @@ -1,23 +1,1786 @@ #include "global.h" #include "asm.h" +#include "map_object_constants.h" +#include "rom4.h" +#include "sound.h" +#include "songs.h" +#include "string_util.h" #include "menu.h" +#include "menu_helpers.h" +#include "strings.h" +#include "script.h" +#include "palette.h" +#include "field_player_avatar.h" +#include "field_camera.h" +#include "fieldmap.h" +#include "metatile_behavior.h" +#include "event_data.h" +#include "field_weather.h" +#include "decoration.h" -extern u8 gUnknown_020388F2; -extern u8 gUnknown_020388F3; -extern u8 gUnknown_020388F4; -extern u8 gUnknown_020388F6; -extern u8 gUnknown_020388D5; +const u8 DecorDesc_SMALL_DESK[] = _( + "A small desk built\n" + "for one."); -void sub_80FEC94(u8 arg0); -void sub_80FECB8(u8 arg0); -void sub_80FECE0(u8 arg0); +const u8 DecorDesc_POKEMON_DESK[] = _( + "A small desk built in\n" + "the shape of a POKé\n" + "BALL."); -void sub_80FE7EC(u8 arg0) +const u8 DecorDesc_HEAVY_DESK[] = _( + "A large desk made\n" + "of steel. Put some\n" + "decorations on it."); + +const u8 DecorDesc_RAGGED_DESK[] = _( + "A large desk made\n" + "of wood. Put some\n" + "decorations on it."); + +const u8 DecorDesc_COMFORT_DESK[] = _( + "A large desk made\n" + "of leaves. Put some\n" + "decorations on it."); + +const u8 DecorDesc_PRETTY_DESK[] = _( + "A huge desk made\n" + "of glass. Holds lots\n" + "of decorations."); + +const u8 DecorDesc_BRICK_DESK[] = _( + "A huge desk made\n" + "of brick. Holds lots\n" + "of decorations."); + +const u8 DecorDesc_CAMP_DESK[] = _( + "A huge desk made\n" + "of logs. Put lots of\n" + "decorations on it."); + +const u8 DecorDesc_HARD_DESK[] = _( + "A huge desk made\n" + "of rocks. Holds\n" + "many decorations."); + +const u8 DecorDesc_SMALL_CHAIR[] = _( + "A small chair made\n" + "for one."); + +const u8 DecorDesc_POKEMON_CHAIR[] = _( + "A small chair built\n" + "in the shape of a\n" + "POKé BALL."); + +const u8 DecorDesc_HEAVY_CHAIR[] = _( + "A small chair made\n" + "of steel."); + +const u8 DecorDesc_PRETTY_CHAIR[] = _( + "A small chair made\n" + "of glass."); + +const u8 DecorDesc_COMFORT_CHAIR[] = _( + "A small chair made\n" + "of leaves."); + +const u8 DecorDesc_RAGGED_CHAIR[] = _( + "A small chair made\n" + "of wood."); + +const u8 DecorDesc_BRICK_CHAIR[] = _( + "A small chair made\n" + "of brick."); + +const u8 DecorDesc_CAMP_CHAIR[] = _( + "A small chair made\n" + "of logs."); + +const u8 DecorDesc_HARD_CHAIR[] = _( + "A small chair made\n" + "of rock."); + +const u8 DecorDesc_RED_PLANT[] = _( + "A vivid red potted\n" + "plant."); + +const u8 DecorDesc_TROPICAL_PLANT[] = _( + "A flowering tropical\n" + "plant in a pot."); + +const u8 DecorDesc_PRETTY_FLOWERS[] = _( + "A pot of cute\n" + "flowers."); + +const u8 DecorDesc_COLORFUL_PLANT[] = _( + "A large pot with\n" + "many colorful\n" + "flowers."); + +const u8 DecorDesc_BIG_PLANT[] = _( + "A large, umbrella-\n" + "shaped plant in a\n" + "big pot."); + +const u8 DecorDesc_GORGEOUS_PLANT[] = _( + "A large, impressive\n" + "plant in a big pot."); + +const u8 DecorDesc_RED_BRICK[] = _( + "A red-colored brick.\n" + "Decorations can be\n" + "placed on top."); + +const u8 DecorDesc_YELLOW_BRICK[] = _( + "A yellow-colored\n" + "brick. Put some\n" + "decorations on top."); + +const u8 DecorDesc_BLUE_BRICK[] = _( + "A blue-colored\n" + "brick. Put some\n" + "decorations on top."); + +const u8 DecorDesc_RED_BALLOON[] = _( + "A red balloon filled\n" + "with water. Bursts\n" + "if stepped on."); + +const u8 DecorDesc_BLUE_BALLOON[] = _( + "A blue balloon filled\n" + "with water. Bursts\n" + "if stepped on."); + +const u8 DecorDesc_YELLOW_BALLOON[] = _( + "A yellow balloon\n" + "filled with water.\n" + "Pops if stepped on."); + +const u8 DecorDesc_RED_TENT[] = _( + "A large red tent.\n" + "You can hide inside\n" + "it."); + +const u8 DecorDesc_BLUE_TENT[] = _( + "A large blue tent.\n" + "You can hide inside\n" + "it."); + +const u8 DecorDesc_SOLID_BOARD[] = _( + "Place over a hole to\n" + "cross to the other\n" + "side."); + +const u8 DecorDesc_SLIDE[] = _( + "Use to slide down\n" + "from the platform."); + +const u8 DecorDesc_FENCE_LENGTH[] = _( + "A small fence that\n" + "blocks passage."); + +const u8 DecorDesc_FENCE_WIDTH[] = _( + "A small fence that\n" + "blocks passage."); + +const u8 DecorDesc_TIRE[] = _( + "An old large tire.\n" + "Decorations can be\n" + "placed on top."); + +const u8 DecorDesc_STAND[] = _( + "A large pedestal\n" + "with steps."); + +const u8 DecorDesc_MUD_BALL[] = _( + "A large ball of mud.\n" + "Crumbles if stepped\n" + "on."); + +const u8 DecorDesc_BREAKABLE_DOOR[] = _( + "A weird door that\n" + "people can walk\n" + "right through."); + +const u8 DecorDesc_SAND_ORNAMENT[] = _( + "An ornament made\n" + "of sand. Crumbles if\n" + "touched."); + +const u8 DecorDesc_SILVER_SHIELD[] = _( + "Awarded for 50\n" + "straight wins at\n" + "the BATTLE TOWER."); + +const u8 DecorDesc_GOLD_SHIELD[] = _( + "Awarded for 100\n" + "straight wins at\n" + "the BATTLE TOWER."); + +const u8 DecorDesc_GLASS_ORNAMENT[] = _( + "A glass replica of\n" + "a famous sculpture\n" + "at the ART MUSEUM."); + +const u8 DecorDesc_TV[] = _( + "A small, gray-\n" + "colored toy TV."); + +const u8 DecorDesc_ROUND_TV[] = _( + "A toy TV modeled\n" + "in the image of a\n" + "SEEDOT."); + +const u8 DecorDesc_CUTE_TV[] = _( + "A toy TV modeled\n" + "in the image of a\n" + "SKITTY."); + +const u8 DecorDesc_GLITTER_MAT[] = _( + "An odd mat that\n" + "glitters if stepped\n" + "on."); + +const u8 DecorDesc_JUMP_MAT[] = _( + "A trick mat that\n" + "jumps when it is\n" + "stepped on."); + +const u8 DecorDesc_SPIN_MAT[] = _( + "A trick mat that\n" + "spins around when\n" + "stepped on."); + +const u8 DecorDesc_C_LOW_NOTE_MAT[] = _( + "A mat that plays\n" + "a low C note when\n" + "stepped on."); + +const u8 DecorDesc_D_NOTE_MAT[] = _( + "A mat that plays\n" + "a D note when\n" + "stepped on."); + +const u8 DecorDesc_E_NOTE_MAT[] = _( + "A mat that plays\n" + "an E note when\n" + "stepped on."); + +const u8 DecorDesc_F_NOTE_MAT[] = _( + "A mat that plays\n" + "an F note when\n" + "stepped on."); + +const u8 DecorDesc_G_NOTE_MAT[] = _( + "A mat that plays\n" + "a G note when\n" + "stepped on."); + +const u8 DecorDesc_A_NOTE_MAT[] = _( + "A mat that plays\n" + "an A note when\n" + "stepped on."); + +const u8 DecorDesc_B_NOTE_MAT[] = _( + "A mat that plays\n" + "a B note when\n" + "stepped on."); + +const u8 DecorDesc_C_HIGH_NOTE_MAT[] = _( + "A mat that plays\n" + "a high C note when\n" + "stepped on."); + +const u8 DecorDesc_SURF_MAT[] = _( + "A mat designed with\n" + "a SURF image.\n" + "Put items on top."); + +const u8 DecorDesc_THUNDER_MAT[] = _( + "A mat designed with\n" + "a THUNDER image.\n" + "Put items on top."); + +const u8 DecorDesc_FIRE_BLAST_MAT[] = _( + "A mat designed with\n" + "a FIRE BLAST image.\n" + "Put items on top."); + +const u8 DecorDesc_POWDER_SNOW_MAT[] = _( + "A mat with a POWDER\n" + "SNOW image design.\n" + "Put items on top."); + +const u8 DecorDesc_ATTRACT_MAT[] = _( + "A mat designed with\n" + "an ATTRACT image.\n" + "Put items on top."); + +const u8 DecorDesc_FISSURE_MAT[] = _( + "A mat designed with\n" + "a FISSURE image.\n" + "Put items on top."); + +const u8 DecorDesc_SPIKES_MAT[] = _( + "A mat designed with\n" + "a SPIKES image.\n" + "Put items on top."); + +const u8 DecorDesc_BALL_POSTER[] = _( + "A small poster\n" + "printed with POKé\n" + "BALLS."); + +const u8 DecorDesc_GREEN_POSTER[] = _( + "A small poster with\n" + "a TREECKO print."); + +const u8 DecorDesc_RED_POSTER[] = _( + "A small poster with\n" + "a TORCHIC print."); + +const u8 DecorDesc_BLUE_POSTER[] = _( + "A small poster with\n" + "a MUDKIP print."); + +const u8 DecorDesc_CUTE_POSTER[] = _( + "A small poster with\n" + "an AZURILL print."); + +const u8 DecorDesc_PIKA_POSTER[] = _( + "A large poster with\n" + "a PIKACHU and\n" + "PICHU print."); + +const u8 DecorDesc_LONG_POSTER[] = _( + "A large poster with\n" + "a SEVIPER print."); + +const u8 DecorDesc_SEA_POSTER[] = _( + "A large poster with\n" + "a RELICANTH print."); + +const u8 DecorDesc_SKY_POSTER[] = _( + "A large poster with\n" + "a WINGULL print."); + +const u8 DecorDesc_KISS_POSTER[] = _( + "A large poster with\n" + "a SMOOCHUM print."); + +const u8 DecorDesc_PICHU_DOLL[] = _( + "A PICHU doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_PIKACHU_DOLL[] = _( + "A PIKACHU doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_MARILL_DOLL[] = _( + "A MARILL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TOGEPI_DOLL[] = _( +#if REVISION >= 1 + "A TOGEPI doll.\n" +#else + "A TOPGEPI doll.\n" +#endif + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CYNDAQUIL_DOLL[] = _( + "A CYNDAQUIL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CHIKORITA_DOLL[] = _( + "A CHIKORITA doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TOTODILE_DOLL[] = _( + "A TOTODILE doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_JIGGLYPUFF_DOLL[] = _( + "A JIGGLYPUFF doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_MEOWTH_DOLL[] = _( + "A MEOWTH doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CLEFAIRY_DOLL[] = _( + "A CLEFAIRY doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_DITTO_DOLL[] = _( + "A DITTO doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SMOOCHUM_DOLL[] = _( + "A SMOOCHUM doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TREECKO_DOLL[] = _( + "A TREECKO doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_TORCHIC_DOLL[] = _( + "A TORCHIC doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_MUDKIP_DOLL[] = _( + "A MUDKIP doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_DUSKULL_DOLL[] = _( + "A DUSKULL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_WYNAUT_DOLL[] = _( + "A WYNAUT doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_BALTOY_DOLL[] = _( + "A BALTOY doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_KECLEON_DOLL[] = _( + "A KECLEON doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_AZURILL_DOLL[] = _( + "An AZURILL doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SKITTY_DOLL[] = _( + "A SKITTY doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SWABLU_DOLL[] = _( + "A SWABLU doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_GULPIN_DOLL[] = _( + "A GULPIN doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_LOTAD_DOLL[] = _( + "A LOTAD doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_SEEDOT_DOLL[] = _( + "A SEEDOT doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_PIKA_CUSHION[] = _( + "A PIKACHU cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_ROUND_CUSHION[] = _( + "A MARILL cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_KISS_CUSHION[] = _( + "A SMOOCHUM\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_ZIGZAG_CUSHION[] = _( + "A ZIGZAGOON\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_SPIN_CUSHION[] = _( + "A SPINDA cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_DIAMOND_CUSHION[] = _( + "A SABLEYE cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_BALL_CUSHION[] = _( + "A BALL cushion.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_GRASS_CUSHION[] = _( + "A grass-mark\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_FIRE_CUSHION[] = _( + "A fire-mark\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_WATER_CUSHION[] = _( + "A water-mark\n" + "cushion. Place it on\n" + "a mat or a desk."); + +const u8 DecorDesc_SNORLAX_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_RHYDON_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_LAPRAS_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_VENUSAUR_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_CHARIZARD_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_BLASTOISE_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_WAILMER_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_REGIROCK_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_REGICE_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u8 DecorDesc_REGISTEEL_DOLL[] = _( + "A large doll.\n" + "Place it on a mat\n" + "or a desk."); + +const u16 DecorGfx_SMALL_DESK[] = { + 0x87 +}; + +const u16 DecorGfx_POKEMON_DESK[] = { + 0x8F +}; + +const u16 DecorGfx_HEAVY_DESK[] = { + 0x90, + 0x91, + 0x92, + 0x98, + 0x99, + 0x9A +}; + +const u16 DecorGfx_RAGGED_DESK[] = { + 0x93, + 0x94, + 0x95, + 0x9B, + 0x9C, + 0x9D +}; + +const u16 DecorGfx_COMFORT_DESK[] = { + 0x96, + 0x97, + 0xA3, + 0x9E, + 0x9F, + 0xAB +}; + +const u16 DecorGfx_PRETTY_DESK[] = { + 0xBD, + 0xBE, + 0xBF, + 0xC5, + 0xC6, + 0xC7, + 0xCD, + 0xCE, + 0xCF +}; + +const u16 DecorGfx_BRICK_DESK[] = { + 0xA0, + 0xA1, + 0xA2, + 0xA8, + 0xA9, + 0xAA, + 0xB0, + 0xB1, + 0xB2 +}; + +const u16 DecorGfx_CAMP_DESK[] = { + 0xA4, + 0xA5, + 0xA6, + 0xAC, + 0xAD, + 0xAE, + 0xB4, + 0xB5, + 0xB6 +}; + +const u16 DecorGfx_HARD_DESK[] = { + 0xA7, + 0xBB, + 0xBC, + 0xAF, + 0xC3, + 0xC4, + 0xB7, + 0xCB, + 0xCC +}; + +const u16 DecorGfx_SMALL_CHAIR[] = { + 0xB8 +}; + +const u16 DecorGfx_POKEMON_CHAIR[] = { + 0xB9 +}; + +const u16 DecorGfx_HEAVY_CHAIR[] = { + 0xBA +}; + +const u16 DecorGfx_PRETTY_CHAIR[] = { + 0xC0 +}; + +const u16 DecorGfx_COMFORT_CHAIR[] = { + 0xC1 +}; + +const u16 DecorGfx_RAGGED_CHAIR[] = { + 0xC2 +}; + +const u16 DecorGfx_BRICK_CHAIR[] = { + 0xC8 +}; + +const u16 DecorGfx_CAMP_CHAIR[] = { + 0xC9 +}; + +const u16 DecorGfx_HARD_CHAIR[] = { + 0xCA +}; + +const u16 DecorGfx_RED_PLANT[] = { + 0xD0, + 0xD8 +}; + +const u16 DecorGfx_TROPICAL_PLANT[] = { + 0xD2, + 0xDA +}; + +const u16 DecorGfx_PRETTY_FLOWERS[] = { + 0xD4, + 0xDC +}; + +const u16 DecorGfx_COLORFUL_PLANT[] = { + 0xE0, + 0xE2, + 0xE8, + 0xE9 +}; + +const u16 DecorGfx_BIG_PLANT[] = { + 0xE4, + 0xE6, + 0xEC, + 0xED +}; + +const u16 DecorGfx_GORGEOUS_PLANT[] = { + 0xF0, + 0xF2, + 0xF8, + 0xF9 +}; + +const u16 DecorGfx_RED_BRICK[] = { + 0x25, + 0x2D +}; + +const u16 DecorGfx_YELLOW_BRICK[] = { + 0x26, + 0x2E +}; + +const u16 DecorGfx_BLUE_BRICK[] = { + 0x27, + 0x2F +}; + +const u16 DecorGfx_RED_BALLOON[] = { + 0x138 +}; + +const u16 DecorGfx_BLUE_BALLOON[] = { + 0x13C +}; + +const u16 DecorGfx_YELLOW_BALLOON[] = { + 0x140 +}; + +const u16 DecorGfx_RED_TENT[] = { + 0x30, + 0x31, + 0x32, + 0x38, + 0x39, + 0x3A, + 0x40, + 0x41, + 0x3B +}; + +const u16 DecorGfx_BLUE_TENT[] = { + 0x48, + 0x49, + 0x68, + 0x50, + 0x51, + 0x70, + 0x58, + 0x59, + 0x69 +}; + +const u16 DecorGfx_SOLID_BOARD[] = { + 0x34, + 0x3C +}; + +const u16 DecorGfx_SLIDE[] = { + 0x35, + 0x36, + 0x3D, + 0x3E, + 0x63, + 0x64, + 0x6F, + 0x77 +}; + +const u16 DecorGfx_FENCE_LENGTH[] = { + 0x33 +}; + +const u16 DecorGfx_FENCE_WIDTH[] = { + 0x2C +}; + +const u16 DecorGfx_TIRE[] = { + 0x80, + 0x81, + 0x88, + 0x89 +}; + +const u16 DecorGfx_STAND[] = { + 0x6A, + 0x6B, + 0x6C, + 0x6D, + 0x72, + 0x73, + 0x74, + 0x75 +}; + +const u16 DecorGfx_MUD_BALL[] = { + 0x28 +}; + +const u16 DecorGfx_BREAKABLE_DOOR[] = { + 0x37, + 0x3F +}; + +const u16 DecorGfx_SAND_ORNAMENT[] = { + 0x85, + 0x8D +}; + +const u16 DecorGfx_SILVER_SHIELD[] = { + 0xD6, + 0xDE +}; + +const u16 DecorGfx_GOLD_SHIELD[] = { + 0x12E, + 0x136 +}; + +const u16 DecorGfx_GLASS_ORNAMENT[] = { + 0x82, + 0x8A +}; + +const u16 DecorGfx_TV[] = { + 0xF4 +}; + +const u16 DecorGfx_ROUND_TV[] = { + 0xF5 +}; + +const u16 DecorGfx_CUTE_TV[] = { + 0xF6 +}; + +const u16 DecorGfx_GLITTER_MAT[] = { + 0x60 +}; + +const u16 DecorGfx_JUMP_MAT[] = { + 0x61 +}; + +const u16 DecorGfx_SPIN_MAT[] = { + 0x62 +}; + +const u16 DecorGfx_C_LOW_NOTE_MAT[] = { + 0x78 +}; + +const u16 DecorGfx_D_NOTE_MAT[] = { + 0x79 +}; + +const u16 DecorGfx_E_NOTE_MAT[] = { + 0x7A +}; + +const u16 DecorGfx_F_NOTE_MAT[] = { + 0x7B +}; + +const u16 DecorGfx_G_NOTE_MAT[] = { + 0x7C +}; + +const u16 DecorGfx_A_NOTE_MAT[] = { + 0x7D +}; + +const u16 DecorGfx_B_NOTE_MAT[] = { + 0x7E +}; + +const u16 DecorGfx_C_HIGH_NOTE_MAT[] = { + 0xB3 +}; + +const u16 DecorGfx_SURF_MAT[] = { + 0x42, + 0x43, + 0x44, + 0x4A, + 0x4B, + 0x4C, + 0x52, + 0x53, + 0x54 +}; + +const u16 DecorGfx_THUNDER_MAT[] = { + 0x45, + 0x46, + 0x47, + 0x4D, + 0x4E, + 0x4F, + 0x55, + 0x56, + 0x57 +}; + +const u16 DecorGfx_FIRE_BLAST_MAT[] = { + 0x5A, + 0x5B, + 0x5C, + 0x5D, + 0x5E, + 0x5F, + 0x65, + 0x66, + 0x67 +}; + +const u16 DecorGfx_POWDER_SNOW_MAT[] = { + 0x100, + 0x101, + 0x102, + 0x108, + 0x109, + 0x10A, + 0x110, + 0x111, + 0x112 +}; + +const u16 DecorGfx_ATTRACT_MAT[] = { + 0x103, + 0x104, + 0x105, + 0x10B, + 0x10C, + 0x10D, + 0x113, + 0x114, + 0x115 +}; + +const u16 DecorGfx_FISSURE_MAT[] = { + 0x106, + 0x107, + 0x118, + 0x10E, + 0x10F, + 0x120, + 0x116, + 0x117, + 0x128 +}; + +const u16 DecorGfx_SPIKES_MAT[] = { + 0x119, + 0x11A, + 0x11B, + 0x121, + 0x122, + 0x123, + 0x129, + 0x12A, + 0x12B +}; + +const u16 DecorGfx_BALL_POSTER[] = { + 0x130 +}; + +const u16 DecorGfx_GREEN_POSTER[] = { + 0x131 +}; + +const u16 DecorGfx_RED_POSTER[] = { + 0x132 +}; + +const u16 DecorGfx_BLUE_POSTER[] = { + 0x133 +}; + +const u16 DecorGfx_CUTE_POSTER[] = { + 0x134 +}; + +const u16 DecorGfx_PIKA_POSTER[] = { + 0x11C, + 0x11D +}; + +const u16 DecorGfx_LONG_POSTER[] = { + 0x11E, + 0x11F +}; + +const u16 DecorGfx_SEA_POSTER[] = { + 0x124, + 0x125 +}; + +const u16 DecorGfx_SKY_POSTER[] = { + 0x126, + 0x127 +}; + +const u16 DecorGfx_KISS_POSTER[] = { + 0x12C, + 0x12D +}; + +const u16 DecorGfx_PICHU_DOLL[] = { + MAP_OBJ_GFX_PICHU_DOLL +}; + +const u16 DecorGfx_PIKACHU_DOLL[] = { + MAP_OBJ_GFX_PIKACHU_DOLL +}; + +const u16 DecorGfx_MARILL_DOLL[] = { + MAP_OBJ_GFX_MARILL_DOLL +}; + +const u16 DecorGfx_TOGEPI_DOLL[] = { + MAP_OBJ_GFX_TOGEPI_DOLL +}; + +const u16 DecorGfx_CYNDAQUIL_DOLL[] = { + MAP_OBJ_GFX_CYNDAQUIL_DOLL +}; + +const u16 DecorGfx_CHIKORITA_DOLL[] = { + MAP_OBJ_GFX_CHIKORITA_DOLL +}; + +const u16 DecorGfx_TOTODILE_DOLL[] = { + MAP_OBJ_GFX_TOTODILE_DOLL +}; + +const u16 DecorGfx_JIGGLYPUFF_DOLL[] = { + MAP_OBJ_GFX_JIGGLYPUFF_DOLL +}; + +const u16 DecorGfx_MEOWTH_DOLL[] = { + MAP_OBJ_GFX_MEOWTH_DOLL +}; + +const u16 DecorGfx_CLEFAIRY_DOLL[] = { + MAP_OBJ_GFX_CLEFAIRY_DOLL +}; + +const u16 DecorGfx_DITTO_DOLL[] = { + MAP_OBJ_GFX_DITTO_DOLL +}; + +const u16 DecorGfx_SMOOCHUM_DOLL[] = { + MAP_OBJ_GFX_SMOOCHUM_DOLL +}; + +const u16 DecorGfx_TREECKO_DOLL[] = { + MAP_OBJ_GFX_TREECKO_DOLL +}; + +const u16 DecorGfx_TORCHIC_DOLL[] = { + MAP_OBJ_GFX_TORCHIC_DOLL +}; + +const u16 DecorGfx_MUDKIP_DOLL[] = { + MAP_OBJ_GFX_MUDKIP_DOLL +}; + +const u16 DecorGfx_DUSKULL_DOLL[] = { + MAP_OBJ_GFX_DUSKULL_DOLL +}; + +const u16 DecorGfx_WYNAUT_DOLL[] = { + MAP_OBJ_GFX_WYNAUT_DOLL +}; + +const u16 DecorGfx_BALTOY_DOLL[] = { + MAP_OBJ_GFX_BALTOY_DOLL +}; + +const u16 DecorGfx_KECLEON_DOLL[] = { + MAP_OBJ_GFX_KECLEON_DOLL +}; + +const u16 DecorGfx_AZURILL_DOLL[] = { + MAP_OBJ_GFX_AZURILL_DOLL +}; + +const u16 DecorGfx_SKITTY_DOLL[] = { + MAP_OBJ_GFX_SKITTY_DOLL +}; + +const u16 DecorGfx_SWABLU_DOLL[] = { + MAP_OBJ_GFX_SWABLU_DOLL +}; + +const u16 DecorGfx_GULPIN_DOLL[] = { + MAP_OBJ_GFX_GULPIN_DOLL +}; + +const u16 DecorGfx_LOTAD_DOLL[] = { + MAP_OBJ_GFX_LOTAD_DOLL +}; + +const u16 DecorGfx_SEEDOT_DOLL[] = { + MAP_OBJ_GFX_SEEDOT_DOLL +}; + +const u16 DecorGfx_PIKA_CUSHION[] = { + MAP_OBJ_GFX_PIKA_CUSHION +}; + +const u16 DecorGfx_ROUND_CUSHION[] = { + MAP_OBJ_GFX_ROUND_CUSHION +}; + +const u16 DecorGfx_KISS_CUSHION[] = { + MAP_OBJ_GFX_KISS_CUSHION +}; + +const u16 DecorGfx_ZIGZAG_CUSHION[] = { + MAP_OBJ_GFX_ZIGZAG_CUSHION +}; + +const u16 DecorGfx_SPIN_CUSHION[] = { + MAP_OBJ_GFX_SPIN_CUSHION +}; + +const u16 DecorGfx_DIAMOND_CUSHION[] = { + MAP_OBJ_GFX_DIAMOND_CUSHION +}; + +const u16 DecorGfx_BALL_CUSHION[] = { + MAP_OBJ_GFX_BALL_CUSHION +}; + +const u16 DecorGfx_GRASS_CUSHION[] = { + MAP_OBJ_GFX_GRASS_CUSHION +}; + +const u16 DecorGfx_FIRE_CUSHION[] = { + MAP_OBJ_GFX_FIRE_CUSHION +}; + +const u16 DecorGfx_WATER_CUSHION[] = { + MAP_OBJ_GFX_WATER_CUSHION +}; + +const u16 DecorGfx_SNORLAX_DOLL[] = { + MAP_OBJ_GFX_BIG_SNORLAX_DOLL +}; + +const u16 DecorGfx_RHYDON_DOLL[] = { + MAP_OBJ_GFX_BIG_RHYDON_DOLL +}; + +const u16 DecorGfx_LAPRAS_DOLL[] = { + MAP_OBJ_GFX_BIG_LAPRAS_DOLL +}; + +const u16 DecorGfx_VENUSAUR_DOLL[] = { + MAP_OBJ_GFX_BIG_VENUSAUR_DOLL +}; + +const u16 DecorGfx_CHARIZARD_DOLL[] = { + MAP_OBJ_GFX_BIG_CHARIZARD_DOLL +}; + +const u16 DecorGfx_BLASTOISE_DOLL[] = { + MAP_OBJ_GFX_BIG_BLASTOISE_DOLL +}; + +const u16 DecorGfx_WAILMER_DOLL[] = { + MAP_OBJ_GFX_BIG_WAILMER_DOLL +}; + +const u16 DecorGfx_REGIROCK_DOLL[] = { + MAP_OBJ_GFX_BIG_REGIROCK_DOLL +}; + +const u16 DecorGfx_REGICE_DOLL[] = { + MAP_OBJ_GFX_BIG_REGICE_DOLL +}; + +const u16 DecorGfx_REGISTEEL_DOLL[] = { + MAP_OBJ_GFX_BIG_REGISTEEL_DOLL +}; + +const struct Decoration gDecorations[] = { + {DECOR_NONE, _("SMALL DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_DESK, 0, DecorDesc_SMALL_DESK, DecorGfx_SMALL_DESK}, + {DECOR_SMALL_DESK, _("SMALL DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_DESK, 3000, DecorDesc_SMALL_DESK, DecorGfx_SMALL_DESK}, + {DECOR_POKEMON_DESK, _("POKéMON DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_DESK, 3000, DecorDesc_POKEMON_DESK, DecorGfx_POKEMON_DESK}, + {DECOR_HEAVY_DESK, _("HEAVY DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x2, DECORCAT_DESK, 6000, DecorDesc_HEAVY_DESK, DecorGfx_HEAVY_DESK}, + {DECOR_RAGGED_DESK, _("RAGGED DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x2, DECORCAT_DESK, 6000, DecorDesc_RAGGED_DESK, DecorGfx_RAGGED_DESK}, + {DECOR_COMFORT_DESK, _("COMFORT DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x2, DECORCAT_DESK, 6000, DecorDesc_COMFORT_DESK, DecorGfx_COMFORT_DESK}, + {DECOR_PRETTY_DESK, _("PRETTY DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_PRETTY_DESK, DecorGfx_PRETTY_DESK}, + {DECOR_BRICK_DESK, _("BRICK DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_BRICK_DESK, DecorGfx_BRICK_DESK}, + {DECOR_CAMP_DESK, _("CAMP DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_CAMP_DESK, DecorGfx_CAMP_DESK}, + {DECOR_HARD_DESK, _("HARD DESK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_3x3, DECORCAT_DESK, 9000, DecorDesc_HARD_DESK, DecorGfx_HARD_DESK}, + {DECOR_SMALL_CHAIR, _("SMALL CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_SMALL_CHAIR, DecorGfx_SMALL_CHAIR}, + {DECOR_POKEMON_CHAIR, _("POKéMON CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_POKEMON_CHAIR, DecorGfx_POKEMON_CHAIR}, + {DECOR_HEAVY_CHAIR, _("HEAVY CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_HEAVY_CHAIR, DecorGfx_HEAVY_CHAIR}, + {DECOR_PRETTY_CHAIR, _("PRETTY CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_PRETTY_CHAIR, DecorGfx_PRETTY_CHAIR}, + {DECOR_COMFORT_CHAIR, _("COMFORT CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_COMFORT_CHAIR, DecorGfx_COMFORT_CHAIR}, + {DECOR_RAGGED_CHAIR, _("RAGGED CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_RAGGED_CHAIR, DecorGfx_RAGGED_CHAIR}, + {DECOR_BRICK_CHAIR, _("BRICK CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_BRICK_CHAIR, DecorGfx_BRICK_CHAIR}, + {DECOR_CAMP_CHAIR, _("CAMP CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_CAMP_CHAIR, DecorGfx_CAMP_CHAIR}, + {DECOR_HARD_CHAIR, _("HARD CHAIR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_CHAIR, 2000, DecorDesc_HARD_CHAIR, DecorGfx_HARD_CHAIR}, + {DECOR_RED_PLANT, _("RED PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_PLANT, 3000, DecorDesc_RED_PLANT, DecorGfx_RED_PLANT}, + {DECOR_TROPICAL_PLANT, _("TROPICAL PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_PLANT, 3000, DecorDesc_TROPICAL_PLANT, DecorGfx_TROPICAL_PLANT}, + {DECOR_PRETTY_FLOWERS, _("PRETTY FLOWERS"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_PLANT, 3000, DecorDesc_PRETTY_FLOWERS, DecorGfx_PRETTY_FLOWERS}, + {DECOR_COLORFUL_PLANT, _("COLORFUL PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_2x2, DECORCAT_PLANT, 5000, DecorDesc_COLORFUL_PLANT, DecorGfx_COLORFUL_PLANT}, + {DECOR_BIG_PLANT, _("BIG PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_2x2, DECORCAT_PLANT, 5000, DecorDesc_BIG_PLANT, DecorGfx_BIG_PLANT}, + {DECOR_GORGEOUS_PLANT, _("GORGEOUS PLANT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_2x2, DECORCAT_PLANT, 5000, DecorDesc_GORGEOUS_PLANT, DecorGfx_GORGEOUS_PLANT}, + {DECOR_RED_BRICK, _("RED BRICK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 500, DecorDesc_RED_BRICK, DecorGfx_RED_BRICK}, + {DECOR_YELLOW_BRICK, _("YELLOW BRICK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 500, DecorDesc_YELLOW_BRICK, DecorGfx_YELLOW_BRICK}, + {DECOR_BLUE_BRICK, _("BLUE BRICK"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 500, DecorDesc_BLUE_BRICK, DecorGfx_BLUE_BRICK}, + {DECOR_RED_BALLOON, _("RED BALLOON"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_RED_BALLOON, DecorGfx_RED_BALLOON}, + {DECOR_BLUE_BALLOON, _("BLUE BALLOON"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_BLUE_BALLOON, DecorGfx_BLUE_BALLOON}, + {DECOR_YELLOW_BALLOON, _("YELLOW BALLOON"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_YELLOW_BALLOON, DecorGfx_YELLOW_BALLOON}, + {DECOR_RED_TENT, _("RED TENT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_ORNAMENT, 10000, DecorDesc_RED_TENT, DecorGfx_RED_TENT}, + {DECOR_BLUE_TENT, _("BLUE TENT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_ORNAMENT, 10000, DecorDesc_BLUE_TENT, DecorGfx_BLUE_TENT}, + {DECOR_SOLID_BOARD, _("SOLID BOARD"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 3000, DecorDesc_SOLID_BOARD, DecorGfx_SOLID_BOARD}, + {DECOR_SLIDE, _("SLIDE"), DECORPERM_PASS_FLOOR, DECORSHAPE_2x4, DECORCAT_ORNAMENT, 8000, DecorDesc_SLIDE, DecorGfx_SLIDE}, + {DECOR_FENCE_LENGTH, _("FENCE LENGTH"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_FENCE_LENGTH, DecorGfx_FENCE_LENGTH}, + {DECOR_FENCE_WIDTH, _("FENCE WIDTH"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 500, DecorDesc_FENCE_WIDTH, DecorGfx_FENCE_WIDTH}, + {DECOR_TIRE, _("TIRE"), DECORPERM_SOLID_FLOOR, DECORSHAPE_2x2, DECORCAT_ORNAMENT, 800, DecorDesc_TIRE, DecorGfx_TIRE}, + {DECOR_STAND, _("STAND"), DECORPERM_PASS_FLOOR, DECORSHAPE_4x2, DECORCAT_ORNAMENT, 7000, DecorDesc_STAND, DecorGfx_STAND}, + {DECOR_MUD_BALL, _("MUD BALL"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 200, DecorDesc_MUD_BALL, DecorGfx_MUD_BALL}, + {DECOR_BREAKABLE_DOOR, _("BREAKABLE DOOR"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 3000, DecorDesc_BREAKABLE_DOOR, DecorGfx_BREAKABLE_DOOR}, + {DECOR_SAND_ORNAMENT, _("SAND ORNAMENT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 3000, DecorDesc_SAND_ORNAMENT, DecorGfx_SAND_ORNAMENT}, + {DECOR_SILVER_SHIELD, _("SILVER SHIELD"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 0, DecorDesc_SILVER_SHIELD, DecorGfx_SILVER_SHIELD}, + {DECOR_GOLD_SHIELD, _("GOLD SHIELD"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 0, DecorDesc_GOLD_SHIELD, DecorGfx_GOLD_SHIELD}, + {DECOR_GLASS_ORNAMENT, _("GLASS ORNAMENT"), DECORPERM_BEHIND_FLOOR, DECORSHAPE_1x2, DECORCAT_ORNAMENT, 0, DecorDesc_GLASS_ORNAMENT, DecorGfx_GLASS_ORNAMENT}, + {DECOR_TV, _("TV"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 3000, DecorDesc_TV, DecorGfx_TV}, + {DECOR_ROUND_TV, _("ROUND TV"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 4000, DecorDesc_ROUND_TV, DecorGfx_ROUND_TV}, + {DECOR_CUTE_TV, _("CUTE TV"), DECORPERM_SOLID_FLOOR, DECORSHAPE_1x1, DECORCAT_ORNAMENT, 4000, DecorDesc_CUTE_TV, DecorGfx_CUTE_TV}, + {DECOR_GLITTER_MAT, _("GLITTER MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 2000, DecorDesc_GLITTER_MAT, DecorGfx_GLITTER_MAT}, + {DECOR_JUMP_MAT, _("JUMP MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 2000, DecorDesc_JUMP_MAT, DecorGfx_JUMP_MAT}, + {DECOR_SPIN_MAT, _("SPIN MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 2000, DecorDesc_SPIN_MAT, DecorGfx_SPIN_MAT}, + {DECOR_C_LOW_NOTE_MAT, _("C Low NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_C_LOW_NOTE_MAT, DecorGfx_C_LOW_NOTE_MAT}, + {DECOR_D_NOTE_MAT, _("D NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_D_NOTE_MAT, DecorGfx_D_NOTE_MAT}, + {DECOR_E_NOTE_MAT, _("E NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_E_NOTE_MAT, DecorGfx_E_NOTE_MAT}, + {DECOR_F_NOTE_MAT, _("F NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_F_NOTE_MAT, DecorGfx_F_NOTE_MAT}, + {DECOR_G_NOTE_MAT, _("G NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_G_NOTE_MAT, DecorGfx_G_NOTE_MAT}, + {DECOR_A_NOTE_MAT, _("A NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_A_NOTE_MAT, DecorGfx_A_NOTE_MAT}, + {DECOR_B_NOTE_MAT, _("B NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_B_NOTE_MAT, DecorGfx_B_NOTE_MAT}, + {DECOR_C_HIGH_NOTE_MAT, _("C High NOTE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_1x1, DECORCAT_MAT, 500, DecorDesc_C_HIGH_NOTE_MAT, DecorGfx_C_HIGH_NOTE_MAT}, + {DECOR_SURF_MAT, _("SURF MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_SURF_MAT, DecorGfx_SURF_MAT}, + {DECOR_THUNDER_MAT, _("THUNDER MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_THUNDER_MAT, DecorGfx_THUNDER_MAT}, + {DECOR_FIRE_BLAST_MAT, _("FIRE BLAST MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_FIRE_BLAST_MAT, DecorGfx_FIRE_BLAST_MAT}, + {DECOR_POWDER_SNOW_MAT, _("POWDER SNOW MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_POWDER_SNOW_MAT, DecorGfx_POWDER_SNOW_MAT}, + {DECOR_ATTRACT_MAT, _("ATTRACT MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_ATTRACT_MAT, DecorGfx_ATTRACT_MAT}, + {DECOR_FISSURE_MAT, _("FISSURE MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_FISSURE_MAT, DecorGfx_FISSURE_MAT}, + {DECOR_SPIKES_MAT, _("SPIKES MAT"), DECORPERM_PASS_FLOOR, DECORSHAPE_3x3, DECORCAT_MAT, 4000, DecorDesc_SPIKES_MAT, DecorGfx_SPIKES_MAT}, + {DECOR_BALL_POSTER, _("BALL POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_BALL_POSTER, DecorGfx_BALL_POSTER}, + {DECOR_GREEN_POSTER, _("GREEN POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_GREEN_POSTER, DecorGfx_GREEN_POSTER}, + {DECOR_RED_POSTER, _("RED POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_RED_POSTER, DecorGfx_RED_POSTER}, + {DECOR_BLUE_POSTER, _("BLUE POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_BLUE_POSTER, DecorGfx_BLUE_POSTER}, + {DECOR_CUTE_POSTER, _("CUTE POSTER"), DECORPERM_NA_WALL, DECORSHAPE_1x1, DECORCAT_POSTER, 1000, DecorDesc_CUTE_POSTER, DecorGfx_CUTE_POSTER}, + {DECOR_PIKA_POSTER, _("PIKA POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_PIKA_POSTER, DecorGfx_PIKA_POSTER}, + {DECOR_LONG_POSTER, _("LONG POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_LONG_POSTER, DecorGfx_LONG_POSTER}, + {DECOR_SEA_POSTER, _("SEA POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_SEA_POSTER, DecorGfx_SEA_POSTER}, + {DECOR_SKY_POSTER, _("SKY POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_SKY_POSTER, DecorGfx_SKY_POSTER}, + {DECOR_KISS_POSTER, _("KISS POSTER"), DECORPERM_NA_WALL, DECORSHAPE_2x1, DECORCAT_POSTER, 1500, DecorDesc_KISS_POSTER, DecorGfx_KISS_POSTER}, + {DECOR_PICHU_DOLL, _("PICHU DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_PICHU_DOLL, DecorGfx_PICHU_DOLL}, + {DECOR_PIKACHU_DOLL, _("PIKACHU DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_PIKACHU_DOLL, DecorGfx_PIKACHU_DOLL}, + {DECOR_MARILL_DOLL, _("MARILL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_MARILL_DOLL, DecorGfx_MARILL_DOLL}, + {DECOR_TOGEPI_DOLL, _("TOGEPI DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TOGEPI_DOLL, DecorGfx_TOGEPI_DOLL}, + {DECOR_CYNDAQUIL_DOLL, _("CYNDAQUIL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_CYNDAQUIL_DOLL, DecorGfx_CYNDAQUIL_DOLL}, + {DECOR_CHIKORITA_DOLL, _("CHIKORITA DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_CHIKORITA_DOLL, DecorGfx_CHIKORITA_DOLL}, + {DECOR_TOTODILE_DOLL, _("TOTODILE DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TOTODILE_DOLL, DecorGfx_TOTODILE_DOLL}, + {DECOR_JIGGLYPUFF_DOLL, _("JIGGLYPUFF DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_JIGGLYPUFF_DOLL, DecorGfx_JIGGLYPUFF_DOLL}, + {DECOR_MEOWTH_DOLL, _("MEOWTH DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_MEOWTH_DOLL, DecorGfx_MEOWTH_DOLL}, + {DECOR_CLEFAIRY_DOLL, _("CLEFAIRY DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_CLEFAIRY_DOLL, DecorGfx_CLEFAIRY_DOLL}, + {DECOR_DITTO_DOLL, _("DITTO DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_DITTO_DOLL, DecorGfx_DITTO_DOLL}, + {DECOR_SMOOCHUM_DOLL, _("SMOOCHUM DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SMOOCHUM_DOLL, DecorGfx_SMOOCHUM_DOLL}, + {DECOR_TREECKO_DOLL, _("TREECKO DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TREECKO_DOLL, DecorGfx_TREECKO_DOLL}, + {DECOR_TORCHIC_DOLL, _("TORCHIC DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_TORCHIC_DOLL, DecorGfx_TORCHIC_DOLL}, + {DECOR_MUDKIP_DOLL, _("MUDKIP DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_MUDKIP_DOLL, DecorGfx_MUDKIP_DOLL}, + {DECOR_DUSKULL_DOLL, _("DUSKULL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_DUSKULL_DOLL, DecorGfx_DUSKULL_DOLL}, + {DECOR_WYNAUT_DOLL, _("WYNAUT DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_WYNAUT_DOLL, DecorGfx_WYNAUT_DOLL}, + {DECOR_BALTOY_DOLL, _("BALTOY DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_BALTOY_DOLL, DecorGfx_BALTOY_DOLL}, + {DECOR_KECLEON_DOLL, _("KECLEON DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_KECLEON_DOLL, DecorGfx_KECLEON_DOLL}, + {DECOR_AZURILL_DOLL, _("AZURILL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_AZURILL_DOLL, DecorGfx_AZURILL_DOLL}, + {DECOR_SKITTY_DOLL, _("SKITTY DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SKITTY_DOLL, DecorGfx_SKITTY_DOLL}, + {DECOR_SWABLU_DOLL, _("SWABLU DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SWABLU_DOLL, DecorGfx_SWABLU_DOLL}, + {DECOR_GULPIN_DOLL, _("GULPIN DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_GULPIN_DOLL, DecorGfx_GULPIN_DOLL}, + {DECOR_LOTAD_DOLL, _("LOTAD DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_LOTAD_DOLL, DecorGfx_LOTAD_DOLL}, + {DECOR_SEEDOT_DOLL, _("SEEDOT DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_DOLL, 3000, DecorDesc_SEEDOT_DOLL, DecorGfx_SEEDOT_DOLL}, + {DECOR_PIKA_CUSHION, _("PIKA CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_PIKA_CUSHION, DecorGfx_PIKA_CUSHION}, + {DECOR_ROUND_CUSHION, _("ROUND CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_ROUND_CUSHION, DecorGfx_ROUND_CUSHION}, + {DECOR_KISS_CUSHION, _("KISS CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_KISS_CUSHION, DecorGfx_KISS_CUSHION}, + {DECOR_ZIGZAG_CUSHION, _("ZIGZAG CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_ZIGZAG_CUSHION, DecorGfx_ZIGZAG_CUSHION}, + {DECOR_SPIN_CUSHION, _("SPIN CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_SPIN_CUSHION, DecorGfx_SPIN_CUSHION}, + {DECOR_DIAMOND_CUSHION, _("DIAMOND CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_DIAMOND_CUSHION, DecorGfx_DIAMOND_CUSHION}, + {DECOR_BALL_CUSHION, _("BALL CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_BALL_CUSHION, DecorGfx_BALL_CUSHION}, + {DECOR_GRASS_CUSHION, _("GRASS CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_GRASS_CUSHION, DecorGfx_GRASS_CUSHION}, + {DECOR_FIRE_CUSHION, _("FIRE CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_FIRE_CUSHION, DecorGfx_FIRE_CUSHION}, + {DECOR_WATER_CUSHION, _("WATER CUSHION"), DECORPERM_SOLID_MAT, DECORSHAPE_1x1, DECORCAT_CUSHION, 2000, DecorDesc_WATER_CUSHION, DecorGfx_WATER_CUSHION}, + {DECOR_SNORLAX_DOLL, _("SNORLAX DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_SNORLAX_DOLL, DecorGfx_SNORLAX_DOLL}, + {DECOR_RHYDON_DOLL, _("RHYDON DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_RHYDON_DOLL, DecorGfx_RHYDON_DOLL}, + {DECOR_LAPRAS_DOLL, _("LAPRAS DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_LAPRAS_DOLL, DecorGfx_LAPRAS_DOLL}, + {DECOR_VENUSAUR_DOLL, _("VENUSAUR DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_VENUSAUR_DOLL, DecorGfx_VENUSAUR_DOLL}, + {DECOR_CHARIZARD_DOLL, _("CHARIZARD DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_CHARIZARD_DOLL, DecorGfx_CHARIZARD_DOLL}, + {DECOR_BLASTOISE_DOLL, _("BLASTOISE DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_BLASTOISE_DOLL, DecorGfx_BLASTOISE_DOLL}, + {DECOR_WAILMER_DOLL, _("WAILMER DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_WAILMER_DOLL, DecorGfx_WAILMER_DOLL}, + {DECOR_REGIROCK_DOLL, _("REGIROCK DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGIROCK_DOLL, DecorGfx_REGIROCK_DOLL}, + {DECOR_REGICE_DOLL, _("REGICE DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGICE_DOLL, DecorGfx_REGICE_DOLL}, + {DECOR_REGISTEEL_DOLL, _("REGISTEEL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGISTEEL_DOLL, DecorGfx_REGISTEEL_DOLL} +}; + +const u8 *const gUnknown_083EC5E4[] = { + SecretBaseText_Desk, + SecretBaseText_Chair, + SecretBaseText_Plant, + SecretBaseText_Ornament, + SecretBaseText_Mat, + SecretBaseText_Poster, + SecretBaseText_Doll, + SecretBaseText_Cushion +}; + +const struct MenuAction2 gUnknown_083EC604[] = { + {SecretBaseText_Decorate, sub_80FF160}, + {SecretBaseText_PutAway, sub_8100A0C}, + {SecretBaseText_Toss, sub_8101700}, + {gUnknownText_Exit, gpu_pal_decompress_alloc_tag_and_upload} +}; + +const u8 *const gUnknown_083EC624[] = { + SecretBaseText_PutOutDecor, + SecretBaseText_StoreChosenDecor, + SecretBaseText_ThrowAwayDecor, + gMenuText_GoBackToPrev +}; + +const struct MenuAction3 gUnknown_083EC634[] = { + {sub_80FF5BC, sub_80FF058}, + {sub_81017A0, sub_80FF058}, + {sub_81017A0, sub_80FF058}, + {sub_8109D04, sub_80FF058} +}; + +const u16 gUnknown_083EC654[] = {0x6318, 0x739C, 0x7FFF}; +const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}"); + +const u8 Unknown_3EC660[] = {0, 1, 2, 3}; +const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13}; +const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; +const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21}; +const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7}; +const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; +const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45}; +const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29}; + +const u8 Unknown_3EC6F0[] = {0, 0, 0, 0}; +const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1}; +const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2}; +const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7}; +const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3}; +const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1}; +const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2}; +const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7}; +const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8}; +const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5}; + +const u8 Unknown_3EC7A8[] = {4, 5, 6, 7}; +const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7}; +const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; +const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7}; +const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; +const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7}; +const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7}; +const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; +const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; +const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; + +const struct UnkStruct_803EC860 gUnknown_083EC860[] = { + {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4}, + {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8}, + {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc}, + {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20}, + {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10}, + {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8}, + {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc}, + {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20}, + {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24}, + {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18} +}; + +const struct UnkStruct_083EC900 gUnknown_083EC900[] = { + {0, 1, 0x78, 0x4e}, + {1, 2, 0x80, 0x4e}, + {1, 3, 0x90, 0x56}, + {1, 3, 0x90, 0x46}, + {0, 2, 0x80, 0x46}, + {2, 2, 0x78, 0x46}, + {2, 3, 0x80, 0x56}, + {2, 3, 0x80, 0x36}, + {0, 3, 0x90, 0x46}, + {1, 3, 0x90, 0x46} +}; + +const union AnimCmd gSpriteAnim_83EC928[] = { + ANIMCMD_FRAME(.imageValue = 0, .duration = 0), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83EC930[] = { + gSpriteAnim_83EC928 +}; + +const struct SpriteFrameImage gSpriteImageTable_83EC934[] = { + {.data = (u8 *)&gUnknown_02038900.image, .size = sizeof gUnknown_02038900.image} +}; + +const struct SpriteTemplate gSpriteTemplate_83EC93C = { + .tileTag = 0xffff, + .paletteTag = 3000, + .oam = &gUnknown_020391AC, + .anims = gSpriteAnimTable_83EC930, + .images = gSpriteImageTable_83EC934, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81009A8 +}; + +const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000}; + +const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C}; +const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C}; +const struct YesNoFuncTable gUnknown_083EC96C[] = { + {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08}, + {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4} +}; + +const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0}; +const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0}; + +const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal"); +const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal"); +const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC}; +const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC}; +const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp"); +const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8}; +const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8}; +const struct OamData gOamData_83ECA6C = { + .size = 1, .priority = 1 +}; + +const union AnimCmd gSpriteAnim_83ECA74[] = { + ANIMCMD_FRAME(.imageValue = 0, .duration = 0), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = { + gSpriteAnim_83ECA74 +}; + +const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = { + obj_frame_tiles(gSpriteImage_83EC9DC) +}; + +const struct SpriteTemplate gSpriteTemplate_83ECA88 = { + .tileTag = 0xffff, + .paletteTag = 8, + .oam = &gOamData_83ECA6C, + .anims = gSpriteAnimTable_83ECA7C, + .images = gSpriteImageTable_83ECA80, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101698 +}; + +const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C}; + +u8 *const unref_label_083ECAA8[] = {ewram}; + +// text + +extern u8 gUnknown_0815F399[]; + +void sub_80FE1DC(void) +{ + sub_80FE2B4(); + MenuDrawTextWindow(0, 0, 10, 9); + PrintMenuItems(1, 1, 4, (const struct MenuAction *)gUnknown_083EC604); + InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); +} + +void sub_80FE220(void) +{ + gUnknown_020388D4 = 0; + ScriptContext2_Enable(); + sub_80FE1DC(); + sub_80FE394(); +} + +void DecorationPC(u8 taskId) +{ + sub_80FE220(); + gTasks[taskId].func = Task_DecorationPCProcessMenuInput; +} + +void Task_SecretBasePC_Decoration(u8 taskId) +{ + DecorationPC(taskId); + ewram_1f000.items = gSaveBlock1.secretBases[0].decorations; + ewram_1f000.pos = gSaveBlock1.secretBases[0].decorationPos; + ewram_1f000.size = sizeof gSaveBlock1.secretBases[0].decorations; + ewram_1f000.isPlayerRoom = 0; +} + +void DoPlayerPCDecoration(u8 taskId) +{ + DecorationPC(taskId); + ewram_1f000.items = gSaveBlock1.playerRoomDecor; + ewram_1f000.pos = gSaveBlock1.playerRoomDecorPos; + ewram_1f000.size = sizeof gSaveBlock1.playerRoomDecor; + ewram_1f000.isPlayerRoom = 1; +} + +void sub_80FE2B4(void) +{ + u16 palettes[3]; + memcpy(palettes, gUnknown_083EC654, sizeof gUnknown_083EC654); + LoadPalette(&palettes[2], 0xdf, 2); + LoadPalette(&palettes[1], 0xd1, 2); + LoadPalette(&palettes[0], 0xd8, 2); +} + +void Task_DecorationPCProcessMenuInput(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gMain.newKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + gUnknown_020388D4 = MoveMenuCursor(-1); + sub_80FE394(); + } + if (gMain.newKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + gUnknown_020388D4 = MoveMenuCursor(1); + sub_80FE394(); + } + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_083EC604[gUnknown_020388D4].func(taskId); + } else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + gpu_pal_decompress_alloc_tag_and_upload(taskId); + } + } +} + +void sub_80FE394(void) +{ + MenuFillWindowRectWithBlankTile(2, 15, 27, 18); + MenuPrint(gUnknown_083EC624[gUnknown_020388D4], 2, 15); +} + +void gpu_pal_decompress_alloc_tag_and_upload(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 10, 9); + MenuFillWindowRectWithBlankTile(2, 15, 27, 18); + FreeSpritePaletteByTag(6); + if (ewram_1f000.isPlayerRoom == 0) + { + ScriptContext1_SetupScript(gUnknown_0815F399); + DestroyTask(taskId); + } else + { + ReshowPlayerPC(taskId); + } +} + +void sub_80FE418(u8 taskId) +{ + sub_80FE5AC(taskId); +} + +void sub_80FE428(u8 taskId) +{ + InitMenu(0, 1, 1, 4, gUnknown_020388D4, 9); + sub_80FE394(); + gTasks[taskId].func = Task_DecorationPCProcessMenuInput; +} + +void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCategorySelectionMenuString +{ + u8 *strptr; + u8 v0; + v0 = sub_8072CBC(); + // PALETTE {palIdx} + strptr = gStringVar4; + strptr[0] = EXT_CTRL_CODE_BEGIN; + strptr[1] = 5; + strptr[2] = palIdx; + strptr += 3; + strptr = StringCopy(strptr, gUnknown_083EC5E4[decoCat]); + strptr = sub_8072C14(strptr, sub_8134194(decoCat), 0x56, 1); + *strptr++ = 0xba; + strptr = sub_8072C14(strptr, gDecorationInventories[decoCat].size, 0x68, 1); + strptr[0] = EXT_CTRL_CODE_BEGIN; + strptr[1] = 5; + strptr[2] = v0; + strptr[3] = EOS; + MenuPrint(gStringVar4, left, top); +} + +void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings +{ + u8 decoCat; + MenuDrawTextWindow(0, 0, 14, 19); + for (decoCat=0; decoCat<8; decoCat++) + { + if (ewram_1f000.isPlayerRoom == 1 && gTasks[taskId].data[11] == 0 && decoCat != DECORCAT_DOLL && decoCat != DECORCAT_CUSHION) + { + sub_80FE470(decoCat, 1, 2 * decoCat + 1, 13); // Selectable + } else + { + sub_80FE470(decoCat, 1, 2 * decoCat + 1, 255); // Unselectable + } + } + MenuPrint(gUnknownText_Exit, 1, 17); +} + +void sub_80FE5AC(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_80FE528(taskId); + InitMenu(0, 1, 1, 9, gUnknown_020388F6, 13); + gTasks[taskId].func = sub_80FE604; +} + +void sub_80FE604(u8 taskId) +{ + if (!gPaletteFade.active) + { + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(SE_SELECT); + MoveMenuCursor(-1); + } else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(SE_SELECT); + MoveMenuCursor(1); + } else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + gUnknown_020388F6 = GetMenuCursorPos(); + if (gUnknown_020388F6 != 8) + { + gUnknown_020388D5 = sub_8134194(gUnknown_020388F6); + if (gUnknown_020388D5) + { + sub_8134104(gUnknown_020388F6); + gUnknown_020388D0 = gDecorationInventories[gUnknown_020388F6].items; + sub_80FEF50(taskId); + sub_80F944C(); + sub_80F9480(gUnknown_020388F7, 8); + LoadScrollIndicatorPalette(); + gTasks[taskId].func = sub_80FE868; + } else + { + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 14, 19); + DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE418, 0); + } + } else + { + sub_80FE728(taskId); + } + } else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sub_80FE728(taskId); + } + } +} + +void sub_80FE728(u8 taskId) +{ + if (gTasks[taskId].data[11] != 3) + { + sub_80FE758(taskId); + } else + { + sub_8109DAC(taskId); + } +} + +void sub_80FE758(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 14, 19); + if (gTasks[taskId].data[11] != 2) + { + sub_80FE1DC(); + MenuDisplayMessageBox(); + sub_80FE394(); + gTasks[taskId].func = Task_DecorationPCProcessMenuInput; + } else + { + sub_80B3068(taskId); + } +} + +void sub_80FE7A8(u8 taskId) { - sub_8072DEC(); + gTasks[taskId].data[11] = 3; + gUnknown_020388F6 = 0; + sub_80FE5AC(taskId); +} + +void sub_80FE7D4(u8 *dest, u8 decClass) +{ + StringCopy(dest, gUnknown_083EC5E4[decClass]); +} + +void sub_80FE7EC(u8 taskId) +{ + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 29, 19); - sub_80FEC94(arg0); + sub_80FEC94(taskId); sub_80FECB8(gUnknown_020388F6); MenuDrawTextWindow(15, 12, 29, 19); @@ -25,3 +1788,2410 @@ void sub_80FE7EC(u8 arg0) sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4); InitMenu(0, 1, 2, gUnknown_020388F3 + 1, gUnknown_020388F2, 13); } + +void sub_80FE868(u8 taskId) +{ + sub_80FE7EC(taskId); + gTasks[taskId].func = sub_80FE948; +} + +void sub_80FE894(u8 taskId /*r8*/, s8 cursorVector /*r5*/, s8 bgVector /*r7*/) +{ + int v0 /*r10*/; + u8 v1; + v0 = gUnknown_020388F2 + gUnknown_020388F4 == gUnknown_020388D5; + PlaySE(SE_SELECT); + if (cursorVector != 0) + { + gUnknown_020388F2 = MoveMenuCursor(cursorVector); + } + if (bgVector != 0) + { + v1 = gUnknown_020388F4; + gUnknown_020388F4 = v1 + bgVector; + sub_80FEABC(taskId, 1); + } + if (gUnknown_020388F2 + gUnknown_020388F4 != gUnknown_020388D5) + { + if (v0) + { + MenuDrawTextWindow(15, 12, 29, 19); + } + sub_80FECE0(gUnknown_020388F2 + gUnknown_020388F4); + } else + { + MenuZeroFillWindowRect(15, 12, 29, 19); + } +} + +void sub_80FE948(u8 taskId) +{ + if (!gPaletteFade.active) + { + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) + { + if (gUnknown_020388F2 != 0) + { + sub_80FE894(taskId, -1, 0); + } else if (gUnknown_020388F4 != 0) + { + sub_80FE894(taskId, 0, -1); + } + } + if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) + { + if (gUnknown_020388F2 != gUnknown_020388F3) + { + sub_80FE894(taskId, 1, 0); + } else if (gUnknown_020388F4 + gUnknown_020388F2 != gUnknown_020388D5) + { + sub_80FE894(taskId, 0, 1); + } + } + if (gMain.newKeys & A_BUTTON) + { + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gUnknown_020388F5 = gUnknown_020388F2 + gUnknown_020388F4; + if (gUnknown_020388F5 == gUnknown_020388D5) + { + gUnknown_083EC634[gTasks[taskId].data[11]].func2(taskId); + } else + { + gUnknown_083EC634[gTasks[taskId].data[11]].func1(taskId); + } + } else if (gMain.newKeys & B_BUTTON) + { + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gUnknown_083EC634[gTasks[taskId].data[11]].func2(taskId); + } + } +} + +void sub_80FEABC(u8 taskId, u8 dummy1) +{ + u16 i; + u16 j; + u8 ni; + if (gUnknown_020388F4 != 0 || (DestroyVerticalScrollIndicator(0), gUnknown_020388F4 != 0)) + { + CreateVerticalScrollIndicators(0, 0x3c, 0x08); + } + if (gUnknown_020388F4 + 7 == gUnknown_020388D5) + { + DestroyVerticalScrollIndicator(1); + } + if (gUnknown_020388F4 + 7 < gUnknown_020388D5) + { + CreateVerticalScrollIndicators(1, 0x3c, 0x98); + } + for (i=gUnknown_020388F4; i<gUnknown_020388F4+8; i++) + { + ni = 2 * (i - gUnknown_020388F4) + 2; + if (gUnknown_020388F7[i - gUnknown_020388F4]) + { + sub_80F94F8(&gUnknown_020388F7[i - gUnknown_020388F4]); + } + if (i == gUnknown_020388D5) + { + sub_8072A18(gUnknownText_Exit, 0x08, 8 * ni, 0x68, 1); + break; + } + if (gUnknown_020388D0[i]) + { + if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION && gTasks[taskId].data[11] == 0) + { + StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[i]].name); + sub_8072A18(gUnknown_083EC65A, 0x08, 8 * ni, 0x68, 1); + } else + { + sub_8072A18(gDecorations[gUnknown_020388D0[i]].name, 0x08, 8 * ni, 0x68, 1); + } + for (j=0; j<16; j++) + { + if (gUnknown_020388D6[j] - 1 == i) + { + sub_80F94A4(4, &gUnknown_020388F7[i - gUnknown_020388F4], 0x6c, (i - gUnknown_020388F4) * 16 + 24); + break; + } + } + for (j=0; j<12; j++) + { + if (gUnknown_020388E6[j] - 1 == i) + { + sub_80F94A4(5, &gUnknown_020388F7[i - gUnknown_020388F4], 0x6c, (i - gUnknown_020388F4) * 16 + 24); + break; + } + } + } + } +} + +void sub_80FEC94(u8 taskId) +{ + MenuDrawTextWindow(0, 0, 14, 19); + sub_80FEABC(taskId, 0); +} + +void sub_80FECB8(u8 decoCat) +{ + MenuDrawTextWindow(15, 0, 29, 3); + sub_80FE470(decoCat, 16, 1, 0xff); +} + +void sub_80FECE0(u8 decoCat) +{ + sub_8072AB0(gDecorations[gUnknown_020388D0[decoCat]].description, 0x80, 0x68, 0x68, 0x30, 0x1); +} + +void sub_80FED1C(void) +{ + MenuZeroFillWindowRect(15, 0, 29, 3); + MenuZeroFillWindowRect(15, 12, 29, 19); +} + +void sub_80FED3C(u8 taskId) +{ + LoadScrollIndicatorPalette(); + gTasks[taskId].func = sub_80FE868; +} + +bool8 sub_80FED64(u8 a0) +{ + u8 i; + for (i=0; i<16; i++) + { + if (gUnknown_020388D6[i] == a0) + { + return TRUE; + } + } + return FALSE; +} + +void sub_80FED90(u8 taskId) +{ + u16 i; + u16 j; + u16 k; + u16 cnt; + cnt = 0; + for (i=0; i<16; i++) + { + gUnknown_020388D6[i] = 0; + if (i < 12) + { + gUnknown_020388E6[i] = 0; + } + } + for (i=0; i<16; i++) + { + if (gSaveBlock1.secretBases[0].decorations[i] != 0) + { + for (j=0; j<gDecorationInventories[gUnknown_020388F6].size; j++) + { + if (gUnknown_020388D0[j] == gSaveBlock1.secretBases[0].decorations[i]) + { + for (k=0; k<cnt && gUnknown_020388D6[k]!=j+1; k++); + if (k == cnt) + { + gUnknown_020388D6[cnt] = j+1; + cnt++; + break; + } + } + } + } + } + cnt = 0; + for (i=0; i<12; i++) + { + if (gSaveBlock1.playerRoomDecor[i] != 0) + { + for (j=0; j<gDecorationInventories[gUnknown_020388F6].size; j++) + { + if (gUnknown_020388D0[j] == gSaveBlock1.playerRoomDecor[i] && !sub_80FED64(j + 1)) + { + for (k=0; k<cnt && gUnknown_020388E6[k]!=j+1; k++); + if (k == cnt) + { + gUnknown_020388E6[cnt] = j+1; + cnt++; + break; + } + } + } + } + } +} + +void sub_80FEF28(void) +{ + if (gUnknown_020388D5 <= 7) + { + gUnknown_020388F3 = gUnknown_020388D5; + } else + { + gUnknown_020388F3 = 7; + } +} + +void sub_80FEF50(u8 taskId) +{ + sub_80FED90(taskId); + sub_80FEF28(); + gUnknown_020388F2 = 0; + gUnknown_020388F4 = 0; +} + +void sub_80FEF74(void) +{ + sub_80F9520(gUnknown_020388F7, 8); + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 14, 19); +} + +bool8 sub_80FEFA4(void) +{ + u16 i; + int v0; + for (i=0; i<16; i++) + { + v0 = gUnknown_020388F4 + gUnknown_020388F2 + 1; + if (gUnknown_020388D6[i] == v0 || (i < 12 && gUnknown_020388E6[i] == v0)) + { + return FALSE; + } + } + return TRUE; +} + +void sub_80FEFF4(u8 taskId) +{ + if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON) + { + LoadScrollIndicatorPalette(); + gTasks[taskId].func = sub_80FE868; + } +} + +void sub_80FF034(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 14, 19); + sub_80FE5AC(taskId); +} + +void sub_80FF058(u8 taskId) +{ + sub_80F9520(gUnknown_020388F7, 8); + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + BuyMenuFreeMemory(); + gTasks[taskId].func = sub_80FF034; +} + +void sub_80FF098(u8 taskId) +{ + gUnknown_020388D5--; + if (gUnknown_020388F4 + 7 > gUnknown_020388D5 && gUnknown_020388F4 != 0) + { + gUnknown_020388F4--; + } + sub_8134104(gUnknown_020388F6); + sub_80FED90(taskId); + sub_80FEF28(); +} + +void sub_80FF0E0(u8 taskId) +{ + gTasks[taskId].data[3] = gSaveBlock1.pos.x; + gTasks[taskId].data[4] = gSaveBlock1.pos.y; + PlayerGetDestCoords(&gTasks[taskId].data[0], &gTasks[taskId].data[1]); +} + +void sub_80FF114(u8 taskId) +{ + DrawWholeMapView(); + warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gTasks[taskId].data[3], gTasks[taskId].data[4]); + warp_in(); +} +void sub_80FF160(u8 taskId) +{ + if (!sub_81341D4()) + { + DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); + } else + { + gTasks[taskId].data[11] = 0; + gUnknown_020388F6 = 0; + sub_80FE5AC(taskId); + } +} + +u16 sub_80FF1B0(u8 decoId, u8 a1) +{ + u16 retval; + retval = 0xffff; + + switch (decoId) + { + case DECOR_STAND: + retval = gUnknown_083EC97C[a1] << 12; + return retval; + case DECOR_SLIDE: + retval = gUnknown_083EC984[a1] << 12; + return retval; + default: + return retval; + } +} + +void sub_80FF1EC(u16 mapX, u16 mapY, u8 decWidth, u8 decHeight, u16 decIdx) +{ + u16 i; + u16 j; // r10 + u16 behavior; + u16 flags; // r8 + u16 v0; + u16 v1; + s16 x; + s16 decBottom; + + for (i=0; i<decHeight; i++) + { + decBottom = mapY - decHeight + 1 + i; + for (j=0; j<decWidth; j++) + { + x = mapX + j; + behavior = GetBehaviorByMetatileId(0x200 + gDecorations[decIdx].tiles[i * decWidth + j]); + if (sub_8057288(behavior) == 1 || (gDecorations[decIdx].permission != DECORPERM_PASS_FLOOR && (behavior >> 12))) + { + flags = 0xc00; + } else + { + flags = 0x000; + } + if (gDecorations[decIdx].permission != DECORPERM_NA_WALL && sub_80572B0(MapGridGetMetatileBehaviorAt(x, decBottom)) == 1) + { + v0 = 1; + } else + { + v0 = 0; + } + v1 = sub_80FF1B0(gDecorations[decIdx].id, i * decWidth + j); + if (v1 != 0xffff) + { + MapGridSetMetatileEntryAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | flags | v1); + } else + { + MapGridSetMetatileIdAt(x, decBottom, (gDecorations[decIdx].tiles[i * decWidth + j] + (0x200 | v0)) | flags); + } + } + } +} + +void sub_80FF394(u16 mapX, u16 mapY, u16 decIdx) +{ + switch (gDecorations[decIdx].shape) + { + case DECORSHAPE_1x1: + sub_80FF1EC(mapX, mapY, 1, 1, decIdx); + break; + case DECORSHAPE_2x1: + sub_80FF1EC(mapX, mapY, 2, 1, decIdx); + break; + case DECORSHAPE_3x1: // unused + sub_80FF1EC(mapX, mapY, 3, 1, decIdx); + break; + case DECORSHAPE_4x2: + sub_80FF1EC(mapX, mapY, 4, 2, decIdx); + break; + case DECORSHAPE_2x2: + sub_80FF1EC(mapX, mapY, 2, 2, decIdx); + break; + case DECORSHAPE_1x2: + sub_80FF1EC(mapX, mapY, 1, 2, decIdx); + break; + case DECORSHAPE_1x3: // unused + sub_80FF1EC(mapX, mapY, 1, 3, decIdx); + break; + case DECORSHAPE_2x4: + sub_80FF1EC(mapX, mapY, 2, 4, decIdx); + break; + case DECORSHAPE_3x3: + sub_80FF1EC(mapX, mapY, 3, 3, decIdx); + break; + case DECORSHAPE_3x2: + sub_80FF1EC(mapX, mapY, 3, 2, decIdx); + break; + } +} + +void sub_80FF474(void) +{ + u8 i; + u8 j; + for (i=0; i<14; i++) + { + if (FlagGet(i + 0xae) == 1) + { + FlagReset(i + 0xae); + for (j=0; j<gMapHeader.events->mapObjectCount; j++) + { + if (gMapHeader.events->mapObjects[j].flagId == i + 0xae) + { + break; + } + } + VarSet(0x3f20 + gMapHeader.events->mapObjects[j].graphicsId, gUnknown_02038900.decoration->tiles[0]); + gSpecialVar_0x8005 = gMapHeader.events->mapObjects[j].localId; + gSpecialVar_0x8006 = gUnknown_020391A4; + gSpecialVar_0x8007 = gUnknown_020391A6; + show_sprite(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gSpecialVar_0x8005, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + break; + } + } +} + +bool8 sub_80FF58C/*IsThereRoomForMoreDecorations*/(void) +{ + u16 i; + for (i=0; i<ewram_1f000.size; i++) + { + if (ewram_1f000.items[i] == 0) + { + return TRUE; + } + } + return FALSE; +} + +void sub_80FF5BC(u8 taskId) +{ + if (ewram_1f000.isPlayerRoom == 1 && gUnknown_020388F6 != DECORCAT_DOLL && gUnknown_020388F6 != DECORCAT_CUSHION) + { + sub_80FEF74(); + sub_80FED1C(); + DisplayItemMessageOnField(taskId, gSecretBaseText_DecorCantPlace, sub_80FEFF4, 0); + } else if (sub_80FEFA4() == TRUE) + { + if (sub_80FF58C() == TRUE) + { + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_80FF6AC; + } else + { + sub_80FEF74(); + sub_80FED1C(); + ConvertIntToDecimalStringN(gStringVar1, ewram_1f000.size, STR_CONV_MODE_RIGHT_ALIGN, 2); + if (!ewram_1f000.isPlayerRoom) + { + StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor); + } else + { + StringExpandPlaceholders(gStringVar4, gSecretBaseText_NoMoreDecor2); + } + DisplayItemMessageOnField(taskId, gStringVar4, sub_80FEFF4, 0); + } + } else + { + sub_80FEF74(); + sub_80FED1C(); + DisplayItemMessageOnField(taskId, gSecretBaseText_InUseAlready, sub_80FEFF4, 0); + } +} + +void sub_80FF6AC(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + if (!gPaletteFade.active) + { + sub_80FF0E0(taskId); + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); + sub_80F9520(gUnknown_020388F7, 8); + BuyMenuFreeMemory(); + gTasks[taskId].data[2] = 1; + } + break; + case 1: + gPaletteFade.bufferTransferDisabled = 1; + AddDecorationIconObjectFromFieldObject(&gUnknown_02038900, gUnknown_020388D0[gUnknown_020388F5]); + sub_80FF960(taskId); + SetUpPlacingDecorationPlayerAvatar(taskId, &gUnknown_02038900); + pal_fill_black(); + gPaletteFade.bufferTransferDisabled = 0; + gTasks[taskId].data[2] = 2; + break; + case 2: + if (sub_807D770() == 1) + { + gTasks[taskId].data[12] = 0; + sub_810065C(taskId); + } + break; + } +} + +void AddDecorationIconObjectFromFieldObject(struct UnkStruct_02038900 * unk_02038900, u8 decoIdx) +{ + sub_80FEF74(); + sub_80FED1C(); + sub_81006D0(unk_02038900); + unk_02038900->decoration = &gDecorations[decoIdx]; + if (gDecorations[decoIdx].permission != DECORPERM_SOLID_MAT) + { + sub_81008BC(unk_02038900); + sub_8100930(unk_02038900->decoration->shape); + sub_8100874(unk_02038900); + sub_810070C(unk_02038900->palette, ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles + 8 * unk_02038900->decoration->tiles[0])[7] >> 12); + LoadSpritePalette(&gUnknown_083EC954); + gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data0; + gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83EC93C, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 0); + } else + { + gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data0; + gUnknown_03004880.unk4 = AddPseudoFieldObject(unk_02038900->decoration->tiles[0], sub_81009A8, gUnknown_083EC900[unk_02038900->decoration->shape].x, gUnknown_083EC900[unk_02038900->decoration->shape].y, 1); + gSprites[gUnknown_03004880.unk4].oam.priority = 1; + } +} + +void SetUpPlacingDecorationPlayerAvatar(u8 taskId, struct UnkStruct_02038900 *unk_02038900) +{ + u8 v0; + v0 = 16 * (u8)gTasks[taskId].data[5] + gUnknown_083EC900[unk_02038900->decoration->shape].x - 8 * ((u8)gTasks[taskId].data[5] - 1); + if (unk_02038900->decoration->shape == DECORSHAPE_3x1 || unk_02038900->decoration->shape == DECORSHAPE_3x3 || unk_02038900->decoration->shape == DECORSHAPE_3x2) + { + v0 -= 8; + } + if (gSaveBlock2.playerGender == MALE) + { + gUnknown_020391A9 = AddPseudoFieldObject(0xc1, SpriteCallbackDummy, v0, 0x48, 0); + } else + { + gUnknown_020391A9 = AddPseudoFieldObject(0xc2, SpriteCallbackDummy, v0, 0x48, 0); + } + gSprites[gUnknown_020391A9].oam.priority = 1; + DestroySprite(&gSprites[gUnknown_020391A8]); + gUnknown_020391A8 = gUnknown_03004880.unk4; +} + +void sub_80FF960(u8 taskId) +{ + switch (gDecorations[gUnknown_020388D0[gUnknown_020388F5]].shape) + { + case DECORSHAPE_1x1: + gTasks[taskId].data[5] = 1; + gTasks[taskId].data[6] = 1; + break; + case DECORSHAPE_2x1: + gTasks[taskId].data[5] = 2; + gTasks[taskId].data[6] = 1; + break; + case DECORSHAPE_3x1: + gTasks[taskId].data[5] = 3; + gTasks[taskId].data[6] = 1; + break; + case DECORSHAPE_4x2: + gTasks[taskId].data[5] = 4; + gTasks[taskId].data[6] = 2; + break; + case DECORSHAPE_2x2: + gTasks[taskId].data[5] = 2; + gTasks[taskId].data[6] = 2; + break; + case DECORSHAPE_1x2: + gTasks[taskId].data[5] = 1; + gTasks[taskId].data[6] = 2; + break; + case DECORSHAPE_1x3: + gTasks[taskId].data[5] = 1; + gTasks[taskId].data[6] = 3; + gTasks[taskId].data[1]++; + break; + case DECORSHAPE_2x4: + gTasks[taskId].data[5] = 2; + gTasks[taskId].data[6] = 4; + break; + case DECORSHAPE_3x3: + gTasks[taskId].data[5] = 3; + gTasks[taskId].data[6] = 3; + break; + case DECORSHAPE_3x2: + gTasks[taskId].data[5] = 3; + gTasks[taskId].data[6] = 2; + break; + } +} + +void sub_80FFAB0(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + gSprites[gUnknown_020391A8].data7 = 1; + gSprites[gUnknown_020391A9].data7 = 1; + sub_810045C(); + sub_8100038(taskId); +} + +void sub_80FFB08(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + gSprites[gUnknown_020391A8].data7 = 1; + gSprites[gUnknown_020391A9].data7 = 1; + sub_810045C(); + DisplayItemMessageOnField(taskId, gSecretBaseText_CancelDecorating, sub_8100248, 0); +} + +bool8 sub_80FFB6C(u8 a0, u16 a1) +{ + if (sub_8057274(a0) != 1 || a1 != 0) + { + return FALSE; + } + return TRUE; +} + +bool8 sub_80FFB94(u8 taskId, s16 x, s16 y, u16 decoId) +{ + if (x == gTasks[taskId].data[3] + 7 && y == gTasks[taskId].data[4] + 7 && decoId != 0) + { + return FALSE; + } + return TRUE; +} + +bool8 sub_80FFBDC(u16 a0, const struct Decoration *decoration) +{ + if (sub_8057274(a0) != 1) + { + if (decoration->id == DECOR_SOLID_BOARD && sub_8057300(a0) == 1) + { + return TRUE; + } + if (sub_805729C(a0)) + { + return TRUE; + } + } + return FALSE; +} + +// When behaviorBy is set, it is masked by 0xf000. This is the step that fails to match when built. +#ifdef NONMATCHING +bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) +{ + u8 i; + u8 j; + u8 behaviorAt; + u16 behaviorBy; + u8 mapY; + u8 mapX; + s16 curY; + s16 curX; + mapY = gTasks[taskId].data[6]; + mapX = gTasks[taskId].data[5]; + switch (decoration->permission) + { + case DECORPERM_SOLID_FLOOR: + case DECORPERM_PASS_FLOOR: + for (i=0; i<mapY; i++) + { + curY = gTasks[taskId].data[1] - i; + for (j=0; j<mapX; j++) + { + curX = gTasks[taskId].data[0] + j; + behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); + behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000; + if (!sub_80FFBDC(behaviorAt, decoration)) + { + return FALSE; + } + if (!sub_80FFB94(taskId, curX, curY, behaviorBy)) + { + return FALSE; + } + behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0); + if (behaviorAt != 0 && behaviorAt != 16) + { + return FALSE; + } + } + } + break; + case DECORPERM_BEHIND_FLOOR: + for (i=0; i<mapY-1; i++) + { + curY = gTasks[taskId].data[1] - i; + for (j=0; j<mapX; j++) + { + curX = gTasks[taskId].data[0] + j; + behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); + behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[(mapY - 1 - i) * mapX + j]) & 0xf000; + if (!sub_805729C(behaviorAt) && !sub_80FFB6C(behaviorAt, behaviorBy)) + { + return FALSE; + } + if (!sub_80FFB94(taskId, curX, curY, behaviorBy)) + { + return FALSE; + } + if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16) + { + return FALSE; + } + } + } + curY = gTasks[taskId].data[1] - mapY + 1; + for (j=0; j<mapX; j++) + { + curX = gTasks[taskId].data[0] + j; + behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); + behaviorBy = GetBehaviorByMetatileId(0x200 + decoration->tiles[j]) & 0xf000; + if (!sub_805729C(behaviorAt) && !sub_80572B0(behaviorAt)) + { + return FALSE; + } + if (!sub_80FFB94(taskId, curX, curY, behaviorBy)) + { + return FALSE; + } + behaviorAt = GetFieldObjectIdByXYZ(curX, curY, 0); + if (behaviorAt != 0 && behaviorAt != 16) + { + return FALSE; + } + } + break; + case DECORPERM_NA_WALL: + for (i=0; i<mapY; i++) + { + curY = gTasks[taskId].data[1] - i; + for (j=0; j<mapX; j++) + { + curX = gTasks[taskId].data[0] + j; + if (!sub_80572B0(MapGridGetMetatileBehaviorAt(curX, curY))) + { + return FALSE; + } + if (MapGridGetMetatileIdAt(curX, curY + 1) == 0x28c) + { + return FALSE; + } + } + } + break; + case DECORPERM_SOLID_MAT: + curY = gTasks[taskId].data[1]; + for (j=0; j<mapX; j++) + { + curX = gTasks[taskId].data[0] + j; + behaviorAt = MapGridGetMetatileBehaviorAt(curX, curY); + if (decoration->shape == DECORSHAPE_1x2) + { + if (!sub_80572EC(behaviorAt)) + { + return FALSE; + } + } + else if (!sub_80572D8(behaviorAt)) + { + if (!sub_80572EC(behaviorAt)) + { + return FALSE; + } + } + if (GetFieldObjectIdByXYZ(curX, curY, 0) != 16) + { + return FALSE; + } + } + break; + } + return TRUE; +} +#else +__attribute__((naked)) +bool8 sub_80FFC24(u8 taskId, const struct Decoration *decoration) +{ + asm(".syntax unified\n" + "\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x24\n" + "\tstr r1, [sp]\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tmov r10, r0\n" + "\tldr r1, _080FFC60 @ =gTasks\n" + "\tlsls r0, 2\n" + "\tadd r0, r10\n" + "\tlsls r0, 3\n" + "\tadds r0, r1\n" + "\tldrb r2, [r0, 0x14]\n" + "\tstr r2, [sp, 0x4]\n" + "\tldrb r0, [r0, 0x12]\n" + "\tstr r0, [sp, 0x8]\n" + "\tldr r3, [sp]\n" + "\tldrb r0, [r3, 0x11]\n" + "\tadds r2, r1, 0\n" + "\tcmp r0, 0x4\n" + "\tbls _080FFC56\n" + "\tb _08100024\n" + "_080FFC56:\n" + "\tlsls r0, 2\n" + "\tldr r1, _080FFC64 @ =_080FFC68\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" + "_080FFC60: .4byte gTasks\n" + "_080FFC64: .4byte _080FFC68\n" + "\t.align 2, 0\n" + "_080FFC68:\n" + "\t.4byte _080FFC7C\n" + "\t.4byte _080FFC7C\n" + "\t.4byte _080FFD68\n" + "\t.4byte _080FFF1C\n" + "\t.4byte _080FFFA0\n" + "_080FFC7C:\n" + "\tmovs r6, 0\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r6, r0\n" + "\tbcc _080FFC86\n" + "\tb _08100024\n" + "_080FFC86:\n" + "\tmov r1, r10\n" + "\tlsls r1, 2\n" + "\tstr r1, [sp, 0x1C]\n" + "_080FFC8C:\n" + "\tmov r2, r10\n" + "\tlsls r0, r2, 2\n" + "\tadd r0, r10\n" + "\tlsls r0, 3\n" + "\tldr r3, _080FFD64 @ =gTasks\n" + "\tadds r0, r3\n" + "\tldrh r0, [r0, 0xA]\n" + "\tsubs r0, r6\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r9, r0\n" + "\tmovs r7, 0\n" + "\tadds r6, 0x1\n" + "\tstr r6, [sp, 0x14]\n" + "\tldr r0, [sp, 0x8]\n" + "\tcmp r7, r0\n" + "\tbcs _080FFD56\n" + "\tmov r1, r9\n" + "\tlsls r1, 16\n" + "\tstr r1, [sp, 0xC]\n" + "\tasrs r1, 16\n" + "\tmov r9, r1\n" + "_080FFCB8:\n" + "\tldr r0, [sp, 0x1C]\n" + "\tadd r0, r10\n" + "\tlsls r0, 3\n" + "\tldr r2, _080FFD64 @ =gTasks\n" + "\tadds r0, r2\n" + "\tldrh r0, [r0, 0x8]\n" + "\tadds r0, r7\n" + "\tlsls r0, 16\n" + "\tmov r8, r0\n" + "\tasrs r6, r0, 16\n" + "\tadds r0, r6, 0\n" + "\tmov r1, r9\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r1, [sp, 0x14]\n" + "\tsubs r0, r3, r1\n" + "\tldr r2, [sp, 0x8]\n" + "\tadds r1, r0, 0\n" + "\tmuls r1, r2\n" + "\tadds r1, r7\n" + "\tldr r3, [sp]\n" + "\tldr r0, [r3, 0x1C]\n" + "\tlsls r1, 1\n" + "\tadds r1, r0\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 2\n" + "\tadds r0, r2, 0\n" + "\tldrh r1, [r1]\n" + "\tadds r0, r1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl GetBehaviorByMetatileId\n" + "\tmovs r3, 0xF0\n" + "\tlsls r3, 8\n" + "\tadds r1, r3, 0\n" + "\tadds r5, r1, 0\n" + "\tands r5, r0\n" + "\tadds r0, r4, 0\n" + "\tldr r1, [sp]\n" + "\tbl sub_80FFBDC\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFD1A\n" + "\tb _080FFFF4\n" + "_080FFD1A:\n" + "\tmov r0, r10\n" + "\tadds r1, r6, 0\n" + "\tmov r2, r9\n" + "\tadds r3, r5, 0\n" + "\tbl sub_80FFB94\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFD2E\n" + "\tb _080FFFF4\n" + "_080FFD2E:\n" + "\tmov r1, r8\n" + "\tlsrs r0, r1, 16\n" + "\tldr r2, [sp, 0xC]\n" + "\tlsrs r1, r2, 16\n" + "\tmovs r2, 0\n" + "\tbl GetFieldObjectIdByXYZ\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0\n" + "\tbeq _080FFD4A\n" + "\tcmp r4, 0x10\n" + "\tbeq _080FFD4A\n" + "\tb _080FFFF4\n" + "_080FFD4A:\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcc _080FFCB8\n" + "_080FFD56:\n" + "\tldr r1, [sp, 0x14]\n" + "\tlsls r0, r1, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r2, [sp, 0x4]\n" + "\tcmp r6, r2\n" + "\tbcc _080FFC8C\n" + "\tb _08100024\n" + "\t.align 2, 0\n" + "_080FFD64: .4byte gTasks\n" + "_080FFD68:\n" + "\tmovs r6, 0\n" + "\tmov r3, r10\n" + "\tlsls r3, 2\n" + "\tstr r3, [sp, 0x1C]\n" + "\tldr r0, [sp, 0x4]\n" + "\tsubs r0, 0x1\n" + "\tstr r0, [sp, 0x18]\n" + "\tcmp r6, r0\n" + "\tbge _080FFE54\n" + "\tadds r0, r3, 0\n" + "\tadd r0, r10\n" + "\tlsls r0, 3\n" + "\tstr r0, [sp, 0x10]\n" + "_080FFD82:\n" + "\tldr r1, [sp, 0x10]\n" + "\tadds r0, r1, r2\n" + "\tldrh r0, [r0, 0xA]\n" + "\tsubs r0, r6\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r9, r0\n" + "\tmovs r7, 0\n" + "\tadds r6, 0x1\n" + "\tstr r6, [sp, 0x14]\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcs _080FFE48\n" + "\tlsls r0, 16\n" + "\tstr r0, [sp, 0x20]\n" + "_080FFDA0:\n" + "\tldr r1, [sp, 0x10]\n" + "\tadds r0, r1, r2\n" + "\tldrh r0, [r0, 0x8]\n" + "\tadds r0, r7\n" + "\tlsls r0, 16\n" + "\tmov r8, r0\n" + "\tasrs r6, r0, 16\n" + "\tmov r2, r9\n" + "\tlsls r1, r2, 16\n" + "\tadds r0, r6, 0\n" + "\tasrs r1, 16\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r3, [sp, 0x4]\n" + "\tldr r1, [sp, 0x14]\n" + "\tsubs r0, r3, r1\n" + "\tldr r2, [sp, 0x8]\n" + "\tadds r1, r0, 0\n" + "\tmuls r1, r2\n" + "\tadds r1, r7\n" + "\tldr r3, [sp]\n" + "\tldr r0, [r3, 0x1C]\n" + "\tlsls r1, 1\n" + "\tadds r1, r0\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 2\n" + "\tadds r0, r2, 0\n" + "\tldrh r1, [r1]\n" + "\tadds r0, r1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl GetBehaviorByMetatileId\n" + "\tmovs r3, 0xF0\n" + "\tlsls r3, 8\n" + "\tadds r1, r3, 0\n" + "\tadds r5, r1, 0\n" + "\tands r5, r0\n" + "\tadds r0, r4, 0\n" + "\tbl sub_805729C\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFE0C\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl sub_80FFB6C\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFE0C\n" + "\tb _080FFFF4\n" + "_080FFE0C:\n" + "\tmov r0, r10\n" + "\tadds r1, r6, 0\n" + "\tldr r3, [sp, 0x20]\n" + "\tasrs r2, r3, 16\n" + "\tadds r3, r5, 0\n" + "\tbl sub_80FFB94\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFE22\n" + "\tb _080FFFF4\n" + "_080FFE22:\n" + "\tmov r1, r8\n" + "\tlsrs r0, r1, 16\n" + "\tldr r2, [sp, 0x20]\n" + "\tlsrs r1, r2, 16\n" + "\tmovs r2, 0\n" + "\tbl GetFieldObjectIdByXYZ\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x10\n" + "\tbeq _080FFE3A\n" + "\tb _080FFFF4\n" + "_080FFE3A:\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tldr r2, _080FFF18 @ =gTasks\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcc _080FFDA0\n" + "_080FFE48:\n" + "\tldr r1, [sp, 0x14]\n" + "\tlsls r0, r1, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r3, [sp, 0x18]\n" + "\tcmp r6, r3\n" + "\tblt _080FFD82\n" + "_080FFE54:\n" + "\tldr r0, [sp, 0x1C]\n" + "\tadd r0, r10\n" + "\tlsls r0, 3\n" + "\tadds r0, r2\n" + "\tldrh r0, [r0, 0xA]\n" + "\tldr r1, [sp, 0x4]\n" + "\tsubs r0, r1\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r9, r0\n" + "\tmovs r7, 0\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcc _080FFE74\n" + "\tb _08100024\n" + "_080FFE74:\n" + "\tlsls r0, 16\n" + "\tstr r0, [sp, 0x20]\n" + "_080FFE78:\n" + "\tldr r0, [sp, 0x1C]\n" + "\tadd r0, r10\n" + "\tlsls r0, 3\n" + "\tldr r1, _080FFF18 @ =gTasks\n" + "\tadds r0, r1\n" + "\tldrh r0, [r0, 0x8]\n" + "\tadds r0, r7\n" + "\tlsls r0, 16\n" + "\tmov r8, r0\n" + "\tasrs r6, r0, 16\n" + "\tmov r2, r9\n" + "\tlsls r1, r2, 16\n" + "\tadds r0, r6, 0\n" + "\tasrs r1, 16\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r3, [sp]\n" + "\tldr r0, [r3, 0x1C]\n" + "\tlsls r1, r7, 1\n" + "\tadds r1, r0\n" + "\tmovs r2, 0x80\n" + "\tlsls r2, 2\n" + "\tadds r0, r2, 0\n" + "\tldrh r1, [r1]\n" + "\tadds r0, r1\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tbl GetBehaviorByMetatileId\n" + "\tmovs r3, 0xF0\n" + "\tlsls r3, 8\n" + "\tadds r1, r3, 0\n" + "\tadds r5, r1, 0\n" + "\tands r5, r0\n" + "\tadds r0, r4, 0\n" + "\tbl sub_805729C\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFEDA\n" + "\tadds r0, r4, 0\n" + "\tbl sub_80572B0\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFEDA\n" + "\tb _080FFFF4\n" + "_080FFEDA:\n" + "\tmov r0, r10\n" + "\tadds r1, r6, 0\n" + "\tldr r3, [sp, 0x20]\n" + "\tasrs r2, r3, 16\n" + "\tadds r3, r5, 0\n" + "\tbl sub_80FFB94\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _080FFEF0\n" + "\tb _080FFFF4\n" + "_080FFEF0:\n" + "\tmov r1, r8\n" + "\tlsrs r0, r1, 16\n" + "\tldr r2, [sp, 0x20]\n" + "\tlsrs r1, r2, 16\n" + "\tmovs r2, 0\n" + "\tbl GetFieldObjectIdByXYZ\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tcmp r4, 0\n" + "\tbeq _080FFF0A\n" + "\tcmp r4, 0x10\n" + "\tbne _080FFFF4\n" + "_080FFF0A:\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcc _080FFE78\n" + "\tb _08100024\n" + "\t.align 2, 0\n" + "_080FFF18: .4byte gTasks\n" + "_080FFF1C:\n" + "\tmovs r6, 0\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r6, r0\n" + "\tbcc _080FFF26\n" + "\tb _08100024\n" + "_080FFF26:\n" + "\tmov r1, r10\n" + "\tlsls r0, r1, 2\n" + "\tadd r0, r10\n" + "\tlsls r1, r0, 3\n" + "\tldr r2, _080FFF9C @ =gTasks\n" + "\tadds r0, r1, r2\n" + "\tldrh r0, [r0, 0xA]\n" + "\tsubs r0, r6\n" + "\tlsls r0, 16\n" + "\tlsrs r0, 16\n" + "\tmov r9, r0\n" + "\tmovs r7, 0\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcs _080FFF8C\n" + "\tadds r0, r2, 0\n" + "\tadds r1, r0\n" + "\tmov r8, r1\n" + "\tmov r1, r9\n" + "\tlsls r0, r1, 16\n" + "\tasrs r5, r0, 16\n" + "_080FFF50:\n" + "\tmov r2, r8\n" + "\tldrh r0, [r2, 0x8]\n" + "\tadds r0, r7\n" + "\tlsls r0, 16\n" + "\tasrs r4, r0, 16\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tbl sub_80572B0\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _080FFFF4\n" + "\tadds r0, r4, 0\n" + "\tadds r1, r5, 0x1\n" + "\tbl MapGridGetMetatileIdAt\n" + "\tmovs r1, 0xA3\n" + "\tlsls r1, 2\n" + "\tcmp r0, r1\n" + "\tbeq _080FFFF4\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcc _080FFF50\n" + "_080FFF8C:\n" + "\tadds r0, r6, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r6, r0\n" + "\tbcc _080FFF26\n" + "\tb _08100024\n" + "\t.align 2, 0\n" + "_080FFF9C: .4byte gTasks\n" + "_080FFFA0:\n" + "\tmov r3, r10\n" + "\tlsls r1, r3, 2\n" + "\tadds r0, r1, r3\n" + "\tlsls r0, 3\n" + "\tadds r0, r2\n" + "\tldrh r0, [r0, 0xA]\n" + "\tmov r9, r0\n" + "\tmovs r7, 0\n" + "\tstr r1, [sp, 0x1C]\n" + "\tldr r0, [sp, 0x8]\n" + "\tcmp r7, r0\n" + "\tbcs _08100024\n" + "\tadds r6, r2, 0\n" + "\tmov r1, r9\n" + "\tlsls r1, 16\n" + "\tstr r1, [sp, 0x20]\n" + "_080FFFC0:\n" + "\tldr r0, [sp, 0x1C]\n" + "\tadd r0, r10\n" + "\tlsls r0, 3\n" + "\tadds r0, r6\n" + "\tldrh r0, [r0, 0x8]\n" + "\tadds r0, r7\n" + "\tlsls r0, 16\n" + "\tlsrs r5, r0, 16\n" + "\tasrs r0, 16\n" + "\tmov r2, r9\n" + "\tlsls r1, r2, 16\n" + "\tasrs r1, 16\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tldr r3, [sp]\n" + "\tldrb r0, [r3, 0x12]\n" + "\tcmp r0, 0x5\n" + "\tbne _080FFFF8\n" + "_080FFFE8:\n" + "\tadds r0, r4, 0\n" + "\tbl sub_80572EC\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbne _08100004\n" + "_080FFFF4:\n" + "\tmovs r0, 0\n" + "\tb _08100026\n" + "_080FFFF8:\n" + "\tadds r0, r4, 0\n" + "\tbl sub_80572D8\n" + "\tlsls r0, 24\n" + "\tcmp r0, 0\n" + "\tbeq _080FFFE8\n" + "_08100004:\n" + "\tadds r0, r5, 0\n" + "\tldr r2, [sp, 0x20]\n" + "\tlsrs r1, r2, 16\n" + "\tmovs r2, 0\n" + "\tbl GetFieldObjectIdByXYZ\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x10\n" + "\tbne _080FFFF4\n" + "\tadds r0, r7, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r7, r0, 24\n" + "\tldr r3, [sp, 0x8]\n" + "\tcmp r7, r3\n" + "\tbcc _080FFFC0\n" + "_08100024:\n" + "\tmovs r0, 0x1\n" + "_08100026:\n" + "\tadd sp, 0x24\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + ".syntax divided\n"); +} +#endif + +void sub_8100038(u8 taskId) +{ + if (sub_80FFC24(taskId, &gDecorations[gUnknown_020388D0[gUnknown_020388F5]]) == 1) + { + DisplayItemMessageOnField(taskId, gSecretBaseText_PlaceItHere, sub_81000A0, 0); + } else + { + PlaySE(SE_HAZURE); + DisplayItemMessageOnField(taskId, gSecretBaseText_CantBePlacedHere, sub_81006A8, 0); + } +} + +void sub_81000A0(u8 taskId) +{ + DisplayYesNoMenu(20, 8, 1); + sub_80F914C(taskId, &gUnknown_083EC95C); +} + +void sub_81000C4(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_8100174(taskId); + if (gDecorations[gUnknown_020388D0[gUnknown_020388F5]].permission != DECORPERM_SOLID_MAT) + { + sub_80FF394(gTasks[taskId].data[0], gTasks[taskId].data[1], gUnknown_020388D0[gUnknown_020388F5]); + } else + { + gUnknown_020391A4 = gTasks[taskId].data[0] - 7; + gUnknown_020391A6 = gTasks[taskId].data[1] - 7; + ScriptContext1_SetupScript(gUnknown_081A2F7B); + } + gSprites[gUnknown_020391A8].pos1.y += 2; + sub_810028C(taskId); +} + +void sub_8100174(u8 taskId) +{ + u16 i; + for (i=0; i<ewram_1f000.size; i++) + { + if (ewram_1f000.items[i] == 0) + { + ewram_1f000.items[i] = gUnknown_020388D0[gUnknown_020388F5]; + ewram_1f000.pos[i] = ((gTasks[taskId].data[0] - 7) << 4) + (gTasks[taskId].data[1] - 7); + break; + } + } + if (!ewram_1f000.isPlayerRoom) + { + for (i=0; i<16; i++) + { + if (gUnknown_020388D6[i] == 0) + { + gUnknown_020388D6[i] = gUnknown_020388F5 + 1; + break; + } + } + } else + { + for (i=0; i<12; i++) + { + if (gUnknown_020388E6[i] == 0) + { + gUnknown_020388E6[i] = gUnknown_020388F5 + 1; + break; + } + } + } +} + +void sub_8100248(u8 taskId) +{ + DisplayYesNoMenu(20, 8, 1); + sub_80F914C(taskId, &gUnknown_083EC964); +} + +void sub_810026C(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_810028C(taskId); +} + +void sub_810028C(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = c1_overworld_prev_quest; +} + +void c1_overworld_prev_quest(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + ScriptContext2_Enable(); + if (!gPaletteFade.active) + { + sub_80FF114(taskId); + gTasks[taskId].data[2] = 1; + } + break; + case 1: + sub_81016F4(); + FreeSpritePaletteByTag(0xbb8); + gUnknown_0300485C = &sub_8100364; + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + break; + } +} + +void sub_8100334(u8 taskId) +{ + if (sub_807D770() == 1) + { + gTasks[taskId].func = sub_80FE948; + } +} + +void sub_8100364(void) +{ + ScriptContext2_Enable(); + LoadScrollIndicatorPalette(); + pal_fill_black(); + sub_80FE7EC(CreateTask(sub_8100334, 8)); +} + +bool8 sub_810038C(u8 taskId) +{ + s16 *data; + data = gTasks[taskId].data; + if (gUnknown_020391AA == DIR_SOUTH && data[1] - data[6] - 6 < 0) + { + data[1]++; + return FALSE; + } else if (gUnknown_020391AA == DIR_NORTH && data[1] - 7 >= gMapHeader.mapData->height) + { + data[1]--; + return FALSE; + } else if (gUnknown_020391AA == DIR_WEST && data[0] - 7 < 0) + { + data[0]++; + return FALSE; + } else if (gUnknown_020391AA == DIR_EAST && data[0] + data[5] - 8 >= gMapHeader.mapData->width) + { + data[0]--; + return FALSE; + } + return TRUE; +} + +bool8 sub_8100430(void) +{ + if ((gMain.heldKeys & DPAD_ANY) != DPAD_UP && (gMain.heldKeys & DPAD_ANY) != DPAD_DOWN && (gMain.heldKeys & DPAD_ANY) != DPAD_LEFT && (gMain.heldKeys & DPAD_ANY) != DPAD_RIGHT) + { + return FALSE; + } + return TRUE; +} + +void sub_810045C(void) +{ + gUnknown_020391AA = 0; + gSprites[gUnknown_020391A8].data2 = 0; + gSprites[gUnknown_020391A8].data3 = 0; +} + +void sub_8100494(u8 taskId) +{ + if (!gSprites[gUnknown_020391A8].data4) + { + if (gTasks[taskId].data[10] == 1) + { + gUnknown_083EC96C[gTasks[taskId].data[12]].yesFunc(taskId); + return; + } else if (gTasks[taskId].data[10] == 2) + { + gUnknown_083EC96C[gTasks[taskId].data[12]].noFunc(taskId); + return; + } + if ((gMain.heldKeys & DPAD_ANY) == DPAD_UP) + { + gUnknown_020391AA = DIR_SOUTH; + gSprites[gUnknown_020391A8].data2 = 0; + gSprites[gUnknown_020391A8].data3 = -2; + gTasks[taskId].data[1]--; + } + if ((gMain.heldKeys & DPAD_ANY) == DPAD_DOWN) + { + gUnknown_020391AA = DIR_NORTH; + gSprites[gUnknown_020391A8].data2 = 0; + gSprites[gUnknown_020391A8].data3 = 2; + gTasks[taskId].data[1]++; + } + if ((gMain.heldKeys & DPAD_ANY) == DPAD_LEFT) + { + gUnknown_020391AA = DIR_WEST; + gSprites[gUnknown_020391A8].data2 = -2; + gSprites[gUnknown_020391A8].data3 = 0; + gTasks[taskId].data[0]--; + } + if ((gMain.heldKeys & DPAD_ANY) == DPAD_RIGHT) + { + gUnknown_020391AA = DIR_EAST; + gSprites[gUnknown_020391A8].data2 = 2; + gSprites[gUnknown_020391A8].data3 = 0; + gTasks[taskId].data[0]++; + } + if (!sub_8100430() || !sub_810038C(taskId)) + { + sub_810045C(); + } + } + if (gUnknown_020391AA) + { + gSprites[gUnknown_020391A8].data4++; + gSprites[gUnknown_020391A8].data4 &= 7; + } + if (!gTasks[taskId].data[10]) + { + if (gMain.newKeys & A_BUTTON) + { + gTasks[taskId].data[10] = A_BUTTON; + } + if (gMain.newKeys & B_BUTTON) + { + gTasks[taskId].data[10] = B_BUTTON; + } + } +} + +void sub_810065C(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 29, 19); + gSprites[gUnknown_020391A8].data7 = 0; + gTasks[taskId].data[10] = 0; + gTasks[taskId].func = sub_8100494; +} + +void sub_81006A8(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + sub_810065C(taskId); + } +} + +void sub_81006D0(struct UnkStruct_02038900 *unk_02038900) +{ + u16 i; + for (i=0; i<0x800; i++) + { + unk_02038900->image[i] = 0; + } + for (i=0; i<0x40; i++) + { + unk_02038900->tiles[i] = 0; + } +} + +void sub_810070C(u16 *a0, u16 a1) +{ + u16 i; + for (i=0; i<16; i++) + { + a0[i] = ((u16 *)gMapHeader.mapData->primaryTileset->palettes)[16 * a1 + i]; + } +} + +void sub_8100740(u8 *dest, u16 flags) +{ + u8 buffer[32]; + u16 mode; + u16 i; + mode = flags >> 10; + if (flags != 0) + { + flags &= 0x3ff; + } + for (i=0; i<32; i++) + { + buffer[i] = ((u8 *)gMapHeader.mapData->primaryTileset->tiles)[flags * 32 + i]; + } + switch (mode) + { + case 0: + for (i=0; i<32; i++) + { + dest[i] = buffer[i]; + } + break; + case 1: + for (i=0; i<8; i++) + { + dest[4*i] = (buffer[4*(i+1) - 1] >> 4) + ((buffer[4*(i+1) - 1] & 0xf) << 4); + dest[4*i + 1] = (buffer[4*(i+1) - 2] >> 4) + ((buffer[4*(i+1) - 2] & 0xf) << 4); + dest[4*i + 2] = (buffer[4*(i+1) - 3] >> 4) + ((buffer[4*(i+1) - 3] & 0xf) << 4); + dest[4*i + 3] = (buffer[4*(i+1) - 4] >> 4) + ((buffer[4*(i+1) - 4] & 0xf) << 4); + } + break; + case 2: + for (i=0; i<8; i++) + { + dest[4*i] = buffer[4*(7-i)]; + dest[4*i + 1] = buffer[4*(7-i) + 1]; + dest[4*i + 2] = buffer[4*(7-i) + 2]; + dest[4*i + 3] = buffer[4*(7-i) + 3]; + } + break; + case 3: + for (i=0; i<32; i++) + { + dest[i] = (buffer[31-i] >> 4) + ((buffer[31-i] & 0xf) << 4); + } + break; + } +} + +void sub_8100874(struct UnkStruct_02038900 *unk_02038900) +{ + u16 i; + for (i=0; i<0x40; i++) + sub_8100740(&unk_02038900->image[i * 32], unk_02038900->tiles[i]); +} + +u16 sub_810089C(u16 a0) +{ + return ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles)[a0] & 0xfff; +} + +void sub_81008BC(struct UnkStruct_02038900 *unk_02038900) +{ + u8 i; + u8 shape; + shape = unk_02038900->decoration->shape; + for (i=0; i<gUnknown_083EC860[shape].size; i++) + { + unk_02038900->tiles[gUnknown_083EC860[shape].tiles[i]] = sub_810089C(unk_02038900->decoration->tiles[gUnknown_083EC860[shape].y[i]] * 8 + gUnknown_083EC860[shape].x[i]); + } +} + +void sub_8100930(u8 decoShape) +{ + gUnknown_020391AC.y = 0; + gUnknown_020391AC.affineMode = 0; + gUnknown_020391AC.objMode = 0; + gUnknown_020391AC.mosaic = 0; + gUnknown_020391AC.bpp = 0; + gUnknown_020391AC.shape = gUnknown_083EC900[decoShape].shape; + gUnknown_020391AC.x = 0; + gUnknown_020391AC.matrixNum = 0; + gUnknown_020391AC.size = gUnknown_083EC900[decoShape].size; + gUnknown_020391AC.tileNum = 0; + gUnknown_020391AC.priority = 1; + gUnknown_020391AC.paletteNum = 0; +} + +void sub_81009A8(struct Sprite *sprite) +{ + sprite->data2 = 0; + sprite->data3 = 0; + sprite->data4 = 0; + sprite->data5 = 0; + sprite->data6 = 0; + sprite->data7 = 0; + sprite->callback = sub_81009C0; +} + +void sub_81009C0(struct Sprite *sprite) +{ + if (sprite->data7 == 0) + { + if (sprite->data6 < 15) + { + sprite->invisible = 0; + } else + { + sprite->invisible = 1; + } + sprite->data6 = (sprite->data6 + 1) & 0x1f; + } else + { + sprite->invisible = 0; + } +} + +void sub_8100A0C(u8 taskId) +{ + if (sub_8100D38(taskId) == 1) + { + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_8100E70; + } else + { + DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecorInUse, sub_80FE428, 0); + } +} + +void sub_8100A60(u8 a0) +{ + ewram_1f000.items[a0] = 0; + ewram_1f000.pos[a0] = 0; +} + +void sub_8100A7C(void) +{ + u16 i; + gSpecialVar_0x8005 = 0; + gScriptResult = 0; + if (gSpecialVar_0x8004 == gUnknown_02039234) + { + gScriptResult = 1; + } else if (gDecorations[ewram_1f000.items[gUnknown_020391B4[gSpecialVar_0x8004].decorId]].permission == DECORPERM_SOLID_MAT) + { + gSpecialVar_0x8005 = gUnknown_020391B4[gSpecialVar_0x8004].flagId; + sub_8100A60(gUnknown_020391B4[gSpecialVar_0x8004].decorId); + for (i=0; i<gMapHeader.events->mapObjectCount; i++) + { + if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8005) + { + gSpecialVar_0x8006 = gMapHeader.events->mapObjects[i].localId; + break; + } + } + } +} + +void sub_8100B20(void) +{ + u8 i; + for (i=0; i<gMapHeader.events->mapObjectCount; i++) + { + if (gMapHeader.events->mapObjects[i].flagId == gSpecialVar_0x8004) + { + gSpecialVar_0x8005 = gMapHeader.events->mapObjects[i].localId; + break; + } + } +} + +void sub_8100B6C(void) +{ + u8 i; + u8 j; + u8 k; + u8 x; + u8 y; + u8 permission; + for (i=0; i<gUnknown_02039234; i++) + { + permission = gDecorations[ewram_1f000.items[gUnknown_020391B4[i].decorId]].permission; + x = ewram_1f000.pos[gUnknown_020391B4[i].decorId] >> 4; + y = ewram_1f000.pos[gUnknown_020391B4[i].decorId] & 0xf; + if (permission != DECORPERM_SOLID_MAT) + { + if (ewram_1f000.items[gUnknown_020391B4[i].decorId] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(x + 7, y + 7) == 0x28c) + { + gUnknown_020391B4[i].height++; + } + for (j=0; j<gUnknown_020391B4[i].height; j++) + { + for (k=0; k<gUnknown_020391B4[i].width; k++) + { + MapGridSetMetatileEntryAt(x + 7 + k, y + 7 - j, ((u16 *)gMapHeader.mapData->map)[(x + k) + gMapHeader.mapData->width * (y - j)] | 0x3000); + } + } + sub_8100A60(gUnknown_020391B4[i].decorId); + } + } +} + +void sub_8100C88(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + sub_8100B6C(); + gTasks[taskId].data[2] = 1; + break; + case 1: + if (!gPaletteFade.active) + { + DrawWholeMapView(); + ScriptContext1_SetupScript(gUnknown_081A2F8A); + MenuZeroFillWindowRect(0, 0, 29, 19); + gTasks[taskId].data[2] = 2; + } + break; + case 2: + ScriptContext2_Enable(); + sub_80FED90(taskId); + pal_fill_black(); + gTasks[taskId].data[2] = 3; + break; + case 3: + if (sub_807D770() == 1) + { + gTasks[taskId].data[13] = -1; + DisplayItemMessageOnField(taskId, gSecretBaseText_DecorReturned, sub_81010F0, 0); + } + break; + } +} + +bool8 sub_8100D38(u8 taskId) +{ + u16 i; + for (i=0; i<ewram_1f000.size; i++) + { + if (ewram_1f000.items[i] != 0) + { + gTasks[taskId].data[13] = i; + return TRUE; + } + } + return FALSE; +} + +void SetUpPuttingAwayDecorationPlayerAvatar(void) +{ + player_get_direction_lower_nybble(); + MenuZeroFillWindowRect(0, 0, 29, 19); + gUnknown_020391A8 = gSprites[gUnknown_03004880.unk4].data0; + sub_81016C8(); + gUnknown_03004880.unk4 = CreateSprite(&gSpriteTemplate_83ECA88, 0x78, 0x50, 0); + if (gSaveBlock2.playerGender == MALE) + { + gUnknown_020391A9 = AddPseudoFieldObject(0xc1, SpriteCallbackDummy, 0x88, 0x48, 0); + } else + { + gUnknown_020391A9 = AddPseudoFieldObject(0xc2, SpriteCallbackDummy, 0x88, 0x48, 0); + } + gSprites[gUnknown_020391A9].oam.priority = 1; + DestroySprite(&gSprites[gUnknown_020391A8]); + gUnknown_020391A8 = gUnknown_03004880.unk4; + gSprites[gUnknown_020391A8].oam.priority = 1; +} + +void sub_8100E70(u8 taskId) +{ + s16 *data; + data = gTasks[taskId].data; + switch (data[2]) + { + case 0: + if (!gPaletteFade.active) + { + sub_80FF0E0(taskId); + data[2] = 1; + data[6] = 1; + data[5] = 1; + HandleDestroyMenuCursors(); + } + break; + case 1: + SetUpPuttingAwayDecorationPlayerAvatar(); + pal_fill_black(); + data[2] = 2; + break; + case 2: + if (sub_807D770() == TRUE) + { + data[12] = 1; + sub_8100EEC(taskId); + } + break; + } +} + +void sub_8100EEC(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 29, 19); + gSprites[gUnknown_020391A8].data7 = 0; + gSprites[gUnknown_020391A8].invisible = 0; + gSprites[gUnknown_020391A8].callback = sub_8101698; + gSprites[gUnknown_020391A9].pos1.x = 0x88; + gSprites[gUnknown_020391A9].pos1.y = 0x48; + gTasks[taskId].data[10] = 0; + gTasks[taskId].func = sub_8100494; +} + +void sub_8100F88(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_810045C(); + sub_8101024(taskId); +} + +void sub_8100FB4(u8 taskId) +{ + gTasks[taskId].data[10] = 0; + sub_810045C(); + gSprites[gUnknown_020391A8].invisible = 0; + gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy; + DisplayItemMessageOnField(taskId, gSecretBaseText_StopPuttingAwayDecor, sub_810156C, 0); +} + +void sub_8101024(u8 taskId) +{ + u8 mtBehavior; + s16 *data; + sub_8101460(taskId); + if (gUnknown_02039234 != 0) + { + DisplayItemMessageOnField(taskId, gSecretBaseText_ReturnDecor, sub_8101518, 0); + } else + { + data = gTasks[taskId].data; + mtBehavior = MapGridGetMetatileBehaviorAt(data[0], data[1]); + if (MetatileBehavior_IsSecretBasePC(mtBehavior) == TRUE || sub_805738C(mtBehavior) == TRUE) + { + gSprites[gUnknown_020391A8].invisible = 0; + gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy; + DisplayItemMessageOnField(taskId, gSecretBaseText_StopPuttingAwayDecor, sub_810156C, 0); + } else + { + DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecor, sub_81010F0, 0); + } + } +} + +void sub_81010F0(u8 taskId) +{ + if ((gMain.newKeys & A_BUTTON) || (gMain.newKeys & B_BUTTON)) + { + sub_8100EEC(taskId); + } +} + +void sub_8101118(u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B4) +{ + if (gDecorations[decorIdx].shape == DECORSHAPE_1x1) + { + unk_020391B4->width = 1; + unk_020391B4->height = 1; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_2x1) + { + unk_020391B4->width = 2; + unk_020391B4->height = 1; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_3x1) + { + unk_020391B4->width = 3; + unk_020391B4->height = 1; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_4x2) + { + unk_020391B4->width = 4; + unk_020391B4->height = 2; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_2x2) + { + unk_020391B4->width = 2; + unk_020391B4->height = 2; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_1x2) + { + unk_020391B4->width = 1; + unk_020391B4->height = 2; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_1x3) + { + unk_020391B4->width = 1; + unk_020391B4->height = 3; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_2x4) + { + unk_020391B4->width = 2; + unk_020391B4->height = 4; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_3x3) + { + unk_020391B4->width = 3; + unk_020391B4->height = 3; + } else if (gDecorations[decorIdx].shape == DECORSHAPE_3x2) + { + unk_020391B4->width = 3; + unk_020391B4->height = 2; + } +} + +void sub_8101198(u8 x, u8 y) +{ + gSprites[gUnknown_020391A8].invisible = 1; + gSprites[gUnknown_020391A8].callback = SpriteCallbackDummy; + gSprites[gUnknown_020391A9].pos1.x = 0x88 + x * 16; + gSprites[gUnknown_020391A9].pos1.y = 0x48 + y * 16; +} + +bool8 sub_8101200(u8 taskId, u8 decorIdx, struct UnkStruct_020391B4 *unk_020391B4) +{ + u8 x; + u8 y; + u8 xOff; + u8 yOff; + x = gTasks[taskId].data[0] - 7; + y = gTasks[taskId].data[1] - 7; + xOff = ewram_1f000.pos[decorIdx] >> 4; + yOff = ewram_1f000.pos[decorIdx] & 0xf; + if (ewram_1f000.items[decorIdx] == DECOR_SAND_ORNAMENT && MapGridGetMetatileIdAt(xOff + 7, yOff + 7) == 0x28c) + { + unk_020391B4->height--; + } + if (x >= xOff && x < xOff + unk_020391B4->width && y > yOff - unk_020391B4->height && y <= yOff) + { + sub_8101198(unk_020391B4->width - (x - xOff + 1), yOff - y); + return TRUE; + } + return FALSE; +} + +void sub_81012A0(void) +{ + u8 xOff; + u8 yOff; + u16 i; + xOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] >> 4; + yOff = ewram_1f000.pos[gUnknown_020391B4[gUnknown_02039234].decorId] & 0xf; + for (i=0; i<0x40; i++) + { + if (gSaveBlock1.mapObjectTemplates[i].x == xOff && gSaveBlock1.mapObjectTemplates[i].y == yOff && !FlagGet(gSaveBlock1.mapObjectTemplates[i].flagId)) + { + gUnknown_020391B4[gUnknown_02039234].flagId = gSaveBlock1.mapObjectTemplates[i].flagId; + break; + } + } +} + +bool8 sub_8101340(u8 taskId) +{ + u16 i; + for (i=0; i<ewram_1f000.size; i++) + { + if (ewram_1f000.items[i] != 0) + { + if (gDecorations[ewram_1f000.items[i]].permission == DECORPERM_SOLID_MAT) + { + sub_8101118(ewram_1f000.items[i], gUnknown_020391B4); + if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE) + { + gUnknown_020391B4->decorId = i; + sub_81012A0(); + gUnknown_02039234 = 1; + return TRUE; + } + } + } + } + return FALSE; +} + +void sub_81013B8(u8 a0, u8 a1, u8 a2, u8 a3) +{ + u8 i; + u8 xOff; + u8 yOff; + u8 decorIdx; + for (i=0; i<ewram_1f000.size; i++) + { + decorIdx = ewram_1f000.items[i]; + xOff = ewram_1f000.pos[i] >> 4; + yOff = ewram_1f000.pos[i] & 0xf; + if (decorIdx != 0 && gDecorations[decorIdx].permission == DECORPERM_SOLID_MAT && a0 <= xOff && a1 <= yOff && a2 >= xOff && a3 >= yOff) + { + gUnknown_020391B4[gUnknown_02039234].decorId = i; + sub_81012A0(); + gUnknown_02039234++; + } + } +} + +#ifdef NONMATCHING +void sub_8101460(u8 taskId) +{ + u8 i; + u8 xOff; + u8 yOff; + gUnknown_02039234 = 0; + if (sub_8101340(taskId) != TRUE) + { + for (i=0; i<ewram_1f000.size; i++) + { + if (ewram_1f000.items[i] == 0) // This is using the wrong register! + { + continue; + } + sub_8101118(ewram_1f000.items[i], gUnknown_020391B4); + if (sub_8101200(taskId, i, gUnknown_020391B4) == TRUE) + { + gUnknown_020391B4[0].decorId = i; + gUnknown_02039234++; + break; + } + } + if (gUnknown_02039234 != 0) + { + xOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] >> 4; + yOff = ewram_1f000.pos[gUnknown_020391B4[0].decorId] & 0xf; + sub_81013B8(xOff, yOff - gUnknown_020391B4[0].height + 1, xOff + gUnknown_020391B4[0].width - 1, yOff); + } + } +} +#else +__attribute__((naked)) +void sub_8101460(u8 taskId) +{ + asm(".syntax unified\n" + "\tpush {r4-r7,lr}\n" + "\tlsls r0, 24\n" + "\tlsrs r6, r0, 24\n" + "\tldr r4, _081014B8 @ =gUnknown_02039234\n" + "\tmovs r0, 0\n" + "\tstrb r0, [r4]\n" + "\tadds r0, r6, 0\n" + "\tbl sub_8101340\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbeq _08101504\n" + "\tmovs r5, 0\n" + "\tldr r0, _081014BC @ =ewram_1f000\n" + "\tldrb r1, [r0, 0x8]\n" + "\tcmp r5, r1\n" + "\tbcs _081014D2\n" + "\tadds r7, r4, 0\n" + "_08101486:\n" + "\tldr r0, [r0]\n" + "\tadds r0, r5\n" + "\tldrb r1, [r0] @ compiler incorrectly uses r0 for this and the next instruction\n" + "\tcmp r1, 0\n" + "\tbeq _081014C4\n" + "\tldr r4, _081014C0 @ =gUnknown_020391B4\n" + "\tadds r0, r1, 0\n" + "\tadds r1, r4, 0\n" + "\tbl sub_8101118\n" + "\tadds r0, r6, 0\n" + "\tadds r1, r5, 0\n" + "\tadds r2, r4, 0\n" + "\tbl sub_8101200\n" + "\tlsls r0, 24\n" + "\tlsrs r0, 24\n" + "\tcmp r0, 0x1\n" + "\tbne _081014C4\n" + "\tstrb r5, [r4]\n" + "\tldrb r0, [r7]\n" + "\tadds r0, 0x1\n" + "\tstrb r0, [r7]\n" + "\tb _081014D2\n" + "\t.align 2, 0\n" + "_081014B8: .4byte gUnknown_02039234\n" + "_081014BC: .4byte 0x201f000\n" + "_081014C0: .4byte gUnknown_020391B4\n" + "_081014C4:\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tldr r0, _0810150C @ =ewram_1f000\n" + "\tldrb r1, [r0, 0x8]\n" + "\tcmp r5, r1\n" + "\tbcc _08101486\n" + "_081014D2:\n" + "\tldr r0, _08101510 @ =gUnknown_02039234\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbeq _08101504\n" + "\tldr r0, _0810150C @ =ewram_1f000\n" + "\tldr r2, _08101514 @ =gUnknown_020391B4\n" + "\tldrb r1, [r2]\n" + "\tldr r0, [r0, 0x4]\n" + "\tadds r0, r1\n" + "\tldrb r1, [r0]\n" + "\tlsrs r0, r1, 4\n" + "\tmovs r3, 0xF\n" + "\tands r3, r1\n" + "\tldrb r1, [r2, 0x2]\n" + "\tsubs r1, r3, r1\n" + "\tadds r1, 0x1\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldrb r2, [r2, 0x1]\n" + "\tadds r2, r0\n" + "\tsubs r2, 0x1\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tbl sub_81013B8\n" + "_08101504:\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0810150C: .4byte 0x201f000\n" + "_08101510: .4byte gUnknown_02039234\n" + "_08101514: .4byte gUnknown_020391B4\n" + ".syntax divided\n"); +} +#endif + +void sub_8101518(u8 taskId) +{ + DisplayYesNoMenu(20, 8, 1); + sub_80F914C(taskId, &gUnknown_083EC9CC); +} + +void sub_810153C(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_8100C88; +} + +void sub_810156C(u8 taskId) +{ + DisplayYesNoMenu(20, 8, 1); + sub_80F914C(taskId, &gUnknown_083EC9D4); +} + +void sub_8101590(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 29, 19); + sub_81015B0(taskId); +} + +void sub_81015B0(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].data[2] = 0; + gTasks[taskId].func = sub_81015E0; +} + +void sub_81015E0(u8 taskId) +{ + switch (gTasks[taskId].data[2]) + { + case 0: + if (!gPaletteFade.active) + { + sub_80FF114(taskId); + gTasks[taskId].data[2] = 1; + } + break; + case 1: + sub_81016F4(); + gUnknown_0300485C = sub_8101678; + SetMainCallback2(c2_exit_to_overworld_2_switch); + DestroyTask(taskId); + break; + } +} + +void sub_8101648(u8 taskId) +{ + if (sub_807D770() == TRUE) + { + gTasks[taskId].func = Task_DecorationPCProcessMenuInput; + } +} + +void sub_8101678(void) +{ + pal_fill_black(); + MenuDisplayMessageBox(); + sub_80FE220(); + CreateTask(sub_8101648, 8); +} + +void sub_8101698(struct Sprite *sprite) +{ + sprite->data0 = (sprite->data0 + 1) & 0x1f; + if (sprite->data0 >= 16) + { + sprite->invisible = TRUE; + } else + { + sprite->invisible = FALSE; + } +} + +void sub_81016C8(void) +{ + if (gSaveBlock2.playerGender == MALE) + { + LoadSpritePalette(&gUnknown_083ECA5C); + } else + { + LoadSpritePalette(&gUnknown_083ECA64); + } +} + +void sub_81016F4(void) +{ + FreeSpritePaletteByTag(8); +} + +void sub_8101700(u8 taskId) +{ + if (!sub_81341D4()) + { + DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); + } else + { + gTasks[taskId].data[11] = 1; + gUnknown_020388F6 = 0; + sub_80FE5AC(taskId); + } +} + +void sub_8101750(u8 taskId) +{ + if (!sub_81341D4()) + { + DisplayItemMessageOnField(taskId, gSecretBaseText_NoDecors, sub_80FE428, 0); + } else + { + gTasks[taskId].data[11] = 2; + gUnknown_020388F6 = 0; + sub_80FE5AC(taskId); + } +} + +void sub_81017A0(u8 taskId) +{ + sub_80FEF74(); + sub_80FED1C(); + if (sub_80FEFA4() == TRUE) + { + StringCopy(gStringVar1, gDecorations[gUnknown_020388D0[gUnknown_020388F5]].name); + StringExpandPlaceholders(gStringVar4, gSecretBaseText_WillBeDiscarded); + DisplayItemMessageOnField(taskId, gStringVar4, sub_8101824, 0); + } else + { + DisplayItemMessageOnField(taskId, gSecretBaseText_DecorInUse, sub_80FEFF4, 0); + } +} + +void sub_8101824(u8 taskId) +{ + DisplayYesNoMenu(20, 8, 1); + sub_80F914C(taskId, &gUnknown_083ECAA0); +} + +void sub_8101848(u8 taskId) +{ + MenuZeroFillWindowRect(20, 8, 26, 14); + sub_8109A30(gUnknown_020388D0[gUnknown_020388F5]); + gUnknown_020388D0[gUnknown_020388F5] = DECOR_NONE; + sub_80FF098(taskId); + DisplayItemMessageOnField(taskId, gSecretBaseText_DecorThrownAway, sub_80FEFF4, 0); +} diff --git a/src/easy_chat.c b/src/easy_chat.c index b21b00368..e43ba751f 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -216,15 +216,15 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) { { case 5: c = 6; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x04); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x04); break; case 7: c = 2; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x1C); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x1C); break; case 8: c = 1; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x02); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); break; default: @@ -471,7 +471,7 @@ static u16 sub_80EB9D8(void) { { const u16 dexNum = SpeciesToNationalPokedexNum(*speciesList); - const u8 local2 = sub_8090D90(dexNum, 0); + const u8 local2 = GetNationalPokedexFlag(dexNum, 0); if (local2) { diff --git a/src/field_map_obj.c b/src/field_map_obj.c index eaad98cb0..26cd1de02 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -4302,39 +4302,39 @@ __attribute__((naked)) int state_to_direction(u8 a0, u8 a1, u8 a2) { asm(".syntax unified\n\ - push {r4,lr}\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - lsls r1, 24\n\ - lsrs r1, 24\n\ - adds r0, r1, 0\n\ - lsls r2, 24\n\ - lsrs r2, 24\n\ - cmp r1, 0\n\ - beq _08060BFC\n\ - cmp r2, 0\n\ - beq _08060BFC\n\ - cmp r1, 0x4\n\ - bhi _08060BFC\n\ - cmp r2, 0x4\n\ - bls _08060C00\n\ + push {r4,lr}\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + lsls r1, 24\n\ + lsrs r1, 24\n\ + adds r0, r1, 0\n\ + lsls r2, 24\n\ + lsrs r2, 24\n\ + cmp r1, 0\n\ + beq _08060BFC\n\ + cmp r2, 0\n\ + beq _08060BFC\n\ + cmp r1, 0x4\n\ + bhi _08060BFC\n\ + cmp r2, 0x4\n\ + bls _08060C00\n\ _08060BFC:\n\ - movs r0, 0\n\ - b _08060C12\n\ + movs r0, 0\n\ + b _08060C12\n\ _08060C00:\n\ - adds r1, r2, 0\n\ - bl zffu_offset_calc\n\ - ldr r2, _08060C18 @ =gUnknown_08375767\n\ - lsls r1, r4, 2\n\ - subs r1, 0x5\n\ - adds r0, r1\n\ - adds r0, r2\n\ - ldrb r0, [r0]\n\ + adds r1, r2, 0\n\ + bl zffu_offset_calc\n\ + ldr r2, _08060C18 @ =gUnknown_08375767\n\ + lsls r1, r4, 2\n\ + subs r1, 0x5\n\ + adds r0, r1\n\ + adds r0, r2\n\ + ldrb r0, [r0]\n\ _08060C12:\n\ - pop {r4}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + pop {r4}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _08060C18: .4byte gUnknown_08375767\n\ .syntax divided\n"); } @@ -6609,121 +6609,121 @@ void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) __attribute__((naked)) void sub_80634E8(struct MapObject *mapObject, struct Sprite *sprite) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - adds r5, r0, 0\n\ - adds r4, r1, 0\n\ - ldrb r1, [r5, 0x1]\n\ - movs r0, 0x41\n\ - negs r0, r0\n\ - ands r0, r1\n\ - strb r0, [r5, 0x1]\n\ - ldrb r0, [r5, 0x5]\n\ - bl GetFieldObjectGraphicsInfo\n\ - adds r6, r0, 0\n\ - adds r0, r4, 0\n\ - adds r0, 0x3E\n\ - ldrb r1, [r0]\n\ - movs r0, 0x2\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _0806354C\n\ - ldrh r1, [r4, 0x24]\n\ - ldrh r0, [r4, 0x20]\n\ - adds r1, r0\n\ - adds r0, r4, 0\n\ - adds r0, 0x28\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - ldr r2, _08063544 @ =gSpriteCoordOffsetX\n\ - adds r0, r1\n\ - ldrh r2, [r2]\n\ - adds r0, r2\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - ldrh r1, [r4, 0x26]\n\ - ldrh r0, [r4, 0x22]\n\ - adds r1, r0\n\ - adds r0, r4, 0\n\ - adds r0, 0x29\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - ldr r2, _08063548 @ =gSpriteCoordOffsetY\n\ - adds r0, r1\n\ - ldrh r2, [r2]\n\ - adds r0, r2\n\ - b _08063574\n\ - .align 2, 0\n\ + push {r4-r6,lr}\n\ + adds r5, r0, 0\n\ + adds r4, r1, 0\n\ + ldrb r1, [r5, 0x1]\n\ + movs r0, 0x41\n\ + negs r0, r0\n\ + ands r0, r1\n\ + strb r0, [r5, 0x1]\n\ + ldrb r0, [r5, 0x5]\n\ + bl GetFieldObjectGraphicsInfo\n\ + adds r6, r0, 0\n\ + adds r0, r4, 0\n\ + adds r0, 0x3E\n\ + ldrb r1, [r0]\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _0806354C\n\ + ldrh r1, [r4, 0x24]\n\ + ldrh r0, [r4, 0x20]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x28\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + ldr r2, _08063544 @ =gSpriteCoordOffsetX\n\ + adds r0, r1\n\ + ldrh r2, [r2]\n\ + adds r0, r2\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldrh r1, [r4, 0x26]\n\ + ldrh r0, [r4, 0x22]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x29\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + ldr r2, _08063548 @ =gSpriteCoordOffsetY\n\ + adds r0, r1\n\ + ldrh r2, [r2]\n\ + adds r0, r2\n\ + b _08063574\n\ + .align 2, 0\n\ _08063544: .4byte gSpriteCoordOffsetX\n\ _08063548: .4byte gSpriteCoordOffsetY\n\ _0806354C:\n\ - ldrh r1, [r4, 0x24]\n\ - ldrh r0, [r4, 0x20]\n\ - adds r1, r0\n\ - adds r0, r4, 0\n\ - adds r0, 0x28\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - adds r0, r1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - ldrh r1, [r4, 0x26]\n\ - ldrh r0, [r4, 0x22]\n\ - adds r1, r0\n\ - adds r0, r4, 0\n\ - adds r0, 0x29\n\ - ldrb r0, [r0]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - adds r0, r1\n\ + ldrh r1, [r4, 0x24]\n\ + ldrh r0, [r4, 0x20]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x28\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + adds r0, r1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + ldrh r1, [r4, 0x26]\n\ + ldrh r0, [r4, 0x22]\n\ + adds r1, r0\n\ + adds r0, r4, 0\n\ + adds r0, 0x29\n\ + ldrb r0, [r0]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + adds r0, r1\n\ _08063574:\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - ldrh r0, [r6, 0x8]\n\ - adds r0, r3\n\ - lsls r0, 16\n\ - lsrs r1, r0, 16\n\ - ldrh r0, [r6, 0xA]\n\ - adds r0, r2\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - lsls r0, r3, 16\n\ - asrs r0, 16\n\ - cmp r0, 0xFF\n\ - bgt _0806359C\n\ - lsls r0, r1, 16\n\ - asrs r0, 16\n\ - movs r1, 0x10\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - bge _080635A4\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + ldrh r0, [r6, 0x8]\n\ + adds r0, r3\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + ldrh r0, [r6, 0xA]\n\ + adds r0, r2\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + lsls r0, r3, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xFF\n\ + bgt _0806359C\n\ + lsls r0, r1, 16\n\ + asrs r0, 16\n\ + movs r1, 0x10\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bge _080635A4\n\ _0806359C:\n\ - ldrb r0, [r5, 0x1]\n\ - movs r1, 0x40\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ + ldrb r0, [r5, 0x1]\n\ + movs r1, 0x40\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ _080635A4:\n\ - lsls r0, r2, 16\n\ - asrs r0, 16\n\ - cmp r0, 0xAF\n\ - bgt _080635B8\n\ - lsls r0, r4, 16\n\ - asrs r0, 16\n\ - movs r1, 0x10\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - bge _080635C0\n\ + lsls r0, r2, 16\n\ + asrs r0, 16\n\ + cmp r0, 0xAF\n\ + bgt _080635B8\n\ + lsls r0, r4, 16\n\ + asrs r0, 16\n\ + movs r1, 0x10\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + bge _080635C0\n\ _080635B8:\n\ - ldrb r0, [r5, 0x1]\n\ - movs r1, 0x40\n\ - orrs r0, r1\n\ - strb r0, [r5, 0x1]\n\ + ldrb r0, [r5, 0x1]\n\ + movs r1, 0x40\n\ + orrs r0, r1\n\ + strb r0, [r5, 0x1]\n\ _080635C0:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } #endif diff --git a/src/fieldmap.c b/src/fieldmap.c index 0301115d5..2ed2266f5 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -2,13 +2,6 @@ #include "fieldmap.h" #include "palette.h" -struct BackupMapData -{ - s32 width; - s32 height; - u16 *map; -}; - extern struct MapHeader * const get_mapheader_by_bank_and_number(u8, u8); extern void mapheader_run_script_with_tag_x1(void); extern void sub_80BB970(struct MapEvents *); @@ -32,7 +25,6 @@ struct Coords32 }; extern const struct Coords32 gUnknown_0821664C[]; -extern struct BackupMapData gUnknown_03004870; EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; @@ -48,7 +40,6 @@ void fillSouthConnection(struct MapHeader *, struct MapHeader *, s32); void fillNorthConnection(struct MapHeader *, struct MapHeader *, s32); void fillWestConnection(struct MapHeader *, struct MapHeader *, s32); void fillEastConnection(struct MapHeader *, struct MapHeader *, s32); -u32 GetBehaviorByMetatileId(u16 metatile); struct MapConnection *sub_8056A64(u8 direction, int x, int y); bool8 sub_8056ABC(u8 direction, int x, int y, struct MapConnection *connection); bool8 sub_8056B20(int x, int src_width, int dest_width, int offset); diff --git a/src/main_menu.c b/src/main_menu.c index b2d08698b..ac26d604d 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -945,14 +945,14 @@ static void Task_NewGameSpeech16(u8 taskId) switch (GenderMenuProcessInput()) { case MALE: - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = MALE; MenuZeroFillWindowRect(2, 4, 8, 9); gTasks[taskId].func = Task_NewGameSpeech19; break; case FEMALE: - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); gSaveBlock2.playerGender = FEMALE; MenuZeroFillWindowRect(2, 4, 8, 9); @@ -1048,7 +1048,7 @@ static void Task_NewGameSpeech21(u8 taskId) case 2: case 3: case 4: - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); SetPresetPlayerName(selection); @@ -1060,7 +1060,7 @@ static void Task_NewGameSpeech21(u8 taskId) gTasks[taskId].func = Task_NewGameSpeech22; break; case -1: //B button - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); MenuZeroFillWindowRect(2, 1, 22, 12); gTasks[taskId].func = Task_NewGameSpeech14; //Go back to gender menu diff --git a/src/menu.c b/src/menu.c index 61eaebb6f..0d5c0b7d2 100644 --- a/src/menu.c +++ b/src/menu.c @@ -54,7 +54,7 @@ void CloseMenu(void) MenuZeroFillScreen(); sub_8064E2C(); ScriptContext2_Disable(); - sub_8072DEC(); + HandleDestroyMenuCursors(); } void AppendToList(u8 *list, u8 *pindex, u32 value) @@ -270,14 +270,14 @@ s8 ProcessMenuInput(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return -1; } @@ -305,14 +305,14 @@ s8 ProcessMenuInputNoWrap(void) { PlaySE(SE_SELECT); if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return gMenu.cursorPos; } if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return -1; } @@ -517,7 +517,7 @@ s8 sub_80727CC(void) if (gMain.newKeys & A_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); return GetMenuCursorPos(); } @@ -525,7 +525,7 @@ s8 sub_80727CC(void) if (gMain.newKeys & B_BUTTON) { if (gMenu.menu_field_7) - sub_8072DEC(); + HandleDestroyMenuCursors(); return -1; } @@ -611,7 +611,7 @@ u8 unref_sub_8072A5C(u8 *dest, u8 *src, u8 left, u16 top, u8 width, u32 a6) return sub_8004FD0(gMenuWindowPtr, dest, src, gMenuTextTileOffset, left, top, width, a6); } -int sub_8072AB0(u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) +int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6) { u8 newlineCount = sub_8004FD0(gMenuWindowPtr, NULL, str, gMenuTextTileOffset, left, top, width, a6); @@ -731,7 +731,7 @@ void sub_8072DDC(u8 a1) sub_8072DCC(8 * a1); } -void sub_8072DEC(void) +void HandleDestroyMenuCursors(void) { - sub_814A7FC(); + DestroyMenuCursor(); } diff --git a/src/menu_cursor.c b/src/menu_cursor.c index fa28332df..cfb38ca47 100644 --- a/src/menu_cursor.c +++ b/src/menu_cursor.c @@ -45,7 +45,7 @@ u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5) struct Sprite *v10; if (gUnknown_0203A3D0 != 0x40 || gUnknown_0203A3D1 != 0x40) - sub_814A7FC(); + DestroyMenuCursor(); v9 = 1; if (a2 == 0xFFFF) @@ -120,7 +120,7 @@ u8 unref_sub_814A7AC(u8 a1, u16 a2, u8 a3) return sub_814A758(a1, val1, val2, a3); } -void sub_814A7FC(void) +void DestroyMenuCursor(void) { if (gUnknown_0203A3D0 != 0x40) { diff --git a/src/party_menu.c b/src/party_menu.c index 139df5b3a..ad0007695 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1286,7 +1286,7 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 b, TaskFunc c) void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) { - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(19, 10, 29, 19); sub_806D5A4(); gTasks[taskId].data[11] = GetMenuCursorPos(); @@ -1295,7 +1295,7 @@ void ItemUseMoveMenu_HandleMoveSelection(u8 taskId) void ItemUseMoveMenu_HandleCancel(u8 taskId) { - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(19, 10, 29, 19); if (gMain.inBattle) gTasks[ewram1C000.unk4].func = SetUpBattlePokemonMenu; diff --git a/src/player_pc.c b/src/player_pc.c index c012afb02..f39d812b6 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -12,75 +12,156 @@ #include "string_util.h" #include "strings.h" #include "task.h" +#include "songs.h" +#include "name_string_util.h" +#include "mail.h" +#include "rom4.h" + +// task defines +#define PAGE_INDEX data[0] +#define ITEMS_ABOVE_TOP data[1] +#define NUM_ITEMS data[2] +#define NUM_QUANTITY_ROLLER data[3] +#define NUM_PAGE_ITEMS data[4] +// not used +#define CURRENT_ITEM_STORAGE_MENU data[6] +// not used +#define SWAP_ITEM_INDEX data[8] +#define SWITCH_MODE_ACTIVE data[9] #define NEW_GAME_PC_ITEMS(i, type) ((u16)(gNewGamePCItems + type)[i * 2]) -// type as in define above +// defined and used in the above macro enum { ITEM_ID, - QUANTITY, + QUANTITY }; +// player PC menu options +enum +{ + PLAYERPC_MENU_ITEMSTORAGE, + PLAYERPC_MENU_MAILBOX, + PLAYERPC_MENU_DECORATION, + PLAYERPC_MENU_TURNOFF +}; + +// item storage menus +enum +{ + ITEMPC_MENU_WITHDRAW, + ITEMPC_MENU_DEPOSIT, + ITEMPC_MENU_TOSS, + ITEMPC_MENU_EXIT +}; + +// special item description handlers +enum +{ + ITEMPC_SWITCH_WHICH_ITEM = 0xFFF7, + ITEMPC_OKAY_TO_THROW_AWAY, + ITEMPC_TOO_IMPORTANT, + ITEMPC_NO_MORE_ROOM, + ITEMPC_THREW_AWAY_ITEM, + ITEMPC_HOW_MANY_TO_TOSS, + ITEMPC_WITHDREW_THING, + ITEMPC_HOW_MANY_TO_WITHDRAW, + ITEMPC_GO_BACK_TO_PREV +}; + +struct MailboxStruct +{ + /*0x00*/ u8 cursorPos; + /*0x01*/ u8 pageItems; // number of items (not including Cancel) on the current page. + /*0x02*/ u8 itemsAbove; // number of items above the top item on the page. + /*0x03*/ u8 count; // total number of items in mailbox storage. +}; + +extern struct MailboxStruct gMailboxInfo; + extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16); extern void DoPlayerPCDecoration(u8); extern void BuyMenuFreeMemory(void); extern void DestroyVerticalScrollIndicator(u8); -extern u8 sub_813AF3C(void); -extern void sub_813AF78(void); -extern void sub_813B108(u8); -extern void sub_813B174(u8); extern void sub_80A6A30(void); extern u8 sub_807D770(void); -extern void sub_813AE6C(u8, u8); -extern void sub_813AD58(u16); -extern void sub_813AE0C(u8); extern void sub_80F996C(u8); extern void sub_80A418C(u16, enum StringConvertMode, int, int, int); extern void sub_80F98DC(int); extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8); extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args +extern void sub_80F944C(void); +extern void LoadScrollIndicatorPalette(void); +extern void ClearMailStruct(struct MailStruct *); +extern void sub_808B020(void); extern u16 gNewGamePCItems[]; +extern u16 gUnknown_08406334[3]; -extern u8 *gUnknown_02039314; -extern struct MenuAction gUnknown_08406298[]; +extern u8 *gPcItemMenuOptionOrder; +extern struct MenuAction gPCText_PlayerPCOptionsText[]; -extern u8 gUnknown_084062B8[]; -extern u8 gUnknown_084062BC[]; +extern u8 gBedroomPC_OptionOrder[]; +extern u8 gPlayerPC_OptionOrder[]; extern u8 gUnknown_0840632A[]; extern u8 gUnknown_08406327[]; extern u8 gUnknown_08406330[]; extern u8 gUnknown_0840631E[]; extern u8 gUnknown_08406318[]; +extern u8 gUnknown_0840633A[]; -extern u8 gUnknown_030007B4; -extern u8 unk_201FE00[]; +extern u8 gPcItemMenuOptionsNum; +extern u8 gUnknown_02038561; extern u8 gUnknown_08152850; extern u8 gUnknown_08152C75; -extern u32 gUnknown_08406288[]; -extern const struct MenuAction gUnknown_084062C0[]; +extern void (*gUnknown_0300485C)(void); + +extern u32 gPCText_OptionDescList[]; +extern const struct MenuAction gPCText_ItemPCOptionsText[]; +extern const struct MenuAction gUnknown_084062F8[]; extern const struct YesNoFuncTable gUnknown_084062E0; +extern const struct YesNoFuncTable gUnknown_084062E8; void InitPlayerPCMenu(u8 taskId); void PlayerPCProcessMenuInput(u8 taskId); void InitItemStorageMenu(u8); void ItemStorageMenuPrint(u8 *); void ItemStorageMenuProcessInput(u8); -void sub_813A280(u8); -void sub_813A240(u8); -void sub_813A4B4(u8); -void sub_813A468(u8); -void HandleQuantityRolling(u8); -void sub_813A6FC(u8); -void sub_813A794(u8); -void sub_813A8F0(u8); -void sub_813A984(u8); -void sub_813A9EC(u8); -void sub_813AA30(u8, u8); -void sub_813ABE8(u8); +void ItemStorage_ProcessInput(u8); +void ItemStorage_SetItemAndMailCount(u8); +void ItemStorage_DoItemAction(u8); +void ItemStorage_GoBackToPlayerPCMenu(u8); +void ItemStorage_HandleQuantityRolling(u8); +void ItemStorage_DoItemWithdraw(u8); +void ItemStorage_DoItemToss(u8); +void ItemStorage_HandleRemoveItem(u8); +void ItemStorage_WaitPressHandleResumeProcessInput(u8); +void ItemStorage_HandleResumeProcessInput(u8); +void ItemStorage_DoItemSwap(u8, bool8); +void ItemStorage_DrawItemList(u8); +void ItemStorage_PrintItemPcResponse(u16); +void ItemStorage_DrawBothListAndDescription(u8); +void ItemStorage_GoBackToItemPCMenu(u8, u8); +void ItemStorage_LoadPalette(void); +u8 GetMailboxMailCount(void); +void Mailbox_UpdateMailList(void); +void Mailbox_DrawMailboxMenu(u8); +void Mailbox_ProcessInput(u8); +void sub_813B27C(void); +void sub_813B294(u8); +void sub_813B320(u8); +void sub_813B348(u8); +void sub_813B3A0(u8); +void sub_813B454(u8); +void sub_813B4F0(void); +void sub_813B554(u8); +void sub_813B66C(u8); +void sub_813B718(u8); +void Mailbox_Cancel(u8); +void sub_813B758(u8); void NewGameInitPCItems(void) { @@ -94,55 +175,49 @@ void NewGameInitPCItems(void) void BedroomPC(void) { - u8 taskId; - - gUnknown_02039314 = gUnknown_084062B8; - gUnknown_030007B4 = 4; - taskId = CreateTask(TaskDummy, 0); - DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); + gPcItemMenuOptionOrder = gBedroomPC_OptionOrder; + gPcItemMenuOptionsNum = 4; + DisplayItemMessageOnField(CreateTask(TaskDummy, 0), gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); } void PlayerPC(void) { - u8 taskId; - - gUnknown_02039314 = gUnknown_084062BC; - gUnknown_030007B4 = 3; - taskId = CreateTask(TaskDummy, 0); - DisplayItemMessageOnField(taskId, gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); + gPcItemMenuOptionOrder = gPlayerPC_OptionOrder; + gPcItemMenuOptionsNum = 3; + DisplayItemMessageOnField(CreateTask(TaskDummy, 0), gOtherText_WhatWillYouDo, InitPlayerPCMenu, 0); } void InitPlayerPCMenu(u8 taskId) { - MenuDrawTextWindow(0, 0, 10, gUnknown_030007B4 * 2 + 1); - PrintMenuItemsReordered(1, 1, gUnknown_030007B4, gUnknown_08406298, gUnknown_02039314); - InitMenu(0, 1, 1, gUnknown_030007B4, 0, 9); + MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1); + PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, gPCText_PlayerPCOptionsText, gPcItemMenuOptionOrder); + InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9); gTasks[taskId].func = PlayerPCProcessMenuInput; } void PlayerPCProcessMenuInput(u8 taskId) { - if (gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(-1); } - else if (gMain.newAndRepeatedKeys & 0x80) + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(1); } - else if (gMain.newKeys & 0x1) + else if (gMain.newKeys & A_BUTTON) { - sub_8072DEC(); - PlaySE(5); - gUnknown_08406298[gUnknown_02039314[GetMenuCursorPos()]].func(taskId); + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gPCText_PlayerPCOptionsText[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId); } - else if (gMain.newKeys & 0x2) + else if (gMain.newKeys & B_BUTTON) { - sub_8072DEC(); - PlaySE(5); - gUnknown_08406298[gUnknown_030007B4[gUnknown_02039314 - 1]].func(taskId); + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gPCText_PlayerPCOptionsText[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT. } } @@ -160,17 +235,18 @@ void PlayerPC_ItemStorage(u8 taskId) void PlayerPC_Mailbox(u8 taskId) { MenuZeroFillWindowRect(0, 0, 10, 9); - unk_201FE00[3] = sub_813AF3C(); - if (!unk_201FE00[3]) + gMailboxInfo.count = GetMailboxMailCount(); + + if (gMailboxInfo.count == 0) DisplayItemMessageOnField(taskId, gOtherText_NoMailHere, ReshowPlayerPC, 0); else { - unk_201FE00[0] = 0; - unk_201FE00[2] = 0; - sub_813AF78(); - sub_813A240(taskId); - sub_813B108(taskId); - gTasks[taskId].func = sub_813B174; + gMailboxInfo.cursorPos = 0; + gMailboxInfo.itemsAbove = 0; + Mailbox_UpdateMailList(); + ItemStorage_SetItemAndMailCount(taskId); + Mailbox_DrawMailboxMenu(taskId); + gTasks[taskId].func = Mailbox_ProcessInput; } } @@ -182,13 +258,14 @@ void PlayerPC_Decoration(u8 var) void PlayerPC_TurnOff(u8 taskId) { - if (gUnknown_030007B4 == 4) + if (gPcItemMenuOptionsNum == 4) // if the option count is 4, we are at the bedroom PC and not player PC, so do gender specific handling. { MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); - if (!gSaveBlock2.playerGender) - ScriptContext1_SetupScript(&gUnknown_08152850); // male + + if (gSaveBlock2.playerGender == MALE) + ScriptContext1_SetupScript(&gUnknown_08152850); else - ScriptContext1_SetupScript(&gUnknown_08152C75); // female + ScriptContext1_SetupScript(&gUnknown_08152C75); } else { @@ -202,9 +279,9 @@ void InitItemStorageMenu(u8 var) { MenuZeroFillWindowRect(0, 0, 10, 9); MenuDrawTextWindow(0, 0, 11, 9); - PrintMenuItems(1, 1, 4, gUnknown_084062C0); + PrintMenuItems(1, 1, 4, gPCText_ItemPCOptionsText); InitMenu(0, 1, 1, 4, var, 10); - ItemStorageMenuPrint((u8 *)gUnknown_08406288[var]); + ItemStorageMenuPrint((u8 *)gPCText_OptionDescList[var]); } void ItemStorageMenuPrint(u8 *textPtr) @@ -215,28 +292,28 @@ void ItemStorageMenuPrint(u8 *textPtr) void ItemStorageMenuProcessInput(u8 var) { - if (gMain.newAndRepeatedKeys & 0x40) + if (gMain.newAndRepeatedKeys & DPAD_UP) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(-1); - ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); + ItemStorageMenuPrint((u8 *)gPCText_OptionDescList[GetMenuCursorPos()]); } - else if (gMain.newAndRepeatedKeys & 0x80) + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) { - PlaySE(5); + PlaySE(SE_SELECT); MoveMenuCursor(1); - ItemStorageMenuPrint((u8 *)gUnknown_08406288[GetMenuCursorPos()]); + ItemStorageMenuPrint((u8 *)gPCText_OptionDescList[GetMenuCursorPos()]); } - else if (gMain.newKeys & 0x1) + else if (gMain.newKeys & A_BUTTON) { - PlaySE(5); - gUnknown_084062C0[GetMenuCursorPos()].func(var); + PlaySE(SE_SELECT); + gPCText_ItemPCOptionsText[GetMenuCursorPos()].func(var); } - else if (gMain.newKeys & 0x2) + else if (gMain.newKeys & B_BUTTON) { - sub_8072DEC(); - PlaySE(5); - gUnknown_084062C0[3].func(var); + HandleDestroyMenuCursors(); + PlaySE(SE_SELECT); + gPCText_ItemPCOptionsText[ITEMPC_MENU_EXIT].func(var); } } @@ -271,23 +348,21 @@ void sub_813A0F8(void) void ItemStorage_Withdraw(u8 taskId) { - u8 var; - u16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 9); - var = CountUsedPCItemSlots(); - data[2] = var; + NUM_ITEMS = CountUsedPCItemSlots(); - if (var) + if (NUM_ITEMS != 0) { MenuZeroFillWindowRect(0, 14, 29, 19); - data[6] = 0; - data[0] = 0; - data[1] = 0; - sub_813A240(taskId); - sub_813AE6C(taskId, 0); - gTasks[taskId].func = sub_813A280; + CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_WITHDRAW; + PAGE_INDEX = 0; + ITEMS_ABOVE_TOP = 0; + ItemStorage_SetItemAndMailCount(taskId); + ItemStorage_GoBackToItemPCMenu(taskId, 0); + gTasks[taskId].func = ItemStorage_ProcessInput; } else DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0); @@ -295,23 +370,21 @@ void ItemStorage_Withdraw(u8 taskId) void ItemStorage_Toss(u8 taskId) { - u8 var; - u16 * data = gTasks[taskId].data; + s16 *data = gTasks[taskId].data; - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 9); - var = CountUsedPCItemSlots(); - data[2] = var; + NUM_ITEMS = CountUsedPCItemSlots(); - if (var) + if (NUM_ITEMS) { MenuZeroFillWindowRect(0, 14, 29, 19); - data[6] = 2; - data[0] = 0; - data[1] = 0; - sub_813A240(taskId); - sub_813AE6C(taskId, 2); - gTasks[taskId].func = sub_813A280; + CURRENT_ITEM_STORAGE_MENU = ITEMPC_MENU_TOSS; + PAGE_INDEX = 0; + ITEMS_ABOVE_TOP = 0; + ItemStorage_SetItemAndMailCount(taskId); + ItemStorage_GoBackToItemPCMenu(taskId, 2); + gTasks[taskId].func = ItemStorage_ProcessInput; } else DisplayItemMessageOnField(taskId, gOtherText_NoItems, PlayerPC_ItemStorage, 0); @@ -319,477 +392,478 @@ void ItemStorage_Toss(u8 taskId) void ItemStorage_Exit(u8 var) { - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 9); ReshowPlayerPC(var); } -void sub_813A240(u8 taskId) +void ItemStorage_SetItemAndMailCount(u8 taskId) { s16 *data = gTasks[taskId].data; - if (data[2] > 7) - data[4] = 8; + if (NUM_ITEMS > 7) // we have a full page, so set the num of page items appropriately. + NUM_PAGE_ITEMS = 8; else - data[4] = data[2] + 1; + NUM_PAGE_ITEMS = NUM_ITEMS + 1; // there are not enough items to fill a full page; take the # of items and add 1 for the cancel button. - if (unk_201FE00[3] > 7) - unk_201FE00[1] = 8; + if (gMailboxInfo.count > 7) + gMailboxInfo.pageItems = 8; else - unk_201FE00[1] = unk_201FE00[3] + 1; + gMailboxInfo.pageItems = gMailboxInfo.count + 1; } -void sub_813A280(u8 taskId) +void ItemStorage_ProcessInput(u8 taskId) { s16 *data = gTasks[taskId].data; - s16 var; + s16 trueIndex; if (gMain.newAndRepeatedKeys & DPAD_UP) { - if(data[0]) + if(PAGE_INDEX != 0) // did the cursor move physically upwards? { - PlaySE(5); - data[0] = MoveMenuCursor(-1); - var = data[1] + data[0]; - if (!data[9]) + PlaySE(SE_SELECT); + PAGE_INDEX = MoveMenuCursor(-1); + trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; + if (SWITCH_MODE_ACTIVE == FALSE) // are we not currently switching items? { - if (var == data[2]) + if (trueIndex == NUM_ITEMS) // if the cursor is on top of cancel, print the go back to prev description. { - sub_813AD58(0xFFFF); + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); } else { - sub_813AD58(gSaveBlock1.pcItems[var].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); } } } - else // _0813A2E4 + else // the page cursor is at the top. but we may not be at the top of the true index list, so do another check. { - if (!data[1]) + if (ITEMS_ABOVE_TOP == 0) // did the cursor not move due to being at the top of the list? return; - PlaySE(5); - data[1]--; - sub_813AE0C(taskId); - // probably further down - if (data[9]) - MoveMenuCursor(0); + + PlaySE(SE_SELECT); + ITEMS_ABOVE_TOP--; + ItemStorage_DrawBothListAndDescription(taskId); + + if (SWITCH_MODE_ACTIVE != FALSE) + MoveMenuCursor(0); // don't move the cursor. it's at the top of the page index, but not the true index. } } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) // _0813A306 { - if(data[0] != data[4] - 1) + if(PAGE_INDEX != NUM_PAGE_ITEMS - 1) { - PlaySE(5); - data[0] = MoveMenuCursor(1); - var = data[1] + data[0]; + PlaySE(SE_SELECT); + PAGE_INDEX = MoveMenuCursor(1); + trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; - if(data[9]) + if(SWITCH_MODE_ACTIVE != FALSE) return; - if (var == data[2]) - sub_813AD58(0xFFFF); // probably further down + if (trueIndex == NUM_ITEMS) + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); // probably further down else - sub_813AD58(gSaveBlock1.pcItems[var].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); } - else if(data[1] + data[0] != data[2]) + else if(ITEMS_ABOVE_TOP + PAGE_INDEX != NUM_ITEMS) { - PlaySE(5); - data[1]++; - sub_813AE0C(taskId); + PlaySE(SE_SELECT); + ITEMS_ABOVE_TOP++; + ItemStorage_DrawBothListAndDescription(taskId); - if (data[9]) + if (SWITCH_MODE_ACTIVE != FALSE) MoveMenuCursor(0); } } else if(gMain.newKeys & SELECT_BUTTON) // _0813A3A0 { - if (!data[9]) + if (SWITCH_MODE_ACTIVE == FALSE) { - if (data[0] + data[1] != data[2]) + if (PAGE_INDEX + ITEMS_ABOVE_TOP != NUM_ITEMS) // you cannot swap the Cancel button. { - PlaySE(5); - data[9] = 1; - data[8] = data[1] + data[0]; - sub_813AD58(0xFFF7); + PlaySE(SE_SELECT); + SWITCH_MODE_ACTIVE = TRUE; + SWAP_ITEM_INDEX = ITEMS_ABOVE_TOP + PAGE_INDEX; + ItemStorage_PrintItemPcResponse(ITEMPC_SWITCH_WHICH_ITEM); } // _0813A3DC - sub_813ABE8(taskId); + ItemStorage_DrawItemList(taskId); } else // _0813A3E8 { - PlaySE(5); // merging? - sub_813AA30(taskId, 0); - sub_813AE0C(taskId); + PlaySE(SE_SELECT); + ItemStorage_DoItemSwap(taskId, FALSE); + ItemStorage_DrawBothListAndDescription(taskId); } } else if(gMain.newKeys & A_BUTTON) { - PlaySE(5); - if(!data[9]) + PlaySE(SE_SELECT); + if(SWITCH_MODE_ACTIVE == FALSE) { - if(data[1] + data[0] != data[2]) + if(ITEMS_ABOVE_TOP + PAGE_INDEX != NUM_ITEMS) { - sub_813A4B4(taskId); + ItemStorage_DoItemAction(taskId); } else { - sub_813A468(taskId); + ItemStorage_GoBackToPlayerPCMenu(taskId); } } else { - sub_813AA30(taskId, 0); - sub_813AE0C(taskId); + ItemStorage_DoItemSwap(taskId, FALSE); + ItemStorage_DrawBothListAndDescription(taskId); } } else if(gMain.newKeys & B_BUTTON) { - PlaySE(5); - if(!data[9]) + PlaySE(SE_SELECT); + if(SWITCH_MODE_ACTIVE == FALSE) { - sub_8072DEC(); - sub_813A468(taskId); + HandleDestroyMenuCursors(); + ItemStorage_GoBackToPlayerPCMenu(taskId); } else { - sub_813AA30(taskId, 1); - sub_813AE0C(taskId); + ItemStorage_DoItemSwap(taskId, TRUE); + ItemStorage_DrawBothListAndDescription(taskId); } } } -void sub_813A468(u8 taskId) +void ItemStorage_GoBackToPlayerPCMenu(u8 taskId) { BuyMenuFreeMemory(); DestroyVerticalScrollIndicator(0); DestroyVerticalScrollIndicator(1); MenuZeroFillWindowRect(0, 0, 29, 19); MenuDisplayMessageBox(); - InitItemStorageMenu(gTasks[taskId].data[6]); + InitItemStorageMenu(gTasks[taskId].CURRENT_ITEM_STORAGE_MENU); gTasks[taskId].func = ItemStorageMenuProcessInput; } -void sub_813A4B4(u8 taskId) +void ItemStorage_DoItemAction(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; sub_80F996C(0); sub_80F996C(1); - if(!data[6]) + if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) { - if(gSaveBlock1.pcItems[var].quantity == 1) + if(gSaveBlock1.pcItems[trueIndex].quantity == 1) { - data[3] = 1; - sub_813A6FC(taskId); + NUM_QUANTITY_ROLLER = 1; + ItemStorage_DoItemWithdraw(taskId); return; } else // _0813A50C { - sub_813AD58(0xFFFE); + ItemStorage_PrintItemPcResponse(ITEMPC_HOW_MANY_TO_WITHDRAW); } } - else if(gSaveBlock1.pcItems[var].quantity == 1) // _0813A518 + else if(gSaveBlock1.pcItems[trueIndex].quantity == 1) // _0813A518 { - data[3] = 1; - sub_813A794(taskId); + NUM_QUANTITY_ROLLER = 1; + ItemStorage_DoItemToss(taskId); return; } else { - sub_813AD58(0xFFFC); + ItemStorage_PrintItemPcResponse(ITEMPC_HOW_MANY_TO_TOSS); } - data[3] = 1; + NUM_QUANTITY_ROLLER = 1; MenuDrawTextWindow(6, 8, 13, 11); - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); - gTasks[taskId].func = HandleQuantityRolling; + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); + gTasks[taskId].func = ItemStorage_HandleQuantityRolling; } -void HandleQuantityRolling(u8 taskId) +void ItemStorage_HandleQuantityRolling(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; if(gMain.newAndRepeatedKeys & DPAD_UP) { - if(data[3] != gSaveBlock1.pcItems[var].quantity) - data[3]++; + if(NUM_QUANTITY_ROLLER != gSaveBlock1.pcItems[trueIndex].quantity) + NUM_QUANTITY_ROLLER++; else - data[3] = 1; // you are at the max amount of items you have when you press Up, set your quantity back to 1. + NUM_QUANTITY_ROLLER = 1; // you are at the max amount of items you have when you press Up, set your quantity back to 1. - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newAndRepeatedKeys & DPAD_DOWN) { - if(data[3] != 1) - data[3]--; + if(NUM_QUANTITY_ROLLER != 1) + NUM_QUANTITY_ROLLER--; else - data[3] = gSaveBlock1.pcItems[var].quantity; // you are at 0 when you press down, set your quantity to the amount you have. + NUM_QUANTITY_ROLLER = gSaveBlock1.pcItems[trueIndex].quantity; // you are at 0 when you press down, set your quantity to the amount you have. - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newAndRepeatedKeys & DPAD_LEFT) // reduce by 10. { - data[3] -= 10; + NUM_QUANTITY_ROLLER -= 10; - if(data[3] <= 0) - data[3] = 1; // dont underflow or allow 0! + if(NUM_QUANTITY_ROLLER <= 0) + NUM_QUANTITY_ROLLER = 1; // dont underflow or allow 0! - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newAndRepeatedKeys & DPAD_RIGHT) // add 10. { - data[3] += 10; + NUM_QUANTITY_ROLLER += 10; - if(data[3] > gSaveBlock1.pcItems[var].quantity) - data[3] = gSaveBlock1.pcItems[var].quantity; // dont overflow! + if(NUM_QUANTITY_ROLLER > gSaveBlock1.pcItems[trueIndex].quantity) + NUM_QUANTITY_ROLLER = gSaveBlock1.pcItems[trueIndex].quantity; // dont overflow! - sub_80A418C(data[3], STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? + sub_80A418C(NUM_QUANTITY_ROLLER, STR_CONV_MODE_RIGHT_ALIGN, 8, 9, 3); // print quantity? } else if(gMain.newKeys & A_BUTTON) // confirm quantity. { - PlaySE(5); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); - if(!data[6]) - sub_813A6FC(taskId); + if(CURRENT_ITEM_STORAGE_MENU == ITEMPC_MENU_WITHDRAW) + ItemStorage_DoItemWithdraw(taskId); else - sub_813A794(taskId); + ItemStorage_DoItemToss(taskId); } else if(gMain.newKeys & B_BUTTON) // cancel quantity. { - PlaySE(5); + PlaySE(SE_SELECT); MenuZeroFillWindowRect(6, 6, 0xD, 0xB); sub_80F98DC(0); sub_80F98DC(1); - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); // why not use var? - gTasks[taskId].func = sub_813A280; + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); // why not use trueIndex? + gTasks[taskId].func = ItemStorage_ProcessInput; } } -void sub_813A6FC(u8 taskId) +void ItemStorage_DoItemWithdraw(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 trueIndex = PAGE_INDEX + ITEMS_ABOVE_TOP; - if(AddBagItem(gSaveBlock1.pcItems[var].itemId, data[3]) == TRUE) // add item works. + if(AddBagItem(gSaveBlock1.pcItems[trueIndex].itemId, NUM_QUANTITY_ROLLER) == TRUE) // add item works. { - CopyItemName(gSaveBlock1.pcItems[var].itemId, gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, data[3], 0, 3); - sub_813AD58(0xFFFD); - gTasks[taskId].func = sub_813A8F0; + CopyItemName(gSaveBlock1.pcItems[trueIndex].itemId, gStringVar1); + ConvertIntToDecimalStringN(gStringVar2, NUM_QUANTITY_ROLLER, 0, 3); + ItemStorage_PrintItemPcResponse(ITEMPC_WITHDREW_THING); + gTasks[taskId].func = ItemStorage_HandleRemoveItem; } - else // cannot add item. inventory full? + else { - data[3] = 0; - sub_813AD58(0xFFFA); - gTasks[taskId].func = sub_813A984; + NUM_QUANTITY_ROLLER = 0; + ItemStorage_PrintItemPcResponse(ITEMPC_NO_MORE_ROOM); + gTasks[taskId].func = ItemStorage_WaitPressHandleResumeProcessInput; } } -void sub_813A794(u8 taskId) +void ItemStorage_DoItemToss(u8 taskId) { s16 *data = gTasks[taskId].data; - u8 var = data[0] + data[1]; + u8 var = PAGE_INDEX + ITEMS_ABOVE_TOP; if(ItemId_GetImportance(gSaveBlock1.pcItems[var].itemId) == FALSE) { CopyItemName(gSaveBlock1.pcItems[var].itemId, gStringVar1); - ConvertIntToDecimalStringN(gStringVar2, data[3], 0, 3); - sub_813AD58(65528); + ConvertIntToDecimalStringN(gStringVar2, NUM_QUANTITY_ROLLER, 0, 3); + ItemStorage_PrintItemPcResponse(ITEMPC_OKAY_TO_THROW_AWAY); DisplayYesNoMenu(7, 6, 1); sub_80F914C(taskId, &gUnknown_084062E0); } else { - data[3] = 0; - sub_813AD58(65529); - gTasks[taskId].func = sub_813A8F0; + NUM_QUANTITY_ROLLER = 0; + ItemStorage_PrintItemPcResponse(ITEMPC_TOO_IMPORTANT); + gTasks[taskId].func = ItemStorage_HandleRemoveItem; } } -void sub_813A83C(u8 taskId) +void ItemStorage_ResumeInputFromYesToss(u8 taskId) { MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); - sub_813AD58(0xFFFB); - gTasks[taskId].func = sub_813A8F0; + ItemStorage_PrintItemPcResponse(ITEMPC_THREW_AWAY_ITEM); + gTasks[taskId].func = ItemStorage_HandleRemoveItem; } -void sub_813A878(u8 taskId) +void ItemStorage_ResumeInputFromNoToss(u8 taskId) { s16 *data = gTasks[taskId].data; MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); - InitMenu(0, 16, 2, data[4], data[0], 0xD); + InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); sub_80F98DC(0); sub_80F98DC(1); - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); - gTasks[taskId].func = sub_813A280; + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); + gTasks[taskId].func = ItemStorage_ProcessInput; } -void sub_813A8F0(u8 taskId) +void ItemStorage_HandleRemoveItem(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 var; - u8 usedItemSlots; + s16 oldNumItems; - if(gMain.newKeys & 0x1 || gMain.newKeys == 0x2) + if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { - RemovePCItem(data[0] + data[1], data[3]); - var = data[2]; - usedItemSlots = CountUsedPCItemSlots(); - data[2] = usedItemSlots; + RemovePCItem(PAGE_INDEX + ITEMS_ABOVE_TOP, NUM_QUANTITY_ROLLER); + oldNumItems = NUM_ITEMS; + NUM_ITEMS = CountUsedPCItemSlots(); - if((s16)var != usedItemSlots && (s16)var < data[4] + data[1] && data[1] != 0) - data[1]--; + if(oldNumItems != NUM_ITEMS && oldNumItems < NUM_PAGE_ITEMS + ITEMS_ABOVE_TOP && ITEMS_ABOVE_TOP != 0) + ITEMS_ABOVE_TOP--; - sub_813A240(taskId); - sub_813A9EC(taskId); - InitMenu(0, 16, 2, data[4], data[0], 0xD); + ItemStorage_SetItemAndMailCount(taskId); + ItemStorage_HandleResumeProcessInput(taskId); + InitMenu(0, 16, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); } } -void sub_813A984(u8 taskId) +void ItemStorage_WaitPressHandleResumeProcessInput(u8 taskId) { s16 *data = gTasks[taskId].data; - if(gMain.newKeys & 0x1 || gMain.newKeys == 2) + if(gMain.newKeys & A_BUTTON || gMain.newKeys == B_BUTTON) { - sub_813AD58(gSaveBlock1.pcItems[data[1] + data[0]].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[ITEMS_ABOVE_TOP + PAGE_INDEX].itemId); sub_80F98DC(0); sub_80F98DC(1); - gTasks[taskId].func = sub_813A280; + gTasks[taskId].func = ItemStorage_ProcessInput; } } -void sub_813A9EC(u8 taskId) +void ItemStorage_HandleResumeProcessInput(u8 taskId) { MenuZeroFillWindowRect(0x6, 0x6, 0xD, 0xB); sub_80F98DC(0); sub_80F98DC(1); - sub_813AE0C(taskId); - gTasks[taskId].func = sub_813A280; + ItemStorage_DrawBothListAndDescription(taskId); + gTasks[taskId].func = ItemStorage_ProcessInput; } -void sub_813AA30(u8 taskId, u8 arg) +void ItemStorage_DoItemSwap(u8 taskId, bool8 switchModeDisabled) { s16 *data = gTasks[taskId].data; - u8 var = data[1] + data[0]; + u8 trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; - data[9] = 0; + SWITCH_MODE_ACTIVE = FALSE; - if((u8)data[2] > var && (u8)data[8] != var && arg == 0) + if((u8)NUM_ITEMS > trueIndex && (u8)SWAP_ITEM_INDEX != trueIndex && switchModeDisabled == FALSE) { - struct ItemSlot itemSlot = gSaveBlock1.pcItems[data[8]]; // backup the itemSlot before swapping the two. + struct ItemSlot itemSlot = gSaveBlock1.pcItems[SWAP_ITEM_INDEX]; // backup the itemSlot before swapping the two. - gSaveBlock1.pcItems[data[8]] = gSaveBlock1.pcItems[var]; - gSaveBlock1.pcItems[var] = itemSlot; + gSaveBlock1.pcItems[SWAP_ITEM_INDEX] = gSaveBlock1.pcItems[trueIndex]; + gSaveBlock1.pcItems[trueIndex] = itemSlot; return; } - else if(var == data[2]) + else if(trueIndex == NUM_ITEMS) { - sub_813AD58(0xFFFF); + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); } else { - sub_813AD58(gSaveBlock1.pcItems[var].itemId); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); } /* THEORY: This check produces essentially dead code, but it might have been working in an earlier build in which case it allows a programmer to easily duplicate items without the use of a debug menu. + This gets the page index of the swap index for some reason. It is currently unknown what it would have been used + for, but perhaps it was used to increase the quantity of the item without a debug menu. With the removal of a lot of the debug menus close to release, a programmer may have added this to help test things with a low key (such as planting a lot of duplicated berries, which requires this lazy "cheat") without bringing the relevent debug menus back. The commented out line is intentionally left in below to show what it may have looked like. */ - if(data[8] - data[1] > 0) { // this check is arbitrary and used to generate the correct assembly using the subtraction, which is what matters. the 0 check doesn't. - //gSaveBlock1.pcItems[data[8]].quantity += 100; - gSaveBlock1.pcItems[data[8]].quantity += 0; // do not enforce item cap. + if(SWAP_ITEM_INDEX - ITEMS_ABOVE_TOP <= 0) { // this check is arbitrary and used to generate the correct assembly using the subtraction, which is what matters. the 0 check doesn't. + //gSaveBlock1.pcItems[SWAP_ITEM_INDEX].quantity += 100; + gSaveBlock1.pcItems[SWAP_ITEM_INDEX].quantity += 0; // do not enforce item cap. } } -void sub_813AAC4(u16 arg1, enum StringConvertMode arg2, u8 arg3, u8 arg4, int arg5) +void ItemStorage_DrawItemQuantity(u16 arg1, enum StringConvertMode arg2, u8 arg3, u8 arg4, int isSwapSelected) { sub_80A4164(gStringVar1, arg1, arg2, arg4); - if(arg5) + if(isSwapSelected != FALSE) MenuPrint(gUnknown_0840632A, 0x1A, arg3); else MenuPrint(gUnknown_08406327, 0x1A, arg3); } -void sub_813AB10(u8 var) +void ItemStorage_DrawItemVoidQuantity(u8 var) { MenuPrint(gUnknown_08406330, 0x19, var); } -void sub_813AB28(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawItemName(struct ItemSlot *itemSlot, u8 var, int isSwapSelected) { CopyItemName(itemSlot->itemId, gStringVar1); - if(var2) + if(isSwapSelected != FALSE) MenuPrint(gUnknown_0840631E, 16, var); else MenuPrint(gUnknown_08406318, 16, var); } -void sub_813AB64(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawNormalItemEntry(struct ItemSlot *itemSlot, u8 var, int var2) { - sub_813AB28(itemSlot, var, var2); - sub_813AAC4(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); + ItemStorage_DrawItemName(itemSlot, var, var2); + ItemStorage_DrawItemQuantity(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); } -void sub_813AB90(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawKeyItemEntry(struct ItemSlot *itemSlot, u8 var, int var2) { - sub_813AB28(itemSlot, var, var2); - sub_813AB10(var); + ItemStorage_DrawItemName(itemSlot, var, var2); + ItemStorage_DrawItemVoidQuantity(var); } -void sub_813ABAC(struct ItemSlot *itemSlot, u8 var, int var2) +void ItemStorage_DrawTMHMEntry(struct ItemSlot *itemSlot, u8 var, int var2) { - sub_813AB28(itemSlot, var, var2); + ItemStorage_DrawItemName(itemSlot, var, var2); if(itemSlot->itemId < ITEM_HM01) - sub_813AAC4(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); + ItemStorage_DrawItemQuantity(itemSlot->quantity, STR_CONV_MODE_RIGHT_ALIGN, var, 3, var2); else - sub_813AB10(var); // key items do not have a quantity. + ItemStorage_DrawItemVoidQuantity(var); // HMs do not have a quantity. } -void sub_813ABE8(u8 taskId) +void ItemStorage_DrawItemList(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 i; int tempArg; - u16 j = 0; + u16 i; + u16 yCoord = 0; // r5 is i and is unsigned 16-bit. - for(i = data[1]; i < data[1] + data[4]; i++) + for(i = ITEMS_ABOVE_TOP; i < ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS; i++) { - j = (i - data[1]) * 2; + yCoord = (i - ITEMS_ABOVE_TOP) * 2; - if(i != data[2]) + if(i != NUM_ITEMS) { tempArg = 0; - if(data[9] != 0 && i == data[8]) + if(SWITCH_MODE_ACTIVE != FALSE && i == SWAP_ITEM_INDEX) tempArg = 1; switch(GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1) { - case 0: - case 1: - case 3: - sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; - case 4: - sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; - case 2: - sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg); - break; + case 0: + case 1: + case 3: + ItemStorage_DrawNormalItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); + break; + case 4: + ItemStorage_DrawKeyItemEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); + break; + case 2: + ItemStorage_DrawTMHMEntry((struct ItemSlot *)&gSaveBlock1.pcItems[i], yCoord + 2, tempArg); + break; } } else @@ -799,24 +873,459 @@ void sub_813ABE8(u8 taskId) } beforeLabel: - if(i - data[1] < 8) - MenuFillWindowRectWithBlankTile(16, j + 4, 0x1C, 0x12); + if(i - ITEMS_ABOVE_TOP < 8) + MenuFillWindowRectWithBlankTile(16, yCoord + 4, 0x1C, 0x12); - switch(data[1]) + switch(ITEMS_ABOVE_TOP) { default: CreateVerticalScrollIndicators(0, 0xB8, 8); break; weirdCase: - sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1); + sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (yCoord + 2) * 8, 0x68, 1); goto beforeLabel; case 0: DestroyVerticalScrollIndicator(0); break; } - if(data[1] + data[4] <= data[2]) + if(ITEMS_ABOVE_TOP + NUM_PAGE_ITEMS <= NUM_ITEMS) CreateVerticalScrollIndicators(1, 0xB8, 0x98); else DestroyVerticalScrollIndicator(1); } + +void ItemStorage_PrintItemPcResponse(u16 itemId) +{ + u8 *string; + + switch(itemId) + { + case ITEMPC_GO_BACK_TO_PREV: + string = (u8 *)gMenuText_GoBackToPrev; + break; + case ITEMPC_HOW_MANY_TO_WITHDRAW: + string = (u8 *)gOtherText_HowManyToWithdraw; + break; + case ITEMPC_WITHDREW_THING: + string = (u8 *)gOtherText_WithdrewThing; + break; + case ITEMPC_HOW_MANY_TO_TOSS: + string = (u8 *)gOtherText_HowManyToToss; + break; + case ITEMPC_THREW_AWAY_ITEM: + string = (u8 *)gOtherText_ThrewAwayItem; + break; + case ITEMPC_NO_MORE_ROOM: + string = (u8 *)gOtherText_NoMoreRoom; + break; + case ITEMPC_TOO_IMPORTANT: + string = (u8 *)gOtherText_TooImportant; + break; + case ITEMPC_OKAY_TO_THROW_AWAY: + string = (u8 *)gOtherText_OkayToThrowAwayPrompt; + break; + case ITEMPC_SWITCH_WHICH_ITEM: + string = (u8 *)gOtherText_SwitchWhichItem; + break; + default: + string = ItemId_GetDescription(itemId); + break; + } + + sub_8072AB0(string, 8, 0x68, 0x68, 0x30, 1); +} + +void ItemStorage_DrawBothListAndDescription(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + s16 trueIndex = ITEMS_ABOVE_TOP + PAGE_INDEX; + + ItemStorage_DrawItemList(taskId); + + if(SWITCH_MODE_ACTIVE == FALSE) + { + if(trueIndex == NUM_ITEMS) + ItemStorage_PrintItemPcResponse(ITEMPC_GO_BACK_TO_PREV); + else + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[trueIndex].itemId); + } +} + +void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var) +{ + s16 *data = gTasks[taskId].data; + + sub_80F944C(); + LoadScrollIndicatorPalette(); + ItemStorage_LoadPalette(); + MenuDrawTextWindow(0xF, 0, 0x1D, 0x13); + MenuDrawTextWindow(0, 0xC, 0xE, 0x13); + MenuDrawTextWindow(0, 0, 0xB, 3); + ItemStorage_PrintItemPcResponse(gSaveBlock1.pcItems[0].itemId); + MenuPrint(gPCText_ItemPCOptionsText[var].text, 1, 1); + ItemStorage_DrawItemList(taskId); + InitMenu(0, 0x10, 2, NUM_PAGE_ITEMS, PAGE_INDEX, 0xD); +} + +void ItemStorage_LoadPalette(void) +{ + u16 arr[3]; + + memcpy(arr, gUnknown_08406334, sizeof(arr)); + LoadPalette(&arr[2], 0xDF, 2); + LoadPalette(&arr[1], 0xD1, 2); + LoadPalette(&arr[0], 0xD8, 2); +} + +u8 GetMailboxMailCount(void) +{ + u8 i, j; + + for(i = 0, j = 6; j < 16; j++) + if(gSaveBlock1.mail[j].itemId != 0) + i++; + + return i; +} + +void Mailbox_UpdateMailList(void) +{ + struct MailStruct mailBuffer; + u8 i, j; + + for (i=6; i<15; i++) + { + for (j=i+1; j<16; j++) + { + if (gSaveBlock1.mail[i].itemId == 0) + { + mailBuffer = gSaveBlock1.mail[i]; + gSaveBlock1.mail[i] = gSaveBlock1.mail[j]; + gSaveBlock1.mail[j] = mailBuffer; + } + } + } +} + +// WWHHHHHYYYYYYYY SOMEBODY PLEASE FIX THIS +void Mailbox_DrawMailList(u8 taskId) // taskId is unused +{ + u16 yCoord = 0; + u16 i = gMailboxInfo.itemsAbove; + register struct MailboxStruct *tempMailbox asm("r1") = &gMailboxInfo; + register struct MailboxStruct *mailbox asm("r6"); + + if(i < i + tempMailbox->pageItems) + { + mailbox = tempMailbox; + goto forJump; + for(; i < mailbox->itemsAbove + mailbox->pageItems; i++) + { + forJump: + yCoord = (i - mailbox->itemsAbove) * 2; + MenuFillWindowRectWithBlankTile(0x15, yCoord + 2, 0x1C, yCoord + 3); + + if(i != mailbox->count) + { + StringCopy(gStringVar1, (u8 *)gSaveBlock1.mail[i + 6].playerName); + SanitizeNameString(gStringVar1); + MenuPrint(gStringVar1, 0x15, yCoord + 2); + } + else + { + goto weirdCase; // again, what??? + } + } + } + +beforeLabel: + if(i - gMailboxInfo.itemsAbove != 8) + MenuFillWindowRectWithBlankTile(0x15, yCoord + 4, 0x1C, 0x12); + + switch(gMailboxInfo.itemsAbove) + { + default: + CreateVerticalScrollIndicators(0, 0xC8, 8); + break; +weirdCase: + MenuPrint(gOtherText_CancelNoTerminator, 0x15, yCoord + 2); + goto beforeLabel; + case 0: + DestroyVerticalScrollIndicator(0); + break; + } + + if(gMailboxInfo.itemsAbove + gMailboxInfo.pageItems <= gMailboxInfo.count) + CreateVerticalScrollIndicators(1, 0xC8, 0x98); + else + DestroyVerticalScrollIndicator(1); +} + +void Mailbox_DrawMailboxMenu(u8 taskId) +{ + sub_80F944C(); + LoadScrollIndicatorPalette(); + MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + MenuDrawTextWindow(0, 0, 0x8, 0x3); + MenuPrint(gPCText_Mailbox, 1, 1); + MenuDrawTextWindow(0x14, 0, 0x1D, 0x13); + Mailbox_DrawMailList(taskId); + InitMenu(0, 0x15, 2, gMailboxInfo.pageItems, gMailboxInfo.cursorPos, 8); +} + +// Mailbox_ProcessInput +void Mailbox_ProcessInput(u8 taskId) +{ + if(!gPaletteFade.active) + { + if(gMain.newAndRepeatedKeys & DPAD_UP) + { + if(gMailboxInfo.cursorPos != 0) + { + PlaySE(5); + gMailboxInfo.cursorPos = MoveMenuCursor(-1); + } + else if(gMailboxInfo.itemsAbove != 0) + { + PlaySE(5); + gMailboxInfo.itemsAbove--; + Mailbox_DrawMailList(taskId); + } + } + else if(gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if(gMailboxInfo.cursorPos != gMailboxInfo.pageItems - 1) + { + PlaySE(5); + gMailboxInfo.cursorPos = MoveMenuCursor(1); + } + else if(gMailboxInfo.itemsAbove + gMailboxInfo.cursorPos != gMailboxInfo.count) + { + PlaySE(5); + gMailboxInfo.itemsAbove++; + Mailbox_DrawMailList(taskId); + } + } + else if(gMain.newKeys & A_BUTTON) + { + HandleDestroyMenuCursors(); + PlaySE(5); + + if(gMailboxInfo.itemsAbove + gMailboxInfo.cursorPos == gMailboxInfo.count) + { + sub_813B320(taskId); + } + else + { + sub_813B27C(); + gTasks[taskId].func = sub_813B294; + } + } + else if(gMain.newKeys & B_BUTTON) + { + HandleDestroyMenuCursors(); + PlaySE(5); + sub_813B320(taskId); + } + } +} + +void sub_813B27C(void) +{ + BuyMenuFreeMemory(); + DestroyVerticalScrollIndicator(0); + DestroyVerticalScrollIndicator(1); +} + +void sub_813B294(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + StringCopy(gStringVar1, gSaveBlock1.mail[gMailboxInfo.itemsAbove + 6 + gMailboxInfo.cursorPos].playerName); + SanitizeNameString(gStringVar1); + StringExpandPlaceholders(gStringVar4, gOtherText_WhatWillYouDoMail); + DisplayItemMessageOnField(taskId, gStringVar4, sub_813B348, 0); +} + +void sub_813B300(u8 taskId) +{ + MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + ReshowPlayerPC(taskId); +} + +void sub_813B320(u8 taskId) +{ + sub_813B27C(); + gTasks[taskId].func = sub_813B300; +} + +void sub_813B348(u8 taskId) +{ + MenuDrawTextWindow(0, 0, 0xC, 0x9); + PrintMenuItems(1, 1, 4, gUnknown_084062F8); + InitMenu(0, 1, 1, 4, 0, 0xB); + gTasks[taskId].func = sub_813B3A0; +} + +void sub_813B3A0(u8 taskId) +{ + if(gMain.newAndRepeatedKeys & DPAD_UP) + { + PlaySE(5); + MoveMenuCursor(-1); + } + else if(gMain.newAndRepeatedKeys & DPAD_DOWN) + { + PlaySE(5); + MoveMenuCursor(1); + } + else if(gMain.newKeys & A_BUTTON) + { + PlaySE(5); + gUnknown_084062F8[GetMenuCursorPos()].func(taskId); + } + else if(gMain.newKeys & B_BUTTON) + { + PlaySE(5); + Mailbox_Cancel(taskId); + } +} + +void Mailbox_Read(u8 taskId) +{ + fade_screen(1, 0); + gTasks[taskId].func = sub_813B454; +} + +void sub_813B454(u8 taskId) +{ + if(!gPaletteFade.active) + { + HandleReadMail(&gSaveBlock1.mail[gMailboxInfo.itemsAbove + 6 + gMailboxInfo.cursorPos], sub_813B4F0, 1); + DestroyTask(taskId); + } +} + +void sub_813B4A0(u8 taskId) +{ + if(sub_807D770() == TRUE) + gTasks[taskId].func = Mailbox_ProcessInput; +} + +void sub_813B4D0(void) +{ + Mailbox_DrawMailboxMenu(CreateTask(sub_813B4A0, 0)); + pal_fill_black(); +} + +void sub_813B4F0(void) +{ + gUnknown_0300485C = sub_813B4D0; + SetMainCallback2(c2_exit_to_overworld_2_switch); +} + +void Mailbox_MoveToBag(u8 taskId) +{ + HandleDestroyMenuCursors(); + StringCopy(gStringVar1, gOtherText_MoveToBag); + MenuPrint(gUnknown_0840633A, 1, 3); + DisplayItemMessageOnField(taskId, gOtherText_MessageWillBeLost, sub_813B554, 0); +} + +void sub_813B554(u8 taskId) +{ + DisplayYesNoMenu(0x14, 0x8, 0x1); + sub_80F914C(taskId, &gUnknown_084062E8); +} + +void sub_813B578(u8 taskId) +{ + struct MailStruct *mail = &gSaveBlock1.mail[gMailboxInfo.itemsAbove + 6 + gMailboxInfo.cursorPos]; + + MenuZeroFillWindowRect(0x14, 8, 0x1A, 0xD); + + if(AddBagItem(mail->itemId, 1) == FALSE) + { + DisplayItemMessageOnField(taskId, gOtherText_BagIsFull, sub_813B758, 0); + } + else + { + DisplayItemMessageOnField(taskId, gOtherText_MailWasReturned, sub_813B758, 0); + ClearMailStruct(mail); + Mailbox_UpdateMailList(); + + gMailboxInfo.count--; + + if(gMailboxInfo.count < gMailboxInfo.pageItems + gMailboxInfo.itemsAbove && gMailboxInfo.itemsAbove != 0) + gMailboxInfo.itemsAbove--; + + ItemStorage_SetItemAndMailCount(taskId); + } +} + +void sub_813B610(u8 taskId) +{ + MenuZeroFillWindowRect(0x14, 0x8, 0x1A, 0xD); + sub_813B758(taskId); +} + +void Mailbox_Give(u8 taskId) +{ + if(CalculatePlayerPartyCount() == 0) + sub_813B718(taskId); + else + { + fade_screen(1, 0); + gTasks[taskId].func = sub_813B66C; + } +} + +void sub_813B66C(u8 taskId) +{ + if(!gPaletteFade.active) + { + SetMainCallback2(sub_808B020); + gUnknown_02038561 = 3; + DestroyTask(taskId); + } +} + +void sub_813B6A4(void) +{ + u8 taskId = CreateTask(sub_813B4A0, 0); + u8 oldCount = gMailboxInfo.count; + + gMailboxInfo.count = GetMailboxMailCount(); + Mailbox_UpdateMailList(); + + if(oldCount != gMailboxInfo.count && gMailboxInfo.count < gMailboxInfo.pageItems + gMailboxInfo.itemsAbove && gMailboxInfo.itemsAbove != 0) // did the count update? + gMailboxInfo.itemsAbove--; + + ItemStorage_SetItemAndMailCount(taskId); + Mailbox_DrawMailboxMenu(taskId); + pal_fill_black(); +} + +void sub_813B6F8(void) +{ + gUnknown_0300485C = sub_813B6A4; + SetMainCallback2(c2_exit_to_overworld_2_switch); +} + +void sub_813B718(u8 taskId) +{ + DisplayItemMessageOnField(taskId, gOtherText_NoPokemon, sub_813B758, 0); +} + +void Mailbox_Cancel(u8 taskId) +{ + HandleDestroyMenuCursors(); + MenuZeroFillWindowRect(0, 0, 0xC, 0x9); + sub_813B758(taskId); +} + +void sub_813B758(u8 taskId) +{ + Mailbox_DrawMailboxMenu(taskId); + gTasks[taskId].func = Mailbox_ProcessInput; +} diff --git a/src/pokedex.c b/src/pokedex.c index 97bac3390..3d8b152ae 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -849,8 +849,8 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = HoennToNationalOrder(i + 1); gPokedexView->unk0[i].dexNum = vars[2]; - gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk0[i].seen = GetNationalPokedexFlag(vars[2], 0); + gPokedexView->unk0[i].owned = GetNationalPokedexFlag(vars[2], 1); if (gPokedexView->unk0[i].seen) gPokedexView->unk60C = i + 1; } @@ -864,14 +864,14 @@ void SortPokedex(u8 dexMode, u8 sortMode) for (i = 0; i < vars[0]; i++) { vars[2] = i + 1; - if (sub_8090D90(vars[2], 0)) + if (GetNationalPokedexFlag(vars[2], 0)) r10 = 1; if (r10) { asm(""); //Needed to match for some reason gPokedexView->unk0[r5].dexNum = vars[2]; - gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0); - gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk0[r5].seen = GetNationalPokedexFlag(vars[2], 0); + gPokedexView->unk0[r5].owned = GetNationalPokedexFlag(vars[2], 1); if (gPokedexView->unk0[r5].seen) gPokedexView->unk60C = r5 + 1; r5++; @@ -885,11 +885,11 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Alphabetical[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 0)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; - gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1); + gPokedexView->unk0[gPokedexView->unk60C].owned = GetNationalPokedexFlag(vars[2], 1); gPokedexView->unk60C++; } } @@ -899,7 +899,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; @@ -913,7 +913,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Weight[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; @@ -927,7 +927,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; @@ -941,7 +941,7 @@ void SortPokedex(u8 dexMode, u8 sortMode) { vars[2] = gPokedexOrder_Height[i]; - if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1)) + if (NationalToHoennOrder(vars[2]) <= vars[0] && GetNationalPokedexFlag(vars[2], 1)) { gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2]; gPokedexView->unk0[gPokedexView->unk60C].seen = 1; diff --git a/src/scrcmd.c b/src/scrcmd.c index 33867b58a..f2b5090af 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -61,7 +61,6 @@ extern u8 *gStdScripts[]; extern u8 *gStdScripts_End[]; extern u8 * const gUnknown_083CE048[]; -extern struct Decoration gDecorations[]; // This is defined in here so the optimizer can't see its value when compiling // script.c. diff --git a/src/script_menu.c b/src/script_menu.c index 50941f9ac..d6e328eb4 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -684,7 +684,7 @@ void sub_80B52B4(u8 taskId) { gScriptResult = var; } - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); DestroyTask(taskId); EnableBothScriptContexts(); @@ -847,7 +847,7 @@ void sub_80B5684(u8 taskId) { gScriptResult = var; } - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]); DestroyTask(taskId); EnableBothScriptContexts(); diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c index d111cf8f6..abc4dbc9e 100644 --- a/src/script_pokemon_util_80C4BF0.c +++ b/src/script_pokemon_util_80C4BF0.c @@ -560,16 +560,16 @@ u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5) nationalSpecies = SpeciesToNationalPokedexNum(species); // nested if check to fool compiler - if(sentToPc < 2) + switch(sentToPc) { - if(sentToPc >= 0) - { - // set both the seen and caught flags - sub_8090D90(nationalSpecies, 2); - sub_8090D90(nationalSpecies, 3); - } + case 0: + case 1: + GetNationalPokedexFlag(nationalSpecies, 2); + GetNationalPokedexFlag(nationalSpecies, 3); + return sentToPc; + default: + return sentToPc; } - return sentToPc; } u8 ScriptGiveEgg(u16 value) diff --git a/src/secret_base.c b/src/secret_base.c index c210a55d2..aae3853f9 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -12,10 +12,11 @@ #include "map_constants.h" #include "task.h" #include "palette.h" -#include "decoration.h" #include "field_weather.h" #include "metatile_behavior.h" #include "pokemon.h" +#include "script.h" +#include "decoration.h" extern u8 gUnknown_020387DC; extern u16 gSpecialVar_0x8004; @@ -29,8 +30,6 @@ extern const struct u16 unk_083D1358_1; } gUnknown_083D1358[7]; extern const u8 gUnknown_083D1374[4 * 16]; -extern void *gUnknown_0300485C; -extern const u8 sub_807D770(void); extern const u8 gUnknown_083D13EC[12]; extern const u8 sub_80BCCA4(u8); extern u8 gUnknown_081A2E14[]; @@ -393,84 +392,84 @@ void sub_80BBCCC(u8 flagIn) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ - mov r7, r8\n\ - push {r7}\n\ - sub sp, 0x4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - mov r8, r0\n\ - bl CurrentMapIsSecretBase\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - beq _080BBDBC\n\ - ldr r0, _080BBD70 @ =0x00004054\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - movs r1, 0\n\ - mov r0, sp\n\ - strh r1, [r0]\n\ - ldr r6, _080BBD74 @ =gSaveBlock1\n\ - mov r4, sp\n\ - ldr r0, _080BBD78 @ =0x00001a2a\n\ - adds r7, r6, r0\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080BBDBC\n\ + ldr r0, _080BBD70 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + movs r1, 0\n\ + mov r0, sp\n\ + strh r1, [r0]\n\ + ldr r6, _080BBD74 @ =gSaveBlock1\n\ + mov r4, sp\n\ + ldr r0, _080BBD78 @ =0x00001a2a\n\ + adds r7, r6, r0\n\ _080BBCFC:\n\ - lsls r0, r5, 2\n\ - adds r0, r5\n\ - lsls r0, 5\n\ - ldrh r1, [r4]\n\ - adds r2, r0, r1\n\ - ldr r1, _080BBD7C @ =0x00001a1a\n\ - adds r0, r6, r1\n\ - adds r1, r2, r0\n\ - ldrb r0, [r1]\n\ - subs r0, 0x1\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x77\n\ - bhi _080BBD3A\n\ - ldr r0, _080BBD80 @ =gDecorations\n\ - ldrb r3, [r1]\n\ - lsls r1, r3, 5\n\ - adds r1, r0\n\ - ldrb r0, [r1, 0x11]\n\ - cmp r0, 0x4\n\ - beq _080BBD3A\n\ - adds r0, r2, r7\n\ - ldrb r2, [r0]\n\ - lsrs r0, r2, 4\n\ - adds r0, 0x7\n\ - movs r1, 0xF\n\ - ands r1, r2\n\ - adds r1, 0x7\n\ - adds r2, r3, 0\n\ - bl sub_80FF394\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 5\n\ + ldrh r1, [r4]\n\ + adds r2, r0, r1\n\ + ldr r1, _080BBD7C @ =0x00001a1a\n\ + adds r0, r6, r1\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x77\n\ + bhi _080BBD3A\n\ + ldr r0, _080BBD80 @ =gDecorations\n\ + ldrb r3, [r1]\n\ + lsls r1, r3, 5\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBD3A\n\ + adds r0, r2, r7\n\ + ldrb r2, [r0]\n\ + lsrs r0, r2, 4\n\ + adds r0, 0x7\n\ + movs r1, 0xF\n\ + ands r1, r2\n\ + adds r1, 0x7\n\ + adds r2, r3, 0\n\ + bl sub_80FF394\n\ _080BBD3A:\n\ - ldrh r0, [r4]\n\ - adds r0, 0x1\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - strh r0, [r4]\n\ - cmp r0, 0xF\n\ - bls _080BBCFC\n\ - cmp r5, 0\n\ - beq _080BBD88\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - movs r2, 0x88\n\ - lsls r2, 2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl sub_80BB764\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - adds r0, 0x7\n\ - ldrh r1, [r4]\n\ - adds r1, 0x7\n\ - ldr r2, _080BBD84 @ =0x00000e21\n\ - bl MapGridSetMetatileIdAt\n\ - b _080BBDBC\n\ - .align 2, 0\n\ + ldrh r0, [r4]\n\ + adds r0, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + strh r0, [r4]\n\ + cmp r0, 0xF\n\ + bls _080BBCFC\n\ + cmp r5, 0\n\ + beq _080BBD88\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBD84 @ =0x00000e21\n\ + bl MapGridSetMetatileIdAt\n\ + b _080BBDBC\n\ + .align 2, 0\n\ _080BBD70: .4byte 0x00004054\n\ _080BBD74: .4byte gSaveBlock1\n\ _080BBD78: .4byte 0x00001a2a\n\ @@ -478,37 +477,37 @@ _080BBD7C: .4byte 0x00001a1a\n\ _080BBD80: .4byte gDecorations\n\ _080BBD84: .4byte 0x00000e21\n\ _080BBD88:\n\ - mov r0, r8\n\ - cmp r0, 0x1\n\ - bne _080BBDBC\n\ - ldr r0, _080BBDC8 @ =0x00004089\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - bne _080BBDBC\n\ - mov r4, sp\n\ - adds r4, 0x2\n\ - movs r2, 0x88\n\ - lsls r2, 2\n\ - mov r0, sp\n\ - adds r1, r4, 0\n\ - bl sub_80BB764\n\ - mov r0, sp\n\ - ldrh r0, [r0]\n\ - adds r0, 0x7\n\ - ldrh r1, [r4]\n\ - adds r1, 0x7\n\ - ldr r2, _080BBDCC @ =0x00000e0a\n\ - bl MapGridSetMetatileIdAt\n\ + mov r0, r8\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + ldr r0, _080BBDC8 @ =0x00004089\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBDCC @ =0x00000e0a\n\ + bl MapGridSetMetatileIdAt\n\ _080BBDBC:\n\ - add sp, 0x4\n\ - pop {r3}\n\ - mov r8, r3\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + add sp, 0x4\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080BBDC8: .4byte 0x00004089\n\ _080BBDCC: .4byte 0x00000e0a\n\ .syntax divided\n"); @@ -518,220 +517,220 @@ __attribute__((naked)) void sub_80BBDD0(void) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0x14\n\ - ldr r0, _080BBE00 @ =0x00004054\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - bl CurrentMapIsSecretBase\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080BBE08\n\ - ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\ - str r0, [sp, 0x4]\n\ - adds r0, 0xC\n\ - str r0, [sp, 0x8]\n\ - movs r1, 0xC\n\ - str r1, [sp, 0xC]\n\ - b _080BBE1E\n\ - .align 2, 0\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + ldr r0, _080BBE00 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080BBE08\n\ + ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\ + str r0, [sp, 0x4]\n\ + adds r0, 0xC\n\ + str r0, [sp, 0x8]\n\ + movs r1, 0xC\n\ + str r1, [sp, 0xC]\n\ + b _080BBE1E\n\ + .align 2, 0\n\ _080BBE00: .4byte 0x00004054\n\ _080BBE04: .4byte gSaveBlock1 + 0x2688\n\ _080BBE08:\n\ - lsls r1, r4, 2\n\ - adds r1, r4\n\ - lsls r1, 5\n\ - ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\ - adds r2, r1, r0\n\ - str r2, [sp, 0x4]\n\ - adds r0, 0x10\n\ - adds r1, r0\n\ - str r1, [sp, 0x8]\n\ - movs r3, 0x10\n\ - str r3, [sp, 0xC]\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 5\n\ + ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\ + adds r2, r1, r0\n\ + str r2, [sp, 0x4]\n\ + adds r0, 0x10\n\ + adds r1, r0\n\ + str r1, [sp, 0x8]\n\ + movs r3, 0x10\n\ + str r3, [sp, 0xC]\n\ _080BBE1E:\n\ - movs r6, 0\n\ - ldr r4, [sp, 0xC]\n\ - cmp r6, r4\n\ - bcc _080BBE28\n\ - b _080BBF6C\n\ + movs r6, 0\n\ + ldr r4, [sp, 0xC]\n\ + cmp r6, r4\n\ + bcc _080BBE28\n\ + b _080BBF6C\n\ _080BBE28:\n\ - ldr r5, _080BBF80 @ =gSaveBlock1\n\ - mov r10, r5\n\ + ldr r5, _080BBF80 @ =gSaveBlock1\n\ + mov r10, r5\n\ _080BBE2C:\n\ - ldr r1, [sp, 0x4]\n\ - adds r0, r1, r6\n\ - ldrb r1, [r0]\n\ - mov r9, r0\n\ - adds r2, r6, 0x1\n\ - str r2, [sp, 0x10]\n\ - cmp r1, 0\n\ - bne _080BBE3E\n\ - b _080BBF5E\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1, r6\n\ + ldrb r1, [r0]\n\ + mov r9, r0\n\ + adds r2, r6, 0x1\n\ + str r2, [sp, 0x10]\n\ + cmp r1, 0\n\ + bne _080BBE3E\n\ + b _080BBF5E\n\ _080BBE3E:\n\ - ldrb r0, [r0]\n\ - lsls r0, 5\n\ - ldr r3, _080BBF84 @ =gDecorations\n\ - adds r0, r3\n\ - ldrb r0, [r0, 0x11]\n\ - cmp r0, 0x4\n\ - beq _080BBE4E\n\ - b _080BBF5E\n\ + ldrb r0, [r0]\n\ + lsls r0, 5\n\ + ldr r3, _080BBF84 @ =gDecorations\n\ + adds r0, r3\n\ + ldrb r0, [r0, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBE4E\n\ + b _080BBF5E\n\ _080BBE4E:\n\ - movs r5, 0\n\ - ldr r0, _080BBF88 @ =gMapHeader\n\ - ldr r2, [r0, 0x4]\n\ - ldrb r3, [r2]\n\ - mov r8, r0\n\ - cmp r5, r3\n\ - bcs _080BBE8E\n\ - ldr r0, [r2, 0x4]\n\ - ldrh r1, [r0, 0x14]\n\ - ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r4]\n\ - adds r0, 0xAE\n\ - adds r7, r4, 0\n\ - cmp r1, r0\n\ - beq _080BBE8E\n\ - adds r4, r2, 0\n\ - adds r2, r3, 0\n\ + movs r5, 0\n\ + ldr r0, _080BBF88 @ =gMapHeader\n\ + ldr r2, [r0, 0x4]\n\ + ldrb r3, [r2]\n\ + mov r8, r0\n\ + cmp r5, r3\n\ + bcs _080BBE8E\n\ + ldr r0, [r2, 0x4]\n\ + ldrh r1, [r0, 0x14]\n\ + ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r4]\n\ + adds r0, 0xAE\n\ + adds r7, r4, 0\n\ + cmp r1, r0\n\ + beq _080BBE8E\n\ + adds r4, r2, 0\n\ + adds r2, r3, 0\n\ _080BBE70:\n\ - adds r0, r5, 0x1\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ - cmp r5, r2\n\ - bcs _080BBE8E\n\ - ldr r1, [r4, 0x4]\n\ - lsls r0, r5, 1\n\ - adds r0, r5\n\ - lsls r0, 3\n\ - adds r0, r1\n\ - ldrh r1, [r0, 0x14]\n\ - ldrh r0, [r7]\n\ - adds r0, 0xAE\n\ - cmp r1, r0\n\ - bne _080BBE70\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, r2\n\ + bcs _080BBE8E\n\ + ldr r1, [r4, 0x4]\n\ + lsls r0, r5, 1\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrh r1, [r0, 0x14]\n\ + ldrh r0, [r7]\n\ + adds r0, 0xAE\n\ + cmp r1, r0\n\ + bne _080BBE70\n\ _080BBE8E:\n\ - mov r1, r8\n\ - ldr r0, [r1, 0x4]\n\ - ldrb r0, [r0]\n\ - cmp r5, r0\n\ - beq _080BBF5E\n\ - ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\ - ldr r2, [sp, 0x8]\n\ - adds r1, r2, r6\n\ - ldrb r0, [r1]\n\ - lsrs r0, 4\n\ - strh r0, [r7]\n\ - ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\ - ldrb r1, [r1]\n\ - movs r0, 0xF\n\ - ands r0, r1\n\ - strh r0, [r6]\n\ - ldrh r0, [r7]\n\ - adds r0, 0x7\n\ - ldrh r1, [r6]\n\ - adds r1, 0x7\n\ - bl MapGridGetMetatileBehaviorAt\n\ - lsls r0, 24\n\ - lsrs r4, r0, 24\n\ - adds r0, r4, 0\n\ - bl sub_80572D8\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080BBEDA\n\ - adds r0, r4, 0\n\ - bl sub_80572EC\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - bne _080BBF5E\n\ + mov r1, r8\n\ + ldr r0, [r1, 0x4]\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + beq _080BBF5E\n\ + ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\ + ldr r2, [sp, 0x8]\n\ + adds r1, r2, r6\n\ + ldrb r0, [r1]\n\ + lsrs r0, 4\n\ + strh r0, [r7]\n\ + ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + strh r0, [r6]\n\ + ldrh r0, [r7]\n\ + adds r0, 0x7\n\ + ldrh r1, [r6]\n\ + adds r1, 0x7\n\ + bl MapGridGetMetatileBehaviorAt\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + adds r0, r4, 0\n\ + bl sub_80572D8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BBEDA\n\ + adds r0, r4, 0\n\ + bl sub_80572EC\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080BBF5E\n\ _080BBEDA:\n\ - mov r3, r8\n\ - ldr r0, [r3, 0x4]\n\ - ldr r1, [r0, 0x4]\n\ - lsls r4, r5, 1\n\ - adds r4, r5\n\ - lsls r4, 3\n\ - adds r1, r4, r1\n\ - ldr r5, _080BBF98 @ =0x00003f20\n\ - adds r0, r5, 0\n\ - ldrb r1, [r1, 0x1]\n\ - adds r0, r1\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - strh r0, [r1]\n\ - ldrh r0, [r1]\n\ - mov r2, r9\n\ - ldrb r1, [r2]\n\ - lsls r1, 5\n\ - ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\ - adds r1, r3\n\ - ldr r1, [r1]\n\ - ldrh r1, [r1]\n\ - bl VarSet\n\ - mov r5, r8\n\ - ldr r0, [r5, 0x4]\n\ - ldr r0, [r0, 0x4]\n\ - adds r4, r0\n\ - ldrb r0, [r4]\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - strh r0, [r1]\n\ - ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r2]\n\ - adds r0, 0xAE\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - bl FlagReset\n\ - ldr r3, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r3]\n\ - mov r4, r10\n\ - ldrb r1, [r4, 0x5]\n\ - ldrb r2, [r4, 0x4]\n\ - bl show_sprite\n\ - ldr r5, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r5]\n\ - ldrb r1, [r4, 0x5]\n\ - ldrb r2, [r4, 0x4]\n\ - movs r4, 0\n\ - ldrsh r3, [r7, r4]\n\ - movs r5, 0\n\ - ldrsh r4, [r6, r5]\n\ - str r4, [sp]\n\ - bl sub_805C0F8\n\ - ldr r1, _080BBF9C @ =gScriptResult\n\ - ldrb r0, [r1]\n\ - mov r2, r10\n\ - ldrb r1, [r2, 0x5]\n\ - ldrb r2, [r2, 0x4]\n\ - bl sub_805C78C\n\ - ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\ - ldrh r0, [r3]\n\ - adds r0, 0x1\n\ - strh r0, [r3]\n\ + mov r3, r8\n\ + ldr r0, [r3, 0x4]\n\ + ldr r1, [r0, 0x4]\n\ + lsls r4, r5, 1\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r1, r4, r1\n\ + ldr r5, _080BBF98 @ =0x00003f20\n\ + adds r0, r5, 0\n\ + ldrb r1, [r1, 0x1]\n\ + adds r0, r1\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldrh r0, [r1]\n\ + mov r2, r9\n\ + ldrb r1, [r2]\n\ + lsls r1, 5\n\ + ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\ + adds r1, r3\n\ + ldr r1, [r1]\n\ + ldrh r1, [r1]\n\ + bl VarSet\n\ + mov r5, r8\n\ + ldr r0, [r5, 0x4]\n\ + ldr r0, [r0, 0x4]\n\ + adds r4, r0\n\ + ldrb r0, [r4]\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r2]\n\ + adds r0, 0xAE\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl FlagReset\n\ + ldr r3, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r3]\n\ + mov r4, r10\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + bl show_sprite\n\ + ldr r5, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + movs r4, 0\n\ + ldrsh r3, [r7, r4]\n\ + movs r5, 0\n\ + ldrsh r4, [r6, r5]\n\ + str r4, [sp]\n\ + bl sub_805C0F8\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r1]\n\ + mov r2, r10\n\ + ldrb r1, [r2, 0x5]\n\ + ldrb r2, [r2, 0x4]\n\ + bl sub_805C78C\n\ + ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r3]\n\ + adds r0, 0x1\n\ + strh r0, [r3]\n\ _080BBF5E:\n\ - ldr r4, [sp, 0x10]\n\ - lsls r0, r4, 24\n\ - lsrs r6, r0, 24\n\ - ldr r5, [sp, 0xC]\n\ - cmp r6, r5\n\ - bcs _080BBF6C\n\ - b _080BBE2C\n\ + ldr r4, [sp, 0x10]\n\ + lsls r0, r4, 24\n\ + lsrs r6, r0, 24\n\ + ldr r5, [sp, 0xC]\n\ + cmp r6, r5\n\ + bcs _080BBF6C\n\ + b _080BBE2C\n\ _080BBF6C:\n\ - add sp, 0x14\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080BBF7C: .4byte gSaveBlock1 + 0x1A1A\n\ _080BBF80: .4byte gSaveBlock1\n\ _080BBF84: .4byte gDecorations\n\ @@ -902,148 +901,148 @@ __attribute__((naked)) void sub_80BC300(void) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - movs r0, 0\n\ - mov r10, r0\n\ - movs r6, 0\n\ - mov r9, r6\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + movs r0, 0\n\ + mov r10, r0\n\ + movs r6, 0\n\ + mov r9, r6\n\ _080BC314:\n\ - movs r4, 0\n\ - lsls r3, r6, 2\n\ - lsls r2, r6, 1\n\ - ldr r7, _080BC424 @ =gPlayerParty\n\ - adds r1, r6, 0x1\n\ - str r1, [sp]\n\ - adds r1, r3, 0\n\ + movs r4, 0\n\ + lsls r3, r6, 2\n\ + lsls r2, r6, 1\n\ + ldr r7, _080BC424 @ =gPlayerParty\n\ + adds r1, r6, 0x1\n\ + str r1, [sp]\n\ + adds r1, r3, 0\n\ _080BC322:\n\ - adds r0, r1, r4\n\ - lsls r0, 1\n\ - ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ - adds r0, r5, r0\n\ - mov r5, r9\n\ - strh r5, [r0]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - cmp r4, 0x3\n\ - bls _080BC322\n\ - ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ - adds r0, r1, r2\n\ - strh r5, [r0]\n\ - ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ - adds r0, r5, r2\n\ - mov r1, r9\n\ - strh r1, [r0]\n\ - ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ - adds r0, r2, r6\n\ - mov r5, r9\n\ - strb r5, [r0]\n\ - ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ - adds r0, r1, r3\n\ - mov r2, r9\n\ - str r2, [r0]\n\ - ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ - adds r0, r3, r6\n\ - strb r2, [r0]\n\ - movs r0, 0x64\n\ - adds r5, r6, 0\n\ - muls r5, r0\n\ - adds r4, r5, r7\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - beq _080BC408\n\ - adds r0, r4, 0\n\ - movs r1, 0x2D\n\ - bl GetMonData\n\ - cmp r0, 0\n\ - bne _080BC408\n\ - movs r4, 0\n\ - mov r0, r10\n\ - lsls r0, 2\n\ - mov r8, r0\n\ - mov r1, r10\n\ - lsls r7, r1, 1\n\ - adds r1, 0x1\n\ - str r1, [sp, 0x4]\n\ - ldr r2, _080BC424 @ =gPlayerParty\n\ + adds r0, r1, r4\n\ + lsls r0, 1\n\ + ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ + adds r0, r5, r0\n\ + mov r5, r9\n\ + strh r5, [r0]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, 0x3\n\ + bls _080BC322\n\ + ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ + adds r0, r1, r2\n\ + strh r5, [r0]\n\ + ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ + adds r0, r5, r2\n\ + mov r1, r9\n\ + strh r1, [r0]\n\ + ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ + adds r0, r2, r6\n\ + mov r5, r9\n\ + strb r5, [r0]\n\ + ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ + adds r0, r1, r3\n\ + mov r2, r9\n\ + str r2, [r0]\n\ + ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ + adds r0, r3, r6\n\ + strb r2, [r0]\n\ + movs r0, 0x64\n\ + adds r5, r6, 0\n\ + muls r5, r0\n\ + adds r4, r5, r7\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _080BC408\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _080BC408\n\ + movs r4, 0\n\ + mov r0, r10\n\ + lsls r0, 2\n\ + mov r8, r0\n\ + mov r1, r10\n\ + lsls r7, r1, 1\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x4]\n\ + ldr r2, _080BC424 @ =gPlayerParty\n\ _080BC38E:\n\ - adds r1, r4, 0\n\ - adds r1, 0xD\n\ - adds r0, r5, r2\n\ - str r2, [sp, 0x8]\n\ - bl GetMonData\n\ - mov r3, r8\n\ - adds r1, r3, r4\n\ - lsls r1, 1\n\ - ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ - adds r1, r3, r1\n\ - strh r0, [r1]\n\ - adds r0, r4, 0x1\n\ - lsls r0, 16\n\ - lsrs r4, r0, 16\n\ - ldr r2, [sp, 0x8]\n\ - cmp r4, 0x3\n\ - bls _080BC38E\n\ - movs r0, 0x64\n\ - adds r4, r6, 0\n\ - muls r4, r0\n\ - ldr r0, _080BC424 @ =gPlayerParty\n\ - adds r4, r0\n\ - adds r0, r4, 0\n\ - movs r1, 0xB\n\ - bl GetMonData\n\ - ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ - adds r1, r5, r7\n\ - strh r0, [r1]\n\ - adds r0, r4, 0\n\ - movs r1, 0xC\n\ - bl GetMonData\n\ - ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ - adds r1, r2, r7\n\ - strh r0, [r1]\n\ - adds r0, r4, 0\n\ - movs r1, 0x38\n\ - bl GetMonData\n\ - ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ - add r1, r10\n\ - strb r0, [r1]\n\ - adds r0, r4, 0\n\ - movs r1, 0\n\ - bl GetMonData\n\ - ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ - add r1, r8\n\ - str r0, [r1]\n\ - adds r0, r4, 0\n\ - bl sub_80BC298\n\ - ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ - add r1, r10\n\ - strb r0, [r1]\n\ - ldr r3, [sp, 0x4]\n\ - lsls r0, r3, 16\n\ - lsrs r0, 16\n\ - mov r10, r0\n\ + adds r1, r4, 0\n\ + adds r1, 0xD\n\ + adds r0, r5, r2\n\ + str r2, [sp, 0x8]\n\ + bl GetMonData\n\ + mov r3, r8\n\ + adds r1, r3, r4\n\ + lsls r1, 1\n\ + ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ + adds r1, r3, r1\n\ + strh r0, [r1]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + ldr r2, [sp, 0x8]\n\ + cmp r4, 0x3\n\ + bls _080BC38E\n\ + movs r0, 0x64\n\ + adds r4, r6, 0\n\ + muls r4, r0\n\ + ldr r0, _080BC424 @ =gPlayerParty\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ + adds r1, r5, r7\n\ + strh r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ + adds r1, r2, r7\n\ + strh r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ + add r1, r10\n\ + strb r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + bl GetMonData\n\ + ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ + add r1, r8\n\ + str r0, [r1]\n\ + adds r0, r4, 0\n\ + bl sub_80BC298\n\ + ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ + add r1, r10\n\ + strb r0, [r1]\n\ + ldr r3, [sp, 0x4]\n\ + lsls r0, r3, 16\n\ + lsrs r0, 16\n\ + mov r10, r0\n\ _080BC408:\n\ - ldr r5, [sp]\n\ - lsls r0, r5, 16\n\ - lsrs r6, r0, 16\n\ - cmp r6, 0x5\n\ - bls _080BC314\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + ldr r5, [sp]\n\ + lsls r0, r5, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x5\n\ + bls _080BC314\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080BC424: .4byte gPlayerParty\n\ _080BC428: .4byte gSaveBlock1 + 0x1A54\n\ _080BC42C: .4byte gSaveBlock1 + 0x1A84\n\ diff --git a/src/shop.c b/src/shop.c index 81c403e92..cd39b075a 100644 --- a/src/shop.c +++ b/src/shop.c @@ -154,7 +154,7 @@ void sub_80B2F30(u8 taskId) void HandleShopMenuQuit(u8 taskId) { - sub_8072DEC(); + HandleDestroyMenuCursors(); MenuZeroFillWindowRect(0, 0, 11, 8); sub_80BE3BC(); // in tv.s? ScriptContext2_Disable(); diff --git a/src/start_menu.c b/src/start_menu.c index a3258bab1..80080cd43 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -399,7 +399,7 @@ static u8 StartMenu_PlayerCallback(void) //When player selects SAVE static u8 StartMenu_SaveCallback(void) { - sub_8072DEC(); + HandleDestroyMenuCursors(); gCallback_03004AE8 = SaveCallback1; return 0; } diff --git a/src/strings.c b/src/strings.c index f41af082c..fa083f00d 100644 --- a/src/strings.c +++ b/src/strings.c @@ -1149,7 +1149,7 @@ const u8 gOtherText_OkayToThrowAwayPrompt[] = _("Willst du wirklich\n{STR_VAR_2} const u8 gOtherText_DadsAdvice[] = _("VATI sagt immer...\n{PLAYER}, dies ist weder der rechte\lOrt noch der rechte Zeitpunkt dafür!{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_CantGetOffBike[] = _("Du kannst hier nicht vom RAD steigen.{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_ItemfinderResponding[] = _("Oh!\nDas Gerät zeigt etwas an!\pHier muss ein Item vergraben sein!{PAUSE_UNTIL_PRESS}"); -const u8 gOtherText_ItemfinderItemUnderfoot[] = _("Das Gerät macht direkt unter\ndeinen Füßen etwas aus!{PAUSE_UNTIL_PRESS}"); +const u8 gOtherText_ItemfinderItemUnderfoot[] = _("Das Gerät macht direkt unter\ndeinen Füßen etwas aus!{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_NoResponse[] = _("... ... ... ... Nichts!\nKeine Anzeige.{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_Coins3[] = _("Deine MÜNZEN:\n{STR_VAR_1}{PAUSE_UNTIL_PRESS}"); const u8 gOtherText_BootedTM[] = _("Eine TM wurde aktiviert."); @@ -3,7 +3,9 @@ #include "tv.h" #include "data2.h" #include "event_data.h" +#include "fieldmap.h" #include "field_message_box.h" +#include "field_camera.h" #include "flags.h" #include "rng.h" #include "string_util.h" @@ -14,6 +16,7 @@ #include "rom4.h" #include "map_constants.h" #include "strings.h" +#include "battle.h" #include "link.h" #include "easy_chat.h" #include "item.h" @@ -26,22 +29,7 @@ struct UnkTvStruct s8 var0; }; -struct UnkBattleStruct { - u16 var00; - u8 var02[3]; - u8 var05_0:1; - u8 var05_1:1; - u8 var05_pad2:6; - u16 var06; - u8 pad08[24]; - u16 var20; - u8 pad22[6]; - u16 var28; - u8 var2a[11]; - u8 var35; - u8 var36[11]; -}; -extern struct UnkBattleStruct gUnknown_030042E0; +extern struct Struct30042E0 gUnknown_030042E0; extern u8 gUnknown_0300430A[11]; struct OutbreakPokemon @@ -104,10 +92,10 @@ void ClearTVShowData(void) u8 showidx; u8 extradataidx; for (showidx=0; showidx<25; showidx++) { - gSaveBlock1.tvShows.shows[showidx].common.var00 = 0; - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + gSaveBlock1.tvShows[showidx].common.var00 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; for (extradataidx=0; extradataidx<34; extradataidx++) { - gSaveBlock1.tvShows.shows[showidx].common.pad02[extradataidx] = 0; + gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; } } sub_80BEBF4(); @@ -134,7 +122,8 @@ void sub_80BE074(void); void sub_80BE778(void); void sub_80BEB20(void); -asm(".section .text_a"); +u8 sub_80BFB54(u8); + s8 sub_80BF74C(TVShow tvShow[]); void sub_80BF55C(TVShow tvShow[], u8 showidx); @@ -151,7 +140,375 @@ void nullsub_21(void); void sub_80BE188(void); void sub_80BE320(void); -extern u8 GabbyAndTyGetBattleNum(void); +#ifdef NONMATCHING +u8 special_0x44(void) +{ + u8 i; + u8 j; + u8 var01; + TVShow *tvShow; + for (i=5; i<24; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == 0) + { + break; + } + } + i = Random() % i; + j = i; + do + { + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4) + { + var01 = gSaveBlock1.tvShows[i].common.var01; + } else + { + tvShow = &gSaveBlock1.tvShows[i]; + if (tvShow->massOutbreak.var16 != 0) { + continue; + } else { + var01 = tvShow->common.var01; + } + } + if (var01 == 1) + { + return i; + } + } while (i == 0 ? i = 23 : i --, i != j); + return 0xff; +} +#else +__attribute__((naked)) +u8 special_0x44(void) +{ + asm(".syntax unified\n" + " push {r4-r7,lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6,r7}\n" + " movs r4, 0x5\n" + " ldr r1, _080BD874 @ =gSaveBlock1\n" + " ldr r2, _080BD878 @ =0x000027ec\n" + " adds r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, 0\n" + " beq _080BD834\n" + " adds r2, r1, 0\n" + " ldr r1, _080BD87C @ =0x00002738\n" + "_080BD81A:\n" + " adds r0, r4, 0x1\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + " cmp r4, 0x17\n" + " bhi _080BD834\n" + " lsls r0, r4, 3\n" + " adds r0, r4\n" + " lsls r0, 2\n" + " adds r0, r2\n" + " adds r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, 0\n" + " bne _080BD81A\n" + "_080BD834:\n" + " bl Random\n" + " lsls r0, 16\n" + " lsrs r0, 16\n" + " adds r1, r4, 0\n" + " bl __modsi3\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + " mov r8, r4\n" + " ldr r7, _080BD874 @ =gSaveBlock1\n" + " ldr r0, _080BD87C @ =0x00002738\n" + " adds r0, r7\n" + " mov r9, r0\n" + "_080BD850:\n" + " lsls r0, r4, 3\n" + " adds r0, r4\n" + " lsls r6, r0, 2\n" + " adds r5, r6, r7\n" + " ldr r1, _080BD87C @ =0x00002738\n" + " adds r0, r5, r1\n" + " ldrb r0, [r0]\n" + " bl sub_80BFB54\n" + " lsls r0, 24\n" + " lsrs r0, 24\n" + " cmp r0, 0x4\n" + " beq _080BD884\n" + " ldr r2, _080BD880 @ =0x00002739\n" + " adds r0, r5, r2\n" + " ldrb r0, [r0]\n" + " b _080BD890\n" + " .align 2, 0\n" + "_080BD874: .4byte gSaveBlock1\n" + "_080BD878: .4byte 0x000027ec\n" + "_080BD87C: .4byte 0x00002738\n" + "_080BD880: .4byte 0x00002739\n" + "_080BD884:\n" + " mov r0, r9\n" + " adds r1, r6, r0\n" + " ldrh r0, [r1, 0x16]\n" + " cmp r0, 0\n" + " bne _080BD898\n" + " ldrb r0, [r1, 0x1]\n" + "_080BD890:\n" + " cmp r0, 0x1\n" + " bne _080BD898\n" + " adds r0, r4, 0\n" + " b _080BD8AC\n" + "_080BD898:\n" + " cmp r4, 0\n" + " bne _080BD8A0\n" + " movs r4, 0x17\n" + " b _080BD8A6\n" + "_080BD8A0:\n" + " subs r0, r4, 0x1\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + "_080BD8A6:\n" + " cmp r4, r8\n" + " bne _080BD850\n" + " movs r0, 0xFF\n" + "_080BD8AC:\n" + " pop {r3,r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4-r7}\n" + " pop {r1}\n" + " bx r1\n" + ".syntax divided\n"); +} +#endif + +u8 sub_80BDA30(void); + +u8 sub_80BD8B8(void) +{ + u8 retval; + retval = special_0x44(); + if (retval == 0xff) + { + return 0xff; + } + if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK) + { + return sub_80BDA30(); + } + return retval; +} + +u8 CheckForBigMovieOrEmergencyNewsOnTV(void); +void SetTVMetatilesOnMap(int, int, u16); +bool8 sub_80BECA0(void); +bool8 IsTVShowInSearchOfTrainersAiring(void); + +void UpdateTVScreensOnMap(int a0, int a1) +{ + u8 bigMovieOrEmergencyNewsOnTv; + FlagSet(SYS_TV_WATCH); + bigMovieOrEmergencyNewsOnTv = CheckForBigMovieOrEmergencyNewsOnTV(); + switch (bigMovieOrEmergencyNewsOnTv) + { + case 1: + SetTVMetatilesOnMap(a0, a1, 0x3); + break; + case 2: + break; + default: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + { + SetTVMetatilesOnMap(a0, a1, 0x3); + } + else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) + { + FlagReset(SYS_TV_WATCH); + SetTVMetatilesOnMap(a0, a1, 0x3); + } + } +} + +void SetTVMetatilesOnMap(int width, int height, u16 tileId) +{ + int x; + int y; + for (y=0; y<height; y++) + { + for (x=0; x<width; x++) + { + if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) + { + MapGridSetMetatileIdAt(x, y, tileId | 0xc00); + } + } + } +} + +void TurnOffTVScreen(void) +{ + SetTVMetatilesOnMap(gUnknown_03004870.width, gUnknown_03004870.height, 0x2); + DrawWholeMapView(); +} + +u8 sub_80BDA0C(void) +{ + return gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00; +} + +u8 sub_80BDA30(void) +{ + u8 showIdx; + for (showIdx=0; showIdx<24; showIdx++) + { + if (gSaveBlock1.tvShows[showIdx].common.var00 != 0 && gSaveBlock1.tvShows[showIdx].common.var00 != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.var01 == 1) + { + return showIdx; + } + } + return 0xff; +} + +u8 special_0x4a(void) +{ + TVShow *tvShow; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + if (tvShow->common.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies) + { + return sub_80BDA30(); + } + return gSpecialVar_0x8004; +} + +void ResetGabbyAndTy(void) +{ + gSaveBlock1.gabbyAndTyData.mon1 = 0; + gSaveBlock1.gabbyAndTyData.mon2 = 0; + gSaveBlock1.gabbyAndTyData.lastMove = 0; + gSaveBlock1.gabbyAndTyData.quote = 0xffff; + gSaveBlock1.gabbyAndTyData.valA_0 = 0; + gSaveBlock1.gabbyAndTyData.valA_1 = 0; + gSaveBlock1.gabbyAndTyData.valA_2 = 0; + gSaveBlock1.gabbyAndTyData.valA_3 = 0; + gSaveBlock1.gabbyAndTyData.valA_4 = 0; + gSaveBlock1.gabbyAndTyData.valA_5 = 0; + gSaveBlock1.gabbyAndTyData.valB_0 = 0; + gSaveBlock1.gabbyAndTyData.valB_1 = 0; + gSaveBlock1.gabbyAndTyData.valB_2 = 0; + gSaveBlock1.gabbyAndTyData.valB_3 = 0; + gSaveBlock1.gabbyAndTyData.valB_4 = 0; + gSaveBlock1.gabbyAndTyData.valB_5 = 0; + gSaveBlock1.gabbyAndTyData.mapnum = 0; + gSaveBlock1.gabbyAndTyData.battleNum = 0; +} + +void TakeTVShowInSearchOfTrainersOffTheAir(void); + +void GabbyAndTyBeforeInterview(void) +{ + u8 i; + gSaveBlock1.gabbyAndTyData.mon1 = gUnknown_030042E0.unk6; + gSaveBlock1.gabbyAndTyData.mon2 = gUnknown_030042E0.unk26; + gSaveBlock1.gabbyAndTyData.lastMove = gUnknown_030042E0.unk22; + if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) + { + gSaveBlock1.gabbyAndTyData.battleNum ++; + } + gSaveBlock1.gabbyAndTyData.valA_0 = gUnknown_030042E0.unk5_0; + if (gUnknown_030042E0.unk0) + { + gSaveBlock1.gabbyAndTyData.valA_1 = 1; + } else + { + gSaveBlock1.gabbyAndTyData.valA_1 = 0; + } + if (gUnknown_030042E0.unk3) + { + gSaveBlock1.gabbyAndTyData.valA_2 = 1; + } else + { + gSaveBlock1.gabbyAndTyData.valA_2 = 0; + } + if (!gUnknown_030042E0.unk5_1) + { + for (i=0; i<11; i++) + { + if (gUnknown_030042E0.unk36[i] != 0) + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + break; + } + } + } else + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + } + TakeTVShowInSearchOfTrainersOffTheAir(); + if (gSaveBlock1.gabbyAndTyData.lastMove == 0) + { + FlagSet(1); + } +} + +void sub_80BDC14(void) +{ + gSaveBlock1.gabbyAndTyData.valB_0 = gSaveBlock1.gabbyAndTyData.valA_0; + gSaveBlock1.gabbyAndTyData.valB_1 = gSaveBlock1.gabbyAndTyData.valA_1; + gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2; + gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3; + gSaveBlock1.gabbyAndTyData.valA_4 = 1; + gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.name; + IncrementGameStat(GAME_STAT_GOT_INTERVIEWED); +} + +void TakeTVShowInSearchOfTrainersOffTheAir(void) +{ + gSaveBlock1.gabbyAndTyData.valA_4 = 0; +} + +u8 GabbyAndTyGetBattleNum(void) +{ + if (gSaveBlock1.gabbyAndTyData.battleNum >= 6) + { + return (gSaveBlock1.gabbyAndTyData.battleNum % 3) + 6; + } + return gSaveBlock1.gabbyAndTyData.battleNum; +} + +bool8 IsTVShowInSearchOfTrainersAiring(void) +{ + return gSaveBlock1.gabbyAndTyData.valA_4; +} + +bool8 GabbyAndTyGetLastQuote(void) +{ + if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) + { + return FALSE; + } + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); + gSaveBlock1.gabbyAndTyData.quote |= 0xffff; + return TRUE; +} + +u8 sub_80BDD18(void) +{ + if (!gSaveBlock1.gabbyAndTyData.valB_0) + { + return 1; + } + if (gSaveBlock1.gabbyAndTyData.valB_3) + { + return 2; + } + if (gSaveBlock1.gabbyAndTyData.valB_2) + { + return 3; + } + if (gSaveBlock1.gabbyAndTyData.valB_1) + { + return 4; + } + return 0; +} void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { switch (GabbyAndTyGetBattleNum()) { @@ -230,27 +587,27 @@ void sub_80BDEC8(void) { total = 0; sub_80BEB20(); sub_80BE778(); - if (gUnknown_030042E0.var28 == 0) { + if (gUnknown_030042E0.unk28 == 0) { sub_80BE074(); } else { sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.var28], gUnknown_030042E0.var2a) != 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.unk28], gUnknown_030042E0.unk2A) != 0) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) { for (i=0; i<11; i++) { - total += gUnknown_030042E0.var36[i]; + total += gUnknown_030042E0.unk36[i]; } - if (total != 0 || gUnknown_030042E0.var05_1 != 0) { + if (total != 0 || gUnknown_030042E0.unk5_1 != 0) { total = FALSE; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT; show->pokemonToday.var01 = total; - if (gUnknown_030042E0.var05_1 != 0) { + if (gUnknown_030042E0.unk5_1 != 0) { total = 1; item = ITEM_MASTER_BALL; } else { for (i=0; i<11; i++) { - total += gUnknown_030042E0.var36[i]; + total += gUnknown_030042E0.unk36[i]; } if (total > 0xff) { total = 0xff; @@ -260,8 +617,8 @@ void sub_80BDEC8(void) { show->pokemonToday.var12 = total; show->pokemonToday.ball = item; StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); - StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.var2a); - show->pokemonToday.species = gUnknown_030042E0.var28; + StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.unk2A); + show->pokemonToday.species = gUnknown_030042E0.unk28; sub_80BE138(show); show->pokemonToday.language = GAME_LANGUAGE; show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); @@ -274,15 +631,15 @@ void sub_80BDEC8(void) { void sub_80BE028(void) { TVShow *buffer; - buffer = &gSaveBlock1.tvShows.unknown_2A98; + buffer = &gSaveBlock1.tvShows[24]; if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + sub_80BF55C(gSaveBlock1.tvShows, 24); buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS); buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; } buffer->worldOfMasters.var02++; - buffer->worldOfMasters.var04 = gUnknown_030042E0.var28; - buffer->worldOfMasters.var08 = gUnknown_030042E0.var06; + buffer->worldOfMasters.var04 = gUnknown_030042E0.unk28; + buffer->worldOfMasters.var08 = gUnknown_030042E0.unk6; buffer->worldOfMasters.var0a = gMapHeader.name; } @@ -300,15 +657,15 @@ void sub_80BE074(void) { total = 0xff; } if (total > 2 && gUnknown_02024D26 == 1) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { flag = FALSE; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; asm_comment("Here the wrong registers are used to hold the show ID and flag."); show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; show->pokemonTodayFailed.var01 = flag; - show->pokemonTodayFailed.species = gUnknown_030042E0.var06; - show->pokemonTodayFailed.species2 = gUnknown_030042E0.var20; + show->pokemonTodayFailed.species = gUnknown_030042E0.unk6; + show->pokemonTodayFailed.species2 = gUnknown_030042E0.unk20; show->pokemonTodayFailed.var10 = total; show->pokemonTodayFailed.var11 = gUnknown_02024D26; show->pokemonTodayFailed.var12 = gMapHeader.name; @@ -323,88 +680,88 @@ void sub_80BE074(void) { __attribute__((naked)) void sub_80BE074(void) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - ldr r0, _080BE118 @ =0x0000ffff\n\ - bl sub_80BF77C\n\ - lsls r0, 24\n\ - cmp r0, 0\n\ - bne _080BE112\n\ - movs r1, 0\n\ - movs r5, 0\n\ - ldr r2, _080BE11C @ =gUnknown_03004316\n\ + push {r4-r7,lr}\n\ + ldr r0, _080BE118 @ =0x0000ffff\n\ + bl sub_80BF77C\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080BE112\n\ + movs r1, 0\n\ + movs r5, 0\n\ + ldr r2, _080BE11C @ =gUnknown_03004316\n\ _080BE088:\n\ - adds r0, r1, r2\n\ - ldrb r0, [r0]\n\ - adds r0, r5, r0\n\ - lsls r0, 16\n\ - lsrs r5, r0, 16\n\ - adds r0, r1, 0x1\n\ - lsls r0, 24\n\ - lsrs r1, r0, 24\n\ - cmp r1, 0xA\n\ - bls _080BE088\n\ - cmp r5, 0xFF\n\ - bls _080BE0A2\n\ - movs r5, 0xFF\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r0, r5, r0\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0xA\n\ + bls _080BE088\n\ + cmp r5, 0xFF\n\ + bls _080BE0A2\n\ + movs r5, 0xFF\n\ _080BE0A2:\n\ - cmp r5, 0x2\n\ - bls _080BE112\n\ - ldr r7, _080BE120 @ =gUnknown_02024D26\n\ - ldrb r0, [r7]\n\ - cmp r0, 0x1\n\ - bne _080BE112\n\ - ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r6, 0\n\ - bl sub_80BF74C\n\ - ldr r4, _080BE128 @ =gUnknown_03005D38\n\ - strb r0, [r4]\n\ - lsls r0, 24\n\ - asrs r0, 24\n\ - movs r1, 0x1\n\ - negs r1, r1\n\ - cmp r0, r1\n\ - beq _080BE112\n\ - movs r0, 0x17\n\ - bl sub_80BF1B4\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080BE112\n\ - movs r0, 0\n\ - ldrsb r0, [r4, r0]\n\ - lsls r4, r0, 3\n\ - adds r4, r0\n\ - lsls r4, 2\n\ - adds r4, r6\n\ + cmp r5, 0x2\n\ + bls _080BE112\n\ + ldr r7, _080BE120 @ =gUnknown_02024D26\n\ + ldrb r0, [r7]\n\ + cmp r0, 0x1\n\ + bne _080BE112\n\ + ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r6, 0\n\ + bl sub_80BF74C\n\ + ldr r4, _080BE128 @ =gUnknown_03005D38\n\ + strb r0, [r4]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + beq _080BE112\n\ + movs r0, 0x17\n\ + bl sub_80BF1B4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BE112\n\ + movs r0, 0\n\ + ldrsb r0, [r4, r0]\n\ + lsls r4, r0, 3\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + adds r4, r6\n\ @ -- Here the compiler puts the status flag in the wrong register. --\n\ - movs r1, 0\n\ - movs r0, 0x17\n\ - strb r0, [r4]\n\ - strb r1, [r4, 0x1]\n\ - ldr r1, _080BE12C @ =gUnknown_030042E0\n\ - ldrh r0, [r1, 0x6]\n\ - strh r0, [r4, 0xC]\n\ - ldrh r0, [r1, 0x20]\n\ - strh r0, [r4, 0xE]\n\ - strb r5, [r4, 0x10]\n\ - ldrb r0, [r7]\n\ - strb r0, [r4, 0x11]\n\ - ldr r0, _080BE130 @ =gMapHeader\n\ - ldrb r0, [r0, 0x14]\n\ - strb r0, [r4, 0x12]\n\ - adds r0, r4, 0\n\ - adds r0, 0x13\n\ - ldr r1, _080BE134 @ =gSaveBlock2\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - bl sub_80BE138\n\ - movs r0, 2 @ GAME_LANGUAGE\n\ - strb r0, [r4, 0x2]\n\ + movs r1, 0\n\ + movs r0, 0x17\n\ + strb r0, [r4]\n\ + strb r1, [r4, 0x1]\n\ + ldr r1, _080BE12C @ =gUnknown_030042E0\n\ + ldrh r0, [r1, 0x6]\n\ + strh r0, [r4, 0xC]\n\ + ldrh r0, [r1, 0x20]\n\ + strh r0, [r4, 0xE]\n\ + strb r5, [r4, 0x10]\n\ + ldrb r0, [r7]\n\ + strb r0, [r4, 0x11]\n\ + ldr r0, _080BE130 @ =gMapHeader\n\ + ldrb r0, [r0, 0x14]\n\ + strb r0, [r4, 0x12]\n\ + adds r0, r4, 0\n\ + adds r0, 0x13\n\ + ldr r1, _080BE134 @ =gSaveBlock2\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + bl sub_80BE138\n\ + movs r0, 2 @ GAME_LANGUAGE\n\ + strb r0, [r4, 0x2]\n\ _080BE112:\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080BE118: .4byte 0x0000ffff\n\ _080BE11C: .4byte gUnknown_03004316\n\ _080BE120: .4byte gUnknown_02024D26\n\ @@ -440,9 +797,9 @@ void sub_80BE160(TVShow *show) { void sub_80BE188(void) { TVShow *show; TVShow *buffer; - buffer = &gSaveBlock1.tvShows.unknown_2A98; + buffer = &gSaveBlock1.tvShows[24]; if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; show->bravoTrainer.var01 = 1; show->bravoTrainer.species = buffer->bravoTrainer.species; @@ -451,7 +808,7 @@ void sub_80BE188(void) { show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank; show->bravoTrainer.var14 = buffer->bravoTrainer.var14; - show->bravoTrainer.var13_5 = buffer->bravoTrainer.var13_5; + show->bravoTrainer.contestResult = buffer->bravoTrainer.contestResult; show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; sub_80BE160(show); show->bravoTrainer.language = GAME_LANGUAGE; @@ -462,11 +819,11 @@ void sub_80BE188(void) { void sub_80BE23C(u16 a0) { TVShow *show; - show = &gSaveBlock1.tvShows.unknown_2A98; + show = &gSaveBlock1.tvShows[24]; sub_80BF484(); - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + sub_80BF55C(gSaveBlock1.tvShows, 24); show->bravoTrainer.var14 = a0; show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; } @@ -474,10 +831,10 @@ void sub_80BE23C(u16 a0) { void sub_80BE284(u8 a0) { TVShow *show; - show = &gSaveBlock1.tvShows.unknown_2A98; - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + show = &gSaveBlock1.tvShows[24]; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1) { - show->bravoTrainer.var13_5 = a0; + show->bravoTrainer.contestResult = a0; show->bravoTrainer.contestCategory = gScriptContestCategory; show->bravoTrainer.contestRank = gScriptContestRank; show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); @@ -487,13 +844,13 @@ void sub_80BE284(u8 a0) { void sub_80BE320(void) { TVShow *show; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; show->bravoTrainerTower.var01 = 1; StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName); StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC); show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480; - show->bravoTrainerTower.winningMove = gSaveBlock2.filler_A8.var_482; + show->bravoTrainerTower.defeatedSpecies = gSaveBlock2.filler_A8.var_482; show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD; if (gSaveBlock2.filler_A8.var_4D0 == 0) { @@ -513,11 +870,11 @@ void sub_80BE3BC(void) { rval = sub_80BF77C(0x5555); if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { sub_80BF20C(); if (gUnknown_02038724[0].item_amount >= 20) { - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER; tvShow->smartshopperShow.var01 = rval; tvShow->smartshopperShow.shopLocation = gMapHeader.name; @@ -561,7 +918,7 @@ void sub_80BE478(void) return; } - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW; tvShow->nameRaterShow.var01 = 1; @@ -588,7 +945,7 @@ void StartMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species; gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum; @@ -610,7 +967,7 @@ void sub_80BE5FC(void) TVShow *tvShow; u16 species; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER; tvShow->fanclubLetter.var01 = 1; @@ -626,7 +983,7 @@ void sub_80BE65C(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; tvShow->recentHappenings.var01 = 1; @@ -642,7 +999,7 @@ void sub_80BE6A0(void) TVShow *tvShow; u8 monIndex; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; tvShow->fanclubOpinions.var01 = 1; @@ -680,7 +1037,7 @@ void sub_80BE778(void) for (i = 0; i < 24; i++) { - if (gSaveBlock1.tvShows.shows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) { return; } @@ -691,7 +1048,7 @@ void sub_80BE778(void) return; } - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 == -1) { return; @@ -707,7 +1064,7 @@ void sub_80BE778(void) val2 = gUnknown_03005D38.var0; - tvShow = &gSaveBlock1.tvShows.shows[val2]; + tvShow = &gSaveBlock1.tvShows[val2]; tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK; tvShow->massOutbreak.var01 = 1; @@ -764,8 +1121,8 @@ void sub_80BE8EC(u16 arg0) TVShow *tvShow; if (gSaveBlock1.outbreakPokemonSpecies == 0) { for (showidx=0; showidx<24; showidx++) { - if (gSaveBlock1.tvShows.shows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows.shows[showidx].massOutbreak.var01 == 0x01) { - tvShow = &(gSaveBlock1.tvShows.shows[showidx]); + if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) { + tvShow = &(gSaveBlock1.tvShows[showidx]); if (tvShow->massOutbreak.var16 < arg0) tvShow->massOutbreak.var16 = 0; else @@ -811,9 +1168,9 @@ void sub_80BE97C(bool8 flag) void sub_80BE9D4() { TVShow *show; - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { - show = &(gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]); + show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); #ifdef NONMATCHING show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE; show->pokemonAngler.var01 = 0; @@ -839,18 +1196,17 @@ void sub_80BEA50(u16 var) gUnknown_020387E0 = var; } -void sub_80BF55C(TVShow tvShow[], u8 showidx); void sub_80BEA88(void); void sub_80BEA5C(u16 arg0) { TVShow *unk_2a98; - unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows[24]; if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) { if (unk_2a98->worldOfMasters.var02 < 20) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18); + sub_80BF55C(gSaveBlock1.tvShows, 0x18); } else { @@ -863,14 +1219,14 @@ void sub_80BEA88(void) TVShow *unk_2a98; TVShow *tvShow; u8 rval; - unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows[24]; rval = sub_80BF77C(0xFFFF); if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) { - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; tvShow->worldOfMasters.var01 = rval; tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; @@ -1136,7 +1492,7 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) void SetContestCategoryStringVarForInterview(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); } @@ -1196,7 +1552,7 @@ bool8 sub_80BF1B4(u8 showIdx) TVShow *tvShows; u8 i; u32 trainerId; - tvShows = gSaveBlock1.tvShows.shows; + tvShows = gSaveBlock1.tvShows; trainerId = GetPlayerTrainerId(); for (i=5; i<24; i++) { @@ -1237,15 +1593,15 @@ void sub_80BF25C(u8 showType) u8 i; for (i=0; i<5; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == showType) { - if(gSaveBlock1.tvShows.shows[i].common.var01 == 1) + if (gSaveBlock1.tvShows[i].common.var00 == showType) { + if(gSaveBlock1.tvShows[i].common.var01 == 1) { gScriptResult = 1; } else { - sub_80BF55C(gSaveBlock1.tvShows.shows, i); - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF55C(gSaveBlock1.tvShows, i); + sub_80BF588(gSaveBlock1.tvShows); sub_80BF6D8(); } return; @@ -1288,7 +1644,7 @@ void sub_80BF334(void) sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); if (gScriptResult == 0) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubLetter.pad04, 6); } } @@ -1298,7 +1654,7 @@ void sub_80BF3A4(void) TVShow *show; sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->recentHappenings.var04, 6); } } @@ -1311,7 +1667,7 @@ void sub_80BF3DC(void) StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); StringGetEnd10(gStringVar2); - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubOpinions.var1C, 2); } } @@ -1331,7 +1687,7 @@ void sub_80BF484(void) TVShow *show; sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->bravoTrainer.var04, 2); } } @@ -1341,7 +1697,7 @@ void sub_80BF4BC(void) TVShow *show; sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later } } @@ -1397,7 +1753,7 @@ void sub_80BF588(TVShow tvShow[]) for (showidx2=showidx+1; showidx2<24; showidx2++) { if (tvShow[showidx2].common.var00 != 0) { tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(gSaveBlock1.tvShows.shows, showidx2); + sub_80BF55C(gSaveBlock1.tvShows, showidx2); break; } } @@ -1418,7 +1774,7 @@ u16 sub_80BF674(u16 species) u16 cspecies; rspecies = (Random() % (NUM_SPECIES - 1)) + 1; cspecies = rspecies; - while ((s8)sub_8090D90(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { + while ((s8)GetNationalPokedexFlag(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { if (cspecies == SPECIES_BULBASAUR) cspecies = NUM_SPECIES - 1; else @@ -1433,7 +1789,7 @@ u16 sub_80BF674(u16 species) void sub_80BF6D8(void) { - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); gSpecialVar_0x8006 = gUnknown_03005D38.var0; if (gUnknown_03005D38.var0 == -1) gScriptResult = 1; @@ -1549,7 +1905,7 @@ bool8 sub_80BF974(void) u8 i; for (i=0; i<5; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == gSpecialVar_0x8004) + if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) return TRUE; } return FALSE; @@ -1677,119 +2033,119 @@ __attribute__((naked)) void GetMomOrDadStringForTVMessage(void) { asm(".syntax unified\n\ - push {r4,lr}\n\ - ldr r1, _080BFC40 @ =gSaveBlock1\n\ - movs r0, 0x4\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x1\n\ - bne _080BFC6C\n\ - ldr r0, _080BFC44 @ =gSaveBlock2\n\ - ldrb r0, [r0, 0x8]\n\ - cmp r0, 0\n\ - bne _080BFC54\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0\n\ - bne _080BFC6C\n\ - ldr r0, _080BFC48 @ =gStringVar1\n\ - ldr r1, _080BFC4C @ =gOtherText_Mom\n\ - bl StringCopy\n\ - ldr r0, _080BFC50 @ =0x00004003\n\ - movs r1, 0x1\n\ - bl VarSet\n\ - b _080BFC6C\n\ - .align 2, 0\n\ + push {r4,lr}\n\ + ldr r1, _080BFC40 @ =gSaveBlock1\n\ + movs r0, 0x4\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x1\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC44 @ =gSaveBlock2\n\ + ldrb r0, [r0, 0x8]\n\ + cmp r0, 0\n\ + bne _080BFC54\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC48 @ =gStringVar1\n\ + ldr r1, _080BFC4C @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFC50 @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFC6C\n\ + .align 2, 0\n\ _080BFC40: .4byte gSaveBlock1\n\ _080BFC44: .4byte gSaveBlock2\n\ _080BFC48: .4byte gStringVar1\n\ _080BFC4C: .4byte gOtherText_Mom\n\ _080BFC50: .4byte 0x00004003\n\ _080BFC54:\n\ - movs r0, 0x5\n\ - ldrsb r0, [r1, r0]\n\ - cmp r0, 0x2\n\ - bne _080BFC6C\n\ - ldr r0, _080BFCB4 @ =gStringVar1\n\ - ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ - bl StringCopy\n\ - ldr r0, _080BFCBC @ =0x00004003\n\ - movs r1, 0x1\n\ - bl VarSet\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x2\n\ + bne _080BFC6C\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFCBC @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ _080BFC6C:\n\ - ldr r4, _080BFCBC @ =0x00004003\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x1\n\ - beq _080BFCAA\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x2\n\ - beq _080BFCC0\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x2\n\ - bls _080BFCD4\n\ - adds r0, r4, 0\n\ - bl VarGet\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - bne _080BFCC0\n\ + ldr r4, _080BFCBC @ =0x00004003\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + beq _080BFCAA\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + beq _080BFCC0\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + bls _080BFCD4\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080BFCC0\n\ _080BFCAA:\n\ - ldr r0, _080BFCB4 @ =gStringVar1\n\ - ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ - bl StringCopy\n\ - b _080BFD10\n\ - .align 2, 0\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ _080BFCB4: .4byte gStringVar1\n\ _080BFCB8: .4byte gOtherText_Mom\n\ _080BFCBC: .4byte 0x00004003\n\ _080BFCC0:\n\ - ldr r0, _080BFCCC @ =gStringVar1\n\ - ldr r1, _080BFCD0 @ =gOtherText_Dad\n\ - bl StringCopy\n\ - b _080BFD10\n\ - .align 2, 0\n\ + ldr r0, _080BFCCC @ =gStringVar1\n\ + ldr r1, _080BFCD0 @ =gOtherText_Dad\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ _080BFCCC: .4byte gStringVar1\n\ _080BFCD0: .4byte gOtherText_Dad\n\ _080BFCD4:\n\ - bl Random\n\ - lsls r0, 16\n\ - lsrs r0, 16\n\ - movs r1, 0x1\n\ - ands r0, r1\n\ - cmp r0, 0\n\ - beq _080BFD00\n\ - ldr r0, _080BFCF8 @ =gStringVar1\n\ - ldr r1, _080BFCFC @ =gOtherText_Mom\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - movs r1, 0x1\n\ - bl VarSet\n\ - b _080BFD10\n\ - .align 2, 0\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BFD00\n\ + ldr r0, _080BFCF8 @ =gStringVar1\n\ + ldr r1, _080BFCFC @ =gOtherText_Mom\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFD10\n\ + .align 2, 0\n\ _080BFCF8: .4byte gStringVar1\n\ _080BFCFC: .4byte gOtherText_Mom\n\ _080BFD00:\n\ - ldr r0, _080BFD18 @ =gStringVar1\n\ - ldr r1, _080BFD1C @ =gOtherText_Dad\n\ - bl StringCopy\n\ - adds r0, r4, 0\n\ - movs r1, 0x2\n\ - bl VarSet\n\ + ldr r0, _080BFD18 @ =gStringVar1\n\ + ldr r1, _080BFD1C @ =gOtherText_Dad\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x2\n\ + bl VarSet\n\ _080BFD10:\n\ - pop {r4}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080BFD18: .4byte gStringVar1\n\ _080BFD1C: .4byte gOtherText_Dad\n\ .syntax divided\n"); @@ -1803,14 +2159,15 @@ void sub_80BFD20(void) } extern u8 ewram[]; -#define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(ewram + 0x7000)) +#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) extern u8 gUnknown_020387E4; -struct ewramStruct_0207000 { - struct SaveTVStruct tvshows[4]; -}; +typedef union ewramStruct_02007000 { + TVShow tvshows[4][25]; + struct UnknownSaveStruct2ABC unknown_2abc[4][16]; +} ewramStruct_02007000; -void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3); +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]); void sub_80C04A0(void); void sub_80C01D4(void); @@ -1819,44 +2176,45 @@ void sub_80C0408(void); void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) { u8 i; - struct ewramStruct_0207000 *ewramTVShows; + ewramStruct_02007000 *ewramTVShows; for (i=0; i<4; i++) { - memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], sizeof(struct SaveTVStruct)); + memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow)); } ewramTVShows = &gUnknown_02007000; switch (arg2) { case 0: - sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); break; case 1: - sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + sub_80BFE24(ewramTVShows->tvshows[0], gSaveBlock1.tvShows, ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); break; case 2: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); + sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], gSaveBlock1.tvShows, ewramTVShows->tvshows[3]); break; case 3: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); + sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], gSaveBlock1.tvShows); break; } - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF588(gSaveBlock1.tvShows); sub_80C04A0(); - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF588(gSaveBlock1.tvShows); sub_80C01D4(); sub_80C0408(); } extern u8 gUnknown_03000720; +extern u8 gUnknown_03000721; extern s8 gUnknown_03000722; s8 sub_80C019C(TVShow tvShows[]); -bool8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx); +bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx); u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); -void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) { u8 i, j; - struct SaveTVStruct ** argslist[4]; + TVShow ** argslist[4]; argslist[0] = &arg0; argslist[1] = &arg1; argslist[2] = &arg2; @@ -1866,20 +2224,20 @@ void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct Sa for (i=0; i<gUnknown_03000720; i++) { if (i == 0) gUnknown_020387E4 = i; - gUnknown_03000722 = sub_80C019C(argslist[i][0]->shows); + gUnknown_03000722 = sub_80C019C(argslist[i][0]); if (gUnknown_03000722 == -1) { gUnknown_020387E4++; if (gUnknown_020387E4 == gUnknown_03000720) return; } else { for (j=0; j<gUnknown_03000720-1; j++) { - gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]->shows); - if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(argslist[(i + j + 1) % gUnknown_03000720], argslist[i], (i + j + 1) % gUnknown_03000720) == 1) { + gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]); + if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(&argslist[(i + j + 1) % gUnknown_03000720][0], &argslist[i][0], (i + j + 1) % gUnknown_03000720) == 1) { break; } } if (j == gUnknown_03000720 - 1) { - sub_80BF55C(argslist[i][0]->shows, gUnknown_03000722); + sub_80BF55C(argslist[i][0], gUnknown_03000722); } } } @@ -1887,28 +2245,28 @@ void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct Sa } #ifdef NONMATCHING -bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { +bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { u8 value; u8 switchval; - struct SaveTVStruct *tv1; - struct SaveTVStruct *tv2; + TVShow tv1[25]; + TVShow tv2[25]; tv1 = *arg1; tv2 = *arg2; value = FALSE; - switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00); + switchval = sub_80BFB54(tv2[gUnknown_03000722].common.var00); switch (switchval) { case 2: - value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C004C(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; case 3: - value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C00B4(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; case 4: - value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C0134(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; } if (value == TRUE) { - sub_80BF55C(tv2->shows, gUnknown_03000722); + sub_80BF55C(tv2, gUnknown_03000722); return TRUE; } else { return FALSE; @@ -1916,121 +2274,121 @@ bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 i } #else __attribute__((naked)) -bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { +bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { asm(".syntax unified\n\ - push {r4-r7,lr}\n\ - sub sp, 0x4\n\ - lsls r2, 24\n\ - lsrs r7, r2, 24\n\ - ldr r4, [r0]\n\ - ldr r6, [r1]\n\ - movs r5, 0\n\ - ldr r2, _080BFFA4 @ =gUnknown_03000722\n\ - movs r1, 0\n\ - ldrsb r1, [r2, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r6 @ this is the only mimsmatch\n\ - ldrb r0, [r0]\n\ - str r2, [sp]\n\ - bl sub_80BFB54\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - adds r1, r0, 0\n\ - ldr r2, [sp]\n\ - cmp r0, 0x3\n\ - beq _080BFFD8\n\ - cmp r0, 0x3\n\ - bgt _080BFFA8\n\ - cmp r0, 0x2\n\ - beq _080BFFAE\n\ - b _080C0026\n\ - .align 2, 0\n\ + push {r4-r7,lr}\n\ + sub sp, 0x4\n\ + lsls r2, 24\n\ + lsrs r7, r2, 24\n\ + ldr r4, [r0]\n\ + ldr r6, [r1]\n\ + movs r5, 0\n\ + ldr r2, _080BFFA4 @ =gUnknown_03000722\n\ + movs r1, 0\n\ + ldrsb r1, [r2, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6 @ this is the only mimsmatch\n\ + ldrb r0, [r0]\n\ + str r2, [sp]\n\ + bl sub_80BFB54\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r1, r0, 0\n\ + ldr r2, [sp]\n\ + cmp r0, 0x3\n\ + beq _080BFFD8\n\ + cmp r0, 0x3\n\ + bgt _080BFFA8\n\ + cmp r0, 0x2\n\ + beq _080BFFAE\n\ + b _080C0026\n\ + .align 2, 0\n\ _080BFFA4: .4byte gUnknown_03000722\n\ _080BFFA8:\n\ - cmp r1, 0x4\n\ - beq _080C0000\n\ - b _080C0026\n\ + cmp r1, 0x4\n\ + beq _080C0000\n\ + b _080C0026\n\ _080BFFAE:\n\ - ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\ - movs r1, 0\n\ - ldrsb r1, [r0, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - ldrb r2, [r2]\n\ - lsls r2, 24\n\ - asrs r2, 24\n\ - lsls r1, r2, 3\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r6, r1\n\ - adds r2, r7, 0\n\ - bl sub_80C004C\n\ - b _080C0022\n\ - .align 2, 0\n\ + ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C004C\n\ + b _080C0022\n\ + .align 2, 0\n\ _080BFFD4: .4byte gUnknown_03005D38\n\ _080BFFD8:\n\ - ldr r0, _080BFFFC @ =gUnknown_03005D38\n\ - movs r1, 0\n\ - ldrsb r1, [r0, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - ldrb r2, [r2]\n\ - lsls r2, 24\n\ - asrs r2, 24\n\ - lsls r1, r2, 3\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r6, r1\n\ - adds r2, r7, 0\n\ - bl sub_80C00B4\n\ - b _080C0022\n\ - .align 2, 0\n\ + ldr r0, _080BFFFC @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C00B4\n\ + b _080C0022\n\ + .align 2, 0\n\ _080BFFFC: .4byte gUnknown_03005D38\n\ _080C0000:\n\ - ldr r0, _080C0030 @ =gUnknown_03005D38\n\ - movs r1, 0\n\ - ldrsb r1, [r0, r1]\n\ - lsls r0, r1, 3\n\ - adds r0, r1\n\ - lsls r0, 2\n\ - adds r0, r4, r0\n\ - ldrb r2, [r2]\n\ - lsls r2, 24\n\ - asrs r2, 24\n\ - lsls r1, r2, 3\n\ - adds r1, r2\n\ - lsls r1, 2\n\ - adds r1, r6, r1\n\ - adds r2, r7, 0\n\ - bl sub_80C0134\n\ + ldr r0, _080C0030 @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C0134\n\ _080C0022:\n\ - lsls r0, 24\n\ - lsrs r5, r0, 24\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ _080C0026:\n\ - cmp r5, 0x1\n\ - beq _080C0034\n\ - movs r0, 0\n\ - b _080C0040\n\ - .align 2, 0\n\ + cmp r5, 0x1\n\ + beq _080C0034\n\ + movs r0, 0\n\ + b _080C0040\n\ + .align 2, 0\n\ _080C0030: .4byte gUnknown_03005D38\n\ _080C0034:\n\ - ldr r0, _080C0048 @ =gUnknown_03000722\n\ - ldrb r1, [r0]\n\ - adds r0, r6, 0\n\ - bl sub_80BF55C\n\ - movs r0, 0x1\n\ + ldr r0, _080C0048 @ =gUnknown_03000722\n\ + ldrb r1, [r0]\n\ + adds r0, r6, 0\n\ + bl sub_80BF55C\n\ + movs r0, 0x1\n\ _080C0040:\n\ - add sp, 0x4\n\ - pop {r4-r7}\n\ - pop {r1}\n\ - bx r1\n\ - .align 2, 0\n\ + add sp, 0x4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ _080C0048: .4byte gUnknown_03000722\n\ .syntax divided\n"); } @@ -2096,54 +2454,54 @@ void sub_80C03A8(u8 showidx); void sub_80C03C8(u16 species, u8 showidx); #ifdef NONMATCHING -void sub_80C01D4(void) { - u8 i; - for (i=0; i<24; i++) { - switch (gSaveBlock1.tvShows.shows[i].common.var00) { - case 0: - break; - case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); - break; - case TVSHOW_RECENT_HAPPENINGS: - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); - break; - case TVSHOW_SMART_SHOPPER: - break; - case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); - break; - case TVSHOW_FISHING_ADVICE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); - break; - case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); - break; - case TVSHOW_MASS_OUTBREAK: - break; - default: - sub_80C03A8(i); +void sub_80C01D4(void) +{ + u16 i; + for (i=0; i<24; i++) + { + switch (gSaveBlock1.tvShows[i].common.var00) + { + case 0: + case TVSHOW_RECENT_HAPPENINGS: + case TVSHOW_SMART_SHOPPER: + case TVSHOW_MASS_OUTBREAK: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubLetter.species, i); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubOpinions.var02, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80C03C8((&gSaveBlock1.tvShows[i])->unkShow04.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.var1C, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.defeatedSpecies, i); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonToday.species, i); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonAngler.var04, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var08, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var04, i); + break; + default: + sub_80C03A8(i); } } } @@ -2151,217 +2509,217 @@ void sub_80C01D4(void) { __attribute__((naked)) void sub_80C01D4(void) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - movs r6, 0\n\ + push {r4-r6,lr}\n\ + movs r6, 0\n\ _080C01D8:\n\ - ldr r0, _080C01F8 @ =gSaveBlock1\n\ - lsls r2, r6, 3\n\ - adds r1, r2, r6\n\ - lsls r1, 2\n\ - adds r1, r0\n\ - ldr r0, _080C01FC @ =0x00002738\n\ - adds r1, r0\n\ - ldrb r0, [r1]\n\ - cmp r0, 0x29\n\ - bls _080C01EE\n\ - b _default\n\ + ldr r0, _080C01F8 @ =gSaveBlock1\n\ + lsls r2, r6, 3\n\ + adds r1, r2, r6\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldr r0, _080C01FC @ =0x00002738\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x29\n\ + bls _080C01EE\n\ + b _default\n\ _080C01EE:\n\ - lsls r0, 2\n\ - ldr r1, _080C0200 @ =_080C0204\n\ - adds r0, r1\n\ - ldr r0, [r0]\n\ - mov pc, r0\n\ - .align 2, 0\n\ + lsls r0, 2\n\ + ldr r1, _080C0200 @ =_080C0204\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ _080C01F8: .4byte gSaveBlock1\n\ _080C01FC: .4byte 0x00002738\n\ _080C0200: .4byte _080C0204\n\ - .align 2, 0\n\ + .align 2, 0\n\ _080C0204:\n\ - .4byte _break\n\ - .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ - .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ - .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ - .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ - .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ - .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ - .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ - .4byte _break @ TVSHOW_SMART_SHOPPER\n\ - .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ - .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ - .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _default\n\ - .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ + .4byte _break\n\ + .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ + .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ + .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ + .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ + .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ + .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ + .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ + .4byte _break @ TVSHOW_SMART_SHOPPER\n\ + .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ + .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ + .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ _fanclubLetter:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C02B8: .4byte gSaveBlock1 + 0x2738\n\ _fanclubOpinions:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C02C8: .4byte gSaveBlock1 + 0x2738\n\ _showtype4:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x6]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x6]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C02D8: .4byte gSaveBlock1 + 0x2738\n\ _nameRater:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x2]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x1C]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x2]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x1C]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C02F4: .4byte gSaveBlock1 + 0x2738\n\ _bravoTrainerContest:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x2]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C0304: .4byte gSaveBlock1 + 0x2738\n\ _bravoTrainerTower:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xA]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x14]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xA]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x14]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C0320: .4byte gSaveBlock1 + 0x2738\n\ _pokemonTodayS:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x10]\n\ - b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x10]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C0330: .4byte gSaveBlock1 + 0x2738\n\ _pokemonTodayF:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0xC]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0xE]\n\ - b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ - .align 2, 0\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xC]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0xE]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ _080C034C: .4byte gSaveBlock1 + 0x2738\n\ _fishing:\n\ - adds r0, r2, r6\n\ - lsls r0, 2\n\ - ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ - adds r0, r1\n\ - ldrh r0, [r0, 0x4]\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x4]\n\ _checkSpecies1:\n\ - lsls r1, r6, 24\n\ - lsrs r1, 24\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ + lsls r1, r6, 24\n\ + lsrs r1, 24\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ _080C0364: .4byte gSaveBlock1 + 0x2738\n\ _worldOfMasters:\n\ - adds r4, r2, r6\n\ - lsls r4, 2\n\ - ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ - adds r4, r0\n\ - ldrh r0, [r4, 0x8]\n\ - lsls r5, r6, 24\n\ - lsrs r5, 24\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - ldrh r0, [r4, 0x4]\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x8]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x4]\n\ _checkSpecies2:\n\ - adds r1, r5, 0\n\ - bl sub_80C03C8\n\ - b _break\n\ - .align 2, 0\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ _080C0388: .4byte gSaveBlock1 + 0x2738\n\ _default:\n\ - lsls r0, r6, 24\n\ - lsrs r0, 24\n\ - bl sub_80C03A8\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + bl sub_80C03A8\n\ _break:\n\ - adds r0, r6, 0x1\n\ - lsls r0, 16\n\ - lsrs r6, r0, 16\n\ - cmp r6, 0x17\n\ - bhi _080C03A0\n\ - b _080C01D8\n\ + adds r0, r6, 0x1\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x17\n\ + bhi _080C03A0\n\ + b _080C01D8\n\ _080C03A0:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ .syntax divided\n"); } #endif void sub_80C03A8(u8 showidx) { - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; } void sub_80C03C8(u16 species, u8 showidx) { - if (sub_8090D90(SpeciesToNationalPokedexNum(species), 0) == 0) { - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) { + gSaveBlock1.tvShows[showidx].common.var01 = 0; } } @@ -2370,8 +2728,8 @@ void sub_80C0408(void) { u16 i; if (FlagGet(SYS_GAME_CLEAR) != 1) { for (i=0; i<24; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { - gSaveBlock1.tvShows.shows[i].common.var01 = 0; + if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { + gSaveBlock1.tvShows[i].common.var01 = 0; } } } @@ -2380,43 +2738,43 @@ void sub_80C0408(void) { __attribute__((naked)) void sub_80C0408(void) { asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - ldr r0, _080C044C @ =0x00000804\n\ - bl FlagGet\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - cmp r0, 0x1\n\ - beq _080C0444\n\ - movs r2, 0\n\ - ldr r6, _080C0450 @ =gSaveBlock1\n\ - ldr r4, _080C0454 @ =0x00002739\n\ - movs r3, 0\n\ - ldr r5, _080C0458 @ =0x00002738\n\ + push {r4-r6,lr}\n\ + ldr r0, _080C044C @ =0x00000804\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080C0444\n\ + movs r2, 0\n\ + ldr r6, _080C0450 @ =gSaveBlock1\n\ + ldr r4, _080C0454 @ =0x00002739\n\ + movs r3, 0\n\ + ldr r5, _080C0458 @ =0x00002738\n\ _080C0422:\n\ - lsls r0, r2, 3\n\ - adds r0, r2\n\ - lsls r0, 2\n\ - adds r1, r0, r6\n\ - adds r0, r1, r5\n\ - ldrb r0, [r0]\n\ - cmp r0, 0x7\n\ - beq _080C0436\n\ - cmp r0, 0x29\n\ - bne _080C043A\n\ + lsls r0, r2, 3\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r1, r0, r6\n\ + adds r0, r1, r5\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x7\n\ + beq _080C0436\n\ + cmp r0, 0x29\n\ + bne _080C043A\n\ _080C0436:\n\ - adds r0, r1, r4\n\ - strb r3, [r0]\n\ + adds r0, r1, r4\n\ + strb r3, [r0]\n\ _080C043A:\n\ - adds r0, r2, 0x1\n\ - lsls r0, 16\n\ - lsrs r2, r0, 16\n\ - cmp r2, 0x17\n\ - bls _080C0422\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x17\n\ + bls _080C0422\n\ _080C0444:\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ _080C044C: .4byte 0x00000804\n\ _080C0450: .4byte gSaveBlock1\n\ _080C0454: .4byte 0x00002739\n\ @@ -2428,13 +2786,94 @@ _080C0458: .4byte 0x00002738\n\ void sub_80C045C(void) { u8 i; for (i=0; i<5; i++) { - if (sub_80BFB54(gSaveBlock1.tvShows.shows[i].common.var00) == 2) { - gSaveBlock1.tvShows.shows[i].common.var01 = 0; + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) { + gSaveBlock1.tvShows[i].common.var01 = 0; } } } -asm(".section .dotvshow\n"); +void sub_80C04A0(void) +{ + s8 showIdx; + s8 count; + count = 0; + for (showIdx=5; showIdx<24; showIdx++) + { + if (gSaveBlock1.tvShows[showIdx].common.var00 == 0) + { + count ++; + } + } + for (showIdx=0; showIdx<5-count; showIdx++) + { + sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); + } +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]); +void sub_80C0750(void); +void sub_80C0788(void); +s8 sub_80C0730(struct UnknownSaveStruct2ABC[16], u8); +void sub_80C06BC(struct UnknownSaveStruct2ABC *[16], struct UnknownSaveStruct2ABC *[16]); + +void sub_80C0514(void *a0, u32 a1, u8 a2) +{ + ewramStruct_02007000 *struct02007000; + u8 i; + for (i=0; i<4; i++) + { + memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64); + } + struct02007000 = &gUnknown_02007000; + switch (a2) + { + case 0: + sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 1: + sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 2: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]); + break; + case 3: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC); + break; + } + sub_80C0750(); + sub_80C0788(); +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2ABC a1[16], struct UnknownSaveStruct2ABC a2[16], struct UnknownSaveStruct2ABC a3[16]) +{ + u8 i; + u8 j; + u8 k; + struct UnknownSaveStruct2ABC ** arglist[4]; + arglist[0] = &a0; + arglist[1] = &a1; + arglist[2] = &a2; + arglist[3] = &a3; + gUnknown_03000721 = GetLinkPlayerCount(); + for (i=0; i<16; i++) + { + for (j=0; j<gUnknown_03000721; j++) + { + gUnknown_03000722 = sub_80C0730(*arglist[j], i); + if (gUnknown_03000722 != -1) + { + for (k=0; k<gUnknown_03000721-1; k++) + { + gUnknown_03005D38.var0 = sub_80BEBC8(*arglist[(j + k + 1) % gUnknown_03000721]); + if (gUnknown_03005D38.var0 != -1) + { + sub_80C06BC(arglist[(j + k + 1) % gUnknown_03000721], arglist[j]); + } + } + } + } + } +} void DoTVShowPokemonFanClubLetter(void); void DoTVShowRecentHappenings(void); @@ -2452,11 +2891,11 @@ void DoTVShowTheWorldOfMasters(void); bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2); -void sub_80C06BC(int *arg0, int *arg1) { +void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16]) { struct UnknownSaveStruct2ABC *str0; struct UnknownSaveStruct2ABC *str1; - str0 = (void *)arg0[0]; - str1 = (void *)arg1[0]; + str0 = arg0[0]; + str1 = arg1[0]; str1 += gUnknown_03000722; sub_80C06E8(str0, str1, gUnknown_03005D38.var0); } @@ -2504,8 +2943,8 @@ void sub_80C0788(void) { } void DoTVShow(void) { - if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { - switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { + if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) { + switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) { case TVSHOW_FAN_CLUB_LETTER: DoTVShowPokemonFanClubLetter(); break; @@ -2556,7 +2995,308 @@ void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) { } } -asm(".section .text_c"); +void DoTVShowBravoTrainerPokemonProfile(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); + sub_80BEF10(2, tvShow->bravoTrainer.contestRank); + if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[tvShow->bravoTrainer.species], tvShow->bravoTrainer.pokemonNickname)) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 1; + } + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainer.pokemonNickname, tvShow->bravoTrainer.var1f); + CopyContestCategoryToStringVar(2, tvShow->bravoTrainer.contestCategory); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + if (tvShow->bravoTrainer.contestResult == 0) // placed first + { + gUnknown_020387E8 = 3; + } else + { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); + sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); + sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); + sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); + if (tvShow->bravoTrainer.var14) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 7; + } + break; + case 6: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + StringCopy(gStringVar2, gMoveNames[tvShow->bravoTrainer.var14]); + sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); + gUnknown_020387E8 = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainer.species]); + TVShowDone(); + break; + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + gUnknown_020387E8 = 2; + break; + } + ShowFieldMessage(gTVBravoTrainerTextGroup[switchval]); +} + +void DoTVShowBravoTrainerBattleTowerProfile(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); + if (tvShow->bravoTrainerTower.var16 >= 7) + { + gUnknown_020387E8 = 1; + } else + { + gUnknown_020387E8 = 2; + } + break; + case 1: + sub_80BF088(0, tvShow->bravoTrainerTower.btLevel); + sub_80BF088(1, tvShow->bravoTrainerTower.var16); + if (tvShow->bravoTrainerTower.var1c == 1) + { + gUnknown_020387E8 = 3; + } else + { + gUnknown_020387E8 = 4; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + sub_80BF088(1, tvShow->bravoTrainerTower.var16 + 1); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 7: + gUnknown_020387E8 = 11; + break; + case 8: + case 9: + case 10: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 11: + sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 12; + } else + { + gUnknown_020387E8 = 13; + } + break; + case 12: + case 13: + sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); + TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + TVShowConvertInternationalString(gStringVar3, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 14; + break; + case 14: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[switchval]); +} + +void DoTVShowTodaysSmartShopper(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + sub_80FBFB4(gStringVar2, tvShow->smartshopperShow.shopLocation, 0); + if (tvShow->smartshopperShow.itemAmounts[0] >= 0xff) + { + gUnknown_020387E8 = 11; + } else + { + gUnknown_020387E8 = 1; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0]); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 2: + case 4: + case 5: + if (tvShow->smartshopperShow.itemIds[1] != 0) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 10; + } + break; + case 3: + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0] + 1); + if (tvShow->smartshopperShow.itemIds[1] != 0) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 10; + } + break; + case 6: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[1])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[1]); + if (tvShow->smartshopperShow.itemIds[2] != 0) + { + gUnknown_020387E8 = 7; + } else if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 7: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[2])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[2]); + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 8: + if (tvShow->smartshopperShow.itemAmounts[0] < 0xff) + { + gUnknown_020387E8 = 9; + } else + { + gUnknown_020387E8 = 12; + } + break; + case 9: + sub_80BF154(1, &tvShow->smartshopperShow); + TVShowDone(); + break; + case 10: + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 11: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 12; + } + break; + case 12: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + TVShowDone(); + break; + } + ShowFieldMessage(gTVSmartShopperTextGroup[switchval]); +} void TVShowConvertInternationalString(u8 *, u8 *, u8); @@ -2565,7 +3305,7 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void); void DoTVShowTheNameRaterShow(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2661,7 +3401,7 @@ void DoTVShowTheNameRaterShow(void) { void DoTVShowPokemonTodaySuccessfulCapture(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2731,7 +3471,7 @@ void DoTVShowPokemonTodayFailedCapture(void) { TVShow *tvShow; u8 switchval; u16 rval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2777,7 +3517,7 @@ void DoTVShowPokemonFanClubLetter(void) { TVShow *tvShow; u8 switchval; u16 rval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2828,7 +3568,7 @@ void DoTVShowPokemonFanClubLetter(void) { void DoTVShowRecentHappenings(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2860,7 +3600,7 @@ void DoTVShowRecentHappenings(void) { void DoTVShowPokemonFanClubOpinions(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2895,7 +3635,7 @@ void DoTVShowPokemonNewsMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0); @@ -2914,7 +3654,7 @@ void DoTVShowInSearchOfTrainers(void) { switch (switchval) { case 0: sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.val9 > 1) { + if (gSaveBlock1.gabbyAndTyData.battleNum > 1) { gUnknown_020387E8 = 1; } else { gUnknown_020387E8 = 2; @@ -2938,7 +3678,7 @@ void DoTVShowInSearchOfTrainers(void) { break; case 3: StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.lastMove]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); gUnknown_020387E8 = 8; break; @@ -2949,7 +3689,7 @@ void DoTVShowInSearchOfTrainers(void) { gUnknown_020387E8 = 8; break; case 8: - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); gScriptResult = 1; @@ -2963,7 +3703,7 @@ void DoTVShowInSearchOfTrainers(void) { void DoTVShowPokemonAngler(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) { gUnknown_020387E8 = 0; @@ -2991,7 +3731,7 @@ void DoTVShowPokemonAngler(void) { void DoTVShowTheWorldOfMasters(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -3022,7 +3762,7 @@ void TVShowDone(void) gScriptResult = 1; gUnknown_020387E8 = 0; - gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 = 0; + gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; } void sub_80C2014(void) diff --git a/src/util.c b/src/util.c index 2278c50fe..55608854c 100644 --- a/src/util.c +++ b/src/util.c @@ -6,41 +6,41 @@ extern const u8 gSpriteDimensions[3][4][2]; extern const u16 gCrc16Table[]; u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *)) { - u8 sprite = CreateSprite(&gInvisibleSpriteTemplate, 248, 168, 14); - gSprites[sprite].invisible = TRUE; - gSprites[sprite].callback = callback; - return sprite; + u8 sprite = CreateSprite(&gInvisibleSpriteTemplate, 248, 168, 14); + gSprites[sprite].invisible = TRUE; + gSprites[sprite].callback = callback; + return sprite; } void StoreWordInTwoHalfwords(u16 *h, u32 w) { - h[0] = (u16)(w); - h[1] = (u16)(w >> 16); + h[0] = (u16)(w); + h[1] = (u16)(w >> 16); } void LoadWordFromTwoHalfwords(u16 *h, u32 *w) { - *w = h[0] | (s16)h[1] << 16; + *w = h[0] | (s16)h[1] << 16; } void SetBgAffineStruct(struct BgAffineSrcData *src, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) { - src->texX = texX; - src->texY = texY; - src->scrX = scrX; - src->scrY = scrY; - src->sx = sx; - src->sy = sy; - src->alpha = alpha; + src->texX = texX; + src->texY = texY; + src->scrX = scrX; + src->scrY = scrY; + src->sx = sx; + src->sy = sy; + src->alpha = alpha; } void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha) { - struct BgAffineSrcData src; - SetBgAffineStruct( - &src, - texX, texY, - scrX, scrY, - sx, sy, - alpha - ); - BgAffineSet(&src, dest, 1); + struct BgAffineSrcData src; + SetBgAffineStruct( + &src, + texX, texY, + scrX, scrY, + sx, sy, + alpha + ); + BgAffineSet(&src, dest, 1); } #ifdef NONMATCHING @@ -48,342 +48,342 @@ void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s // Functionally equivalent. // Only the two yflip loops don't match. void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { - u8 x, y; - s8 i, j; - u8 xflip[32]; - u8 h = gSpriteDimensions[shape][size][1]; - u8 w = gSpriteDimensions[shape][size][0]; - for (y = 0; y < h; y++) { - int filler = 32 - w; - for (x = 0; x < w; x++) { - int tile = (*tilemap & 0x3ff) * 32; - int attr = *tilemap & 0xc00; - if (attr == 0) { - void *src = tiles + tile; - void *dest = output; - int length = 32; - DmaCopy32(3, src, dest, length); - } else if (attr == 0x800) { // yflip - for (i = 0; i < 8; i++) { - void *src = tiles; - void *dest = output; - int length = 4; - // this is likely wrong, but makes it closer to matching - src += tile + (7 - i) * 4; - dest += i * 4; - DmaCopy32(3, src, dest, length); - } - } else { // xflip - for (i = 0; i < 8; i++) { - for (j = 0; j < 4; j++) { - u8 i2 = i * 4; - xflip[i2 + (3-j)] = (tiles[tile + i2 + j] & 0xf) << 4; - xflip[i2 + (3-j)] |= tiles[tile + i2 + j] >> 4; - } - } - if (*tilemap & 0x800) { // yflip - for (i = 0; i < 8; i++) { - void *src = xflip + (7-i) * 4; - void *dest = output + i*4; - int length = 4; - DmaCopy32(3, src, dest, length); - } - } else { - void *src = xflip; - void *dest = output; - int length = 32; - DmaCopy32(3, src, dest, length); - } - } - tilemap++; - output += 32; - } - tilemap += filler; - } + u8 x, y; + s8 i, j; + u8 xflip[32]; + u8 h = gSpriteDimensions[shape][size][1]; + u8 w = gSpriteDimensions[shape][size][0]; + for (y = 0; y < h; y++) { + int filler = 32 - w; + for (x = 0; x < w; x++) { + int tile = (*tilemap & 0x3ff) * 32; + int attr = *tilemap & 0xc00; + if (attr == 0) { + void *src = tiles + tile; + void *dest = output; + int length = 32; + DmaCopy32(3, src, dest, length); + } else if (attr == 0x800) { // yflip + for (i = 0; i < 8; i++) { + void *src = tiles; + void *dest = output; + int length = 4; + // this is likely wrong, but makes it closer to matching + src += tile + (7 - i) * 4; + dest += i * 4; + DmaCopy32(3, src, dest, length); + } + } else { // xflip + for (i = 0; i < 8; i++) { + for (j = 0; j < 4; j++) { + u8 i2 = i * 4; + xflip[i2 + (3-j)] = (tiles[tile + i2 + j] & 0xf) << 4; + xflip[i2 + (3-j)] |= tiles[tile + i2 + j] >> 4; + } + } + if (*tilemap & 0x800) { // yflip + for (i = 0; i < 8; i++) { + void *src = xflip + (7-i) * 4; + void *dest = output + i*4; + int length = 4; + DmaCopy32(3, src, dest, length); + } + } else { + void *src = xflip; + void *dest = output; + int length = 32; + DmaCopy32(3, src, dest, length); + } + } + tilemap++; + output += 32; + } + tilemap += filler; + } } #else __attribute__((naked)) void CopySpriteTiles(u8 shape, u8 size, u8 *tiles, u16 *tilemap, u8 *output) { - asm("\n" - " .syntax unified\n" - " push {r4-r7,lr}\n" - " mov r7, r10\n" - " mov r6, r9\n" - " mov r5, r8\n" - " push {r5-r7}\n" - " sub sp, 0x3C\n" - " str r2, [sp, 0x20]\n" - " adds r4, r3, 0\n" - " ldr r7, [sp, 0x5C]\n" - " lsls r0, 24\n" - " lsls r1, 24\n" - " ldr r2, _08041008 @ =gSpriteDimensions\n" - " lsrs r1, 23\n" - " lsrs r0, 21\n" - " adds r1, r0\n" - " adds r0, r2, 0x1\n" - " adds r0, r1, r0\n" - " ldrb r0, [r0]\n" - " str r0, [sp, 0x24]\n" - " adds r1, r2\n" - " ldrb r1, [r1]\n" - " str r1, [sp, 0x28]\n" - " movs r1, 0\n" - " cmp r1, r0\n" - " bcc _08040FB4\n" - " b _08041136\n" - "_08040FB4:\n" - " movs r0, 0x20\n" - " ldr r2, [sp, 0x28]\n" - " subs r0, r2\n" - " lsls r0, 1\n" - " str r0, [sp, 0x2C]\n" - "_08040FBE:\n" - " movs r2, 0\n" - " adds r1, 0x1\n" - " str r1, [sp, 0x34]\n" - " ldr r3, [sp, 0x28]\n" - " cmp r2, r3\n" - " bcc _08040FCC\n" - " b _08041124\n" - "_08040FCC:\n" - " ldr r0, _0804100C @ =0x040000d4\n" - " mov r8, r0\n" - "_08040FD0:\n" - " ldrh r1, [r4]\n" - " ldr r0, _08041010 @ =0x000003ff\n" - " ands r0, r1\n" - " lsls r0, 5\n" - " mov r12, r0\n" - " movs r0, 0xC0\n" - " lsls r0, 4\n" - " ands r0, r1\n" - " mov r3, sp\n" - " strh r1, [r3, 0x38]\n" - " cmp r0, 0\n" - " bne _08041018\n" - " ldr r0, [sp, 0x20]\n" - " add r0, r12\n" - " mov r1, r8\n" - " str r0, [r1]\n" - " str r7, [r1, 0x4]\n" - " ldr r3, _08041014 @ =0x84000008\n" - " str r3, [r1, 0x8]\n" - " ldr r0, [r1, 0x8]\n" - " adds r4, 0x2\n" - " str r4, [sp, 0x30]\n" - " adds r7, 0x20\n" - " mov r10, r7\n" - " adds r2, 0x1\n" - " mov r9, r2\n" - " b _08041112\n" - " .align 2, 0\n" - "_08041008: .4byte gSpriteDimensions\n" - "_0804100C: .4byte 0x040000d4\n" - "_08041010: .4byte 0x000003ff\n" - "_08041014: .4byte 0x84000008\n" - "_08041018:\n" - " movs r1, 0x80\n" - " lsls r1, 4\n" - " cmp r0, r1\n" - " bne _08041068\n" - " movs r3, 0\n" - " adds r4, 0x2\n" - " str r4, [sp, 0x30]\n" - " movs r0, 0x20\n" - " adds r0, r7\n" - " mov r10, r0\n" - " adds r2, 0x1\n" - " mov r9, r2\n" - " ldr r4, _08041060 @ =0x040000d4\n" - " ldr r6, _08041064 @ =0x84000001\n" - " movs r5, 0x7\n" - "_08041036:\n" - " lsls r2, r3, 24\n" - " asrs r2, 24\n" - " subs r0, r5, r2\n" - " lsls r0, 2\n" - " add r0, r12\n" - " ldr r1, [sp, 0x20]\n" - " adds r0, r1, r0\n" - " lsls r1, r2, 2\n" - " adds r1, r7, r1\n" - " str r0, [r4]\n" - " str r1, [r4, 0x4]\n" - " str r6, [r4, 0x8]\n" - " ldr r0, [r4, 0x8]\n" - " adds r2, 0x1\n" - " lsls r2, 24\n" - " lsrs r3, r2, 24\n" - " asrs r2, 24\n" - " cmp r2, 0x7\n" - " ble _08041036\n" - " b _08041112\n" - " .align 2, 0\n" - "_08041060: .4byte 0x040000d4\n" - "_08041064: .4byte 0x84000001\n" - "_08041068:\n" - " movs r3, 0\n" - " adds r4, 0x2\n" - " str r4, [sp, 0x30]\n" - " movs r0, 0x20\n" - " adds r0, r7\n" - " mov r10, r0\n" - " adds r2, 0x1\n" - " mov r9, r2\n" - "_08041078:\n" - " movs r2, 0\n" - " lsls r4, r3, 24\n" - " lsls r0, r4, 2\n" - " lsrs r0, 24\n" - " adds r6, r0, 0x3\n" - " mov r1, r12\n" - " adds r5, r1, r0\n" - "_08041086:\n" - " lsls r1, r2, 24\n" - " asrs r1, 24\n" - " subs r0, r6, r1\n" - " mov r2, sp\n" - " adds r3, r2, r0\n" - " adds r0, r5, r1\n" - " ldr r2, [sp, 0x20]\n" - " adds r0, r2, r0\n" - " ldrb r2, [r0]\n" - " movs r0, 0xF\n" - " ands r0, r2\n" - " lsls r0, 4\n" - " lsrs r2, 4\n" - " orrs r0, r2\n" - " strb r0, [r3]\n" - " adds r1, 0x1\n" - " lsls r1, 24\n" - " lsrs r2, r1, 24\n" - " asrs r1, 24\n" - " cmp r1, 0x3\n" - " ble _08041086\n" - " movs r3, 0x80\n" - " lsls r3, 17\n" - " adds r0, r4, r3\n" - " lsrs r3, r0, 24\n" - " asrs r0, 24\n" - " cmp r0, 0x7\n" - " ble _08041078\n" - " movs r0, 0x80\n" - " lsls r0, 4\n" - " mov r1, sp\n" - " ldrh r1, [r1, 0x38]\n" - " ands r0, r1\n" - " cmp r0, 0\n" - " beq _08041104\n" - " movs r3, 0\n" - " ldr r4, _080410FC @ =0x040000d4\n" - " ldr r6, _08041100 @ =0x84000001\n" - " movs r5, 0x7\n" - "_080410D4:\n" - " lsls r1, r3, 24\n" - " asrs r1, 24\n" - " subs r0, r5, r1\n" - " lsls r0, 2\n" - " mov r3, sp\n" - " adds r2, r3, r0\n" - " lsls r0, r1, 2\n" - " adds r0, r7, r0\n" - " str r2, [r4]\n" - " str r0, [r4, 0x4]\n" - " str r6, [r4, 0x8]\n" - " ldr r0, [r4, 0x8]\n" - " adds r1, 0x1\n" - " lsls r1, 24\n" - " lsrs r3, r1, 24\n" - " asrs r1, 24\n" - " cmp r1, 0x7\n" - " ble _080410D4\n" - " b _08041112\n" - " .align 2, 0\n" - "_080410FC: .4byte 0x040000d4\n" - "_08041100: .4byte 0x84000001\n" - "_08041104:\n" - " mov r0, sp\n" - " mov r1, r8\n" - " str r0, [r1]\n" - " str r7, [r1, 0x4]\n" - " ldr r2, _08041148 @ =0x84000008\n" - " str r2, [r1, 0x8]\n" - " ldr r0, [r1, 0x8]\n" - "_08041112:\n" - " ldr r4, [sp, 0x30]\n" - " mov r7, r10\n" - " mov r3, r9\n" - " lsls r0, r3, 24\n" - " lsrs r2, r0, 24\n" - " ldr r0, [sp, 0x28]\n" - " cmp r2, r0\n" - " bcs _08041124\n" - " b _08040FD0\n" - "_08041124:\n" - " ldr r1, [sp, 0x2C]\n" - " adds r4, r1\n" - " ldr r2, [sp, 0x34]\n" - " lsls r0, r2, 24\n" - " lsrs r1, r0, 24\n" - " ldr r3, [sp, 0x24]\n" - " cmp r1, r3\n" - " bcs _08041136\n" - " b _08040FBE\n" - "_08041136:\n" - " add sp, 0x3C\n" - " pop {r3-r5}\n" - " mov r8, r3\n" - " mov r9, r4\n" - " mov r10, r5\n" - " pop {r4-r7}\n" - " pop {r0}\n" - " bx r0\n" - " .align 2, 0\n" - "_08041148: .4byte 0x84000008\n" - " .syntax divided\n" - ); + asm("\n" + " .syntax unified\n" + " push {r4-r7,lr}\n" + " mov r7, r10\n" + " mov r6, r9\n" + " mov r5, r8\n" + " push {r5-r7}\n" + " sub sp, 0x3C\n" + " str r2, [sp, 0x20]\n" + " adds r4, r3, 0\n" + " ldr r7, [sp, 0x5C]\n" + " lsls r0, 24\n" + " lsls r1, 24\n" + " ldr r2, _08041008 @ =gSpriteDimensions\n" + " lsrs r1, 23\n" + " lsrs r0, 21\n" + " adds r1, r0\n" + " adds r0, r2, 0x1\n" + " adds r0, r1, r0\n" + " ldrb r0, [r0]\n" + " str r0, [sp, 0x24]\n" + " adds r1, r2\n" + " ldrb r1, [r1]\n" + " str r1, [sp, 0x28]\n" + " movs r1, 0\n" + " cmp r1, r0\n" + " bcc _08040FB4\n" + " b _08041136\n" + "_08040FB4:\n" + " movs r0, 0x20\n" + " ldr r2, [sp, 0x28]\n" + " subs r0, r2\n" + " lsls r0, 1\n" + " str r0, [sp, 0x2C]\n" + "_08040FBE:\n" + " movs r2, 0\n" + " adds r1, 0x1\n" + " str r1, [sp, 0x34]\n" + " ldr r3, [sp, 0x28]\n" + " cmp r2, r3\n" + " bcc _08040FCC\n" + " b _08041124\n" + "_08040FCC:\n" + " ldr r0, _0804100C @ =0x040000d4\n" + " mov r8, r0\n" + "_08040FD0:\n" + " ldrh r1, [r4]\n" + " ldr r0, _08041010 @ =0x000003ff\n" + " ands r0, r1\n" + " lsls r0, 5\n" + " mov r12, r0\n" + " movs r0, 0xC0\n" + " lsls r0, 4\n" + " ands r0, r1\n" + " mov r3, sp\n" + " strh r1, [r3, 0x38]\n" + " cmp r0, 0\n" + " bne _08041018\n" + " ldr r0, [sp, 0x20]\n" + " add r0, r12\n" + " mov r1, r8\n" + " str r0, [r1]\n" + " str r7, [r1, 0x4]\n" + " ldr r3, _08041014 @ =0x84000008\n" + " str r3, [r1, 0x8]\n" + " ldr r0, [r1, 0x8]\n" + " adds r4, 0x2\n" + " str r4, [sp, 0x30]\n" + " adds r7, 0x20\n" + " mov r10, r7\n" + " adds r2, 0x1\n" + " mov r9, r2\n" + " b _08041112\n" + " .align 2, 0\n" + "_08041008: .4byte gSpriteDimensions\n" + "_0804100C: .4byte 0x040000d4\n" + "_08041010: .4byte 0x000003ff\n" + "_08041014: .4byte 0x84000008\n" + "_08041018:\n" + " movs r1, 0x80\n" + " lsls r1, 4\n" + " cmp r0, r1\n" + " bne _08041068\n" + " movs r3, 0\n" + " adds r4, 0x2\n" + " str r4, [sp, 0x30]\n" + " movs r0, 0x20\n" + " adds r0, r7\n" + " mov r10, r0\n" + " adds r2, 0x1\n" + " mov r9, r2\n" + " ldr r4, _08041060 @ =0x040000d4\n" + " ldr r6, _08041064 @ =0x84000001\n" + " movs r5, 0x7\n" + "_08041036:\n" + " lsls r2, r3, 24\n" + " asrs r2, 24\n" + " subs r0, r5, r2\n" + " lsls r0, 2\n" + " add r0, r12\n" + " ldr r1, [sp, 0x20]\n" + " adds r0, r1, r0\n" + " lsls r1, r2, 2\n" + " adds r1, r7, r1\n" + " str r0, [r4]\n" + " str r1, [r4, 0x4]\n" + " str r6, [r4, 0x8]\n" + " ldr r0, [r4, 0x8]\n" + " adds r2, 0x1\n" + " lsls r2, 24\n" + " lsrs r3, r2, 24\n" + " asrs r2, 24\n" + " cmp r2, 0x7\n" + " ble _08041036\n" + " b _08041112\n" + " .align 2, 0\n" + "_08041060: .4byte 0x040000d4\n" + "_08041064: .4byte 0x84000001\n" + "_08041068:\n" + " movs r3, 0\n" + " adds r4, 0x2\n" + " str r4, [sp, 0x30]\n" + " movs r0, 0x20\n" + " adds r0, r7\n" + " mov r10, r0\n" + " adds r2, 0x1\n" + " mov r9, r2\n" + "_08041078:\n" + " movs r2, 0\n" + " lsls r4, r3, 24\n" + " lsls r0, r4, 2\n" + " lsrs r0, 24\n" + " adds r6, r0, 0x3\n" + " mov r1, r12\n" + " adds r5, r1, r0\n" + "_08041086:\n" + " lsls r1, r2, 24\n" + " asrs r1, 24\n" + " subs r0, r6, r1\n" + " mov r2, sp\n" + " adds r3, r2, r0\n" + " adds r0, r5, r1\n" + " ldr r2, [sp, 0x20]\n" + " adds r0, r2, r0\n" + " ldrb r2, [r0]\n" + " movs r0, 0xF\n" + " ands r0, r2\n" + " lsls r0, 4\n" + " lsrs r2, 4\n" + " orrs r0, r2\n" + " strb r0, [r3]\n" + " adds r1, 0x1\n" + " lsls r1, 24\n" + " lsrs r2, r1, 24\n" + " asrs r1, 24\n" + " cmp r1, 0x3\n" + " ble _08041086\n" + " movs r3, 0x80\n" + " lsls r3, 17\n" + " adds r0, r4, r3\n" + " lsrs r3, r0, 24\n" + " asrs r0, 24\n" + " cmp r0, 0x7\n" + " ble _08041078\n" + " movs r0, 0x80\n" + " lsls r0, 4\n" + " mov r1, sp\n" + " ldrh r1, [r1, 0x38]\n" + " ands r0, r1\n" + " cmp r0, 0\n" + " beq _08041104\n" + " movs r3, 0\n" + " ldr r4, _080410FC @ =0x040000d4\n" + " ldr r6, _08041100 @ =0x84000001\n" + " movs r5, 0x7\n" + "_080410D4:\n" + " lsls r1, r3, 24\n" + " asrs r1, 24\n" + " subs r0, r5, r1\n" + " lsls r0, 2\n" + " mov r3, sp\n" + " adds r2, r3, r0\n" + " lsls r0, r1, 2\n" + " adds r0, r7, r0\n" + " str r2, [r4]\n" + " str r0, [r4, 0x4]\n" + " str r6, [r4, 0x8]\n" + " ldr r0, [r4, 0x8]\n" + " adds r1, 0x1\n" + " lsls r1, 24\n" + " lsrs r3, r1, 24\n" + " asrs r1, 24\n" + " cmp r1, 0x7\n" + " ble _080410D4\n" + " b _08041112\n" + " .align 2, 0\n" + "_080410FC: .4byte 0x040000d4\n" + "_08041100: .4byte 0x84000001\n" + "_08041104:\n" + " mov r0, sp\n" + " mov r1, r8\n" + " str r0, [r1]\n" + " str r7, [r1, 0x4]\n" + " ldr r2, _08041148 @ =0x84000008\n" + " str r2, [r1, 0x8]\n" + " ldr r0, [r1, 0x8]\n" + "_08041112:\n" + " ldr r4, [sp, 0x30]\n" + " mov r7, r10\n" + " mov r3, r9\n" + " lsls r0, r3, 24\n" + " lsrs r2, r0, 24\n" + " ldr r0, [sp, 0x28]\n" + " cmp r2, r0\n" + " bcs _08041124\n" + " b _08040FD0\n" + "_08041124:\n" + " ldr r1, [sp, 0x2C]\n" + " adds r4, r1\n" + " ldr r2, [sp, 0x34]\n" + " lsls r0, r2, 24\n" + " lsrs r1, r0, 24\n" + " ldr r3, [sp, 0x24]\n" + " cmp r1, r3\n" + " bcs _08041136\n" + " b _08040FBE\n" + "_08041136:\n" + " add sp, 0x3C\n" + " pop {r3-r5}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " mov r10, r5\n" + " pop {r4-r7}\n" + " pop {r0}\n" + " bx r0\n" + " .align 2, 0\n" + "_08041148: .4byte 0x84000008\n" + " .syntax divided\n" + ); } #endif int CountTrailingZeroBits(u32 value) { - u8 i; - for (i = 0; i < 32; i++) { - if ((value & 1) == 0) { - value >>= 1; - } else { - return i; - } - } - return 0; + u8 i; + for (i = 0; i < 32; i++) { + if ((value & 1) == 0) { + value >>= 1; + } else { + return i; + } + } + return 0; } u16 CalcCRC16(u8 *data, int length) { - u16 i, j; - u16 crc = 0x1121; - for (i = 0; i < length; i++) { - crc ^= data[i]; - for (j = 0; j < 8; j++) { - if (crc & 1) { - crc = (crc >> 1) ^ 0x8408; - } else { - crc >>= 1; - } - } - } - return ~crc; + u16 i, j; + u16 crc = 0x1121; + for (i = 0; i < length; i++) { + crc ^= data[i]; + for (j = 0; j < 8; j++) { + if (crc & 1) { + crc = (crc >> 1) ^ 0x8408; + } else { + crc >>= 1; + } + } + } + return ~crc; } u16 CalcCRC16WithTable(u8 *data, int length) { - u16 i; - u16 crc = 0x1121; - u8 byte; - for (i = 0; i < length; i++) { - byte = crc >> 8; - crc ^= data[i]; - crc = byte ^ gCrc16Table[(u8)crc]; - } - return ~crc; + u16 i; + u16 crc = 0x1121; + u8 byte; + for (i = 0; i < length; i++) { + byte = crc >> 8; + crc ^= data[i]; + crc = byte ^ gCrc16Table[(u8)crc]; + } + return ~crc; } diff --git a/src/wallclock.c b/src/wallclock.c index 0b9948adc..d55d14edb 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -434,7 +434,7 @@ static void Task_SetClock4(u8 taskId) return; case -1: //B button case 1: //NO - sub_8072DEC(); + HandleDestroyMenuCursors(); PlaySE(SE_SELECT); MenuZeroFillWindowRect(23, 8, 29, 13); MenuZeroFillWindowRect(2, 16, 27, 19); diff --git a/sym_bss.txt b/sym_bss.txt index c7e0b5d6e..315bad6bb 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -160,7 +160,7 @@ gUnknown_03000760: @ 3000760 gUnknown_030007B0: @ 30007B0 .space 0x4 -gUnknown_030007B4: @ 30007B4 +gPcItemMenuOptionsNum: @ 30007B4 .space 0x4 gUnknown_030007B8: @ 30007B8 diff --git a/sym_ewram.txt b/sym_ewram.txt index bf976e5dd..dadf5e615 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -976,7 +976,7 @@ gUnknown_02039310: @ 2039310 gUnknown_02039312: @ 2039312 .space 0x2 -gUnknown_02039314: @ 2039314 +gPcItemMenuOptionOrder: @ 2039314 .space 0x4 gUnknown_02039318: @ 2039318 |