diff options
author | yenatch <yenatch@gmail.com> | 2017-05-21 00:54:20 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-21 00:54:20 -0400 |
commit | 1c49064780f87a874c8f516ef20be61b17bafef0 (patch) | |
tree | 39d88024b6c278f8c4182ee869db6316c71bd8bd | |
parent | 9281b378095596896fce5be481fb40966226d955 (diff) | |
parent | ea181bea7652e6ea28705302ce7e85998e248986 (diff) |
Merge pull request #299 from PikalaxALT/master
Secret base and TV decompilation
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | asm/easy_chat.s | 28 | ||||
-rw-r--r-- | asm/secret_base.s | 2028 | ||||
-rw-r--r-- | asm/tv.s | 6507 | ||||
-rw-r--r-- | data/scripts/maps/SlateportCity.inc | 8 | ||||
-rw-r--r-- | data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc | 8 | ||||
-rw-r--r-- | include/asm.inc.h | 6 | ||||
-rw-r--r-- | include/contest_painting.h | 8 | ||||
-rw-r--r-- | include/decoration.h | 19 | ||||
-rw-r--r-- | include/easy_chat.h | 1 | ||||
-rw-r--r-- | include/flags.h | 4 | ||||
-rw-r--r-- | include/global.fieldmap.h | 4 | ||||
-rw-r--r-- | include/global.h | 207 | ||||
-rw-r--r-- | include/item.h | 19 | ||||
-rw-r--r-- | include/pokedex.h | 2 | ||||
-rw-r--r-- | include/tv.h | 23 | ||||
-rw-r--r-- | include/vars.h | 11 | ||||
-rw-r--r-- | ld_script.txt | 10 | ||||
-rw-r--r-- | src/easy_chat.c | 6 | ||||
-rw-r--r-- | src/item.c | 19 | ||||
-rw-r--r-- | src/record_mixing.c | 2 | ||||
-rw-r--r-- | src/secret_base.c | 1056 | ||||
-rw-r--r-- | src/tv.c | 2773 |
23 files changed, 4078 insertions, 8672 deletions
diff --git a/.gitignore b/.gitignore index 78af8c737..13752b437 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ *.bat sound/**/*.bin src/*.s -tools/agbcc ld_script_ruby.txt ld_script_sapphire.txt *.map diff --git a/asm/easy_chat.s b/asm/easy_chat.s index b9f27b895..466d371a1 100644 --- a/asm/easy_chat.s +++ b/asm/easy_chat.s @@ -11165,32 +11165,4 @@ _080EB6F4: .4byte gSaveBlock1 + 0x273A _080EB6F8: .4byte 0x0000ffff thumb_func_end unref_sub_80EB684 - thumb_func_start sub_80EB6FC -sub_80EB6FC: @ 80EB6FC - push {lr} - adds r2, r0, 0 - lsls r1, 16 - ldr r0, _080EB724 @ =0xffff0000 - adds r1, r0 - lsrs r0, r1, 16 - ldr r1, _080EB728 @ =0x0000ffff - cmp r0, r1 - beq _080EB71E - adds r3, r1, 0 -_080EB710: - strh r3, [r2] - adds r2, 0x2 - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - cmp r0, r1 - bne _080EB710 -_080EB71E: - pop {r0} - bx r0 - .align 2, 0 -_080EB724: .4byte 0xffff0000 -_080EB728: .4byte 0x0000ffff - thumb_func_end sub_80EB6FC - .align 2, 0 @ Don't pad with nop. diff --git a/asm/secret_base.s b/asm/secret_base.s index 81225ba4b..8f2df8396 100644 --- a/asm/secret_base.s +++ b/asm/secret_base.s @@ -4,2036 +4,8 @@ .syntax unified - .text - - thumb_func_start sub_80BB4AC -sub_80BB4AC: @ 80BB4AC - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - adds r3, r0, 0 - movs r0, 0 - strb r0, [r3] - movs r2, 0 - adds r4, r3, 0x2 - movs r5, 0xFF -_080BB4C4: - adds r0, r4, r2 - ldrb r1, [r0] - orrs r1, r5 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x6 - bls _080BB4C4 - movs r2, 0 - adds r5, r3, 0 - adds r5, 0x12 - adds r6, r3, 0 - adds r6, 0x22 - adds r7, r3, 0 - adds r7, 0x4C - adds r0, r3, 0 - adds r0, 0x34 - str r0, [sp] - adds r1, r3, 0 - adds r1, 0x9A - str r1, [sp, 0x4] - movs r0, 0x7C - adds r0, r3 - mov r10, r0 - movs r1, 0x88 - adds r1, r3 - mov r9, r1 - movs r0, 0x94 - adds r0, r3 - mov r8, r0 - adds r1, r3, 0 - adds r1, 0x9 - movs r4, 0 -_080BB508: - adds r0, r1, r2 - strb r4, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x3 - bls _080BB508 - movs r0, 0 - movs r1, 0 - strh r1, [r3, 0xE] - strb r0, [r3, 0x10] - strb r0, [r3, 0x11] - movs r0, 0 - strb r0, [r3, 0x1] - movs r2, 0 - adds r4, r5, 0 - adds r3, r6, 0 -_080BB52A: - adds r0, r4, r2 - strb r1, [r0] - adds r0, r3, r2 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0xF - bls _080BB52A - movs r2, 0 - mov r12, r7 - movs r5, 0 -_080BB542: - movs r1, 0 - adds r7, r2, 0x1 - lsls r4, r2, 2 - lsls r6, r2, 1 - adds r3, r4, 0 -_080BB54C: - adds r0, r3, r1 - lsls r0, 1 - add r0, r12 - strh r5, [r0] - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0x3 - bls _080BB54C - ldr r1, [sp] - adds r0, r1, r4 - str r5, [r0] - ldr r1, [sp, 0x4] - adds r0, r1, r2 - strb r5, [r0] - mov r1, r10 - adds r0, r1, r6 - strh r5, [r0] - mov r1, r9 - adds r0, r1, r6 - strh r5, [r0] - mov r1, r8 - adds r0, r1, r2 - strb r5, [r0] - lsls r0, r7, 16 - lsrs r2, r0, 16 - cmp r2, 0x5 - bls _080BB542 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB4AC - - thumb_func_start ResetSecretBase -ResetSecretBase: @ 80BB594 - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 5 - ldr r1, _080BB5B0 @ =gSaveBlock1 + 0x1A08 - adds r0, r1 - bl sub_80BB4AC - pop {r0} - bx r0 - .align 2, 0 -_080BB5B0: .4byte gSaveBlock1 + 0x1A08 - thumb_func_end ResetSecretBase - - thumb_func_start ResetSecretBases -ResetSecretBases: @ 80BB5B4 - push {r4,lr} - movs r4, 0 -_080BB5B8: - lsls r0, r4, 24 - lsrs r0, 24 - bl ResetSecretBase - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x13 - bls _080BB5B8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end ResetSecretBases - - thumb_func_start sub_80BB5D0 -sub_80BB5D0: @ 80BB5D0 - ldr r0, _080BB5DC @ =gUnknown_020387DC - ldr r1, _080BB5E0 @ =gSpecialVar_0x8004 - ldrh r1, [r1] - strb r1, [r0] - bx lr - .align 2, 0 -_080BB5DC: .4byte gUnknown_020387DC -_080BB5E0: .4byte gSpecialVar_0x8004 - thumb_func_end sub_80BB5D0 - - thumb_func_start sub_80BB5E4 -sub_80BB5E4: @ 80BB5E4 - push {r4,lr} - ldr r0, _080BB5F4 @ =gScriptResult - movs r1, 0 - strh r1, [r0] - movs r3, 0 - adds r4, r0, 0 - b _080BB5FE - .align 2, 0 -_080BB5F4: .4byte gScriptResult -_080BB5F8: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 -_080BB5FE: - cmp r3, 0x13 - bhi _080BB626 - ldr r2, _080BB62C @ =gUnknown_020387DC - ldr r1, _080BB630 @ =gSaveBlock1 - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 5 - adds r0, r1 - ldr r1, _080BB634 @ =0x00001a08 - adds r0, r1 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bne _080BB5F8 - movs r0, 0x1 - strh r0, [r4] - ldr r0, _080BB638 @ =0x00004054 - adds r1, r3, 0 - bl VarSet -_080BB626: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BB62C: .4byte gUnknown_020387DC -_080BB630: .4byte gSaveBlock1 -_080BB634: .4byte 0x00001a08 -_080BB638: .4byte 0x00004054 - thumb_func_end sub_80BB5E4 - - thumb_func_start sub_80BB63C -sub_80BB63C: @ 80BB63C - push {lr} - ldr r0, _080BB654 @ =gSaveBlock1 - ldr r1, _080BB658 @ =0x00001a08 - adds r0, r1 - ldrb r1, [r0] - cmp r1, 0 - beq _080BB660 - ldr r1, _080BB65C @ =gScriptResult - movs r0, 0x1 - strh r0, [r1] - b _080BB664 - .align 2, 0 -_080BB654: .4byte gSaveBlock1 -_080BB658: .4byte 0x00001a08 -_080BB65C: .4byte gScriptResult -_080BB660: - ldr r0, _080BB668 @ =gScriptResult - strh r1, [r0] -_080BB664: - pop {r0} - bx r0 - .align 2, 0 -_080BB668: .4byte gScriptResult - thumb_func_end sub_80BB63C - - thumb_func_start sub_80BB66C -sub_80BB66C: @ 80BB66C - push {r4,lr} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - adds r1, r0, 0 - ldr r2, _080BB6A4 @ =0x00000fff - adds r0, r2, 0 - ands r1, r0 - adds r0, r1, 0 - subs r0, 0x90 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6A8 - movs r0, 0x1 - b _080BB702 - .align 2, 0 -_080BB6A4: .4byte 0x00000fff -_080BB6A8: - adds r0, r1, 0 - subs r0, 0x92 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6B8 - movs r0, 0x2 - b _080BB702 -_080BB6B8: - adds r0, r1, 0 - subs r0, 0x9A - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6C8 - movs r0, 0x3 - b _080BB702 -_080BB6C8: - adds r0, r1, 0 - subs r0, 0x94 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bhi _080BB6D8 - movs r0, 0x4 - b _080BB702 -_080BB6D8: - adds r0, r1, 0 - subs r0, 0x96 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080BB6EC - cmp r1, 0x9C - beq _080BB6EC - cmp r1, 0x9D - bne _080BB6F0 -_080BB6EC: - movs r0, 0x5 - b _080BB702 -_080BB6F0: - adds r0, r1, 0 - subs r0, 0x98 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bls _080BB700 - movs r0, 0 - b _080BB702 -_080BB700: - movs r0, 0x6 -_080BB702: - add sp, 0x4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BB66C - - thumb_func_start sub_80BB70C -sub_80BB70C: @ 80BB70C - push {r4,lr} - ldr r4, _080BB720 @ =gSpecialVar_0x8007 - bl sub_80BB66C - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BB720: .4byte gSpecialVar_0x8007 - thumb_func_end sub_80BB70C - - thumb_func_start unref_sub_80BB724 -unref_sub_80BB724: @ 80BB724 - push {r4-r6,lr} - adds r4, r0, 0 - lsls r1, 24 - movs r2, 0 - ldr r6, _080BB748 @ =0x00000fff - lsrs r3, r1, 24 - ldr r5, _080BB74C @ =0x000001ff -_080BB732: - lsls r0, r2, 1 - adds r0, r4 - ldrh r1, [r0] - adds r0, r6, 0 - ands r0, r1 - cmp r0, r3 - bne _080BB750 - lsls r0, r2, 16 - asrs r0, 16 - b _080BB75E - .align 2, 0 -_080BB748: .4byte 0x00000fff -_080BB74C: .4byte 0x000001ff -_080BB750: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r5 - bls _080BB732 - movs r0, 0x1 - negs r0, r0 -_080BB75E: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end unref_sub_80BB724 - - thumb_func_start sub_80BB764 -sub_80BB764: @ 80BB764 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r9, r0 - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - mov r8, r2 - movs r0, 0 - mov r12, r0 - ldr r1, _080BB7C8 @ =gMapHeader - ldr r0, [r1] - ldr r3, [r0, 0x4] - cmp r12, r3 - bge _080BB7EE - ldr r0, [r0] - str r0, [sp, 0x4] - str r3, [sp] -_080BB78E: - movs r2, 0 - mov r1, r12 - lsls r7, r1, 16 - ldr r0, [sp, 0x4] - cmp r2, r0 - bge _080BB7DC - ldr r0, _080BB7C8 @ =gMapHeader - ldr r1, [r0] - asrs r0, r7, 16 - ldr r4, [r1] - adds r6, r0, 0 - muls r6, r4 - ldr r5, [r1, 0xC] -_080BB7A8: - lsls r0, r2, 16 - asrs r3, r0, 16 - adds r0, r6, r3 - lsls r0, 1 - adds r0, r5 - ldrh r1, [r0] - ldr r0, _080BB7CC @ =0x000003ff - ands r0, r1 - cmp r0, r8 - bne _080BB7D0 - mov r1, r9 - strh r2, [r1] - mov r1, r12 - mov r0, r10 - strh r1, [r0] - b _080BB7EE - .align 2, 0 -_080BB7C8: .4byte gMapHeader -_080BB7CC: .4byte 0x000003ff -_080BB7D0: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, r4 - blt _080BB7A8 -_080BB7DC: - movs r1, 0x80 - lsls r1, 9 - adds r0, r7, r1 - lsrs r1, r0, 16 - mov r12, r1 - asrs r0, 16 - ldr r1, [sp] - cmp r0, r1 - blt _080BB78E -_080BB7EE: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB764 - - thumb_func_start sub_80BB800 -sub_80BB800: @ 80BB800 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl GetXYCoordsOneStepInFrontOfPlayer - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileIdAt - movs r5, 0 - mov r12, r4 - lsls r0, 16 - asrs r3, r0, 16 - ldr r1, _080BB84C @ =gUnknown_083D1358 - mov r8, r1 - adds r7, r0, 0 - mov r4, sp - mov r6, r12 -_080BB834: - ldr r0, _080BB84C @ =gUnknown_083D1358 - lsls r1, r5, 2 - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r3 - bne _080BB850 - movs r3, 0 - ldrsh r0, [r4, r3] - movs r5, 0 - ldrsh r1, [r6, r5] - ldrh r3, [r2, 0x2] - b _080BB878 - .align 2, 0 -_080BB84C: .4byte gUnknown_083D1358 -_080BB850: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x6 - bls _080BB834 - movs r5, 0 - mov r4, sp - mov r6, r12 -_080BB860: - lsls r0, r5, 2 - mov r1, r8 - adds r3, r0, r1 - ldrh r1, [r3, 0x2] - asrs r0, r7, 16 - cmp r1, r0 - bne _080BB892 - movs r2, 0 - ldrsh r0, [r4, r2] - movs r5, 0 - ldrsh r1, [r6, r5] - ldrh r3, [r3] -_080BB878: - movs r5, 0xC0 - lsls r5, 4 - adds r2, r5, 0 - orrs r2, r3 - bl MapGridSetMetatileIdAt - movs r1, 0 - ldrsh r0, [r4, r1] - movs r2, 0 - ldrsh r1, [r6, r2] - bl CurrentMapDrawMetatileAt - b _080BB89C -_080BB892: - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x6 - bls _080BB860 -_080BB89C: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB800 - - thumb_func_start sub_80BB8A8 -sub_80BB8A8: @ 80BB8A8 - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080BB8AE: - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080BB8BA - adds r0, r1, 0 - b _080BB8C6 -_080BB8BA: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x6 - bls _080BB8AE - movs r0, 0x7 -_080BB8C6: - pop {r1} - bx r1 - thumb_func_end sub_80BB8A8 - - thumb_func_start sub_80BB8CC -sub_80BB8CC: @ 80BB8CC - push {r4-r6,lr} - ldr r2, _080BB948 @ =gSaveBlock1 - ldr r0, _080BB94C @ =gUnknown_020387DC - ldrb r1, [r0] - ldr r3, _080BB950 @ =0x00001a08 - adds r0, r2, r3 - strb r1, [r0] - movs r3, 0 - ldr r0, _080BB954 @ =0x00001a11 - adds r2, r0 - ldr r4, _080BB958 @ =gSaveBlock2 + 0xA -_080BB8E2: - adds r1, r3, r2 - adds r0, r3, r4 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x3 - bls _080BB8E2 - ldr r0, _080BB95C @ =0x00004054 - movs r1, 0 - bl VarSet - ldr r6, _080BB960 @ =gSaveBlock2 - adds r0, r6, 0 - bl sub_80BB8A8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r5, _080BB964 @ =gSaveBlock1 + 0x1A0A - adds r0, r5, 0 - movs r1, 0xFF - movs r2, 0x7 - bl memset - adds r0, r5, 0 - adds r1, r6, 0 - adds r2, r4, 0 - bl StringCopyN - ldrb r0, [r6, 0x8] - subs r5, 0x1 - movs r1, 0x1 - ands r1, r0 - lsls r1, 4 - ldrb r2, [r5] - movs r0, 0x11 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - ldr r0, _080BB968 @ =0x00004026 - ldr r1, _080BB96C @ =gMapHeader - ldrb r1, [r1, 0x14] - bl VarSet - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BB948: .4byte gSaveBlock1 -_080BB94C: .4byte gUnknown_020387DC -_080BB950: .4byte 0x00001a08 -_080BB954: .4byte 0x00001a11 -_080BB958: .4byte gSaveBlock2 + 0xA -_080BB95C: .4byte 0x00004054 -_080BB960: .4byte gSaveBlock2 -_080BB964: .4byte gSaveBlock1 + 0x1A0A -_080BB968: .4byte 0x00004026 -_080BB96C: .4byte gMapHeader - thumb_func_end sub_80BB8CC - - thumb_func_start sub_80BB970 -sub_80BB970: @ 80BB970 - push {r4-r7,lr} - adds r5, r0, 0 - movs r2, 0 - b _080BBA06 -_080BB978: - ldr r0, [r5, 0x10] - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r3, r1, r0 - ldrb r0, [r3, 0x5] - adds r7, r2, 0x1 - cmp r0, 0x8 - bne _080BBA02 - movs r2, 0 - ldr r4, _080BB9E0 @ =gSaveBlock1 - adds r6, r1, 0 -_080BB990: - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 5 - adds r0, r4 - ldr r1, _080BB9E4 @ =0x00001a08 - adds r0, r1 - ldrb r1, [r0] - ldr r0, [r3, 0x8] - cmp r1, r0 - bne _080BB9F8 - ldrh r0, [r3] - adds r0, 0x7 - ldrh r1, [r3, 0x2] - adds r1, 0x7 - bl MapGridGetMetatileIdAt - movs r3, 0 - lsls r0, 16 - asrs r4, r0, 16 -_080BB9B6: - ldr r0, _080BB9E8 @ =gUnknown_083D1358 - lsls r1, r3, 2 - adds r2, r1, r0 - ldrh r0, [r2] - cmp r0, r4 - bne _080BB9EC - ldr r1, [r5, 0x10] - adds r1, r6, r1 - ldrh r0, [r1] - adds r0, 0x7 - ldrh r1, [r1, 0x2] - adds r1, 0x7 - ldrh r3, [r2, 0x2] - movs r4, 0xC0 - lsls r4, 4 - adds r2, r4, 0 - orrs r2, r3 - bl MapGridSetMetatileIdAt - b _080BBA02 - .align 2, 0 -_080BB9E0: .4byte gSaveBlock1 -_080BB9E4: .4byte 0x00001a08 -_080BB9E8: .4byte gUnknown_083D1358 -_080BB9EC: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0x6 - bls _080BB9B6 - b _080BBA02 -_080BB9F8: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x13 - bls _080BB990 -_080BBA02: - lsls r0, r7, 16 - lsrs r2, r0, 16 -_080BBA06: - ldrb r0, [r5, 0x3] - cmp r2, r0 - bcc _080BB978 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BB970 - - thumb_func_start sub_80BBA14 -sub_80BBA14: @ 80BBA14 - push {lr} - ldr r0, _080BBA40 @ =gUnknown_020387DC - ldrb r0, [r0] - movs r1, 0xA - bl __udivsi3 - ldr r2, _080BBA44 @ =gUnknown_083D1374 - lsls r0, 26 - asrs r0, 24 - adds r1, r0, r2 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - adds r0, 0x1 - adds r0, r2 - movs r2, 0 - ldrsb r2, [r0, r2] - movs r0, 0x19 - bl warp1_set_2 - pop {r0} - bx r0 - .align 2, 0 -_080BBA40: .4byte gUnknown_020387DC -_080BBA44: .4byte gUnknown_083D1374 - thumb_func_end sub_80BBA14 - - thumb_func_start sub_80BBA48 -sub_80BBA48: @ 80BBA48 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080BBA6C @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r2, r0, r1 - movs r1, 0x8 - ldrsh r0, [r2, r1] - cmp r0, 0x1 - beq _080BBA7C - cmp r0, 0x1 - bgt _080BBA70 - cmp r0, 0 - beq _080BBA76 - b _080BBAD0 - .align 2, 0 -_080BBA6C: .4byte gTasks -_080BBA70: - cmp r0, 0x2 - beq _080BBA94 - b _080BBAD0 -_080BBA76: - movs r0, 0x1 - strh r0, [r2, 0x8] - b _080BBAD0 -_080BBA7C: - ldr r0, _080BBA90 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BBAD0 - movs r0, 0x2 - strh r0, [r2, 0x8] - b _080BBAD0 - .align 2, 0 -_080BBA90: .4byte gPaletteFade -_080BBA94: - ldr r0, _080BBAD8 @ =0x00004054 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080BBADC @ =gSaveBlock1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, r2 - ldr r0, _080BBAE0 @ =0x00001a18 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0xFE - bhi _080BBAB6 - adds r0, 0x1 - strb r0, [r1] -_080BBAB6: - bl sub_80BBA14 - bl warp_in - ldr r0, _080BBAE4 @ =gUnknown_0300485C - ldr r1, _080BBAE8 @ =sub_8080990 - str r1, [r0] - ldr r0, _080BBAEC @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r4, 0 - bl DestroyTask -_080BBAD0: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BBAD8: .4byte 0x00004054 -_080BBADC: .4byte gSaveBlock1 -_080BBAE0: .4byte 0x00001a18 -_080BBAE4: .4byte gUnknown_0300485C -_080BBAE8: .4byte sub_8080990 -_080BBAEC: .4byte CB2_LoadMap - thumb_func_end sub_80BBA48 - - thumb_func_start sub_80BBAF0 -sub_80BBAF0: @ 80BBAF0 - push {lr} - ldr r0, _080BBB1C @ =sub_80BBA48 - movs r1, 0 - bl CreateTask - movs r0, 0x1 - movs r1, 0 - bl fade_screen - ldr r0, _080BBB20 @ =gSaveBlock1 - movs r1, 0x4 - ldrsb r1, [r0, r1] - movs r2, 0x5 - ldrsb r2, [r0, r2] - movs r3, 0x1 - negs r3, r3 - movs r0, 0 - bl saved_warp2_set - pop {r0} - bx r0 - .align 2, 0 -_080BBB1C: .4byte sub_80BBA48 -_080BBB20: .4byte gSaveBlock1 - thumb_func_end sub_80BBAF0 - - thumb_func_start sub_80BBB24 -sub_80BBB24: @ 80BBB24 - push {lr} - ldr r0, _080BBB40 @ =gMapHeader - ldrb r0, [r0, 0x17] - cmp r0, 0x9 - bne _080BBB48 - ldr r0, _080BBB44 @ =0x00004097 - bl VarGet - lsls r0, 16 - cmp r0, 0 - bne _080BBB48 - movs r0, 0 - b _080BBB4A - .align 2, 0 -_080BBB40: .4byte gMapHeader -_080BBB44: .4byte 0x00004097 -_080BBB48: - movs r0, 0x1 -_080BBB4A: - pop {r1} - bx r1 - thumb_func_end sub_80BBB24 - - thumb_func_start sub_80BBB50 -sub_80BBB50: @ 80BBB50 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _080BBB88 @ =gPlayerAvatar - ldrb r1, [r0, 0x5] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BBB8C @ =gMapObjects - adds r0, r1 - movs r1, 0x2 - bl FieldObjectTurn - bl sub_807D770 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BBB80 - bl EnableBothScriptContexts - adds r0, r4, 0 - bl DestroyTask -_080BBB80: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BBB88: .4byte gPlayerAvatar -_080BBB8C: .4byte gMapObjects - thumb_func_end sub_80BBB50 - - thumb_func_start sub_80BBB90 -sub_80BBB90: @ 80BBB90 - push {r4,lr} - sub sp, 0x4 - bl ScriptContext2_Enable - bl HideMapNamePopup - mov r4, sp - adds r4, 0x2 - movs r2, 0x88 - lsls r2, 2 - mov r0, sp - adds r1, r4, 0 - bl sub_80BB764 - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, 0x7 - movs r2, 0 - ldrsh r1, [r4, r2] - adds r1, 0x7 - movs r2, 0xE2 - lsls r2, 4 - bl MapGridSetMetatileIdAt - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - adds r0, 0x7 - movs r2, 0 - ldrsh r1, [r4, r2] - adds r1, 0x7 - bl CurrentMapDrawMetatileAt - bl pal_fill_black - ldr r0, _080BBBE8 @ =sub_80BBB50 - movs r1, 0 - bl CreateTask - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BBBE8: .4byte sub_80BBB50 - thumb_func_end sub_80BBB90 - - thumb_func_start sub_80BBBEC -sub_80BBBEC: @ 80BBBEC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r6, r0, 24 - ldr r0, _080BBC5C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BBC52 - ldr r0, _080BBC60 @ =gUnknown_020387DC - ldrb r0, [r0] - movs r1, 0xA - bl __udivsi3 - ldr r1, _080BBC64 @ =gSaveBlock1 - movs r5, 0x4 - ldrsb r5, [r1, r5] - ldrb r1, [r1, 0x5] - lsls r1, 24 - asrs r1, 24 - movs r2, 0x1 - negs r2, r2 - ldr r4, _080BBC68 @ =gUnknown_083D1374 - lsls r0, 26 - asrs r0, 24 - adds r3, r0, 0x2 - adds r3, r4 - ldrb r3, [r3] - lsls r3, 24 - asrs r3, 24 - adds r0, 0x3 - adds r0, r4 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - str r0, [sp] - adds r0, r5, 0 - bl warp1_set - bl warp_in - ldr r1, _080BBC6C @ =gUnknown_0300485C - ldr r0, _080BBC70 @ =sub_80BBB90 - str r0, [r1] - ldr r0, _080BBC74 @ =CB2_LoadMap - bl SetMainCallback2 - adds r0, r6, 0 - bl DestroyTask -_080BBC52: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BBC5C: .4byte gPaletteFade -_080BBC60: .4byte gUnknown_020387DC -_080BBC64: .4byte gSaveBlock1 -_080BBC68: .4byte gUnknown_083D1374 -_080BBC6C: .4byte gUnknown_0300485C -_080BBC70: .4byte sub_80BBB90 -_080BBC74: .4byte CB2_LoadMap - thumb_func_end sub_80BBBEC - - thumb_func_start sub_80BBC78 -sub_80BBC78: @ 80BBC78 - push {lr} - ldr r0, _080BBCA0 @ =sub_80BBBEC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BBCA4 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - strh r0, [r1, 0x8] - movs r0, 0x1 - movs r1, 0 - bl fade_screen - pop {r0} - bx r0 - .align 2, 0 -_080BBCA0: .4byte sub_80BBBEC -_080BBCA4: .4byte gTasks - thumb_func_end sub_80BBC78 - - thumb_func_start CurrentMapIsSecretBase -CurrentMapIsSecretBase: @ 80BBCA8 - push {lr} - ldr r1, _080BBCC0 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x19 - bne _080BBCC4 - ldrb r0, [r1, 0x5] - cmp r0, 0x17 - bhi _080BBCC4 - movs r0, 0x1 - b _080BBCC6 - .align 2, 0 -_080BBCC0: .4byte gSaveBlock1 -_080BBCC4: - movs r0, 0 -_080BBCC6: - pop {r1} - bx r1 - thumb_func_end CurrentMapIsSecretBase - - thumb_func_start sub_80BBCCC -sub_80BBCCC: @ 80BBCCC - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - bl CurrentMapIsSecretBase - lsls r0, 24 - cmp r0, 0 - beq _080BBDBC - ldr r0, _080BBD70 @ =0x00004054 - bl VarGet - lsls r0, 16 - lsrs r5, r0, 16 - movs r1, 0 - mov r0, sp - strh r1, [r0] - ldr r6, _080BBD74 @ =gSaveBlock1 - mov r4, sp - ldr r0, _080BBD78 @ =0x00001a2a - adds r7, r6, r0 -_080BBCFC: - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 5 - ldrh r1, [r4] - adds r2, r0, r1 - ldr r1, _080BBD7C @ =0x00001a1a - adds r0, r6, r1 - adds r1, r2, r0 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x77 - bhi _080BBD3A - ldr r0, _080BBD80 @ =gDecorations - ldrb r3, [r1] - lsls r1, r3, 5 - adds r1, r0 - ldrb r0, [r1, 0x11] - cmp r0, 0x4 - beq _080BBD3A - adds r0, r2, r7 - ldrb r2, [r0] - lsrs r0, r2, 4 - adds r0, 0x7 - movs r1, 0xF - ands r1, r2 - adds r1, 0x7 - adds r2, r3, 0 - bl sub_80FF394 -_080BBD3A: - ldrh r0, [r4] - adds r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - strh r0, [r4] - cmp r0, 0xF - bls _080BBCFC - cmp r5, 0 - beq _080BBD88 - mov r4, sp - adds r4, 0x2 - movs r2, 0x88 - lsls r2, 2 - mov r0, sp - adds r1, r4, 0 - bl sub_80BB764 - mov r0, sp - ldrh r0, [r0] - adds r0, 0x7 - ldrh r1, [r4] - adds r1, 0x7 - ldr r2, _080BBD84 @ =0x00000e21 - bl MapGridSetMetatileIdAt - b _080BBDBC - .align 2, 0 -_080BBD70: .4byte 0x00004054 -_080BBD74: .4byte gSaveBlock1 -_080BBD78: .4byte 0x00001a2a -_080BBD7C: .4byte 0x00001a1a -_080BBD80: .4byte gDecorations -_080BBD84: .4byte 0x00000e21 -_080BBD88: - mov r0, r8 - cmp r0, 0x1 - bne _080BBDBC - ldr r0, _080BBDC8 @ =0x00004089 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - bne _080BBDBC - mov r4, sp - adds r4, 0x2 - movs r2, 0x88 - lsls r2, 2 - mov r0, sp - adds r1, r4, 0 - bl sub_80BB764 - mov r0, sp - ldrh r0, [r0] - adds r0, 0x7 - ldrh r1, [r4] - adds r1, 0x7 - ldr r2, _080BBDCC @ =0x00000e0a - bl MapGridSetMetatileIdAt -_080BBDBC: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BBDC8: .4byte 0x00004089 -_080BBDCC: .4byte 0x00000e0a - thumb_func_end sub_80BBCCC - - thumb_func_start sub_80BBDD0 -sub_80BBDD0: @ 80BBDD0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - ldr r0, _080BBE00 @ =0x00004054 - bl VarGet - lsls r0, 16 - lsrs r4, r0, 16 - bl CurrentMapIsSecretBase - lsls r0, 24 - cmp r0, 0 - bne _080BBE08 - ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688 - str r0, [sp, 0x4] - adds r0, 0xC - str r0, [sp, 0x8] - movs r1, 0xC - str r1, [sp, 0xC] - b _080BBE1E - .align 2, 0 -_080BBE00: .4byte 0x00004054 -_080BBE04: .4byte gSaveBlock1 + 0x2688 -_080BBE08: - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 5 - ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A - adds r2, r1, r0 - str r2, [sp, 0x4] - adds r0, 0x10 - adds r1, r0 - str r1, [sp, 0x8] - movs r3, 0x10 - str r3, [sp, 0xC] -_080BBE1E: - movs r6, 0 - ldr r4, [sp, 0xC] - cmp r6, r4 - bcc _080BBE28 - b _080BBF6C -_080BBE28: - ldr r5, _080BBF80 @ =gSaveBlock1 - mov r10, r5 -_080BBE2C: - ldr r1, [sp, 0x4] - adds r0, r1, r6 - ldrb r1, [r0] - mov r9, r0 - adds r2, r6, 0x1 - str r2, [sp, 0x10] - cmp r1, 0 - bne _080BBE3E - b _080BBF5E -_080BBE3E: - ldrb r0, [r0] - lsls r0, 5 - ldr r3, _080BBF84 @ =gDecorations - adds r0, r3 - ldrb r0, [r0, 0x11] - cmp r0, 0x4 - beq _080BBE4E - b _080BBF5E -_080BBE4E: - movs r5, 0 - ldr r0, _080BBF88 @ =gMapHeader - ldr r2, [r0, 0x4] - ldrb r3, [r2] - mov r8, r0 - cmp r5, r3 - bcs _080BBE8E - ldr r0, [r2, 0x4] - ldrh r1, [r0, 0x14] - ldr r4, _080BBF8C @ =gSpecialVar_0x8004 - ldrh r0, [r4] - adds r0, 0xAE - adds r7, r4, 0 - cmp r1, r0 - beq _080BBE8E - adds r4, r2, 0 - adds r2, r3, 0 -_080BBE70: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, r2 - bcs _080BBE8E - ldr r1, [r4, 0x4] - lsls r0, r5, 1 - adds r0, r5 - lsls r0, 3 - adds r0, r1 - ldrh r1, [r0, 0x14] - ldrh r0, [r7] - adds r0, 0xAE - cmp r1, r0 - bne _080BBE70 -_080BBE8E: - mov r1, r8 - ldr r0, [r1, 0x4] - ldrb r0, [r0] - cmp r5, r0 - beq _080BBF5E - ldr r7, _080BBF90 @ =gSpecialVar_0x8006 - ldr r2, [sp, 0x8] - adds r1, r2, r6 - ldrb r0, [r1] - lsrs r0, 4 - strh r0, [r7] - ldr r6, _080BBF94 @ =gSpecialVar_0x8007 - ldrb r1, [r1] - movs r0, 0xF - ands r0, r1 - strh r0, [r6] - ldrh r0, [r7] - adds r0, 0x7 - ldrh r1, [r6] - adds r1, 0x7 - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r4, 0 - bl sub_80572D8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BBEDA - adds r0, r4, 0 - bl sub_80572EC - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BBF5E -_080BBEDA: - mov r3, r8 - ldr r0, [r3, 0x4] - ldr r1, [r0, 0x4] - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 3 - adds r1, r4, r1 - ldr r5, _080BBF98 @ =0x00003f20 - adds r0, r5, 0 - ldrb r1, [r1, 0x1] - adds r0, r1 - ldr r1, _080BBF9C @ =gScriptResult - strh r0, [r1] - ldrh r0, [r1] - mov r2, r9 - ldrb r1, [r2] - lsls r1, 5 - ldr r3, _080BBFA0 @ =gDecorations + 0x1C - adds r1, r3 - ldr r1, [r1] - ldrh r1, [r1] - bl VarSet - mov r5, r8 - ldr r0, [r5, 0x4] - ldr r0, [r0, 0x4] - adds r4, r0 - ldrb r0, [r4] - ldr r1, _080BBF9C @ =gScriptResult - strh r0, [r1] - ldr r2, _080BBF8C @ =gSpecialVar_0x8004 - ldrh r0, [r2] - adds r0, 0xAE - lsls r0, 16 - lsrs r0, 16 - bl FlagReset - ldr r3, _080BBF9C @ =gScriptResult - ldrb r0, [r3] - mov r4, r10 - ldrb r1, [r4, 0x5] - ldrb r2, [r4, 0x4] - bl show_sprite - ldr r5, _080BBF9C @ =gScriptResult - ldrb r0, [r5] - ldrb r1, [r4, 0x5] - ldrb r2, [r4, 0x4] - movs r4, 0 - ldrsh r3, [r7, r4] - movs r5, 0 - ldrsh r4, [r6, r5] - str r4, [sp] - bl sub_805C0F8 - ldr r1, _080BBF9C @ =gScriptResult - ldrb r0, [r1] - mov r2, r10 - ldrb r1, [r2, 0x5] - ldrb r2, [r2, 0x4] - bl sub_805C78C - ldr r3, _080BBF8C @ =gSpecialVar_0x8004 - ldrh r0, [r3] - adds r0, 0x1 - strh r0, [r3] -_080BBF5E: - ldr r4, [sp, 0x10] - lsls r0, r4, 24 - lsrs r6, r0, 24 - ldr r5, [sp, 0xC] - cmp r6, r5 - bcs _080BBF6C - b _080BBE2C -_080BBF6C: - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BBF7C: .4byte gSaveBlock1 + 0x1A1A -_080BBF80: .4byte gSaveBlock1 -_080BBF84: .4byte gDecorations -_080BBF88: .4byte gMapHeader -_080BBF8C: .4byte gSpecialVar_0x8004 -_080BBF90: .4byte gSpecialVar_0x8006 -_080BBF94: .4byte gSpecialVar_0x8007 -_080BBF98: .4byte 0x00003f20 -_080BBF9C: .4byte gScriptResult -_080BBFA0: .4byte gDecorations + 0x1C - thumb_func_end sub_80BBDD0 - - thumb_func_start sub_80BBFA4 -sub_80BBFA4: @ 80BBFA4 - push {r4,r5,lr} - ldr r0, _080BBFCC @ =0x00004054 - bl VarGet - ldr r5, _080BBFD0 @ =0x0000401f - ldr r4, _080BBFD4 @ =gUnknown_083D13EC - lsls r0, 24 - lsrs r0, 24 - bl sub_80BCCA4 - lsls r0, 24 - lsrs r0, 24 - adds r0, r4 - ldrb r1, [r0] - adds r0, r5, 0 - bl VarSet - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BBFCC: .4byte 0x00004054 -_080BBFD0: .4byte 0x0000401f -_080BBFD4: .4byte gUnknown_083D13EC - thumb_func_end sub_80BBFA4 - - thumb_func_start sub_80BBFD8 -sub_80BBFD8: @ 80BBFD8 - push {r4-r6,lr} - adds r5, r0, 0 - adds r4, r1, 0 - movs r3, 0 - ldrb r0, [r4, 0x3] - cmp r3, r0 - bge _080BC030 - ldr r6, _080BC01C @ =gUnknown_020387DC -_080BBFE8: - lsls r3, 16 - asrs r1, r3, 16 - ldr r2, [r4, 0x10] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r2 - ldrb r0, [r2, 0x5] - cmp r0, 0x8 - bne _080BC020 - movs r0, 0 - ldrsh r1, [r5, r0] - ldrh r0, [r2] - adds r0, 0x7 - cmp r1, r0 - bne _080BC020 - movs r0, 0x2 - ldrsh r1, [r5, r0] - ldrh r0, [r2, 0x2] - adds r0, 0x7 - cmp r1, r0 - bne _080BC020 - ldr r0, [r2, 0x8] - strb r0, [r6] - b _080BC030 - .align 2, 0 -_080BC01C: .4byte gUnknown_020387DC -_080BC020: - movs r1, 0x80 - lsls r1, 9 - adds r0, r3, r1 - lsrs r3, r0, 16 - asrs r0, 16 - ldrb r1, [r4, 0x3] - cmp r0, r1 - blt _080BBFE8 -_080BC030: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BBFD8 - - thumb_func_start sub_80BC038 -sub_80BC038: @ 80BC038 - push {lr} - bl sub_80BBFD8 - bl sub_80BB5E4 - ldr r0, _080BC04C @ =gUnknown_081A2E14 - bl ScriptContext1_SetupScript - pop {r0} - bx r0 - .align 2, 0 -_080BC04C: .4byte gUnknown_081A2E14 - thumb_func_end sub_80BC038 - - thumb_func_start sub_80BC050 -sub_80BC050: @ 80BC050 - push {lr} - bl sub_80BB5D0 - bl sub_80BB5E4 - ldr r0, _080BC068 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0x1 - beq _080BC06C - movs r0, 0x1 - b _080BC06E - .align 2, 0 -_080BC068: .4byte gScriptResult -_080BC06C: - movs r0, 0 -_080BC06E: - pop {r1} - bx r1 - thumb_func_end sub_80BC050 - - thumb_func_start sub_80BC074 -sub_80BC074: @ 80BC074 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _080BC098 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _080BC0AC - cmp r0, 0x1 - bgt _080BC09C - cmp r0, 0 - beq _080BC0A2 - b _080BC0E4 - .align 2, 0 -_080BC098: .4byte gTasks -_080BC09C: - cmp r0, 0x2 - beq _080BC0C4 - b _080BC0E4 -_080BC0A2: - bl ScriptContext2_Enable - movs r0, 0x1 - strh r0, [r4, 0x8] - b _080BC0E4 -_080BC0AC: - ldr r0, _080BC0C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BC0E4 - movs r0, 0x2 - strh r0, [r4, 0x8] - b _080BC0E4 - .align 2, 0 -_080BC0C0: .4byte gPaletteFade -_080BC0C4: - movs r0, 0x7E - bl copy_saved_warp2_bank_and_enter_x_to_warp1 - bl warp_in - ldr r0, _080BC0EC @ =gUnknown_0300485C - ldr r1, _080BC0F0 @ =mapldr_default - str r1, [r0] - ldr r0, _080BC0F4 @ =CB2_LoadMap - bl SetMainCallback2 - bl ScriptContext2_Disable - adds r0, r5, 0 - bl DestroyTask -_080BC0E4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC0EC: .4byte gUnknown_0300485C -_080BC0F0: .4byte mapldr_default -_080BC0F4: .4byte CB2_LoadMap - thumb_func_end sub_80BC074 - - thumb_func_start sub_80BC0F8 -sub_80BC0F8: @ 80BC0F8 - push {lr} - ldr r0, _080BC110 @ =sub_80BC074 - movs r1, 0 - bl CreateTask - movs r0, 0x1 - movs r1, 0 - bl fade_screen - pop {r0} - bx r0 - .align 2, 0 -_080BC110: .4byte sub_80BC074 - thumb_func_end sub_80BC0F8 - - thumb_func_start sub_80BC114 -sub_80BC114: @ 80BC114 - push {lr} - ldr r0, _080BC12C @ =gSaveBlock1 - ldr r1, _080BC130 @ =0x00001a08 - adds r0, r1 - ldr r1, _080BC134 @ =gUnknown_020387DC - ldrb r0, [r0] - ldrb r1, [r1] - cmp r0, r1 - beq _080BC13C - ldr r1, _080BC138 @ =gScriptResult - movs r0, 0x1 - b _080BC140 - .align 2, 0 -_080BC12C: .4byte gSaveBlock1 -_080BC130: .4byte 0x00001a08 -_080BC134: .4byte gUnknown_020387DC -_080BC138: .4byte gScriptResult -_080BC13C: - ldr r1, _080BC148 @ =gScriptResult - movs r0, 0 -_080BC140: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080BC148: .4byte gScriptResult - thumb_func_end sub_80BC114 - - thumb_func_start sub_80BC14C -sub_80BC14C: @ 80BC14C - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - movs r2, 0 - ldr r5, _080BC174 @ =gSaveBlock1 - ldr r4, _080BC178 @ =0x00001a08 -_080BC158: - lsls r0, r2, 16 - asrs r1, r0, 16 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 5 - adds r0, r5 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r3 - bne _080BC17C - lsls r0, r2, 24 - lsrs r0, 24 - b _080BC18A - .align 2, 0 -_080BC174: .4byte gSaveBlock1 -_080BC178: .4byte 0x00001a08 -_080BC17C: - adds r0, r1, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - cmp r0, 0x13 - ble _080BC158 - movs r0, 0 -_080BC18A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80BC14C - .section .text_80BC1D0 - thumb_func_start GetSecretBaseMapName -GetSecretBaseMapName: @ 80BC1D0 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - ldr r6, _080BC214 @ =gUnknown_020387DC - ldr r5, _080BC218 @ =gSaveBlock1 - ldr r4, _080BC21C @ =0x00004054 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, r5 - ldr r0, _080BC220 @ =0x00001a08 - adds r1, r0 - ldrb r0, [r1] - strb r0, [r6] - adds r0, r4, 0 - bl VarGet - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - mov r0, r8 - bl sub_80BC190 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080BC214: .4byte gUnknown_020387DC -_080BC218: .4byte gSaveBlock1 -_080BC21C: .4byte 0x00004054 -_080BC220: .4byte 0x00001a08 - thumb_func_end GetSecretBaseMapName - - thumb_func_start sub_80BC224 -sub_80BC224: @ 80BC224 - push {r4,r5,lr} - ldr r0, _080BC25C @ =0x00004054 - bl VarGet - lsls r0, 24 - lsrs r0, 24 - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 5 - ldr r0, _080BC260 @ =gSaveBlock1 + 0x1A0A - adds r4, r0 - ldr r5, _080BC264 @ =gStringVar1 - adds r0, r4, 0 - bl sub_80BB8A8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - adds r0, r5, 0 - adds r1, r4, 0 - bl StringCopyN - movs r1, 0xFF - strb r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC25C: .4byte 0x00004054 -_080BC260: .4byte gSaveBlock1 + 0x1A0A -_080BC264: .4byte gStringVar1 - thumb_func_end sub_80BC224 - - thumb_func_start sub_80BC268 -sub_80BC268: @ 80BC268 - push {lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BC288 @ =gSaveBlock1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 5 - adds r1, r2 - ldr r0, _080BC28C @ =0x00001a09 - adds r1, r0 - ldrb r0, [r1] - lsrs r0, 6 - cmp r0, 0 - bne _080BC290 - movs r0, 0 - b _080BC292 - .align 2, 0 -_080BC288: .4byte gSaveBlock1 -_080BC28C: .4byte 0x00001a09 -_080BC290: - movs r0, 0x1 -_080BC292: - pop {r1} - bx r1 - thumb_func_end sub_80BC268 - - thumb_func_start sub_80BC298 -sub_80BC298: @ 80BC298 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0x1A - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1B - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1C - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1D - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1E - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0x1F - bl GetMonData - adds r4, r0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x6 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80BC298 - - thumb_func_start sub_80BC300 -sub_80BC300: @ 80BC300 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - movs r0, 0 - mov r10, r0 - movs r6, 0 - mov r9, r6 -_080BC314: - movs r4, 0 - lsls r3, r6, 2 - lsls r2, r6, 1 - ldr r7, _080BC424 @ =gPlayerParty - adds r1, r6, 0x1 - str r1, [sp] - adds r1, r3, 0 -_080BC322: - adds r0, r1, r4 - lsls r0, 1 - ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54 - adds r0, r5, r0 - mov r5, r9 - strh r5, [r0] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0x3 - bls _080BC322 - ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84 - adds r0, r1, r2 - strh r5, [r0] - ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90 - adds r0, r5, r2 - mov r1, r9 - strh r1, [r0] - ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C - adds r0, r2, r6 - mov r5, r9 - strb r5, [r0] - ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C - adds r0, r1, r3 - mov r2, r9 - str r2, [r0] - ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2 - adds r0, r3, r6 - strb r2, [r0] - movs r0, 0x64 - adds r5, r6, 0 - muls r5, r0 - adds r4, r5, r7 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - cmp r0, 0 - beq _080BC408 - adds r0, r4, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080BC408 - movs r4, 0 - mov r0, r10 - lsls r0, 2 - mov r8, r0 - mov r1, r10 - lsls r7, r1, 1 - adds r1, 0x1 - str r1, [sp, 0x4] - ldr r2, _080BC424 @ =gPlayerParty -_080BC38E: - adds r1, r4, 0 - adds r1, 0xD - adds r0, r5, r2 - str r2, [sp, 0x8] - bl GetMonData - mov r3, r8 - adds r1, r3, r4 - lsls r1, 1 - ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54 - adds r1, r3, r1 - strh r0, [r1] - adds r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - ldr r2, [sp, 0x8] - cmp r4, 0x3 - bls _080BC38E - movs r0, 0x64 - adds r4, r6, 0 - muls r4, r0 - ldr r0, _080BC424 @ =gPlayerParty - adds r4, r0 - adds r0, r4, 0 - movs r1, 0xB - bl GetMonData - ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84 - adds r1, r5, r7 - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0xC - bl GetMonData - ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90 - adds r1, r2, r7 - strh r0, [r1] - adds r0, r4, 0 - movs r1, 0x38 - bl GetMonData - ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C - add r1, r10 - strb r0, [r1] - adds r0, r4, 0 - movs r1, 0 - bl GetMonData - ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C - add r1, r8 - str r0, [r1] - adds r0, r4, 0 - bl sub_80BC298 - ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2 - add r1, r10 - strb r0, [r1] - ldr r3, [sp, 0x4] - lsls r0, r3, 16 - lsrs r0, 16 - mov r10, r0 -_080BC408: - ldr r5, [sp] - lsls r0, r5, 16 - lsrs r6, r0, 16 - cmp r6, 0x5 - bls _080BC314 - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BC424: .4byte gPlayerParty -_080BC428: .4byte gSaveBlock1 + 0x1A54 -_080BC42C: .4byte gSaveBlock1 + 0x1A84 -_080BC430: .4byte gSaveBlock1 + 0x1A90 -_080BC434: .4byte gSaveBlock1 + 0x1A9C -_080BC438: .4byte gSaveBlock1 + 0x1A3C -_080BC43C: .4byte gSaveBlock1 + 0x1AA2 - thumb_func_end sub_80BC300 - - thumb_func_start sub_80BC440 -sub_80BC440: @ 80BC440 - push {r4,r5,lr} - ldr r4, _080BC45C @ =gSaveBlock1 - ldr r0, _080BC460 @ =0x00001a16 - adds r4, r0 - ldrh r5, [r4] - movs r0, 0 - bl ResetSecretBase - strh r5, [r4] - bl sub_80BC0F8 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BC45C: .4byte gSaveBlock1 -_080BC460: .4byte 0x00001a16 - thumb_func_end sub_80BC440 - - thumb_func_start SecretBasePC_PackUp -SecretBasePC_PackUp: @ 80BC464 - push {lr} - movs r0, 0x14 - bl IncrementGameStat - bl sub_80BC440 - pop {r0} - bx r0 - thumb_func_end SecretBasePC_PackUp - thumb_func_start sub_80BC474 sub_80BC474: @ 80BC474 push {r4-r7,lr} @@ -7,51 +7,6 @@ .text - thumb_func_start ClearTVShowData -ClearTVShowData: @ 80BD7A8 - push {r4-r7,lr} - movs r3, 0 - ldr r6, _080BD7F0 @ =gSaveBlock1 - movs r4, 0 - ldr r0, _080BD7F4 @ =0x0000273a - adds r5, r6, r0 -_080BD7B4: - lsls r2, r3, 3 - adds r2, r3 - lsls r2, 2 - adds r1, r2, r6 - ldr r7, _080BD7F8 @ =0x00002738 - adds r0, r1, r7 - strb r4, [r0] - ldr r0, _080BD7FC @ =0x00002739 - adds r1, r0 - strb r4, [r1] - movs r1, 0 - adds r3, 0x1 -_080BD7CC: - adds r0, r1, r2 - adds r0, r5 - strb r4, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x21 - bls _080BD7CC - lsls r0, r3, 24 - lsrs r3, r0, 24 - cmp r3, 0x18 - bls _080BD7B4 - bl sub_80BEBF4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BD7F0: .4byte gSaveBlock1 -_080BD7F4: .4byte 0x0000273a -_080BD7F8: .4byte 0x00002738 -_080BD7FC: .4byte 0x00002739 - thumb_func_end ClearTVShowData - thumb_func_start special_0x44 special_0x44: @ 80BD800 push {r4-r7,lr} @@ -776,4512 +731,11 @@ _080BDD5C: _080BDD5E: pop {r1} bx r1 - thumb_func_end sub_80BDD18 - - thumb_func_start GabbyAndTySetScriptVarsToFieldObjectLocalIds -GabbyAndTySetScriptVarsToFieldObjectLocalIds: @ 80BDD64 - push {lr} - bl GabbyAndTyGetBattleNum - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - cmp r0, 0x7 - bhi _080BDE3C - lsls r0, 2 - ldr r1, _080BDD80 @ =_080BDD84 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BDD80: .4byte _080BDD84 - .align 2, 0 -_080BDD84: - .4byte _080BDDA4 - .4byte _080BDDB8 - .4byte _080BDDCC - .4byte _080BDDE0 - .4byte _080BDDF4 - .4byte _080BDE08 - .4byte _080BDE1C - .4byte _080BDE30 -_080BDDA4: - ldr r1, _080BDDB0 @ =gSpecialVar_0x8004 - movs r0, 0xE - strh r0, [r1] - ldr r1, _080BDDB4 @ =gSpecialVar_0x8005 - movs r0, 0xD - b _080BDE3A - .align 2, 0 -_080BDDB0: .4byte gSpecialVar_0x8004 -_080BDDB4: .4byte gSpecialVar_0x8005 -_080BDDB8: - ldr r1, _080BDDC4 @ =gSpecialVar_0x8004 - movs r0, 0x5 - strh r0, [r1] - ldr r1, _080BDDC8 @ =gSpecialVar_0x8005 - movs r0, 0x6 - b _080BDE3A - .align 2, 0 -_080BDDC4: .4byte gSpecialVar_0x8004 -_080BDDC8: .4byte gSpecialVar_0x8005 -_080BDDCC: - ldr r1, _080BDDD8 @ =gSpecialVar_0x8004 - movs r0, 0x12 - strh r0, [r1] - ldr r1, _080BDDDC @ =gSpecialVar_0x8005 - movs r0, 0x11 - b _080BDE3A - .align 2, 0 -_080BDDD8: .4byte gSpecialVar_0x8004 -_080BDDDC: .4byte gSpecialVar_0x8005 -_080BDDE0: - ldr r1, _080BDDEC @ =gSpecialVar_0x8004 - movs r0, 0x15 - strh r0, [r1] - ldr r1, _080BDDF0 @ =gSpecialVar_0x8005 - movs r0, 0x16 - b _080BDE3A - .align 2, 0 -_080BDDEC: .4byte gSpecialVar_0x8004 -_080BDDF0: .4byte gSpecialVar_0x8005 -_080BDDF4: - ldr r1, _080BDE00 @ =gSpecialVar_0x8004 - movs r0, 0x8 - strh r0, [r1] - ldr r1, _080BDE04 @ =gSpecialVar_0x8005 - movs r0, 0x9 - b _080BDE3A - .align 2, 0 -_080BDE00: .4byte gSpecialVar_0x8004 -_080BDE04: .4byte gSpecialVar_0x8005 -_080BDE08: - ldr r1, _080BDE14 @ =gSpecialVar_0x8004 - movs r0, 0x13 - strh r0, [r1] - ldr r1, _080BDE18 @ =gSpecialVar_0x8005 - movs r0, 0x14 - b _080BDE3A - .align 2, 0 -_080BDE14: .4byte gSpecialVar_0x8004 -_080BDE18: .4byte gSpecialVar_0x8005 -_080BDE1C: - ldr r1, _080BDE28 @ =gSpecialVar_0x8004 - movs r0, 0x17 - strh r0, [r1] - ldr r1, _080BDE2C @ =gSpecialVar_0x8005 - movs r0, 0x18 - b _080BDE3A - .align 2, 0 -_080BDE28: .4byte gSpecialVar_0x8004 -_080BDE2C: .4byte gSpecialVar_0x8005 -_080BDE30: - ldr r1, _080BDE40 @ =gSpecialVar_0x8004 - movs r0, 0xA - strh r0, [r1] - ldr r1, _080BDE44 @ =gSpecialVar_0x8005 - movs r0, 0xB -_080BDE3A: - strh r0, [r1] -_080BDE3C: - pop {r0} - bx r0 - .align 2, 0 -_080BDE40: .4byte gSpecialVar_0x8004 -_080BDE44: .4byte gSpecialVar_0x8005 - thumb_func_end GabbyAndTySetScriptVarsToFieldObjectLocalIds - - thumb_func_start sub_80BDE48 -sub_80BDE48: @ 80BDE48 - push {lr} - ldr r0, _080BDE60 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0x6 - bhi _080BDEA6 - lsls r0, 2 - ldr r1, _080BDE64 @ =_080BDE68 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BDE60: .4byte gSpecialVar_0x8005 -_080BDE64: .4byte _080BDE68 - .align 2, 0 -_080BDE68: - .4byte _080BDE84 - .4byte _080BDE8A - .4byte _080BDE90 - .4byte _080BDE96 - .4byte _080BDEA6 - .4byte _080BDE9C - .4byte _080BDEA2 -_080BDE84: - bl sub_80BE5FC - b _080BDEA6 -_080BDE8A: - bl sub_80BE65C - b _080BDEA6 -_080BDE90: - bl sub_80BE6A0 - b _080BDEA6 -_080BDE96: - bl nullsub_21 - b _080BDEA6 -_080BDE9C: - bl sub_80BE188 - b _080BDEA6 -_080BDEA2: - bl sub_80BE320 -_080BDEA6: - pop {r0} - bx r0 - thumb_func_end sub_80BDE48 - - thumb_func_start sub_80BDEAC -sub_80BDEAC: @ 80BDEAC - push {lr} - adds r1, r0, 0 - movs r2, GAME_LANGUAGE - ldrb r0, [r1] - cmp r0, 0xFC - bne _080BDEC0 - ldrb r0, [r1, 0x1] - cmp r0, 0x15 - bne _080BDEC0 - movs r2, 0x1 -_080BDEC0: - adds r0, r2, 0 - pop {r1} - bx r1 - thumb_func_end sub_80BDEAC - - thumb_func_start sub_80BDEC8 -sub_80BDEC8: @ 80BDEC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - movs r4, 0 - bl sub_80BEB20 - bl sub_80BE778 - ldr r5, _080BDEE8 @ =gUnknown_030042E0 - ldrh r0, [r5, 0x28] - cmp r0, 0 - bne _080BDEEC - bl sub_80BE074 - b _080BE012 .align 2, 0 -_080BDEE8: .4byte gUnknown_030042E0 -_080BDEEC: - bl sub_80BE028 - ldr r0, _080BDF98 @ =0x0000ffff - bl sub_80BF77C - lsls r0, 24 - cmp r0, 0 - beq _080BDEFE - b _080BE012 -_080BDEFE: - ldrh r1, [r5, 0x28] - movs r0, 0xB - muls r0, r1 - ldr r1, _080BDF9C @ =gSpeciesNames - adds r0, r1 - adds r1, r5, 0 - adds r1, 0x2A - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _080BDF16 - b _080BE012 -_080BDF16: - ldr r0, _080BDFA0 @ =gSaveBlock1 + 0x2738 - bl sub_80BF74C - ldr r1, _080BDFA4 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE012 - movs r0, 0x15 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BE012 - movs r2, 0 - adds r7, r5, 0 - adds r1, r7, 0 - adds r1, 0x36 -_080BDF42: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bls _080BDF42 - cmp r4, 0 - bne _080BDF64 - ldrb r1, [r7, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BE012 -_080BDF64: - movs r4, 0 - ldr r0, _080BDFA4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BDFA0 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - movs r0, 0x15 - strb r0, [r5] - strb r4, [r5, 0x1] - ldrb r1, [r7, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BDFAC - movs r4, 0x1 - movs r0, 0x1 - adds r3, r5, 0 - adds r3, 0x13 - ldr r1, _080BDFA8 @ =gSaveBlock2 - mov r8, r1 - adds r6, r5, 0x4 - b _080BDFDE - .align 2, 0 -_080BDF98: .4byte 0x0000ffff -_080BDF9C: .4byte gSpeciesNames -_080BDFA0: .4byte gSaveBlock1 + 0x2738 -_080BDFA4: .4byte gUnknown_03005D38 -_080BDFA8: .4byte gSaveBlock2 -_080BDFAC: - movs r2, 0 - ldr r0, _080BE01C @ =gUnknown_02024C04 - mov r12, r0 - adds r3, r5, 0 - adds r3, 0x13 - ldr r1, _080BE020 @ =gSaveBlock2 - mov r8, r1 - adds r6, r5, 0x4 - adds r1, r7, 0 - adds r1, 0x36 -_080BDFC0: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r4, r0 - lsls r0, 16 - lsrs r4, r0, 16 - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xA - bls _080BDFC0 - cmp r4, 0xFF - bls _080BDFDA - movs r4, 0xFF -_080BDFDA: - mov r1, r12 - ldrh r0, [r1] -_080BDFDE: - strb r4, [r5, 0x12] - strb r0, [r5, 0xF] - adds r0, r3, 0 - mov r1, r8 - bl StringCopy - ldr r4, _080BE024 @ =gUnknown_0300430A - adds r0, r6, 0 - adds r1, r4, 0 - bl StringCopy - subs r4, 0x2A - ldrh r0, [r4, 0x28] - strh r0, [r5, 0x10] - adds r0, r5, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r5, 0x2] - adds r0, r6, 0 - bl sub_80BDEAC - strb r0, [r5, 0x3] - adds r0, r6, 0 - bl StripExtCtrlCodes -_080BE012: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE01C: .4byte gUnknown_02024C04 -_080BE020: .4byte gSaveBlock2 -_080BE024: .4byte gUnknown_0300430A - thumb_func_end sub_80BDEC8 - - thumb_func_start sub_80BE028 -sub_80BE028: @ 80BE028 - push {r4,lr} - ldr r4, _080BE064 @ =gSaveBlock1 + 0x2A98 - ldrb r0, [r4] - cmp r0, 0x19 - beq _080BE048 - ldr r1, _080BE068 @ =0xfffffca0 - adds r0, r4, r1 - movs r1, 0x18 - bl sub_80BF55C - movs r0, 0x5 - bl GetGameStat - strh r0, [r4, 0x6] - movs r0, 0x19 - strb r0, [r4] -_080BE048: - ldrh r0, [r4, 0x2] - adds r0, 0x1 - strh r0, [r4, 0x2] - ldr r1, _080BE06C @ =gUnknown_030042E0 - ldrh r0, [r1, 0x28] - strh r0, [r4, 0x4] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0x8] - ldr r0, _080BE070 @ =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r4, 0xA] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BE064: .4byte gSaveBlock1 + 0x2A98 -_080BE068: .4byte 0xfffffca0 -_080BE06C: .4byte gUnknown_030042E0 -_080BE070: .4byte gMapHeader - thumb_func_end sub_80BE028 - - thumb_func_start sub_80BE074 -sub_80BE074: @ 80BE074 - push {r4-r7,lr} - ldr r0, _080BE118 @ =0x0000ffff - bl sub_80BF77C - lsls r0, 24 - cmp r0, 0 - bne _080BE112 - movs r1, 0 - movs r5, 0 - ldr r2, _080BE11C @ =gUnknown_03004316 -_080BE088: - adds r0, r1, r2 - ldrb r0, [r0] - adds r0, r5, r0 - lsls r0, 16 - lsrs r5, r0, 16 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bls _080BE088 - cmp r5, 0xFF - bls _080BE0A2 - movs r5, 0xFF -_080BE0A2: - cmp r5, 0x2 - bls _080BE112 - ldr r7, _080BE120 @ =gUnknown_02024D26 - ldrb r0, [r7] - cmp r0, 0x1 - bne _080BE112 - ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738 - adds r0, r6, 0 - bl sub_80BF74C - ldr r4, _080BE128 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE112 - movs r0, 0x17 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BE112 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r6 - movs r1, 0 - movs r0, 0x17 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, _080BE12C @ =gUnknown_030042E0 - ldrh r0, [r1, 0x6] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x20] - strh r0, [r4, 0xE] - strb r5, [r4, 0x10] - ldrb r0, [r7] - strb r0, [r4, 0x11] - ldr r0, _080BE130 @ =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r4, 0x12] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BE134 @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0x2] -_080BE112: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE118: .4byte 0x0000ffff -_080BE11C: .4byte gUnknown_03004316 -_080BE120: .4byte gUnknown_02024D26 -_080BE124: .4byte gSaveBlock1 + 0x2738 -_080BE128: .4byte gUnknown_03005D38 -_080BE12C: .4byte gUnknown_030042E0 -_080BE130: .4byte gMapHeader -_080BE134: .4byte gSaveBlock2 - thumb_func_end sub_80BE074 - - thumb_func_start sub_80BE138 -sub_80BE138: @ 80BE138 - push {r4,lr} - adds r4, r0, 0 - bl GetPlayerTrainerId - strb r0, [r4, 0x1E] - lsrs r2, r0, 8 - strb r2, [r4, 0x1F] - adds r1, r4, 0 - adds r1, 0x20 - strb r0, [r1] - adds r1, 0x1 - strb r2, [r1] - adds r1, 0x1 - strb r0, [r1] - adds r0, r4, 0 - adds r0, 0x23 - strb r2, [r0] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BE138 - - thumb_func_start sub_80BE160 -sub_80BE160: @ 80BE160 - push {r4,lr} - adds r4, r0, 0 - bl GetPlayerTrainerId - adds r1, r4, 0 - adds r1, 0x20 - strb r0, [r1] - lsrs r1, r0, 8 - adds r2, r4, 0 - adds r2, 0x21 - strb r1, [r2] - adds r2, 0x1 - strb r0, [r2] - adds r0, r4, 0 - adds r0, 0x23 - strb r1, [r0] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BE160 - - thumb_func_start sub_80BE188 -sub_80BE188: @ 80BE188 - push {r4-r6,lr} - ldr r6, _080BE22C @ =gSaveBlock1 + 0x2A98 - ldrb r1, [r6] - cmp r1, 0x6 - bne _080BE224 - ldr r0, _080BE230 @ =gUnknown_03005D38 - ldrb r0, [r0] - lsls r0, 24 - asrs r0, 24 - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r2, _080BE234 @ =0xfffffca0 - adds r0, r6, r2 - adds r4, r0 - strb r1, [r4] - movs r0, 0x1 - strb r0, [r4, 0x1] - ldrh r0, [r6, 0x2] - strh r0, [r4, 0x2] - adds r0, r4, 0 - adds r0, 0x16 - ldr r1, _080BE238 @ =gSaveBlock2 - bl StringCopy - adds r5, r4, 0 - adds r5, 0x8 - adds r1, r6, 0 - adds r1, 0x8 - adds r0, r5, 0 - bl StringCopy - ldrb r0, [r6, 0x13] - lsls r0, 29 - lsrs r0, 29 - ldrb r2, [r4, 0x13] - movs r3, 0x8 - negs r3, r3 - adds r1, r3, 0 - ands r1, r2 - orrs r1, r0 - strb r1, [r4, 0x13] - ldrb r2, [r6, 0x13] - movs r0, 0x18 - ands r0, r2 - movs r2, 0x19 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4, 0x13] - ldrh r0, [r6, 0x14] - strh r0, [r4, 0x14] - ldrb r0, [r6, 0x13] - movs r1, 0x60 - ands r1, r0 - movs r0, 0x61 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x13] - ldrb r1, [r6, 0x13] - lsls r1, 29 - lsrs r1, 29 - ands r0, r3 - orrs r0, r1 - strb r0, [r4, 0x13] - adds r0, r4, 0 - bl sub_80BE160 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0x1E] - adds r0, r5, 0 - bl sub_80BDEAC - strb r0, [r4, 0x1F] - adds r0, r5, 0 - bl StripExtCtrlCodes -_080BE224: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BE22C: .4byte gSaveBlock1 + 0x2A98 -_080BE230: .4byte gUnknown_03005D38 -_080BE234: .4byte 0xfffffca0 -_080BE238: .4byte gSaveBlock2 - thumb_func_end sub_80BE188 - - thumb_func_start sub_80BE23C -sub_80BE23C: @ 80BE23C - push {r4-r6,lr} - lsls r0, 16 - lsrs r6, r0, 16 - ldr r4, _080BE278 @ =gSaveBlock1 + 0x2A98 - bl sub_80BF484 - ldr r0, _080BE27C @ =0xfffffca0 - adds r5, r4, r0 - adds r0, r5, 0 - bl sub_80BF720 - ldr r1, _080BE280 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE270 - adds r0, r5, 0 - movs r1, 0x18 - bl sub_80BF55C - strh r6, [r4, 0x14] - movs r0, 0x6 - strb r0, [r4] -_080BE270: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BE278: .4byte gSaveBlock1 + 0x2A98 -_080BE27C: .4byte 0xfffffca0 -_080BE280: .4byte gUnknown_03005D38 - thumb_func_end sub_80BE23C - - thumb_func_start sub_80BE284 -sub_80BE284: @ 80BE284 - push {r4-r7,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r7, _080BE304 @ =gSaveBlock1 + 0x2A98 - ldr r1, _080BE308 @ =0xfffffca0 - adds r0, r7, r1 - bl sub_80BF720 - ldr r1, _080BE30C @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE2FE - movs r3, 0x3 - adds r1, r4, 0 - ands r1, r3 - lsls r1, 5 - ldrb r2, [r7, 0x13] - movs r0, 0x61 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - ldr r1, _080BE310 @ =gScriptContestCategory - ldrb r2, [r1] - movs r1, 0x7 - ands r1, r2 - movs r2, 0x8 - negs r2, r2 - ands r0, r2 - orrs r0, r1 - ldr r1, _080BE314 @ =gScriptContestRank - ldrb r1, [r1] - ands r3, r1 - lsls r3, 3 - movs r1, 0x19 - negs r1, r1 - ands r0, r1 - orrs r0, r3 - strb r0, [r7, 0x13] - ldr r6, _080BE318 @ =gUnknown_02038694 - ldrb r0, [r6] - movs r5, 0x64 - muls r0, r5 - ldr r4, _080BE31C @ =gPlayerParty - adds r0, r4 - movs r1, 0xB - movs r2, 0 - bl GetMonData - strh r0, [r7, 0x2] - ldrb r0, [r6] - muls r0, r5 - adds r0, r4 - adds r2, r7, 0 - adds r2, 0x8 - movs r1, 0x2 - bl GetMonData -_080BE2FE: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE304: .4byte gSaveBlock1 + 0x2A98 -_080BE308: .4byte 0xfffffca0 -_080BE30C: .4byte gUnknown_03005D38 -_080BE310: .4byte gScriptContestCategory -_080BE314: .4byte gScriptContestRank -_080BE318: .4byte gUnknown_02038694 -_080BE31C: .4byte gPlayerParty - thumb_func_end sub_80BE284 - - thumb_func_start sub_80BE320 -sub_80BE320: @ 80BE320 - push {r4-r6,lr} - ldr r0, _080BE384 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BE388 @ =gSaveBlock1 + 0x2738 - adds r6, r0, r1 - movs r0, 0x7 - strb r0, [r6] - movs r0, 0x1 - strb r0, [r6, 0x1] - adds r0, r6, 0x2 - ldr r4, _080BE38C @ =gSaveBlock2 - adds r1, r4, 0 - bl StringCopy - adds r0, r6, 0 - adds r0, 0xC - ldr r2, _080BE390 @ =0x00000484 - adds r1, r4, r2 - bl StringCopy - movs r1, 0x90 - lsls r1, 3 - adds r0, r4, r1 - ldrh r0, [r0] - strh r0, [r6, 0xA] - ldr r2, _080BE394 @ =0x00000482 - adds r0, r4, r2 - ldrh r0, [r0] - strh r0, [r6, 0x14] - movs r0, 0xAF - lsls r0, 3 - adds r5, r4, r0 - ldrb r0, [r5] - bl sub_8135D3C - strh r0, [r6, 0x16] - ldr r1, _080BE398 @ =0x00000555 - adds r4, r1 - ldrb r0, [r4] - strb r0, [r6, 0x1C] - ldrb r0, [r5] - cmp r0, 0 - bne _080BE39C - movs r0, 0x32 - b _080BE39E - .align 2, 0 -_080BE384: .4byte gUnknown_03005D38 -_080BE388: .4byte gSaveBlock1 + 0x2738 -_080BE38C: .4byte gSaveBlock2 -_080BE390: .4byte 0x00000484 -_080BE394: .4byte 0x00000482 -_080BE398: .4byte 0x00000555 -_080BE39C: - movs r0, 0x64 -_080BE39E: - strb r0, [r6, 0x1A] - ldr r0, _080BE3B8 @ =gSpecialVar_0x8004 - ldrh r0, [r0] - strb r0, [r6, 0x1B] - adds r0, r6, 0 - bl sub_80BE160 - movs r0, GAME_LANGUAGE - strb r0, [r6, 0x1D] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BE3B8: .4byte gSpecialVar_0x8004 - thumb_func_end sub_80BE320 - - thumb_func_start sub_80BE3BC -sub_80BE3BC: @ 80BE3BC - push {r4-r7,lr} - ldr r0, _080BE460 @ =0x00005555 - bl sub_80BF77C - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0 - bne _080BE458 - ldr r6, _080BE464 @ =gSaveBlock1 + 0x2738 - adds r0, r6, 0 - bl sub_80BF74C - ldr r5, _080BE468 @ =gUnknown_03005D38 - strb r0, [r5] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BE458 - movs r0, 0x16 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BE458 - bl sub_80BF20C - ldr r2, _080BE46C @ =gUnknown_02038724 - ldrh r0, [r2, 0x2] - cmp r0, 0x13 - bls _080BE458 - movs r1, 0 - ldrsb r1, [r5, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r5, r0, r6 - movs r0, 0x16 - strb r0, [r5] - strb r4, [r5, 0x1] - ldr r0, _080BE470 @ =gMapHeader - ldrb r0, [r0, 0x14] - strb r0, [r5, 0x12] - movs r4, 0 - adds r7, r5, 0x6 - mov r12, r2 - adds r6, r5, 0 - adds r6, 0xC -_080BE420: - lsls r2, r4, 1 - adds r3, r7, r2 - lsls r1, r4, 2 - add r1, r12 - ldrh r0, [r1] - strh r0, [r3] - adds r2, r6, r2 - ldrh r0, [r1, 0x2] - strh r0, [r2] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x2 - bls _080BE420 - movs r0, 0x1 - bl GetPriceReduction - strb r0, [r5, 0x2] - adds r0, r5, 0 - adds r0, 0x13 - ldr r1, _080BE474 @ =gSaveBlock2 - bl StringCopy - adds r0, r5, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r5, 0x3] -_080BE458: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BE460: .4byte 0x00005555 -_080BE464: .4byte gSaveBlock1 + 0x2738 -_080BE468: .4byte gUnknown_03005D38 -_080BE46C: .4byte gUnknown_02038724 -_080BE470: .4byte gMapHeader -_080BE474: .4byte gSaveBlock2 - thumb_func_end sub_80BE3BC - + thumb_func_end sub_80BDD18 .section .text_80BE8EC - thumb_func_start sub_80BE8EC -sub_80BE8EC: @ 80BE8EC - push {r4-r7,lr} - lsls r0, 16 - lsrs r4, r0, 16 - ldr r1, _080BE930 @ =gSaveBlock1 - ldr r2, _080BE934 @ =0x00002afc - adds r0, r1, r2 - ldrh r0, [r0] - cmp r0, 0 - bne _080BE94C - movs r3, 0 - adds r5, r1, 0 - ldr r7, _080BE938 @ =0x00002738 - adds r6, r5, r7 -_080BE906: - lsls r0, r3, 3 - adds r0, r3 - lsls r2, r0, 2 - adds r1, r2, r5 - ldr r7, _080BE938 @ =0x00002738 - adds r0, r1, r7 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080BE942 - adds r7, 0x1 - adds r0, r1, r7 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BE942 - adds r1, r2, r6 - ldrh r0, [r1, 0x16] - cmp r0, r4 - bcs _080BE93C - movs r0, 0 - strh r0, [r1, 0x16] - b _080BE94C - .align 2, 0 -_080BE930: .4byte gSaveBlock1 -_080BE934: .4byte 0x00002afc -_080BE938: .4byte 0x00002738 -_080BE93C: - subs r0, r4 - strh r0, [r1, 0x16] - b _080BE94C -_080BE942: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x17 - bls _080BE906 -_080BE94C: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BE8EC - - thumb_func_start UpdateMassOutbreakTimeLeft -UpdateMassOutbreakTimeLeft: @ 80BE954 - push {lr} - lsls r0, 16 - lsrs r1, r0, 16 - ldr r0, _080BE96C @ =gSaveBlock1 - ldr r3, _080BE970 @ =0x00002b0e - adds r2, r0, r3 - ldrh r0, [r2] - cmp r0, r1 - bhi _080BE974 - bl EndMassOutbreak - b _080BE978 - .align 2, 0 -_080BE96C: .4byte gSaveBlock1 -_080BE970: .4byte 0x00002b0e -_080BE974: - subs r0, r1 - strh r0, [r2] -_080BE978: - pop {r0} - bx r0 - thumb_func_end UpdateMassOutbreakTimeLeft - - thumb_func_start sub_80BE97C -sub_80BE97C: @ 80BE97C - push {r4,lr} - lsls r0, 24 - cmp r0, 0 - beq _080BE9A4 - ldr r4, _080BE9A0 @ =gUnknown_020387E2 - ldrh r0, [r4] - lsrs r0, 8 - cmp r0, 0x4 - bls _080BE992 - bl sub_80BE9D4 -_080BE992: - ldrb r0, [r4] - strh r0, [r4] - cmp r0, 0xFF - beq _080BE9C8 - adds r0, 0x1 - b _080BE9C6 - .align 2, 0 -_080BE9A0: .4byte gUnknown_020387E2 -_080BE9A4: - ldr r4, _080BE9D0 @ =gUnknown_020387E2 - ldrb r0, [r4] - cmp r0, 0x4 - bls _080BE9B0 - bl sub_80BE9D4 -_080BE9B0: - ldrh r0, [r4] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - strh r1, [r4] - lsrs r0, r1, 8 - cmp r0, 0xFF - beq _080BE9C8 - movs r2, 0x80 - lsls r2, 1 - adds r0, r1, r2 -_080BE9C6: - strh r0, [r4] -_080BE9C8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BE9D0: .4byte gUnknown_020387E2 - thumb_func_end sub_80BE97C - - thumb_func_start sub_80BE9D4 -sub_80BE9D4: @ 80BE9D4 - push {r4,r5,lr} - ldr r5, _080BEA3C @ =gSaveBlock1 + 0x2738 - adds r0, r5, 0 - bl sub_80BF74C - ldr r4, _080BEA40 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEA36 - movs r0, 0x18 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEA36 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r5 - movs r1, 0 - movs r0, 0x18 - strb r0, [r4] - strb r1, [r4, 0x1] - ldr r1, _080BEA44 @ =gUnknown_020387E2 - ldrh r0, [r1] - strb r0, [r4, 0x2] - ldrh r0, [r1] - lsrs r0, 8 - strb r0, [r4, 0x3] - ldr r0, _080BEA48 @ =gUnknown_020387E0 - ldrh r0, [r0] - strh r0, [r4, 0x4] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BEA4C @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0x6] -_080BEA36: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BEA3C: .4byte gSaveBlock1 + 0x2738 -_080BEA40: .4byte gUnknown_03005D38 -_080BEA44: .4byte gUnknown_020387E2 -_080BEA48: .4byte gUnknown_020387E0 -_080BEA4C: .4byte gSaveBlock2 - thumb_func_end sub_80BE9D4 - - thumb_func_start sub_80BEA50 -sub_80BEA50: @ 80BEA50 - ldr r1, _080BEA58 @ =gUnknown_020387E0 - strh r0, [r1] - bx lr - .align 2, 0 -_080BEA58: .4byte gUnknown_020387E0 - thumb_func_end sub_80BEA50 - - thumb_func_start sub_80BEA5C -sub_80BEA5C: @ 80BEA5C - push {lr} - ldr r1, _080BEA78 @ =gSaveBlock1 + 0x2A98 - ldrb r0, [r1] - cmp r0, 0x19 - bne _080BEA84 - ldrh r0, [r1, 0x2] - cmp r0, 0x13 - bhi _080BEA80 - ldr r2, _080BEA7C @ =0xfffffca0 - adds r0, r1, r2 - movs r1, 0x18 - bl sub_80BF55C - b _080BEA84 - .align 2, 0 -_080BEA78: .4byte gSaveBlock1 + 0x2A98 -_080BEA7C: .4byte 0xfffffca0 -_080BEA80: - bl sub_80BEA88 -_080BEA84: - pop {r0} - bx r0 - thumb_func_end sub_80BEA5C - - thumb_func_start sub_80BEA88 -sub_80BEA88: @ 80BEA88 - push {r4-r7,lr} - ldr r5, _080BEB0C @ =gSaveBlock1 + 0x2A98 - ldr r0, _080BEB10 @ =0x0000ffff - bl sub_80BF77C - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _080BEB04 - ldr r0, _080BEB14 @ =0xfffffca0 - adds r7, r5, r0 - adds r0, r7, 0 - bl sub_80BF74C - ldr r4, _080BEB18 @ =gUnknown_03005D38 - strb r0, [r4] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEB04 - movs r0, 0x19 - bl sub_80BF1B4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEB04 - movs r0, 0 - ldrsb r0, [r4, r0] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - adds r4, r7 - movs r0, 0x19 - strb r0, [r4] - strb r6, [r4, 0x1] - ldrh r0, [r5, 0x2] - strh r0, [r4, 0x2] - movs r0, 0x5 - bl GetGameStat - ldrh r1, [r5, 0x6] - subs r0, r1 - strh r0, [r4, 0x6] - ldrh r0, [r5, 0x4] - strh r0, [r4, 0x4] - ldrh r0, [r5, 0x8] - strh r0, [r4, 0x8] - ldrb r0, [r5, 0xA] - strb r0, [r4, 0xA] - adds r0, r4, 0 - adds r0, 0x13 - ldr r1, _080BEB1C @ =gSaveBlock2 - bl StringCopy - adds r0, r4, 0 - bl sub_80BE138 - movs r0, GAME_LANGUAGE - strb r0, [r4, 0xB] -_080BEB04: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BEB0C: .4byte gSaveBlock1 + 0x2A98 -_080BEB10: .4byte 0x0000ffff -_080BEB14: .4byte 0xfffffca0 -_080BEB18: .4byte gUnknown_03005D38 -_080BEB1C: .4byte gSaveBlock2 - thumb_func_end sub_80BEA88 - - thumb_func_start sub_80BEB20 -sub_80BEB20: @ 80BEB20 - push {r4-r6,lr} - ldr r0, _080BEBAC @ =0x00000804 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080BEBA6 - ldr r6, _080BEBB0 @ =gSaveBlock1 + 0x2ABC - adds r0, r6, 0 - bl sub_80BEBC8 - ldr r5, _080BEBB4 @ =gUnknown_03005D38 - strb r0, [r5] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BEBA6 - ldr r0, _080BEBB8 @ =0x0000028f - bl sub_80BF77C - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEBA6 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r0, r4, 24 - lsrs r0, 24 - bl sub_80BEE48 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEBA6 - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - ldr r1, _080BEBBC @ =0xffffd544 - adds r2, r6, r1 - adds r0, r6, r0 - strb r4, [r0] - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - adds r0, r2 - ldr r1, _080BEBC0 @ =0x00002abe - adds r0, r1 - movs r1, 0x4 - strh r1, [r0] - movs r0, 0 - ldrsb r0, [r5, r0] - lsls r0, 2 - adds r0, r2 - ldr r1, _080BEBC4 @ =0x00002abd - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] -_080BEBA6: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BEBAC: .4byte 0x00000804 -_080BEBB0: .4byte gSaveBlock1 + 0x2ABC -_080BEBB4: .4byte gUnknown_03005D38 -_080BEBB8: .4byte 0x0000028f -_080BEBBC: .4byte 0xffffd544 -_080BEBC0: .4byte 0x00002abe -_080BEBC4: .4byte 0x00002abd - thumb_func_end sub_80BEB20 - - thumb_func_start sub_80BEBC8 -sub_80BEBC8: @ 80BEBC8 - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080BEBCE: - lsls r0, r1, 24 - asrs r1, r0, 24 - lsls r0, r1, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080BEBE0 - adds r0, r1, 0 - b _080BEBF0 -_080BEBE0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0xF - ble _080BEBCE - movs r0, 0x1 - negs r0, r0 -_080BEBF0: - pop {r1} - bx r1 - thumb_func_end sub_80BEBC8 - - thumb_func_start sub_80BEBF4 -sub_80BEBF4: @ 80BEBF4 - push {r4,lr} - movs r4, 0 -_080BEBF8: - adds r0, r4, 0 - bl sub_80BEC10 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080BEBF8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80BEBF4 - - thumb_func_start sub_80BEC10 -sub_80BEC10: @ 80BEC10 - lsls r0, 24 - ldr r1, _080BEC30 @ =gSaveBlock1 - lsrs r0, 22 - adds r0, r1 - ldr r2, _080BEC34 @ =0x00002abc - adds r1, r0, r2 - movs r2, 0 - strb r2, [r1] - ldr r3, _080BEC38 @ =0x00002abd - adds r1, r0, r3 - strb r2, [r1] - ldr r1, _080BEC3C @ =0x00002abe - adds r0, r1 - strh r2, [r0] - bx lr - .align 2, 0 -_080BEC30: .4byte gSaveBlock1 -_080BEC34: .4byte 0x00002abc -_080BEC38: .4byte 0x00002abd -_080BEC3C: .4byte 0x00002abe - thumb_func_end sub_80BEC10 - - thumb_func_start sub_80BEC40 -sub_80BEC40: @ 80BEC40 - push {r4-r7,lr} - movs r1, 0 - ldr r6, _080BEC80 @ =gSaveBlock1 -_080BEC46: - ldr r3, _080BEC80 @ =gSaveBlock1 - lsls r2, r1, 2 - adds r0, r2, r3 - ldr r4, _080BEC84 @ =0x00002abc - adds r0, r4 - ldrb r0, [r0] - adds r5, r1, 0x1 - cmp r0, 0 - bne _080BEC92 - lsls r0, r5, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bhi _080BEC92 - adds r4, r3, r4 - adds r3, r2, r4 -_080BEC64: - lsls r2, r1, 2 - adds r0, r2, r6 - ldr r7, _080BEC84 @ =0x00002abc - adds r0, r7 - ldrb r0, [r0] - cmp r0, 0 - beq _080BEC88 - adds r0, r2, r4 - ldr r0, [r0] - str r0, [r3] - adds r0, r1, 0 - bl sub_80BEC10 - b _080BEC92 - .align 2, 0 -_080BEC80: .4byte gSaveBlock1 -_080BEC84: .4byte 0x00002abc -_080BEC88: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080BEC64 -_080BEC92: - lsls r0, r5, 24 - lsrs r1, r0, 24 - cmp r1, 0xE - bls _080BEC46 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BEC40 - - thumb_func_start sub_80BECA0 -sub_80BECA0: @ 80BECA0 - push {r4,lr} - movs r2, 0 - ldr r3, _080BECCC @ =gSaveBlock1 -_080BECA6: - lsls r0, r2, 2 - adds r1, r0, r3 - ldr r4, _080BECD0 @ =0x00002abc - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080BECD4 - adds r4, 0x1 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BECD4 - adds r4, 0x1 - adds r0, r1, r4 - ldrh r0, [r0] - cmp r0, 0x2 - bhi _080BECD4 - adds r0, r2, 0 - b _080BECE0 - .align 2, 0 -_080BECCC: .4byte gSaveBlock1 -_080BECD0: .4byte 0x00002abc -_080BECD4: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080BECA6 - movs r0, 0xFF -_080BECE0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BECA0 - - thumb_func_start sub_80BECE8 -sub_80BECE8: @ 80BECE8 - push {r4,lr} - bl sub_80BECA0 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - bne _080BED00 - ldr r1, _080BECFC @ =gScriptResult - movs r0, 0 - b _080BED86 - .align 2, 0 -_080BECFC: .4byte gScriptResult -_080BED00: - ldr r0, _080BED2C @ =gSaveBlock1 - lsls r1, 2 - adds r4, r1, r0 - ldr r0, _080BED30 @ =0x00002abe - adds r1, r4, r0 - ldrh r0, [r1] - cmp r0, 0 - bne _080BED5C - ldr r2, _080BED34 @ =0x00002abd - adds r1, r4, r2 - movs r0, 0x2 - strb r0, [r1] - ldr r0, _080BED38 @ =gLocalTime - ldrb r0, [r0, 0x2] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x13 - bgt _080BED40 - ldr r1, _080BED3C @ =gTVNewsTextGroup2 - subs r2, 0x1 - b _080BED44 - .align 2, 0 -_080BED2C: .4byte gSaveBlock1 -_080BED30: .4byte 0x00002abe -_080BED34: .4byte 0x00002abd -_080BED38: .4byte gLocalTime -_080BED3C: .4byte gTVNewsTextGroup2 -_080BED40: - ldr r1, _080BED54 @ =gTVNewsTextGroup3 - ldr r2, _080BED58 @ =0x00002abc -_080BED44: - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl ShowFieldMessage - b _080BED82 - .align 2, 0 -_080BED54: .4byte gTVNewsTextGroup3 -_080BED58: .4byte 0x00002abc -_080BED5C: - ldrh r1, [r1] - ldr r0, _080BED90 @ =gStringVar1 - movs r2, 0 - movs r3, 0x1 - bl ConvertIntToDecimalStringN - ldr r0, _080BED94 @ =0x00002abd - adds r1, r4, r0 - movs r0, 0 - strb r0, [r1] - ldr r1, _080BED98 @ =gTVNewsTextGroup1 - ldr r2, _080BED9C @ =0x00002abc - adds r0, r4, r2 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - bl ShowFieldMessage -_080BED82: - ldr r1, _080BEDA0 @ =gScriptResult - movs r0, 0x1 -_080BED86: - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BED90: .4byte gStringVar1 -_080BED94: .4byte 0x00002abd -_080BED98: .4byte gTVNewsTextGroup1 -_080BED9C: .4byte 0x00002abc -_080BEDA0: .4byte gScriptResult - thumb_func_end sub_80BECE8 - - thumb_func_start GetPriceReduction -GetPriceReduction: @ 80BEDA4 - push {r4,r5,lr} - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0 - bne _080BEDB4 - b _080BEDF6 -_080BEDB0: - movs r0, 0x1 - b _080BEDF8 -_080BEDB4: - movs r2, 0 - ldr r4, _080BEDE0 @ =gSaveBlock1 -_080BEDB8: - lsls r0, r2, 2 - adds r1, r0, r4 - ldr r5, _080BEDE4 @ =0x00002abc - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, r3 - bne _080BEDEC - ldr r2, _080BEDE8 @ =0x00002abd - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x2 - bne _080BEDF6 - adds r0, r3, 0 - bl IsPriceDiscounted - lsls r0, 24 - cmp r0, 0 - bne _080BEDB0 - b _080BEDF6 - .align 2, 0 -_080BEDE0: .4byte gSaveBlock1 -_080BEDE4: .4byte 0x00002abc -_080BEDE8: .4byte 0x00002abd -_080BEDEC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xF - bls _080BEDB8 -_080BEDF6: - movs r0, 0 -_080BEDF8: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GetPriceReduction - - thumb_func_start IsPriceDiscounted -IsPriceDiscounted: @ 80BEE00 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BEE12 - cmp r0, 0x3 - beq _080BEE30 -_080BEE0E: - movs r0, 0x1 - b _080BEE3C -_080BEE12: - ldr r0, _080BEE28 @ =gSaveBlock1 - ldrh r1, [r0, 0x4] - movs r0, 0x80 - lsls r0, 1 - cmp r1, r0 - bne _080BEE3A - ldr r0, _080BEE2C @ =gScriptLastTalked - ldrh r0, [r0] - cmp r0, 0x1A - beq _080BEE0E - b _080BEE3A - .align 2, 0 -_080BEE28: .4byte gSaveBlock1 -_080BEE2C: .4byte gScriptLastTalked -_080BEE30: - ldr r0, _080BEE40 @ =gSaveBlock1 - ldrh r1, [r0, 0x4] - ldr r0, _080BEE44 @ =0x0000160d - cmp r1, r0 - beq _080BEE0E -_080BEE3A: - movs r0, 0 -_080BEE3C: - pop {r1} - bx r1 - .align 2, 0 -_080BEE40: .4byte gSaveBlock1 -_080BEE44: .4byte 0x0000160d - thumb_func_end IsPriceDiscounted - - thumb_func_start sub_80BEE48 -sub_80BEE48: @ 80BEE48 - push {r4,lr} - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0 - bne _080BEE56 -_080BEE52: - movs r0, 0x1 - b _080BEE74 -_080BEE56: - movs r1, 0 - ldr r4, _080BEE7C @ =gSaveBlock1 - ldr r3, _080BEE80 @ =0x00002abc -_080BEE5C: - lsls r0, r1, 2 - adds r0, r4 - adds r0, r3 - ldrb r0, [r0] - cmp r0, r2 - beq _080BEE52 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080BEE5C - movs r0, 0 -_080BEE74: - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_080BEE7C: .4byte gSaveBlock1 -_080BEE80: .4byte 0x00002abc - thumb_func_end sub_80BEE48 - - thumb_func_start sub_80BEE84 -sub_80BEE84: @ 80BEE84 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r7, r0, 16 - movs r5, 0 - ldr r0, _080BEEB8 @ =gSaveBlock1 - mov r8, r0 -_080BEE94: - lsls r0, r5, 2 - mov r1, r8 - adds r2, r0, r1 - ldr r3, _080BEEBC @ =0x00002abc - adds r1, r2, r3 - ldrb r1, [r1] - adds r6, r0, 0 - cmp r1, 0 - beq _080BEEEC - ldr r1, _080BEEC0 @ =0x00002abe - adds r0, r2, r1 - ldrh r0, [r0] - cmp r0, r7 - bcs _080BEEC4 - adds r0, r5, 0 - bl sub_80BEC10 - b _080BEEEC - .align 2, 0 -_080BEEB8: .4byte gSaveBlock1 -_080BEEBC: .4byte 0x00002abc -_080BEEC0: .4byte 0x00002abe -_080BEEC4: - ldr r3, _080BEF04 @ =0x00002abd - adds r4, r2, r3 - ldrb r0, [r4] - cmp r0, 0 - bne _080BEEDE - ldr r0, _080BEF08 @ =0x00000804 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _080BEEDE - strb r0, [r4] -_080BEEDE: - mov r0, r8 - adds r1, r6, r0 - ldr r3, _080BEF0C @ =0x00002abe - adds r1, r3 - ldrh r0, [r1] - subs r0, r7 - strh r0, [r1] -_080BEEEC: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xF - bls _080BEE94 - bl sub_80BEC40 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BEF04: .4byte 0x00002abd -_080BEF08: .4byte 0x00000804 -_080BEF0C: .4byte 0x00002abe - thumb_func_end sub_80BEE84 - - thumb_func_start sub_80BEF10 -sub_80BEF10: @ 80BEF10 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsrs r1, 24 - adds r2, r1, 0 - cmp r1, 0x1 - beq _080BEF50 - cmp r1, 0x1 - bgt _080BEF2A - cmp r1, 0 - beq _080BEF34 - b _080BEF98 -_080BEF2A: - cmp r2, 0x2 - beq _080BEF6C - cmp r2, 0x3 - beq _080BEF88 - b _080BEF98 -_080BEF34: - ldr r1, _080BEF48 @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEF4C @ =gUnknown_083CE048 - ldr r1, [r1, 0x14] - bl StringCopy - b _080BEF98 - .align 2, 0 -_080BEF48: .4byte gUnknown_083D1464 -_080BEF4C: .4byte gUnknown_083CE048 -_080BEF50: - ldr r1, _080BEF64 @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEF68 @ =gUnknown_083CE048 - ldr r1, [r1, 0x18] - bl StringCopy - b _080BEF98 - .align 2, 0 -_080BEF64: .4byte gUnknown_083D1464 -_080BEF68: .4byte gUnknown_083CE048 -_080BEF6C: - ldr r1, _080BEF80 @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEF84 @ =gUnknown_083CE048 - ldr r1, [r1, 0x1C] - bl StringCopy - b _080BEF98 - .align 2, 0 -_080BEF80: .4byte gUnknown_083D1464 -_080BEF84: .4byte gUnknown_083CE048 -_080BEF88: - ldr r1, _080BEF9C @ =gUnknown_083D1464 - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEFA0 @ =gUnknown_083CE048 - ldr r1, [r1, 0x20] - bl StringCopy -_080BEF98: - pop {r0} - bx r0 - .align 2, 0 -_080BEF9C: .4byte gUnknown_083D1464 -_080BEFA0: .4byte gUnknown_083CE048 - thumb_func_end sub_80BEF10 - - thumb_func_start CopyContestCategoryToStringVar -CopyContestCategoryToStringVar: @ 80BEFA4 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 24 - lsrs r0, r1, 24 - cmp r0, 0x4 - bhi _080BF054 - lsls r0, 2 - ldr r1, _080BEFBC @ =_080BEFC0 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BEFBC: .4byte _080BEFC0 - .align 2, 0 -_080BEFC0: - .4byte _080BEFD4 - .4byte _080BEFF0 - .4byte _080BF00C - .4byte _080BF028 - .4byte _080BF044 -_080BEFD4: - ldr r1, _080BEFE8 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BEFEC @ =gUnknown_083CE048 - ldr r1, [r1] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BEFE8: .4byte gUnknown_083D1464 -_080BEFEC: .4byte gUnknown_083CE048 -_080BEFF0: - ldr r1, _080BF004 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF008 @ =gUnknown_083CE048 - ldr r1, [r1, 0x4] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BF004: .4byte gUnknown_083D1464 -_080BF008: .4byte gUnknown_083CE048 -_080BF00C: - ldr r1, _080BF020 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF024 @ =gUnknown_083CE048 - ldr r1, [r1, 0x8] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BF020: .4byte gUnknown_083D1464 -_080BF024: .4byte gUnknown_083CE048 -_080BF028: - ldr r1, _080BF03C @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF040 @ =gUnknown_083CE048 - ldr r1, [r1, 0xC] - bl StringCopy - b _080BF054 - .align 2, 0 -_080BF03C: .4byte gUnknown_083D1464 -_080BF040: .4byte gUnknown_083CE048 -_080BF044: - ldr r1, _080BF058 @ =gUnknown_083D1464 - lsls r0, r2, 2 - adds r0, r1 - ldr r0, [r0] - ldr r1, _080BF05C @ =gUnknown_083CE048 - ldr r1, [r1, 0x10] - bl StringCopy -_080BF054: - pop {r0} - bx r0 - .align 2, 0 -_080BF058: .4byte gUnknown_083D1464 -_080BF05C: .4byte gUnknown_083CE048 - thumb_func_end CopyContestCategoryToStringVar - - thumb_func_start SetContestCategoryStringVarForInterview -SetContestCategoryStringVarForInterview: @ 80BF060 - push {lr} - ldr r0, _080BF080 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF084 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrb r1, [r0, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - pop {r0} - bx r0 - .align 2, 0 -_080BF080: .4byte gSpecialVar_0x8004 -_080BF084: .4byte gSaveBlock1 + 0x2738 - thumb_func_end SetContestCategoryStringVarForInterview - - thumb_func_start sub_80BF088 -sub_80BF088: @ 80BF088 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r5, 0 - bl sub_80BF0B8 - adds r3, r0, 0 - ldr r0, _080BF0B4 @ =gUnknown_083D1464 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - lsls r3, 24 - lsrs r3, 24 - adds r1, r5, 0 - movs r2, 0 - bl ConvertIntToDecimalStringN - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BF0B4: .4byte gUnknown_083D1464 - thumb_func_end sub_80BF088 - - thumb_func_start sub_80BF0B8 -sub_80BF0B8: @ 80BF0B8 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0xA - bl __divsi3 - cmp r0, 0 - beq _080BF144 - adds r0, r4, 0 - movs r1, 0x64 - bl __divsi3 - cmp r0, 0 - bne _080BF0D6 - movs r0, 0x2 - b _080BF14E -_080BF0D6: - movs r1, 0xFA - lsls r1, 2 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF0E8 - movs r0, 0x3 - b _080BF14E -_080BF0E8: - ldr r1, _080BF0F8 @ =0x00002710 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF0FC - movs r0, 0x4 - b _080BF14E - .align 2, 0 -_080BF0F8: .4byte 0x00002710 -_080BF0FC: - ldr r1, _080BF10C @ =0x000186a0 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF110 - movs r0, 0x5 - b _080BF14E - .align 2, 0 -_080BF10C: .4byte 0x000186a0 -_080BF110: - ldr r1, _080BF120 @ =0x000f4240 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF124 - movs r0, 0x6 - b _080BF14E - .align 2, 0 -_080BF120: .4byte 0x000f4240 -_080BF124: - ldr r1, _080BF134 @ =0x00989680 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - bne _080BF138 - movs r0, 0x7 - b _080BF14E - .align 2, 0 -_080BF134: .4byte 0x00989680 -_080BF138: - ldr r1, _080BF148 @ =0x05f5e100 - adds r0, r4, 0 - bl __divsi3 - cmp r0, 0 - beq _080BF14C -_080BF144: - movs r0, 0x1 - b _080BF14E - .align 2, 0 -_080BF148: .4byte 0x05f5e100 -_080BF14C: - movs r0, 0x8 -_080BF14E: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF0B8 - - thumb_func_start sub_80BF154 -sub_80BF154: @ 80BF154 - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - movs r5, 0 -_080BF166: - lsls r4, r5, 1 - adds r0, r6, 0x6 - adds r1, r0, r4 - ldrh r0, [r1] - cmp r0, 0 - beq _080BF186 - bl ItemId_GetPrice - lsls r0, 16 - lsrs r0, 16 - adds r1, r6, 0 - adds r1, 0xC - adds r1, r4 - ldrh r1, [r1] - muls r0, r1 - adds r7, r0 -_080BF186: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080BF166 - ldrb r0, [r6, 0x2] - cmp r0, 0x1 - bne _080BF1A0 - asrs r1, r7, 1 - mov r0, r8 - bl sub_80BF088 - b _080BF1A8 -_080BF1A0: - mov r0, r8 - adds r1, r7, 0 - bl sub_80BF088 -_080BF1A8: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BF154 - - thumb_func_start sub_80BF1B4 -sub_80BF1B4: @ 80BF1B4 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - ldr r7, _080BF1F4 @ =gSaveBlock1 + 0x2738 - bl GetPlayerTrainerId - adds r5, r0, 0 - movs r4, 0x5 -_080BF1C4: - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r1, r0, r7 - ldrb r0, [r1] - cmp r0, r6 - bne _080BF1F8 - movs r3, 0xFF - adds r0, r5, 0 - ands r0, r3 - adds r2, r1, 0 - adds r2, 0x22 - ldrb r2, [r2] - cmp r0, r2 - bne _080BF1F8 - lsrs r0, r5, 8 - ands r0, r3 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080BF1F8 - movs r0, 0x1 - b _080BF204 - .align 2, 0 -_080BF1F4: .4byte gSaveBlock1 + 0x2738 -_080BF1F8: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x17 - bls _080BF1C4 - movs r0, 0 -_080BF204: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_80BF1B4 - - thumb_func_start sub_80BF20C -sub_80BF20C: @ 80BF20C - push {r4-r7,lr} - movs r2, 0 -_080BF210: - adds r1, r2, 0x1 - lsls r0, r1, 24 - lsrs r5, r0, 24 - adds r7, r1, 0 - cmp r5, 0x2 - bhi _080BF248 - ldr r6, _080BF258 @ =gUnknown_02038724 - lsls r0, r2, 2 - adds r4, r0, r6 -_080BF222: - lsls r0, r5, 2 - adds r3, r0, r6 - ldrh r0, [r4, 0x2] - ldrh r1, [r3, 0x2] - cmp r0, r1 - bcs _080BF23E - ldrh r1, [r4] - adds r2, r0, 0 - ldrh r0, [r3] - strh r0, [r4] - ldrh r0, [r3, 0x2] - strh r0, [r4, 0x2] - strh r1, [r3] - strh r2, [r3, 0x2] -_080BF23E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _080BF222 -_080BF248: - lsls r0, r7, 24 - lsrs r2, r0, 24 - cmp r2, 0x1 - bls _080BF210 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BF258: .4byte gUnknown_02038724 - thumb_func_end sub_80BF20C - - thumb_func_start sub_80BF25C -sub_80BF25C: @ 80BF25C - push {r4-r6,lr} - lsls r0, 24 - lsrs r5, r0, 24 - movs r1, 0 - ldr r3, _080BF28C @ =gSaveBlock1 - ldr r0, _080BF290 @ =0x00002738 - adds r4, r3, r0 -_080BF26A: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - ldr r6, _080BF290 @ =0x00002738 - adds r0, r2, r6 - ldrb r0, [r0] - cmp r0, r5 - bne _080BF2AE - ldr r3, _080BF294 @ =0x00002739 - adds r0, r2, r3 - ldrb r2, [r0] - cmp r2, 0x1 - bne _080BF29C - ldr r0, _080BF298 @ =gScriptResult - strh r2, [r0] - b _080BF2BC - .align 2, 0 -_080BF28C: .4byte gSaveBlock1 -_080BF290: .4byte 0x00002738 -_080BF294: .4byte 0x00002739 -_080BF298: .4byte gScriptResult -_080BF29C: - adds r0, r4, 0 - bl sub_80BF55C - adds r0, r4, 0 - bl sub_80BF588 - bl sub_80BF6D8 - b _080BF2BC -_080BF2AE: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080BF26A - bl sub_80BF6D8 -_080BF2BC: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80BF25C - - thumb_func_start sub_80BF2C4 -sub_80BF2C4: @ 80BF2C4 - push {lr} - ldr r1, _080BF2E0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080BF2E4 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - subs r0, 0x1 - cmp r0, 0x6 - bhi _080BF330 - lsls r0, 2 - ldr r1, _080BF2E8 @ =_080BF2EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080BF2E0: .4byte gScriptResult -_080BF2E4: .4byte gSpecialVar_0x8005 -_080BF2E8: .4byte _080BF2EC - .align 2, 0 -_080BF2EC: - .4byte _080BF308 - .4byte _080BF30E - .4byte _080BF314 - .4byte _080BF31A - .4byte _080BF320 - .4byte _080BF326 - .4byte _080BF32C -_080BF308: - bl sub_80BF334 - b _080BF330 -_080BF30E: - bl sub_80BF3A4 - b _080BF330 -_080BF314: - bl sub_80BF3DC - b _080BF330 -_080BF31A: - bl sub_80BF46C - b _080BF330 -_080BF320: - bl sub_80BF478 - b _080BF330 -_080BF326: - bl sub_80BF484 - b _080BF330 -_080BF32C: - bl sub_80BF4BC -_080BF330: - pop {r0} - bx r0 - thumb_func_end sub_80BF2C4 - - thumb_func_start sub_80BF334 -sub_80BF334: @ 80BF334 - push {r4,lr} - movs r0, 0x1 - bl sub_80BF25C - ldr r0, _080BF38C @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF384 - ldr r4, _080BF390 @ =gStringVar1 - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r0, r1 - ldr r1, _080BF394 @ =gPlayerParty - adds r0, r1 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, _080BF398 @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldr r0, _080BF39C @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF3A0 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x4 - movs r1, 0x6 - bl sub_80EB6FC -_080BF384: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BF38C: .4byte gScriptResult -_080BF390: .4byte gStringVar1 -_080BF394: .4byte gPlayerParty -_080BF398: .4byte gSpeciesNames -_080BF39C: .4byte gUnknown_03005D38 -_080BF3A0: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF334 - - thumb_func_start sub_80BF3A4 -sub_80BF3A4: @ 80BF3A4 - push {lr} - movs r0, 0x2 - bl sub_80BF25C - ldr r0, _080BF3D0 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF3CC - ldr r0, _080BF3D4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF3D8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x4 - movs r1, 0x6 - bl sub_80EB6FC -_080BF3CC: - pop {r0} - bx r0 - .align 2, 0 -_080BF3D0: .4byte gScriptResult -_080BF3D4: .4byte gUnknown_03005D38 -_080BF3D8: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF3A4 - - thumb_func_start sub_80BF3DC -sub_80BF3DC: @ 80BF3DC - push {r4-r6,lr} - movs r0, 0x3 - bl sub_80BF25C - ldr r0, _080BF450 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF448 - ldr r6, _080BF454 @ =gStringVar1 - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - movs r5, 0x64 - muls r0, r5 - ldr r4, _080BF458 @ =gPlayerParty - adds r0, r4 - movs r1, 0xB - movs r2, 0 - bl GetMonData - movs r1, 0xB - muls r1, r0 - ldr r0, _080BF45C @ =gSpeciesNames - adds r1, r0 - adds r0, r6, 0 - bl StringCopy - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - muls r0, r5 - adds r0, r4 - ldr r4, _080BF460 @ =gStringVar2 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - ldr r0, _080BF464 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF468 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x1C - movs r1, 0x2 - bl sub_80EB6FC -_080BF448: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BF450: .4byte gScriptResult -_080BF454: .4byte gStringVar1 -_080BF458: .4byte gPlayerParty -_080BF45C: .4byte gSpeciesNames -_080BF460: .4byte gStringVar2 -_080BF464: .4byte gUnknown_03005D38 -_080BF468: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF3DC - - thumb_func_start sub_80BF46C -sub_80BF46C: @ 80BF46C - ldr r1, _080BF474 @ =gScriptResult - movs r0, 0x1 - strh r0, [r1] - bx lr - .align 2, 0 -_080BF474: .4byte gScriptResult - thumb_func_end sub_80BF46C - - thumb_func_start sub_80BF478 -sub_80BF478: @ 80BF478 - push {lr} - movs r0, 0x5 - bl sub_80BF25C - pop {r0} - bx r0 - thumb_func_end sub_80BF478 - - thumb_func_start sub_80BF484 -sub_80BF484: @ 80BF484 - push {lr} - movs r0, 0x6 - bl sub_80BF25C - ldr r0, _080BF4B0 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF4AC - ldr r0, _080BF4B4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF4B8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x4 - movs r1, 0x2 - bl sub_80EB6FC -_080BF4AC: - pop {r0} - bx r0 - .align 2, 0 -_080BF4B0: .4byte gScriptResult -_080BF4B4: .4byte gUnknown_03005D38 -_080BF4B8: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF484 - - thumb_func_start sub_80BF4BC -sub_80BF4BC: @ 80BF4BC - push {lr} - movs r0, 0x7 - bl sub_80BF25C - ldr r0, _080BF4E8 @ =gScriptResult - ldrh r0, [r0] - cmp r0, 0 - bne _080BF4E4 - ldr r0, _080BF4EC @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BF4F0 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - adds r0, 0x18 - movs r1, 0x1 - bl sub_80EB6FC -_080BF4E4: - pop {r0} - bx r0 - .align 2, 0 -_080BF4E8: .4byte gScriptResult -_080BF4EC: .4byte gUnknown_03005D38 -_080BF4F0: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BF4BC - -.section .text_80BF544 - - thumb_func_start sub_80BF544 -sub_80BF544: @ 80BF544 - push {lr} - bl GetLeadMonIndex - lsls r0, 24 - lsrs r0, 24 - bl sub_80BF4F4 - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - thumb_func_end sub_80BF544 - - thumb_func_start sub_80BF55C -sub_80BF55C: @ 80BF55C - push {lr} - lsls r1, 24 - lsrs r1, 24 - lsls r2, r1, 3 - adds r2, r1 - lsls r2, 2 - adds r2, r0 - movs r0, 0 - strb r0, [r2] - strb r0, [r2, 0x1] - movs r1, 0 - adds r2, 0x2 - movs r3, 0 -_080BF576: - adds r0, r2, r1 - strb r3, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x21 - bls _080BF576 - pop {r0} - bx r0 - thumb_func_end sub_80BF55C - - thumb_func_start sub_80BF588 -sub_80BF588: @ 80BF588 - push {r4-r7,lr} - adds r4, r0, 0 - movs r5, 0 -_080BF58E: - lsls r0, r5, 3 - adds r0, r5 - lsls r1, r0, 2 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080BF5D2 - adds r0, r5, 0x1 - b _080BF5CA -_080BF5A0: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _080BF5C8 - adds r1, r4 - adds r0, r3, 0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - adds r0, r4, 0 - adds r1, r2, 0 - bl sub_80BF55C - b _080BF5D2 -_080BF5C8: - adds r0, r2, 0x1 -_080BF5CA: - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x4 - bls _080BF5A0 -_080BF5D2: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x3 - bls _080BF58E - movs r5, 0x5 -_080BF5DE: - lsls r0, r5, 3 - adds r0, r5 - lsls r1, r0, 2 - adds r0, r1, r4 - ldrb r0, [r0] - adds r5, 0x1 - cmp r0, 0 - bne _080BF62A - lsls r0, r5, 24 - b _080BF624 -_080BF5F2: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r4 - ldrb r0, [r3] - cmp r0, 0 - beq _080BF620 - adds r1, r4 - adds r0, r3, 0 - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldm r0!, {r3,r6,r7} - stm r1!, {r3,r6,r7} - ldr r0, _080BF61C @ =gSaveBlock1 + 0x2738 - adds r1, r2, 0 - bl sub_80BF55C - b _080BF62A - .align 2, 0 -_080BF61C: .4byte gSaveBlock1 + 0x2738 -_080BF620: - adds r0, r2, 0x1 - lsls r0, 24 -_080BF624: - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080BF5F2 -_080BF62A: - lsls r0, r5, 24 - lsrs r5, r0, 24 - cmp r5, 0x17 - bls _080BF5DE - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BF588 - - thumb_func_start sub_80BF638 -sub_80BF638: @ 80BF638 - push {r4,r5,lr} - adds r4, r0, 0 - adds r0, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r0, 16 - lsrs r0, 16 - bl sub_80BF674 - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - ldr r0, _080BF66C @ =gUnknown_083D1464 - lsls r4, 2 - adds r4, r0 - ldr r0, [r4] - movs r1, 0xB - muls r1, r5 - ldr r2, _080BF670 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - adds r0, r5, 0 - pop {r4,r5} - pop {r1} - bx r1 - .align 2, 0 -_080BF66C: .4byte gUnknown_083D1464 -_080BF670: .4byte gSpeciesNames - thumb_func_end sub_80BF638 - - thumb_func_start sub_80BF674 -sub_80BF674: @ 80BF674 - push {r4-r6,lr} - lsls r0, 16 - lsrs r5, r0, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - ldr r1, _080BF694 @ =0x0000019b - bl __umodsi3 - adds r0, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 - adds r6, r4, 0 - b _080BF6B2 - .align 2, 0 -_080BF694: .4byte 0x0000019b -_080BF698: - cmp r4, 0x1 - bne _080BF6A4 - ldr r4, _080BF6A0 @ =0x0000019b - b _080BF6AA - .align 2, 0 -_080BF6A0: .4byte 0x0000019b -_080BF6A4: - subs r0, r4, 0x1 - lsls r0, 16 - lsrs r4, r0, 16 -_080BF6AA: - cmp r4, r6 - bne _080BF6B2 - adds r4, r5, 0 - b _080BF6CE -_080BF6B2: - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl sub_8090D90 - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x1 - bne _080BF698 - cmp r4, r5 - beq _080BF698 -_080BF6CE: - adds r0, r4, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80BF674 - - thumb_func_start sub_80BF6D8 -sub_80BF6D8: @ 80BF6D8 - push {lr} - ldr r0, _080BF700 @ =gSaveBlock1 + 0x2738 - bl sub_80BF720 - ldr r1, _080BF704 @ =gUnknown_03005D38 - strb r0, [r1] - ldr r2, _080BF708 @ =gSpecialVar_0x8006 - ldrb r1, [r1] - lsls r1, 24 - asrs r1, 24 - strh r1, [r2] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - bne _080BF710 - ldr r1, _080BF70C @ =gScriptResult - movs r0, 0x1 - b _080BF714 - .align 2, 0 -_080BF700: .4byte gSaveBlock1 + 0x2738 -_080BF704: .4byte gUnknown_03005D38 -_080BF708: .4byte gSpecialVar_0x8006 -_080BF70C: .4byte gScriptResult -_080BF710: - ldr r1, _080BF71C @ =gScriptResult - movs r0, 0 -_080BF714: - strh r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080BF71C: .4byte gScriptResult - thumb_func_end sub_80BF6D8 - - thumb_func_start sub_80BF720 -sub_80BF720: @ 80BF720 - push {lr} - adds r2, r0, 0 - movs r1, 0 -_080BF726: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080BF73A - lsls r0, r1, 24 - asrs r0, 24 - b _080BF748 -_080BF73A: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080BF726 - movs r0, 0x1 - negs r0, r0 -_080BF748: - pop {r1} - bx r1 - thumb_func_end sub_80BF720 - - thumb_func_start sub_80BF74C -sub_80BF74C: @ 80BF74C - push {lr} - adds r2, r0, 0 - movs r1, 0x5 -_080BF752: - lsls r0, r1, 24 - asrs r1, r0, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080BF768 - adds r0, r1, 0 - b _080BF778 -_080BF768: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - asrs r0, 24 - cmp r0, 0x17 - ble _080BF752 - movs r0, 0x1 - negs r0, r0 -_080BF778: - pop {r1} - bx r1 - thumb_func_end sub_80BF74C - - thumb_func_start sub_80BF77C -sub_80BF77C: @ 80BF77C - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - bl Random - lsls r0, 16 - lsrs r0, 16 - cmp r0, r4 - bls _080BF794 - movs r0, 0x1 - b _080BF796 -_080BF794: - movs r0, 0 -_080BF796: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF77C - - thumb_func_start sub_80BF79C -sub_80BF79C: @ 80BF79C - push {r4-r6,lr} - adds r4, r0, 0 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r4, 0x4 - ldr r6, _080BF7B8 @ =0x0000ffff - b _080BF7C2 - .align 2, 0 -_080BF7B8: .4byte 0x0000ffff -_080BF7BC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 -_080BF7C2: - cmp r2, 0x6 - bne _080BF7C8 - movs r2, 0 -_080BF7C8: - lsls r1, r2, 1 - adds r0, r5, r1 - ldrh r0, [r0] - adds r3, r4, 0x4 - cmp r0, r6 - beq _080BF7BC - ldr r0, _080BF7E4 @ =gStringVar3 - adds r1, r3, r1 - ldrh r1, [r1] - bl sub_80EB3FC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BF7E4: .4byte gStringVar3 - thumb_func_end sub_80BF79C - - thumb_func_start sub_80BF7E8 -sub_80BF7E8: @ 80BF7E8 - push {lr} - adds r2, r0, 0 - movs r3, 0 - movs r1, 0 - ldrb r0, [r2, 0x4] - cmp r0, 0xFF - beq _080BF814 - adds r2, 0x4 -_080BF7F8: - adds r0, r2, r1 - ldrb r0, [r0] - adds r0, r3, r0 - lsls r0, 16 - lsrs r3, r0, 16 - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bhi _080BF814 - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0xFF - bne _080BF7F8 -_080BF814: - movs r0, 0x7 - ands r3, r0 - adds r0, r3, 0 - pop {r1} - bx r1 - thumb_func_end sub_80BF7E8 - - thumb_func_start sub_80BF820 -sub_80BF820: @ 80BF820 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - ldr r4, [sp, 0x1C] - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - lsls r1, 24 - lsrs r5, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - lsls r3, 16 - lsrs r3, 16 - lsls r4, 16 - lsrs r4, 16 - movs r2, 0 - movs r7, 0xFF -_080BF844: - mov r1, sp - adds r0, r1, r2 - ldrb r1, [r0] - orrs r1, r7 - strb r1, [r0] - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x2 - bls _080BF844 - cmp r3, 0 - bne _080BF8A6 - ldr r4, [sp, 0x20] - adds r4, 0xF - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080BF874 - mov r0, sp - adds r1, r4, r5 - b _080BF920 -_080BF874: - cmp r6, 0x1 - bne _080BF880 - mov r0, sp - subs r1, r2, r5 - adds r1, r4, r1 - b _080BF920 -_080BF880: - cmp r6, 0x2 - bne _080BF892 - mov r1, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - adds r0, r4, r0 - b _080BF950 -_080BF892: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 - adds r0, r4, r0 - b _080BF950 -_080BF8A6: - cmp r3, 0x1 - bne _080BF8F4 - ldr r4, [sp, 0x20] - adds r4, 0x4 - adds r0, r4, 0 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080BF8C2 - mov r0, sp - adds r1, r4, r5 - b _080BF920 -_080BF8C2: - cmp r6, 0x1 - bne _080BF8CE - mov r0, sp - subs r1, r2, r5 - adds r1, r4, r1 - b _080BF920 -_080BF8CE: - cmp r6, 0x2 - bne _080BF8E0 - mov r1, sp - adds r0, r4, r5 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r5, 0x1 - adds r0, r4, r0 - b _080BF950 -_080BF8E0: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4, r0 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 - adds r0, r4, r0 - b _080BF950 -_080BF8F4: - movs r0, 0xB - muls r4, r0 - ldr r7, _080BF910 @ =gSpeciesNames - adds r0, r4, r7 - bl StringLength - lsls r0, 16 - lsrs r2, r0, 16 - cmp r6, 0 - bne _080BF914 - mov r0, sp - adds r1, r5, r4 - b _080BF91E - .align 2, 0 -_080BF910: .4byte gSpeciesNames -_080BF914: - cmp r6, 0x1 - bne _080BF926 - mov r0, sp - subs r1, r2, r5 - adds r1, r4 -_080BF91E: - adds r1, r7 -_080BF920: - ldrb r1, [r1] - strb r1, [r0] - b _080BF954 -_080BF926: - cmp r6, 0x2 - bne _080BF93A - mov r1, sp - adds r0, r5, r4 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r1] - adds r0, r4, 0x1 - adds r0, r5, r0 - b _080BF94E -_080BF93A: - mov r1, sp - subs r0, r2, 0x2 - subs r0, r5 - adds r0, r4 - adds r0, r7 - ldrb r0, [r0] - strb r0, [r1] - subs r0, r2, 0x1 - subs r0, r5 - adds r0, r4 -_080BF94E: - adds r0, r7 -_080BF950: - ldrb r0, [r0] - strb r0, [r1, 0x1] -_080BF954: - ldr r0, _080BF970 @ =gUnknown_083D1464 - mov r2, r8 - lsls r1, r2, 2 - adds r1, r0 - ldr r0, [r1] - mov r1, sp - bl StringCopy - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BF970: .4byte gUnknown_083D1464 - thumb_func_end sub_80BF820 - - thumb_func_start sub_80BF974 -sub_80BF974: @ 80BF974 - push {r4,lr} - movs r1, 0 - ldr r4, _080BF994 @ =gSaveBlock1 - ldr r0, _080BF998 @ =gSpecialVar_0x8004 - ldrh r2, [r0] - ldr r3, _080BF99C @ =0x00002738 -_080BF980: - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - adds r0, r3 - ldrb r0, [r0] - cmp r0, r2 - bne _080BF9A0 - movs r0, 0x1 - b _080BF9AC - .align 2, 0 -_080BF994: .4byte gSaveBlock1 -_080BF998: .4byte gSpecialVar_0x8004 -_080BF99C: .4byte 0x00002738 -_080BF9A0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x4 - bls _080BF980 - movs r0, 0 -_080BF9AC: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF974 - - thumb_func_start sub_80BF9B4 -sub_80BF9B4: @ 80BF9B4 - push {r4,lr} - ldr r0, _080BF9E0 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BF9E4 @ =gPlayerParty - adds r0, r1 - ldr r4, _080BF9E8 @ =gStringVar1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - ldr r0, _080BF9EC @ =gStringVar3 - adds r1, r4, 0 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - beq _080BF9F0 - bl sub_80BE478 - movs r0, 0x1 - b _080BF9F2 - .align 2, 0 -_080BF9E0: .4byte gSpecialVar_0x8004 -_080BF9E4: .4byte gPlayerParty -_080BF9E8: .4byte gStringVar1 -_080BF9EC: .4byte gStringVar3 -_080BF9F0: - movs r0, 0 -_080BF9F2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BF9B4 - - thumb_func_start sub_80BF9F8 -sub_80BF9F8: @ 80BF9F8 - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x8 - ldr r0, _080BFAA0 @ =gSpecialVar_0x8004 - mov r9, r0 - ldrh r0, [r0] - movs r1, 0x64 - mov r8, r1 - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - ldr r6, _080BFAA4 @ =gPlayerParty - adds r0, r6 - ldr r2, _080BFAA8 @ =gStringVar3 - movs r1, 0x2 - bl GetMonData - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - ldr r1, _080BFAAC @ =gStringVar2 - mov r10, r1 - movs r1, 0x2 - mov r2, r10 - bl GetMonData - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0xB - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - lsls r5, 16 - lsrs r5, 16 - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - bl GetMonGender - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - mov r1, r9 - ldrh r0, [r1] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - adds r0, r6 - movs r1, 0 - movs r2, 0 - bl GetMonData - str r0, [sp] - ldr r0, _080BFAB0 @ =c2_080CC144 - str r0, [sp, 0x4] - movs r0, 0x3 - mov r1, r10 - adds r2, r5, 0 - adds r3, r4, 0 - bl DoNamingScreen - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BFAA0: .4byte gSpecialVar_0x8004 -_080BFAA4: .4byte gPlayerParty -_080BFAA8: .4byte gStringVar3 -_080BFAAC: .4byte gStringVar2 -_080BFAB0: .4byte c2_080CC144 - thumb_func_end sub_80BF9F8 - - thumb_func_start c2_080CC144 -c2_080CC144: @ 80BFAB4 - push {lr} - ldr r0, _080BFAD4 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BFAD8 @ =gPlayerParty - adds r0, r1 - ldr r2, _080BFADC @ =gStringVar2 - movs r1, 0x2 - bl SetMonData - bl c2_exit_to_overworld_1_continue_scripts_restart_music - pop {r0} - bx r0 - .align 2, 0 -_080BFAD4: .4byte gSpecialVar_0x8004 -_080BFAD8: .4byte gPlayerParty -_080BFADC: .4byte gStringVar2 - thumb_func_end c2_080CC144 - - thumb_func_start sub_80BFAE0 -sub_80BFAE0: @ 80BFAE0 - push {r4,lr} - ldr r0, _080BFB04 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BFB08 @ =gPlayerParty - adds r0, r1 - ldr r4, _080BFB0C @ =gStringVar1 - movs r1, 0x2 - adds r2, r4, 0 - bl GetMonData - adds r0, r4, 0 - bl StringGetEnd10 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFB04: .4byte gSpecialVar_0x8004 -_080BFB08: .4byte gPlayerParty -_080BFB0C: .4byte gStringVar1 - thumb_func_end sub_80BFAE0 - - thumb_func_start sub_80BFB10 -sub_80BFB10: @ 80BFB10 - push {r4,lr} - bl GetPlayerTrainerId - adds r4, r0, 0 - ldr r0, _080BFB38 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, _080BFB3C @ =gPlayerParty - adds r0, r1 - movs r1, 0x1 - movs r2, 0 - bl GetMonData - cmp r4, r0 - bne _080BFB44 - ldr r1, _080BFB40 @ =gScriptResult - movs r0, 0 - b _080BFB48 - .align 2, 0 -_080BFB38: .4byte gSpecialVar_0x8004 -_080BFB3C: .4byte gPlayerParty -_080BFB40: .4byte gScriptResult -_080BFB44: - ldr r1, _080BFB50 @ =gScriptResult - movs r0, 0x1 -_080BFB48: - strh r0, [r1] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFB50: .4byte gScriptResult - thumb_func_end sub_80BFB10 - - thumb_func_start sub_80BFB54 -sub_80BFB54: @ 80BFB54 - push {lr} - lsls r0, 24 - lsrs r1, r0, 24 - adds r2, r1, 0 - cmp r1, 0 - beq _080BFB8A - subs r0, r1, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080BFB6E - movs r0, 0x2 - b _080BFB90 -_080BFB6E: - adds r0, r1, 0 - subs r0, 0x15 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bhi _080BFB7E - movs r0, 0x3 - b _080BFB90 -_080BFB7E: - adds r0, r2, 0 - subs r0, 0x29 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x13 - bls _080BFB8E -_080BFB8A: - movs r0, 0 - b _080BFB90 -_080BFB8E: - movs r0, 0x4 -_080BFB90: - pop {r1} - bx r1 - thumb_func_end sub_80BFB54 - - thumb_func_start GetPlayerTrainerId -GetPlayerTrainerId: @ 80BFB94 - ldr r2, _080BFBAC @ =gSaveBlock2 - ldrb r0, [r2, 0xD] - lsls r0, 24 - ldrb r1, [r2, 0xC] - lsls r1, 16 - orrs r0, r1 - ldrb r1, [r2, 0xB] - lsls r1, 8 - orrs r0, r1 - ldrb r1, [r2, 0xA] - orrs r0, r1 - bx lr - .align 2, 0 -_080BFBAC: .4byte gSaveBlock2 - thumb_func_end GetPlayerTrainerId - - thumb_func_start CheckForBigMovieOrEmergencyNewsOnTV -CheckForBigMovieOrEmergencyNewsOnTV: @ 80BFBB0 - push {lr} - ldr r1, _080BFBD0 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080BFBCC - ldr r0, _080BFBD4 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080BFBD8 - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - beq _080BFBE0 -_080BFBCC: - movs r0, 0 - b _080BFC0A - .align 2, 0 -_080BFBD0: .4byte gSaveBlock1 -_080BFBD4: .4byte gSaveBlock2 -_080BFBD8: - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080BFBCC -_080BFBE0: - ldr r0, _080BFC04 @ =0x0000085d - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BFBFE - movs r0, 0x83 - lsls r0, 4 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BFC08 -_080BFBFE: - movs r0, 0x1 - b _080BFC0A - .align 2, 0 -_080BFC04: .4byte 0x0000085d -_080BFC08: - movs r0, 0x2 -_080BFC0A: - pop {r1} - bx r1 - thumb_func_end CheckForBigMovieOrEmergencyNewsOnTV - - thumb_func_start GetMomOrDadStringForTVMessage -GetMomOrDadStringForTVMessage: @ 80BFC10 - push {r4,lr} - ldr r1, _080BFC40 @ =gSaveBlock1 - movs r0, 0x4 - ldrsb r0, [r1, r0] - cmp r0, 0x1 - bne _080BFC6C - ldr r0, _080BFC44 @ =gSaveBlock2 - ldrb r0, [r0, 0x8] - cmp r0, 0 - bne _080BFC54 - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0 - bne _080BFC6C - ldr r0, _080BFC48 @ =gStringVar1 - ldr r1, _080BFC4C @ =gOtherText_Mom - bl StringCopy - ldr r0, _080BFC50 @ =0x00004003 - movs r1, 0x1 - bl VarSet - b _080BFC6C - .align 2, 0 -_080BFC40: .4byte gSaveBlock1 -_080BFC44: .4byte gSaveBlock2 -_080BFC48: .4byte gStringVar1 -_080BFC4C: .4byte gOtherText_Mom -_080BFC50: .4byte 0x00004003 -_080BFC54: - movs r0, 0x5 - ldrsb r0, [r1, r0] - cmp r0, 0x2 - bne _080BFC6C - ldr r0, _080BFCB4 @ =gStringVar1 - ldr r1, _080BFCB8 @ =gOtherText_Mom - bl StringCopy - ldr r0, _080BFCBC @ =0x00004003 - movs r1, 0x1 - bl VarSet -_080BFC6C: - ldr r4, _080BFCBC @ =0x00004003 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x1 - beq _080BFCAA - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - beq _080BFCC0 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x2 - bls _080BFCD4 - adds r0, r4, 0 - bl VarGet - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BFCC0 -_080BFCAA: - ldr r0, _080BFCB4 @ =gStringVar1 - ldr r1, _080BFCB8 @ =gOtherText_Mom - bl StringCopy - b _080BFD10 - .align 2, 0 -_080BFCB4: .4byte gStringVar1 -_080BFCB8: .4byte gOtherText_Mom -_080BFCBC: .4byte 0x00004003 -_080BFCC0: - ldr r0, _080BFCCC @ =gStringVar1 - ldr r1, _080BFCD0 @ =gOtherText_Dad - bl StringCopy - b _080BFD10 - .align 2, 0 -_080BFCCC: .4byte gStringVar1 -_080BFCD0: .4byte gOtherText_Dad -_080BFCD4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080BFD00 - ldr r0, _080BFCF8 @ =gStringVar1 - ldr r1, _080BFCFC @ =gOtherText_Mom - bl StringCopy - adds r0, r4, 0 - movs r1, 0x1 - bl VarSet - b _080BFD10 - .align 2, 0 -_080BFCF8: .4byte gStringVar1 -_080BFCFC: .4byte gOtherText_Mom -_080BFD00: - ldr r0, _080BFD18 @ =gStringVar1 - ldr r1, _080BFD1C @ =gOtherText_Dad - bl StringCopy - adds r0, r4, 0 - movs r1, 0x2 - bl VarSet -_080BFD10: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BFD18: .4byte gStringVar1 -_080BFD1C: .4byte gOtherText_Dad - thumb_func_end GetMomOrDadStringForTVMessage - - thumb_func_start sub_80BFD20 -sub_80BFD20: @ 80BFD20 - push {lr} - ldr r0, _080BFD3C @ =0x000040bc - movs r1, 0 - bl VarSet - ldr r0, _080BFD40 @ =gSaveBlock1 - ldrb r1, [r0, 0x5] - ldrb r2, [r0, 0x4] - movs r0, 0x5 - bl RemoveFieldObjectByLocalIdAndMap - pop {r0} - bx r0 - .align 2, 0 -_080BFD3C: .4byte 0x000040bc -_080BFD40: .4byte gSaveBlock1 - thumb_func_end sub_80BFD20 - - thumb_func_start sub_80BFD44 -sub_80BFD44: @ 80BFD44 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - movs r4, 0 -_080BFD54: - lsls r0, r4, 3 - subs r0, r4 - lsls r0, 5 - adds r0, r4 - lsls r0, 2 - ldr r5, _080BFD8C @ =0x02007000 - adds r0, r5 - adds r1, r4, 0 - muls r1, r7 - add r1, r8 - movs r2, 0xE1 - lsls r2, 2 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080BFD54 - adds r4, r5, 0 - cmp r6, 0x1 - beq _080BFDBC - cmp r6, 0x1 - bgt _080BFD90 - cmp r6, 0 - beq _080BFD9A - b _080BFDFC - .align 2, 0 -_080BFD8C: .4byte 0x02007000 -_080BFD90: - cmp r6, 0x2 - beq _080BFDCC - cmp r6, 0x3 - beq _080BFDE8 - b _080BFDFC -_080BFD9A: - ldr r0, _080BFDB4 @ =gSaveBlock1 + 0x2738 - movs r2, 0xE1 - lsls r2, 2 - adds r1, r4, r2 - movs r3, 0xE1 - lsls r3, 3 - adds r2, r4, r3 - ldr r5, _080BFDB8 @ =0x00000a8c - adds r3, r4, r5 - bl sub_80BFE24 - b _080BFDFC - .align 2, 0 -_080BFDB4: .4byte gSaveBlock1 + 0x2738 -_080BFDB8: .4byte 0x00000a8c -_080BFDBC: - ldr r1, _080BFDC8 @ =gSaveBlock1 + 0x2738 - movs r0, 0xE1 - lsls r0, 3 - adds r2, r4, r0 - b _080BFDD4 - .align 2, 0 -_080BFDC8: .4byte gSaveBlock1 + 0x2738 -_080BFDCC: - movs r0, 0xE1 - lsls r0, 2 - adds r1, r4, r0 - ldr r2, _080BFDE0 @ =gSaveBlock1 + 0x2738 -_080BFDD4: - ldr r5, _080BFDE4 @ =0x00000a8c - adds r3, r4, r5 - adds r0, r4, 0 - bl sub_80BFE24 - b _080BFDFC - .align 2, 0 -_080BFDE0: .4byte gSaveBlock1 + 0x2738 -_080BFDE4: .4byte 0x00000a8c -_080BFDE8: - movs r0, 0xE1 - lsls r0, 2 - adds r1, r5, r0 - movs r3, 0xE1 - lsls r3, 3 - adds r2, r5, r3 - ldr r3, _080BFE20 @ =gSaveBlock1 + 0x2738 - adds r0, r5, 0 - bl sub_80BFE24 -_080BFDFC: - ldr r4, _080BFE20 @ =gSaveBlock1 + 0x2738 - adds r0, r4, 0 - bl sub_80BF588 - bl sub_80C04A0 - adds r0, r4, 0 - bl sub_80BF588 - bl sub_80C01D4 - bl sub_80C0408 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BFE20: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80BFD44 - - thumb_func_start sub_80BFE24 -sub_80BFE24: @ 80BFE24 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x20 - str r0, [sp, 0x10] - str r1, [sp, 0x14] - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - add r0, sp, 0x10 - str r0, [sp] - add r0, sp, 0x14 - str r0, [sp, 0x4] - add r0, sp, 0x18 - str r0, [sp, 0x8] - add r0, sp, 0x1C - str r0, [sp, 0xC] - bl GetLinkPlayerCount - ldr r1, _080BFEA0 @ =gUnknown_03000720 - strb r0, [r1] -_080BFE50: - movs r6, 0 - ldr r0, _080BFEA0 @ =gUnknown_03000720 - ldrb r1, [r0] - cmp r6, r1 - bcs _080BFE50 - mov r10, r0 -_080BFE5C: - cmp r6, 0 - bne _080BFE64 - ldr r2, _080BFEA4 @ =gUnknown_020387E4 - strb r6, [r2] -_080BFE64: - lsls r4, r6, 2 - mov r3, sp - adds r0, r3, r4 - ldr r0, [r0] - ldr r0, [r0] - bl sub_80C019C - ldr r1, _080BFEA8 @ =gUnknown_03000722 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - adds r7, r4, 0 - cmp r0, r1 - bne _080BFEAC - ldr r1, _080BFEA4 @ =gUnknown_020387E4 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - lsls r0, 24 - lsrs r0, 24 - mov r2, r10 - ldrb r2, [r2] - cmp r0, r2 - beq _080BFF58 - adds r6, 0x1 - mov r9, r6 - b _080BFF3C - .align 2, 0 -_080BFEA0: .4byte gUnknown_03000720 -_080BFEA4: .4byte gUnknown_020387E4 -_080BFEA8: .4byte gUnknown_03000722 -_080BFEAC: - movs r5, 0 - mov r3, r10 - ldrb r0, [r3] - subs r0, 0x1 - adds r2, r6, 0x1 - mov r9, r2 - cmp r5, r0 - bge _080BFF22 - ldr r3, _080BFF4C @ =gUnknown_03000720 - mov r8, r3 -_080BFEC0: - adds r0, r6, r5 - adds r4, r0, 0x1 - mov r0, r8 - ldrb r1, [r0] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - ldr r0, [r0] - bl sub_80BF74C - ldr r1, _080BFF50 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080BFF12 - mov r2, r8 - ldrb r1, [r2] - adds r0, r4, 0 - bl __modsi3 - adds r2, r0, 0 - lsls r0, r2, 2 - add r0, sp - ldr r0, [r0] - mov r3, sp - adds r1, r3, r7 - ldr r1, [r1] - lsls r2, 24 - lsrs r2, 24 - bl sub_80BFF68 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BFF22 -_080BFF12: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - mov r1, r8 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - blt _080BFEC0 -_080BFF22: - mov r2, r10 - ldrb r0, [r2] - subs r0, 0x1 - cmp r5, r0 - bne _080BFF3C - mov r3, sp - adds r0, r3, r7 - ldr r0, [r0] - ldr r0, [r0] - ldr r1, _080BFF54 @ =gUnknown_03000722 - ldrb r1, [r1] - bl sub_80BF55C -_080BFF3C: - mov r1, r9 - lsls r0, r1, 24 - lsrs r6, r0, 24 - mov r2, r10 - ldrb r2, [r2] - cmp r6, r2 - bcc _080BFE5C - b _080BFE50 - .align 2, 0 -_080BFF4C: .4byte gUnknown_03000720 -_080BFF50: .4byte gUnknown_03005D38 -_080BFF54: .4byte gUnknown_03000722 -_080BFF58: - add sp, 0x20 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_80BFE24 - - thumb_func_start sub_80BFF68 -sub_80BFF68: @ 80BFF68 - push {r4-r7,lr} - sub sp, 0x4 - lsls r2, 24 - lsrs r7, r2, 24 - ldr r4, [r0] - ldr r6, [r1] - movs r5, 0 - ldr r2, _080BFFA4 @ =gUnknown_03000722 - movs r1, 0 - ldrsb r1, [r2, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrb r0, [r0] - str r2, [sp] - bl sub_80BFB54 - lsls r0, 24 - lsrs r0, 24 - adds r1, r0, 0 - ldr r2, [sp] - cmp r0, 0x3 - beq _080BFFD8 - cmp r0, 0x3 - bgt _080BFFA8 - cmp r0, 0x2 - beq _080BFFAE - b _080C0026 - .align 2, 0 -_080BFFA4: .4byte gUnknown_03000722 -_080BFFA8: - cmp r1, 0x4 - beq _080C0000 - b _080C0026 -_080BFFAE: - ldr r0, _080BFFD4 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80C004C - b _080C0022 - .align 2, 0 -_080BFFD4: .4byte gUnknown_03005D38 -_080BFFD8: - ldr r0, _080BFFFC @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80C00B4 - b _080C0022 - .align 2, 0 -_080BFFFC: .4byte gUnknown_03005D38 -_080C0000: - ldr r0, _080C0030 @ =gUnknown_03005D38 - movs r1, 0 - ldrsb r1, [r0, r1] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r4, r0 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r1, r2, 3 - adds r1, r2 - lsls r1, 2 - adds r1, r6, r1 - adds r2, r7, 0 - bl sub_80C0134 -_080C0022: - lsls r0, 24 - lsrs r5, r0, 24 -_080C0026: - cmp r5, 0x1 - beq _080C0034 - movs r0, 0 - b _080C0040 - .align 2, 0 -_080C0030: .4byte gUnknown_03005D38 -_080C0034: - ldr r0, _080C0048 @ =gUnknown_03000722 - ldrb r1, [r0] - adds r0, r6, 0 - bl sub_80BF55C - movs r0, 0x1 -_080C0040: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_080C0048: .4byte gUnknown_03000722 - thumb_func_end sub_80BFF68 - - thumb_func_start sub_80C004C -sub_80C004C: @ 80C004C - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl GetLinkPlayerTrainerId - adds r5, r0, 0 - movs r2, 0xFF - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r0, r1 - bne _080C007C - lsrs r0, r5, 8 - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080C007C - movs r0, 0 - b _080C00AC -_080C007C: - adds r1, r4, 0 - adds r1, 0x20 - ldrb r0, [r1] - adds r2, r4, 0 - adds r2, 0x22 - strb r0, [r2] - adds r3, r4, 0 - adds r3, 0x21 - ldrb r0, [r3] - adds r2, 0x1 - strb r0, [r2] - strb r5, [r1] - lsrs r0, r5, 8 - strb r0, [r3] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] -_080C00AC: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C004C - - thumb_func_start sub_80C00B4 -sub_80C00B4: @ 80C00B4 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl GetLinkPlayerTrainerId - adds r2, r0, 0 - movs r3, 0xFF - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x20 - ldrb r1, [r1] - cmp r0, r1 - bne _080C00E0 - lsrs r0, r2, 8 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x21 - ldrb r1, [r1] - cmp r0, r1 - beq _080C0100 -_080C00E0: - movs r3, 0xFF - adds r0, r2, 0 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x22 - lsrs r5, r2, 8 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0104 - adds r0, r5, 0 - ands r0, r3 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0104 -_080C0100: - movs r0, 0 - b _080C012C -_080C0104: - ldrb r1, [r4, 0x1E] - adds r0, r4, 0 - adds r0, 0x20 - strb r1, [r0] - ldrb r0, [r4, 0x1F] - adds r1, r4, 0 - adds r1, 0x21 - strb r0, [r1] - strb r2, [r4, 0x1E] - strb r5, [r4, 0x1F] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] -_080C012C: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C00B4 - - thumb_func_start sub_80C0134 -sub_80C0134: @ 80C0134 - push {r4-r6,lr} - adds r6, r0, 0 - adds r4, r1, 0 - lsls r0, r2, 24 - lsrs r0, 24 - bl GetLinkPlayerTrainerId - adds r5, r0, 0 - movs r2, 0xFF - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x22 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0164 - lsrs r0, r5, 8 - ands r0, r2 - adds r1, r4, 0 - adds r1, 0x23 - ldrb r1, [r1] - cmp r0, r1 - bne _080C0164 - movs r0, 0 - b _080C0196 -_080C0164: - adds r1, r4, 0 - adds r1, 0x20 - ldrb r0, [r1] - adds r2, r4, 0 - adds r2, 0x22 - strb r0, [r2] - adds r3, r4, 0 - adds r3, 0x21 - ldrb r0, [r3] - adds r2, 0x1 - strb r0, [r2] - strb r5, [r1] - lsrs r0, r5, 8 - strb r0, [r3] - adds r1, r6, 0 - adds r0, r4, 0 - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - ldm r0!, {r2-r4} - stm r1!, {r2-r4} - movs r0, 0x1 - strb r0, [r6, 0x1] - strh r0, [r6, 0x16] -_080C0196: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C0134 - - thumb_func_start sub_80C019C -sub_80C019C: @ 80C019C - push {lr} - adds r3, r0, 0 - movs r2, 0 -_080C01A2: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r3 - ldrb r0, [r1, 0x1] - cmp r0, 0 - bne _080C01C2 - ldrb r0, [r1] - subs r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3B - bhi _080C01C2 - lsls r0, r2, 24 - asrs r0, 24 - b _080C01D0 -_080C01C2: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080C01A2 - movs r0, 0x1 - negs r0, r0 -_080C01D0: - pop {r1} - bx r1 - thumb_func_end sub_80C019C - - thumb_func_start sub_80C01D4 -sub_80C01D4: @ 80C01D4 - push {r4-r6,lr} - movs r6, 0 -_080C01D8: - ldr r0, _080C01F8 @ =gSaveBlock1 - lsls r2, r6, 3 - adds r1, r2, r6 - lsls r1, 2 - adds r1, r0 - ldr r0, _080C01FC @ =0x00002738 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0x29 - bls _080C01EE - b _080C038C -_080C01EE: - lsls r0, 2 - ldr r1, _080C0200 @ =_080C0204 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C01F8: .4byte gSaveBlock1 -_080C01FC: .4byte 0x00002738 -_080C0200: .4byte _080C0204 - .align 2, 0 -_080C0204: - .4byte _080C0394 - .4byte _080C02AC - .4byte _080C0394 - .4byte _080C02BC - .4byte _080C02CC - .4byte _080C02DC - .4byte _080C02F8 - .4byte _080C0308 - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C0324 - .4byte _080C0394 - .4byte _080C0334 - .4byte _080C0350 - .4byte _080C0368 - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C038C - .4byte _080C0394 -_080C02AC: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080C035A - .align 2, 0 -_080C02B8: .4byte gSaveBlock1 + 0x2738 -_080C02BC: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080C035A - .align 2, 0 -_080C02C8: .4byte gSaveBlock1 + 0x2738 -_080C02CC: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x6] - b _080C035A - .align 2, 0 -_080C02D8: .4byte gSaveBlock1 + 0x2738 -_080C02DC: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0x2] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0x1C] - b _080C037E - .align 2, 0 -_080C02F4: .4byte gSaveBlock1 + 0x2738 -_080C02F8: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x2] - b _080C035A - .align 2, 0 -_080C0304: .4byte gSaveBlock1 + 0x2738 -_080C0308: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0xA] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0x14] - b _080C037E - .align 2, 0 -_080C0320: .4byte gSaveBlock1 + 0x2738 -_080C0324: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x10] - b _080C035A - .align 2, 0 -_080C0330: .4byte gSaveBlock1 + 0x2738 -_080C0334: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C034C @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0xC] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0xE] - b _080C037E - .align 2, 0 -_080C034C: .4byte gSaveBlock1 + 0x2738 -_080C0350: - adds r0, r2, r6 - lsls r0, 2 - ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrh r0, [r0, 0x4] -_080C035A: - lsls r1, r6, 24 - lsrs r1, 24 - bl sub_80C03C8 - b _080C0394 - .align 2, 0 -_080C0364: .4byte gSaveBlock1 + 0x2738 -_080C0368: - adds r4, r2, r6 - lsls r4, 2 - ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738 - adds r4, r0 - ldrh r0, [r4, 0x8] - lsls r5, r6, 24 - lsrs r5, 24 - adds r1, r5, 0 - bl sub_80C03C8 - ldrh r0, [r4, 0x4] -_080C037E: - adds r1, r5, 0 - bl sub_80C03C8 - b _080C0394 - .align 2, 0 -_080C0388: .4byte gSaveBlock1 + 0x2738 -_080C038C: - lsls r0, r6, 24 - lsrs r0, 24 - bl sub_80C03A8 -_080C0394: - adds r0, r6, 0x1 - lsls r0, 16 - lsrs r6, r0, 16 - cmp r6, 0x17 - bhi _080C03A0 - b _080C01D8 -_080C03A0: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80C01D4 - - thumb_func_start sub_80C03A8 -sub_80C03A8: @ 80C03A8 - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C03C0 @ =gSaveBlock1 - lsls r1, r0, 3 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldr r0, _080C03C4 @ =0x00002739 - adds r1, r0 - movs r0, 0 - strb r0, [r1] - bx lr - .align 2, 0 -_080C03C0: .4byte gSaveBlock1 -_080C03C4: .4byte 0x00002739 - thumb_func_end sub_80C03A8 - - thumb_func_start sub_80C03C8 -sub_80C03C8: @ 80C03C8 - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r1, 24 - lsrs r4, r1, 24 - bl SpeciesToNationalPokedexNum - lsls r0, 16 - lsrs r0, 16 - movs r1, 0 - bl sub_8090D90 - lsls r0, 24 - asrs r2, r0, 24 - cmp r2, 0 - bne _080C03F8 - ldr r1, _080C0400 @ =gSaveBlock1 - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r0, r1 - ldr r1, _080C0404 @ =0x00002739 - adds r0, r1 - strb r2, [r0] -_080C03F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C0400: .4byte gSaveBlock1 -_080C0404: .4byte 0x00002739 - thumb_func_end sub_80C03C8 - - thumb_func_start sub_80C0408 -sub_80C0408: @ 80C0408 - push {r4-r6,lr} - ldr r0, _080C044C @ =0x00000804 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C0444 - movs r2, 0 - ldr r6, _080C0450 @ =gSaveBlock1 - ldr r4, _080C0454 @ =0x00002739 - movs r3, 0 - ldr r5, _080C0458 @ =0x00002738 -_080C0422: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r6 - adds r0, r1, r5 - ldrb r0, [r0] - cmp r0, 0x7 - beq _080C0436 - cmp r0, 0x29 - bne _080C043A -_080C0436: - adds r0, r1, r4 - strb r3, [r0] -_080C043A: - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0x17 - bls _080C0422 -_080C0444: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C044C: .4byte 0x00000804 -_080C0450: .4byte gSaveBlock1 -_080C0454: .4byte 0x00002739 -_080C0458: .4byte 0x00002738 - thumb_func_end sub_80C0408 - - thumb_func_start sub_80C045C -sub_80C045C: @ 80C045C - push {r4-r6,lr} - movs r5, 0 - ldr r6, _080C0494 @ =gSaveBlock1 -_080C0462: - lsls r0, r5, 3 - adds r0, r5 - lsls r0, 2 - adds r4, r0, r6 - ldr r1, _080C0498 @ =0x00002738 - adds r0, r4, r1 - ldrb r0, [r0] - bl sub_80BFB54 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x2 - bne _080C0484 - ldr r0, _080C049C @ =0x00002739 - adds r1, r4, r0 - movs r0, 0 - strb r0, [r1] -_080C0484: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bls _080C0462 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C0494: .4byte gSaveBlock1 -_080C0498: .4byte 0x00002738 -_080C049C: .4byte 0x00002739 - thumb_func_end sub_80C045C - thumb_func_start sub_80C04A0 sub_80C04A0: @ 80C04A0 push {r4,r5,lr} @@ -5561,295 +1015,7 @@ _080C06B4: .4byte gUnknown_03000721 _080C06B8: .4byte gUnknown_03005D38 thumb_func_end sub_80C05C4 - thumb_func_start sub_80C06BC -sub_80C06BC: @ 80C06BC - push {lr} - ldr r0, [r0] - ldr r1, [r1] - ldr r2, _080C06E0 @ =gUnknown_03000722 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - lsls r2, 2 - adds r1, r2 - ldr r2, _080C06E4 @ =gUnknown_03005D38 - ldrb r2, [r2] - lsls r2, 24 - asrs r2, 24 - bl sub_80C06E8 - pop {r0} - bx r0 - .align 2, 0 -_080C06E0: .4byte gUnknown_03000722 -_080C06E4: .4byte gUnknown_03005D38 - thumb_func_end sub_80C06BC - - thumb_func_start sub_80C06E8 -sub_80C06E8: @ 80C06E8 - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 24 - lsrs r6, r2, 24 - ldrb r3, [r5] - adds r0, r3, 0 - cmp r0, 0 - bne _080C06FE -_080C06FA: - movs r0, 0 - b _080C072A -_080C06FE: - movs r1, 0 - adds r2, r3, 0 - adds r3, r0, 0 -_080C0704: - lsls r0, r1, 2 - adds r0, r4 - ldrb r0, [r0] - cmp r0, r3 - beq _080C06FA - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080C0704 - lsls r0, r6, 24 - asrs r0, 22 - adds r0, r4 - strb r2, [r0] - movs r1, 0x1 - strb r1, [r0, 0x1] - ldrh r1, [r5, 0x2] - strh r1, [r0, 0x2] - movs r0, 0x1 -_080C072A: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_80C06E8 - - thumb_func_start sub_80C0730 -sub_80C0730: @ 80C0730 - push {lr} - lsls r1, 24 - lsrs r2, r1, 24 - lsls r1, r2, 2 - adds r1, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080C0746 - lsls r0, r2, 24 - asrs r0, 24 - b _080C074A -_080C0746: - movs r0, 0x1 - negs r0, r0 -_080C074A: - pop {r1} - bx r1 - thumb_func_end sub_80C0730 - - thumb_func_start sub_80C0750 -sub_80C0750: @ 80C0750 - push {r4,r5,lr} - movs r4, 0 - ldr r5, _080C0780 @ =gSaveBlock1 -_080C0756: - lsls r0, r4, 2 - adds r0, r5 - ldr r1, _080C0784 @ =0x00002abc - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x3 - bls _080C076A - adds r0, r4, 0 - bl sub_80BEC10 -_080C076A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xF - bls _080C0756 - bl sub_80BEC40 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0780: .4byte gSaveBlock1 -_080C0784: .4byte 0x00002abc - thumb_func_end sub_80C0750 - - thumb_func_start sub_80C0788 -sub_80C0788: @ 80C0788 - push {r4,lr} - ldr r0, _080C07B8 @ =0x00000804 - bl FlagGet - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080C07B2 - movs r1, 0 - ldr r4, _080C07BC @ =gSaveBlock1 - ldr r3, _080C07C0 @ =0x00002abd - movs r2, 0 -_080C07A0: - lsls r0, r1, 2 - adds r0, r4 - adds r0, r3 - strb r2, [r0] - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _080C07A0 -_080C07B2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C07B8: .4byte 0x00000804 -_080C07BC: .4byte gSaveBlock1 -_080C07C0: .4byte 0x00002abd - thumb_func_end sub_80C0788 - - thumb_func_start DoTVShow -DoTVShow: @ 80C07C4 - push {lr} - ldr r2, _080C07F8 @ =gSaveBlock1 - ldr r0, _080C07FC @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r1, r0, r2 - ldr r2, _080C0800 @ =0x00002739 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - bne _080C07E0 - b _080C08F8 -_080C07E0: - subs r2, 0x1 - adds r0, r1, r2 - ldrb r0, [r0] - subs r0, 0x1 - cmp r0, 0x28 - bls _080C07EE - b _080C08F8 -_080C07EE: - lsls r0, 2 - ldr r1, _080C0804 @ =_080C0808 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C07F8: .4byte gSaveBlock1 -_080C07FC: .4byte gSpecialVar_0x8004 -_080C0800: .4byte 0x00002739 -_080C0804: .4byte _080C0808 - .align 2, 0 -_080C0808: - .4byte _080C08AC - .4byte _080C08B2 - .4byte _080C08B8 - .4byte _080C08BE - .4byte _080C08E2 - .4byte _080C08CA - .4byte _080C08D0 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08D6 - .4byte _080C08DC - .4byte _080C08E8 - .4byte _080C08EE - .4byte _080C08F4 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08F8 - .4byte _080C08C4 -_080C08AC: - bl DoTVShowPokemonFanClubLetter - b _080C08F8 -_080C08B2: - bl DoTVShowRecentHappenings - b _080C08F8 -_080C08B8: - bl DoTVShowPokemonFanClubOpinions - b _080C08F8 -_080C08BE: - bl nullsub_22 - b _080C08F8 -_080C08C4: - bl DoTVShowPokemonNewsMassOutbreak - b _080C08F8 -_080C08CA: - bl DoTVShowBravoTrainerPokemonProfile - b _080C08F8 -_080C08D0: - bl DoTVShowBravoTrainerBattleTowerProfile - b _080C08F8 -_080C08D6: - bl DoTVShowPokemonTodaySuccessfulCapture - b _080C08F8 -_080C08DC: - bl DoTVShowTodaysSmartShopper - b _080C08F8 -_080C08E2: - bl DoTVShowTheNameRaterShow - b _080C08F8 -_080C08E8: - bl DoTVShowPokemonTodayFailedCapture - b _080C08F8 -_080C08EE: - bl DoTVShowPokemonAngler - b _080C08F8 -_080C08F4: - bl DoTVShowTheWorldOfMasters -_080C08F8: - pop {r0} - bx r0 - thumb_func_end DoTVShow - - thumb_func_start TVShowConvertInternationalString -TVShowConvertInternationalString: @ 80C08FC - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r2, 24 - lsrs r4, 24 - bl StringCopy - cmp r4, 0x1 - bhi _080C0914 - adds r0, r5, 0 - movs r1, 0x1 - bl ConvertInternationalString -_080C0914: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end TVShowConvertInternationalString +.section .dotvshow thumb_func_start DoTVShowBravoTrainerPokemonProfile DoTVShowBravoTrainerPokemonProfile: @ 80C091C @@ -6653,1673 +1819,4 @@ _080C1028: .4byte gStringVar1 _080C102C: .4byte gTVSmartShopperTextGroup thumb_func_end DoTVShowTodaysSmartShopper - thumb_func_start DoTVShowTheNameRaterShow -DoTVShowTheNameRaterShow: @ 80C1030 - push {r4-r7,lr} - sub sp, 0x8 - ldr r0, _080C1060 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1064 @ =gSaveBlock1 + 0x2738 - adds r6, r0, r1 - ldr r1, _080C1068 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C106C @ =gUnknown_020387E8 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0x12 - bls _080C1054 - b _080C138A -_080C1054: - lsls r0, r7, 2 - ldr r1, _080C1070 @ =_080C1074 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1060: .4byte gSpecialVar_0x8004 -_080C1064: .4byte gSaveBlock1 + 0x2738 -_080C1068: .4byte gScriptResult -_080C106C: .4byte gUnknown_020387E8 -_080C1070: .4byte _080C1074 - .align 2, 0 -_080C1074: - .4byte _080C10C0 - .4byte _080C1108 - .4byte _080C112A - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1108 - .4byte _080C1170 - .4byte _080C1170 - .4byte _080C1170 - .4byte _080C136C - .4byte _080C11CC - .4byte _080C1228 - .4byte _080C127C - .4byte _080C12D4 - .4byte _080C1314 - .4byte _080C1370 -_080C10C0: - ldr r0, _080C10F4 @ =gStringVar1 - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C10F8 @ =gStringVar2 - ldrh r2, [r6, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C10FC @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1100 @ =gStringVar3 - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1F] - bl TVShowConvertInternationalString - ldr r4, _080C1104 @ =gUnknown_020387E8 - adds r0, r6, 0 - bl sub_80BF7E8 - adds r0, 0x1 - strb r0, [r4] - b _080C138A - .align 2, 0 -_080C10F4: .4byte gStringVar1 -_080C10F8: .4byte gStringVar2 -_080C10FC: .4byte gSpeciesNames -_080C1100: .4byte gStringVar3 -_080C1104: .4byte gUnknown_020387E8 -_080C1108: - ldrb r0, [r6, 0x1A] - cmp r0, 0 - bne _080C1114 - movs r0, 0x9 - strb r0, [r2] - b _080C138A -_080C1114: - cmp r0, 0x1 - bne _080C111E - movs r0, 0xA - strb r0, [r2] - b _080C138A -_080C111E: - cmp r0, 0x2 - beq _080C1124 - b _080C138A -_080C1124: - movs r0, 0xB - strb r0, [r2] - b _080C138A -_080C112A: - ldr r0, _080C1144 @ =gStringVar1 - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - bl TVShowConvertInternationalString - ldrb r0, [r6, 0x1A] - cmp r0, 0 - bne _080C114C - ldr r1, _080C1148 @ =gUnknown_020387E8 - movs r0, 0x9 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1144: .4byte gStringVar1 -_080C1148: .4byte gUnknown_020387E8 -_080C114C: - cmp r0, 0x1 - bne _080C115C - ldr r1, _080C1158 @ =gUnknown_020387E8 - movs r0, 0xA - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1158: .4byte gUnknown_020387E8 -_080C115C: - cmp r0, 0x2 - beq _080C1162 - b _080C138A -_080C1162: - ldr r1, _080C116C @ =gUnknown_020387E8 - movs r0, 0xB - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C116C: .4byte gUnknown_020387E8 -_080C1170: - movs r5, 0 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0x1 - movs r2, 0 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C11BC @ =gStringVar3 - ldr r4, _080C11C0 @ =gStringVar1 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C11C4 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1F] - adds r0, r4, 0 - bl TVShowConvertInternationalString - ldr r1, _080C11C8 @ =gUnknown_020387E8 - movs r0, 0xC - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C11BC: .4byte gStringVar3 -_080C11C0: .4byte gStringVar1 -_080C11C4: .4byte gStringVar2 -_080C11C8: .4byte gUnknown_020387E8 -_080C11CC: - movs r5, 0 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C1218 @ =gStringVar3 - ldr r4, _080C121C @ =gStringVar1 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0 - bl sub_80BF820 - ldr r0, _080C1220 @ =gStringVar2 - ldrb r2, [r6, 0x1E] - adds r1, r4, 0 - bl TVShowConvertInternationalString - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - adds r0, r4, 0 - bl TVShowConvertInternationalString - ldr r1, _080C1224 @ =gUnknown_020387E8 - movs r0, 0xE - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1218: .4byte gStringVar3 -_080C121C: .4byte gStringVar1 -_080C1220: .4byte gStringVar2 -_080C1224: .4byte gUnknown_020387E8 -_080C1228: - movs r5, 0 - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0 - bl sub_80BF820 - ldr r0, _080C1270 @ =gStringVar3 - ldr r4, _080C1274 @ =gStringVar1 - ldrb r2, [r6, 0x1E] - adds r1, r4, 0 - bl TVShowConvertInternationalString - str r5, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C1278 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - adds r0, r4, 0 - bl TVShowConvertInternationalString - b _080C1354 - .align 2, 0 -_080C1270: .4byte gStringVar3 -_080C1274: .4byte gStringVar1 -_080C1278: .4byte gStringVar2 -_080C127C: - movs r0, 0 - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C12C4 @ =gStringVar1 - ldr r4, _080C12C8 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - ldrh r1, [r6, 0x2] - movs r0, 0xB - muls r1, r0 - ldr r0, _080C12CC @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy - ldrh r0, [r6, 0x2] - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_80BF820 - ldr r1, _080C12D0 @ =gUnknown_020387E8 - movs r0, 0x10 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C12C4: .4byte gStringVar1 -_080C12C8: .4byte gStringVar2 -_080C12CC: .4byte gSpeciesNames -_080C12D0: .4byte gUnknown_020387E8 -_080C12D4: - movs r0, 0 - str r0, [sp] - str r6, [sp, 0x4] - movs r1, 0 - movs r2, 0x3 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C1308 @ =gStringVar3 - ldr r1, _080C130C @ =gStringVar1 - ldrb r2, [r6, 0x1F] - bl TVShowConvertInternationalString - ldrh r0, [r6, 0x2] - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl sub_80BF820 - ldr r1, _080C1310 @ =gUnknown_020387E8 - movs r0, 0x11 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C1308: .4byte gStringVar3 -_080C130C: .4byte gStringVar1 -_080C1310: .4byte gUnknown_020387E8 -_080C1314: - movs r0, 0 - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x1 - bl sub_80BF820 - ldr r0, _080C135C @ =gStringVar1 - ldr r4, _080C1360 @ =gStringVar2 - ldrb r2, [r6, 0x1F] - adds r1, r4, 0 - bl TVShowConvertInternationalString - ldrh r0, [r6, 0x1C] - str r0, [sp] - str r6, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x2 - bl sub_80BF820 - ldrh r1, [r6, 0x1C] - movs r0, 0xB - muls r1, r0 - ldr r0, _080C1364 @ =gSpeciesNames - adds r1, r0 - adds r0, r4, 0 - bl StringCopy -_080C1354: - ldr r1, _080C1368 @ =gUnknown_020387E8 - movs r0, 0x12 - strb r0, [r1] - b _080C138A - .align 2, 0 -_080C135C: .4byte gStringVar1 -_080C1360: .4byte gStringVar2 -_080C1364: .4byte gSpeciesNames -_080C1368: .4byte gUnknown_020387E8 -_080C136C: - movs r7, 0x12 - strb r7, [r2] -_080C1370: - ldr r0, _080C13A0 @ =gStringVar1 - adds r1, r6, 0x4 - ldrb r2, [r6, 0x1F] - bl TVShowConvertInternationalString - ldr r0, _080C13A4 @ =gStringVar2 - adds r1, r6, 0 - adds r1, 0xF - ldrb r2, [r6, 0x1E] - bl TVShowConvertInternationalString - bl TVShowDone -_080C138A: - ldr r0, _080C13A8 @ =gTVNameRaterTextGroup - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C13A0: .4byte gStringVar1 -_080C13A4: .4byte gStringVar2 -_080C13A8: .4byte gTVNameRaterTextGroup - thumb_func_end DoTVShowTheNameRaterShow - - thumb_func_start DoTVShowPokemonTodaySuccessfulCapture -DoTVShowPokemonTodaySuccessfulCapture: @ 80C13AC - push {r4-r6,lr} - ldr r0, _080C13D8 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C13DC @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C13E0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C13E4 @ =gUnknown_020387E8 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xB - bls _080C13CE - b _080C15DC -_080C13CE: - lsls r0, r6, 2 - ldr r1, _080C13E8 @ =_080C13EC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C13D8: .4byte gSpecialVar_0x8004 -_080C13DC: .4byte gSaveBlock1 + 0x2738 -_080C13E0: .4byte gScriptResult -_080C13E4: .4byte gUnknown_020387E8 -_080C13E8: .4byte _080C13EC - .align 2, 0 -_080C13EC: - .4byte _080C141C - .4byte _080C1470 - .4byte _080C1476 - .4byte _080C14B0 - .4byte _080C14E8 - .4byte _080C14EE - .4byte _080C1524 - .4byte _080C1578 - .4byte _080C1578 - .4byte _080C15A8 - .4byte _080C15A8 - .4byte _080C15D8 -_080C141C: - ldr r0, _080C1450 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1454 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1458 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C145C @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldrb r0, [r5, 0xF] - cmp r0, 0x1 - bne _080C1464 - ldr r1, _080C1460 @ =gUnknown_020387E8 - movs r0, 0x5 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C1450: .4byte gStringVar1 -_080C1454: .4byte gStringVar2 -_080C1458: .4byte gSpeciesNames -_080C145C: .4byte gStringVar3 -_080C1460: .4byte gUnknown_020387E8 -_080C1464: - ldr r1, _080C146C @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C146C: .4byte gUnknown_020387E8 -_080C1470: - movs r0, 0x2 - strb r0, [r2] - b _080C15DC -_080C1476: - ldr r4, _080C149C @ =gStringVar2 - ldrb r0, [r5, 0xF] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r1, [r5, 0x12] - movs r0, 0x2 - bl sub_80BF088 - ldrb r0, [r5, 0x12] - cmp r0, 0x3 - bhi _080C14A4 - ldr r1, _080C14A0 @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C149C: .4byte gStringVar2 -_080C14A0: .4byte gUnknown_020387E8 -_080C14A4: - ldr r1, _080C14AC @ =gUnknown_020387E8 - movs r0, 0x4 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C14AC: .4byte gUnknown_020387E8 -_080C14B0: - ldr r0, _080C14D8 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C14DC @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C14E0 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C14E4 @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - b _080C150A - .align 2, 0 -_080C14D8: .4byte gStringVar1 -_080C14DC: .4byte gStringVar2 -_080C14E0: .4byte gSpeciesNames -_080C14E4: .4byte gStringVar3 -_080C14E8: - movs r0, 0x6 - strb r0, [r2] - b _080C15DC -_080C14EE: - ldr r0, _080C1514 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1518 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C151C @ =gSpeciesNames - adds r1, r2 - bl StringCopy -_080C150A: - ldr r1, _080C1520 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C15DC - .align 2, 0 -_080C1514: .4byte gStringVar1 -_080C1518: .4byte gStringVar2 -_080C151C: .4byte gSpeciesNames -_080C1520: .4byte gUnknown_020387E8 -_080C1524: - ldr r0, _080C1564 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1568 @ =gStringVar2 - ldrh r2, [r5, 0x10] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C156C @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1570 @ =gStringVar3 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r4, _080C1574 @ =gUnknown_020387E8 - bl Random - ldrb r2, [r4] - adds r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, r2 - strb r0, [r4] - b _080C15DC - .align 2, 0 -_080C1564: .4byte gStringVar1 -_080C1568: .4byte gStringVar2 -_080C156C: .4byte gSpeciesNames -_080C1570: .4byte gStringVar3 -_080C1574: .4byte gUnknown_020387E8 -_080C1578: - ldr r0, _080C159C @ =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, _080C15A0 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C15A4 @ =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldrh r1, [r5, 0x10] - movs r0, 0x2 - bl sub_80BF638 - b _080C15C2 - .align 2, 0 -_080C159C: .4byte gStringVar1 -_080C15A0: .4byte gSpeciesNames -_080C15A4: .4byte gStringVar2 -_080C15A8: - ldr r0, _080C15C8 @ =gStringVar1 - ldrh r1, [r5, 0x10] - movs r4, 0xB - muls r1, r4 - ldr r2, _080C15CC @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C15D0 @ =gStringVar2 - adds r1, r5, 0x4 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString -_080C15C2: - ldr r0, _080C15D4 @ =gUnknown_020387E8 - strb r4, [r0] - b _080C15DC - .align 2, 0 -_080C15C8: .4byte gStringVar1 -_080C15CC: .4byte gSpeciesNames -_080C15D0: .4byte gStringVar2 -_080C15D4: .4byte gUnknown_020387E8 -_080C15D8: - bl TVShowDone -_080C15DC: - ldr r0, _080C15F0 @ =gTVPokemonTodayTextGroup - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C15F0: .4byte gTVPokemonTodayTextGroup - thumb_func_end DoTVShowPokemonTodaySuccessfulCapture - - thumb_func_start DoTVShowPokemonTodayFailedCapture -DoTVShowPokemonTodayFailedCapture: @ 80C15F4 - push {r4,r5,lr} - ldr r0, _080C1620 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1624 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C1628 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C162C @ =gUnknown_020387E8 - ldrb r5, [r0] - cmp r5, 0x6 - bls _080C1614 - b _080C173C -_080C1614: - lsls r0, r5, 2 - ldr r1, _080C1630 @ =_080C1634 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1620: .4byte gSpecialVar_0x8004 -_080C1624: .4byte gSaveBlock1 + 0x2738 -_080C1628: .4byte gScriptResult -_080C162C: .4byte gUnknown_020387E8 -_080C1630: .4byte _080C1634 - .align 2, 0 -_080C1634: - .4byte _080C1650 - .4byte _080C1684 - .4byte _080C16D8 - .4byte _080C16D8 - .4byte _080C171C - .4byte _080C171C - .4byte _080C1738 -_080C1650: - ldr r0, _080C1674 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C1678 @ =gStringVar2 - ldrh r2, [r4, 0xC] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C167C @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, _080C1680 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1674: .4byte gStringVar1 -_080C1678: .4byte gStringVar2 -_080C167C: .4byte gSpeciesNames -_080C1680: .4byte gUnknown_020387E8 -_080C1684: - ldr r0, _080C16B8 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldr r0, _080C16BC @ =gStringVar2 - ldrb r1, [r4, 0x12] - movs r2, 0 - bl sub_80FBFB4 - ldr r0, _080C16C0 @ =gStringVar3 - ldrh r2, [r4, 0xE] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C16C4 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r4, 0x11] - cmp r0, 0x1 - bne _080C16CC - ldr r1, _080C16C8 @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C16B8: .4byte gStringVar1 -_080C16BC: .4byte gStringVar2 -_080C16C0: .4byte gStringVar3 -_080C16C4: .4byte gSpeciesNames -_080C16C8: .4byte gUnknown_020387E8 -_080C16CC: - ldr r1, _080C16D4 @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C16D4: .4byte gUnknown_020387E8 -_080C16D8: - ldr r0, _080C1708 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x10] - movs r0, 0x1 - bl sub_80BF088 - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - lsls r0, 16 - cmp r0, 0 - bne _080C1710 - ldr r1, _080C170C @ =gUnknown_020387E8 - movs r0, 0x5 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1708: .4byte gStringVar1 -_080C170C: .4byte gUnknown_020387E8 -_080C1710: - ldr r1, _080C1718 @ =gUnknown_020387E8 - movs r0, 0x4 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1718: .4byte gUnknown_020387E8 -_080C171C: - ldr r0, _080C1730 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x2] - bl TVShowConvertInternationalString - ldr r1, _080C1734 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C173C - .align 2, 0 -_080C1730: .4byte gStringVar1 -_080C1734: .4byte gUnknown_020387E8 -_080C1738: - bl TVShowDone -_080C173C: - ldr r0, _080C1750 @ =gTVPokemonTodayFailedCaptureTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C1750: .4byte gTVPokemonTodayFailedCaptureTextGroup - thumb_func_end DoTVShowPokemonTodayFailedCapture - - thumb_func_start DoTVShowPokemonFanClubLetter -DoTVShowPokemonFanClubLetter: @ 80C1754 - push {r4-r7,lr} - ldr r0, _080C1780 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1784 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C1788 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C178C @ =gUnknown_020387E8 - ldrb r7, [r0] - adds r6, r0, 0 - cmp r7, 0x33 - bls _080C1776 - b _080C1960 -_080C1776: - lsls r0, r7, 2 - ldr r1, _080C1790 @ =_080C1794 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1780: .4byte gSpecialVar_0x8004 -_080C1784: .4byte gSaveBlock1 + 0x2738 -_080C1788: .4byte gScriptResult -_080C178C: .4byte gUnknown_020387E8 -_080C1790: .4byte _080C1794 - .align 2, 0 -_080C1794: - .4byte _080C1864 - .4byte _080C1898 - .4byte _080C18C4 - .4byte _080C18CA - .4byte _080C18E2 - .4byte _080C18E2 - .4byte _080C18E2 - .4byte _080C18F4 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1960 - .4byte _080C1916 - .4byte _080C193C -_080C1864: - ldr r0, _080C1888 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - ldrb r2, [r5, 0x18] - bl TVShowConvertInternationalString - ldr r0, _080C188C @ =gStringVar2 - ldrh r2, [r5, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1890 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r1, _080C1894 @ =gUnknown_020387E8 - movs r0, 0x32 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C1888: .4byte gStringVar1 -_080C188C: .4byte gStringVar2 -_080C1890: .4byte gSpeciesNames -_080C1894: .4byte gUnknown_020387E8 -_080C1898: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r2, r0, 0x1 - cmp r2, 0x1 - bne _080C18B8 - ldr r1, _080C18B4 @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C18B4: .4byte gUnknown_020387E8 -_080C18B8: - ldr r1, _080C18C0 @ =gUnknown_020387E8 - adds r0, r2, 0x2 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C18C0: .4byte gUnknown_020387E8 -_080C18C4: - movs r0, 0x33 - strb r0, [r6] - b _080C1960 -_080C18CA: - bl Random - ldrb r4, [r6] - adds r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, r4 - strb r0, [r6] - b _080C1960 -_080C18E2: - adds r0, r5, 0 - bl sub_80BF79C - ldr r1, _080C18F0 @ =gUnknown_020387E8 - movs r0, 0x7 - strb r0, [r1] - b _080C1960 - .align 2, 0 -_080C18F0: .4byte gUnknown_020387E8 -_080C18F4: - bl Random - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x1F - bl __umodsi3 - adds r0, 0x46 - lsls r0, 16 - lsrs r2, r0, 16 - movs r0, 0x2 - adds r1, r2, 0 - bl sub_80BF088 - bl TVShowDone - b _080C1960 -_080C1916: - ldr r4, _080C1934 @ =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl ShowFieldMessage - ldr r1, _080C1938 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C196C - .align 2, 0 -_080C1934: .4byte gStringVar4 -_080C1938: .4byte gUnknown_020387E8 -_080C193C: - ldr r4, _080C1958 @ =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl ShowFieldMessage - ldr r1, _080C195C @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C196C - .align 2, 0 -_080C1958: .4byte gStringVar4 -_080C195C: .4byte gUnknown_020387E8 -_080C1960: - ldr r0, _080C1974 @ =gTVFanClubTextGroup - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage -_080C196C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1974: .4byte gTVFanClubTextGroup - thumb_func_end DoTVShowPokemonFanClubLetter - - thumb_func_start DoTVShowRecentHappenings -DoTVShowRecentHappenings: @ 80C1978 - push {r4-r7,lr} - ldr r0, _080C19A4 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C19A8 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C19AC @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C19B0 @ =gUnknown_020387E8 - ldrb r6, [r0] - adds r7, r0, 0 - cmp r6, 0x32 - bls _080C199A - b _080C1AF0 -_080C199A: - lsls r0, r6, 2 - ldr r1, _080C19B4 @ =_080C19B8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C19A4: .4byte gSpecialVar_0x8004 -_080C19A8: .4byte gSaveBlock1 + 0x2738 -_080C19AC: .4byte gScriptResult -_080C19B0: .4byte gUnknown_020387E8 -_080C19B4: .4byte _080C19B8 - .align 2, 0 -_080C19B8: - .4byte _080C1A84 - .4byte _080C1AA8 - .4byte _080C1AC0 - .4byte _080C1AC0 - .4byte _080C1AC0 - .4byte _080C1AC6 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1AF0 - .4byte _080C1ACC -_080C1A84: - ldr r0, _080C1AA0 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x10 - ldrb r2, [r5, 0x18] - bl TVShowConvertInternationalString - adds r0, r5, 0 - bl sub_80BF79C - ldr r1, _080C1AA4 @ =gUnknown_020387E8 - movs r0, 0x32 - strb r0, [r1] - b _080C1AF0 - .align 2, 0 -_080C1AA0: .4byte gStringVar1 -_080C1AA4: .4byte gUnknown_020387E8 -_080C1AA8: - bl Random - ldrb r4, [r7] - adds r4, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - bl __umodsi3 - adds r0, r4 - strb r0, [r7] - b _080C1AF0 -_080C1AC0: - movs r0, 0x5 - strb r0, [r7] - b _080C1AF0 -_080C1AC6: - bl TVShowDone - b _080C1AF0 -_080C1ACC: - ldr r4, _080C1AE8 @ =gStringVar4 - adds r1, r5, 0x4 - adds r0, r4, 0 - movs r2, 0x2 - movs r3, 0x2 - bl ConvertEasyChatWordsToString - adds r0, r4, 0 - bl ShowFieldMessage - ldr r1, _080C1AEC @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C1AFC - .align 2, 0 -_080C1AE8: .4byte gStringVar4 -_080C1AEC: .4byte gUnknown_020387E8 -_080C1AF0: - ldr r0, _080C1B04 @ =gTVRecentHappeningsTextGroup - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage -_080C1AFC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1B04: .4byte gTVRecentHappeningsTextGroup - thumb_func_end DoTVShowRecentHappenings - - thumb_func_start DoTVShowPokemonFanClubOpinions -DoTVShowPokemonFanClubOpinions: @ 80C1B08 - push {r4-r6,lr} - ldr r0, _080C1B30 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1B34 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C1B38 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r6, _080C1B3C @ =gUnknown_020387E8 - ldrb r5, [r6] - cmp r5, 0x3 - bgt _080C1B40 - cmp r5, 0x1 - bge _080C1B88 - cmp r5, 0 - beq _080C1B46 - b _080C1BD6 - .align 2, 0 -_080C1B30: .4byte gSpecialVar_0x8004 -_080C1B34: .4byte gSaveBlock1 + 0x2738 -_080C1B38: .4byte gScriptResult -_080C1B3C: .4byte gUnknown_020387E8 -_080C1B40: - cmp r5, 0x4 - beq _080C1BC0 - b _080C1BD6 -_080C1B46: - ldr r0, _080C1B78 @ =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl TVShowConvertInternationalString - ldr r0, _080C1B7C @ =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1B80 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1B84 @ =gStringVar3 - adds r1, r4, 0 - adds r1, 0x10 - ldrb r2, [r4, 0xE] - bl TVShowConvertInternationalString - ldrb r0, [r4, 0x4] - lsrs r0, 4 - adds r0, 0x1 - strb r0, [r6] - b _080C1BD6 - .align 2, 0 -_080C1B78: .4byte gStringVar1 -_080C1B7C: .4byte gStringVar2 -_080C1B80: .4byte gSpeciesNames -_080C1B84: .4byte gStringVar3 -_080C1B88: - ldr r0, _080C1BB0 @ =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl TVShowConvertInternationalString - ldr r0, _080C1BB4 @ =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1BB8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1BBC @ =gStringVar3 - ldrh r1, [r4, 0x1C] - bl sub_80EB3FC - movs r0, 0x4 - strb r0, [r6] - b _080C1BD6 - .align 2, 0 -_080C1BB0: .4byte gStringVar1 -_080C1BB4: .4byte gStringVar2 -_080C1BB8: .4byte gSpeciesNames -_080C1BBC: .4byte gStringVar3 -_080C1BC0: - ldr r0, _080C1BE8 @ =gStringVar1 - adds r1, r4, 0x5 - ldrb r2, [r4, 0xD] - bl TVShowConvertInternationalString - ldr r0, _080C1BEC @ =gStringVar3 - ldrh r1, [r4, 0x1E] - bl sub_80EB3FC - bl TVShowDone -_080C1BD6: - ldr r0, _080C1BF0 @ =gTVFanClubOpinionsTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C1BE8: .4byte gStringVar1 -_080C1BEC: .4byte gStringVar3 -_080C1BF0: .4byte gTVFanClubOpinionsTextGroup - thumb_func_end DoTVShowPokemonFanClubOpinions - - thumb_func_start nullsub_22 -nullsub_22: @ 80C1BF4 - bx lr - thumb_func_end nullsub_22 - -.section .text_80C1C5C - - thumb_func_start DoTVShowInSearchOfTrainers -DoTVShowInSearchOfTrainers: @ 80C1C5C - push {r4-r7,lr} - ldr r0, _080C1C7C @ =gScriptResult - movs r1, 0 - strh r1, [r0] - ldr r0, _080C1C80 @ =gUnknown_020387E8 - ldrb r7, [r0] - adds r2, r0, 0 - cmp r7, 0x8 - bls _080C1C70 - b _080C1DF8 -_080C1C70: - lsls r0, r7, 2 - ldr r1, _080C1C84 @ =_080C1C88 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1C7C: .4byte gScriptResult -_080C1C80: .4byte gUnknown_020387E8 -_080C1C84: .4byte _080C1C88 - .align 2, 0 -_080C1C88: - .4byte _080C1CAC - .4byte _080C1CF0 - .4byte _080C1CF6 - .4byte _080C1D44 - .4byte _080C1DB0 - .4byte _080C1DB0 - .4byte _080C1DB0 - .4byte _080C1DB0 - .4byte _080C1DB6 -_080C1CAC: - ldr r0, _080C1CD0 @ =gStringVar1 - ldr r4, _080C1CD4 @ =gSaveBlock1 - ldr r2, _080C1CD8 @ =0x00002b18 - adds r1, r4, r2 - ldrb r1, [r1] - movs r2, 0 - bl sub_80FBFB4 - ldr r0, _080C1CDC @ =0x00002b19 - adds r4, r0 - ldrb r0, [r4] - cmp r0, 0x1 - bls _080C1CE4 - ldr r1, _080C1CE0 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C1DF8 - .align 2, 0 -_080C1CD0: .4byte gStringVar1 -_080C1CD4: .4byte gSaveBlock1 -_080C1CD8: .4byte 0x00002b18 -_080C1CDC: .4byte 0x00002b19 -_080C1CE0: .4byte gUnknown_020387E8 -_080C1CE4: - ldr r1, _080C1CEC @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C1DF8 - .align 2, 0 -_080C1CEC: .4byte gUnknown_020387E8 -_080C1CF0: - movs r0, 0x2 - strb r0, [r2] - b _080C1DF8 -_080C1CF6: - ldr r0, _080C1D0C @ =gSaveBlock1 - ldr r1, _080C1D10 @ =0x00002b1a - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080C1D14 - movs r0, 0x4 - strb r0, [r2] - b _080C1DF8 - .align 2, 0 -_080C1D0C: .4byte gSaveBlock1 -_080C1D10: .4byte 0x00002b1a -_080C1D14: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080C1D22 - movs r0, 0x5 - strb r0, [r2] - b _080C1DF8 -_080C1D22: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080C1D30 - movs r0, 0x6 - strb r0, [r2] - b _080C1DF8 -_080C1D30: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080C1D3E - movs r0, 0x7 - strb r0, [r2] - b _080C1DF8 -_080C1D3E: - movs r0, 0x3 - strb r0, [r2] - b _080C1DF8 -_080C1D44: - ldr r0, _080C1D88 @ =gStringVar1 - ldr r4, _080C1D8C @ =gSaveBlock1 - ldr r2, _080C1D90 @ =0x00002b10 - adds r1, r4, r2 - ldrh r1, [r1] - movs r6, 0xB - muls r1, r6 - ldr r5, _080C1D94 @ =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, _080C1D98 @ =gStringVar2 - ldr r2, _080C1D9C @ =0x00002b14 - adds r1, r4, r2 - ldrh r2, [r1] - movs r1, 0xD - muls r1, r2 - ldr r2, _080C1DA0 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, _080C1DA4 @ =gStringVar3 - ldr r1, _080C1DA8 @ =0x00002b12 - adds r4, r1 - ldrh r1, [r4] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldr r1, _080C1DAC @ =gUnknown_020387E8 - movs r0, 0x8 - strb r0, [r1] - b _080C1DF8 - .align 2, 0 -_080C1D88: .4byte gStringVar1 -_080C1D8C: .4byte gSaveBlock1 -_080C1D90: .4byte 0x00002b10 -_080C1D94: .4byte gSpeciesNames -_080C1D98: .4byte gStringVar2 -_080C1D9C: .4byte 0x00002b14 -_080C1DA0: .4byte gMoveNames -_080C1DA4: .4byte gStringVar3 -_080C1DA8: .4byte 0x00002b12 -_080C1DAC: .4byte gUnknown_020387E8 -_080C1DB0: - movs r0, 0x8 - strb r0, [r2] - b _080C1DF8 -_080C1DB6: - ldr r0, _080C1E0C @ =gStringVar1 - ldr r4, _080C1E10 @ =gSaveBlock1 - ldr r2, _080C1E14 @ =0x00002b16 - adds r1, r4, r2 - ldrh r1, [r1] - bl sub_80EB3FC - ldr r0, _080C1E18 @ =gStringVar2 - ldr r2, _080C1E1C @ =0x00002b10 - adds r1, r4, r2 - ldrh r1, [r1] - movs r6, 0xB - muls r1, r6 - ldr r5, _080C1E20 @ =gSpeciesNames - adds r1, r5 - bl StringCopy - ldr r0, _080C1E24 @ =gStringVar3 - ldr r1, _080C1E28 @ =0x00002b12 - adds r4, r1 - ldrh r1, [r4] - muls r1, r6 - adds r1, r5 - bl StringCopy - ldr r1, _080C1E2C @ =gScriptResult - movs r0, 0x1 - strh r0, [r1] - ldr r1, _080C1E30 @ =gUnknown_020387E8 - movs r0, 0 - strb r0, [r1] - bl TakeTVShowInSearchOfTrainersOffTheAir -_080C1DF8: - ldr r0, _080C1E34 @ =gTVGabbyAndTyTextGroup - lsls r1, r7, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1E0C: .4byte gStringVar1 -_080C1E10: .4byte gSaveBlock1 -_080C1E14: .4byte 0x00002b16 -_080C1E18: .4byte gStringVar2 -_080C1E1C: .4byte 0x00002b10 -_080C1E20: .4byte gSpeciesNames -_080C1E24: .4byte gStringVar3 -_080C1E28: .4byte 0x00002b12 -_080C1E2C: .4byte gScriptResult -_080C1E30: .4byte gUnknown_020387E8 -_080C1E34: .4byte gTVGabbyAndTyTextGroup - thumb_func_end DoTVShowInSearchOfTrainers - - thumb_func_start DoTVShowPokemonAngler -DoTVShowPokemonAngler: @ 80C1E38 - push {r4,r5,lr} - ldr r0, _080C1E5C @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1E60 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r0, _080C1E64 @ =gScriptResult - movs r1, 0 - strh r1, [r0] - ldrb r0, [r4, 0x2] - ldrb r2, [r4, 0x3] - cmp r0, r2 - bcs _080C1E6C - ldr r0, _080C1E68 @ =gUnknown_020387E8 - strb r1, [r0] - b _080C1E74 - .align 2, 0 -_080C1E5C: .4byte gSpecialVar_0x8004 -_080C1E60: .4byte gSaveBlock1 + 0x2738 -_080C1E64: .4byte gScriptResult -_080C1E68: .4byte gUnknown_020387E8 -_080C1E6C: - ldr r1, _080C1E80 @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - adds r0, r1, 0 -_080C1E74: - ldrb r5, [r0] - cmp r5, 0 - beq _080C1E84 - cmp r5, 0x1 - beq _080C1EBC - b _080C1EE4 - .align 2, 0 -_080C1E80: .4byte gUnknown_020387E8 -_080C1E84: - ldr r0, _080C1EB0 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x6] - bl TVShowConvertInternationalString - ldr r0, _080C1EB4 @ =gStringVar2 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1EB8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r4, 0x3] - movs r0, 0x2 - bl sub_80BF088 - bl TVShowDone - b _080C1EE4 - .align 2, 0 -_080C1EB0: .4byte gStringVar1 -_080C1EB4: .4byte gStringVar2 -_080C1EB8: .4byte gSpeciesNames -_080C1EBC: - ldr r0, _080C1EF8 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0x6] - bl TVShowConvertInternationalString - ldr r0, _080C1EFC @ =gStringVar2 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1F00 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r1, [r4, 0x2] - movs r0, 0x2 - bl sub_80BF088 - bl TVShowDone -_080C1EE4: - ldr r0, _080C1F04 @ =gTVFishingGuruAdviceTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C1EF8: .4byte gStringVar1 -_080C1EFC: .4byte gStringVar2 -_080C1F00: .4byte gSpeciesNames -_080C1F04: .4byte gTVFishingGuruAdviceTextGroup - thumb_func_end DoTVShowPokemonAngler - - thumb_func_start DoTVShowTheWorldOfMasters -DoTVShowTheWorldOfMasters: @ 80C1F08 - push {r4-r6,lr} - ldr r0, _080C1F30 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C1F34 @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C1F38 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r6, _080C1F3C @ =gUnknown_020387E8 - ldrb r5, [r6] - cmp r5, 0x1 - beq _080C1F6C - cmp r5, 0x1 - bgt _080C1F40 - cmp r5, 0 - beq _080C1F46 - b _080C1FB6 - .align 2, 0 -_080C1F30: .4byte gSpecialVar_0x8004 -_080C1F34: .4byte gSaveBlock1 + 0x2738 -_080C1F38: .4byte gScriptResult -_080C1F3C: .4byte gUnknown_020387E8 -_080C1F40: - cmp r5, 0x2 - beq _080C1F8C - b _080C1FB6 -_080C1F46: - ldr r0, _080C1F68 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xB] - bl TVShowConvertInternationalString - ldrh r1, [r4, 0x6] - movs r0, 0x1 - bl sub_80BF088 - ldrh r1, [r4, 0x2] - movs r0, 0x2 - bl sub_80BF088 - movs r0, 0x1 - strb r0, [r6] - b _080C1FB6 - .align 2, 0 -_080C1F68: .4byte gStringVar1 -_080C1F6C: - ldr r0, _080C1F84 @ =gStringVar1 - ldrh r2, [r4, 0x8] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1F88 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - movs r0, 0x2 - strb r0, [r6] - b _080C1FB6 - .align 2, 0 -_080C1F84: .4byte gStringVar1 -_080C1F88: .4byte gSpeciesNames -_080C1F8C: - ldr r0, _080C1FC8 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x13 - ldrb r2, [r4, 0xB] - bl TVShowConvertInternationalString - ldr r0, _080C1FCC @ =gStringVar2 - ldrb r1, [r4, 0xA] - movs r2, 0 - bl sub_80FBFB4 - ldr r0, _080C1FD0 @ =gStringVar3 - ldrh r2, [r4, 0x4] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C1FD4 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080C1FB6: - ldr r0, _080C1FD8 @ =gTVWorldOfMastersTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C1FC8: .4byte gStringVar1 -_080C1FCC: .4byte gStringVar2 -_080C1FD0: .4byte gStringVar3 -_080C1FD4: .4byte gSpeciesNames -_080C1FD8: .4byte gTVWorldOfMastersTextGroup - thumb_func_end DoTVShowTheWorldOfMasters - - .align 2, 0 @ Don't pad with nop. diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc index 19f9af2eb..6125c4871 100644 --- a/data/scripts/maps/SlateportCity.inc +++ b/data/scripts/maps/SlateportCity.inc @@ -4,11 +4,11 @@ SlateportCity_MapScripts:: @ 814BA36 SlateportCity_MapScript1_14BA3C:: @ 814BA3C .ifdef SAPPHIRE - setvar 0x4010, 118 - setvar 0x4011, 117 + setvar 0x4010, MAP_OBJ_GFX_AQUA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_AQUA_MEMBER_M .else - setvar 0x4010, 120 - setvar 0x4011, 119 + setvar 0x4010, MAP_OBJ_GFX_MAGMA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_MAGMA_MEMBER_M .endif setvar 0x40aa, 0 call SlateportCity_EventScript_14BA5C diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc index 0bfeb4f5a..e84f8ccc6 100644 --- a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc +++ b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc @@ -4,11 +4,11 @@ SlateportCity_OceanicMuseum_1F_MapScripts:: @ 8155ACA SlateportCity_OceanicMuseum_1F_MapScript1_155AD0:: @ 8155AD0 .ifdef SAPPHIRE - setvar 0x4010, 118 - setvar 0x4011, 117 + setvar 0x4010, MAP_OBJ_GFX_AQUA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_AQUA_MEMBER_M .else - setvar 0x4010, 120 - setvar 0x4011, 119 + setvar 0x4010, MAP_OBJ_GFX_MAGMA_MEMBER_F + setvar 0x4011, MAP_OBJ_GFX_MAGMA_MEMBER_M .endif end diff --git a/include/asm.inc.h b/include/asm.inc.h index 0c111a991..c28050929 100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -288,12 +288,12 @@ void sub_80BEA50(u16); void sub_80BEA5C(u16); bool8 GetPriceReduction(u8); void sub_80BEE84(u16); -u8 sub_80BF0B8(u32); +size_t sub_80BF0B8(int); void sub_80BF478(void); u16 sub_80BF674(u16 species); s8 sub_80BF720(TVShow *); -u8 sub_80BF77C(u32); -void sub_80BFD44(void *, u32, u8); +bool8 sub_80BF77C(u16); +void sub_80BFD44(u8 *, u32, u8); void sub_80C0514(void *, u32, u8); // src/tv.o diff --git a/include/contest_painting.h b/include/contest_painting.h index 896aa299b..a67748d02 100644 --- a/include/contest_painting.h +++ b/include/contest_painting.h @@ -8,6 +8,14 @@ enum { + NORMAL_RANK, + SUPER_RANK, + HYPER_RANK, + MASTER_RANK, +}; + +enum +{ CONTEST_COOL, CONTEST_BEAUTY, CONTEST_CUTE, diff --git a/include/decoration.h b/include/decoration.h index 4bad93d1f..d041a8007 100644 --- a/include/decoration.h +++ b/include/decoration.h @@ -3,14 +3,17 @@ struct Decoration { - u8 id; - u8 name[16]; - u8 decor_field_11; - u8 decor_field_12; - u8 decor_field_13; - u16 price; - u8 *description; - void *tiles; + /*0x00*/ u8 id; + /*0x01*/ u8 name[16]; + /*0x11*/ u8 decor_field_11; + /*0x12*/ u8 decor_field_12; + /*0x13*/ u8 decor_field_13; + /*0x14*/ u16 price; + /*0x18*/ u8 *description; + /*0x1c*/ u16 *tiles; }; +extern struct Decoration gDecorations[0x77]; +extern void sub_80FF394(u16 unkr0, u16 unkr1, u16 unkr2); + #endif // GUARD_DECORATION_H diff --git a/include/easy_chat.h b/include/easy_chat.h index ee5ac4138..dca6b80c2 100644 --- a/include/easy_chat.h +++ b/include/easy_chat.h @@ -28,5 +28,6 @@ enum { u16 sub_80EB72C(u16 group); +void sub_80EB6FC(u16 *, u16); #endif // GUARD_EASYCHAT_H diff --git a/include/flags.h b/include/flags.h index 56325dea6..0e408a833 100644 --- a/include/flags.h +++ b/include/flags.h @@ -51,6 +51,8 @@ #define SYS_BRAILLE_WAIT 0x851 #define SYS_BRAILLE_FLY 0x852 +#define SYS_TV_LATI 0x85D + #define SYS_SHOAL_ITEM 0x85F #define SYS_B_DASH 0x860 // got Running Shoes #define SYS_CTRL_OBJ_DELETE 0x861 @@ -61,3 +63,5 @@ #define SPECIAL_FLAG_1 0x4001 #endif // GUARD_FLAGS_H + +bool8 FlagGet(u16 flag); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 508d7e4ed..0b72bbec5 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -104,7 +104,7 @@ struct CoordEvent struct BgEvent { - s16 x, y; + u16 x, y; u8 unk4; u8 kind; // 0x2 padding for the union beginning. @@ -119,7 +119,7 @@ struct BgEvent } hiddenItem; // secret base type - u16 secretBaseId; + u32 secretBaseId; } bgUnion; }; diff --git a/include/global.h b/include/global.h index 4cbbef5cc..5edb3239f 100644 --- a/include/global.h +++ b/include/global.h @@ -94,23 +94,24 @@ struct UCoords16 struct SecretBaseRecord { - u8 sbr_field_0; // ID? - u8 sbr_field_1_0:4; - u8 gender:1; - u8 sbr_field_1_5:1; - u8 sbr_field_2[7]; // 0xFF bytes? - u8 trainerId[4]; // byte 0 is used for determining trainer class - u16 sbr_field_e; - u8 sbr_field_10; - u8 sbr_field_11; - u8 decorations[16]; - u8 sbr_field_22[16]; - u32 partyPersonality[6]; - u16 partyMoves[6 * 4]; - u16 partySpecies[6]; - u16 partyHeldItems[6]; - u8 partyLevels[6]; - u8 partyEVs[6]; + /*0x1A08*/ u8 sbr_field_0; // ID? + /*0x1A09*/ u8 sbr_field_1_0:4; + /*0x1A09*/ u8 gender:1; + /*0x1A09*/ u8 sbr_field_1_5:1; + /*0x1A09*/ u8 sbr_field_1_6:2; + /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes? + /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class + /*0x1A16*/ u16 sbr_field_e; + /*0x1A18*/ u8 sbr_field_10; + /*0x1A19*/ u8 sbr_field_11; + /*0x1A1A*/ u8 decorations[16]; + /*0x1A2A*/ u8 decorationPos[16]; + /*0x1A3A*/ u32 partyPersonality[6]; + /*0x1A54*/ u16 partyMoves[6 * 4]; + /*0x1A84*/ u16 partySpecies[6]; + /*0x1A90*/ u16 partyHeldItems[6]; + /*0x1A9C*/ u8 partyLevels[6]; + /*0x1AA2*/ u8 partyEVs[6]; }; #include "game_stat.h" @@ -193,24 +194,60 @@ struct EasyChatPair struct TVShowCommon { /*0x00*/ u8 var00; /*0x01*/ u8 var01; + /*0x02*/ u8 pad02[20]; + /*0x16*/ u16 var16[3]; + /*0x1C*/ u8 srcTrainerId3Lo; + /*0x1D*/ u8 srcTrainerId3Hi; + /*0x1E*/ u8 srcTrainerId2Lo; + /*0x1F*/ u8 srcTrainerId2Hi; + /*0x20*/ u8 srcTrainerIdLo; + /*0x21*/ u8 srcTrainerIdHi; + /*0x22*/ u8 trainerIdLo; + /*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; /*0x02*/ u16 species; - u8 pad04[12]; + /*0x04*/ u16 pad04[6]; /*0x10*/ u8 playerName[8]; - /*0x18*/ u8 var18; + /*0x18*/ u8 language; }; struct TVShowRecentHappenings { /*0x00*/ u8 var00; /*0x01*/ u8 var01; /*0x02*/ u16 var02; - u8 pad04[12]; - /*0x10*/ u8 var10[8]; - /*0x18*/ u8 var18; + /*0x04*/ u16 var04[6]; + /*0x10*/ u8 playerName[8]; + /*0x18*/ u8 language; u8 pad19[10]; }; @@ -220,11 +257,13 @@ struct TVShowFanclubOpinions { /*0x02*/ u16 var02; /*0x04*/ u8 var04A:4; u8 var04B:4; - /*0x04*/ u8 var05[8]; - /*0x0D*/ u8 var0D; + /*0x05*/ u8 playerName[8]; + /*0x0D*/ u8 language; /*0x0E*/ u8 var0E; /*0x0F*/ u8 var0F; /*0x10*/ u8 var10[8]; + /*0x18*/ u16 var18[2]; + /*0x1C*/ u16 var1C[4]; }; struct TVShowNameRaterShow { @@ -237,7 +276,7 @@ struct TVShowNameRaterShow { /*0x1B*/ u8 random2; /*0x1C*/ u16 var1C; /*0x1E*/ u8 language; - /*0x1F*/ u8 var1F; + /*0x1F*/ u8 pokemonNameLanguage; }; struct TVShowMassOutbreak { @@ -255,10 +294,77 @@ struct TVShowMassOutbreak { /*0x14*/ u8 level; /*0x15*/ u8 var15; /*0x16*/ u16 var16; - /*0x18*/ u8 var18; + /*0x18*/ u8 language; u8 pad19[11]; }; +struct TVShowPokemonAngler { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 var04; + /*0x06*/ u8 language; + u8 pad07[12]; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowWorldOfMasters { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u16 var02; + /*0x04*/ u16 var04; + /*0x06*/ u16 var06; + /*0x08*/ u16 var08; + /*0x0a*/ u8 var0a; + /*0x0b*/ u8 language; + u8 pad0c[7]; + /*0x13*/ u8 playerName[8]; +}; + +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; +}; + typedef union TVShow { struct TVShowCommon common; struct TVShowFanClubLetter fanclubLetter; @@ -266,6 +372,13 @@ typedef union TVShow { struct TVShowFanclubOpinions fanclubOpinions; 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 TVShowPokemonTodayFailed pokemonTodayFailed; } TVShow; struct MailStruct @@ -325,6 +438,32 @@ 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; +}; + +struct GabbyAndTyData { + u16 mon1; + u16 mon2; + u16 move1; + u16 move2; + u8 mapnum; + u8 val9; + u8 valA_0:1; + u8 valA_1:1; + u8 valA_2:1; + u8 valA_3:1; + u8 valA_4:4; + u8 valB; +}; + struct SaveBlock1 /* 0x02025734 */ { /*0x00*/ struct Coords16 pos; @@ -374,8 +513,8 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2704*/ u8 decorDoll[40]; /*0x272C*/ u8 decorCushion[10]; /*0x2736*/ u8 padding_2736[2]; - /*0x2738*/ TVShow tvShows[24]; - /*0x2A98*/ u8 filler_2A98[0x64]; + /*0x2738*/ struct SaveTVStruct tvShows; + /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16]; /*0x2AFC*/ u16 outbreakPokemonSpecies; /*0x2AFE*/ u8 outbreakLocationMapNum; /*0x2AFF*/ u8 outbreakLocationMapGroup; @@ -386,7 +525,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2B0C*/ u8 outbreakUnk4; /*0x2B0D*/ u8 outbreakPokemonProbability; /*0x2B0E*/ u16 outbreakUnk5; - /*0x2B10*/ u8 filler_2B0E[0xC]; + /*0x2B18*/ struct GabbyAndTyData gabbyAndTyData; /*0x2B1C*/ u16 unk2B1C[6]; /*0x2B28*/ u16 unk2B28[6]; /*0x2B34*/ u16 unk2B34[6]; @@ -440,7 +579,11 @@ struct Pokedex struct SaveBlock2_Sub { - /*0x0000, 0x00A8*/ u8 filler_000[0x4AE]; + /*0x0000, 0x00A4*/ u8 filler_000[0x3D8]; + /*0x03D8, 0x0480*/ u16 var_480; + /*0x03DA, 0x0482*/ u16 var_482; + /*0x03DC, 0x0484*/ u8 filler_3DC[0xD1]; + /*0x04AD, 0x0555*/ u8 var_4AD; /*0x04AE, 0x0556*/ u8 var_4AE; /*0x04AF, 0x0557*/ u8 var_4AF; /*0x04B0, 0x0558*/ u16 var_4B0; @@ -450,7 +593,9 @@ struct SaveBlock2_Sub /*0x04B8, 0x0560*/ u8 filler_4B8[0x10]; /*0x04C8, 0x0570*/ u16 var_4C8; /*0x04CA, 0x0572*/ u16 var_4CA; - /*0x04CC, 0x0574*/ u8 filler_4CC[0x31C]; + /*0x04CC, 0x0574*/ u8 filler_4CC[4]; + /*0x04D0, 0x0578*/ u8 var_4D0; + /*0x04D1, 0x0579*/ u8 filler_4D1[0x317]; }; struct SaveBlock2 /* 0x02024EA4 */ diff --git a/include/item.h b/include/item.h index cc917dbc8..47af11940 100644 --- a/include/item.h +++ b/include/item.h @@ -1,8 +1,27 @@ #ifndef GUARD_ITEM_H #define GUARD_ITEM_H + typedef void (*ItemUseFunc)(u8); +struct Item +{ + u8 name[14]; + u16 itemId; + u16 price; + u8 holdEffect; + u8 holdEffectParam; + u8 *description; + u8 importance; + u8 unk19; + u8 pocket; + u8 type; + ItemUseFunc fieldUseFunc; + u8 battleUsage; + ItemUseFunc battleUseFunc; + u8 secondaryId; +}; + void CopyItemName(u16 itemId, u8 *string); bool8 IsBagPocketNonEmpty(u8 pocket); bool8 CheckBagHasItem(u16 itemId, u16 count); diff --git a/include/pokedex.h b/include/pokedex.h index 5dd44cd2f..61597981b 100644 --- a/include/pokedex.h +++ b/include/pokedex.h @@ -135,7 +135,7 @@ void sub_8090A3C(u8); void sub_8090C68(void); u8 *GetPokemonCategory(u16); -bool8 sub_8090D90(u16, u8); +s8 sub_8090D90(u16, u8); u16 GetNationalPokedexCount(u8); u16 GetHoennPokedexCount(u8); bool8 sub_8090FC0(void); diff --git a/include/tv.h b/include/tv.h new file mode 100644 index 000000000..b1ed61a82 --- /dev/null +++ b/include/tv.h @@ -0,0 +1,23 @@ +// +// Created by Scott Norton on 5/18/17. +// + +#ifndef POKERUBY_TV_H +#define POKERUBY_TV_H +enum +{ + TVSHOW_FAN_CLUB_LETTER = 1, + TVSHOW_RECENT_HAPPENINGS, + TVSHOW_PKMN_FAN_CLUB_OPINIONS, + TVSHOW_UNKN_SHOWTYPE_04, + TVSHOW_NAME_RATER_SHOW, + TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE, + TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE, + TVSHOW_POKEMON_TODAY_CAUGHT = 21, + TVSHOW_SMART_SHOPPER, + TVSHOW_POKEMON_TODAY_FAILED, + TVSHOW_FISHING_ADVICE, + TVSHOW_WORLD_OF_MASTERS, + TVSHOW_MASS_OUTBREAK = 41, +}; +#endif //POKERUBY_TV_H diff --git a/include/vars.h b/include/vars.h index 55df0a5e3..cb5bb3296 100644 --- a/include/vars.h +++ b/include/vars.h @@ -1,6 +1,8 @@ #ifndef GUARD_VARS_H #define GUARD_VARS_H +#define VAR_0x4003 0x4003 +#define VAR_0x401F 0x401F #define VAR_RECYCLE_GOODS 0x4020 #define VAR_REPEL_STEP_COUNT 0x4021 #define VAR_ICE_STEP_COUNT 0x4022 @@ -26,6 +28,13 @@ #define VAR_BARBOACH_SIZE_RECORD 0x404F -#define VAR_PORTHOLE 0x40B4 +#define VAR_0x4054 0x4054 + +#define VAR_0x4089 0x4089 +#define VAR_0x4097 0x4097 + +#define VAR_PORTHOLE 0x40B4 + +#define VAR_0x40BC 0x40BC #endif // GUARD_VARS_H diff --git a/ld_script.txt b/ld_script.txt index 0cc6ef0f0..be5c78907 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -174,17 +174,15 @@ SECTIONS { src/record_mixing.o(.text); asm/record_mixing.o(.text); asm/sound_check_menu.o(.text); - asm/secret_base.o(.text); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); + src/tv.o(.text); asm/tv.o(.text); - src/tv.o(.text); + src/tv.o(.text_a); asm/tv.o(.text_80BE8EC); - src/tv.o(.text_b); - asm/tv.o(.text_80BF544); + src/tv.o(.dotvshow); + asm/tv.o(.dotvshow); src/tv.o(.text_c); - asm/tv.o(.text_80C1C5C); - src/tv.o(.text_d); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); src/field_poison.o(.text); diff --git a/src/easy_chat.c b/src/easy_chat.c index 380fe6e4d..ee1e37b9b 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -23,6 +23,11 @@ extern const u8 gEasyChatGroupSizes[]; extern u16 gSpecialVar_0x8004; +void sub_80EB6FC(u16 *arg0, u16 arg1) { + for (arg1--; arg1!=0xffff; arg1--) + *(arg0++) = 0xffff; +} + u16 sub_80EB72C(u16 group) { u16 local1; @@ -260,3 +265,4 @@ static u16 sub_80EB9D8(void) { return -1; } + diff --git a/src/item.c b/src/item.c index 656563ad4..7257c3649 100644 --- a/src/item.c +++ b/src/item.c @@ -6,25 +6,6 @@ extern struct Berry *GetBerryInfo(u8 berry); extern u8 gOtherText_Berry2[]; extern u8 gUnknown_02038560; - -struct Item -{ - u8 name[14]; - u16 itemId; - u16 price; - u8 holdEffect; - u8 holdEffectParam; - u8 *description; - u8 importance; - u8 unk19; - u8 pocket; - u8 type; - ItemUseFunc fieldUseFunc; - u8 battleUsage; - ItemUseFunc battleUseFunc; - u8 secondaryId; -}; - extern struct Item gItems[]; struct BagPocket diff --git a/src/record_mixing.c b/src/record_mixing.c index 76fe13059..ddf9a5376 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -185,7 +185,7 @@ _080B93AC: .4byte 0x000011c8\n\ void sub_80B93B0(u32 a) { sub_80BD674(unk_2008000.secretBases, sizeof(struct PlayerRecords), a); - sub_80BFD44(unk_2008000.tvShows, sizeof(struct PlayerRecords), a); + sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a); sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a); sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a); //UB: Too many arguments for function "sub_80FA4E4" diff --git a/src/secret_base.c b/src/secret_base.c index 572dfaa1d..2769806f6 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -2,10 +2,831 @@ #include "string_util.h" #include "strings.h" #include "text.h" +#include "event_data.h" +#include "vars.h" +#include "rom4.h" +#include "asm.h" +#include "script.h" +#include "field_player_avatar.h" +#include "field_camera.h" +#include "map_constants.h" +#include "task.h" +#include "palette.h" +#include "decoration.h" +#include "field_weather.h" +#include "metatile_behavior.h" +#include "pokemon.h" -u8 sub_80BB8A8(void *); +extern u8 gUnknown_020387DC; +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; +extern u16 gSpecialVar_0x8007; +extern u16 gScriptResult; +extern const struct +{ + u16 unk_083D1358_0; + u16 unk_083D1358_1; +} gUnknown_083D1358[7]; +extern const u8 gUnknown_083D1374[4 * 16]; +extern void *gUnknown_0300485C; +extern const u8 sub_807D770(void); +extern const u8 gUnknown_083D13EC[12]; +extern const u8 sub_80BCCA4(u8); +extern u8 gUnknown_081A2E14[]; -u8 *sub_80BC190(u8 *dest, u8 arg1) { + +void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac +{ + u16 i; + u16 j; + record->sbr_field_0 = 0; + for (i=0; i<7; i++) + record->sbr_field_2[i] = 0xff; + for (i=0; i<4; i++) + record->trainerId[i] = 0x00; + record->sbr_field_e = 0; + record->sbr_field_10 = 0; + record->sbr_field_11 = 0; + record->sbr_field_1_0 = 0; + record->gender = 0; + record->sbr_field_1_5 = 0; + record->sbr_field_1_6 = 0; + for (i=0; i<16; i++) { + record->decorations[i] = 0; + record->decorationPos[i] = 0; + } + for (i=0; i<6; i++) { + for (j=0; j<4; j++) { + record->partyMoves[i * 4 + j] = 0; + } + record->partyPersonality[i] = 0; + record->partyEVs[i] = 0; + record->partySpecies[i] = 0; + record->partyHeldItems[i] = 0; + record->partyLevels[i] = 0; + } +} + +void ResetSecretBase(u8 idx) // 80bb594 +{ + sub_80BB4AC(&(gSaveBlock1.secretBases[idx])); +} + +void ResetSecretBases(void) // 080bb5b4 +{ + u16 i; + for (i=0; i<20; i++) + ResetSecretBase(i); +} + +void sub_80BB5D0(void) // 080bb5d0 +{ + gUnknown_020387DC = gSpecialVar_0x8004; +} + +void sub_80BB5E4(void) // 80bb5e4 +{ + u16 idx; + gScriptResult = 0; + for (idx=0; idx<20; idx++) { + if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0) + continue; + gScriptResult = 1; + VarSet(VAR_0x4054, idx); + break; + } +} + +void sub_80BB63C(void) // 80bb63c +{ + if (gSaveBlock1.secretBases[0].sbr_field_0) + gScriptResult = 1; + else + gScriptResult = 0; +} + +u8 sub_80BB66C(void) // 80bb66c +{ + s16 x, y; + s16 v0; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF; + if (v0 == 0x90 || v0 == 0x91) + return 1; + else if (v0 == 0x92 || v0 == 0x93) + return 2; + else if (v0 == 0x9a || v0 == 0x9b) + return 3; + else if (v0 == 0x94 || v0 == 0x95) + return 4; + else if (v0 == 0x96 || v0 == 0x97 || v0 == 0x9c || v0 == 0x9d) + return 5; + else if (v0 == 0x98 || v0 == 0x99) + return 6; + return 0; +} + +void sub_80BB70C(void) // 80bb70c +{ + gSpecialVar_0x8007 = sub_80BB66C(); +} + +s16 unref_sub_80BB724(u16 *a0, u8 a1) +{ + u16 v2; + for (v2=0; v2<0x200; v2++) { + if ((a0[v2] & 0xFFF) == a1) + return (s16)v2; + } + return -1; +} + +void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3) +{ + s16 x, y; + for (y=0; y<gMapHeader.mapData->height; y++) { + for (x=0; x<gMapHeader.mapData->width; x++) { + if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) { + *arg1 = x; + *arg2 = y; + return; + } + } + } +} + +void sub_80BB800(void) +{ + s16 x, y; + s16 tile_id; + u16 idx; + GetXYCoordsOneStepInFrontOfPlayer(&x, &y); + tile_id = MapGridGetMetatileIdAt(x, y); + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); + CurrentMapDrawMetatileAt(x, y); + return; + } + } + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) { + MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00); + CurrentMapDrawMetatileAt(x, y); + return; + } + } +} + +u8 sub_80BB8A8(u8 *arg1) +{ + u8 idx; + for (idx=0; idx<7; idx++) { + if (arg1[idx] == EOS) + return idx; + } + return 7; +} + +void sub_80BB8CC(void) +{ + u8 nameLength; + u16 idx; + gSaveBlock1.secretBases[0].sbr_field_0 = gUnknown_020387DC; + for (idx=0; idx<4; idx++) { + gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx]; + } + VarSet(VAR_0x4054, 0); + nameLength = sub_80BB8A8(gSaveBlock2.playerName); + memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7); + StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength); + gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender; + VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name); +} + +void sub_80BB970(struct MapEvents *events) +{ + u16 bgevidx, idx, jdx; + s16 tile_id; + for (bgevidx=0; bgevidx<events->bgEventCount; bgevidx++) { + if (events->bgEvents[bgevidx].kind == 8) { + for (jdx=0; jdx<20; jdx++) { + if (gSaveBlock1.secretBases[jdx].sbr_field_0 == events->bgEvents[bgevidx].bgUnion.secretBaseId) { + tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7); + for (idx=0; idx<7; idx++) { + if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) { + MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00); + break; + } + } + break; + } + } + } + } +} + +void sub_80BBA14(void) +{ + s8 idx = 4 * (gUnknown_020387DC / 10); + warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]); +} + +void sub_80BBA48(u8 taskid) +{ + u16 curbaseid; + switch (gTasks[taskid].data[0]) { + case 0: + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + curbaseid = VarGet(VAR_0x4054); + if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) + gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++; + sub_80BBA14(); + warp_in(); + gUnknown_0300485C = sub_8080990; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + break; + } +} + +void sub_80BBAF0(void) +{ + CreateTask(sub_80BBA48, 0); + fade_screen(1, 0); + saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); +} + +bool8 sub_80BBB24(void) +{ + if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0) + return FALSE; + return TRUE; +} + +void sub_80BBB50(u8 taskid) +{ + FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2); + if (sub_807D770() == 1) { + EnableBothScriptContexts(); + DestroyTask(taskid); + } +} + +void sub_80BBB90(void) +{ + s16 x, y; + ScriptContext2_Enable(); + HideMapNamePopup(); + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe20); + CurrentMapDrawMetatileAt(x + 7, y + 7); + pal_fill_black(); + CreateTask(sub_80BBB50, 0); +} + +void sub_80BBBEC(u8 taskid) +{ + s8 idx; + if (!gPaletteFade.active) { + idx = 4 * (gUnknown_020387DC / 10); + warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]); + warp_in(); + gUnknown_0300485C = sub_80BBB90; + SetMainCallback2(CB2_LoadMap); + DestroyTask(taskid); + } +} + +void sub_80BBC78(void) +{ + u8 taskid = CreateTask(sub_80BBBEC, 0); + gTasks[taskid].data[0] = 0; + fade_screen(1, 0); +} + +bool8 CurrentMapIsSecretBase(void) +{ + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4) + return TRUE; + return FALSE; +} + +#ifdef NONMATCHING +void sub_80BBCCC(u8 flagIn) +{ + u16 curBaseId; + u16 x, y; + if (CurrentMapIsSecretBase()) { + curBaseId = VarGet(VAR_0x4054); + for (x=0; x<16; x++) { + if ((u8)(gSaveBlock1.secretBases[curBaseId].decorations[x] - 1) <= 0x77 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].decor_field_11 != 4) { + sub_80FF394((gSaveBlock1.secretBases[0].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[0].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); + } + } + if (curBaseId != 0) { + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21); + } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) { + sub_80BB764(&x, &y, 0x220); + MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a); + } + } +} + +void sub_80BBDD0(void) +{ + u8 *roomdecor; + u8 *roomdecorpos; + u8 ndecor; + u8 decidx; + u8 objid = 0; + u8 metatile; + u16 curBase = VarGet(VAR_0x4054); + if (!CurrentMapIsSecretBase()) { + roomdecor = gSaveBlock1.playerRoomDecor; + roomdecorpos = gSaveBlock1.playerRoomDecorPos; + ndecor = 12; + } else { + roomdecor = gSaveBlock1.secretBases[curBase].decorations; + roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos; + ndecor = 16; + } + for (decidx=0; decidx<ndecor; decidx++) { + if (roomdecor[decidx] == 0) + continue; + if (gDecorations[roomdecor[decidx]].decor_field_11 != 4) + continue; + for (objid=0; objid<gMapHeader.events->mapObjectCount; objid++) { + if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE) + break; + } + if (objid != gMapHeader.events->mapObjectCount) { + gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4; + gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF; + metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7); + if (sub_80572D8(metatile) == 1 || sub_80572EC(metatile) == 1) { + gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20; + VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]); + gScriptResult = gMapHeader.events->mapObjects[objid].localId; + FlagReset(gSpecialVar_0x8004 + 0xAE); + show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007); + sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); + gSpecialVar_0x8004 ++; + } + } + } +} + +#else +__attribute__((naked)) +void sub_80BBCCC(u8 flagIn) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r8\n\ + push {r7}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + mov r8, r0\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + beq _080BBDBC\n\ + ldr r0, _080BBD70 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + movs r1, 0\n\ + mov r0, sp\n\ + strh r1, [r0]\n\ + ldr r6, _080BBD74 @ =gSaveBlock1\n\ + mov r4, sp\n\ + ldr r0, _080BBD78 @ =0x00001a2a\n\ + adds r7, r6, r0\n\ +_080BBCFC:\n\ + lsls r0, r5, 2\n\ + adds r0, r5\n\ + lsls r0, 5\n\ + ldrh r1, [r4]\n\ + adds r2, r0, r1\n\ + ldr r1, _080BBD7C @ =0x00001a1a\n\ + adds r0, r6, r1\n\ + adds r1, r2, r0\n\ + ldrb r0, [r1]\n\ + subs r0, 0x1\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x77\n\ + bhi _080BBD3A\n\ + ldr r0, _080BBD80 @ =gDecorations\n\ + ldrb r3, [r1]\n\ + lsls r1, r3, 5\n\ + adds r1, r0\n\ + ldrb r0, [r1, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBD3A\n\ + adds r0, r2, r7\n\ + ldrb r2, [r0]\n\ + lsrs r0, r2, 4\n\ + adds r0, 0x7\n\ + movs r1, 0xF\n\ + ands r1, r2\n\ + adds r1, 0x7\n\ + adds r2, r3, 0\n\ + bl sub_80FF394\n\ +_080BBD3A:\n\ + ldrh r0, [r4]\n\ + adds r0, 0x1\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + strh r0, [r4]\n\ + cmp r0, 0xF\n\ + bls _080BBCFC\n\ + cmp r5, 0\n\ + beq _080BBD88\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBD84 @ =0x00000e21\n\ + bl MapGridSetMetatileIdAt\n\ + b _080BBDBC\n\ + .align 2, 0\n\ +_080BBD70: .4byte 0x00004054\n\ +_080BBD74: .4byte gSaveBlock1\n\ +_080BBD78: .4byte 0x00001a2a\n\ +_080BBD7C: .4byte 0x00001a1a\n\ +_080BBD80: .4byte gDecorations\n\ +_080BBD84: .4byte 0x00000e21\n\ +_080BBD88:\n\ + mov r0, r8\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + ldr r0, _080BBDC8 @ =0x00004089\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + bne _080BBDBC\n\ + mov r4, sp\n\ + adds r4, 0x2\n\ + movs r2, 0x88\n\ + lsls r2, 2\n\ + mov r0, sp\n\ + adds r1, r4, 0\n\ + bl sub_80BB764\n\ + mov r0, sp\n\ + ldrh r0, [r0]\n\ + adds r0, 0x7\n\ + ldrh r1, [r4]\n\ + adds r1, 0x7\n\ + ldr r2, _080BBDCC @ =0x00000e0a\n\ + bl MapGridSetMetatileIdAt\n\ +_080BBDBC:\n\ + add sp, 0x4\n\ + pop {r3}\n\ + mov r8, r3\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BBDC8: .4byte 0x00004089\n\ +_080BBDCC: .4byte 0x00000e0a\n\ +.syntax divided\n"); +} + +__attribute__((naked)) +void sub_80BBDD0(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0x14\n\ + ldr r0, _080BBE00 @ =0x00004054\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + bl CurrentMapIsSecretBase\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080BBE08\n\ + ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\ + str r0, [sp, 0x4]\n\ + adds r0, 0xC\n\ + str r0, [sp, 0x8]\n\ + movs r1, 0xC\n\ + str r1, [sp, 0xC]\n\ + b _080BBE1E\n\ + .align 2, 0\n\ +_080BBE00: .4byte 0x00004054\n\ +_080BBE04: .4byte gSaveBlock1 + 0x2688\n\ +_080BBE08:\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 5\n\ + ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\ + adds r2, r1, r0\n\ + str r2, [sp, 0x4]\n\ + adds r0, 0x10\n\ + adds r1, r0\n\ + str r1, [sp, 0x8]\n\ + movs r3, 0x10\n\ + str r3, [sp, 0xC]\n\ +_080BBE1E:\n\ + movs r6, 0\n\ + ldr r4, [sp, 0xC]\n\ + cmp r6, r4\n\ + bcc _080BBE28\n\ + b _080BBF6C\n\ +_080BBE28:\n\ + ldr r5, _080BBF80 @ =gSaveBlock1\n\ + mov r10, r5\n\ +_080BBE2C:\n\ + ldr r1, [sp, 0x4]\n\ + adds r0, r1, r6\n\ + ldrb r1, [r0]\n\ + mov r9, r0\n\ + adds r2, r6, 0x1\n\ + str r2, [sp, 0x10]\n\ + cmp r1, 0\n\ + bne _080BBE3E\n\ + b _080BBF5E\n\ +_080BBE3E:\n\ + ldrb r0, [r0]\n\ + lsls r0, 5\n\ + ldr r3, _080BBF84 @ =gDecorations\n\ + adds r0, r3\n\ + ldrb r0, [r0, 0x11]\n\ + cmp r0, 0x4\n\ + beq _080BBE4E\n\ + b _080BBF5E\n\ +_080BBE4E:\n\ + movs r5, 0\n\ + ldr r0, _080BBF88 @ =gMapHeader\n\ + ldr r2, [r0, 0x4]\n\ + ldrb r3, [r2]\n\ + mov r8, r0\n\ + cmp r5, r3\n\ + bcs _080BBE8E\n\ + ldr r0, [r2, 0x4]\n\ + ldrh r1, [r0, 0x14]\n\ + ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r4]\n\ + adds r0, 0xAE\n\ + adds r7, r4, 0\n\ + cmp r1, r0\n\ + beq _080BBE8E\n\ + adds r4, r2, 0\n\ + adds r2, r3, 0\n\ +_080BBE70:\n\ + adds r0, r5, 0x1\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ + cmp r5, r2\n\ + bcs _080BBE8E\n\ + ldr r1, [r4, 0x4]\n\ + lsls r0, r5, 1\n\ + adds r0, r5\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldrh r1, [r0, 0x14]\n\ + ldrh r0, [r7]\n\ + adds r0, 0xAE\n\ + cmp r1, r0\n\ + bne _080BBE70\n\ +_080BBE8E:\n\ + mov r1, r8\n\ + ldr r0, [r1, 0x4]\n\ + ldrb r0, [r0]\n\ + cmp r5, r0\n\ + beq _080BBF5E\n\ + ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\ + ldr r2, [sp, 0x8]\n\ + adds r1, r2, r6\n\ + ldrb r0, [r1]\n\ + lsrs r0, 4\n\ + strh r0, [r7]\n\ + ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\ + ldrb r1, [r1]\n\ + movs r0, 0xF\n\ + ands r0, r1\n\ + strh r0, [r6]\n\ + ldrh r0, [r7]\n\ + adds r0, 0x7\n\ + ldrh r1, [r6]\n\ + adds r1, 0x7\n\ + bl MapGridGetMetatileBehaviorAt\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + adds r0, r4, 0\n\ + bl sub_80572D8\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BBEDA\n\ + adds r0, r4, 0\n\ + bl sub_80572EC\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + bne _080BBF5E\n\ +_080BBEDA:\n\ + mov r3, r8\n\ + ldr r0, [r3, 0x4]\n\ + ldr r1, [r0, 0x4]\n\ + lsls r4, r5, 1\n\ + adds r4, r5\n\ + lsls r4, 3\n\ + adds r1, r4, r1\n\ + ldr r5, _080BBF98 @ =0x00003f20\n\ + adds r0, r5, 0\n\ + ldrb r1, [r1, 0x1]\n\ + adds r0, r1\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldrh r0, [r1]\n\ + mov r2, r9\n\ + ldrb r1, [r2]\n\ + lsls r1, 5\n\ + ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\ + adds r1, r3\n\ + ldr r1, [r1]\n\ + ldrh r1, [r1]\n\ + bl VarSet\n\ + mov r5, r8\n\ + ldr r0, [r5, 0x4]\n\ + ldr r0, [r0, 0x4]\n\ + adds r4, r0\n\ + ldrb r0, [r4]\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + strh r0, [r1]\n\ + ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r2]\n\ + adds r0, 0xAE\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl FlagReset\n\ + ldr r3, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r3]\n\ + mov r4, r10\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + bl show_sprite\n\ + ldr r5, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r5]\n\ + ldrb r1, [r4, 0x5]\n\ + ldrb r2, [r4, 0x4]\n\ + movs r4, 0\n\ + ldrsh r3, [r7, r4]\n\ + movs r5, 0\n\ + ldrsh r4, [r6, r5]\n\ + str r4, [sp]\n\ + bl sub_805C0F8\n\ + ldr r1, _080BBF9C @ =gScriptResult\n\ + ldrb r0, [r1]\n\ + mov r2, r10\n\ + ldrb r1, [r2, 0x5]\n\ + ldrb r2, [r2, 0x4]\n\ + bl sub_805C78C\n\ + ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\ + ldrh r0, [r3]\n\ + adds r0, 0x1\n\ + strh r0, [r3]\n\ +_080BBF5E:\n\ + ldr r4, [sp, 0x10]\n\ + lsls r0, r4, 24\n\ + lsrs r6, r0, 24\n\ + ldr r5, [sp, 0xC]\n\ + cmp r6, r5\n\ + bcs _080BBF6C\n\ + b _080BBE2C\n\ +_080BBF6C:\n\ + add sp, 0x14\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BBF7C: .4byte gSaveBlock1 + 0x1A1A\n\ +_080BBF80: .4byte gSaveBlock1\n\ +_080BBF84: .4byte gDecorations\n\ +_080BBF88: .4byte gMapHeader\n\ +_080BBF8C: .4byte gSpecialVar_0x8004\n\ +_080BBF90: .4byte gSpecialVar_0x8006\n\ +_080BBF94: .4byte gSpecialVar_0x8007\n\ +_080BBF98: .4byte 0x00003f20\n\ +_080BBF9C: .4byte gScriptResult\n\ +_080BBFA0: .4byte gDecorations + 0x1C\n\ +.syntax divided\n"); +} +#endif + +void sub_80BBFA4(void) +{ + int curBase = VarGet(VAR_0x4054); + VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); +} + +void sub_80BBFD8(s16 *position, struct MapEvents *events) +{ + s16 bgevtidx; + for (bgevtidx=0; bgevtidx<events->bgEventCount; bgevtidx++) { + if (events->bgEvents[bgevtidx].kind == 8 && position[0] == events->bgEvents[bgevtidx].x + 7 && position[1] == events->bgEvents[bgevtidx].y + 7) { + gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId; + break; + } + } +} + +void sub_80BC038(s16 *position, struct MapEvents *events) +{ + sub_80BBFD8(position, events); + sub_80BB5E4(); + ScriptContext1_SetupScript(gUnknown_081A2E14); +} + +bool8 sub_80BC050(void) +{ + sub_80BB5D0(); + sub_80BB5E4(); + if (gScriptResult == 1) + return FALSE; + return TRUE; +} + +void sub_80BC074(u8 taskid) +{ + switch (gTasks[taskid].data[0]) { + case 0: + ScriptContext2_Enable(); + gTasks[taskid].data[0] = 1; + break; + case 1: + if (!gPaletteFade.active) { + gTasks[taskid].data[0] = 2; + } + break; + case 2: + copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E); + warp_in(); + gUnknown_0300485C = mapldr_default; + SetMainCallback2(CB2_LoadMap); + ScriptContext2_Disable(); + DestroyTask(taskid); + break; + } +} + +void sub_80BC0F8(void) { + CreateTask(sub_80BC074, 0); + fade_screen(1, 0); +} + +void sub_80BC114(void) { + if (gSaveBlock1.secretBases[0].sbr_field_0 != gUnknown_020387DC) + gScriptResult = 1; + else + gScriptResult = 0; +} + +u8 sub_80BC14C(u8 sbid) +{ + s16 idx; + for (idx=0; idx<20; idx++) { + if (gSaveBlock1.secretBases[idx].sbr_field_0 == sbid) + return idx; + } + return 0; +} + + + +u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190 u8 local1; u8 *str; @@ -16,3 +837,234 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { return StringAppend(dest, gOtherText_PlayersBase); } + +u8 *GetSecretBaseMapName(u8 *dest) { + gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_0; + return sub_80BC190(dest, VarGet(VAR_0x4054)); +} + +void sub_80BC224(void) { + u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_0x4054)].sbr_field_2; + u8 *var1 = gStringVar1; + u8 var2 = sub_80BB8A8(var0); + u8 *var3 = StringCopyN(var1, var0, var2); + *var3 = EOS; +} + +u8 sub_80BC268(u8 foo) { // 80bc268 + if (gSaveBlock1.secretBases[foo].sbr_field_1_6) + return 1; + return 0; +} + +u8 sub_80BC298(struct Pokemon *mon) { // 80bc298 + u16 evsum = GetMonData(mon, MON_DATA_HP_EV); + evsum += GetMonData(mon, MON_DATA_ATK_EV); + evsum += GetMonData(mon, MON_DATA_DEF_EV); + evsum += GetMonData(mon, MON_DATA_SPD_EV); + evsum += GetMonData(mon, MON_DATA_SPATK_EV); + evsum += GetMonData(mon, MON_DATA_SPDEF_EV); + return (u8)(evsum / 6); +} + +#ifdef NONMATCHING +void sub_80BC300(void) +{ + u16 moveidx; + u16 sbpartyidx = 0; + int resetVal = 0; + u16 partyidx = 0; + while (partyidx < 6) { + partyidx ++; + for (moveidx=0; moveidx<4; moveidx++) { + gSaveBlock1.secretBases[0].partyMoves[(partyidx - 1) * 6 + moveidx] = resetVal; + } + gSaveBlock1.secretBases[0].partySpecies[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyHeldItems[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyLevels[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyPersonality[partyidx - 1] = resetVal; + gSaveBlock1.secretBases[0].partyEVs[partyidx - 1] = resetVal; + if (GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_SPECIES) != 0 && !GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_IS_EGG)) { + sbpartyidx ++; + for (moveidx=0; moveidx<4; moveidx++) { + gSaveBlock1.secretBases[0].partyMoves[(sbpartyidx - 1) * 6 + moveidx] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_MOVE1 + moveidx); + } + gSaveBlock1.secretBases[0].partySpecies[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_SPECIES); + gSaveBlock1.secretBases[0].partyHeldItems[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_HELD_ITEM); + gSaveBlock1.secretBases[0].partyLevels[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_LEVEL); + gSaveBlock1.secretBases[0].partyPersonality[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_PERSONALITY); + gSaveBlock1.secretBases[0].partyEVs[sbpartyidx - 1] = sub_80BC298(&(gPlayerParty[partyidx - 1])); + } + } +} +#else +__attribute__((naked)) +void sub_80BC300(void) +{ + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + mov r7, r10\n\ + mov r6, r9\n\ + mov r5, r8\n\ + push {r5-r7}\n\ + sub sp, 0xC\n\ + movs r0, 0\n\ + mov r10, r0\n\ + movs r6, 0\n\ + mov r9, r6\n\ +_080BC314:\n\ + movs r4, 0\n\ + lsls r3, r6, 2\n\ + lsls r2, r6, 1\n\ + ldr r7, _080BC424 @ =gPlayerParty\n\ + adds r1, r6, 0x1\n\ + str r1, [sp]\n\ + adds r1, r3, 0\n\ +_080BC322:\n\ + adds r0, r1, r4\n\ + lsls r0, 1\n\ + ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ + adds r0, r5, r0\n\ + mov r5, r9\n\ + strh r5, [r0]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + cmp r4, 0x3\n\ + bls _080BC322\n\ + ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ + adds r0, r1, r2\n\ + strh r5, [r0]\n\ + ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ + adds r0, r5, r2\n\ + mov r1, r9\n\ + strh r1, [r0]\n\ + ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ + adds r0, r2, r6\n\ + mov r5, r9\n\ + strb r5, [r0]\n\ + ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ + adds r0, r1, r3\n\ + mov r2, r9\n\ + str r2, [r0]\n\ + ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ + adds r0, r3, r6\n\ + strb r2, [r0]\n\ + movs r0, 0x64\n\ + adds r5, r6, 0\n\ + muls r5, r0\n\ + adds r4, r5, r7\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + beq _080BC408\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl GetMonData\n\ + cmp r0, 0\n\ + bne _080BC408\n\ + movs r4, 0\n\ + mov r0, r10\n\ + lsls r0, 2\n\ + mov r8, r0\n\ + mov r1, r10\n\ + lsls r7, r1, 1\n\ + adds r1, 0x1\n\ + str r1, [sp, 0x4]\n\ + ldr r2, _080BC424 @ =gPlayerParty\n\ +_080BC38E:\n\ + adds r1, r4, 0\n\ + adds r1, 0xD\n\ + adds r0, r5, r2\n\ + str r2, [sp, 0x8]\n\ + bl GetMonData\n\ + mov r3, r8\n\ + adds r1, r3, r4\n\ + lsls r1, 1\n\ + ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54\n\ + adds r1, r3, r1\n\ + strh r0, [r1]\n\ + adds r0, r4, 0x1\n\ + lsls r0, 16\n\ + lsrs r4, r0, 16\n\ + ldr r2, [sp, 0x8]\n\ + cmp r4, 0x3\n\ + bls _080BC38E\n\ + movs r0, 0x64\n\ + adds r4, r6, 0\n\ + muls r4, r0\n\ + ldr r0, _080BC424 @ =gPlayerParty\n\ + adds r4, r0\n\ + adds r0, r4, 0\n\ + movs r1, 0xB\n\ + bl GetMonData\n\ + ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84\n\ + adds r1, r5, r7\n\ + strh r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0xC\n\ + bl GetMonData\n\ + ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90\n\ + adds r1, r2, r7\n\ + strh r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0x38\n\ + bl GetMonData\n\ + ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\ + add r1, r10\n\ + strb r0, [r1]\n\ + adds r0, r4, 0\n\ + movs r1, 0\n\ + bl GetMonData\n\ + ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\ + add r1, r8\n\ + str r0, [r1]\n\ + adds r0, r4, 0\n\ + bl sub_80BC298\n\ + ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\ + add r1, r10\n\ + strb r0, [r1]\n\ + ldr r3, [sp, 0x4]\n\ + lsls r0, r3, 16\n\ + lsrs r0, 16\n\ + mov r10, r0\n\ +_080BC408:\n\ + ldr r5, [sp]\n\ + lsls r0, r5, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x5\n\ + bls _080BC314\n\ + add sp, 0xC\n\ + pop {r3-r5}\n\ + mov r8, r3\n\ + mov r9, r4\n\ + mov r10, r5\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BC424: .4byte gPlayerParty\n\ +_080BC428: .4byte gSaveBlock1 + 0x1A54\n\ +_080BC42C: .4byte gSaveBlock1 + 0x1A84\n\ +_080BC430: .4byte gSaveBlock1 + 0x1A90\n\ +_080BC434: .4byte gSaveBlock1 + 0x1A9C\n\ +_080BC438: .4byte gSaveBlock1 + 0x1A3C\n\ +_080BC43C: .4byte gSaveBlock1 + 0x1AA2\n\ +.syntax divided\n"); +} +#endif + +void sub_80BC440(void) +{ + u16 backupValue = gSaveBlock1.secretBases[0].sbr_field_e; + ResetSecretBase(0); + gSaveBlock1.secretBases[0].sbr_field_e = backupValue; + sub_80BC0F8(); +} + +void SecretBasePC_PackUp(void) +{ + IncrementGameStat(20); + sub_80BC440(); +} @@ -1,26 +1,48 @@ #include "global.h" #include "asm.h" +#include "tv.h" #include "event_data.h" #include "field_message_box.h" #include "flags.h" #include "rng.h" #include "string_util.h" #include "text.h" - -enum -{ - TVSHOW_FAN_CLUB_LETTER = 1, - TVSHOW_RECENT_HAPPENINGS = 2, - TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3, - TVSHOW_NAME_RATER_SHOW = 5, - TVSHOW_MASS_OUTBREAK = 41, -}; +#include "species.h" +#include "pokedex.h" +#include "naming_screen.h" +#include "rom4.h" +#include "map_constants.h" +#include "strings.h" +#include "link.h" +#include "easy_chat.h" +#include "item.h" +#include "items.h" +#include "contest_painting.h" +#include "rtc.h" 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 u8 gUnknown_0300430A[11]; + struct OutbreakPokemon { /*0x00*/ u16 species; @@ -29,7 +51,18 @@ struct OutbreakPokemon /*0x0B*/ u8 location; }; +extern u8 *gUnknown_083D1464[3]; +extern u8 gUnknown_02038694; + +struct TVSaleItem { + u16 item_id; + u16 item_amount; +}; +extern struct TVSaleItem gUnknown_02038724[3]; + extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u16 gSpecialVar_0x8006; extern u8 gSpecialVar_0x8007; extern u16 gScriptResult; extern u8 gUnknown_020387E8; @@ -37,9 +70,472 @@ extern u8 gUnknown_020387E8; extern struct UnkTvStruct gUnknown_03005D38; extern u8 gSpeciesNames[][11]; +extern u8 gMoveNames[][13]; + +extern u8 *gTVBravoTrainerTextGroup[]; +extern u8 *gTVBravoTrainerBattleTowerTextGroup[]; +extern u8 *gTVSmartShopperTextGroup[]; +extern u8 *gTVNameRaterTextGroup[]; +extern u8 *gTVPokemonTodayTextGroup[]; +extern u8 *gTVPokemonTodayFailedCaptureTextGroup[]; +extern u8 *gTVFanClubTextGroup[]; +extern u8 *gTVRecentHappeningsTextGroup[]; +extern u8 *gTVFanClubOpinionsTextGroup[]; extern u8 *gTVPokemonOutbreakTextGroup[]; +extern u8 *gTVGabbyAndTyTextGroup[]; +extern u8 *gTVFishingGuruAdviceTextGroup[]; +extern u8 *gTVWorldOfMastersTextGroup[]; extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5]; +extern void sub_80BEBF4(void); + +extern u16 gUnknown_020387E0; +extern u16 gUnknown_020387E2; +extern const u8 *gUnknown_083CE048[]; + +extern const u8 *gTVNewsTextGroup1[]; +extern const u8 *gTVNewsTextGroup2[]; +extern const u8 *gTVNewsTextGroup3[]; + +extern u16 gScriptLastTalked; + +u32 GetPlayerTrainerId(void); + +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; + for (extradataidx=0; extradataidx<34; extradataidx++) { + gSaveBlock1.tvShows.shows[showidx].common.pad02[extradataidx] = 0; + } + } + sub_80BEBF4(); +} + +bool8 sub_80BF1B4(u8); +void sub_80BF20C(void); +extern u16 sub_8135D3C(u8); +extern u8 gScriptContestCategory; +extern u8 gScriptContestRank; +extern u8 gUnknown_03004316[11]; +extern u8 gUnknown_02024D26; + +void sub_80BF334(void); +void sub_80BF3A4(void); +void sub_80BF3DC(void); +void sub_80BF46C(void); +void sub_80BF478(void); +void sub_80BF484(void); +void sub_80BF4BC(void); + +void sub_80BE028(void); +void sub_80BE074(void); +void sub_80BE778(void); +void sub_80BEB20(void); + +asm(".section .text_a"); +s8 sub_80BF74C(TVShow tvShow[]); + +void sub_80BF55C(TVShow tvShow[], u8 showidx); +void sub_80BEA88(void); + +void sub_80BE138(TVShow *show); +void sub_80BE160(TVShow *show); +extern u16 gUnknown_02024C04; + +void sub_80BE5FC(void); +void sub_80BE65C(void); +void sub_80BE6A0(void); +void nullsub_21(void); +void sub_80BE188(void); +void sub_80BE320(void); + +extern u8 GabbyAndTyGetBattleNum(void); + +void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { + switch (GabbyAndTyGetBattleNum()) { + case 1: + gSpecialVar_0x8004 = 0xE; + gSpecialVar_0x8005 = 0xD; + break; + case 2: + gSpecialVar_0x8004 = 0x5; + gSpecialVar_0x8005 = 0x6; + break; + case 3: + gSpecialVar_0x8004 = 0x12; + gSpecialVar_0x8005 = 0x11; + break; + case 4: + gSpecialVar_0x8004 = 0x15; + gSpecialVar_0x8005 = 0x16; + break; + case 5: + gSpecialVar_0x8004 = 0x8; + gSpecialVar_0x8005 = 0x9; + break; + case 6: + gSpecialVar_0x8004 = 0x13; + gSpecialVar_0x8005 = 0x14; + break; + case 7: + gSpecialVar_0x8004 = 0x17; + gSpecialVar_0x8005 = 0x18; + break; + case 8: + gSpecialVar_0x8004 = 0xA; + gSpecialVar_0x8005 = 0xB; + break; + } +} + +void sub_80BDE48(void) { + switch (gSpecialVar_0x8005) { + case TVSHOW_FAN_CLUB_LETTER: + sub_80BE5FC(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BE65C(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BE6A0(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_21(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BE188(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BE320(); + break; + } +} + +u8 sub_80BDEAC(u8 *a0) { + u8 lang; + lang = GAME_LANGUAGE; + if (a0[0] == 0xFC && a0[1] == 0x15) { + lang = LANGUAGE_JAPANESE; + } + return lang; +} + +void sub_80BDEC8(void) { + TVShow *show; + u8 i; + u16 total; + u16 item; + total = 0; + sub_80BEB20(); + sub_80BE778(); + if (gUnknown_030042E0.var28 == 0) { + sub_80BE074(); + } else { + sub_80BE028(); + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.var28], gUnknown_030042E0.var2a) != 0) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) { + for (i=0; i<11; i++) { + total += gUnknown_030042E0.var36[i]; + } + if (total != 0 || gUnknown_030042E0.var05_1 != 0) { + total = FALSE; + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT; + show->pokemonToday.var01 = total; + if (gUnknown_030042E0.var05_1 != 0) { + total = 1; + item = ITEM_MASTER_BALL; + } else { + for (i=0; i<11; i++) { + total += gUnknown_030042E0.var36[i]; + } + if (total > 0xff) { + total = 0xff; + } + item = gUnknown_02024C04; + } + show->pokemonToday.var12 = total; + show->pokemonToday.ball = item; + StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); + StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.var2a); + show->pokemonToday.species = gUnknown_030042E0.var28; + sub_80BE138(show); + show->pokemonToday.language = GAME_LANGUAGE; + show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); + StripExtCtrlCodes(show->pokemonToday.nickname); + } + } + } + } +} + +void sub_80BE028(void) { + TVShow *buffer; + buffer = &gSaveBlock1.tvShows.unknown_2A98; + if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) { + sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS); + buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; + } + buffer->worldOfMasters.var02++; + buffer->worldOfMasters.var04 = gUnknown_030042E0.var28; + buffer->worldOfMasters.var08 = gUnknown_030042E0.var06; + buffer->worldOfMasters.var0a = gMapHeader.name; +} + +#ifdef NONMATCHING +void sub_80BE074(void) { + u8 i; + u16 total; + u8 flag; + TVShow *show; + if (sub_80BF77C(0xffff) == 0) { + for (i=0, total=0; i<ARRAY_COUNT(gUnknown_03004316); i++) { + total += gUnknown_03004316[i]; + } + if (total > 0xff) { + total = 0xff; + } + if (total > 2 && gUnknown_02024D26 == 1) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { + flag = FALSE; + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + asm_comment("Here the wrong registers are used to hold the show ID and flag."); + show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; + show->pokemonTodayFailed.var01 = flag; + show->pokemonTodayFailed.species = gUnknown_030042E0.var06; + show->pokemonTodayFailed.species2 = gUnknown_030042E0.var20; + show->pokemonTodayFailed.var10 = total; + show->pokemonTodayFailed.var11 = gUnknown_02024D26; + show->pokemonTodayFailed.var12 = gMapHeader.name; + StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName); + sub_80BE138(show); + show->pokemonTodayFailed.language = GAME_LANGUAGE; + } + } + } +} +#else +__attribute__((naked)) +void sub_80BE074(void) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + ldr r0, _080BE118 @ =0x0000ffff\n\ + bl sub_80BF77C\n\ + lsls r0, 24\n\ + cmp r0, 0\n\ + bne _080BE112\n\ + movs r1, 0\n\ + movs r5, 0\n\ + ldr r2, _080BE11C @ =gUnknown_03004316\n\ +_080BE088:\n\ + adds r0, r1, r2\n\ + ldrb r0, [r0]\n\ + adds r0, r5, r0\n\ + lsls r0, 16\n\ + lsrs r5, r0, 16\n\ + adds r0, r1, 0x1\n\ + lsls r0, 24\n\ + lsrs r1, r0, 24\n\ + cmp r1, 0xA\n\ + bls _080BE088\n\ + cmp r5, 0xFF\n\ + bls _080BE0A2\n\ + movs r5, 0xFF\n\ +_080BE0A2:\n\ + cmp r5, 0x2\n\ + bls _080BE112\n\ + ldr r7, _080BE120 @ =gUnknown_02024D26\n\ + ldrb r0, [r7]\n\ + cmp r0, 0x1\n\ + bne _080BE112\n\ + ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r6, 0\n\ + bl sub_80BF74C\n\ + ldr r4, _080BE128 @ =gUnknown_03005D38\n\ + strb r0, [r4]\n\ + lsls r0, 24\n\ + asrs r0, 24\n\ + movs r1, 0x1\n\ + negs r1, r1\n\ + cmp r0, r1\n\ + beq _080BE112\n\ + movs r0, 0x17\n\ + bl sub_80BF1B4\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080BE112\n\ + movs r0, 0\n\ + ldrsb r0, [r4, r0]\n\ + lsls r4, r0, 3\n\ + adds r4, r0\n\ + lsls r4, 2\n\ + adds r4, r6\n\ + @ -- 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\ +_080BE112:\n\ + pop {r4-r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BE118: .4byte 0x0000ffff\n\ +_080BE11C: .4byte gUnknown_03004316\n\ +_080BE120: .4byte gUnknown_02024D26\n\ +_080BE124: .4byte gSaveBlock1 + 0x2738\n\ +_080BE128: .4byte gUnknown_03005D38\n\ +_080BE12C: .4byte gUnknown_030042E0\n\ +_080BE130: .4byte gMapHeader\n\ +_080BE134: .4byte gSaveBlock2\n\ +.syntax divided\n"); +} +#endif + +void sub_80BE138(TVShow *show) { + u32 playerId; + playerId = GetPlayerTrainerId(); + show->common.srcTrainerId2Lo = playerId & 0xFF; + show->common.srcTrainerId2Hi = playerId >> 8; + show->common.srcTrainerIdLo = playerId & 0xFF; + show->common.srcTrainerIdHi = playerId >> 8; + show->common.trainerIdLo = playerId & 0xFF; + show->common.trainerIdHi = playerId >> 8; +} + +void sub_80BE160(TVShow *show) { + u32 playerId; + playerId = GetPlayerTrainerId(); + show->common.srcTrainerIdLo = playerId & 0xFF; + show->common.srcTrainerIdHi = playerId >> 8; + show->common.trainerIdLo = playerId & 0xFF; + show->common.trainerIdHi = playerId >> 8; +} + +void sub_80BE188(void) { + TVShow *show; + TVShow *buffer; + buffer = &gSaveBlock1.tvShows.unknown_2A98; + if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + show->bravoTrainer.var01 = 1; + show->bravoTrainer.species = buffer->bravoTrainer.species; + StringCopy(show->bravoTrainer.playerName, gSaveBlock2.playerName); + StringCopy(show->bravoTrainer.pokemonNickname, buffer->bravoTrainer.pokemonNickname); + show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; + show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank; + show->bravoTrainer.var14 = buffer->bravoTrainer.var14; + show->bravoTrainer.var13_5 = buffer->bravoTrainer.var13_5; + show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; + sub_80BE160(show); + show->bravoTrainer.language = GAME_LANGUAGE; + show->bravoTrainer.var1f = sub_80BDEAC(show->bravoTrainer.pokemonNickname); + StripExtCtrlCodes(show->bravoTrainer.pokemonNickname); + } +} + +void sub_80BE23C(u16 a0) { + TVShow *show; + show = &gSaveBlock1.tvShows.unknown_2A98; + sub_80BF484(); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1) { + sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + show->bravoTrainer.var14 = a0; + show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; + } +} + +void sub_80BE284(u8 a0) { + TVShow *show; + show = &gSaveBlock1.tvShows.unknown_2A98; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1) { + show->bravoTrainer.var13_5 = a0; + show->bravoTrainer.contestCategory = gScriptContestCategory; + show->bravoTrainer.contestRank = gScriptContestRank; + show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); + GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname); + } +} + +void sub_80BE320(void) { + TVShow *show; + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; + show->bravoTrainerTower.var01 = 1; + StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName); + StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC); + show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480; + show->bravoTrainerTower.winningMove = gSaveBlock2.filler_A8.var_482; + show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); + show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD; + if (gSaveBlock2.filler_A8.var_4D0 == 0) { + show->bravoTrainerTower.btLevel = 50; + } else { + show->bravoTrainerTower.btLevel = 100; + } + show->bravoTrainerTower.var1b = gSpecialVar_0x8004; + sub_80BE160(show); + show->bravoTrainerTower.language = GAME_LANGUAGE; +} + +void sub_80BE3BC(void) { + u8 rval; + TVShow *tvShow; + u8 i; + + rval = sub_80BF77C(0x5555); + if (rval == 0) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { + sub_80BF20C(); + if (gUnknown_02038724[0].item_amount >= 20) { + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER; + tvShow->smartshopperShow.var01 = rval; + tvShow->smartshopperShow.shopLocation = gMapHeader.name; + for (i=0; i<3; i++) { + tvShow->smartshopperShow.itemIds[i] = gUnknown_02038724[i].item_id; + tvShow->smartshopperShow.itemAmounts[i] = gUnknown_02038724[i].item_amount; + } + tvShow->smartshopperShow.priceReduced = GetPriceReduction(1); + StringCopy(tvShow->smartshopperShow.playerName, gSaveBlock2.playerName); + sub_80BE138(tvShow); + tvShow->smartshopperShow.language = GAME_LANGUAGE; + } + } + } +} + void sub_80BE478(void) { u16 playerNameLength; @@ -67,7 +563,7 @@ void sub_80BE478(void) return; } - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW; tvShow->nameRaterShow.var01 = 1; @@ -85,7 +581,7 @@ void sub_80BE478(void) sub_80BE160(tvShow); tvShow->nameRaterShow.language = GAME_LANGUAGE; - tvShow->nameRaterShow.var1F = sub_80BDEAC(tvShow->nameRaterShow.pokemonName); + tvShow->nameRaterShow.pokemonNameLanguage = sub_80BDEAC(tvShow->nameRaterShow.pokemonName); StripExtCtrlCodes(tvShow->nameRaterShow.pokemonName); } @@ -94,7 +590,7 @@ void StartMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species; gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum; @@ -116,7 +612,7 @@ void sub_80BE5FC(void) TVShow *tvShow; u16 species; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER; tvShow->fanclubLetter.var01 = 1; @@ -125,22 +621,22 @@ void sub_80BE5FC(void) species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); tvShow->fanclubLetter.species = species; sub_80BE160(tvShow); - tvShow->fanclubLetter.var18 = GAME_LANGUAGE; + tvShow->fanclubLetter.language = GAME_LANGUAGE; } void sub_80BE65C(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; tvShow->recentHappenings.var01 = 1; - StringCopy(&tvShow->recentHappenings.var10[0], &gSaveBlock2.playerName[0]); + StringCopy(tvShow->recentHappenings.playerName, gSaveBlock2.playerName); tvShow->recentHappenings.var02 = 0; sub_80BE160(tvShow); - tvShow->recentHappenings.var18 = GAME_LANGUAGE; + tvShow->recentHappenings.language = GAME_LANGUAGE; } void sub_80BE6A0(void) @@ -148,7 +644,7 @@ void sub_80BE6A0(void) TVShow *tvShow; u8 monIndex; - tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; tvShow->fanclubOpinions.var01 = 1; @@ -159,13 +655,13 @@ void sub_80BE6A0(void) tvShow->fanclubOpinions.var04B = gSpecialVar_0x8007; - StringCopy(tvShow->fanclubOpinions.var05, gSaveBlock2.playerName); + StringCopy(tvShow->fanclubOpinions.playerName, gSaveBlock2.playerName); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, tvShow->fanclubOpinions.var10); tvShow->fanclubOpinions.var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL); sub_80BE160(tvShow); - tvShow->fanclubOpinions.var0D = GAME_LANGUAGE; + tvShow->fanclubOpinions.language = GAME_LANGUAGE; tvShow->fanclubOpinions.var0E = sub_80BDEAC(tvShow->fanclubOpinions.var10); StripExtCtrlCodes(tvShow->fanclubOpinions.var10); } @@ -186,7 +682,7 @@ void sub_80BE778(void) for (i = 0; i < 24; i++) { - if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + if (gSaveBlock1.tvShows.shows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) { return; } @@ -197,7 +693,7 @@ void sub_80BE778(void) return; } - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); if (gUnknown_03005D38.var0 == -1) { return; @@ -213,7 +709,7 @@ void sub_80BE778(void) val2 = gUnknown_03005D38.var0; - tvShow = &gSaveBlock1.tvShows[val2]; + tvShow = &gSaveBlock1.tvShows.shows[val2]; tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK; tvShow->massOutbreak.var01 = 1; @@ -235,7 +731,7 @@ void sub_80BE778(void) tvShow->massOutbreak.var16 = 0x01; sub_80BE160(tvShow); - tvShow->massOutbreak.var18 = GAME_LANGUAGE; + tvShow->massOutbreak.language = GAME_LANGUAGE; } } @@ -264,7 +760,593 @@ void UpdateTVShowsPerDay(u16 arg0) sub_80BEA5C(arg0); } -asm(".section .text_b"); +void sub_80BE8EC(u16 arg0) +{ + u8 showidx; + 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 (tvShow->massOutbreak.var16 < arg0) + tvShow->massOutbreak.var16 = 0; + else + tvShow->massOutbreak.var16 -= arg0; + break; + } + } + } +} + +void UpdateMassOutbreakTimeLeft(u16 arg0) +{ + if (gSaveBlock1.outbreakUnk5 <= arg0) + EndMassOutbreak(); + else + gSaveBlock1.outbreakUnk5 -= arg0; +} + +void sub_80BE9D4(); + +void sub_80BE97C(bool8 flag) +{ + u8 var0, var1; + if (flag != 0) { + var0 = gUnknown_020387E2 >> 8; + if (var0 > 4) + sub_80BE9D4(); + gUnknown_020387E2 &= 0xFF; + var1 = gUnknown_020387E2 & 0xFF; + if (var1 != 0xFF) + gUnknown_020387E2++; + } else { + var0 = gUnknown_020387E2 & 0xFF; + if (var0 > 4) + sub_80BE9D4(); + gUnknown_020387E2 &= 0xFF00; + var1 = gUnknown_020387E2 >> 8; + if (var1 != 0xFF) + gUnknown_020387E2 += 0x100; + } +} + +void sub_80BE9D4() +{ + TVShow *show; + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { + show = &(gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]); +#ifdef NONMATCHING + show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE; + show->pokemonAngler.var01 = 0; +#else + asm(".syntax unified\n\ + movs r1, 0\n\ + movs r0, 24\n\ + strb r0, [r4]\n\ + strb r1, [r4, 1]\n\ + .syntax divided\n"); +#endif + show->pokemonAngler.var02 = gUnknown_020387E2 & 0xFF; + show->pokemonAngler.var03 = gUnknown_020387E2 >> 8; + show->pokemonAngler.var04 = gUnknown_020387E0; + StringCopy(show->pokemonAngler.playerName, gSaveBlock2.playerName); + sub_80BE138(show); + show->pokemonAngler.language = GAME_LANGUAGE; + } +} + +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; + if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) + { + if (unk_2a98->worldOfMasters.var02 < 20) + { + sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18); + } + else + { + sub_80BEA88(); + } + } +} +void sub_80BEA88(void) +{ + TVShow *unk_2a98; + TVShow *tvShow; + u8 rval; + unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; + rval = sub_80BF77C(0xFFFF); + if (rval == 0) + { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) + { + tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; + tvShow->worldOfMasters.var01 = rval; + tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; + tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06; + tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04; + tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08; + tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a; + StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName); + sub_80BE138(tvShow); + tvShow->worldOfMasters.language = GAME_LANGUAGE; + } + } +} + +int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0); +void sub_80BEC10(u8); +void sub_80BF588(TVShow tvShows[]); +void sub_80BF6D8(void); +bool8 sub_80BF77C(u16); +bool8 sub_80BEE48(u8); + +bool8 IsPriceDiscounted(u8); + +void sub_80BEB20(void) { + u16 rval; + struct SaveBlock1 *save; + struct UnknownSaveStruct2ABC *unk2abc; + if (FlagGet(SYS_GAME_CLEAR) != 0) { + unk2abc = gSaveBlock1.unknown_2ABC; + gUnknown_03005D38.var0 = sub_80BEBC8(unk2abc); + if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) { + rval = (Random() % 3) + 1; + if (sub_80BEE48(rval) != 1) { + save = &gSaveBlock1; + save->unknown_2ABC[gUnknown_03005D38.var0].val0 = rval; + save->unknown_2ABC[gUnknown_03005D38.var0].val2 = 4; + save->unknown_2ABC[gUnknown_03005D38.var0].val1 = 1; + } + } + } +} + +int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) { + s8 i; + for (i=0; i<16; i++) { + if (arg0[i].val0 == 0) { + return i; + } + } + return -1; +} + +void sub_80BEBF4(void) { + u8 i; + for (i=0; i<16; i++) { + sub_80BEC10(i); + } +} + +void sub_80BEC10(u8 arg0) { + gSaveBlock1.unknown_2ABC[arg0].val0 = 0; + gSaveBlock1.unknown_2ABC[arg0].val1 = 0; + gSaveBlock1.unknown_2ABC[arg0].val2 = 0; +} + +void sub_80BEC40(void) { + u8 i, j; + for (i = 0; i < 15; i++) { + if (gSaveBlock1.unknown_2ABC[i].val0 == 0) { + for (j = i + 1; j < 16; j++) { + if (gSaveBlock1.unknown_2ABC[j].val0 != 0) { + gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j]; + sub_80BEC10(j); + break; + } + } + } + } +} + +u8 sub_80BECA0(void) +{ + u8 i; + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 != 0 && gSaveBlock1.unknown_2ABC[i].val1 == 1 && gSaveBlock1.unknown_2ABC[i].val2 < 3) + { + return i; + } + } + return 0xFF; +} + +void sub_80BECE8(void) +{ + u8 arg0; + arg0 = sub_80BECA0(); + if (arg0 == 0xff) + { + gScriptResult = 0; + return; + } + if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0) + { + gSaveBlock1.unknown_2ABC[arg0].val1 = 2; + if (gLocalTime.hours < 20) + { + ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + else + { + ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + } + else + { + u16 value = gSaveBlock1.unknown_2ABC[arg0].val2; + ConvertIntToDecimalStringN(gStringVar1, value, 0, 1); + gSaveBlock1.unknown_2ABC[arg0].val1 = 0; + ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]); + } + gScriptResult = 1; +} + +bool8 GetPriceReduction(u8 arg0) +{ + u8 i; + if (arg0 == 0) + { + return FALSE; + } + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) + { + if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0) + { + return TRUE; + } + else + { + return FALSE; + } + } + } + return FALSE; +} + +bool8 IsPriceDiscounted(u8 arg0) +{ + switch (arg0) + { + case 1: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a) + { + return TRUE; + } + else + { + return FALSE; + } + break; + case 3: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) + { + return TRUE; + } + else + { + return FALSE; + } + break; + default: + return TRUE; + } +} + +bool8 sub_80BEE48(u8 arg0) +{ + u8 i; + if (arg0 == 0) + { + return TRUE; + } + else + { + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0 == arg0) + { + return TRUE; + } + } + } + return FALSE; +} + +void sub_80BEE84(u16 var0) +{ + u8 i; + for (i=0; i<16; i++) + { + if (gSaveBlock1.unknown_2ABC[i].val0) + { + if (gSaveBlock1.unknown_2ABC[i].val2 < var0) + { + sub_80BEC10(i); + } + else + { + if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1) + { + gSaveBlock1.unknown_2ABC[i].val1 = 1; + } + gSaveBlock1.unknown_2ABC[i].val2 -= var0; + } + } + } + sub_80BEC40(); +} + +void sub_80BEF10(u8 strvaridx, u8 rank) +{ + switch (rank) + { + case NORMAL_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]); + break; + case SUPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]); + break; + case HYPER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]); + break; + case MASTER_RANK: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]); + break; + } +} + +void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) +{ + switch (category) + { + case CONTEST_COOL: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]); + break; + case CONTEST_BEAUTY: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]); + break; + case CONTEST_CUTE: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]); + break; + case CONTEST_SMART: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]); + break; + case CONTEST_TOUGH: + StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]); + break; + } +} + +void SetContestCategoryStringVarForInterview(void) +{ + TVShow *tvShow; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); +} + +void sub_80BF088(u8 arg0, s32 price) +{ + size_t log10val; + log10val = sub_80BF0B8(price); + ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val); +} + +size_t sub_80BF0B8(int value) +{ + if (value / 10 == 0) + return 1; + else if (value / 100 == 0) + return 2; + else if (value / 1000 == 0) + return 3; + else if (value / 10000 == 0) + return 4; + else if (value / 100000 == 0) + return 5; + else if (value / 1000000 == 0) + return 6; + else if (value / 10000000 == 0) + return 7; + else if (value / 100000000 == 0) + return 8; + else + return 1; +} + +void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1) +{ + u8 i; + s32 price; + price = 0; + for (i=0; i<3; i++) + { + if (arg1->itemIds[i]) + { + price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i]; + } + } + if (arg1->priceReduced == 1) + { + sub_80BF088(arg0, price >> 1); + } + else + { + sub_80BF088(arg0, price); + } +} + +bool8 sub_80BF1B4(u8 showIdx) +{ + TVShow *tvShows; + u8 i; + u32 trainerId; + tvShows = gSaveBlock1.tvShows.shows; + trainerId = GetPlayerTrainerId(); + for (i=5; i<24; i++) + { + if (tvShows[i].common.var00 == showIdx) + { + if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi) + { + return TRUE; + } + } + } + return FALSE; +} + +void sub_80BF20C(void) +{ + u8 i, j; + u16 tmpId, tmpAmount; + for (i=0; i<2; i++) + { + for (j=i+1; j<3; j++) + { + if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount) + { + tmpId = gUnknown_02038724[i].item_id; + tmpAmount = gUnknown_02038724[i].item_amount; + gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id; + gUnknown_02038724[i].item_amount = gUnknown_02038724[j].item_amount; + gUnknown_02038724[j].item_id = tmpId; + gUnknown_02038724[j].item_amount = tmpAmount; + } + } + } +} + +void sub_80BF25C(u8 showType) +{ + u8 i; + for (i=0; i<5; i++) + { + if (gSaveBlock1.tvShows.shows[i].common.var00 == showType) { + if(gSaveBlock1.tvShows.shows[i].common.var01 == 1) + { + gScriptResult = 1; + } + else + { + sub_80BF55C(gSaveBlock1.tvShows.shows, i); + sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF6D8(); + } + return; + } + } + sub_80BF6D8(); +} + +void sub_80BF2C4(void) +{ + gScriptResult = 0; + switch (gSpecialVar_0x8005) { + case TVSHOW_FAN_CLUB_LETTER: + sub_80BF334(); + break; + case TVSHOW_RECENT_HAPPENINGS: + sub_80BF3A4(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80BF3DC(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80BF46C(); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80BF478(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80BF484(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80BF4BC(); + break; + } +} + +void sub_80BF334(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); + if (gScriptResult == 0) { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->fanclubLetter.pad04, 6); + } +} + +void sub_80BF3A4(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); + if (gScriptResult == 0) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->recentHappenings.var04, 6); + } +} + +void sub_80BF3DC(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS); + if (gScriptResult == 0) { + StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); + GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); + StringGetEnd10(gStringVar2); + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->fanclubOpinions.var1C, 2); + } +} + +void sub_80BF46C(void) +{ + gScriptResult = 1; +} + +void sub_80BF478(void) +{ + sub_80BF25C(TVSHOW_NAME_RATER_SHOW); +} + +void sub_80BF484(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); + if (gScriptResult == 0) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->bravoTrainer.var04, 2); + } +} + +void sub_80BF4BC(void) +{ + TVShow *show; + sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); + if (gScriptResult == 0) { + show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later + } +} u8 sub_80BF4F4(u8 arg0) { @@ -282,13 +1364,1540 @@ u8 sub_80BF4F4(u8 arg0) return TRUE; } +u8 sub_80BF544(void) +{ + return sub_80BF4F4(GetLeadMonIndex()); +} + +void sub_80BF55C(TVShow tvShow[], u8 showidx) +{ + u8 idx; + tvShow[showidx].common.var00 = 0; + tvShow[showidx].common.var01 = 0; + for (idx=0; idx<34; idx++) { + tvShow[showidx].common.pad02[idx] = 0; + } +} + +void sub_80BF588(TVShow tvShow[]) +{ + u8 showidx; + u8 showidx2; + for (showidx=0; showidx<4; showidx++) { + if (tvShow[showidx].common.var00 == 0) { + for (showidx2=showidx+1; showidx2<5; showidx2++) { + if (tvShow[showidx2].common.var00 != 0) { + tvShow[showidx] = tvShow[showidx2]; + sub_80BF55C(tvShow, showidx2); + break; + } + } + } + } + for (showidx=5; showidx<24; showidx++) { + if (tvShow[showidx].common.var00 == 0) { + for (showidx2=showidx+1; showidx2<24; showidx2++) { + if (tvShow[showidx2].common.var00 != 0) { + tvShow[showidx] = tvShow[showidx2]; + sub_80BF55C(gSaveBlock1.tvShows.shows, showidx2); + break; + } + } + } + } +} + +u16 sub_80BF638(u8 arg0, u16 arg1) +{ + u16 retval = sub_80BF674(arg1); + StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]); + return retval; +} + +u16 sub_80BF674(u16 species) +{ + u16 rspecies; + u16 cspecies; + rspecies = (Random() % (NUM_SPECIES - 1)) + 1; + cspecies = rspecies; + while ((s8)sub_8090D90(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) { + if (cspecies == SPECIES_BULBASAUR) + cspecies = NUM_SPECIES - 1; + else + cspecies --; + if (cspecies == rspecies) { + cspecies = species; + return cspecies; + } + } + return cspecies; +} + +void sub_80BF6D8(void) +{ + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gSpecialVar_0x8006 = gUnknown_03005D38.var0; + if (gUnknown_03005D38.var0 == -1) + gScriptResult = 1; + else + gScriptResult = 0; +} + +s8 sub_80BF720(TVShow tvShow[]) +{ + u8 idx; + for (idx=0; idx<5; idx++) { + if (tvShow[idx].common.var00 == 0) + return idx; + } + return -1; +} + +s8 sub_80BF74C(TVShow tvShow[]) +{ + s8 idx; + for (idx=5; idx<24; idx++) { + if (tvShow[idx].common.var00 == 0) + return idx; + } + return -1; +} + +bool8 sub_80BF77C(u16 value) +{ + if (Random() <= value) + return FALSE; + return TRUE; +} + +void sub_80BF79C(TVShow *arg0) +{ + u8 i = Random() % 6; + while (1) { + if (i == 6) + i = 0; + if (arg0->recentHappenings.var04[i] != 0xFFFF) + break; + i ++; + } + sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]); +} + +u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0) +{ + u16 flagsum = 0; + u8 i = 0; + if (arg0->pokemonName[0] != 0xFF) { + while (i < 11 && arg0->pokemonName[i] != 0xFF) { + flagsum += arg0->pokemonName[i]; + i++; + } + } + return flagsum & 0x7; +} + +void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow) +{ + u8 flags[3]; + u16 nameLength; + u8 i; + for (i=0; i<3; i++) + flags[i] = EOS; + if (arg3 == 0) { + nameLength = StringLength(tvShow->trainerName); + if (arg2 == 0) { + flags[0] = tvShow->trainerName[arg1]; + } else if (arg2 == 1) { + flags[0] = tvShow->trainerName[nameLength - arg1]; + } else if (arg2 == 2) { + flags[0] = tvShow->trainerName[arg1]; + flags[1] = tvShow->trainerName[arg1 + 1]; + } else { + flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)]; + flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)]; + } + } else if (arg3 == 1) { + nameLength = StringLength(tvShow->pokemonName); + if (arg2 == 0) { + flags[0] = tvShow->pokemonName[arg1]; + } else if (arg2 == 1) { + flags[0] = tvShow->pokemonName[nameLength - arg1]; + } else if (arg2 == 2) { + flags[0] = tvShow->pokemonName[arg1]; + flags[1] = tvShow->pokemonName[arg1 + 1]; + } else { + flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)]; + flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)]; + } + } else { + nameLength = StringLength(gSpeciesNames[arg4]); + if (arg2 == 0) { + flags[0] = gSpeciesNames[arg4][arg1]; + } else if (arg2 == 1) { + flags[0] = gSpeciesNames[arg4][nameLength - arg1]; + } else if (arg2 == 2) { + flags[0] = gSpeciesNames[arg4][arg1]; + flags[1] = gSpeciesNames[arg4][arg1 + 1]; + } else { + flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)]; + flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)]; + } + } + StringCopy(gUnknown_083D1464[arg0], flags); +} + +bool8 sub_80BF974(void) +{ + u8 i; + for (i=0; i<5; i++) + { + if (gSaveBlock1.tvShows.shows[i].common.var00 == gSpecialVar_0x8004) + return TRUE; + } + return FALSE; +} + +bool8 sub_80BF9B4(void) +{ + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); + if (!StringCompareWithoutExtCtrlCodes(gStringVar3, gStringVar1)) + return FALSE; + sub_80BE478(); + return TRUE; +} + +void c2_080CC144(void); + +void sub_80BF9F8(void) +{ + u16 spec; + u16 gender; + u32 pval; + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3); + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2); + spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0); + gender = GetMonGender(&(gPlayerParty[gSpecialVar_0x8004])); + pval = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_PERSONALITY, 0); + DoNamingScreen(3, gStringVar2, spec, gender, pval, c2_080CC144); +} + +void c2_080CC144(void) +{ + SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2); + c2_exit_to_overworld_1_continue_scripts_restart_music(); +} + +void sub_80BFAE0(void) +{ + GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1); + StringGetEnd10(gStringVar1); +} + +void sub_80BFB10(void) +{ + if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0)) + gScriptResult = 0; + else + gScriptResult = 1; +} + +u8 sub_80BFB54(u8 arg0) +{ + if (arg0 == 0) + return 0; + else if (arg0 > 0 && arg0 <= 20) + return 2; + else if (arg0 > 20 && arg0 <= 40) + return 3; + else if (arg0 > 40 && arg0 <= 60) + return 4; + else + return 0; +} + +u32 GetPlayerTrainerId(void) +{ + return (gSaveBlock2.playerTrainerId[3] << 24) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[0]); +} + +u8 CheckForBigMovieOrEmergencyNewsOnTV(void) +{ + if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + return 0; + if (gSaveBlock2.playerGender == MALE) { + if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) + return 0; + } else { + if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) + return 0; + } + if (FlagGet(SYS_TV_LATI) == 1) + return 1; + if (FlagGet(SYS_TV_HOME) == 1) + return 2; + return 1; +} + +#ifdef NONMATCHING +void GetMomOrDadStringForTVMessage(void) +{ + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { + if (gSaveBlock2.playerGender == MALE) { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } else { + if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } + } + } + if (VarGet(VAR_0x4003) == 1) { + StringCopy(gStringVar1, gOtherText_Mom); + } else if (VarGet(VAR_0x4003) == 2) { + StringCopy(gStringVar1, gOtherText_Dad); + } else if (VarGet(VAR_0x4003) > 2) { + if ((u16)(VarGet(VAR_0x4003) & 1) == 0) { + StringCopy(gStringVar1, gOtherText_Mom); + } else { + StringCopy(gStringVar1, gOtherText_Dad); + } + } else { + if ((u16)(Random() & 1) != 0) { + StringCopy(gStringVar1, gOtherText_Mom); + VarSet(VAR_0x4003, 1); + } else { + StringCopy(gStringVar1, gOtherText_Dad); + VarSet(VAR_0x4003, 2); + } + } +} +#else +__attribute__((naked)) +void GetMomOrDadStringForTVMessage(void) +{ + asm(".syntax unified\n\ + push {r4,lr}\n\ + ldr r1, _080BFC40 @ =gSaveBlock1\n\ + movs r0, 0x4\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x1\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC44 @ =gSaveBlock2\n\ + ldrb r0, [r0, 0x8]\n\ + cmp r0, 0\n\ + bne _080BFC54\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0\n\ + bne _080BFC6C\n\ + ldr r0, _080BFC48 @ =gStringVar1\n\ + ldr r1, _080BFC4C @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFC50 @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFC6C\n\ + .align 2, 0\n\ +_080BFC40: .4byte gSaveBlock1\n\ +_080BFC44: .4byte gSaveBlock2\n\ +_080BFC48: .4byte gStringVar1\n\ +_080BFC4C: .4byte gOtherText_Mom\n\ +_080BFC50: .4byte 0x00004003\n\ +_080BFC54:\n\ + movs r0, 0x5\n\ + ldrsb r0, [r1, r0]\n\ + cmp r0, 0x2\n\ + bne _080BFC6C\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + ldr r0, _080BFCBC @ =0x00004003\n\ + movs r1, 0x1\n\ + bl VarSet\n\ +_080BFC6C:\n\ + ldr r4, _080BFCBC @ =0x00004003\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x1\n\ + beq _080BFCAA\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + beq _080BFCC0\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + cmp r0, 0x2\n\ + bls _080BFCD4\n\ + adds r0, r4, 0\n\ + bl VarGet\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080BFCC0\n\ +_080BFCAA:\n\ + ldr r0, _080BFCB4 @ =gStringVar1\n\ + ldr r1, _080BFCB8 @ =gOtherText_Mom\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCB4: .4byte gStringVar1\n\ +_080BFCB8: .4byte gOtherText_Mom\n\ +_080BFCBC: .4byte 0x00004003\n\ +_080BFCC0:\n\ + ldr r0, _080BFCCC @ =gStringVar1\n\ + ldr r1, _080BFCD0 @ =gOtherText_Dad\n\ + bl StringCopy\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCCC: .4byte gStringVar1\n\ +_080BFCD0: .4byte gOtherText_Dad\n\ +_080BFCD4:\n\ + bl Random\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + movs r1, 0x1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BFD00\n\ + ldr r0, _080BFCF8 @ =gStringVar1\n\ + ldr r1, _080BFCFC @ =gOtherText_Mom\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x1\n\ + bl VarSet\n\ + b _080BFD10\n\ + .align 2, 0\n\ +_080BFCF8: .4byte gStringVar1\n\ +_080BFCFC: .4byte gOtherText_Mom\n\ +_080BFD00:\n\ + ldr r0, _080BFD18 @ =gStringVar1\n\ + ldr r1, _080BFD1C @ =gOtherText_Dad\n\ + bl StringCopy\n\ + adds r0, r4, 0\n\ + movs r1, 0x2\n\ + bl VarSet\n\ +_080BFD10:\n\ + pop {r4}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080BFD18: .4byte gStringVar1\n\ +_080BFD1C: .4byte gOtherText_Dad\n\ +.syntax divided\n"); +} +#endif + +void sub_80BFD20(void) +{ + VarSet(VAR_0x40BC, 0); + RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); +} + +extern u8 ewram[]; +#define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(ewram + 0x7000)) +extern u8 gUnknown_020387E4; + +struct ewramStruct_0207000 { + struct SaveTVStruct tvshows[4]; +}; + +void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3); + +void sub_80C04A0(void); +void sub_80C01D4(void); +void sub_80C0408(void); + +void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) +{ + u8 i; + struct ewramStruct_0207000 *ewramTVShows; + for (i=0; i<4; i++) { + memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], sizeof(struct SaveTVStruct)); + } + ewramTVShows = &gUnknown_02007000; + switch (arg2) { + case 0: + sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 1: + sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + break; + case 2: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); + break; + case 3: + sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); + break; + } + sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80C04A0(); + sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80C01D4(); + sub_80C0408(); +} + +extern u8 gUnknown_03000720; +extern s8 gUnknown_03000722; +s8 sub_80C019C(TVShow tvShows[]); +bool8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx); +u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); +u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); +u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); + +void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) +{ + u8 i, j; + struct SaveTVStruct ** argslist[4]; + argslist[0] = &arg0; + argslist[1] = &arg1; + argslist[2] = &arg2; + argslist[3] = &arg3; + gUnknown_03000720 = GetLinkPlayerCount(); + while (1) { + for (i=0; i<gUnknown_03000720; i++) { + if (i == 0) + gUnknown_020387E4 = i; + gUnknown_03000722 = sub_80C019C(argslist[i][0]->shows); + 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) { + break; + } + } + if (j == gUnknown_03000720 - 1) { + sub_80BF55C(argslist[i][0]->shows, gUnknown_03000722); + } + } + } + } +} + +#ifdef NONMATCHING +bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { + u8 value; + u8 switchval; + struct SaveTVStruct *tv1; + struct SaveTVStruct *tv2; + tv1 = *arg1; + tv2 = *arg2; + value = FALSE; + switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00); + switch (switchval) { + case 2: + value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 3: + value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + case 4: + value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + break; + } + if (value == TRUE) { + sub_80BF55C(tv2->shows, gUnknown_03000722); + return TRUE; + } else { + return FALSE; + } +} +#else +__attribute__((naked)) +bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { + asm(".syntax unified\n\ + push {r4-r7,lr}\n\ + sub sp, 0x4\n\ + lsls r2, 24\n\ + lsrs r7, r2, 24\n\ + ldr r4, [r0]\n\ + ldr r6, [r1]\n\ + movs r5, 0\n\ + ldr r2, _080BFFA4 @ =gUnknown_03000722\n\ + movs r1, 0\n\ + ldrsb r1, [r2, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r6 @ this is the only mimsmatch\n\ + ldrb r0, [r0]\n\ + str r2, [sp]\n\ + bl sub_80BFB54\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + adds r1, r0, 0\n\ + ldr r2, [sp]\n\ + cmp r0, 0x3\n\ + beq _080BFFD8\n\ + cmp r0, 0x3\n\ + bgt _080BFFA8\n\ + cmp r0, 0x2\n\ + beq _080BFFAE\n\ + b _080C0026\n\ + .align 2, 0\n\ +_080BFFA4: .4byte gUnknown_03000722\n\ +_080BFFA8:\n\ + cmp r1, 0x4\n\ + beq _080C0000\n\ + b _080C0026\n\ +_080BFFAE:\n\ + ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C004C\n\ + b _080C0022\n\ + .align 2, 0\n\ +_080BFFD4: .4byte gUnknown_03005D38\n\ +_080BFFD8:\n\ + ldr r0, _080BFFFC @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C00B4\n\ + b _080C0022\n\ + .align 2, 0\n\ +_080BFFFC: .4byte gUnknown_03005D38\n\ +_080C0000:\n\ + ldr r0, _080C0030 @ =gUnknown_03005D38\n\ + movs r1, 0\n\ + ldrsb r1, [r0, r1]\n\ + lsls r0, r1, 3\n\ + adds r0, r1\n\ + lsls r0, 2\n\ + adds r0, r4, r0\n\ + ldrb r2, [r2]\n\ + lsls r2, 24\n\ + asrs r2, 24\n\ + lsls r1, r2, 3\n\ + adds r1, r2\n\ + lsls r1, 2\n\ + adds r1, r6, r1\n\ + adds r2, r7, 0\n\ + bl sub_80C0134\n\ +_080C0022:\n\ + lsls r0, 24\n\ + lsrs r5, r0, 24\n\ +_080C0026:\n\ + cmp r5, 0x1\n\ + beq _080C0034\n\ + movs r0, 0\n\ + b _080C0040\n\ + .align 2, 0\n\ +_080C0030: .4byte gUnknown_03005D38\n\ +_080C0034:\n\ + ldr r0, _080C0048 @ =gUnknown_03000722\n\ + ldrb r1, [r0]\n\ + adds r0, r6, 0\n\ + bl sub_80BF55C\n\ + movs r0, 0x1\n\ +_080C0040:\n\ + add sp, 0x4\n\ + pop {r4-r7}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080C0048: .4byte gUnknown_03000722\n\ +.syntax divided\n"); +} +#endif + +u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) { + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + return FALSE; + } + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + return TRUE; +} + +u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) { + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) { + return FALSE; + } + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + return FALSE; + } + tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo; + tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi; + tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF; + tv2->common.srcTrainerId2Hi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + return TRUE; +} + +u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) { + u32 linkTrainerId = GetLinkPlayerTrainerId(idx); + if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) { + return FALSE; + } + tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo; + tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi; + tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF; + tv2->common.srcTrainerIdHi = linkTrainerId >> 8; + *tv1 = *tv2; + tv1->common.var01 = 1; + tv1->common.var16[0] = 1; + return TRUE; +} + +s8 sub_80C019C(TVShow tvShows[]) { + u8 i; + for (i=0; i<24; i++) { + if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) { + return i; + } + } + return -1; +} + +void sub_80C03A8(u8 showidx); +void sub_80C03C8(u16 species, u8 showidx); + +#ifdef NONMATCHING +void sub_80C01D4(void) { + u8 i; + for (i=0; i<24; i++) { + switch (gSaveBlock1.tvShows.shows[i].common.var00) { + case 0: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); + break; + case TVSHOW_RECENT_HAPPENINGS: + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); + break; + case TVSHOW_SMART_SHOPPER: + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); + sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); + break; + case TVSHOW_MASS_OUTBREAK: + break; + default: + sub_80C03A8(i); + } + } +} +#else +__attribute__((naked)) +void sub_80C01D4(void) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + movs r6, 0\n\ +_080C01D8:\n\ + ldr r0, _080C01F8 @ =gSaveBlock1\n\ + lsls r2, r6, 3\n\ + adds r1, r2, r6\n\ + lsls r1, 2\n\ + adds r1, r0\n\ + ldr r0, _080C01FC @ =0x00002738\n\ + adds r1, r0\n\ + ldrb r0, [r1]\n\ + cmp r0, 0x29\n\ + bls _080C01EE\n\ + b _default\n\ +_080C01EE:\n\ + lsls r0, 2\n\ + ldr r1, _080C0200 @ =_080C0204\n\ + adds r0, r1\n\ + ldr r0, [r0]\n\ + mov pc, r0\n\ + .align 2, 0\n\ +_080C01F8: .4byte gSaveBlock1\n\ +_080C01FC: .4byte 0x00002738\n\ +_080C0200: .4byte _080C0204\n\ + .align 2, 0\n\ +_080C0204:\n\ + .4byte _break\n\ + .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\ + .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\ + .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\ + .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\ + .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\ + .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\ + .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\ + .4byte _break @ TVSHOW_SMART_SHOPPER\n\ + .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\ + .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\ + .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _default\n\ + .4byte _break @ TVSHOW_MASS_OUTBREAK\n\ +_fanclubLetter:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02B8: .4byte gSaveBlock1 + 0x2738\n\ +_fanclubOpinions:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02C8: .4byte gSaveBlock1 + 0x2738\n\ +_showtype4:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x6]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02D8: .4byte gSaveBlock1 + 0x2738\n\ +_nameRater:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x2]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x1C]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C02F4: .4byte gSaveBlock1 + 0x2738\n\ +_bravoTrainerContest:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x2]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0304: .4byte gSaveBlock1 + 0x2738\n\ +_bravoTrainerTower:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xA]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x14]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0320: .4byte gSaveBlock1 + 0x2738\n\ +_pokemonTodayS:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x10]\n\ + b _checkSpecies1 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C0330: .4byte gSaveBlock1 + 0x2738\n\ +_pokemonTodayF:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0xC]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0xE]\n\ + b _checkSpecies2 @ sub_80C03C8(r0, i)\n\ + .align 2, 0\n\ +_080C034C: .4byte gSaveBlock1 + 0x2738\n\ +_fishing:\n\ + adds r0, r2, r6\n\ + lsls r0, 2\n\ + ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\ + adds r0, r1\n\ + ldrh r0, [r0, 0x4]\n\ +_checkSpecies1:\n\ + lsls r1, r6, 24\n\ + lsrs r1, 24\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ +_080C0364: .4byte gSaveBlock1 + 0x2738\n\ +_worldOfMasters:\n\ + adds r4, r2, r6\n\ + lsls r4, 2\n\ + ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\ + adds r4, r0\n\ + ldrh r0, [r4, 0x8]\n\ + lsls r5, r6, 24\n\ + lsrs r5, 24\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + ldrh r0, [r4, 0x4]\n\ +_checkSpecies2:\n\ + adds r1, r5, 0\n\ + bl sub_80C03C8\n\ + b _break\n\ + .align 2, 0\n\ +_080C0388: .4byte gSaveBlock1 + 0x2738\n\ +_default:\n\ + lsls r0, r6, 24\n\ + lsrs r0, 24\n\ + bl sub_80C03A8\n\ +_break:\n\ + adds r0, r6, 0x1\n\ + lsls r0, 16\n\ + lsrs r6, r0, 16\n\ + cmp r6, 0x17\n\ + bhi _080C03A0\n\ + b _080C01D8\n\ +_080C03A0:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ +.syntax divided\n"); +} +#endif + +void sub_80C03A8(u8 showidx) { + gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; +} + +void sub_80C03C8(u16 species, u8 showidx) { + if (sub_8090D90(SpeciesToNationalPokedexNum(species), 0) == 0) { + gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + } +} + +#ifdef NONMATCHING +void sub_80C0408(void) { + u16 i; + if (FlagGet(SYS_GAME_CLEAR) != 1) { + for (i=0; i<24; i++) { + if (gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { + gSaveBlock1.tvShows.shows[i].common.var01 = 0; + } + } + } +} +#else +__attribute__((naked)) +void sub_80C0408(void) { + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + ldr r0, _080C044C @ =0x00000804\n\ + bl FlagGet\n\ + lsls r0, 24\n\ + lsrs r0, 24\n\ + cmp r0, 0x1\n\ + beq _080C0444\n\ + movs r2, 0\n\ + ldr r6, _080C0450 @ =gSaveBlock1\n\ + ldr r4, _080C0454 @ =0x00002739\n\ + movs r3, 0\n\ + ldr r5, _080C0458 @ =0x00002738\n\ +_080C0422:\n\ + lsls r0, r2, 3\n\ + adds r0, r2\n\ + lsls r0, 2\n\ + adds r1, r0, r6\n\ + adds r0, r1, r5\n\ + ldrb r0, [r0]\n\ + cmp r0, 0x7\n\ + beq _080C0436\n\ + cmp r0, 0x29\n\ + bne _080C043A\n\ +_080C0436:\n\ + adds r0, r1, r4\n\ + strb r3, [r0]\n\ +_080C043A:\n\ + adds r0, r2, 0x1\n\ + lsls r0, 16\n\ + lsrs r2, r0, 16\n\ + cmp r2, 0x17\n\ + bls _080C0422\n\ +_080C0444:\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_080C044C: .4byte 0x00000804\n\ +_080C0450: .4byte gSaveBlock1\n\ +_080C0454: .4byte 0x00002739\n\ +_080C0458: .4byte 0x00002738\n\ +.syntax divided\n"); +} +#endif + +void sub_80C045C(void) { + u8 i; + for (i=0; i<5; i++) { + if (sub_80BFB54(gSaveBlock1.tvShows.shows[i].common.var00) == 2) { + gSaveBlock1.tvShows.shows[i].common.var01 = 0; + } + } +} + +asm(".section .dotvshow\n"); + +void DoTVShowPokemonFanClubLetter(void); +void DoTVShowRecentHappenings(void); +void DoTVShowPokemonFanClubOpinions(void); +void nullsub_22(void); +void DoTVShowPokemonNewsMassOutbreak(void); +void DoTVShowBravoTrainerPokemonProfile(void); +void DoTVShowBravoTrainerBattleTowerProfile(void); +void DoTVShowPokemonTodaySuccessfulCapture(void); +void DoTVShowTodaysSmartShopper(void); +void DoTVShowTheNameRaterShow(void); +void DoTVShowPokemonTodayFailedCapture(void); +void DoTVShowPokemonAngler(void); +void DoTVShowTheWorldOfMasters(void); + +bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2); + +void sub_80C06BC(int *arg0, int *arg1) { + struct UnknownSaveStruct2ABC *str0; + struct UnknownSaveStruct2ABC *str1; + str0 = (void *)arg0[0]; + str1 = (void *)arg1[0]; + str1 += gUnknown_03000722; + sub_80C06E8(str0, str1, gUnknown_03005D38.var0); +} + +bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2) { + u8 i; + if (arg1->val0 == 0) { + return FALSE; + } + for (i=0; i<16; i++) { + if (arg0[i].val0 == arg1->val0) { + return FALSE; + } + } + arg0[arg2].val0 = arg1->val0; + arg0[arg2].val1 = 1; + arg0[arg2].val2 = arg1->val2; + return TRUE; +} + +s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) { + if (arg0[arg1].val0 == 0) { + return -1; + } + return arg1; +} + +void sub_80C0750(void) { + u8 i; + for (i=0; i<16; i++) { + if (gSaveBlock1.unknown_2ABC[i].val0 > 3) { + sub_80BEC10(i); + } + } + sub_80BEC40(); +} + +void sub_80C0788(void) { + u8 i; + if (FlagGet(SYS_GAME_CLEAR) != 1) { + for (i=0; i<16; i++) { + gSaveBlock1.unknown_2ABC[i].val1 = 0; + } + } +} + +void DoTVShow(void) { + if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { + switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { + case TVSHOW_FAN_CLUB_LETTER: + DoTVShowPokemonFanClubLetter(); + break; + case TVSHOW_RECENT_HAPPENINGS: + DoTVShowRecentHappenings(); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + DoTVShowPokemonFanClubOpinions(); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + nullsub_22(); + break; + case TVSHOW_MASS_OUTBREAK: + DoTVShowPokemonNewsMassOutbreak(); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + DoTVShowBravoTrainerPokemonProfile(); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + DoTVShowBravoTrainerBattleTowerProfile(); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + DoTVShowPokemonTodaySuccessfulCapture(); + break; + case TVSHOW_SMART_SHOPPER: + DoTVShowTodaysSmartShopper(); + break; + case TVSHOW_NAME_RATER_SHOW: + DoTVShowTheNameRaterShow(); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + DoTVShowPokemonTodayFailedCapture(); + break; + case TVSHOW_FISHING_ADVICE: + DoTVShowPokemonAngler(); + break; + case TVSHOW_WORLD_OF_MASTERS: + DoTVShowTheWorldOfMasters(); + break; + } + } +} + +void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) { + StringCopy(dest, src); + if (language < LANGUAGE_ENGLISH) { + ConvertInternationalString(dest, LANGUAGE_JAPANESE); + } +} + asm(".section .text_c"); +void TVShowConvertInternationalString(u8 *, u8 *, u8); + +void TakeTVShowInSearchOfTrainersOffTheAir(void); + +void DoTVShowTheNameRaterShow(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1; + break; + case 1: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + if (tvShow->nameRaterShow.random == 0) { + gUnknown_020387E8 = 9; + } else if (tvShow->nameRaterShow.random == 1) { + gUnknown_020387E8 = 10; + } else if (tvShow->nameRaterShow.random == 2) { + gUnknown_020387E8 = 11; + } + break; + case 9: + case 10: + case 11: + sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + gUnknown_020387E8 = 12; + break; + case 13: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 14; + break; + case 14: + sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language); + sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + gUnknown_020387E8 = 18; + break; + case 15: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 16; + break; + case 16: + sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow); + gUnknown_020387E8 = 17; + break; + case 17: + sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow); + TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage); + sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow); + StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]); + gUnknown_020387E8 = 18; + break; + case 12: + switchval = 18; + gUnknown_020387E8 = 18; + case 18: + TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage); + TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language); + TVShowDone(); + break; + } + ShowFieldMessage(gTVNameRaterTextGroup[switchval]); +} + +void DoTVShowPokemonTodaySuccessfulCapture(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 1; + } + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name); + sub_80BF088(2, tvShow->pokemonToday.var12); + if (tvShow->pokemonToday.var12 < 4) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 6; + break; + case 4: + gUnknown_020387E8 = 6; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 7: + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + sub_80BF638(2, tvShow->pokemonToday.species); + gUnknown_020387E8 = 11; + break; + case 9: + case 10: + StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2); + gUnknown_020387E8 = 11; + break; + case 11: + TVShowDone(); + break; + } + ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]); +} + +void DoTVShowPokemonTodayFailedCapture(void) { + TVShow *tvShow; + u8 switchval; + u16 rval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]); + gUnknown_020387E8 = 1; + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]); + if (tvShow->pokemonTodayFailed.var11 == 1) { + gUnknown_020387E8 = 3; + } else { + gUnknown_020387E8 = 2; + } + break; + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + sub_80BF088(1, tvShow->pokemonTodayFailed.var10); + rval = (Random() % 3); + if (rval == 0) { + gUnknown_020387E8 = 5; + } else { + gUnknown_020387E8 = 4; + } + break; + case 4: + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language); + gUnknown_020387E8 = 6; + break; + case 6: + TVShowDone(); + break; + } + ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]); +} + +void DoTVShowPokemonFanClubLetter(void) { + TVShow *tvShow; + u8 switchval; + u16 rval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]); + gUnknown_020387E8 = 50; + break; + case 1: + rval = (Random() % 4) + 1; + if (rval == 1) { + gUnknown_020387E8 = 2; + } else { + gUnknown_020387E8 = rval + 2; + } + break; + case 2: + gUnknown_020387E8 = 51; + break; + case 3: + gUnknown_020387E8 += (Random() % 3) + 1; + break; + case 4: + case 5: + case 6: + sub_80BF79C(tvShow); + gUnknown_020387E8 = 7; + break; + case 7: + rval = (Random() % 0x1f) + 0x46; + sub_80BF088(2, rval); + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + case 51: + ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 3; + return; + } + ShowFieldMessage(gTVFanClubTextGroup[switchval]); +} + +void DoTVShowRecentHappenings(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language); + sub_80BF79C(tvShow); + gUnknown_020387E8 = 50; + break; + case 1: + gUnknown_020387E8 += 1 + (Random() % 3); + break; + case 2: + case 3: + case 4: + gUnknown_020387E8 = 5; + break; + case 5: + TVShowDone(); + break; + case 50: + ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2); + ShowFieldMessage(gStringVar4); + gUnknown_020387E8 = 1; + return; + } + ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]); +} + +void DoTVShowPokemonFanClubOpinions(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E); + gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1; + break; + case 1: + case 2: + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]); + gUnknown_020387E8 = 4; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language); + sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]); +} + +void nullsub_22(void) { + +} + void DoTVShowPokemonNewsMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0); @@ -300,14 +2909,122 @@ void DoTVShowPokemonNewsMassOutbreak(void) ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]); } -asm(".section .text_d"); +void DoTVShowInSearchOfTrainers(void) { + u8 switchval; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); + if (gSaveBlock1.gabbyAndTyData.val9 > 1) { + gUnknown_020387E8 = 1; + } else { + gUnknown_020387E8 = 2; + } + break; + case 1: + gUnknown_020387E8 = 2; + break; + case 2: + if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) { + gUnknown_020387E8 = 4; + } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) { + gUnknown_020387E8 = 5; + } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) { + gUnknown_020387E8 = 6; + } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) { + gUnknown_020387E8 = 7; + } else { + gUnknown_020387E8 = 3; + } + break; + case 3: + StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gUnknown_020387E8 = 8; + break; + case 4: + case 5: + case 6: + case 7: + gUnknown_020387E8 = 8; + break; + case 8: + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); + StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); + StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); + gScriptResult = 1; + gUnknown_020387E8 = 0;; + TakeTVShowInSearchOfTrainersOffTheAir(); + break; + } + ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]); +} + +void DoTVShowPokemonAngler(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) { + gUnknown_020387E8 = 0; + } else { + gUnknown_020387E8 = 1; + } + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var03); + TVShowDone(); + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]); + sub_80BF088(2, tvShow->pokemonAngler.var02); + TVShowDone(); + break; + } + ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]); +} + +void DoTVShowTheWorldOfMasters(void) { + TVShow *tvShow; + u8 switchval; + tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch (switchval) { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80BF088(1, tvShow->worldOfMasters.var06); + sub_80BF088(2, tvShow->worldOfMasters.var02); + gUnknown_020387E8 = 1; + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName, + tvShow->worldOfMasters.language); + sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0); + StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]); +} void TVShowDone(void) { gScriptResult = 1; gUnknown_020387E8 = 0; - gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; + gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 = 0; } void sub_80C2014(void) |