summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-06-12 19:10:28 -0400
committerProjectRevoTPP <projectrevotpp@hotmail.com>2017-06-12 19:10:28 -0400
commit13a7274a1649a8cb8f3bc165ee1eb403c12430dc (patch)
treebf08a44b86a3e5b5ae3200470f16843fa1ce2358
parentda3eaf350d8ff4b61ba919a0a987ab2468525b9d (diff)
parente09e1da6c252e17cf6db429ad142b05dbf156548 (diff)
merge
-rw-r--r--asm/tv.s1822
-rw-r--r--[-rwxr-xr-x]include/asm.inc.h2
-rw-r--r--include/battle.h25
-rw-r--r--[-rwxr-xr-x]include/field_effect_helpers.h0
-rw-r--r--[-rwxr-xr-x]include/field_map_obj.h0
-rw-r--r--[-rwxr-xr-x]include/field_player_avatar.h0
-rw-r--r--include/fieldmap.h1
-rw-r--r--include/global.fieldmap.h33
-rw-r--r--include/global.h230
-rw-r--r--[-rwxr-xr-x]include/trainer_see.h0
-rw-r--r--ld_script.txt6
-rw-r--r--src/battle_2.c25
-rw-r--r--src/easy_chat.c6
-rw-r--r--src/fieldmap.c8
-rwxr-xr-x[-rw-r--r--]src/tv.c1114
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)