diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-06-12 19:10:28 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-06-12 19:10:28 -0400 |
commit | 13a7274a1649a8cb8f3bc165ee1eb403c12430dc (patch) | |
tree | bf08a44b86a3e5b5ae3200470f16843fa1ce2358 | |
parent | da3eaf350d8ff4b61ba919a0a987ab2468525b9d (diff) | |
parent | e09e1da6c252e17cf6db429ad142b05dbf156548 (diff) |
merge
-rw-r--r-- | asm/tv.s | 1822 | ||||
-rw-r--r--[-rwxr-xr-x] | include/asm.inc.h | 2 | ||||
-rw-r--r-- | include/battle.h | 25 | ||||
-rw-r--r--[-rwxr-xr-x] | include/field_effect_helpers.h | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | include/field_map_obj.h | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | include/field_player_avatar.h | 0 | ||||
-rw-r--r-- | include/fieldmap.h | 1 | ||||
-rw-r--r-- | include/global.fieldmap.h | 33 | ||||
-rw-r--r-- | include/global.h | 230 | ||||
-rw-r--r--[-rwxr-xr-x] | include/trainer_see.h | 0 | ||||
-rw-r--r-- | ld_script.txt | 6 | ||||
-rw-r--r-- | src/battle_2.c | 25 | ||||
-rw-r--r-- | src/easy_chat.c | 6 | ||||
-rw-r--r-- | src/fieldmap.c | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | src/tv.c | 1114 |
15 files changed, 1096 insertions, 2176 deletions
diff --git a/asm/tv.s b/asm/tv.s deleted file mode 100644 index ec5296064..000000000 --- a/asm/tv.s +++ /dev/null @@ -1,1822 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/misc_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start special_0x44 -special_0x44: @ 80BD800 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - movs r4, 0x5 - ldr r1, _080BD874 @ =gSaveBlock1 - ldr r2, _080BD878 @ =0x000027ec - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0 - beq _080BD834 - adds r2, r1, 0 - ldr r1, _080BD87C @ =0x00002738 -_080BD81A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x17 - bhi _080BD834 - lsls r0, r4, 3 - adds r0, r4 - lsls r0, 2 - adds r0, r2 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0 - bne _080BD81A -_080BD834: - bl Random - lsls r0, 16 - lsrs r0, 16 - adds r1, r4, 0 - bl __modsi3 - lsls r0, 24 - lsrs r4, r0, 24 - mov r8, r4 - ldr r7, _080BD874 @ =gSaveBlock1 - ldr r0, _080BD87C @ =0x00002738 - adds r0, r7 - mov r9, r0 -_080BD850: - lsls r0, r4, 3 - adds r0, r4 - lsls r6, r0, 2 - adds r5, r6, r7 - ldr r1, _080BD87C @ =0x00002738 - adds r0, r5, r1 - ldrb r0, [r0] - bl sub_80BFB54 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - beq _080BD884 - ldr r2, _080BD880 @ =0x00002739 - adds r0, r5, r2 - ldrb r0, [r0] - b _080BD890 - .align 2, 0 -_080BD874: .4byte gSaveBlock1 -_080BD878: .4byte 0x000027ec -_080BD87C: .4byte 0x00002738 -_080BD880: .4byte 0x00002739 -_080BD884: - mov r0, r9 - adds r1, r6, r0 - ldrh r0, [r1, 0x16] - cmp r0, 0 - bne _080BD898 - ldrb r0, [r1, 0x1] -_080BD890: - cmp r0, 0x1 - bne _080BD898 - adds r0, r4, 0 - b _080BD8AC -_080BD898: - cmp r4, 0 - bne _080BD8A0 - movs r4, 0x17 - b _080BD8A6 -_080BD8A0: - subs r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_080BD8A6: - cmp r4, r8 - bne _080BD850 - movs r0, 0xFF -_080BD8AC: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end special_0x44 - - thumb_func_start sub_80BD8B8 -sub_80BD8B8: @ 80BD8B8 - push {lr} - bl special_0x44 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - bne _080BD8CA - movs r0, 0xFF - b _080BD902 -_080BD8CA: - ldr r2, _080BD8F4 @ =gSaveBlock1 - ldr r3, _080BD8F8 @ =0x00002afc - adds r0, r2, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _080BD900 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r2, _080BD8FC @ =0x00002738 - adds r0, r2 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080BD900 - bl sub_80BDA30 - lsls r0, 24 - lsrs r0, 24 - b _080BD902 - .align 2, 0 -_080BD8F4: .4byte gSaveBlock1 -_080BD8F8: .4byte 0x00002afc -_080BD8FC: .4byte 0x00002738 -_080BD900: - adds r0, r1, 0 -_080BD902: - pop {r1} - bx r1 - thumb_func_end sub_80BD8B8 - - thumb_func_start UpdateTVScreensOnMap -UpdateTVScreensOnMap: @ 80BD908 - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldr r0, _080BD938 @ =0x00000831 - bl FlagSet - bl CheckForBigMovieOrEmergencyNewsOnTV - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BD92C - cmp r0, 0x2 - beq _080BD97E - ldr r0, _080BD93C @ =gSaveBlock1 - ldrh r0, [r0, 0x4] - cmp r0, 0xD - bne _080BD940 -_080BD92C: - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl SetTVMetatilesOnMap - b _080BD97E - .align 2, 0 -_080BD938: .4byte 0x00000831 -_080BD93C: .4byte gSaveBlock1 -_080BD940: - ldr r0, _080BD984 @ =0x00000832 - bl FlagGet - lsls r0, 24 - cmp r0, 0 - beq _080BD97E - bl sub_80BD8B8 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080BD96E - bl sub_80BECA0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _080BD96E - bl IsTVShowInSearchOfTrainersAiring - lsls r0, 24 - cmp r0, 0 - beq _080BD97E -_080BD96E: - ldr r0, _080BD988 @ =0x00000831 - bl FlagReset - adds r0, r4, 0 - adds r1, r5, 0 - movs r2, 0x3 - bl SetTVMetatilesOnMap -_080BD97E: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BD984: .4byte 0x00000832 -_080BD988: .4byte 0x00000831 - thumb_func_end UpdateTVScreensOnMap - - thumb_func_start SetTVMetatilesOnMap -SetTVMetatilesOnMap: @ 80BD98C - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - mov r9, r0 - mov r10, r1 - lsls r2, 16 - lsrs r2, 16 - movs r5, 0 - cmp r5, r10 - bge _080BD9E0 - movs r1, 0xC0 - lsls r1, 4 - adds r0, r1, 0 - mov r8, r2 - mov r1, r8 - orrs r1, r0 - mov r8, r1 -_080BD9B2: - movs r4, 0 - adds r7, r5, 0x1 - cmp r4, r9 - bge _080BD9DA - mov r0, r8 - lsls r6, r0, 16 -_080BD9BE: - adds r0, r4, 0 - adds r1, r5, 0 - bl MapGridGetMetatileBehaviorAt - cmp r0, 0x86 - bne _080BD9D4 - adds r0, r4, 0 - adds r1, r5, 0 - lsrs r2, r6, 16 - bl MapGridSetMetatileIdAt -_080BD9D4: - adds r4, 0x1 - cmp r4, r9 - blt _080BD9BE -_080BD9DA: - adds r5, r7, 0 - cmp r5, r10 - blt _080BD9B2 -_080BD9E0: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end SetTVMetatilesOnMap - - thumb_func_start TurnOffTVScreen -TurnOffTVScreen: @ 80BD9F0 - push {lr} - ldr r1, _080BDA08 @ =gUnknown_03004870 - ldr r0, [r1] - ldr r1, [r1, 0x4] - movs r2, 0x2 - bl SetTVMetatilesOnMap - bl DrawWholeMapView - pop {r0} - bx r0 - .align 2, 0 -_080BDA08: .4byte gUnknown_03004870 - thumb_func_end TurnOffTVScreen - - thumb_func_start sub_80BDA0C -sub_80BDA0C: @ 80BDA0C - ldr r2, _080BDA24 @ =gSaveBlock1 - ldr r0, _080BDA28 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldr r1, _080BDA2C @ =0x00002738 - adds r0, r1 - ldrb r0, [r0] - bx lr - .align 2, 0 -_080BDA24: .4byte gSaveBlock1 -_080BDA28: .4byte gSpecialVar_0x8004 -_080BDA2C: .4byte 0x00002738 - thumb_func_end sub_80BDA0C - - thumb_func_start sub_80BDA30 -sub_80BDA30: @ 80BDA30 - push {r4,lr} - movs r2, 0 - ldr r3, _080BDA5C @ =gSaveBlock1 -_080BDA36: - lsls r0, r2, 3 - adds r0, r2 - lsls r0, 2 - adds r1, r0, r3 - ldr r4, _080BDA60 @ =0x00002738 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0 - beq _080BDA64 - cmp r0, 0x29 - beq _080BDA64 - adds r4, 0x1 - adds r0, r1, r4 - ldrb r0, [r0] - cmp r0, 0x1 - bne _080BDA64 - adds r0, r2, 0 - b _080BDA70 - .align 2, 0 -_080BDA5C: .4byte gSaveBlock1 -_080BDA60: .4byte 0x00002738 -_080BDA64: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x17 - bls _080BDA36 - movs r0, 0xFF -_080BDA70: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80BDA30 - - thumb_func_start special_0x4a -special_0x4a: @ 80BDA78 - push {lr} - ldr r2, _080BDAA4 @ =gSpecialVar_0x8004 - ldrh r1, [r2] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BDAA8 @ =gSaveBlock1 + 0x2738 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x29 - bne _080BDAAC - movs r3, 0xF1 - lsls r3, 2 - adds r0, r1, r3 - ldrh r0, [r0] - cmp r0, 0 - beq _080BDAAC - bl sub_80BDA30 - lsls r0, 24 - lsrs r0, 24 - b _080BDAAE - .align 2, 0 -_080BDAA4: .4byte gSpecialVar_0x8004 -_080BDAA8: .4byte gSaveBlock1 + 0x2738 -_080BDAAC: - ldrb r0, [r2] -_080BDAAE: - pop {r1} - bx r1 - thumb_func_end special_0x4a - - thumb_func_start ResetGabbyAndTy -ResetGabbyAndTy: @ 80BDAB4 - push {r4,lr} - ldr r2, _080BDAF8 @ =gSaveBlock1 - ldr r1, _080BDAFC @ =0x00002b10 - adds r0, r2, r1 - movs r3, 0 - movs r1, 0 - strh r1, [r0] - ldr r4, _080BDB00 @ =0x00002b12 - adds r0, r2, r4 - strh r1, [r0] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldr r0, _080BDB04 @ =0x00002b16 - adds r1, r2, r0 - ldr r0, _080BDB08 @ =0x0000ffff - strh r0, [r1] - adds r4, 0x6 - adds r1, r2, r4 - movs r0, 0 - strb r0, [r1] - ldr r0, _080BDB0C @ =0x00002b1b - adds r1, r2, r0 - movs r0, 0 - strb r0, [r1] - ldr r1, _080BDB10 @ =0x00002b18 - adds r0, r2, r1 - strb r3, [r0] - subs r4, 0x1 - adds r2, r4 - strb r3, [r2] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BDAF8: .4byte gSaveBlock1 -_080BDAFC: .4byte 0x00002b10 -_080BDB00: .4byte 0x00002b12 -_080BDB04: .4byte 0x00002b16 -_080BDB08: .4byte 0x0000ffff -_080BDB0C: .4byte 0x00002b1b -_080BDB10: .4byte 0x00002b18 - thumb_func_end ResetGabbyAndTy - - thumb_func_start GabbyAndTyBeforeInterview -GabbyAndTyBeforeInterview: @ 80BDB14 - push {r4,r5,lr} - ldr r2, _080BDB68 @ =gSaveBlock1 - ldr r3, _080BDB6C @ =gUnknown_030042E0 - ldrh r1, [r3, 0x6] - ldr r4, _080BDB70 @ =0x00002b10 - adds r0, r2, r4 - strh r1, [r0] - ldrh r1, [r3, 0x26] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldrh r1, [r3, 0x22] - adds r4, 0x2 - adds r0, r2, r4 - strh r1, [r0] - ldr r0, _080BDB74 @ =0x00002b19 - adds r4, r2, r0 - ldrb r1, [r4] - adds r0, r1, 0 - adds r5, r2, 0 - cmp r0, 0xFF - beq _080BDB44 - adds r0, r1, 0x1 - strb r0, [r4] -_080BDB44: - ldrb r0, [r3, 0x5] - lsls r0, 31 - ldr r1, _080BDB78 @ =0x00002b1a - adds r4, r5, r1 - lsrs r0, 31 - ldrb r1, [r4] - movs r2, 0x2 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r4] - ldrb r0, [r3] - cmp r0, 0 - beq _080BDB7C - movs r0, 0x2 - orrs r2, r0 - b _080BDB82 - .align 2, 0 -_080BDB68: .4byte gSaveBlock1 -_080BDB6C: .4byte gUnknown_030042E0 -_080BDB70: .4byte 0x00002b10 -_080BDB74: .4byte 0x00002b19 -_080BDB78: .4byte 0x00002b1a -_080BDB7C: - movs r0, 0x3 - negs r0, r0 - ands r2, r0 -_080BDB82: - strb r2, [r4] - ldrb r0, [r3, 0x3] - cmp r0, 0 - beq _080BDB9C - ldr r4, _080BDB98 @ =0x00002b1a - adds r0, r5, r4 - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _080BDBAA - .align 2, 0 -_080BDB98: .4byte 0x00002b1a -_080BDB9C: - ldr r0, _080BDBDC @ =0x00002b1a - adds r2, r5, r0 - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] -_080BDBAA: - ldrb r1, [r3, 0x5] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080BDBE0 - movs r1, 0 - adds r0, r3, 0 - adds r0, 0x36 - ldrb r0, [r0] - cmp r0, 0 - bne _080BDBE0 -_080BDBC0: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xA - bhi _080BDBEC - adds r0, r3, 0 - adds r0, 0x36 - adds r0, r1, r0 - ldrb r0, [r0] - cmp r0, 0 - beq _080BDBC0 - ldr r4, _080BDBDC @ =0x00002b1a - adds r0, r5, r4 - b _080BDBE4 - .align 2, 0 -_080BDBDC: .4byte 0x00002b1a -_080BDBE0: - ldr r1, _080BDC08 @ =0x00002b1a - adds r0, r5, r1 -_080BDBE4: - ldrb r1, [r0] - movs r2, 0x8 - orrs r1, r2 - strb r1, [r0] -_080BDBEC: - bl TakeTVShowInSearchOfTrainersOffTheAir - ldr r0, _080BDC0C @ =gSaveBlock1 - ldr r4, _080BDC10 @ =0x00002b14 - adds r0, r4 - ldrh r0, [r0] - cmp r0, 0 - bne _080BDC02 - movs r0, 0x1 - bl FlagSet -_080BDC02: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BDC08: .4byte 0x00002b1a -_080BDC0C: .4byte gSaveBlock1 -_080BDC10: .4byte 0x00002b14 - thumb_func_end GabbyAndTyBeforeInterview - - thumb_func_start sub_80BDC14 -sub_80BDC14: @ 80BDC14 - push {r4-r6,lr} - ldr r4, _080BDC70 @ =gSaveBlock1 - ldr r0, _080BDC74 @ =0x00002b1a - adds r6, r4, r0 - ldrb r3, [r6] - lsls r1, r3, 31 - adds r0, 0x1 - adds r5, r4, r0 - lsrs r1, 31 - ldrb r2, [r5] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - movs r1, 0x2 - ands r1, r3 - movs r2, 0x3 - negs r2, r2 - ands r0, r2 - orrs r0, r1 - movs r1, 0x4 - ands r1, r3 - subs r2, 0x2 - ands r0, r2 - orrs r0, r1 - movs r1, 0x8 - ands r1, r3 - subs r2, 0x4 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - movs r0, 0x10 - orrs r3, r0 - strb r3, [r6] - ldr r0, _080BDC78 @ =gMapHeader - ldrb r0, [r0, 0x14] - ldr r1, _080BDC7C @ =0x00002b18 - adds r4, r1 - strb r0, [r4] - movs r0, 0x6 - bl IncrementGameStat - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BDC70: .4byte gSaveBlock1 -_080BDC74: .4byte 0x00002b1a -_080BDC78: .4byte gMapHeader -_080BDC7C: .4byte 0x00002b18 - thumb_func_end sub_80BDC14 - - thumb_func_start TakeTVShowInSearchOfTrainersOffTheAir -TakeTVShowInSearchOfTrainersOffTheAir: @ 80BDC80 - ldr r0, _080BDC94 @ =gSaveBlock1 - ldr r1, _080BDC98 @ =0x00002b1a - adds r0, r1 - ldrb r2, [r0] - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - strb r1, [r0] - bx lr - .align 2, 0 -_080BDC94: .4byte gSaveBlock1 -_080BDC98: .4byte 0x00002b1a - thumb_func_end TakeTVShowInSearchOfTrainersOffTheAir - - thumb_func_start GabbyAndTyGetBattleNum -GabbyAndTyGetBattleNum: @ 80BDC9C - push {lr} - ldr r0, _080BDCBC @ =gSaveBlock1 - ldr r2, _080BDCC0 @ =0x00002b19 - adds r1, r0, r2 - ldrb r0, [r1] - cmp r0, 0x5 - bls _080BDCB8 - ldrb r0, [r1] - movs r1, 0x3 - bl __umodsi3 - adds r0, 0x6 - lsls r0, 24 - lsrs r0, 24 -_080BDCB8: - pop {r1} - bx r1 - .align 2, 0 -_080BDCBC: .4byte gSaveBlock1 -_080BDCC0: .4byte 0x00002b19 - thumb_func_end GabbyAndTyGetBattleNum - - thumb_func_start IsTVShowInSearchOfTrainersAiring -IsTVShowInSearchOfTrainersAiring: @ 80BDCC4 - ldr r0, _080BDCD4 @ =gSaveBlock1 - ldr r1, _080BDCD8 @ =0x00002b1a - adds r0, r1 - ldrb r0, [r0] - lsls r0, 27 - lsrs r0, 31 - bx lr - .align 2, 0 -_080BDCD4: .4byte gSaveBlock1 -_080BDCD8: .4byte 0x00002b1a - thumb_func_end IsTVShowInSearchOfTrainersAiring - - thumb_func_start GabbyAndTyGetLastQuote -GabbyAndTyGetLastQuote: @ 80BDCDC - push {r4,r5,lr} - ldr r0, _080BDD00 @ =gSaveBlock1 - ldr r1, _080BDD04 @ =0x00002b16 - adds r4, r0, r1 - ldrh r0, [r4] - ldr r5, _080BDD08 @ =0x0000ffff - cmp r0, r5 - beq _080BDD10 - ldr r0, _080BDD0C @ =gStringVar1 - ldrh r1, [r4] - bl sub_80EB3FC - ldrh r1, [r4] - adds r0, r5, 0 - orrs r0, r1 - strh r0, [r4] - movs r0, 0x1 - b _080BDD12 - .align 2, 0 -_080BDD00: .4byte gSaveBlock1 -_080BDD04: .4byte 0x00002b16 -_080BDD08: .4byte 0x0000ffff -_080BDD0C: .4byte gStringVar1 -_080BDD10: - movs r0, 0 -_080BDD12: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end GabbyAndTyGetLastQuote - - thumb_func_start sub_80BDD18 -sub_80BDD18: @ 80BDD18 - push {lr} - ldr r0, _080BDD30 @ =gSaveBlock1 - ldr r1, _080BDD34 @ =0x00002b1b - adds r0, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080BDD38 - movs r0, 0x1 - b _080BDD5E - .align 2, 0 -_080BDD30: .4byte gSaveBlock1 -_080BDD34: .4byte 0x00002b1b -_080BDD38: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080BDD44 - movs r0, 0x2 - b _080BDD5E -_080BDD44: - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080BDD50 - movs r0, 0x3 - b _080BDD5E -_080BDD50: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080BDD5C - movs r0, 0 - b _080BDD5E -_080BDD5C: - movs r0, 0x4 -_080BDD5E: - pop {r1} - bx r1 - .align 2, 0 - thumb_func_end sub_80BDD18 - - .section .text_80BE8EC - - thumb_func_start sub_80C04A0 -sub_80C04A0: @ 80C04A0 - push {r4,r5,lr} - movs r3, 0 - movs r2, 0x5 - ldr r5, _080C0508 @ =gSaveBlock1 - ldr r4, _080C050C @ =0x00002738 -_080C04AA: - lsls r0, r2, 24 - asrs r1, r0, 24 - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - adds r0, r5 - adds r0, r4 - ldrb r0, [r0] - cmp r0, 0 - bne _080C04C8 - lsls r0, r3, 24 - movs r2, 0x80 - lsls r2, 17 - adds r0, r2 - lsrs r3, r0, 24 -_080C04C8: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - asrs r0, 24 - cmp r0, 0x17 - ble _080C04AA - movs r2, 0 - lsls r0, r3, 24 - asrs r0, 24 - movs r1, 0x5 - subs r0, r1, r0 - cmp r2, r0 - bge _080C0502 - adds r5, r0, 0 -_080C04E4: - lsls r1, r2, 24 - asrs r4, r1, 24 - movs r0, 0xA0 - lsls r0, 19 - adds r1, r0 - lsrs r1, 24 - ldr r0, _080C0510 @ =gSaveBlock1 + 0x2738 - bl sub_80BF55C - adds r4, 0x1 - lsls r4, 24 - lsrs r2, r4, 24 - asrs r4, 24 - cmp r4, r5 - blt _080C04E4 -_080C0502: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0508: .4byte gSaveBlock1 -_080C050C: .4byte 0x00002738 -_080C0510: .4byte gSaveBlock1 + 0x2738 - thumb_func_end sub_80C04A0 - - thumb_func_start sub_80C0514 -sub_80C0514: @ 80C0514 - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r0 - adds r7, r1, 0 - lsls r2, 24 - lsrs r5, r2, 24 - movs r4, 0 -_080C0524: - lsls r0, r4, 6 - ldr r6, _080C0550 @ =0x02007000 - adds r0, r6 - adds r1, r4, 0 - muls r1, r7 - add r1, r8 - movs r2, 0x40 - bl memcpy - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3 - bls _080C0524 - adds r4, r6, 0 - cmp r5, 0x1 - beq _080C0578 - cmp r5, 0x1 - bgt _080C0554 - cmp r5, 0 - beq _080C055E - b _080C05AC - .align 2, 0 -_080C0550: .4byte 0x02007000 -_080C0554: - cmp r5, 0x2 - beq _080C0584 - cmp r5, 0x3 - beq _080C059C - b _080C05AC -_080C055E: - ldr r0, _080C0574 @ =gSaveBlock1 + 0x2ABC - adds r1, r4, 0 - adds r1, 0x40 - adds r2, r4, 0 - adds r2, 0x80 - adds r3, r4, 0 - adds r3, 0xC0 - bl sub_80C05C4 - b _080C05AC - .align 2, 0 -_080C0574: .4byte gSaveBlock1 + 0x2ABC -_080C0578: - ldr r1, _080C0580 @ =gSaveBlock1 + 0x2ABC - adds r2, r4, 0 - adds r2, 0x80 - b _080C058A - .align 2, 0 -_080C0580: .4byte gSaveBlock1 + 0x2ABC -_080C0584: - adds r1, r4, 0 - adds r1, 0x40 - ldr r2, _080C0598 @ =gSaveBlock1 + 0x2ABC -_080C058A: - adds r3, r4, 0 - adds r3, 0xC0 - adds r0, r4, 0 - bl sub_80C05C4 - b _080C05AC - .align 2, 0 -_080C0598: .4byte gSaveBlock1 + 0x2ABC -_080C059C: - adds r1, r6, 0 - adds r1, 0x40 - adds r2, r6, 0 - adds r2, 0x80 - ldr r3, _080C05C0 @ =gSaveBlock1 + 0x2ABC - adds r0, r6, 0 - bl sub_80C05C4 -_080C05AC: - bl sub_80C0750 - bl sub_80C0788 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C05C0: .4byte gSaveBlock1 + 0x2ABC - thumb_func_end sub_80C0514 - - thumb_func_start sub_80C05C4 -sub_80C05C4: @ 80C05C4 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x24 - str r0, [sp, 0x10] - str r1, [sp, 0x14] - str r2, [sp, 0x18] - str r3, [sp, 0x1C] - add r0, sp, 0x10 - str r0, [sp] - add r0, sp, 0x14 - str r0, [sp, 0x4] - add r0, sp, 0x18 - str r0, [sp, 0x8] - add r0, sp, 0x1C - str r0, [sp, 0xC] - bl GetLinkPlayerCount - ldr r1, _080C0600 @ =gUnknown_03000721 - strb r0, [r1] - movs r0, 0 - mov r10, r0 -_080C05F4: - movs r7, 0 - mov r1, r10 - adds r1, 0x1 - str r1, [sp, 0x20] - b _080C068C - .align 2, 0 -_080C0600: .4byte gUnknown_03000721 -_080C0604: - lsls r4, r7, 2 - mov r1, sp - adds r0, r1, r4 - ldr r0, [r0] - ldr r0, [r0] - mov r1, r10 - bl sub_80C0730 - ldr r1, _080C06B0 @ =gUnknown_03000722 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - mov r8, r4 - adds r1, r7, 0x1 - mov r9, r1 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080C0686 - movs r5, 0 - ldr r1, _080C06B4 @ =gUnknown_03000721 - ldrb r0, [r1] - subs r0, 0x1 - cmp r5, r0 - bge _080C0686 - adds r6, r1, 0 -_080C0638: - adds r0, r7, r5 - adds r4, r0, 0x1 - ldrb r1, [r6] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - ldr r0, [r0] - bl sub_80BEBC8 - ldr r1, _080C06B8 @ =gUnknown_03005D38 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - movs r1, 0x1 - negs r1, r1 - cmp r0, r1 - beq _080C0678 - ldrb r1, [r6] - adds r0, r4, 0 - bl __modsi3 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - mov r1, sp - add r1, r8 - ldr r1, [r1] - bl sub_80C06BC -_080C0678: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - ldrb r0, [r6] - subs r0, 0x1 - cmp r5, r0 - blt _080C0638 -_080C0686: - mov r1, r9 - lsls r0, r1, 24 - lsrs r7, r0, 24 -_080C068C: - ldr r0, _080C06B4 @ =gUnknown_03000721 - ldrb r0, [r0] - cmp r7, r0 - bcc _080C0604 - ldr r1, [sp, 0x20] - lsls r0, r1, 24 - lsrs r0, 24 - mov r10, r0 - cmp r0, 0xF - bls _080C05F4 - add sp, 0x24 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C06B0: .4byte gUnknown_03000722 -_080C06B4: .4byte gUnknown_03000721 -_080C06B8: .4byte gUnknown_03005D38 - thumb_func_end sub_80C05C4 - -.section .dotvshow - - thumb_func_start DoTVShowBravoTrainerPokemonProfile -DoTVShowBravoTrainerPokemonProfile: @ 80C091C - push {r4,r5,lr} - ldr r0, _080C0948 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C094C @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C0950 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C0954 @ =gUnknown_020387E8 - ldrb r5, [r0] - cmp r5, 0x8 - bls _080C093C - b _080C0B7A -_080C093C: - lsls r0, r5, 2 - ldr r1, _080C0958 @ =_080C095C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0948: .4byte gSpecialVar_0x8004 -_080C094C: .4byte gSaveBlock1 + 0x2738 -_080C0950: .4byte gScriptResult -_080C0954: .4byte gUnknown_020387E8 -_080C0958: .4byte _080C095C - .align 2, 0 -_080C095C: - .4byte _080C0980 - .4byte _080C09D8 - .4byte _080C0A10 - .4byte _080C0A40 - .4byte _080C0A74 - .4byte _080C0AA8 - .4byte _080C0AEC - .4byte _080C0B34 - .4byte _080C0B64 -_080C0980: - ldr r0, _080C09C0 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - ldrb r1, [r4, 0x13] - lsls r1, 27 - lsrs r1, 30 - movs r0, 0x2 - bl sub_80BEF10 - ldrh r1, [r4, 0x2] - movs r0, 0xB - muls r0, r1 - ldr r1, _080C09C4 @ =gSpeciesNames - adds r0, r1 - adds r1, r4, 0 - adds r1, 0x8 - bl StringCompareWithoutExtCtrlCodes - cmp r0, 0 - bne _080C09CC - ldr r1, _080C09C8 @ =gUnknown_020387E8 - movs r0, 0x8 - b _080C0B78 - .align 2, 0 -_080C09C0: .4byte gStringVar1 -_080C09C4: .4byte gSpeciesNames -_080C09C8: .4byte gUnknown_020387E8 -_080C09CC: - ldr r1, _080C09D4 @ =gUnknown_020387E8 - movs r0, 0x1 - b _080C0B78 - .align 2, 0 -_080C09D4: .4byte gUnknown_020387E8 -_080C09D8: - ldr r0, _080C0A04 @ =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0A08 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C0A0C @ =gStringVar2 - adds r1, r4, 0 - adds r1, 0x8 - ldrb r2, [r4, 0x1F] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x2 - bl CopyContestCategoryToStringVar - b _080C0B74 - .align 2, 0 -_080C0A04: .4byte gStringVar1 -_080C0A08: .4byte gSpeciesNames -_080C0A0C: .4byte gStringVar2 -_080C0A10: - ldr r0, _080C0A2C @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - movs r0, 0x60 - ands r0, r1 - cmp r0, 0 - bne _080C0A34 - ldr r1, _080C0A30 @ =gUnknown_020387E8 - movs r0, 0x3 - b _080C0B78 - .align 2, 0 -_080C0A2C: .4byte gStringVar1 -_080C0A30: .4byte gUnknown_020387E8 -_080C0A34: - ldr r1, _080C0A3C @ =gUnknown_020387E8 - movs r0, 0x4 - b _080C0B78 - .align 2, 0 -_080C0A3C: .4byte gUnknown_020387E8 -_080C0A40: - ldr r0, _080C0A68 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C0A6C @ =gStringVar2 - ldrh r1, [r4, 0x4] - bl sub_80EB3FC - ldrb r1, [r4, 0x13] - lsls r1, 25 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x2 - bl sub_80BF088 - ldr r1, _080C0A70 @ =gUnknown_020387E8 - movs r0, 0x5 - b _080C0B78 - .align 2, 0 -_080C0A68: .4byte gStringVar1 -_080C0A6C: .4byte gStringVar2 -_080C0A70: .4byte gUnknown_020387E8 -_080C0A74: - ldr r0, _080C0A9C @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C0AA0 @ =gStringVar2 - ldrh r1, [r4, 0x4] - bl sub_80EB3FC - ldrb r1, [r4, 0x13] - lsls r1, 25 - lsrs r1, 30 - adds r1, 0x1 - movs r0, 0x2 - bl sub_80BF088 - ldr r1, _080C0AA4 @ =gUnknown_020387E8 - movs r0, 0x5 - b _080C0B78 - .align 2, 0 -_080C0A9C: .4byte gStringVar1 -_080C0AA0: .4byte gStringVar2 -_080C0AA4: .4byte gUnknown_020387E8 -_080C0AA8: - ldr r0, _080C0AD4 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldrb r1, [r4, 0x13] - lsls r1, 29 - lsrs r1, 29 - movs r0, 0x1 - bl CopyContestCategoryToStringVar - ldr r0, _080C0AD8 @ =gStringVar3 - ldrh r1, [r4, 0x6] - bl sub_80EB3FC - ldrh r0, [r4, 0x14] - cmp r0, 0 - beq _080C0AE0 - ldr r1, _080C0ADC @ =gUnknown_020387E8 - movs r0, 0x6 - b _080C0B78 - .align 2, 0 -_080C0AD4: .4byte gStringVar1 -_080C0AD8: .4byte gStringVar3 -_080C0ADC: .4byte gUnknown_020387E8 -_080C0AE0: - ldr r1, _080C0AE8 @ =gUnknown_020387E8 - movs r0, 0x7 - b _080C0B78 - .align 2, 0 -_080C0AE8: .4byte gUnknown_020387E8 -_080C0AEC: - ldr r0, _080C0B1C @ =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0B20 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldr r0, _080C0B24 @ =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xD - muls r1, r2 - ldr r2, _080C0B28 @ =gMoveNames - adds r1, r2 - bl StringCopy - ldr r0, _080C0B2C @ =gStringVar3 - ldrh r1, [r4, 0x6] - bl sub_80EB3FC - ldr r1, _080C0B30 @ =gUnknown_020387E8 - movs r0, 0x7 - b _080C0B78 - .align 2, 0 -_080C0B1C: .4byte gStringVar1 -_080C0B20: .4byte gSpeciesNames -_080C0B24: .4byte gStringVar2 -_080C0B28: .4byte gMoveNames -_080C0B2C: .4byte gStringVar3 -_080C0B30: .4byte gUnknown_020387E8 -_080C0B34: - ldr r0, _080C0B58 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0x16 - ldrb r2, [r4, 0x1E] - bl TVShowConvertInternationalString - ldr r0, _080C0B5C @ =gStringVar2 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0B60 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone - b _080C0B7A - .align 2, 0 -_080C0B58: .4byte gStringVar1 -_080C0B5C: .4byte gStringVar2 -_080C0B60: .4byte gSpeciesNames -_080C0B64: - ldr r0, _080C0B8C @ =gStringVar1 - ldrh r2, [r4, 0x2] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0B90 @ =gSpeciesNames - adds r1, r2 - bl StringCopy -_080C0B74: - ldr r1, _080C0B94 @ =gUnknown_020387E8 - movs r0, 0x2 -_080C0B78: - strb r0, [r1] -_080C0B7A: - ldr r0, _080C0B98 @ =gTVBravoTrainerTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0B8C: .4byte gStringVar1 -_080C0B90: .4byte gSpeciesNames -_080C0B94: .4byte gUnknown_020387E8 -_080C0B98: .4byte gTVBravoTrainerTextGroup - thumb_func_end DoTVShowBravoTrainerPokemonProfile - - thumb_func_start DoTVShowBravoTrainerBattleTowerProfile -DoTVShowBravoTrainerBattleTowerProfile: @ 80C0B9C - push {r4,r5,lr} - ldr r0, _080C0BC8 @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C0BCC @ =gSaveBlock1 + 0x2738 - adds r4, r0, r1 - ldr r1, _080C0BD0 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C0BD4 @ =gUnknown_020387E8 - ldrb r5, [r0] - adds r2, r0, 0 - cmp r5, 0xE - bls _080C0BBE - b _080C0DDE -_080C0BBE: - lsls r0, r5, 2 - ldr r1, _080C0BD8 @ =_080C0BDC - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0BC8: .4byte gSpecialVar_0x8004 -_080C0BCC: .4byte gSaveBlock1 + 0x2738 -_080C0BD0: .4byte gScriptResult -_080C0BD4: .4byte gUnknown_020387E8 -_080C0BD8: .4byte _080C0BDC - .align 2, 0 -_080C0BDC: - .4byte _080C0C18 - .4byte _080C0C5C - .4byte _080C0C8C - .4byte _080C0CB0 - .4byte _080C0CDC - .4byte _080C0D24 - .4byte _080C0D30 - .4byte _080C0D3C - .4byte _080C0D42 - .4byte _080C0D42 - .4byte _080C0D42 - .4byte _080C0D5C - .4byte _080C0D88 - .4byte _080C0D88 - .4byte _080C0DC0 -_080C0C18: - ldr r0, _080C0C40 @ =gStringVar1 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0C44 @ =gStringVar2 - ldrh r2, [r4, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0C48 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrh r0, [r4, 0x16] - cmp r0, 0x6 - bls _080C0C50 - ldr r1, _080C0C4C @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C40: .4byte gStringVar1 -_080C0C44: .4byte gStringVar2 -_080C0C48: .4byte gSpeciesNames -_080C0C4C: .4byte gUnknown_020387E8 -_080C0C50: - ldr r1, _080C0C58 @ =gUnknown_020387E8 - movs r0, 0x2 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C58: .4byte gUnknown_020387E8 -_080C0C5C: - ldrb r1, [r4, 0x1A] - movs r0, 0 - bl sub_80BF088 - ldrh r1, [r4, 0x16] - movs r0, 0x1 - bl sub_80BF088 - ldrb r0, [r4, 0x1C] - cmp r0, 0x1 - bne _080C0C80 - ldr r1, _080C0C7C @ =gUnknown_020387E8 - movs r0, 0x3 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C7C: .4byte gUnknown_020387E8 -_080C0C80: - ldr r1, _080C0C88 @ =gUnknown_020387E8 - movs r0, 0x4 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0C88: .4byte gUnknown_020387E8 -_080C0C8C: - ldr r0, _080C0CAC @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldrh r1, [r4, 0x16] - adds r1, 0x1 - movs r0, 0x1 - bl sub_80BF088 -_080C0CA2: - ldrb r0, [r4, 0x1B] - cmp r0, 0 - beq _080C0CFE - b _080C0D18 - .align 2, 0 -_080C0CAC: .4byte gStringVar1 -_080C0CB0: - ldr r0, _080C0CD0 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0CD4 @ =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0CD8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - b _080C0CA2 - .align 2, 0 -_080C0CD0: .4byte gStringVar1 -_080C0CD4: .4byte gStringVar2 -_080C0CD8: .4byte gSpeciesNames -_080C0CDC: - ldr r0, _080C0D08 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0D0C @ =gStringVar2 - ldrh r2, [r4, 0x14] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0D10 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _080C0D18 -_080C0CFE: - ldr r1, _080C0D14 @ =gUnknown_020387E8 - movs r0, 0x5 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D08: .4byte gStringVar1 -_080C0D0C: .4byte gStringVar2 -_080C0D10: .4byte gSpeciesNames -_080C0D14: .4byte gUnknown_020387E8 -_080C0D18: - ldr r1, _080C0D20 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D20: .4byte gUnknown_020387E8 -_080C0D24: - ldr r0, _080C0D2C @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - b _080C0D46 - .align 2, 0 -_080C0D2C: .4byte gStringVar1 -_080C0D30: - ldr r0, _080C0D38 @ =gStringVar1 - adds r1, r4, 0 - adds r1, 0xC - b _080C0D46 - .align 2, 0 -_080C0D38: .4byte gStringVar1 -_080C0D3C: - movs r0, 0xB - strb r0, [r2] - b _080C0DDE -_080C0D42: - ldr r0, _080C0D54 @ =gStringVar1 - adds r1, r4, 0x2 -_080C0D46: - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r1, _080C0D58 @ =gUnknown_020387E8 - movs r0, 0xB - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D54: .4byte gStringVar1 -_080C0D58: .4byte gUnknown_020387E8 -_080C0D5C: - ldr r0, _080C0D74 @ =gStringVar1 - ldrh r1, [r4, 0x18] - bl sub_80EB3FC - ldrb r0, [r4, 0x1B] - cmp r0, 0 - bne _080C0D7C - ldr r1, _080C0D78 @ =gUnknown_020387E8 - movs r0, 0xC - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D74: .4byte gStringVar1 -_080C0D78: .4byte gUnknown_020387E8 -_080C0D7C: - ldr r1, _080C0D84 @ =gUnknown_020387E8 - movs r0, 0xD - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0D84: .4byte gUnknown_020387E8 -_080C0D88: - ldr r0, _080C0DB0 @ =gStringVar1 - ldrh r1, [r4, 0x18] - bl sub_80EB3FC - ldr r0, _080C0DB4 @ =gStringVar2 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0DB8 @ =gStringVar3 - adds r1, r4, 0 - adds r1, 0xC - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r1, _080C0DBC @ =gUnknown_020387E8 - movs r0, 0xE - strb r0, [r1] - b _080C0DDE - .align 2, 0 -_080C0DB0: .4byte gStringVar1 -_080C0DB4: .4byte gStringVar2 -_080C0DB8: .4byte gStringVar3 -_080C0DBC: .4byte gUnknown_020387E8 -_080C0DC0: - ldr r0, _080C0DF0 @ =gStringVar1 - adds r1, r4, 0x2 - ldrb r2, [r4, 0x1D] - bl TVShowConvertInternationalString - ldr r0, _080C0DF4 @ =gStringVar2 - ldrh r2, [r4, 0xA] - movs r1, 0xB - muls r1, r2 - ldr r2, _080C0DF8 @ =gSpeciesNames - adds r1, r2 - bl StringCopy - bl TVShowDone -_080C0DDE: - ldr r0, _080C0DFC @ =gTVBravoTrainerBattleTowerTextGroup - lsls r1, r5, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C0DF0: .4byte gStringVar1 -_080C0DF4: .4byte gStringVar2 -_080C0DF8: .4byte gSpeciesNames -_080C0DFC: .4byte gTVBravoTrainerBattleTowerTextGroup - thumb_func_end DoTVShowBravoTrainerBattleTowerProfile - - thumb_func_start DoTVShowTodaysSmartShopper -DoTVShowTodaysSmartShopper: @ 80C0E00 - push {r4-r6,lr} - ldr r0, _080C0E2C @ =gSpecialVar_0x8004 - ldrh r1, [r0] - lsls r0, r1, 3 - adds r0, r1 - lsls r0, 2 - ldr r1, _080C0E30 @ =gSaveBlock1 + 0x2738 - adds r5, r0, r1 - ldr r1, _080C0E34 @ =gScriptResult - movs r0, 0 - strh r0, [r1] - ldr r0, _080C0E38 @ =gUnknown_020387E8 - ldrb r6, [r0] - adds r2, r0, 0 - cmp r6, 0xC - bls _080C0E22 - b _080C1014 -_080C0E22: - lsls r0, r6, 2 - ldr r1, _080C0E3C @ =_080C0E40 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C0E2C: .4byte gSpecialVar_0x8004 -_080C0E30: .4byte gSaveBlock1 + 0x2738 -_080C0E34: .4byte gScriptResult -_080C0E38: .4byte gUnknown_020387E8 -_080C0E3C: .4byte _080C0E40 - .align 2, 0 -_080C0E40: - .4byte _080C0E74 - .4byte _080C0EB0 - .4byte _080C0EF8 - .4byte _080C0F0A - .4byte _080C0EF8 - .4byte _080C0EF8 - .4byte _080C0F34 - .4byte _080C0F64 - .4byte _080C0F94 - .4byte _080C0FA0 - .4byte _080C0FAE - .4byte _080C0FC0 - .4byte _080C1004 -_080C0E74: - ldr r0, _080C0E98 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r0, _080C0E9C @ =gStringVar2 - ldrb r1, [r5, 0x12] - movs r2, 0 - bl sub_80FBFB4 - ldrh r0, [r5, 0xC] - cmp r0, 0xFE - bls _080C0EA4 - ldr r1, _080C0EA0 @ =gUnknown_020387E8 - movs r0, 0xB - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0E98: .4byte gStringVar1 -_080C0E9C: .4byte gStringVar2 -_080C0EA0: .4byte gUnknown_020387E8 -_080C0EA4: - ldr r1, _080C0EAC @ =gUnknown_020387E8 - movs r0, 0x1 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0EAC: .4byte gUnknown_020387E8 -_080C0EB0: - ldr r0, _080C0EEC @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r4, _080C0EF0 @ =gStringVar2 - ldrh r0, [r5, 0x6] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0xC] - movs r0, 0x2 - bl sub_80BF088 - ldr r4, _080C0EF4 @ =gUnknown_020387E8 - bl Random - ldrb r2, [r4] - adds r2, 0x1 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x3 - ands r0, r1 - adds r0, r2 - strb r0, [r4] - b _080C1014 - .align 2, 0 -_080C0EEC: .4byte gStringVar1 -_080C0EF0: .4byte gStringVar2 -_080C0EF4: .4byte gUnknown_020387E8 -_080C0EF8: - ldrh r0, [r5, 0x8] - cmp r0, 0 - beq _080C0F04 - movs r0, 0x6 - strb r0, [r2] - b _080C1014 -_080C0F04: - movs r0, 0xA - strb r0, [r2] - b _080C1014 -_080C0F0A: - ldrh r1, [r5, 0xC] - adds r1, 0x1 - movs r0, 0x2 - bl sub_80BF088 - ldrh r0, [r5, 0x8] - cmp r0, 0 - beq _080C0F28 - ldr r1, _080C0F24 @ =gUnknown_020387E8 - movs r0, 0x6 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F24: .4byte gUnknown_020387E8 -_080C0F28: - ldr r1, _080C0F30 @ =gUnknown_020387E8 - movs r0, 0xA - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F30: .4byte gUnknown_020387E8 -_080C0F34: - ldr r4, _080C0F5C @ =gStringVar2 - ldrh r0, [r5, 0x8] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0xE] - movs r0, 0x2 - bl sub_80BF088 - ldrh r0, [r5, 0xA] - cmp r0, 0 - beq _080C0F7C - ldr r1, _080C0F60 @ =gUnknown_020387E8 - movs r0, 0x7 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F5C: .4byte gStringVar2 -_080C0F60: .4byte gUnknown_020387E8 -_080C0F64: - ldr r4, _080C0F8C @ =gStringVar2 - ldrh r0, [r5, 0xA] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrh r1, [r5, 0x10] - movs r0, 0x2 - bl sub_80BF088 -_080C0F7C: - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - beq _080C0FE2 - ldr r1, _080C0F90 @ =gUnknown_020387E8 - movs r0, 0x9 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0F8C: .4byte gStringVar2 -_080C0F90: .4byte gUnknown_020387E8 -_080C0F94: - ldrh r0, [r5, 0xC] - cmp r0, 0xFE - bls _080C0FBA - movs r0, 0xC - strb r0, [r2] - b _080C1014 -_080C0FA0: - movs r0, 0x1 - adds r1, r5, 0 - bl sub_80BF154 - bl TVShowDone - b _080C1014 -_080C0FAE: - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - bne _080C0FBA - movs r0, 0x8 - strb r0, [r2] - b _080C1014 -_080C0FBA: - movs r0, 0x9 - strb r0, [r2] - b _080C1014 -_080C0FC0: - ldr r0, _080C0FEC @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - ldr r4, _080C0FF0 @ =gStringVar2 - ldrh r0, [r5, 0x6] - bl ItemId_GetItem - adds r1, r0, 0 - adds r0, r4, 0 - bl StringCopy - ldrb r0, [r5, 0x2] - cmp r0, 0x1 - bne _080C0FF8 -_080C0FE2: - ldr r1, _080C0FF4 @ =gUnknown_020387E8 - movs r0, 0x8 - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C0FEC: .4byte gStringVar1 -_080C0FF0: .4byte gStringVar2 -_080C0FF4: .4byte gUnknown_020387E8 -_080C0FF8: - ldr r1, _080C1000 @ =gUnknown_020387E8 - movs r0, 0xC - strb r0, [r1] - b _080C1014 - .align 2, 0 -_080C1000: .4byte gUnknown_020387E8 -_080C1004: - ldr r0, _080C1028 @ =gStringVar1 - adds r1, r5, 0 - adds r1, 0x13 - ldrb r2, [r5, 0x3] - bl TVShowConvertInternationalString - bl TVShowDone -_080C1014: - ldr r0, _080C102C @ =gTVSmartShopperTextGroup - lsls r1, r6, 2 - adds r1, r0 - ldr r0, [r1] - bl ShowFieldMessage - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C1028: .4byte gStringVar1 -_080C102C: .4byte gTVSmartShopperTextGroup - thumb_func_end DoTVShowTodaysSmartShopper - - .align 2, 0 @ Don't pad with nop. diff --git a/include/asm.inc.h b/include/asm.inc.h index dbd3f0820..e087acd28 100755..100644 --- a/include/asm.inc.h +++ b/include/asm.inc.h @@ -286,7 +286,7 @@ void sub_80BD674(void *, u32, u8); // asm/tv.o void ClearTVShowData(void); -void UpdateTVScreensOnMap(u32, u32); +void UpdateTVScreensOnMap(int, int); void ResetGabbyAndTy(void); u8 sub_80BDEAC(u8 *); void sub_80BE160(TVShow *); diff --git a/include/battle.h b/include/battle.h index 3b4771869..9714c6add 100644 --- a/include/battle.h +++ b/include/battle.h @@ -146,4 +146,29 @@ extern struct UnknownStruct1 unk_2016A00; extern struct UnkBattleStruct4 gUnknown_02024CA8[]; extern struct AI_ThinkingStruct gAIThinkingSpace; +struct UnknownStruct11 +{ + u8 unk0; + u8 unk1; + u8 unk2; + u8 unk3; + u8 unk4; + u8 unk5_0:1; + u8 unk5_1:1; + u16 unk6; + u8 unk8[10]; + u8 unk12; + u8 unk13; + u8 unk14[10]; + u8 filler1E[2]; + u16 unk20; + u16 unk22; + u16 unk24; + u16 unk26; + u16 unk28; + u8 unk2A[10]; + u8 filler34[2]; + u8 unk36[10]; +}; + #endif // GUARD_BATTLE_H diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h index 62f492bdc..62f492bdc 100755..100644 --- a/include/field_effect_helpers.h +++ b/include/field_effect_helpers.h diff --git a/include/field_map_obj.h b/include/field_map_obj.h index 0347b90d4..0347b90d4 100755..100644 --- a/include/field_map_obj.h +++ b/include/field_map_obj.h diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index fc21c4e3c..fc21c4e3c 100755..100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h diff --git a/include/fieldmap.h b/include/fieldmap.h index 530e15798..1aa99031d 100644 --- a/include/fieldmap.h +++ b/include/fieldmap.h @@ -2,6 +2,7 @@ #define GUARD_FIELDMAP2_H #include "field_map_obj.h" +extern struct BackupMapData gUnknown_03004870; struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection); int GetMapBorderIdAt(int x, int y); extern bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index 0b72bbec5..a0fe0e6ab 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -63,6 +63,13 @@ struct MapData struct Tileset *secondaryTileset; }; +struct BackupMapData +{ + s32 width; + s32 height; + u16 *map; +}; + struct MapObjectTemplate { /*0x00*/ u8 localId; @@ -153,20 +160,20 @@ struct MapConnections struct MapHeader { - struct MapData *mapData; - struct MapEvents *events; - u8 *mapScripts; - struct MapConnections *connections; - u16 music; - u16 mapDataId; - u8 name; - u8 cave; - u8 weather; + /* 0x00 */ struct MapData *mapData; + /* 0x04 */ struct MapEvents *events; + /* 0x08 */ u8 *mapScripts; + /* 0x0C */ struct MapConnections *connections; + /* 0x10 */ u16 music; + /* 0x12 */ u16 mapDataId; + /* 0x14 */ u8 name; + /* 0x15 */ u8 cave; + /* 0x16 */ u8 weather; /* 0x17 */ u8 mapType; - u8 filler_18; - u8 escapeRope; - u8 flags; - u8 battleType; + /* 0x18 */ u8 filler_18; + /* 0x19 */ u8 escapeRope; + /* 0x1A */ u8 flags; + /* 0x1B */ u8 battleType; }; struct MapObject diff --git a/include/global.h b/include/global.h index 34946c895..9a95cf41f 100644 --- a/include/global.h +++ b/include/global.h @@ -94,7 +94,7 @@ struct UCoords16 struct SecretBaseRecord { - /*0x1A08*/ u8 sbr_field_0; // ID? + /*ID?*/ /*0x1A08*/ u8 sbr_field_0; /*0x1A09*/ u8 sbr_field_1_0:4; /*0x1A09*/ u8 gender:1; /*0x1A09*/ u8 sbr_field_1_5:1; @@ -206,32 +206,6 @@ struct TVShowCommon { /*0x23*/ u8 trainerIdHi; }; -struct TVShowPokemonToday { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 language; - /*0x03*/ u8 language2; - /*0x04*/ u8 nickname[11]; - /*0x0F*/ u8 ball; - /*0x10*/ u16 species; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - - -struct TVShowPokemonTodayFailed { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 language; - /*0x03*/ u8 pad03[9]; - /*0x0c*/ u16 species; - /*0x0e*/ u16 species2; - /*0x10*/ u8 var10; - /*0x11*/ u8 var11; - /*0x12*/ u8 var12; - /*0x13*/ u8 playerName[8]; -}; - struct TVShowFanClubLetter { /*0x00*/ u8 var00; /*0x01*/ u8 var01; @@ -248,7 +222,7 @@ struct TVShowRecentHappenings { /*0x04*/ u16 var04[6]; /*0x10*/ u8 playerName[8]; /*0x18*/ u8 language; - u8 pad19[10]; + /*0x19*/ u8 pad19[10]; }; struct TVShowFanclubOpinions { @@ -256,7 +230,7 @@ struct TVShowFanclubOpinions { /*0x01*/ u8 var01; /*0x02*/ u16 var02; /*0x04*/ u8 var04A:4; - u8 var04B:4; + /*0x04*/ u8 var04B:4; /*0x05*/ u8 playerName[8]; /*0x0D*/ u8 language; /*0x0E*/ u8 var0E; @@ -266,6 +240,13 @@ struct TVShowFanclubOpinions { /*0x1C*/ u16 var1C[4]; }; +struct TVShowUnknownType04 { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 pad02[4]; + /*0x06*/ u16 var06; +}; + struct TVShowNameRaterShow { /*0x00*/ u8 var00; /*0x01*/ u8 var01; @@ -279,23 +260,72 @@ struct TVShowNameRaterShow { /*0x1F*/ u8 pokemonNameLanguage; }; -struct TVShowMassOutbreak { +struct TVShowBravoTrainerPokemonProfiles { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u16 species; + /*0x04*/ u16 var04[2]; + /*0x08*/ u8 pokemonNickname[11]; + /*0x13*/ u8 contestCategory:3; + /*0x13*/ u8 contestRank:2; + /*0x13*/ u8 contestResult:2; + /*0x13*/ u8 var13_7:1; + /*0x14*/ u16 var14; + /*0x16*/ u8 playerName[8]; + /*0x1E*/ u8 language; + /*0x1F*/ u8 var1f; +}; + +struct TVShowBravoTrainerBattleTowerSpotlight { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 trainerName[8]; + /*0x0A*/ u16 species; + /*0x0C*/ u8 pokemonName[8]; + /*0x14*/ u16 defeatedSpecies; + /*0x16*/ u16 var16; + /*0x18*/ u16 var18[1]; + /*0x1A*/ u8 btLevel; + /*0x1B*/ u8 var1b; + /*0x1C*/ u8 var1c; + /*0x1D*/ u8 language; +}; + +struct TVShowPokemonToday { /*0x00*/ u8 var00; /*0x01*/ u8 var01; - /*0x02*/ u8 var02; - /*0x03*/ u8 var03; - /*0x04*/ u16 moves[4]; - /*0x0C*/ u16 species; - /*0x0E*/ u16 var0E; - /*0x10*/ u8 locationMapNum; - /*0x11*/ u8 locationMapGroup; + /*0x02*/ u8 language; + /*0x03*/ u8 language2; + /*0x04*/ u8 nickname[11]; + /*0x0F*/ u8 ball; + /*0x10*/ u16 species; /*0x12*/ u8 var12; - /*0x13*/ u8 probability; - /*0x14*/ u8 level; - /*0x15*/ u8 var15; - /*0x16*/ u16 var16; - /*0x18*/ u8 language; - u8 pad19[11]; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowSmartShopper { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 priceReduced; + /*0x03*/ u8 language; + /*0x04*/ u8 pad04[2]; + /*0x06*/ u16 itemIds[3]; + /*0x0C*/ u16 itemAmounts[3]; + /*0x12*/ u8 shopLocation; + /*0x13*/ u8 playerName[8]; +}; + +struct TVShowPokemonTodayFailed { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 language; + /*0x03*/ u8 pad03[9]; + /*0x0c*/ u16 species; + /*0x0e*/ u16 species2; + /*0x10*/ u8 var10; + /*0x11*/ u8 var11; + /*0x12*/ u8 var12; + /*0x13*/ u8 playerName[8]; }; struct TVShowPokemonAngler { @@ -322,47 +352,23 @@ struct TVShowWorldOfMasters { /*0x13*/ u8 playerName[8]; }; -struct TVShowSmartShopper { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 priceReduced; - /*0x03*/ u8 language; - /*0x04*/ u8 pad04[2]; - /*0x06*/ u16 itemIds[3]; - /*0x0C*/ u16 itemAmounts[3]; - /*0x12*/ u8 shopLocation; - /*0x13*/ u8 playerName[8]; -}; - -struct TVShowBravoTrainerPokemonProfiles { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u16 species; - /*0x04*/ u16 var04[2]; - /*0x08*/ u8 pokemonNickname[11]; - /*0x13*/ u8 contestCategory:3; - /*0x13*/ u8 contestRank:2; - /*0x13*/ u8 var13_5:2; - /*0x13*/ u8 var13_7:1; - /*0x14*/ u16 var14; - /*0x16*/ u8 playerName[8]; - /*0x1E*/ u8 language; - /*0x1F*/ u8 var1f; -}; - -struct TVShowBravoTrainerBattleTowerSpotlight { - /*0x00*/ u8 var00; - /*0x01*/ u8 var01; - /*0x02*/ u8 trainerName[8]; - /*0x0A*/ u16 species; - /*0x0C*/ u8 pokemonName[8]; - /*0x14*/ u16 winningMove; - /*0x16*/ u16 var16; - /*0x18*/ u16 var18[1]; - /*0x1A*/ u8 btLevel; - /*0x1B*/ u8 var1b; - /*0x1C*/ u8 var1c; - /*0x1D*/ u8 language; +struct TVShowMassOutbreak { + /*0x00*/ u8 var00; + /*0x01*/ u8 var01; + /*0x02*/ u8 var02; + /*0x03*/ u8 var03; + /*0x04*/ u16 moves[4]; + /*0x0C*/ u16 species; + /*0x0E*/ u16 var0E; + /*0x10*/ u8 locationMapNum; + /*0x11*/ u8 locationMapGroup; + /*0x12*/ u8 var12; + /*0x13*/ u8 probability; + /*0x14*/ u8 level; + /*0x15*/ u8 var15; + /*0x16*/ u16 var16; + /*0x18*/ u8 language; + u8 pad19[11]; }; typedef union TVShow { @@ -370,15 +376,16 @@ typedef union TVShow { struct TVShowFanClubLetter fanclubLetter; struct TVShowRecentHappenings recentHappenings; struct TVShowFanclubOpinions fanclubOpinions; + struct TVShowUnknownType04 unkShow04; struct TVShowNameRaterShow nameRaterShow; - struct TVShowMassOutbreak massOutbreak; - struct TVShowPokemonAngler pokemonAngler; - struct TVShowWorldOfMasters worldOfMasters; - struct TVShowSmartShopper smartshopperShow; struct TVShowBravoTrainerPokemonProfiles bravoTrainer; struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower; struct TVShowPokemonToday pokemonToday; + struct TVShowSmartShopper smartshopperShow; struct TVShowPokemonTodayFailed pokemonTodayFailed; + struct TVShowPokemonAngler pokemonAngler; + struct TVShowWorldOfMasters worldOfMasters; + struct TVShowMassOutbreak massOutbreak; } TVShow; struct MailStruct @@ -438,11 +445,6 @@ typedef union SB_Struct { } SB_Struct; // size is 0x198 -struct SaveTVStruct { - TVShow shows[24]; - TVShow unknown_2A98; -}; - struct UnknownSaveStruct2ABC { u8 val0; u8 val1; @@ -450,18 +452,24 @@ struct UnknownSaveStruct2ABC { }; struct GabbyAndTyData { - u16 mon1; - u16 mon2; - u16 move1; - u16 move2; - u8 mapnum; - u8 val9; - u8 valA_0:1; - u8 valA_1:1; - u8 valA_2:1; - u8 valA_3:1; - u8 valA_4:4; - u8 valB; + /*2b10*/ u16 mon1; + /*2b12*/ u16 mon2; + /*2b14*/ u16 lastMove; + /*2b16*/ u16 quote; + /*2b18*/ u8 mapnum; + /*2b19*/ u8 battleNum; + /*2b1a*/ u8 valA_0:1; + /*2b1a*/ u8 valA_1:1; + /*2b1a*/ u8 valA_2:1; + /*2b1a*/ u8 valA_3:1; + /*2b1a*/ u8 valA_4:1; + /*2b1a*/ u8 valA_5:3; + /*2b1b*/ u8 valB_0:1; + /*2b1b*/ u8 valB_1:1; + /*2b1b*/ u8 valB_2:1; + /*2b1b*/ u8 valB_3:1; + /*2b1b*/ u8 valB_4:1; + /*2b1b*/ u8 valB_5:3; }; struct RecordMixing_UnknownStruct { @@ -517,7 +525,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2704*/ u8 decorDoll[40]; /*0x272C*/ u8 decorCushion[10]; /*0x2736*/ u8 padding_2736[2]; - /*0x2738*/ struct SaveTVStruct tvShows; + /*0x2738*/ TVShow tvShows[25]; /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16]; /*0x2AFC*/ u16 outbreakPokemonSpecies; /*0x2AFE*/ u8 outbreakLocationMapNum; @@ -529,7 +537,7 @@ struct SaveBlock1 /* 0x02025734 */ /*0x2B0C*/ u8 outbreakUnk4; /*0x2B0D*/ u8 outbreakPokemonProbability; /*0x2B0E*/ u16 outbreakUnk5; - /*0x2B18*/ struct GabbyAndTyData gabbyAndTyData; + /*0x2B10*/ struct GabbyAndTyData gabbyAndTyData; /*0x2B1C*/ u16 unk2B1C[6]; /*0x2B28*/ u16 unk2B28[6]; /*0x2B34*/ u16 unk2B34[6]; @@ -612,11 +620,11 @@ struct SaveBlock2 /* 0x02024EA4 */ /*0x10*/ u8 playTimeMinutes; /*0x11*/ u8 playTimeSeconds; /*0x12*/ u8 playTimeVBlanks; - /*0x13*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] - /*0x14*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] + /*OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]*/ /*0x13*/ u8 optionsButtonMode; + /*OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]*/ /*0x14*/ u16 optionsTextSpeed:3; u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes - u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + /*OPTIONS_SOUND_[MONO/STEREO]*/ u16 optionsSound:1; + /*OPTIONS_BATTLE_STYLE_[SHIFT/SET]*/ u16 optionsBattleStyle:1; u16 optionsBattleSceneOff:1; // whether battle animations are disabled u16 regionMapZoom:1; // whether the map is zoomed in /*0x18*/ struct Pokedex pokedex; diff --git a/include/trainer_see.h b/include/trainer_see.h index b80a41641..b80a41641 100755..100644 --- a/include/trainer_see.h +++ b/include/trainer_see.h diff --git a/ld_script.txt b/ld_script.txt index 3755b851a..6f6152ff9 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -174,12 +174,6 @@ SECTIONS { src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); src/tv.o(.text); - asm/tv.o(.text); - src/tv.o(.text_a); - asm/tv.o(.text_80BE8EC); - src/tv.o(.dotvshow); - asm/tv.o(.dotvshow); - src/tv.o(.text_c); asm/contest_link_80C2020.o(.text); src/script_pokemon_util_80C4BF0.o(.text); src/field_poison.o(.text); diff --git a/src/battle_2.c b/src/battle_2.c index 732a4c529..dc3308e10 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -72,31 +72,6 @@ struct UnknownStruct10 u8 filler4[8]; }; -struct UnknownStruct11 -{ - u8 unk0; - u8 unk1; - u8 unk2; - u8 unk3; - u8 unk4; - u8 unk5_0:1; - u8 unk5_1:1; - u16 unk6; - u8 unk8[10]; - u8 unk12; - u8 unk13; - u8 unk14[10]; - u8 filler1E[2]; - u16 unk20; - u16 unk22; - u16 unk24; - u16 unk26; - u16 unk28; - u8 unk2A[10]; - u8 filler34[2]; - u8 unk36[10]; -}; - struct UnknownStruct12 { u32 unk0; diff --git a/src/easy_chat.c b/src/easy_chat.c index 720adad79..e43ba751f 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -216,15 +216,15 @@ void unref_sub_80EB684(u8 arg0, u16 arg1) { { case 5: c = 6; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x04); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x04); break; case 7: c = 2; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x1C); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x1C); break; case 8: c = 1; - ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x02); + ptr = (u16*)((void *)&gSaveBlock1.tvShows[arg1] + 0x02); break; default: diff --git a/src/fieldmap.c b/src/fieldmap.c index 0301115d5..46b996e52 100644 --- a/src/fieldmap.c +++ b/src/fieldmap.c @@ -2,13 +2,6 @@ #include "fieldmap.h" #include "palette.h" -struct BackupMapData -{ - s32 width; - s32 height; - u16 *map; -}; - extern struct MapHeader * const get_mapheader_by_bank_and_number(u8, u8); extern void mapheader_run_script_with_tag_x1(void); extern void sub_80BB970(struct MapEvents *); @@ -32,7 +25,6 @@ struct Coords32 }; extern const struct Coords32 gUnknown_0821664C[]; -extern struct BackupMapData gUnknown_03004870; EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0}; EWRAM_DATA struct MapHeader gMapHeader = {0}; diff --git a/src/tv.c b/src/tv.c index 110dfba89..3506752c3 100644..100755 --- a/src/tv.c +++ b/src/tv.c @@ -3,7 +3,9 @@ #include "tv.h" #include "data2.h" #include "event_data.h" +#include "fieldmap.h" #include "field_message_box.h" +#include "field_camera.h" #include "flags.h" #include "rng.h" #include "string_util.h" @@ -14,6 +16,7 @@ #include "rom4.h" #include "map_constants.h" #include "strings.h" +#include "battle.h" #include "link.h" #include "easy_chat.h" #include "item.h" @@ -26,22 +29,7 @@ struct UnkTvStruct s8 var0; }; -struct UnkBattleStruct { - u16 var00; - u8 var02[3]; - u8 var05_0:1; - u8 var05_1:1; - u8 var05_pad2:6; - u16 var06; - u8 pad08[24]; - u16 var20; - u8 pad22[6]; - u16 var28; - u8 var2a[11]; - u8 var35; - u8 var36[11]; -}; -extern struct UnkBattleStruct gUnknown_030042E0; +extern struct UnknownStruct11 gUnknown_030042E0; extern u8 gUnknown_0300430A[11]; struct OutbreakPokemon @@ -104,10 +92,10 @@ void ClearTVShowData(void) u8 showidx; u8 extradataidx; for (showidx=0; showidx<25; showidx++) { - gSaveBlock1.tvShows.shows[showidx].common.var00 = 0; - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + gSaveBlock1.tvShows[showidx].common.var00 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; for (extradataidx=0; extradataidx<34; extradataidx++) { - gSaveBlock1.tvShows.shows[showidx].common.pad02[extradataidx] = 0; + gSaveBlock1.tvShows[showidx].common.pad02[extradataidx] = 0; } } sub_80BEBF4(); @@ -134,7 +122,8 @@ void sub_80BE074(void); void sub_80BE778(void); void sub_80BEB20(void); -asm(".section .text_a"); +u8 sub_80BFB54(u8); + s8 sub_80BF74C(TVShow tvShow[]); void sub_80BF55C(TVShow tvShow[], u8 showidx); @@ -151,7 +140,375 @@ void nullsub_21(void); void sub_80BE188(void); void sub_80BE320(void); -extern u8 GabbyAndTyGetBattleNum(void); +#ifdef NONMATCHING +u8 special_0x44(void) +{ + u8 i; + u8 j; + u8 var01; + TVShow *tvShow; + for (i=5; i<24; i++) + { + if (gSaveBlock1.tvShows[i].common.var00 == 0) + { + break; + } + } + i = Random() % i; + j = i; + do + { + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) != 4) + { + var01 = gSaveBlock1.tvShows[i].common.var01; + } else + { + tvShow = &gSaveBlock1.tvShows[i]; + if (tvShow->massOutbreak.var16 != 0) { + continue; + } else { + var01 = tvShow->common.var01; + } + } + if (var01 == 1) + { + return i; + } + } while (i == 0 ? i = 23 : i --, i != j); + return 0xff; +} +#else +__attribute__((naked)) +u8 special_0x44(void) +{ + asm(".syntax unified\n" + " push {r4-r7,lr}\n" + " mov r7, r9\n" + " mov r6, r8\n" + " push {r6,r7}\n" + " movs r4, 0x5\n" + " ldr r1, _080BD874 @ =gSaveBlock1\n" + " ldr r2, _080BD878 @ =0x000027ec\n" + " adds r0, r1, r2\n" + " ldrb r0, [r0]\n" + " cmp r0, 0\n" + " beq _080BD834\n" + " adds r2, r1, 0\n" + " ldr r1, _080BD87C @ =0x00002738\n" + "_080BD81A:\n" + " adds r0, r4, 0x1\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + " cmp r4, 0x17\n" + " bhi _080BD834\n" + " lsls r0, r4, 3\n" + " adds r0, r4\n" + " lsls r0, 2\n" + " adds r0, r2\n" + " adds r0, r1\n" + " ldrb r0, [r0]\n" + " cmp r0, 0\n" + " bne _080BD81A\n" + "_080BD834:\n" + " bl Random\n" + " lsls r0, 16\n" + " lsrs r0, 16\n" + " adds r1, r4, 0\n" + " bl __modsi3\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + " mov r8, r4\n" + " ldr r7, _080BD874 @ =gSaveBlock1\n" + " ldr r0, _080BD87C @ =0x00002738\n" + " adds r0, r7\n" + " mov r9, r0\n" + "_080BD850:\n" + " lsls r0, r4, 3\n" + " adds r0, r4\n" + " lsls r6, r0, 2\n" + " adds r5, r6, r7\n" + " ldr r1, _080BD87C @ =0x00002738\n" + " adds r0, r5, r1\n" + " ldrb r0, [r0]\n" + " bl sub_80BFB54\n" + " lsls r0, 24\n" + " lsrs r0, 24\n" + " cmp r0, 0x4\n" + " beq _080BD884\n" + " ldr r2, _080BD880 @ =0x00002739\n" + " adds r0, r5, r2\n" + " ldrb r0, [r0]\n" + " b _080BD890\n" + " .align 2, 0\n" + "_080BD874: .4byte gSaveBlock1\n" + "_080BD878: .4byte 0x000027ec\n" + "_080BD87C: .4byte 0x00002738\n" + "_080BD880: .4byte 0x00002739\n" + "_080BD884:\n" + " mov r0, r9\n" + " adds r1, r6, r0\n" + " ldrh r0, [r1, 0x16]\n" + " cmp r0, 0\n" + " bne _080BD898\n" + " ldrb r0, [r1, 0x1]\n" + "_080BD890:\n" + " cmp r0, 0x1\n" + " bne _080BD898\n" + " adds r0, r4, 0\n" + " b _080BD8AC\n" + "_080BD898:\n" + " cmp r4, 0\n" + " bne _080BD8A0\n" + " movs r4, 0x17\n" + " b _080BD8A6\n" + "_080BD8A0:\n" + " subs r0, r4, 0x1\n" + " lsls r0, 24\n" + " lsrs r4, r0, 24\n" + "_080BD8A6:\n" + " cmp r4, r8\n" + " bne _080BD850\n" + " movs r0, 0xFF\n" + "_080BD8AC:\n" + " pop {r3,r4}\n" + " mov r8, r3\n" + " mov r9, r4\n" + " pop {r4-r7}\n" + " pop {r1}\n" + " bx r1\n" + ".syntax divided\n"); +} +#endif + +u8 sub_80BDA30(void); + +u8 sub_80BD8B8(void) +{ + u8 retval; + retval = special_0x44(); + if (retval == 0xff) + { + return 0xff; + } + if (gSaveBlock1.outbreakPokemonSpecies != 0 && gSaveBlock1.tvShows[retval].common.var00 == TVSHOW_MASS_OUTBREAK) + { + return sub_80BDA30(); + } + return retval; +} + +u8 CheckForBigMovieOrEmergencyNewsOnTV(void); +void SetTVMetatilesOnMap(int, int, u16); +bool8 sub_80BECA0(void); +bool8 IsTVShowInSearchOfTrainersAiring(void); + +void UpdateTVScreensOnMap(int a0, int a1) +{ + u8 bigMovieOrEmergencyNewsOnTv; + FlagSet(SYS_TV_WATCH); + bigMovieOrEmergencyNewsOnTv = CheckForBigMovieOrEmergencyNewsOnTV(); + switch (bigMovieOrEmergencyNewsOnTv) + { + case 1: + SetTVMetatilesOnMap(a0, a1, 0x3); + break; + case 2: + break; + default: + if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F) + { + SetTVMetatilesOnMap(a0, a1, 0x3); + } + else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring())) + { + FlagReset(SYS_TV_WATCH); + SetTVMetatilesOnMap(a0, a1, 0x3); + } + } +} + +void SetTVMetatilesOnMap(int width, int height, u16 tileId) +{ + int x; + int y; + for (y=0; y<height; y++) + { + for (x=0; x<width; x++) + { + if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) + { + MapGridSetMetatileIdAt(x, y, tileId | 0xc00); + } + } + } +} + +void TurnOffTVScreen(void) +{ + SetTVMetatilesOnMap(gUnknown_03004870.width, gUnknown_03004870.height, 0x2); + DrawWholeMapView(); +} + +u8 sub_80BDA0C(void) +{ + return gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00; +} + +u8 sub_80BDA30(void) +{ + u8 showIdx; + for (showIdx=0; showIdx<24; showIdx++) + { + if (gSaveBlock1.tvShows[showIdx].common.var00 != 0 && gSaveBlock1.tvShows[showIdx].common.var00 != TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showIdx].common.var01 == 1) + { + return showIdx; + } + } + return 0xff; +} + +u8 special_0x4a(void) +{ + TVShow *tvShow; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + if (tvShow->common.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.outbreakPokemonSpecies) + { + return sub_80BDA30(); + } + return gSpecialVar_0x8004; +} + +void ResetGabbyAndTy(void) +{ + gSaveBlock1.gabbyAndTyData.mon1 = 0; + gSaveBlock1.gabbyAndTyData.mon2 = 0; + gSaveBlock1.gabbyAndTyData.lastMove = 0; + gSaveBlock1.gabbyAndTyData.quote = 0xffff; + gSaveBlock1.gabbyAndTyData.valA_0 = 0; + gSaveBlock1.gabbyAndTyData.valA_1 = 0; + gSaveBlock1.gabbyAndTyData.valA_2 = 0; + gSaveBlock1.gabbyAndTyData.valA_3 = 0; + gSaveBlock1.gabbyAndTyData.valA_4 = 0; + gSaveBlock1.gabbyAndTyData.valA_5 = 0; + gSaveBlock1.gabbyAndTyData.valB_0 = 0; + gSaveBlock1.gabbyAndTyData.valB_1 = 0; + gSaveBlock1.gabbyAndTyData.valB_2 = 0; + gSaveBlock1.gabbyAndTyData.valB_3 = 0; + gSaveBlock1.gabbyAndTyData.valB_4 = 0; + gSaveBlock1.gabbyAndTyData.valB_5 = 0; + gSaveBlock1.gabbyAndTyData.mapnum = 0; + gSaveBlock1.gabbyAndTyData.battleNum = 0; +} + +void TakeTVShowInSearchOfTrainersOffTheAir(void); + +void GabbyAndTyBeforeInterview(void) +{ + u8 i; + gSaveBlock1.gabbyAndTyData.mon1 = gUnknown_030042E0.unk6; + gSaveBlock1.gabbyAndTyData.mon2 = gUnknown_030042E0.unk26; + gSaveBlock1.gabbyAndTyData.lastMove = gUnknown_030042E0.unk22; + if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff) + { + gSaveBlock1.gabbyAndTyData.battleNum ++; + } + gSaveBlock1.gabbyAndTyData.valA_0 = gUnknown_030042E0.unk5_0; + if (gUnknown_030042E0.unk0) + { + gSaveBlock1.gabbyAndTyData.valA_1 = 1; + } else + { + gSaveBlock1.gabbyAndTyData.valA_1 = 0; + } + if (gUnknown_030042E0.unk3) + { + gSaveBlock1.gabbyAndTyData.valA_2 = 1; + } else + { + gSaveBlock1.gabbyAndTyData.valA_2 = 0; + } + if (!gUnknown_030042E0.unk5_1) + { + for (i=0; i<11; i++) + { + if (gUnknown_030042E0.unk36[i] != 0) + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + break; + } + } + } else + { + gSaveBlock1.gabbyAndTyData.valA_3 = 1; + } + TakeTVShowInSearchOfTrainersOffTheAir(); + if (gSaveBlock1.gabbyAndTyData.lastMove == 0) + { + FlagSet(1); + } +} + +void sub_80BDC14(void) +{ + gSaveBlock1.gabbyAndTyData.valB_0 = gSaveBlock1.gabbyAndTyData.valA_0; + gSaveBlock1.gabbyAndTyData.valB_1 = gSaveBlock1.gabbyAndTyData.valA_1; + gSaveBlock1.gabbyAndTyData.valB_2 = gSaveBlock1.gabbyAndTyData.valA_2; + gSaveBlock1.gabbyAndTyData.valB_3 = gSaveBlock1.gabbyAndTyData.valA_3; + gSaveBlock1.gabbyAndTyData.valA_4 = 1; + gSaveBlock1.gabbyAndTyData.mapnum = gMapHeader.name; + IncrementGameStat(GAME_STAT_GOT_INTERVIEWED); +} + +void TakeTVShowInSearchOfTrainersOffTheAir(void) +{ + gSaveBlock1.gabbyAndTyData.valA_4 = 0; +} + +u8 GabbyAndTyGetBattleNum(void) +{ + if (gSaveBlock1.gabbyAndTyData.battleNum >= 6) + { + return (gSaveBlock1.gabbyAndTyData.battleNum % 3) + 6; + } + return gSaveBlock1.gabbyAndTyData.battleNum; +} + +bool8 IsTVShowInSearchOfTrainersAiring(void) +{ + return gSaveBlock1.gabbyAndTyData.valA_4; +} + +bool8 GabbyAndTyGetLastQuote(void) +{ + if (gSaveBlock1.gabbyAndTyData.quote == 0xffff) + { + return FALSE; + } + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); + gSaveBlock1.gabbyAndTyData.quote |= 0xffff; + return TRUE; +} + +u8 sub_80BDD18(void) +{ + if (!gSaveBlock1.gabbyAndTyData.valB_0) + { + return 1; + } + if (gSaveBlock1.gabbyAndTyData.valB_3) + { + return 2; + } + if (gSaveBlock1.gabbyAndTyData.valB_2) + { + return 3; + } + if (gSaveBlock1.gabbyAndTyData.valB_1) + { + return 4; + } + return 0; +} void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) { switch (GabbyAndTyGetBattleNum()) { @@ -230,27 +587,27 @@ void sub_80BDEC8(void) { total = 0; sub_80BEB20(); sub_80BE778(); - if (gUnknown_030042E0.var28 == 0) { + if (gUnknown_030042E0.unk28 == 0) { sub_80BE074(); } else { sub_80BE028(); - if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.var28], gUnknown_030042E0.var2a) != 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.unk28], gUnknown_030042E0.unk2A) != 0) { + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) { for (i=0; i<11; i++) { - total += gUnknown_030042E0.var36[i]; + total += gUnknown_030042E0.unk36[i]; } - if (total != 0 || gUnknown_030042E0.var05_1 != 0) { + if (total != 0 || gUnknown_030042E0.unk5_1 != 0) { total = FALSE; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT; show->pokemonToday.var01 = total; - if (gUnknown_030042E0.var05_1 != 0) { + if (gUnknown_030042E0.unk5_1 != 0) { total = 1; item = ITEM_MASTER_BALL; } else { for (i=0; i<11; i++) { - total += gUnknown_030042E0.var36[i]; + total += gUnknown_030042E0.unk36[i]; } if (total > 0xff) { total = 0xff; @@ -260,8 +617,8 @@ void sub_80BDEC8(void) { show->pokemonToday.var12 = total; show->pokemonToday.ball = item; StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName); - StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.var2a); - show->pokemonToday.species = gUnknown_030042E0.var28; + StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.unk2A); + show->pokemonToday.species = gUnknown_030042E0.unk28; sub_80BE138(show); show->pokemonToday.language = GAME_LANGUAGE; show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname); @@ -274,15 +631,15 @@ void sub_80BDEC8(void) { void sub_80BE028(void) { TVShow *buffer; - buffer = &gSaveBlock1.tvShows.unknown_2A98; + buffer = &gSaveBlock1.tvShows[24]; if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + sub_80BF55C(gSaveBlock1.tvShows, 24); buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS); buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; } buffer->worldOfMasters.var02++; - buffer->worldOfMasters.var04 = gUnknown_030042E0.var28; - buffer->worldOfMasters.var08 = gUnknown_030042E0.var06; + buffer->worldOfMasters.var04 = gUnknown_030042E0.unk28; + buffer->worldOfMasters.var08 = gUnknown_030042E0.unk6; buffer->worldOfMasters.var0a = gMapHeader.name; } @@ -300,15 +657,15 @@ void sub_80BE074(void) { total = 0xff; } if (total > 2 && gUnknown_02024D26 == 1) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) { flag = FALSE; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; asm_comment("Here the wrong registers are used to hold the show ID and flag."); show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED; show->pokemonTodayFailed.var01 = flag; - show->pokemonTodayFailed.species = gUnknown_030042E0.var06; - show->pokemonTodayFailed.species2 = gUnknown_030042E0.var20; + show->pokemonTodayFailed.species = gUnknown_030042E0.unk6; + show->pokemonTodayFailed.species2 = gUnknown_030042E0.unk20; show->pokemonTodayFailed.var10 = total; show->pokemonTodayFailed.var11 = gUnknown_02024D26; show->pokemonTodayFailed.var12 = gMapHeader.name; @@ -440,9 +797,9 @@ void sub_80BE160(TVShow *show) { void sub_80BE188(void) { TVShow *show; TVShow *buffer; - buffer = &gSaveBlock1.tvShows.unknown_2A98; + buffer = &gSaveBlock1.tvShows[24]; if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; show->bravoTrainer.var01 = 1; show->bravoTrainer.species = buffer->bravoTrainer.species; @@ -451,7 +808,7 @@ void sub_80BE188(void) { show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank; show->bravoTrainer.var14 = buffer->bravoTrainer.var14; - show->bravoTrainer.var13_5 = buffer->bravoTrainer.var13_5; + show->bravoTrainer.contestResult = buffer->bravoTrainer.contestResult; show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory; sub_80BE160(show); show->bravoTrainer.language = GAME_LANGUAGE; @@ -462,11 +819,11 @@ void sub_80BE188(void) { void sub_80BE23C(u16 a0) { TVShow *show; - show = &gSaveBlock1.tvShows.unknown_2A98; + show = &gSaveBlock1.tvShows[24]; sub_80BF484(); - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 24); + sub_80BF55C(gSaveBlock1.tvShows, 24); show->bravoTrainer.var14 = a0; show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE; } @@ -474,10 +831,10 @@ void sub_80BE23C(u16 a0) { void sub_80BE284(u8 a0) { TVShow *show; - show = &gSaveBlock1.tvShows.unknown_2A98; - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + show = &gSaveBlock1.tvShows[24]; + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1) { - show->bravoTrainer.var13_5 = a0; + show->bravoTrainer.contestResult = a0; show->bravoTrainer.contestCategory = gScriptContestCategory; show->bravoTrainer.contestRank = gScriptContestRank; show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL); @@ -487,13 +844,13 @@ void sub_80BE284(u8 a0) { void sub_80BE320(void) { TVShow *show; - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE; show->bravoTrainerTower.var01 = 1; StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName); StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC); show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480; - show->bravoTrainerTower.winningMove = gSaveBlock2.filler_A8.var_482; + show->bravoTrainerTower.defeatedSpecies = gSaveBlock2.filler_A8.var_482; show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0); show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD; if (gSaveBlock2.filler_A8.var_4D0 == 0) { @@ -513,11 +870,11 @@ void sub_80BE3BC(void) { rval = sub_80BF77C(0x5555); if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) { sub_80BF20C(); if (gUnknown_02038724[0].item_amount >= 20) { - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER; tvShow->smartshopperShow.var01 = rval; tvShow->smartshopperShow.shopLocation = gMapHeader.name; @@ -561,7 +918,7 @@ void sub_80BE478(void) return; } - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW; tvShow->nameRaterShow.var01 = 1; @@ -588,7 +945,7 @@ void StartMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species; gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum; @@ -610,7 +967,7 @@ void sub_80BE5FC(void) TVShow *tvShow; u16 species; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER; tvShow->fanclubLetter.var01 = 1; @@ -626,7 +983,7 @@ void sub_80BE65C(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS; tvShow->recentHappenings.var01 = 1; @@ -642,7 +999,7 @@ void sub_80BE6A0(void) TVShow *tvShow; u8 monIndex; - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS; tvShow->fanclubOpinions.var01 = 1; @@ -680,7 +1037,7 @@ void sub_80BE778(void) for (i = 0; i < 24; i++) { - if (gSaveBlock1.tvShows.shows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) + if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK) { return; } @@ -691,7 +1048,7 @@ void sub_80BE778(void) return; } - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 == -1) { return; @@ -707,7 +1064,7 @@ void sub_80BE778(void) val2 = gUnknown_03005D38.var0; - tvShow = &gSaveBlock1.tvShows.shows[val2]; + tvShow = &gSaveBlock1.tvShows[val2]; tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK; tvShow->massOutbreak.var01 = 1; @@ -764,8 +1121,8 @@ void sub_80BE8EC(u16 arg0) TVShow *tvShow; if (gSaveBlock1.outbreakPokemonSpecies == 0) { for (showidx=0; showidx<24; showidx++) { - if (gSaveBlock1.tvShows.shows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows.shows[showidx].massOutbreak.var01 == 0x01) { - tvShow = &(gSaveBlock1.tvShows.shows[showidx]); + if (gSaveBlock1.tvShows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows[showidx].massOutbreak.var01 == 0x01) { + tvShow = &(gSaveBlock1.tvShows[showidx]); if (tvShow->massOutbreak.var16 < arg0) tvShow->massOutbreak.var16 = 0; else @@ -811,9 +1168,9 @@ void sub_80BE97C(bool8 flag) void sub_80BE9D4() { TVShow *show; - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) { - show = &(gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]); + show = &(gSaveBlock1.tvShows[gUnknown_03005D38.var0]); #ifdef NONMATCHING show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE; show->pokemonAngler.var01 = 0; @@ -839,18 +1196,17 @@ void sub_80BEA50(u16 var) gUnknown_020387E0 = var; } -void sub_80BF55C(TVShow tvShow[], u8 showidx); void sub_80BEA88(void); void sub_80BEA5C(u16 arg0) { TVShow *unk_2a98; - unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows[24]; if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS) { if (unk_2a98->worldOfMasters.var02 < 20) { - sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18); + sub_80BF55C(gSaveBlock1.tvShows, 0x18); } else { @@ -863,14 +1219,14 @@ void sub_80BEA88(void) TVShow *unk_2a98; TVShow *tvShow; u8 rval; - unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98; + unk_2a98 = &gSaveBlock1.tvShows[24]; rval = sub_80BF77C(0xFFFF); if (rval == 0) { - gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows); if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1) { - tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS; tvShow->worldOfMasters.var01 = rval; tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02; @@ -1136,7 +1492,7 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category) void SetContestCategoryStringVarForInterview(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); } @@ -1196,7 +1552,7 @@ bool8 sub_80BF1B4(u8 showIdx) TVShow *tvShows; u8 i; u32 trainerId; - tvShows = gSaveBlock1.tvShows.shows; + tvShows = gSaveBlock1.tvShows; trainerId = GetPlayerTrainerId(); for (i=5; i<24; i++) { @@ -1237,15 +1593,15 @@ void sub_80BF25C(u8 showType) u8 i; for (i=0; i<5; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == showType) { - if(gSaveBlock1.tvShows.shows[i].common.var01 == 1) + if (gSaveBlock1.tvShows[i].common.var00 == showType) { + if(gSaveBlock1.tvShows[i].common.var01 == 1) { gScriptResult = 1; } else { - sub_80BF55C(gSaveBlock1.tvShows.shows, i); - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF55C(gSaveBlock1.tvShows, i); + sub_80BF588(gSaveBlock1.tvShows); sub_80BF6D8(); } return; @@ -1288,7 +1644,7 @@ void sub_80BF334(void) sub_80BF25C(TVSHOW_FAN_CLUB_LETTER); if (gScriptResult == 0) { StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubLetter.pad04, 6); } } @@ -1298,7 +1654,7 @@ void sub_80BF3A4(void) TVShow *show; sub_80BF25C(TVSHOW_RECENT_HAPPENINGS); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->recentHappenings.var04, 6); } } @@ -1311,7 +1667,7 @@ void sub_80BF3DC(void) StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]); GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2); StringGetEnd10(gStringVar2); - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->fanclubOpinions.var1C, 2); } } @@ -1331,7 +1687,7 @@ void sub_80BF484(void) TVShow *show; sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->bravoTrainer.var04, 2); } } @@ -1341,7 +1697,7 @@ void sub_80BF4BC(void) TVShow *show; sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE); if (gScriptResult == 0) { - show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]; + show = &gSaveBlock1.tvShows[gUnknown_03005D38.var0]; sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later } } @@ -1397,7 +1753,7 @@ void sub_80BF588(TVShow tvShow[]) for (showidx2=showidx+1; showidx2<24; showidx2++) { if (tvShow[showidx2].common.var00 != 0) { tvShow[showidx] = tvShow[showidx2]; - sub_80BF55C(gSaveBlock1.tvShows.shows, showidx2); + sub_80BF55C(gSaveBlock1.tvShows, showidx2); break; } } @@ -1433,7 +1789,7 @@ u16 sub_80BF674(u16 species) void sub_80BF6D8(void) { - gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows); + gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows); gSpecialVar_0x8006 = gUnknown_03005D38.var0; if (gUnknown_03005D38.var0 == -1) gScriptResult = 1; @@ -1549,7 +1905,7 @@ bool8 sub_80BF974(void) u8 i; for (i=0; i<5; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == gSpecialVar_0x8004) + if (gSaveBlock1.tvShows[i].common.var00 == gSpecialVar_0x8004) return TRUE; } return FALSE; @@ -1803,14 +2159,15 @@ void sub_80BFD20(void) } extern u8 ewram[]; -#define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(ewram + 0x7000)) +#define gUnknown_02007000 (*(ewramStruct_02007000 *)(ewram + 0x7000)) extern u8 gUnknown_020387E4; -struct ewramStruct_0207000 { - struct SaveTVStruct tvshows[4]; -}; +typedef union ewramStruct_02007000 { + TVShow tvshows[4][25]; + struct UnknownSaveStruct2ABC unknown_2abc[4][16]; +} ewramStruct_02007000; -void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3); +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]); void sub_80C04A0(void); void sub_80C01D4(void); @@ -1819,44 +2176,45 @@ void sub_80C0408(void); void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2) { u8 i; - struct ewramStruct_0207000 *ewramTVShows; + ewramStruct_02007000 *ewramTVShows; for (i=0; i<4; i++) { - memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], sizeof(struct SaveTVStruct)); + memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], 25 * sizeof(TVShow)); } ewramTVShows = &gUnknown_02007000; switch (arg2) { case 0: - sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + sub_80BFE24(gSaveBlock1.tvShows, ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); break; case 1: - sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]); + sub_80BFE24(ewramTVShows->tvshows[0], gSaveBlock1.tvShows, ewramTVShows->tvshows[2], ewramTVShows->tvshows[3]); break; case 2: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]); + sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], gSaveBlock1.tvShows, ewramTVShows->tvshows[3]); break; case 3: - sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows); + sub_80BFE24(ewramTVShows->tvshows[0], ewramTVShows->tvshows[1], ewramTVShows->tvshows[2], gSaveBlock1.tvShows); break; } - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF588(gSaveBlock1.tvShows); sub_80C04A0(); - sub_80BF588(gSaveBlock1.tvShows.shows); + sub_80BF588(gSaveBlock1.tvShows); sub_80C01D4(); sub_80C0408(); } extern u8 gUnknown_03000720; +extern u8 gUnknown_03000721; extern s8 gUnknown_03000722; s8 sub_80C019C(TVShow tvShows[]); -bool8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx); +bool8 sub_80BFF68(TVShow * tv1[25], TVShow * tv2[25], u8 idx); u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx); u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx); u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx); -void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3) +void sub_80BFE24(TVShow arg0[25], TVShow arg1[25], TVShow arg2[25], TVShow arg3[25]) { u8 i, j; - struct SaveTVStruct ** argslist[4]; + TVShow ** argslist[4]; argslist[0] = &arg0; argslist[1] = &arg1; argslist[2] = &arg2; @@ -1866,20 +2224,20 @@ void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct Sa for (i=0; i<gUnknown_03000720; i++) { if (i == 0) gUnknown_020387E4 = i; - gUnknown_03000722 = sub_80C019C(argslist[i][0]->shows); + gUnknown_03000722 = sub_80C019C(argslist[i][0]); if (gUnknown_03000722 == -1) { gUnknown_020387E4++; if (gUnknown_020387E4 == gUnknown_03000720) return; } else { for (j=0; j<gUnknown_03000720-1; j++) { - gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]->shows); - if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(argslist[(i + j + 1) % gUnknown_03000720], argslist[i], (i + j + 1) % gUnknown_03000720) == 1) { + gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]); + if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(&argslist[(i + j + 1) % gUnknown_03000720][0], &argslist[i][0], (i + j + 1) % gUnknown_03000720) == 1) { break; } } if (j == gUnknown_03000720 - 1) { - sub_80BF55C(argslist[i][0]->shows, gUnknown_03000722); + sub_80BF55C(argslist[i][0], gUnknown_03000722); } } } @@ -1887,28 +2245,28 @@ void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct Sa } #ifdef NONMATCHING -bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { +bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { u8 value; u8 switchval; - struct SaveTVStruct *tv1; - struct SaveTVStruct *tv2; + TVShow tv1[25]; + TVShow tv2[25]; tv1 = *arg1; tv2 = *arg2; value = FALSE; - switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00); + switchval = sub_80BFB54(tv2[gUnknown_03000722].common.var00); switch (switchval) { case 2: - value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C004C(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; case 3: - value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C00B4(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; case 4: - value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx); + value = sub_80C0134(&tv1[gUnknown_03005D38.var0], &tv2[gUnknown_03000722], idx); break; } if (value == TRUE) { - sub_80BF55C(tv2->shows, gUnknown_03000722); + sub_80BF55C(tv2, gUnknown_03000722); return TRUE; } else { return FALSE; @@ -1916,7 +2274,7 @@ bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 i } #else __attribute__((naked)) -bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) { +bool8 sub_80BFF68(TVShow * arg1[25], TVShow * arg2[25], u8 idx) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ sub sp, 0x4\n\ @@ -2096,54 +2454,54 @@ void sub_80C03A8(u8 showidx); void sub_80C03C8(u16 species, u8 showidx); #ifdef NONMATCHING -void sub_80C01D4(void) { - u8 i; - for (i=0; i<24; i++) { - switch (gSaveBlock1.tvShows.shows[i].common.var00) { - case 0: - break; - case TVSHOW_FAN_CLUB_LETTER: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i); - break; - case TVSHOW_RECENT_HAPPENINGS: - break; - case TVSHOW_PKMN_FAN_CLUB_OPINIONS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i); - break; - case TVSHOW_UNKN_SHOWTYPE_04: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i); - break; - case TVSHOW_NAME_RATER_SHOW: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i); - break; - case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i); - break; - case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i); - break; - case TVSHOW_POKEMON_TODAY_CAUGHT: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i); - break; - case TVSHOW_SMART_SHOPPER: - break; - case TVSHOW_POKEMON_TODAY_FAILED: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i); - break; - case TVSHOW_FISHING_ADVICE: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i); - break; - case TVSHOW_WORLD_OF_MASTERS: - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i); - sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i); - break; - case TVSHOW_MASS_OUTBREAK: - break; - default: - sub_80C03A8(i); +void sub_80C01D4(void) +{ + u16 i; + for (i=0; i<24; i++) + { + switch (gSaveBlock1.tvShows[i].common.var00) + { + case 0: + case TVSHOW_RECENT_HAPPENINGS: + case TVSHOW_SMART_SHOPPER: + case TVSHOW_MASS_OUTBREAK: + break; + case TVSHOW_FAN_CLUB_LETTER: + sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubLetter.species, i); + break; + case TVSHOW_PKMN_FAN_CLUB_OPINIONS: + sub_80C03C8((&gSaveBlock1.tvShows[i])->fanclubOpinions.var02, i); + break; + case TVSHOW_UNKN_SHOWTYPE_04: + sub_80C03C8((&gSaveBlock1.tvShows[i])->unkShow04.var06, i); + break; + case TVSHOW_NAME_RATER_SHOW: + sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->nameRaterShow.var1C, i); + break; + case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainer.species, i); + break; + case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->bravoTrainerTower.defeatedSpecies, i); + break; + case TVSHOW_POKEMON_TODAY_CAUGHT: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonToday.species, i); + break; + case TVSHOW_POKEMON_TODAY_FAILED: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonTodayFailed.species2, i); + break; + case TVSHOW_FISHING_ADVICE: + sub_80C03C8((&gSaveBlock1.tvShows[i])->pokemonAngler.var04, i); + break; + case TVSHOW_WORLD_OF_MASTERS: + sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var08, i); + sub_80C03C8((&gSaveBlock1.tvShows[i])->worldOfMasters.var04, i); + break; + default: + sub_80C03A8(i); } } } @@ -2356,12 +2714,12 @@ _080C03A0:\n\ #endif void sub_80C03A8(u8 showidx) { - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; } void sub_80C03C8(u16 species, u8 showidx) { if (GetNationalPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0) { - gSaveBlock1.tvShows.shows[showidx].common.var01 = 0; + gSaveBlock1.tvShows[showidx].common.var01 = 0; } } @@ -2370,8 +2728,8 @@ void sub_80C0408(void) { u16 i; if (FlagGet(SYS_GAME_CLEAR) != 1) { for (i=0; i<24; i++) { - if (gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { - gSaveBlock1.tvShows.shows[i].common.var01 = 0; + if (gSaveBlock1.tvShows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows[i].common.var00 == TVSHOW_MASS_OUTBREAK) { + gSaveBlock1.tvShows[i].common.var01 = 0; } } } @@ -2428,13 +2786,94 @@ _080C0458: .4byte 0x00002738\n\ void sub_80C045C(void) { u8 i; for (i=0; i<5; i++) { - if (sub_80BFB54(gSaveBlock1.tvShows.shows[i].common.var00) == 2) { - gSaveBlock1.tvShows.shows[i].common.var01 = 0; + if (sub_80BFB54(gSaveBlock1.tvShows[i].common.var00) == 2) { + gSaveBlock1.tvShows[i].common.var01 = 0; } } } -asm(".section .dotvshow\n"); +void sub_80C04A0(void) +{ + s8 showIdx; + s8 count; + count = 0; + for (showIdx=5; showIdx<24; showIdx++) + { + if (gSaveBlock1.tvShows[showIdx].common.var00 == 0) + { + count ++; + } + } + for (showIdx=0; showIdx<5-count; showIdx++) + { + sub_80BF55C(gSaveBlock1.tvShows, showIdx+5); + } +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16], struct UnknownSaveStruct2ABC[16]); +void sub_80C0750(void); +void sub_80C0788(void); +s8 sub_80C0730(struct UnknownSaveStruct2ABC[16], u8); +void sub_80C06BC(struct UnknownSaveStruct2ABC *[16], struct UnknownSaveStruct2ABC *[16]); + +void sub_80C0514(void *a0, u32 a1, u8 a2) +{ + ewramStruct_02007000 *struct02007000; + u8 i; + for (i=0; i<4; i++) + { + memcpy(gUnknown_02007000.unknown_2abc[i], a0 + i * a1, 64); + } + struct02007000 = &gUnknown_02007000; + switch (a2) + { + case 0: + sub_80C05C4(gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 1: + sub_80C05C4(struct02007000->unknown_2abc[0], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[2], struct02007000->unknown_2abc[3]); + break; + case 2: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], gSaveBlock1.unknown_2ABC, struct02007000->unknown_2abc[3]); + break; + case 3: + sub_80C05C4(struct02007000->unknown_2abc[0], struct02007000->unknown_2abc[1], struct02007000->unknown_2abc[2], gSaveBlock1.unknown_2ABC); + break; + } + sub_80C0750(); + sub_80C0788(); +} + +void sub_80C05C4(struct UnknownSaveStruct2ABC a0[16], struct UnknownSaveStruct2ABC a1[16], struct UnknownSaveStruct2ABC a2[16], struct UnknownSaveStruct2ABC a3[16]) +{ + u8 i; + u8 j; + u8 k; + struct UnknownSaveStruct2ABC ** arglist[4]; + arglist[0] = &a0; + arglist[1] = &a1; + arglist[2] = &a2; + arglist[3] = &a3; + gUnknown_03000721 = GetLinkPlayerCount(); + for (i=0; i<16; i++) + { + for (j=0; j<gUnknown_03000721; j++) + { + gUnknown_03000722 = sub_80C0730(*arglist[j], i); + if (gUnknown_03000722 != -1) + { + for (k=0; k<gUnknown_03000721-1; k++) + { + gUnknown_03005D38.var0 = sub_80BEBC8(*arglist[(j + k + 1) % gUnknown_03000721]); + if (gUnknown_03005D38.var0 != -1) + { + sub_80C06BC(arglist[(j + k + 1) % gUnknown_03000721], arglist[j]); + } + } + } + } + } +} void DoTVShowPokemonFanClubLetter(void); void DoTVShowRecentHappenings(void); @@ -2452,11 +2891,11 @@ void DoTVShowTheWorldOfMasters(void); bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2); -void sub_80C06BC(int *arg0, int *arg1) { +void sub_80C06BC(struct UnknownSaveStruct2ABC *arg0[16], struct UnknownSaveStruct2ABC *arg1[16]) { struct UnknownSaveStruct2ABC *str0; struct UnknownSaveStruct2ABC *str1; - str0 = (void *)arg0[0]; - str1 = (void *)arg1[0]; + str0 = arg0[0]; + str1 = arg1[0]; str1 += gUnknown_03000722; sub_80C06E8(str0, str1, gUnknown_03005D38.var0); } @@ -2504,8 +2943,8 @@ void sub_80C0788(void) { } void DoTVShow(void) { - if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) { - switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) { + if (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 != 0) { + switch (gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var00) { case TVSHOW_FAN_CLUB_LETTER: DoTVShowPokemonFanClubLetter(); break; @@ -2556,7 +2995,308 @@ void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) { } } -asm(".section .text_c"); +void DoTVShowBravoTrainerPokemonProfile(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); + sub_80BEF10(2, tvShow->bravoTrainer.contestRank); + if (!StringCompareWithoutExtCtrlCodes(gSpeciesNames[tvShow->bravoTrainer.species], tvShow->bravoTrainer.pokemonNickname)) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 1; + } + break; + case 1: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainer.pokemonNickname, tvShow->bravoTrainer.var1f); + CopyContestCategoryToStringVar(2, tvShow->bravoTrainer.contestCategory); + gUnknown_020387E8 = 2; + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + if (tvShow->bravoTrainer.contestResult == 0) // placed first + { + gUnknown_020387E8 = 3; + } else + { + gUnknown_020387E8 = 4; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); + sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + sub_80EB3FC(gStringVar2, tvShow->bravoTrainer.var04[0]); + sub_80BF088(2, tvShow->bravoTrainer.contestResult + 1); + gUnknown_020387E8 = 5; + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory); + sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); + if (tvShow->bravoTrainer.var14) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 7; + } + break; + case 6: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + StringCopy(gStringVar2, gMoveNames[tvShow->bravoTrainer.var14]); + sub_80EB3FC(gStringVar3, tvShow->bravoTrainer.var04[1]); + gUnknown_020387E8 = 7; + break; + case 7: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainer.playerName, tvShow->bravoTrainer.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainer.species]); + TVShowDone(); + break; + case 8: + StringCopy(gStringVar1, gSpeciesNames[tvShow->bravoTrainer.species]); + gUnknown_020387E8 = 2; + break; + } + ShowFieldMessage(gTVBravoTrainerTextGroup[switchval]); +} + +void DoTVShowBravoTrainerBattleTowerProfile(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); + if (tvShow->bravoTrainerTower.var16 >= 7) + { + gUnknown_020387E8 = 1; + } else + { + gUnknown_020387E8 = 2; + } + break; + case 1: + sub_80BF088(0, tvShow->bravoTrainerTower.btLevel); + sub_80BF088(1, tvShow->bravoTrainerTower.var16); + if (tvShow->bravoTrainerTower.var1c == 1) + { + gUnknown_020387E8 = 3; + } else + { + gUnknown_020387E8 = 4; + } + break; + case 2: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + sub_80BF088(1, tvShow->bravoTrainerTower.var16 + 1); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 3: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 4: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.defeatedSpecies]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 5; + } else + { + gUnknown_020387E8 = 6; + } + break; + case 5: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 6: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 7: + gUnknown_020387E8 = 11; + break; + case 8: + case 9: + case 10: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 11; + break; + case 11: + sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); + if (tvShow->bravoTrainerTower.var1b == 0) + { + gUnknown_020387E8 = 12; + } else + { + gUnknown_020387E8 = 13; + } + break; + case 12: + case 13: + sub_80EB3FC(gStringVar1, tvShow->bravoTrainerTower.var18[0]); + TVShowConvertInternationalString(gStringVar2, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + TVShowConvertInternationalString(gStringVar3, tvShow->bravoTrainerTower.pokemonName, tvShow->bravoTrainerTower.language); + gUnknown_020387E8 = 14; + break; + case 14: + TVShowConvertInternationalString(gStringVar1, tvShow->bravoTrainerTower.trainerName, tvShow->bravoTrainerTower.language); + StringCopy(gStringVar2, gSpeciesNames[tvShow->bravoTrainerTower.species]); + TVShowDone(); + break; + } + ShowFieldMessage(gTVBravoTrainerBattleTowerTextGroup[switchval]); +} + +void DoTVShowTodaysSmartShopper(void) +{ + TVShow *tvShow; + u8 switchval; + + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; + gScriptResult = 0; + switchval = gUnknown_020387E8; + switch(switchval) + { + case 0: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + sub_80FBFB4(gStringVar2, tvShow->smartshopperShow.shopLocation, 0); + if (tvShow->smartshopperShow.itemAmounts[0] >= 0xff) + { + gUnknown_020387E8 = 11; + } else + { + gUnknown_020387E8 = 1; + } + break; + case 1: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0]); + gUnknown_020387E8 += (Random() % 4) + 1; + break; + case 2: + case 4: + case 5: + if (tvShow->smartshopperShow.itemIds[1] != 0) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 10; + } + break; + case 3: + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[0] + 1); + if (tvShow->smartshopperShow.itemIds[1] != 0) + { + gUnknown_020387E8 = 6; + } else + { + gUnknown_020387E8 = 10; + } + break; + case 6: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[1])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[1]); + if (tvShow->smartshopperShow.itemIds[2] != 0) + { + gUnknown_020387E8 = 7; + } else if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 7: + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[2])->name); + sub_80BF088(2, tvShow->smartshopperShow.itemAmounts[2]); + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 8: + if (tvShow->smartshopperShow.itemAmounts[0] < 0xff) + { + gUnknown_020387E8 = 9; + } else + { + gUnknown_020387E8 = 12; + } + break; + case 9: + sub_80BF154(1, &tvShow->smartshopperShow); + TVShowDone(); + break; + case 10: + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 9; + } + break; + case 11: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + StringCopy(gStringVar2, ItemId_GetItem(tvShow->smartshopperShow.itemIds[0])->name); + if (tvShow->smartshopperShow.priceReduced == 1) + { + gUnknown_020387E8 = 8; + } else + { + gUnknown_020387E8 = 12; + } + break; + case 12: + TVShowConvertInternationalString(gStringVar1, tvShow->smartshopperShow.playerName, tvShow->smartshopperShow.language); + TVShowDone(); + break; + } + ShowFieldMessage(gTVSmartShopperTextGroup[switchval]); +} void TVShowConvertInternationalString(u8 *, u8 *, u8); @@ -2565,7 +3305,7 @@ void TakeTVShowInSearchOfTrainersOffTheAir(void); void DoTVShowTheNameRaterShow(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2661,7 +3401,7 @@ void DoTVShowTheNameRaterShow(void) { void DoTVShowPokemonTodaySuccessfulCapture(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2731,7 +3471,7 @@ void DoTVShowPokemonTodayFailedCapture(void) { TVShow *tvShow; u8 switchval; u16 rval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2777,7 +3517,7 @@ void DoTVShowPokemonFanClubLetter(void) { TVShow *tvShow; u8 switchval; u16 rval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2828,7 +3568,7 @@ void DoTVShowPokemonFanClubLetter(void) { void DoTVShowRecentHappenings(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2860,7 +3600,7 @@ void DoTVShowRecentHappenings(void) { void DoTVShowPokemonFanClubOpinions(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -2895,7 +3635,7 @@ void DoTVShowPokemonNewsMassOutbreak(void) { TVShow *tvShow; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0); @@ -2914,7 +3654,7 @@ void DoTVShowInSearchOfTrainers(void) { switch (switchval) { case 0: sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0); - if (gSaveBlock1.gabbyAndTyData.val9 > 1) { + if (gSaveBlock1.gabbyAndTyData.battleNum > 1) { gUnknown_020387E8 = 1; } else { gUnknown_020387E8 = 2; @@ -2938,7 +3678,7 @@ void DoTVShowInSearchOfTrainers(void) { break; case 3: StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); - StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]); + StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.lastMove]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); gUnknown_020387E8 = 8; break; @@ -2949,7 +3689,7 @@ void DoTVShowInSearchOfTrainers(void) { gUnknown_020387E8 = 8; break; case 8: - sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2); + sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote); StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]); StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]); gScriptResult = 1; @@ -2963,7 +3703,7 @@ void DoTVShowInSearchOfTrainers(void) { void DoTVShowPokemonAngler(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) { gUnknown_020387E8 = 0; @@ -2991,7 +3731,7 @@ void DoTVShowPokemonAngler(void) { void DoTVShowTheWorldOfMasters(void) { TVShow *tvShow; u8 switchval; - tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004]; + tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004]; gScriptResult = 0; switchval = gUnknown_020387E8; switch (switchval) { @@ -3022,7 +3762,7 @@ void TVShowDone(void) gScriptResult = 1; gUnknown_020387E8 = 0; - gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 = 0; + gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0; } void sub_80C2014(void) |