summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL.md2
-rw-r--r--asm/battle_2.s4792
-rw-r--r--asm/cable_club.s4
-rw-r--r--asm/daycare.s458
-rw-r--r--asm/easy_chat.s362
-rw-r--r--asm/egg_hatch.s10
-rw-r--r--asm/secret_base.s2028
-rw-r--r--asm/tv.s6507
-rw-r--r--data/scripts/maps/SlateportCity.inc8
-rw-r--r--data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc8
-rw-r--r--data/specials.inc2
-rw-r--r--include/asm.inc.h13
-rw-r--r--include/battle.h27
-rw-r--r--include/contest_painting.h8
-rw-r--r--include/decoration.h19
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/flags.h4
-rw-r--r--include/global.fieldmap.h4
-rw-r--r--include/global.h217
-rw-r--r--include/item.h19
-rw-r--r--include/pokedex.h2
-rw-r--r--include/pokemon.h1
-rw-r--r--include/record_mixing.h16
-rw-r--r--include/tv.h23
-rw-r--r--include/vars.h11
-rw-r--r--ld_script.txt10
-rw-r--r--src/battle_2.c2182
-rw-r--r--src/credits.c1175
-rw-r--r--src/daycare.c367
-rw-r--r--src/easy_chat.c233
-rw-r--r--src/intro.c1
-rw-r--r--src/item.c19
-rw-r--r--src/mori_debug_menu.c4
-rw-r--r--src/record_mixing.c190
-rw-r--r--src/rom3.c48
-rw-r--r--src/rom_8077ABC.c1
-rw-r--r--src/secret_base.c1056
-rw-r--r--src/tv.c2773
-rw-r--r--tools/aif2pcm/Makefile4
-rw-r--r--tools/bin2c/Makefile4
-rw-r--r--tools/gbagfx/Makefile4
-rw-r--r--tools/mid2agb/Makefile4
-rw-r--r--tools/preproc/Makefile4
-rw-r--r--tools/ramscrgen/Makefile4
-rw-r--r--tools/rsfont/Makefile4
-rw-r--r--tools/scaninc/Makefile4
46 files changed, 6995 insertions, 15642 deletions
diff --git a/INSTALL.md b/INSTALL.md
index 1d50d778e..b852dd126 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -21,7 +21,7 @@ Finally, build the rom.
Install [**devkitARM**](http://devkitpro.org/wiki/Getting_Started/devkitARM).
-Then get the compiled tools from https://github.com/YamaArashi/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeruby directory.
+Then get the compiled tools from https://github.com/pret/pokeruby-tools. Copy the `tools/` folder over the `tools/` folder in your pokeruby directory.
You can then build pokeruby using `make` in the MSYS environment provided with devkitARM.
diff --git a/asm/battle_2.s b/asm/battle_2.s
index f1c865a49..cff6efe06 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -6,4798 +6,6 @@
.text
- thumb_func_start sub_800FCD4
-sub_800FCD4: @ 800FCD4
- push {lr}
- ldr r0, _0800FCF4 @ =REG_VCOUNT
- ldrh r0, [r0]
- subs r0, 0x6F
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x30
- bhi _0800FCEE
- ldr r1, _0800FCF8 @ =REG_BG0CNT
- movs r2, 0x98
- lsls r2, 8
- adds r0, r2, 0
- strh r0, [r1]
-_0800FCEE:
- pop {r0}
- bx r0
- .align 2, 0
-_0800FCF4: .4byte REG_VCOUNT
-_0800FCF8: .4byte REG_BG0CNT
- thumb_func_end sub_800FCD4
-
- thumb_func_start sub_800FCFC
-sub_800FCFC: @ 800FCFC
- push {lr}
- bl Random
- ldr r1, _0800FD78 @ =REG_BG0HOFS
- ldr r0, _0800FD7C @ =gUnknown_030042A4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD80 @ =gUnknown_030042A0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD84 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD88 @ =gUnknown_030041B4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD8C @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD90 @ =gUnknown_03004280
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD94 @ =gUnknown_030041B0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0800FD98 @ =gUnknown_030041B8
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x22
- ldr r0, _0800FD9C @ =gUnknown_030042C4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x4
- ldr r0, _0800FDA0 @ =gUnknown_03004240
- ldrh r0, [r0]
- strh r0, [r1]
- subs r1, 0x2
- ldr r0, _0800FDA4 @ =gUnknown_03004200
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x4
- ldr r0, _0800FDA8 @ =gUnknown_03004244
- ldrh r0, [r0]
- strh r0, [r1]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8089668
- pop {r0}
- bx r0
- .align 2, 0
-_0800FD78: .4byte REG_BG0HOFS
-_0800FD7C: .4byte gUnknown_030042A4
-_0800FD80: .4byte gUnknown_030042A0
-_0800FD84: .4byte gUnknown_030042C0
-_0800FD88: .4byte gUnknown_030041B4
-_0800FD8C: .4byte gUnknown_03004288
-_0800FD90: .4byte gUnknown_03004280
-_0800FD94: .4byte gUnknown_030041B0
-_0800FD98: .4byte gUnknown_030041B8
-_0800FD9C: .4byte gUnknown_030042C4
-_0800FDA0: .4byte gUnknown_03004240
-_0800FDA4: .4byte gUnknown_03004200
-_0800FDA8: .4byte gUnknown_03004244
- thumb_func_end sub_800FCFC
-
- thumb_func_start nullsub_36
-nullsub_36: @ 800FDAC
- bx lr
- thumb_func_end nullsub_36
-
- thumb_func_start sub_800FDB0
-sub_800FDB0: @ 800FDB0
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0800FDD0
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- lsrs r0, 8
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x20]
- b _0800FDE2
-_0800FDD0:
- movs r1, 0x32
- ldrsh r0, [r5, r1]
- movs r1, 0xFF
- lsls r1, 8
- ands r0, r1
- asrs r0, 8
- ldrh r1, [r5, 0x30]
- subs r1, r0
- strh r1, [r5, 0x20]
-_0800FDE2:
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r1, 0
- ldrh r1, [r5, 0x32]
- adds r0, r1
- strh r0, [r5, 0x32]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0800FE16
- ldr r4, _0800FE1C @ =0x00002710
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- adds r0, r5, 0
- bl FreeSpriteOamMatrix
- adds r0, r5, 0
- bl DestroySprite
-_0800FE16:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0800FE1C: .4byte 0x00002710
- thumb_func_end sub_800FDB0
-
- thumb_func_start sub_800FE20
-sub_800FE20: @ 800FE20
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, _0800FE3C @ =sub_800FDB0
- str r0, [r4, 0x1C]
- movs r0, 0x68
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0800FE3C: .4byte sub_800FDB0
- thumb_func_end sub_800FE20
-
- thumb_func_start sub_800FE40
-sub_800FE40: @ 800FE40
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- ldr r0, _0800FE88 @ =0x02000000
- ldr r2, _0800FE8C @ =0x000160cb
- adds r0, r2
- ldrb r2, [r0]
- ldr r0, _0800FE90 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0800FEB4
- ldr r1, _0800FE94 @ =gLinkPlayers
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- cmp r0, 0x1
- beq _0800FEA0
- cmp r0, 0x1
- bgt _0800FE98
- cmp r0, 0
- beq _0800FEB4
- b _0800FEBC
- .align 2, 0
-_0800FE88: .4byte 0x02000000
-_0800FE8C: .4byte 0x000160cb
-_0800FE90: .4byte gBattleTypeFlags
-_0800FE94: .4byte gLinkPlayers
-_0800FE98:
- cmp r0, 0x2
- beq _0800FEB4
- cmp r0, 0x3
- bne _0800FEBC
-_0800FEA0:
- ldr r1, _0800FEAC @ =gEnemyParty
- str r1, [sp, 0x4]
- ldr r2, _0800FEB0 @ =gPlayerParty
- str r2, [sp, 0x8]
- b _0800FEBC
- .align 2, 0
-_0800FEAC: .4byte gEnemyParty
-_0800FEB0: .4byte gPlayerParty
-_0800FEB4:
- ldr r3, _08010008 @ =gPlayerParty
- str r3, [sp, 0x4]
- ldr r0, _0801000C @ =gEnemyParty
- str r0, [sp, 0x8]
-_0800FEBC:
- movs r7, 0
- movs r1, 0
- mov r8, r1
- ldr r2, [sp]
- lsls r2, 2
- str r2, [sp, 0xC]
- movs r3, 0xCE
- lsls r3, 1
- mov r10, r3
- mov r9, r1
-_0800FED0:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- ldr r0, [sp, 0x4]
- adds r4, r0, r4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- adds r1, r0, 0
- cmp r5, 0
- beq _0800FF40
- cmp r5, r10
- beq _0800FF14
- cmp r6, 0
- beq _0800FF14
- cmp r1, 0
- bne _0800FF14
- movs r0, 0x1
- mov r2, r9
- lsls r0, r2
- orrs r7, r0
-_0800FF14:
- cmp r5, 0
- beq _0800FF40
- cmp r6, 0
- beq _0800FF2C
- cmp r5, r10
- beq _0800FF24
- cmp r1, 0
- beq _0800FF2C
-_0800FF24:
- movs r0, 0x2
- mov r3, r9
- lsls r0, r3
- orrs r7, r0
-_0800FF2C:
- cmp r5, 0
- beq _0800FF40
- cmp r5, r10
- beq _0800FF40
- cmp r6, 0
- bne _0800FF40
- movs r0, 0x3
- mov r1, r9
- lsls r0, r1
- orrs r7, r0
-_0800FF40:
- movs r2, 0x2
- add r9, r2
- movs r3, 0x1
- add r8, r3
- mov r0, r8
- cmp r0, 0x5
- ble _0800FED0
- ldr r1, _08010010 @ =gTasks
- ldr r2, [sp, 0xC]
- ldr r3, [sp]
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0xE]
- movs r7, 0
- movs r0, 0
- mov r8, r0
- movs r1, 0xCE
- lsls r1, 1
- mov r10, r1
- mov r9, r0
-_0800FF6A:
- movs r0, 0x64
- mov r4, r8
- muls r4, r0
- ldr r2, [sp, 0x8]
- adds r4, r2, r4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- adds r1, r0, 0
- cmp r5, 0
- beq _0800FFDA
- cmp r5, r10
- beq _0800FFAE
- cmp r6, 0
- beq _0800FFAE
- cmp r1, 0
- bne _0800FFAE
- movs r0, 0x1
- mov r3, r9
- lsls r0, r3
- orrs r7, r0
-_0800FFAE:
- cmp r5, 0
- beq _0800FFDA
- cmp r6, 0
- beq _0800FFC6
- cmp r5, r10
- beq _0800FFBE
- cmp r1, 0
- beq _0800FFC6
-_0800FFBE:
- movs r0, 0x2
- mov r1, r9
- lsls r0, r1
- orrs r7, r0
-_0800FFC6:
- cmp r5, 0
- beq _0800FFDA
- cmp r5, r10
- beq _0800FFDA
- cmp r6, 0
- bne _0800FFDA
- movs r0, 0x3
- mov r2, r9
- lsls r0, r2
- orrs r7, r0
-_0800FFDA:
- movs r3, 0x2
- add r9, r3
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x5
- ble _0800FF6A
- ldr r1, _08010010 @ =gTasks
- ldr r2, [sp, 0xC]
- ldr r3, [sp]
- adds r0, r2, r3
- lsls r0, 3
- adds r0, r1
- strh r7, [r0, 0x10]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010008: .4byte gPlayerParty
-_0801000C: .4byte gEnemyParty
-_08010010: .4byte gTasks
- thumb_func_end sub_800FE40
-
- thumb_func_start c2_8011A1C
-c2_8011A1C: @ 8010014
- push {r4,r5,lr}
- sub sp, 0x4
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r4, 0
- str r4, [sp]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _08010144 @ =0x05006000
- mov r0, sp
- bl CpuSet
- ldr r0, _08010148 @ =REG_MOSAIC
- strh r4, [r0]
- subs r0, 0xC
- movs r2, 0xF0
- strh r2, [r0]
- adds r0, 0x4
- ldr r3, _0801014C @ =0x00005051
- adds r1, r3, 0
- strh r1, [r0]
- adds r0, 0x4
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r0, _08010150 @ =gUnknown_030042C4
- strh r2, [r0]
- ldr r0, _08010154 @ =gUnknown_03004240
- strh r1, [r0]
- bl dp12_8087EA4
- ldr r0, _08010158 @ =gUnknown_03004DE0
- movs r3, 0xF0
- movs r4, 0xF0
- lsls r4, 3
- adds r2, r0, r4
- movs r1, 0x4F
-_08010066:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _08010066
- movs r1, 0x50
- ldr r5, _0801015C @ =gWindowConfig_81E6C58
- ldr r0, _08010158 @ =gUnknown_03004DE0
- ldr r3, _08010160 @ =0x0000ff10
- movs r4, 0x82
- lsls r4, 4
- adds r2, r0, r4
- adds r0, 0xA0
-_08010084:
- strh r3, [r0]
- strh r3, [r2]
- adds r2, 0x2
- adds r0, 0x2
- adds r1, 0x1
- cmp r1, 0x9F
- ble _08010084
- adds r0, r5, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _08010164 @ =gUnknown_030042A4
- movs r4, 0
- strh r4, [r0]
- ldr r0, _08010168 @ =gUnknown_030042A0
- strh r4, [r0]
- ldr r0, _0801016C @ =gUnknown_030042C0
- strh r4, [r0]
- ldr r0, _08010170 @ =gUnknown_030041B4
- strh r4, [r0]
- ldr r0, _08010174 @ =gUnknown_03004288
- strh r4, [r0]
- ldr r0, _08010178 @ =gUnknown_03004280
- strh r4, [r0]
- ldr r0, _0801017C @ =gUnknown_030041B0
- strh r4, [r0]
- ldr r0, _08010180 @ =gUnknown_030041B8
- strh r4, [r0]
- ldr r0, _08010184 @ =gUnknown_03004210
- adds r1, r5, 0
- bl InitWindowFromConfig
- ldr r0, _08010188 @ =gUnknown_030041D0
- ldr r1, _0801018C @ =gWindowConfig_81E71D0
- bl InitWindowFromConfig
- ldr r0, _08010190 @ =gUnknown_03004250
- ldr r1, _08010194 @ =gWindowConfig_81E71EC
- bl InitWindowFromConfig
- bl sub_800D6D4
- ldr r0, _08010198 @ =gUnknown_08D004E0
- movs r1, 0
- movs r2, 0x40
- bl LoadCompressedPalette
- bl sub_800D74C
- bl ResetSpriteData
- bl ResetTasks
- bl sub_800E23C
- ldr r1, _0801019C @ =REG_WINOUT
- movs r0, 0x37
- strh r0, [r1]
- bl FreeAllSpritePalettes
- ldr r1, _080101A0 @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, _080101A4 @ =sub_800FCFC
- bl SetVBlankCallback
- ldr r0, _080101A8 @ =sub_800DE30
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080101AC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x87
- lsls r2, 1
- strh r2, [r1, 0xA]
- movs r2, 0x5A
- strh r2, [r1, 0xC]
- movs r2, 0x1
- strh r2, [r1, 0x12]
- bl sub_800FE40
- ldr r0, _080101B0 @ =sub_80101B8
- bl SetMainCallback2
- ldr r0, _080101B4 @ =gUnknown_02024D1E
- strb r4, [r0]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08010144: .4byte 0x05006000
-_08010148: .4byte REG_MOSAIC
-_0801014C: .4byte 0x00005051
-_08010150: .4byte gUnknown_030042C4
-_08010154: .4byte gUnknown_03004240
-_08010158: .4byte gUnknown_03004DE0
-_0801015C: .4byte gWindowConfig_81E6C58
-_08010160: .4byte 0x0000ff10
-_08010164: .4byte gUnknown_030042A4
-_08010168: .4byte gUnknown_030042A0
-_0801016C: .4byte gUnknown_030042C0
-_08010170: .4byte gUnknown_030041B4
-_08010174: .4byte gUnknown_03004288
-_08010178: .4byte gUnknown_03004280
-_0801017C: .4byte gUnknown_030041B0
-_08010180: .4byte gUnknown_030041B8
-_08010184: .4byte gUnknown_03004210
-_08010188: .4byte gUnknown_030041D0
-_0801018C: .4byte gWindowConfig_81E71D0
-_08010190: .4byte gUnknown_03004250
-_08010194: .4byte gWindowConfig_81E71EC
-_08010198: .4byte gUnknown_08D004E0
-_0801019C: .4byte REG_WINOUT
-_080101A0: .4byte gReservedSpritePaletteCount
-_080101A4: .4byte sub_800FCFC
-_080101A8: .4byte sub_800DE30
-_080101AC: .4byte gTasks
-_080101B0: .4byte sub_80101B8
-_080101B4: .4byte gUnknown_02024D1E
- thumb_func_end c2_8011A1C
-
- thumb_func_start sub_80101B8
-sub_80101B8: @ 80101B8
- push {lr}
- bl c2_081284E0
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end sub_80101B8
-
- thumb_func_start c2_081284E0
-c2_081284E0: @ 80101D4
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080101EC @ =gUnknown_02024D1E
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _080101FC
- cmp r0, 0x1
- bgt _080101F0
- cmp r0, 0
- beq _080101F6
- b _08010236
- .align 2, 0
-_080101EC: .4byte gUnknown_02024D1E
-_080101F0:
- cmp r0, 0x2
- beq _08010222
- b _08010236
-_080101F6:
- movs r0, 0xFF
- strb r0, [r4, 0x1]
- b _0801021A
-_080101FC:
- ldrb r0, [r4, 0x1]
- subs r0, 0x1
- strb r0, [r4, 0x1]
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08010236
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0801021A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08010236
-_08010222:
- ldr r0, _08010240 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08010236
- ldr r0, _08010244 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08010236:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08010240: .4byte gPaletteFade
-_08010244: .4byte gMain
- thumb_func_end c2_081284E0
-
- thumb_func_start oac_poke_opponent
-oac_poke_opponent: @ 8010248
- push {lr}
- sub sp, 0x4
- ldr r1, _08010270 @ =sub_8010278
- str r1, [r0, 0x1C]
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- movs r0, 0x80
- lsls r0, 10
- ldr r1, _08010274 @ =0x00003def
- str r1, [sp]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0xA
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08010270: .4byte sub_8010278
-_08010274: .4byte 0x00003def
- thumb_func_end oac_poke_opponent
-
- thumb_func_start sub_8010278
-sub_8010278: @ 8010278
- push {lr}
- adds r2, r0, 0
- ldr r0, _080102A4 @ =gUnknown_02024DE8
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080102A0
- ldrh r0, [r2, 0x24]
- adds r0, 0x2
- strh r0, [r2, 0x24]
- lsls r0, 16
- cmp r0, 0
- bne _080102A0
- ldr r0, _080102A8 @ =sub_80102AC
- str r0, [r2, 0x1C]
- ldrh r0, [r2, 0x32]
- movs r1, 0x19
- bl PlayCry1
-_080102A0:
- pop {r0}
- bx r0
- .align 2, 0
-_080102A4: .4byte gUnknown_02024DE8
-_080102A8: .4byte sub_80102AC
- thumb_func_end sub_8010278
-
- thumb_func_start sub_80102AC
-sub_80102AC: @ 80102AC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080102F4
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- bl sub_804777C
- ldr r1, _080102FC @ =gUnknown_03004340
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DFC
- ldr r0, _08010300 @ =nullsub_37
- str r0, [r4, 0x1C]
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnimIfDifferent
- movs r0, 0x80
- lsls r0, 10
- ldr r1, _08010304 @ =0x00003def
- str r1, [sp]
- movs r1, 0
- movs r2, 0xA
- movs r3, 0
- bl BeginNormalPaletteFade
-_080102F4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080102FC: .4byte gUnknown_03004340
-_08010300: .4byte nullsub_37
-_08010304: .4byte 0x00003def
- thumb_func_end sub_80102AC
-
- thumb_func_start nullsub_37
-nullsub_37: @ 8010308
- bx lr
- thumb_func_end nullsub_37
-
- thumb_func_start unref_sub_801030C
-unref_sub_801030C: @ 801030C
- movs r1, 0x6
- strh r1, [r0, 0x34]
- movs r1, 0x1
- strh r1, [r0, 0x36]
- ldr r1, _0801031C @ =sub_8010320
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_0801031C: .4byte sub_8010320
- thumb_func_end unref_sub_801030C
-
- thumb_func_start sub_8010320
-sub_8010320: @ 8010320
- push {r4,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x36]
- subs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08010374
- movs r0, 0x8
- strh r0, [r3, 0x36]
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r4, 0x5
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bne _08010374
- ldrb r1, [r1]
- adds r0, r4, 0
- ands r0, r1
- mov r1, r12
- strb r0, [r1]
- ldr r0, _0801037C @ =nullsub_37
- str r0, [r3, 0x1C]
- ldr r0, _08010380 @ =gUnknown_03004284
- str r2, [r0]
-_08010374:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801037C: .4byte nullsub_37
-_08010380: .4byte gUnknown_03004284
- thumb_func_end sub_8010320
-
- thumb_func_start sub_8010384
-sub_8010384: @ 8010384
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- ldrh r0, [r0, 0x2E]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, r6, 2
- ldr r0, _080103A4 @ =0x02017800
- adds r1, r0
- ldrh r0, [r1, 0x2]
- cmp r0, 0
- beq _080103A8
- adds r4, r0, 0
- b _080103AC
- .align 2, 0
-_080103A4: .4byte 0x02017800
-_080103A8:
- mov r0, r9
- ldrh r4, [r0, 0x32]
-_080103AC:
- ldr r1, _08010414 @ =gUnknown_02024A6A
- lsls r0, r6, 1
- adds r5, r0, r1
- ldrh r0, [r5]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r7, _08010418 @ =gEnemyParty
- adds r0, r7
- movs r1, 0
- bl GetMonData
- cmp r4, SPECIES_UNOWN
- bne _08010430
- ldrh r0, [r5]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0
- bl GetMonData
- adds r2, r0, 0
- movs r0, 0xC0
- lsls r0, 18
- ands r0, r2
- lsrs r0, 18
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r2
- lsrs r1, 12
- orrs r0, r1
- movs r1, 0xC0
- lsls r1, 2
- ands r1, r2
- lsrs r1, 6
- orrs r0, r1
- movs r1, 0x3
- ands r1, r2
- orrs r0, r1
- movs r1, 0x1C
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0801041C
- movs r0, SPECIES_UNOWN
- b _08010426
- .align 2, 0
-_08010414: .4byte gUnknown_02024A6A
-_08010418: .4byte gEnemyParty
-_0801041C:
- movs r1, 0xCE
- lsls r1, 1
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
-_08010426:
- ldr r1, _0801042C @ =gMonFrontPicCoords
- lsls r0, 2
- b _08010468
- .align 2, 0
-_0801042C: .4byte gMonFrontPicCoords
-_08010430:
- ldr r0, _08010448 @ =SPECIES_CASTFORM
- cmp r4, r0 @ Check if pokemon species is Castform
- bne _08010454
- ldr r0, _0801044C @ =gUnknownCastformCoords_0837F598
- ldr r1, _08010450 @ =gBattleMonForms
- adds r1, r6, r1
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- b _0801046C
- .align 2, 0
-_08010448: .4byte SPECIES_CASTFORM
-_0801044C: .4byte gUnknownCastformCoords_0837F598
-_08010450: .4byte gBattleMonForms
-_08010454:
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bls _08010464
- ldr r0, _08010460 @ =gMonFrontPicCoords
- b _0801046A
- .align 2, 0
-_08010460: .4byte gMonFrontPicCoords
-_08010464:
- ldr r1, _0801048C @ =gMonFrontPicCoords
- lsls r0, r4, 2
-_08010468:
- adds r0, r1
-_0801046A:
- ldrb r0, [r0, 0x1]
-_0801046C:
- lsrs r1, r0, 3
- movs r0, 0x8
- subs r0, r1
- mov r1, r9
- strh r0, [r1, 0x34]
- movs r0, 0x1
- strh r0, [r1, 0x36]
- ldr r0, _08010490 @ =sub_8010494
- str r0, [r1, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801048C: .4byte gMonFrontPicCoords
-_08010490: .4byte sub_8010494
- thumb_func_end sub_8010384
-
- thumb_func_start sub_8010494
-sub_8010494: @ 8010494
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x36]
- subs r0, 0x1
- strh r0, [r4, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08010510
- movs r0, 0x2
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x26]
- adds r0, 0x8
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- cmp r0, 0
- bge _080104C8
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- b _08010510
-_080104C8:
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- bl battle_get_per_side_status
- ldr r1, _08010518 @ =gUnknown_081FAF4C
- lsls r0, 24
- lsrs r0, 22
- adds r0, r1
- ldr r2, _0801051C @ =gBattleMonForms
- movs r3, 0x2E
- ldrsh r1, [r4, r3]
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 11
- ldr r2, [r0]
- adds r2, r1
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- lsls r0, 8
- adds r2, r0
- movs r1, 0
- movs r0, 0xFF
-_080104F6:
- strb r1, [r2]
- adds r2, 0x1
- subs r0, 0x1
- cmp r0, 0
- bge _080104F6
- ldr r0, _0801051C @ =gBattleMonForms
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r4, 0
- bl StartSpriteAnim
-_08010510:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08010518: .4byte gUnknown_081FAF4C
-_0801051C: .4byte gBattleMonForms
- thumb_func_end sub_8010494
-
- thumb_func_start sub_8010520
-sub_8010520: @ 8010520
- movs r1, 0x8
- strh r1, [r0, 0x34]
- adds r1, r0, 0
- adds r1, 0x3E
- ldrb r1, [r1]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r0, 0x36]
- ldr r1, _08010538 @ =sub_801053C
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_08010538: .4byte sub_801053C
- thumb_func_end sub_8010520
-
- thumb_func_start sub_801053C
-sub_801053C: @ 801053C
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _0801056E
- movs r0, 0x3E
- adds r0, r3
- mov r12, r0
- ldrb r2, [r0]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- movs r0, 0x8
- strh r0, [r3, 0x34]
-_0801056E:
- pop {r0}
- bx r0
- thumb_func_end sub_801053C
-
- thumb_func_start sub_8010574
-sub_8010574: @ 8010574
- movs r1, 0x3E
- adds r1, r0
- mov r12, r1
- movs r1, 0x1
- ldrh r2, [r0, 0x36]
- ands r2, r1
- lsls r2, 2
- mov r1, r12
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- movs r1, 0
- strh r1, [r0, 0x36]
- ldr r1, _0801059C @ =nullsub_37
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_0801059C: .4byte nullsub_37
- thumb_func_end sub_8010574
-
- thumb_func_start sub_80105A0
-sub_80105A0: @ 80105A0
- ldr r1, _080105A8 @ =oac_poke_ally_
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080105A8: .4byte oac_poke_ally_
- thumb_func_end sub_80105A0
-
- thumb_func_start oac_poke_ally_
-oac_poke_ally_: @ 80105AC
- push {lr}
- adds r2, r0, 0
- ldr r0, _080105D4 @ =gUnknown_02024DE8
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080105D0
- ldrh r0, [r2, 0x24]
- subs r0, 0x2
- strh r0, [r2, 0x24]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- bne _080105D0
- ldr r0, _080105D8 @ =nullsub_86
- str r0, [r2, 0x1C]
- strh r1, [r2, 0x30]
-_080105D0:
- pop {r0}
- bx r0
- .align 2, 0
-_080105D4: .4byte gUnknown_02024DE8
-_080105D8: .4byte nullsub_86
- thumb_func_end oac_poke_ally_
-
- thumb_func_start sub_80105DC
-sub_80105DC: @ 80105DC
- ldr r1, _080105E4 @ =nullsub_86
- str r1, [r0, 0x1C]
- bx lr
- .align 2, 0
-_080105E4: .4byte nullsub_86
- thumb_func_end sub_80105DC
-
- thumb_func_start nullsub_86
-nullsub_86: @ 80105E8
- bx lr
- thumb_func_end nullsub_86
-
- thumb_func_start sub_80105EC
-sub_80105EC: @ 80105EC
- push {lr}
- adds r2, r0, 0
- ldr r0, _08010610 @ =gUnknown_02024DE8
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0801060C
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x26]
- adds r0, r1
- strh r0, [r2, 0x26]
-_0801060C:
- pop {r0}
- bx r0
- .align 2, 0
-_08010610: .4byte gUnknown_02024DE8
- thumb_func_end sub_80105EC
-
- thumb_func_start dp11b_obj_instanciate
-dp11b_obj_instanciate: @ 8010614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- cmp r1, 0
- beq _0801064C
- lsls r2, r4, 1
- adds r0, r2, r4
- lsls r0, 2
- ldr r1, _08010648 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- b _0801065A
- .align 2, 0
-_08010648: .4byte 0x02017810
-_0801064C:
- lsls r2, r4, 1
- adds r0, r2, r4
- lsls r0, 2
- ldr r1, _08010698 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
-_0801065A:
- ands r0, r1
- adds r6, r2, 0
- cmp r0, 0
- bne _080106FA
- ldr r0, _0801069C @ =objc_dp11b_pingpong
- bl CreateInvisibleSpriteWithCallback
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r8
- cmp r0, 0x1
- bne _080106A8
- ldr r0, _080106A0 @ =gUnknown_03004340
- adds r0, r4, r0
- ldrb r7, [r0]
- adds r0, r6, r4
- lsls r0, 2
- ldr r1, _08010698 @ =0x02017810
- adds r0, r1
- strb r5, [r0, 0x2]
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
- ldr r2, _080106A4 @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0x80
- b _080106CC
- .align 2, 0
-_08010698: .4byte 0x02017810
-_0801069C: .4byte objc_dp11b_pingpong
-_080106A0: .4byte gUnknown_03004340
-_080106A4: .4byte gSprites
-_080106A8:
- ldr r0, _08010708 @ =gUnknown_02024BE0
- adds r0, r4, r0
- ldrb r7, [r0]
- adds r0, r6, r4
- lsls r0, 2
- ldr r1, _0801070C @ =0x02017810
- adds r0, r1
- strb r5, [r0, 0x3]
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r2, _08010710 @ =gSprites
- lsls r3, r5, 4
- adds r0, r3, r5
- lsls r0, 2
- adds r0, r2
- movs r1, 0xC0
-_080106CC:
- strh r1, [r0, 0x2E]
- adds r4, r2, 0
- adds r1, r3, r5
- lsls r1, 2
- adds r1, r4
- mov r2, r9
- lsls r0, r2, 24
- asrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x30]
- mov r3, r10
- lsls r0, r3, 24
- asrs r0, 24
- strh r0, [r1, 0x32]
- strh r7, [r1, 0x34]
- mov r0, r8
- strh r0, [r1, 0x36]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x24]
- strh r2, [r0, 0x26]
-_080106FA:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010708: .4byte gUnknown_02024BE0
-_0801070C: .4byte 0x02017810
-_08010710: .4byte gSprites
- thumb_func_end dp11b_obj_instanciate
-
- thumb_func_start dp11b_obj_free
-dp11b_obj_free: @ 8010714
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0x1
- bne _0801075C
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _08010754 @ =0x02017810
- adds r5, r0, r1
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080107A0
- ldr r2, _08010758 @ =gSprites
- ldrb r1, [r5, 0x2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x34]
- lsls r1, 24
- lsrs r4, r1, 24
- bl DestroySprite
- ldrb r1, [r5]
- movs r0, 0x3
- negs r0, r0
- b _0801078C
- .align 2, 0
-_08010754: .4byte 0x02017810
-_08010758: .4byte gSprites
-_0801075C:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _080107A8 @ =0x02017810
- adds r5, r0, r1
- ldrb r1, [r5]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080107A0
- ldr r2, _080107AC @ =gSprites
- ldrb r1, [r5, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x34]
- lsls r1, 24
- lsrs r4, r1, 24
- bl DestroySprite
- ldrb r1, [r5]
- movs r0, 0x5
- negs r0, r0
-_0801078C:
- ands r0, r1
- strb r0, [r5]
- ldr r0, _080107AC @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x24]
- strh r0, [r1, 0x26]
-_080107A0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080107A8: .4byte 0x02017810
-_080107AC: .4byte gSprites
- thumb_func_end dp11b_obj_free
-
- thumb_func_start objc_dp11b_pingpong
-objc_dp11b_pingpong: @ 80107B0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080107C8
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- b _080107CC
-_080107C8:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
-_080107CC:
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- ldr r2, _080107F8 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r1, r2
- ldrh r2, [r4, 0x32]
- adds r0, r2
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x2E]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080107F8: .4byte gSprites
- thumb_func_end objc_dp11b_pingpong
-
- thumb_func_start nullsub_41
-nullsub_41: @ 80107FC
- bx lr
- thumb_func_end nullsub_41
-
- thumb_func_start sub_8010800
-sub_8010800: @ 8010800
- push {lr}
- bl sub_8010874
- ldr r1, _08010818 @ =gUnknown_02024D1E
- movs r0, 0
- strb r0, [r1, 0x1]
- ldr r1, _0801081C @ =gUnknown_030042D4
- ldr r0, _08010820 @ =bc_8012FAC
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08010818: .4byte gUnknown_02024D1E
-_0801081C: .4byte gUnknown_030042D4
-_08010820: .4byte bc_8012FAC
- thumb_func_end sub_8010800
-
- thumb_func_start sub_8010824
-sub_8010824: @ 8010824
- push {r4,r5,lr}
- ldr r0, _08010864 @ =gUnknown_030042D4
- ldr r0, [r0]
- bl _call_via_r0
- ldr r1, _08010868 @ =gUnknown_02024A60
- movs r0, 0
- strb r0, [r1]
- ldr r0, _0801086C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801085E
- ldr r5, _08010870 @ =gUnknown_03004330
- adds r4, r1, 0
-_08010840:
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r5
- ldr r0, [r0]
- bl _call_via_r0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _0801086C @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08010840
-_0801085E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08010864: .4byte gUnknown_030042D4
-_08010868: .4byte gUnknown_02024A60
-_0801086C: .4byte gUnknown_02024A68
-_08010870: .4byte gUnknown_03004330
- thumb_func_end sub_8010824
-
- thumb_func_start sub_8010874
-sub_8010874: @ 8010874
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0
- bl sub_801365C
- bl sub_801377C
- movs r2, 0
- movs r3, 0
- ldr r0, _08010AC8 @ =gUnknown_02024C4C
- mov r10, r0
- ldr r1, _08010ACC @ =gUnknown_02024C44
- mov r9, r1
- ldr r4, _08010AD0 @ =gUnknown_02024C3C
- mov r8, r4
- ldr r0, _08010AD4 @ =gUnknown_02024C34
- mov r12, r0
- ldr r4, _08010AD8 @ =gUnknown_02024CA8
- movs r5, 0
- ldr r7, _08010ADC @ =gUnknown_02024C2C
- ldr r6, _08010AE0 @ =gUnknown_02024C54
-_080108A4:
- ldr r0, _08010AE4 @ =gUnknown_02024C98
- adds r0, r5, r0
- str r3, [r0]
- movs r1, 0
-_080108AC:
- adds r0, r4, r1
- strb r3, [r0]
- adds r1, 0x1
- cmp r1, 0x1B
- bls _080108AC
- movs r0, 0x2
- strb r0, [r4, 0x16]
- ldr r1, _08010AE8 @ =gUnknown_02024C70
- adds r0, r2, r1
- strb r3, [r0]
- mov r0, r12
- strh r3, [r0]
- mov r1, r8
- strh r3, [r1]
- mov r0, r9
- strh r3, [r0]
- mov r1, r10
- strh r3, [r1]
- ldr r0, _08010AEC @ =gUnknown_02024C5C
- adds r1, r2, r0
- movs r0, 0xFF
- strb r0, [r1]
- strh r3, [r6]
- strh r3, [r7]
- ldr r1, _08010AF0 @ =0x02017100
- adds r0, r5, r1
- str r3, [r0]
- movs r0, 0x2
- add r10, r0
- add r9, r0
- add r8, r0
- add r12, r0
- adds r4, 0x1C
- adds r5, 0x4
- adds r7, 0x2
- adds r6, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _080108A4
- movs r5, 0
- ldr r3, _08010AF4 @ =gUnknown_02024C80
- ldr r4, _08010AF8 @ =gUnknown_02024C7A
- movs r2, 0x1
-_08010902:
- strh r5, [r4]
- movs r1, 0
-_08010906:
- adds r0, r3, r1
- strb r5, [r0]
- adds r1, 0x1
- cmp r1, 0xB
- bls _08010906
- adds r3, 0xC
- adds r4, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _08010902
- movs r1, 0
- ldr r2, _08010AFC @ =gPlayerMonIndex
- strb r1, [r2]
- ldr r3, _08010B00 @ =gEnemyMonIndex
- strb r1, [r3]
- ldr r4, _08010B04 @ =gBattleWeather
- strh r1, [r4]
- ldr r1, _08010B08 @ =gUnknown_02024DBC
- movs r2, 0
- movs r3, 0
-_0801092E:
- adds r0, r1, r2
- strb r3, [r0]
- adds r2, 0x1
- cmp r2, 0x2B
- bls _0801092E
- movs r0, 0
- ldr r1, _08010B0C @ =gUnknown_02024C6C
- str r0, [r1]
- ldr r2, _08010B10 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0801095C
- ldr r3, _08010B14 @ =gSaveBlock2
- ldrb r1, [r3, 0x15]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801095C
- movs r0, 0x80
- ldr r4, _08010B0C @ =gUnknown_02024C6C
- str r0, [r4]
-_0801095C:
- ldr r1, _08010B14 @ =gSaveBlock2
- ldrb r0, [r1, 0x15]
- lsls r0, 30
- lsrs r0, 31
- ldr r3, _08010B18 @ =0x02000000
- ldr r4, _08010B1C @ =0x00016084
- adds r2, r3, r4
- movs r1, 0
- strb r0, [r2]
- ldr r0, _08010B20 @ =gUnknown_02024C0E
- strb r1, [r0]
- ldr r2, _08010B24 @ =gUnknown_02024D26
- strb r1, [r2]
- ldr r3, _08010B28 @ =gUnknown_02024A64
- str r1, [r3]
- movs r2, 0
- ldr r4, _08010B2C @ =gUnknown_02024D1A
- strh r1, [r4]
- ldr r1, _08010B18 @ =0x02000000
- ldr r3, _08010B30 @ =0x00017130
- adds r0, r1, r3
- strb r2, [r0]
- ldr r4, _08010B34 @ =0x00017160
- adds r0, r1, r4
- strb r2, [r0]
- ldr r1, _08010B38 @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x7
-_08010994:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08010994
- movs r5, 0
- ldr r0, _08010B3C @ =gUnknown_02024D18
- strh r5, [r0]
- movs r0, 0
- ldr r1, _08010B40 @ =gBattleMoveDamage
- str r0, [r1]
- ldr r2, _08010B44 @ =gUnknown_02024DE8
- strh r0, [r2]
- ldr r4, _08010B18 @ =0x02000000
- ldr r3, _08010B48 @ =0x00016002
- adds r0, r4, r3
- strb r5, [r0]
- ldr r1, _08010B4C @ =0x000160a1
- adds r0, r4, r1
- strb r5, [r0]
- ldr r2, _08010B50 @ =gUnknown_03004324
- strb r5, [r2]
- ldr r3, _08010B54 @ =gUnknown_02024C0C
- strb r5, [r3]
- subs r1, 0x29
- adds r0, r4, r1
- strb r5, [r0]
- ldr r2, _08010B58 @ =0x00016086
- adds r0, r4, r2
- strb r5, [r0]
- ldr r3, _08010B5C @ =0x00016087
- adds r0, r4, r3
- strb r5, [r0]
- ldr r0, _08010B60 @ =gEnemyParty
- movs r1, 0xB
- bl GetMonData
- ldr r2, _08010B64 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x8]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08010B68 @ =0x000004fb
- bl __divsi3
- ldr r2, _08010B6C @ =0x00016089
- adds r1, r4, r2
- strb r0, [r1]
- ldr r3, _08010B70 @ =0x00016088
- adds r1, r4, r3
- movs r0, 0x3
- strb r0, [r1]
- ldr r1, _08010B74 @ =0x0001601b
- adds r0, r4, r1
- strb r5, [r0]
- subs r2, 0x33
- adds r1, r4, r2
- movs r0, 0x1
- strb r0, [r1]
- movs r2, 0
- movs r1, 0
-_08010A12:
- ldr r3, _08010B78 @ =0x000160ac
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x20
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x1C
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x8
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x10
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r3, 0x8
- adds r0, r2, r3
- adds r0, r4
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x7
- ble _08010A12
- ldr r4, _08010B18 @ =0x02000000
- ldr r1, _08010B7C @ =0x000160c8
- adds r0, r4, r1
- movs r2, 0
- movs r1, 0x6
- strb r1, [r0]
- subs r3, 0x3F
- adds r0, r4, r3
- strb r1, [r0]
- ldr r1, _08010B80 @ =0x00016113
- adds r0, r4, r1
- strb r2, [r0]
- ldr r3, _08010B84 @ =gUnknown_030042E0
- movs r1, 0
- movs r2, 0xA
- adds r0, r3, 0
- adds r0, 0x40
-_08010A6A:
- strb r1, [r0]
- subs r0, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _08010A6A
- movs r1, 0
- strb r1, [r3, 0x13]
- strb r1, [r3]
- strb r1, [r3, 0x1]
- strb r1, [r3, 0x2]
- strb r1, [r3, 0x3]
- strb r1, [r3, 0x4]
- ldrb r2, [r3, 0x5]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- movs r2, 0x3
- negs r2, r2
- ands r0, r2
- strb r0, [r3, 0x5]
- strh r1, [r3, 0x20]
- strh r1, [r3, 0x22]
- strh r1, [r3, 0x24]
- strh r1, [r3, 0x6]
- strh r1, [r3, 0x26]
- strh r1, [r3, 0x28]
- movs r2, 0
- adds r5, r3, 0
- adds r5, 0x8
- movs r4, 0
- adds r1, r3, 0
- adds r1, 0x14
-_08010AAA:
- adds r0, r2, r5
- strb r4, [r0]
- strb r4, [r1]
- strb r4, [r1, 0x16]
- adds r1, 0x1
- adds r2, 0x1
- cmp r2, 0x9
- ble _08010AAA
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08010AC8: .4byte gUnknown_02024C4C
-_08010ACC: .4byte gUnknown_02024C44
-_08010AD0: .4byte gUnknown_02024C3C
-_08010AD4: .4byte gUnknown_02024C34
-_08010AD8: .4byte gUnknown_02024CA8
-_08010ADC: .4byte gUnknown_02024C2C
-_08010AE0: .4byte gUnknown_02024C54
-_08010AE4: .4byte gUnknown_02024C98
-_08010AE8: .4byte gUnknown_02024C70
-_08010AEC: .4byte gUnknown_02024C5C
-_08010AF0: .4byte 0x02017100
-_08010AF4: .4byte gUnknown_02024C80
-_08010AF8: .4byte gUnknown_02024C7A
-_08010AFC: .4byte gPlayerMonIndex
-_08010B00: .4byte gEnemyMonIndex
-_08010B04: .4byte gBattleWeather
-_08010B08: .4byte gUnknown_02024DBC
-_08010B0C: .4byte gUnknown_02024C6C
-_08010B10: .4byte gBattleTypeFlags
-_08010B14: .4byte gSaveBlock2
-_08010B18: .4byte 0x02000000
-_08010B1C: .4byte 0x00016084
-_08010B20: .4byte gUnknown_02024C0E
-_08010B24: .4byte gUnknown_02024D26
-_08010B28: .4byte gUnknown_02024A64
-_08010B2C: .4byte gUnknown_02024D1A
-_08010B30: .4byte 0x00017130
-_08010B34: .4byte 0x00017160
-_08010B38: .4byte gUnknown_02024D1E
-_08010B3C: .4byte gUnknown_02024D18
-_08010B40: .4byte gBattleMoveDamage
-_08010B44: .4byte gUnknown_02024DE8
-_08010B48: .4byte 0x00016002
-_08010B4C: .4byte 0x000160a1
-_08010B50: .4byte gUnknown_03004324
-_08010B54: .4byte gUnknown_02024C0C
-_08010B58: .4byte 0x00016086
-_08010B5C: .4byte 0x00016087
-_08010B60: .4byte gEnemyParty
-_08010B64: .4byte gBaseStats
-_08010B68: .4byte 0x000004fb
-_08010B6C: .4byte 0x00016089
-_08010B70: .4byte 0x00016088
-_08010B74: .4byte 0x0001601b
-_08010B78: .4byte 0x000160ac
-_08010B7C: .4byte 0x000160c8
-_08010B80: .4byte 0x00016113
-_08010B84: .4byte gUnknown_030042E0
- thumb_func_end sub_8010874
-
- thumb_func_start sub_8010B88
-sub_8010B88: @ 8010B88
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r4, _08010CEC @ =gUnknown_02024CA8
- ldr r5, _08010CF0 @ =gUnknown_02024A60
- ldrb r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r1, sp
- adds r0, r4
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldm r0!, {r2,r3,r6}
- stm r1!, {r2,r3,r6}
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, _08010CF4 @ =gBattleMoves
- ldr r3, _08010CF8 @ =gUnknown_02024BE6
- ldrh r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- mov r10, r4
- adds r7, r5, 0
- ldr r1, _08010CFC @ =gBattleMons
- mov r8, r1
- ldr r2, _08010D00 @ =gUnknown_02024C98
- mov r12, r2
- cmp r0, 0x7F
- beq _08010C66
- movs r5, 0
- adds r4, r7, 0
- movs r3, 0x58
- mov r2, r8
- adds r2, 0x18
- movs r1, 0x6
-_08010BDC:
- ldrb r0, [r4]
- muls r0, r3
- adds r0, r5, r0
- adds r0, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x7
- ble _08010BDC
- movs r5, 0
- ldr r3, _08010D04 @ =gUnknown_02024A68
- ldrb r3, [r3]
- cmp r5, r3
- bge _08010C52
- ldr r6, _08010D08 @ =gUnknown_02024AD0
- mov r9, r6
- ldr r3, _08010CEC @ =gUnknown_02024CA8
- ldr r4, _08010D00 @ =gUnknown_02024C98
-_08010BFE:
- movs r0, 0x58
- muls r0, r5
- add r0, r9
- str r0, [sp, 0x20]
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _08010C24
- ldrb r0, [r3, 0x14]
- ldr r2, _08010CF0 @ =gUnknown_02024A60
- ldrb r2, [r2]
- cmp r0, r2
- bne _08010C24
- ldr r0, _08010D0C @ =0xfbffffff
- ands r1, r0
- ldr r6, [sp, 0x20]
- str r1, [r6]
-_08010C24:
- ldr r1, [r4]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08010C44
- ldrb r0, [r3, 0x15]
- ldr r2, _08010CF0 @ =gUnknown_02024A60
- ldrb r2, [r2]
- cmp r0, r2
- bne _08010C44
- movs r0, 0x19
- negs r0, r0
- ands r1, r0
- str r1, [r4]
- movs r0, 0
- strb r0, [r3, 0x15]
-_08010C44:
- adds r3, 0x1C
- adds r4, 0x4
- adds r5, 0x1
- ldr r6, _08010D04 @ =gUnknown_02024A68
- ldrb r6, [r6]
- cmp r5, r6
- blt _08010BFE
-_08010C52:
- ldr r1, _08010CF8 @ =gUnknown_02024BE6
- ldrh r0, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _08010CF4 @ =gBattleMoves
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x7F
- bne _08010D18
-_08010C66:
- ldrb r1, [r7]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r8
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _08010D10 @ =0x15100007
- ands r0, r1
- str r0, [r2]
- ldrb r1, [r7]
- lsls r1, 2
- add r1, r12
- ldr r0, [r1]
- ldr r2, _08010D14 @ =0x0003043f
- ands r0, r2
- str r0, [r1]
- movs r5, 0
- ldr r3, _08010D04 @ =gUnknown_02024A68
- ldrb r3, [r3]
- cmp r5, r3
- bge _08010D30
- movs r6, 0
-_08010C96:
- ldrb r0, [r7]
- bl battle_side_get_owner
- adds r4, r0, 0
- lsls r0, r5, 24
- lsrs r0, 24
- bl battle_side_get_owner
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _08010CD6
- ldr r1, _08010D00 @ =gUnknown_02024C98
- lsls r0, r5, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08010CD6
- ldr r0, _08010CEC @ =gUnknown_02024CA8
- adds r0, r6, r0
- ldrb r0, [r0, 0x15]
- ldrb r3, [r7]
- cmp r0, r3
- bne _08010CD6
- movs r0, 0x19
- negs r0, r0
- ands r1, r0
- movs r0, 0x10
- orrs r1, r0
- str r1, [r2]
-_08010CD6:
- adds r6, 0x1C
- adds r5, 0x1
- ldr r0, _08010D04 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- blt _08010C96
- ldr r6, _08010CEC @ =gUnknown_02024CA8
- mov r10, r6
- ldr r7, _08010CF0 @ =gUnknown_02024A60
- b _08010D30
- .align 2, 0
-_08010CEC: .4byte gUnknown_02024CA8
-_08010CF0: .4byte gUnknown_02024A60
-_08010CF4: .4byte gBattleMoves
-_08010CF8: .4byte gUnknown_02024BE6
-_08010CFC: .4byte gBattleMons
-_08010D00: .4byte gUnknown_02024C98
-_08010D04: .4byte gUnknown_02024A68
-_08010D08: .4byte gUnknown_02024AD0
-_08010D0C: .4byte 0xfbffffff
-_08010D10: .4byte 0x15100007
-_08010D14: .4byte 0x0003043f
-_08010D18:
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- mov r1, r8
- adds r1, 0x50
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- add r0, r12
- str r1, [r0]
-_08010D30:
- movs r5, 0
- ldr r6, _08010EFC @ =0x02000000
- ldr r0, _08010F00 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- bge _08010D92
- ldr r1, _08010F04 @ =gUnknown_02024AD0
- mov r9, r1
- ldr r2, _08010F08 @ =gBitTable
- mov r8, r2
- ldr r4, _08010F0C @ =gUnknown_02024A60
- mov r12, r6
-_08010D48:
- movs r0, 0x58
- muls r0, r5
- mov r1, r9
- adds r3, r0, r1
- ldrb r0, [r4]
- lsls r0, 2
- add r0, r8
- ldr r0, [r0]
- lsls r2, r0, 16
- ldr r1, [r3]
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _08010D68
- bics r1, r2
- str r1, [r3]
-_08010D68:
- ldr r1, [r3]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08010D88
- ldr r2, _08010F10 @ =0x00016020
- adds r0, r5, r2
- add r0, r12
- ldrb r0, [r0]
- ldrb r2, [r4]
- cmp r0, r2
- bne _08010D88
- ldr r0, _08010F14 @ =0xffff1fff
- ands r1, r0
- str r1, [r3]
-_08010D88:
- adds r5, 0x1
- ldr r3, _08010F00 @ =gUnknown_02024A68
- ldrb r3, [r3]
- cmp r5, r3
- blt _08010D48
-_08010D92:
- ldrb r0, [r7]
- ldr r1, _08010F18 @ =gUnknown_02024E60
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldrb r0, [r7]
- ldr r2, _08010F1C @ =gUnknown_02024E64
- adds r0, r2
- strb r1, [r0]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r3, r10
- adds r1, r0, r3
- movs r5, 0
- movs r2, 0
-_08010DB4:
- adds r0, r1, r5
- strb r2, [r0]
- adds r5, 0x1
- cmp r5, 0x1B
- bls _08010DB4
- ldr r1, _08010F20 @ =gUnknown_02024BE6
- ldrh r0, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _08010F24 @ =gBattleMoves
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x7F
- bne _08010E2C
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- mov r1, sp
- ldrb r1, [r1, 0xA]
- strb r1, [r0, 0xA]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- mov r1, sp
- ldrb r1, [r1, 0x15]
- strb r1, [r0, 0x15]
- ldrb r0, [r7]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r10
- mov r0, sp
- ldrb r2, [r0, 0xF]
- lsls r2, 28
- movs r4, 0xF
- lsrs r2, 28
- ldrb r3, [r1, 0xF]
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xF]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- mov r1, sp
- ldrb r1, [r1, 0xF]
- lsrs r1, 4
- lsls r1, 4
- ldrb r2, [r0, 0xF]
- ands r4, r2
- orrs r4, r1
- strb r4, [r0, 0xF]
-_08010E2C:
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r10
- movs r3, 0
- movs r1, 0x2
- strb r1, [r0, 0x16]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F28 @ =gUnknown_02024C34
- adds r0, r1
- movs r2, 0
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F2C @ =gUnknown_02024C3C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F30 @ =gUnknown_02024C44
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F34 @ =gUnknown_02024C4C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F38 @ =gUnknown_02024C2C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- ldr r1, _08010F3C @ =gUnknown_02024C5C
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _08010F40 @ =0x000160ac
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x53
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- subs r1, 0x1B
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r0, r6
- strb r2, [r0]
- ldr r2, _08010F44 @ =0x00017100
- adds r1, r6, r2
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- str r3, [r0]
- ldr r6, _08010F20 @ =gUnknown_02024BE6
- strh r3, [r6]
- 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
-_08010EFC: .4byte 0x02000000
-_08010F00: .4byte gUnknown_02024A68
-_08010F04: .4byte gUnknown_02024AD0
-_08010F08: .4byte gBitTable
-_08010F0C: .4byte gUnknown_02024A60
-_08010F10: .4byte 0x00016020
-_08010F14: .4byte 0xffff1fff
-_08010F18: .4byte gUnknown_02024E60
-_08010F1C: .4byte gUnknown_02024E64
-_08010F20: .4byte gUnknown_02024BE6
-_08010F24: .4byte gBattleMoves
-_08010F28: .4byte gUnknown_02024C34
-_08010F2C: .4byte gUnknown_02024C3C
-_08010F30: .4byte gUnknown_02024C44
-_08010F34: .4byte gUnknown_02024C4C
-_08010F38: .4byte gUnknown_02024C2C
-_08010F3C: .4byte gUnknown_02024C5C
-_08010F40: .4byte 0x000160ac
-_08010F44: .4byte 0x00017100
- thumb_func_end sub_8010B88
-
- thumb_func_start sub_8010F48
-sub_8010F48: @ 8010F48
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r4, 0
- ldr r7, _08011268 @ =gUnknown_02024A60
- ldr r0, _0801126C @ =gUnknown_02024C98
- mov r9, r0
- ldr r1, _08011270 @ =gUnknown_02024A68
- mov r8, r1
- ldr r2, _08011274 @ =0x02000000
- mov r12, r2
- ldr r6, _08011278 @ =gUnknown_02024D28
- adds r5, r7, 0
- movs r3, 0x58
- ldr r2, _0801127C @ =gBattleMons
- adds r2, 0x18
- movs r1, 0x6
-_08010F70:
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4, r0
- adds r0, r2
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x7
- ble _08010F70
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- ldr r2, _0801127C @ =gBattleMons
- adds r2, 0x50
- adds r0, r2
- movs r1, 0
- str r1, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- add r0, r9
- str r1, [r0]
- movs r4, 0
- mov r0, r8
- ldrb r0, [r0]
- cmp r4, r0
- bge _08011012
- adds r3, r2, 0
- movs r5, 0
- ldr r1, _08011280 @ =gBitTable
- mov r10, r1
- ldr r2, _08011274 @ =0x02000000
- mov r9, r2
-_08010FAE:
- ldr r1, [r3]
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _08010FCC
- ldr r2, _08011284 @ =gUnknown_02024CA8
- adds r0, r5, r2
- ldrb r0, [r0, 0x14]
- ldrb r2, [r7]
- cmp r0, r2
- bne _08010FCC
- ldr r0, _08011288 @ =0xfbffffff
- ands r1, r0
- str r1, [r3]
-_08010FCC:
- ldrb r0, [r7]
- lsls r0, 2
- add r0, r10
- ldr r0, [r0]
- lsls r2, r0, 16
- ldr r1, [r3]
- adds r0, r1, 0
- ands r0, r2
- cmp r0, 0
- beq _08010FE4
- bics r1, r2
- str r1, [r3]
-_08010FE4:
- ldr r1, [r3]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08011004
- ldr r2, _0801128C @ =0x00016020
- adds r0, r4, r2
- add r0, r9
- ldrb r0, [r0]
- ldrb r2, [r7]
- cmp r0, r2
- bne _08011004
- ldr r0, _08011290 @ =0xffff1fff
- ands r1, r0
- str r1, [r3]
-_08011004:
- adds r3, 0x58
- adds r5, 0x1C
- adds r4, 0x1
- mov r0, r8
- ldrb r0, [r0]
- cmp r4, r0
- blt _08010FAE
-_08011012:
- ldrb r0, [r7]
- ldr r1, _08011294 @ =gUnknown_02024E60
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldrb r0, [r7]
- ldr r2, _08011298 @ =gUnknown_02024E64
- adds r0, r2
- strb r1, [r0]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r2, _08011284 @ =gUnknown_02024CA8
- adds r1, r0, r2
- movs r4, 0
- movs r2, 0
-_08011034:
- adds r0, r1, r4
- strb r2, [r0]
- adds r4, 0x1
- cmp r4, 0x1B
- bls _08011034
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- mov r9, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- mov r8, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x9
- negs r0, r0
- mov r10, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r5, 0x21
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r4, 0x41
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r3, 0x7F
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- mov r0, r9
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- mov r0, r8
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r1, [r7]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1, 0x1]
- movs r0, 0x19
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r5, r1
- strb r5, [r0, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r4, r1
- strb r4, [r0, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x1]
- ands r3, r1
- strb r3, [r0, 0x1]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- mov r2, r9
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- mov r2, r8
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- movs r2, 0x5
- negs r2, r2
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r6
- ldrb r1, [r0, 0x2]
- mov r2, r10
- ands r2, r1
- strb r2, [r0, 0x2]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _08011284 @ =gUnknown_02024CA8
- adds r0, r1
- movs r3, 0
- movs r1, 0x2
- strb r1, [r0, 0x16]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r2, _0801129C @ =gUnknown_02024C34
- adds r0, r2
- movs r2, 0
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112A0 @ =gUnknown_02024C3C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112A4 @ =gUnknown_02024C44
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112A8 @ =gUnknown_02024C4C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112AC @ =gUnknown_02024C2C
- adds r0, r1
- strh r3, [r0]
- ldrb r0, [r7]
- ldr r1, _080112B0 @ =gUnknown_02024C5C
- adds r0, r1
- movs r1, 0xFF
- strb r1, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _080112B4 @ =0x000160e8
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- subs r1, 0x3D
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x53
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- lsls r0, 2
- adds r1, 0x1
- adds r0, r1
- add r0, r12
- strb r2, [r0]
- ldr r1, _080112B8 @ =0x00017100
- add r1, r12
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- str r3, [r0]
- ldrb r0, [r7]
- movs r3, 0x58
- adds r1, r0, 0
- muls r1, r3
- ldr r2, _0801127C @ =gBattleMons
- adds r1, r2
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- ldr r2, _080112BC @ =gBaseStats
- adds r0, r2
- ldrb r0, [r0, 0x6]
- adds r1, 0x21
- strb r0, [r1]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r3
- ldr r0, _0801127C @ =gBattleMons
- adds r1, r0
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- ldr r2, _080112BC @ =gBaseStats
- adds r0, r2
- ldrb r0, [r0, 0x7]
- adds r1, 0x22
- strb r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011268: .4byte gUnknown_02024A60
-_0801126C: .4byte gUnknown_02024C98
-_08011270: .4byte gUnknown_02024A68
-_08011274: .4byte 0x02000000
-_08011278: .4byte gUnknown_02024D28
-_0801127C: .4byte gBattleMons
-_08011280: .4byte gBitTable
-_08011284: .4byte gUnknown_02024CA8
-_08011288: .4byte 0xfbffffff
-_0801128C: .4byte 0x00016020
-_08011290: .4byte 0xffff1fff
-_08011294: .4byte gUnknown_02024E60
-_08011298: .4byte gUnknown_02024E64
-_0801129C: .4byte gUnknown_02024C34
-_080112A0: .4byte gUnknown_02024C3C
-_080112A4: .4byte gUnknown_02024C44
-_080112A8: .4byte gUnknown_02024C4C
-_080112AC: .4byte gUnknown_02024C2C
-_080112B0: .4byte gUnknown_02024C5C
-_080112B4: .4byte 0x000160e8
-_080112B8: .4byte 0x00017100
-_080112BC: .4byte gBaseStats
- thumb_func_end sub_8010F48
-
- thumb_func_start bc_8012FAC
-bc_8012FAC: @ 80112C0
- push {r4,r5,lr}
- ldr r5, _080112D0 @ =gUnknown_02024D1E
- ldrb r0, [r5]
- cmp r0, 0
- beq _080112D4
- cmp r0, 0x1
- beq _080112F8
- b _0801132E
- .align 2, 0
-_080112D0: .4byte gUnknown_02024D1E
-_080112D4:
- ldr r4, _080112F4 @ =gUnknown_02024A60
- ldrb r0, [r5, 0x1]
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl dp01_build_cmdbuf_x00_a_b_0
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0801132E
- .align 2, 0
-_080112F4: .4byte gUnknown_02024A60
-_080112F8:
- ldr r0, _0801131C @ =gUnknown_02024A64
- ldr r2, [r0]
- cmp r2, 0
- bne _0801132E
- ldrb r0, [r5, 0x1]
- adds r0, 0x1
- strb r0, [r5, 0x1]
- ldr r1, _08011320 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _0801132C
- ldr r1, _08011324 @ =gUnknown_030042D4
- ldr r0, _08011328 @ =bc_load_battlefield
- str r0, [r1]
- b _0801132E
- .align 2, 0
-_0801131C: .4byte gUnknown_02024A64
-_08011320: .4byte gUnknown_02024A68
-_08011324: .4byte gUnknown_030042D4
-_08011328: .4byte bc_load_battlefield
-_0801132C:
- strb r2, [r5]
-_0801132E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end bc_8012FAC
-
- thumb_func_start bc_load_battlefield
-bc_load_battlefield: @ 8011334
- push {r4,r5,lr}
- ldr r0, _0801136C @ =gUnknown_02024A64
- ldr r5, [r0]
- cmp r5, 0
- bne _08011364
- movs r0, 0
- bl battle_get_side_with_given_state
- ldr r4, _08011370 @ =gUnknown_02024A60
- strb r0, [r4]
- ldr r0, _08011374 @ =gBattleTerrain
- ldrb r1, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x2E_a
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- ldr r1, _08011378 @ =gUnknown_030042D4
- ldr r0, _0801137C @ =sub_8011384
- str r0, [r1]
- ldr r0, _08011380 @ =gUnknown_02024D1E
- strb r5, [r0]
- strb r5, [r0, 0x1]
-_08011364:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801136C: .4byte gUnknown_02024A64
-_08011370: .4byte gUnknown_02024A60
-_08011374: .4byte gBattleTerrain
-_08011378: .4byte gUnknown_030042D4
-_0801137C: .4byte sub_8011384
-_08011380: .4byte gUnknown_02024D1E
- thumb_func_end bc_load_battlefield
-
- thumb_func_start sub_8011384
-sub_8011384: @ 8011384
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _080113E0 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- beq _08011396
- b _080115DA
-_08011396:
- ldr r2, _080113E4 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _080113E8 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcc _080113A4
- b _080115D4
-_080113A4:
- movs r7, 0x58
- ldr r0, _080113EC @ =gBattleMons
- mov r9, r0
- mov r8, r2
-_080113AC:
- ldr r0, _080113F0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080113F4
- ldr r4, _080113E4 @ =gUnknown_02024A60
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _080113F4
- ldrb r0, [r4]
- muls r0, r7
- mov r1, r9
- adds r3, r0, r1
- movs r2, 0
- movs r1, 0
-_080113D2:
- adds r0, r3, r2
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x57
- bls _080113D2
- b _080114BE
- .align 2, 0
-_080113E0: .4byte gUnknown_02024A64
-_080113E4: .4byte gUnknown_02024A60
-_080113E8: .4byte gUnknown_02024A68
-_080113EC: .4byte gBattleMons
-_080113F0: .4byte gBattleTypeFlags
-_080113F4:
- mov r2, r8
- ldrb r0, [r2]
- muls r0, r7
- mov r1, r9
- adds r3, r0, r1
- movs r2, 0
- ldr r6, _08011530 @ =gBaseStats
- ldr r5, _08011534 @ =gUnknown_02024260
- ldr r4, _08011538 @ =gUnknown_02024A60
-_08011406:
- adds r0, r3, r2
- ldrb r1, [r4]
- lsls r1, 9
- adds r1, 0x4
- adds r1, r2, r1
- adds r1, r5
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x57
- bls _08011406
- mov r2, r8
- ldrb r0, [r2]
- adds r2, r0, 0
- muls r2, r7
- add r2, r9
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x6]
- adds r2, 0x21
- strb r0, [r2]
- mov r1, r8
- ldrb r0, [r1]
- adds r2, r0, 0
- muls r2, r7
- add r2, r9
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x7]
- adds r2, 0x22
- strb r0, [r2]
- mov r2, r8
- ldrb r0, [r2]
- adds r1, r0, 0
- muls r1, r7
- add r1, r9
- ldrh r0, [r1]
- ldrb r1, [r1, 0x17]
- lsrs r1, 7
- bl GetAbilityBySpecies
- mov r2, r8
- ldrb r1, [r2]
- muls r1, r7
- add r1, r9
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r2]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 23
- ldr r1, _0801153C @ =0x020160bc
- adds r0, r1
- mov r2, r8
- ldrb r1, [r2]
- muls r1, r7
- add r1, r9
- ldrh r1, [r1, 0x28]
- strh r1, [r0]
- movs r2, 0
- ldr r4, _08011538 @ =gUnknown_02024A60
- movs r5, 0x58
- ldr r1, _08011540 @ =gUnknown_02024A98
- adds r6, r4, 0
- movs r0, 0x18
- negs r0, r0
- adds r0, r1
- mov r12, r0
- movs r3, 0x6
-_0801149E:
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r2, r0
- adds r0, r1
- strb r3, [r0]
- adds r2, 0x1
- cmp r2, 0x7
- ble _0801149E
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r7
- mov r0, r12
- adds r0, 0x50
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_080114BE:
- ldr r4, _08011538 @ =gUnknown_02024A60
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- cmp r0, 0
- bne _080114D8
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080114D8:
- ldr r5, _08011544 @ =gBattleTypeFlags
- ldrh r1, [r5]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801154C
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080114FE
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080114FE:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011588
- ldrh r1, [r5]
- ldr r2, _08011548 @ =0x00000902
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08011588
- ldrb r0, [r4]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl sub_8090D90
- b _08011588
- .align 2, 0
-_08011530: .4byte gBaseStats
-_08011534: .4byte gUnknown_02024260
-_08011538: .4byte gUnknown_02024A60
-_0801153C: .4byte 0x020160bc
-_08011540: .4byte gUnknown_02024A98
-_08011544: .4byte gBattleTypeFlags
-_08011548: .4byte 0x00000902
-_0801154C:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011588
- ldrh r1, [r5]
- ldr r2, _080115E8 @ =0x00000902
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08011588
- ldrb r0, [r4]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl sub_8090D90
- movs r0, 0
- bl dp01_build_cmdbuf_x04_4_4_4
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011588:
- ldr r0, _080115EC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080115BE
- ldr r4, _080115F0 @ =gUnknown_02024A60
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080115B2
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _080115BE
-_080115B2:
- movs r0, 0
- bl dp01_build_cmdbuf_x07_7_7_7
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080115BE:
- mov r1, r8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, _080115F4 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcs _080115D4
- b _080113AC
-_080115D4:
- ldr r1, _080115F8 @ =gUnknown_030042D4
- ldr r0, _080115FC @ =bc_801333C
- str r0, [r1]
-_080115DA:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080115E8: .4byte 0x00000902
-_080115EC: .4byte gBattleTypeFlags
-_080115F0: .4byte gUnknown_02024A60
-_080115F4: .4byte gUnknown_02024A68
-_080115F8: .4byte gUnknown_030042D4
-_080115FC: .4byte bc_801333C
- thumb_func_end sub_8011384
-
- thumb_func_start bc_801333C
-bc_801333C: @ 8011600
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- ldr r0, _08011658 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- beq _08011612
- b _0801178C
-_08011612:
- ldr r0, _0801165C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08011620
- b _0801172C
-_08011620:
- movs r7, 0
- add r0, sp, 0x4
- mov r8, r0
- mov r6, r8
- mov r5, sp
-_0801162A:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08011660 @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08011650
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08011668
-_08011650:
- ldr r0, _08011664 @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0801167A
- .align 2, 0
-_08011658: .4byte gUnknown_02024A64
-_0801165C: .4byte gBattleTypeFlags
-_08011660: .4byte gEnemyParty
-_08011664: .4byte 0x0000ffff
-_08011668:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0801167A:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _0801162A
- movs r0, 0x1
- bl battle_get_side_with_given_state
- ldr r4, _080116D4 @ =gUnknown_02024A60
- strb r0, [r4]
- movs r0, 0
- mov r1, sp
- movs r2, 0x80
- bl dp01_build_cmdbuf_x30_TODO
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- movs r7, 0
- mov r6, r8
- mov r5, sp
-_080116A6:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _080116D8 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080116CC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _080116E0
-_080116CC:
- ldr r0, _080116DC @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _080116F2
- .align 2, 0
-_080116D4: .4byte gUnknown_02024A60
-_080116D8: .4byte gPlayerParty
-_080116DC: .4byte 0x0000ffff
-_080116E0:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_080116F2:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _080116A6
- movs r0, 0
- bl battle_get_side_with_given_state
- ldr r4, _08011720 @ =gUnknown_02024A60
- strb r0, [r4]
- movs r0, 0
- mov r1, sp
- movs r2, 0x80
- bl dp01_build_cmdbuf_x30_TODO
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
- ldr r1, _08011724 @ =gUnknown_030042D4
- ldr r0, _08011728 @ =bc_battle_begin_message
- b _0801178A
- .align 2, 0
-_08011720: .4byte gUnknown_02024A60
-_08011724: .4byte gUnknown_030042D4
-_08011728: .4byte bc_battle_begin_message
-_0801172C:
- movs r7, 0
- add r6, sp, 0x4
- mov r5, sp
-_08011732:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08011760 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08011758
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08011768
-_08011758:
- ldr r0, _08011764 @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _0801177A
- .align 2, 0
-_08011760: .4byte gPlayerParty
-_08011764: .4byte 0x0000ffff
-_08011768:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_0801177A:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _08011732
- ldr r1, _08011798 @ =gUnknown_030042D4
- ldr r0, _0801179C @ =bc_8013568
-_0801178A:
- str r0, [r1]
-_0801178C:
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011798: .4byte gUnknown_030042D4
-_0801179C: .4byte bc_8013568
- thumb_func_end bc_801333C
-
- thumb_func_start bc_battle_begin_message
-bc_battle_begin_message: @ 80117A0
- push {lr}
- ldr r0, _080117C8 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _080117C2
- movs r0, 0x1
- bl battle_get_side_with_given_state
- ldr r1, _080117CC @ =gUnknown_02024A60
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0
- bl b_std_message
- ldr r1, _080117D0 @ =gUnknown_030042D4
- ldr r0, _080117D4 @ =sub_8011800
- str r0, [r1]
-_080117C2:
- pop {r0}
- bx r0
- .align 2, 0
-_080117C8: .4byte gUnknown_02024A64
-_080117CC: .4byte gUnknown_02024A60
-_080117D0: .4byte gUnknown_030042D4
-_080117D4: .4byte sub_8011800
- thumb_func_end bc_battle_begin_message
-
- thumb_func_start bc_8013568
-bc_8013568: @ 80117D8
- push {lr}
- ldr r0, _080117F4 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _080117F0
- ldr r1, _080117F8 @ =gUnknown_030042D4
- ldr r0, _080117FC @ =sub_8011970
- str r0, [r1]
- movs r0, 0
- movs r1, 0
- bl b_std_message
-_080117F0:
- pop {r0}
- bx r0
- .align 2, 0
-_080117F4: .4byte gUnknown_02024A64
-_080117F8: .4byte gUnknown_030042D4
-_080117FC: .4byte sub_8011970
- thumb_func_end bc_8013568
-
- thumb_func_start sub_8011800
-sub_8011800: @ 8011800
- push {lr}
- ldr r0, _08011828 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _08011822
- movs r0, 0x1
- bl battle_get_side_with_given_state
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- bl b_std_message
- ldr r1, _0801182C @ =gUnknown_030042D4
- ldr r0, _08011830 @ =sub_8011834
- str r0, [r1]
-_08011822:
- pop {r0}
- bx r0
- .align 2, 0
-_08011828: .4byte gUnknown_02024A64
-_0801182C: .4byte gUnknown_030042D4
-_08011830: .4byte sub_8011834
- thumb_func_end sub_8011800
-
- thumb_func_start sub_8011834
-sub_8011834: @ 8011834
- push {r4,lr}
- ldr r0, _080118AC @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _080118A4
- ldr r2, _080118B0 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _080118B4 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _0801189E
- adds r4, r2, 0
-_0801184C:
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011866
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011866:
- ldr r0, _080118B8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801188C
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0801188C
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_0801188C:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _080118B4 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0801184C
-_0801189E:
- ldr r1, _080118BC @ =gUnknown_030042D4
- ldr r0, _080118C0 @ =bc_801362C
- str r0, [r1]
-_080118A4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080118AC: .4byte gUnknown_02024A64
-_080118B0: .4byte gUnknown_02024A60
-_080118B4: .4byte gUnknown_02024A68
-_080118B8: .4byte gBattleTypeFlags
-_080118BC: .4byte gUnknown_030042D4
-_080118C0: .4byte bc_801362C
- thumb_func_end sub_8011834
-
- thumb_func_start bc_801362C
-bc_801362C: @ 80118C4
- push {r4,r5,lr}
- ldr r0, _08011930 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _0801192A
- ldr r2, _08011934 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _08011938 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08011924
- adds r4, r2, 0
- ldr r5, _0801193C @ =gBattleMons
-_080118DE:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08011912
- ldr r0, _08011940 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r2, _08011944 @ =0x00000902
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08011912
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r5
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl sub_8090D90
-_08011912:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08011938 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _080118DE
-_08011924:
- ldr r1, _08011948 @ =gUnknown_030042D4
- ldr r0, _0801194C @ =sub_8011970
- str r0, [r1]
-_0801192A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08011930: .4byte gUnknown_02024A64
-_08011934: .4byte gUnknown_02024A60
-_08011938: .4byte gUnknown_02024A68
-_0801193C: .4byte gBattleMons
-_08011940: .4byte gBattleTypeFlags
-_08011944: .4byte 0x00000902
-_08011948: .4byte gUnknown_030042D4
-_0801194C: .4byte sub_8011970
- thumb_func_end bc_801362C
-
- thumb_func_start unref_sub_8011950
-unref_sub_8011950: @ 8011950
- push {lr}
- ldr r0, _08011964 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _08011960
- ldr r1, _08011968 @ =gUnknown_030042D4
- ldr r0, _0801196C @ =sub_8011970
- str r0, [r1]
-_08011960:
- pop {r0}
- bx r0
- .align 2, 0
-_08011964: .4byte gUnknown_02024A64
-_08011968: .4byte gUnknown_030042D4
-_0801196C: .4byte sub_8011970
- thumb_func_end unref_sub_8011950
-
- thumb_func_start sub_8011970
-sub_8011970: @ 8011970
- push {lr}
- ldr r0, _080119A4 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _0801199E
- ldr r0, _080119A8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08011998
- movs r0, 0
- bl battle_get_side_with_given_state
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- bl b_std_message
-_08011998:
- ldr r1, _080119AC @ =gUnknown_030042D4
- ldr r0, _080119B0 @ =sub_80119B4
- str r0, [r1]
-_0801199E:
- pop {r0}
- bx r0
- .align 2, 0
-_080119A4: .4byte gUnknown_02024A64
-_080119A8: .4byte gBattleTypeFlags
-_080119AC: .4byte gUnknown_030042D4
-_080119B0: .4byte sub_80119B4
- thumb_func_end sub_8011970
-
- thumb_func_start sub_80119B4
-sub_80119B4: @ 80119B4
- push {r4,lr}
- ldr r0, _08011A40 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _08011A38
- ldr r2, _08011A44 @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _08011A48 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08011A1C
- adds r4, r2, 0
-_080119CC:
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- cmp r0, 0
- bne _080119E4
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_080119E4:
- ldr r0, _08011A4C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08011A0A
- ldrb r0, [r4]
- bl battle_get_per_side_status
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08011A0A
- movs r0, 0
- bl dp01_build_cmdbuf_x2F_2F_2F_2F
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011A0A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08011A48 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _080119CC
-_08011A1C:
- ldr r1, _08011A50 @ =0x02000000
- ldr r2, _08011A54 @ =0x00016058
- adds r0, r1, r2
- movs r2, 0
- strb r2, [r0]
- ldr r3, _08011A58 @ =0x000160f9
- adds r0, r1, r3
- strb r2, [r0]
- ldr r0, _08011A5C @ =0x000160e6
- adds r1, r0
- strb r2, [r1]
- ldr r1, _08011A60 @ =gUnknown_030042D4
- ldr r0, _08011A64 @ =sub_8011B00
- str r0, [r1]
-_08011A38:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08011A40: .4byte gUnknown_02024A64
-_08011A44: .4byte gUnknown_02024A60
-_08011A48: .4byte gUnknown_02024A68
-_08011A4C: .4byte gBattleTypeFlags
-_08011A50: .4byte 0x02000000
-_08011A54: .4byte 0x00016058
-_08011A58: .4byte 0x000160f9
-_08011A5C: .4byte 0x000160e6
-_08011A60: .4byte gUnknown_030042D4
-_08011A64: .4byte sub_8011B00
- thumb_func_end sub_80119B4
-
- thumb_func_start unref_sub_8011A68
-unref_sub_8011A68: @ 8011A68
- push {r4,r5,lr}
- ldr r0, _08011AD8 @ =gUnknown_02024A64
- ldr r1, [r0]
- cmp r1, 0
- bne _08011AD2
- ldr r2, _08011ADC @ =gUnknown_02024A60
- strb r1, [r2]
- ldr r0, _08011AE0 @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08011AB6
- adds r4, r2, 0
- ldr r5, _08011AE4 @ =gUnknown_02024A6A
-_08011A82:
- ldrb r0, [r4]
- bl battle_side_get_owner
- lsls r0, 24
- cmp r0, 0
- bne _08011AA4
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0
- bl sub_800C704
- ldrb r0, [r4]
- bl dp01_battle_side_mark_buffer_for_execution
-_08011AA4:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08011AE0 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08011A82
-_08011AB6:
- ldr r1, _08011AE8 @ =0x02000000
- ldr r2, _08011AEC @ =0x00016058
- adds r0, r1, r2
- movs r2, 0
- strb r2, [r0]
- ldr r3, _08011AF0 @ =0x000160f9
- adds r0, r1, r3
- strb r2, [r0]
- ldr r0, _08011AF4 @ =0x000160e6
- adds r1, r0
- strb r2, [r1]
- ldr r1, _08011AF8 @ =gUnknown_030042D4
- ldr r0, _08011AFC @ =sub_8011B00
- str r0, [r1]
-_08011AD2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08011AD8: .4byte gUnknown_02024A64
-_08011ADC: .4byte gUnknown_02024A60
-_08011AE0: .4byte gUnknown_02024A68
-_08011AE4: .4byte gUnknown_02024A6A
-_08011AE8: .4byte 0x02000000
-_08011AEC: .4byte 0x00016058
-_08011AF0: .4byte 0x000160f9
-_08011AF4: .4byte 0x000160e6
-_08011AF8: .4byte gUnknown_030042D4
-_08011AFC: .4byte sub_8011B00
- thumb_func_end unref_sub_8011A68
-
- thumb_func_start sub_8011B00
-sub_8011B00: @ 8011B00
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r0, 0
- mov r9, r0
- ldr r0, _08011B44 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- beq _08011B18
- b _08011D6E
-_08011B18:
- ldr r0, _08011B48 @ =0x02000000
- ldr r1, _08011B4C @ =0x00016058
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08011BA2
- movs r5, 0
- ldr r1, _08011B50 @ =gUnknown_02024A68
- adds r3, r1, 0
- ldrb r2, [r1]
- cmp r5, r2
- bge _08011B3E
- ldr r2, _08011B54 @ =gUnknown_02024A7A
-_08011B32:
- adds r0, r5, r2
- strb r5, [r0]
- adds r5, 0x1
- ldrb r0, [r1]
- cmp r5, r0
- blt _08011B32
-_08011B3E:
- movs r5, 0
- b _08011B98
- .align 2, 0
-_08011B44: .4byte gUnknown_02024A64
-_08011B48: .4byte 0x02000000
-_08011B4C: .4byte 0x00016058
-_08011B50: .4byte gUnknown_02024A68
-_08011B54: .4byte gUnknown_02024A7A
-_08011B58:
- adds r4, r5, 0x1
- mov r8, r4
- ldrb r1, [r1]
- cmp r8, r1
- bge _08011B96
- ldr r6, _08011BC8 @ =gUnknown_02024A7A
- ldr r3, _08011BCC @ =gUnknown_02024A68
- lsls r7, r5, 24
-_08011B68:
- adds r0, r5, r6
- ldrb r0, [r0]
- adds r1, r4, r6
- ldrb r1, [r1]
- movs r2, 0x1
- str r3, [sp, 0x4]
- bl b_first_side
- lsls r0, 24
- ldr r3, [sp, 0x4]
- cmp r0, 0
- beq _08011B8C
- lsls r1, r4, 24
- lsrs r1, 24
- lsrs r0, r7, 24
- bl sub_8012FBC
- ldr r3, [sp, 0x4]
-_08011B8C:
- adds r4, 0x1
- ldr r0, _08011BCC @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r4, r0
- blt _08011B68
-_08011B96:
- mov r5, r8
-_08011B98:
- adds r1, r3, 0
- ldrb r0, [r3]
- subs r0, 0x1
- cmp r5, r0
- blt _08011B58
-_08011BA2:
- ldr r0, _08011BD0 @ =0x02000000
- ldr r1, _08011BD4 @ =0x000160e6
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _08011BD8
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl sub_8018324
- lsls r0, 24
- cmp r0, 0
- beq _08011BD8
- movs r0, 0x1
- strb r0, [r4]
- b _08011D6E
- .align 2, 0
-_08011BC8: .4byte gUnknown_02024A7A
-_08011BCC: .4byte gUnknown_02024A68
-_08011BD0: .4byte 0x02000000
-_08011BD4: .4byte 0x000160e6
-_08011BD8:
- ldr r0, _08011D7C @ =0x02000000
- ldr r3, _08011D80 @ =0x00016058
- adds r2, r0, r3
- ldr r1, _08011D84 @ =gUnknown_02024A68
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _08011C28
- ldr r5, _08011D88 @ =gUnknown_02024A7A
- adds r4, r2, 0
-_08011BEC:
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- cmp r0, 0
- beq _08011C0E
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08011C0E:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- mov r1, r9
- cmp r1, 0
- beq _08011C1C
- b _08011D6E
-_08011C1C:
- ldr r1, _08011D84 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08011BEC
-_08011C28:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08011C42
- b _08011D6E
-_08011C42:
- str r0, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- cmp r0, 0
- beq _08011C58
- b _08011D6E
-_08011C58:
- ldr r0, _08011D7C @ =0x02000000
- ldr r3, _08011D8C @ =0x000160f9
- adds r2, r0, r3
- ldr r0, _08011D84 @ =gUnknown_02024A68
- ldrb r1, [r2]
- adds r3, r0, 0
- ldrb r0, [r3]
- cmp r1, r0
- bcs _08011CA8
- ldr r5, _08011D88 @ =gUnknown_02024A7A
- adds r4, r2, 0
-_08011C6E:
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0
- movs r2, 0
- str r3, [sp, 0x4]
- bl sub_801A02C
- lsls r0, 24
- ldr r3, [sp, 0x4]
- cmp r0, 0
- beq _08011C90
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08011C90:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- mov r1, r9
- cmp r1, 0
- bne _08011D6E
- ldr r1, _08011D84 @ =gUnknown_02024A68
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08011C6E
-_08011CA8:
- ldrb r0, [r3]
- cmp r0, 0
- beq _08011CB6
- adds r5, r0, 0
-_08011CB0:
- subs r5, 0x1
- cmp r5, 0
- bne _08011CB0
-_08011CB6:
- movs r5, 0
- ldr r0, _08011D7C @ =0x02000000
- mov r8, r5
- ldr r3, _08011D90 @ =gUnknown_02024C60
- ldr r1, _08011D94 @ =0x00016068
- adds r2, r0, r1
- movs r7, 0x6
- ldr r6, _08011D98 @ =gUnknown_02024C18
- movs r4, 0xFF
-_08011CC8:
- strb r7, [r2]
- adds r1, r5, r6
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- mov r0, r8
- strh r0, [r3]
- adds r3, 0x2
- adds r2, 0x1
- adds r5, 0x1
- cmp r5, 0x3
- ble _08011CC8
- movs r0, 0
- bl sub_801365C
- bl sub_801377C
- ldr r0, _08011D7C @ =0x02000000
- ldr r1, _08011D9C @ =gUnknown_02024C0C
- ldrb r1, [r1]
- ldr r2, _08011DA0 @ =0x000160a6
- adds r0, r2
- strb r1, [r0]
- ldr r1, _08011DA4 @ =gUnknown_030042D4
- ldr r0, _08011DA8 @ =sub_8012324
- str r0, [r1]
- bl sub_80156DC
- ldr r1, _08011DAC @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x7
-_08011D06:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08011D06
- movs r5, 0
- ldr r3, _08011D84 @ =gUnknown_02024A68
- ldr r2, _08011D7C @ =0x02000000
- ldr r6, _08011DB0 @ =gBattleMoveFlags
- ldrb r0, [r3]
- cmp r5, r0
- bge _08011D36
- ldr r0, _08011DB4 @ =gBattleMons
- movs r4, 0x9
- negs r4, r4
- adds r1, r0, 0
- adds r1, 0x50
-_08011D26:
- ldr r0, [r1]
- ands r0, r4
- str r0, [r1]
- adds r1, 0x58
- adds r5, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- blt _08011D26
-_08011D36:
- movs r1, 0xB0
- lsls r1, 9
- adds r0, r2, r1
- movs r1, 0
- strb r1, [r0]
- ldr r3, _08011DB8 @ =0x00016001
- adds r0, r2, r3
- strb r1, [r0]
- ldr r3, _08011DBC @ =0x00016110
- adds r0, r2, r3
- strb r1, [r0]
- adds r3, 0x1
- adds r0, r2, r3
- strb r1, [r0]
- ldr r3, _08011DC0 @ =0x0001600c
- adds r0, r2, r3
- strb r1, [r0]
- adds r3, 0x4D
- adds r0, r2, r3
- strb r1, [r0]
- subs r3, 0x4B
- adds r0, r2, r3
- strb r1, [r0]
- strb r1, [r6]
- bl Random
- ldr r1, _08011DC4 @ =gUnknown_02024D1C
- strh r0, [r1]
-_08011D6E:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011D7C: .4byte 0x02000000
-_08011D80: .4byte 0x00016058
-_08011D84: .4byte gUnknown_02024A68
-_08011D88: .4byte gUnknown_02024A7A
-_08011D8C: .4byte 0x000160f9
-_08011D90: .4byte gUnknown_02024C60
-_08011D94: .4byte 0x00016068
-_08011D98: .4byte gUnknown_02024C18
-_08011D9C: .4byte gUnknown_02024C0C
-_08011DA0: .4byte 0x000160a6
-_08011DA4: .4byte gUnknown_030042D4
-_08011DA8: .4byte sub_8012324
-_08011DAC: .4byte gUnknown_02024D1E
-_08011DB0: .4byte gBattleMoveFlags
-_08011DB4: .4byte gBattleMons
-_08011DB8: .4byte 0x00016001
-_08011DBC: .4byte 0x00016110
-_08011DC0: .4byte 0x0001600c
-_08011DC4: .4byte gUnknown_02024D1C
- thumb_func_end sub_8011B00
-
- thumb_func_start bc_8013B1C
-bc_8013B1C: @ 8011DC8
- push {r4-r6,lr}
- ldr r0, _08011E60 @ =gUnknown_02024A64
- ldr r0, [r0]
- cmp r0, 0
- bne _08011E5A
- ldr r1, _08011E64 @ =gUnknown_030042D4
- ldr r0, _08011E68 @ =sub_8011E8C
- str r0, [r1]
- ldr r3, _08011E6C @ =gUnknown_02024A68
- ldr r1, _08011E70 @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x7
-_08011DE0:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08011DE0
- movs r4, 0
- ldrb r3, [r3]
- cmp r4, r3
- bge _08011E32
- ldr r5, _08011E74 @ =gBattleMons
- adds r6, r5, 0
- adds r6, 0x4C
-_08011DF6:
- movs r0, 0x58
- adds r2, r4, 0
- muls r2, r0
- adds r1, r5, 0
- adds r1, 0x50
- adds r1, r2, r1
- ldr r3, [r1]
- subs r0, 0x61
- ands r3, r0
- str r3, [r1]
- adds r2, r6
- ldr r0, [r2]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08011E28
- movs r0, 0x80
- lsls r0, 5
- ands r3, r0
- cmp r3, 0
- beq _08011E28
- lsls r0, r4, 24
- lsrs r0, 24
- bl b_cancel_multi_turn_move_maybe
-_08011E28:
- adds r4, 0x1
- ldr r0, _08011E6C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r4, r0
- blt _08011DF6
-_08011E32:
- ldr r0, _08011E78 @ =0x02000000
- movs r2, 0xB0
- lsls r2, 9
- adds r1, r0, r2
- movs r2, 0
- strb r2, [r1]
- ldr r3, _08011E7C @ =0x00016001
- adds r1, r0, r3
- strb r2, [r1]
- ldr r3, _08011E80 @ =0x00016110
- adds r1, r0, r3
- strb r2, [r1]
- adds r3, 0x1
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, _08011E84 @ =0x0001600e
- adds r0, r1
- strb r2, [r0]
- ldr r0, _08011E88 @ =gBattleMoveFlags
- strb r2, [r0]
-_08011E5A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08011E60: .4byte gUnknown_02024A64
-_08011E64: .4byte gUnknown_030042D4
-_08011E68: .4byte sub_8011E8C
-_08011E6C: .4byte gUnknown_02024A68
-_08011E70: .4byte gUnknown_02024D1E
-_08011E74: .4byte gBattleMons
-_08011E78: .4byte 0x02000000
-_08011E7C: .4byte 0x00016001
-_08011E80: .4byte 0x00016110
-_08011E84: .4byte 0x0001600e
-_08011E88: .4byte gBattleMoveFlags
- thumb_func_end bc_8013B1C
-
- thumb_func_start sub_8011E8C
-sub_8011E8C: @ 8011E8C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0x1
- bl sub_801365C
- ldr r0, _08011F3C @ =gUnknown_02024D26
- ldrb r0, [r0]
- cmp r0, 0
- bne _08011EBC
- bl sub_8015DFC
- lsls r0, 24
- cmp r0, 0
- beq _08011EB0
- b _08011FEE
-_08011EB0:
- bl sub_8016558
- lsls r0, 24
- cmp r0, 0
- beq _08011EBC
- b _08011FEE
-_08011EBC:
- bl sub_80173A4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08011ECA
- b _08011FEE
-_08011ECA:
- ldr r5, _08011F40 @ =0x02000000
- ldr r2, _08011F44 @ =0x00016059
- adds r0, r5, r2
- strb r1, [r0]
- bl sub_80170DC
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _08011EE0
- b _08011FEE
-_08011EE0:
- movs r0, 0
- bl sub_801365C
- ldr r2, _08011F48 @ =gUnknown_02024C6C
- ldr r0, [r2]
- ldr r1, _08011F4C @ =0xfffffdff
- ands r0, r1
- ldr r1, _08011F50 @ =0xfff7ffff
- ands r0, r1
- ldr r1, _08011F54 @ =0xffbfffff
- ands r0, r1
- ldr r1, _08011F58 @ =0xffefffff
- ands r0, r1
- str r0, [r2]
- ldr r3, _08011F5C @ =0x00016002
- adds r0, r5, r3
- strb r4, [r0]
- ldr r1, _08011F60 @ =0x000160a1
- adds r0, r5, r1
- strb r4, [r0]
- ldr r2, _08011F64 @ =0x0001600c
- adds r0, r5, r2
- strb r4, [r0]
- ldr r0, _08011F68 @ =gBattleMoveDamage
- str r4, [r0]
- ldr r0, _08011F6C @ =gBattleMoveFlags
- strb r4, [r0]
- ldr r1, _08011F70 @ =gUnknown_02024D1E
- movs r2, 0
- adds r0, r1, 0x4
-_08011F1C:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _08011F1C
- ldr r0, _08011F3C @ =gUnknown_02024D26
- ldrb r0, [r0]
- cmp r0, 0
- beq _08011F80
- ldr r1, _08011F74 @ =gUnknown_02024A7F
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, _08011F78 @ =gUnknown_030042D4
- ldr r0, _08011F7C @ =sub_80138F0
- str r0, [r1]
- b _08011FEE
- .align 2, 0
-_08011F3C: .4byte gUnknown_02024D26
-_08011F40: .4byte 0x02000000
-_08011F44: .4byte 0x00016059
-_08011F48: .4byte gUnknown_02024C6C
-_08011F4C: .4byte 0xfffffdff
-_08011F50: .4byte 0xfff7ffff
-_08011F54: .4byte 0xffbfffff
-_08011F58: .4byte 0xffefffff
-_08011F5C: .4byte 0x00016002
-_08011F60: .4byte 0x000160a1
-_08011F64: .4byte 0x0001600c
-_08011F68: .4byte gBattleMoveDamage
-_08011F6C: .4byte gBattleMoveFlags
-_08011F70: .4byte gUnknown_02024D1E
-_08011F74: .4byte gUnknown_02024A7F
-_08011F78: .4byte gUnknown_030042D4
-_08011F7C: .4byte sub_80138F0
-_08011F80:
- ldr r1, _08011FFC @ =gUnknown_030042E0
- ldrb r0, [r1, 0x13]
- cmp r0, 0xFE
- bhi _08011F8C
- adds r0, 0x1
- strb r0, [r1, 0x13]
-_08011F8C:
- movs r2, 0
- ldr r4, _08012000 @ =gUnknown_02024A68
- ldr r3, _08012004 @ =0x02000000
- mov r9, r3
- ldr r0, _08012008 @ =gUnknown_030042D4
- mov r10, r0
- ldr r1, _0801200C @ =gUnknown_02024C0C
- mov r12, r1
- ldr r3, _08012010 @ =sub_8012324
- mov r8, r3
- ldrb r0, [r4]
- cmp r2, r0
- bge _08011FC2
- ldr r7, _08012014 @ =gUnknown_02024C18
- movs r6, 0xFF
- movs r5, 0
- ldr r3, _08012018 @ =gUnknown_02024C60
-_08011FAE:
- adds r1, r2, r7
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- strh r5, [r3]
- adds r3, 0x2
- adds r2, 0x1
- ldrb r1, [r4]
- cmp r2, r1
- blt _08011FAE
-_08011FC2:
- ldr r0, _08012004 @ =0x02000000
- movs r1, 0x6
- movs r2, 0x3
- ldr r3, _0801201C @ =0x0001606b
- adds r0, r3
-_08011FCC:
- strb r1, [r0]
- subs r0, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _08011FCC
- mov r0, r12
- ldrb r1, [r0]
- ldr r0, _08012020 @ =0x000160a6
- add r0, r9
- strb r1, [r0]
- mov r1, r8
- mov r2, r10
- str r1, [r2]
- bl Random
- ldr r1, _08012024 @ =gUnknown_02024D1C
- strh r0, [r1]
-_08011FEE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08011FFC: .4byte gUnknown_030042E0
-_08012000: .4byte gUnknown_02024A68
-_08012004: .4byte 0x02000000
-_08012008: .4byte gUnknown_030042D4
-_0801200C: .4byte gUnknown_02024C0C
-_08012010: .4byte sub_8012324
-_08012014: .4byte gUnknown_02024C18
-_08012018: .4byte gUnknown_02024C60
-_0801201C: .4byte 0x0001606b
-_08012020: .4byte 0x000160a6
-_08012024: .4byte gUnknown_02024D1C
- thumb_func_end sub_8011E8C
-
- thumb_func_start sub_8012028
-sub_8012028: @ 8012028
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, _0801204C @ =gBattleMons
- ldr r0, _08012050 @ =gUnknown_02024A60
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _08012058
- ldr r1, _08012054 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x7]
- b _08012062
- .align 2, 0
-_0801204C: .4byte gBattleMons
-_08012050: .4byte gUnknown_02024A60
-_08012054: .4byte gEnigmaBerries
-_08012058:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r2, r0, 24
-_08012062:
- ldr r1, _0801217C @ =gUnknown_02024C0B
- ldr r3, _08012180 @ =gUnknown_02024A60
- ldrb r0, [r3]
- strb r0, [r1]
- cmp r2, 0x25
- bne _08012070
- b _080121F4
-_08012070:
- ldr r0, _08012184 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801207E
- b _080121F4
-_0801207E:
- ldr r1, _08012188 @ =gBattleMons
- ldrb r2, [r3]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x32
- bne _08012092
- b _080121F4
-_08012092:
- adds r0, r2, 0
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r0, _0801218C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- bge _08012126
- movs r7, 0
-_080120A8:
- lsrs r4, r7, 24
- adds r0, r4, 0
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _080120CC
- ldr r1, _08012188 @ =gBattleMons
- movs r0, 0x58
- muls r0, r5
- adds r0, r1
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r0, [r2]
- cmp r0, 0x17
- bne _080120CC
- b _080121FC
-_080120CC:
- adds r0, r4, 0
- bl battle_side_get_owner
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _08012116
- ldr r3, _08012188 @ =gBattleMons
- ldr r0, _08012180 @ =gUnknown_02024A60
- ldrb r0, [r0]
- movs r2, 0x58
- muls r0, r2
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- beq _08012116
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08012116
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08012116
- adds r0, r5, 0
- muls r0, r2
- adds r0, r3
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r0, [r2]
- cmp r0, 0x47
- bne _08012116
- b _08012220
-_08012116:
- movs r0, 0x80
- lsls r0, 17
- adds r7, r0
- adds r5, 0x1
- ldr r0, _0801218C @ =gUnknown_02024A68
- ldrb r0, [r0]
- cmp r5, r0
- blt _080120A8
-_08012126:
- ldr r4, _08012180 @ =gUnknown_02024A60
- ldrb r1, [r4]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xF
- movs r2, 0x2A
- movs r3, 0
- bl sub_8018324
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080121A0
- ldr r6, _08012188 @ =gBattleMons
- ldrb r0, [r4]
- movs r3, 0x58
- muls r0, r3
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- beq _0801215E
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080121A0
-_0801215E:
- ldr r0, _08012190 @ =0x02000000
- subs r1, r5, 0x1
- ldr r2, _08012194 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- ldr r2, _08012198 @ =byte_2024C06
- adds r0, r1, 0
- muls r0, r3
- adds r0, r6
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r1, _0801219C @ =gUnknown_02024D1E
- movs r0, 0x2
- b _08012248
- .align 2, 0
-_0801217C: .4byte gUnknown_02024C0B
-_08012180: .4byte gUnknown_02024A60
-_08012184: .4byte gBattleTypeFlags
-_08012188: .4byte gBattleMons
-_0801218C: .4byte gUnknown_02024A68
-_08012190: .4byte 0x02000000
-_08012194: .4byte 0x00016003
-_08012198: .4byte byte_2024C06
-_0801219C: .4byte gUnknown_02024D1E
-_080121A0:
- ldr r1, _080121D4 @ =gBattleMons
- ldr r0, _080121D8 @ =gUnknown_02024A60
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080121DC @ =0x0400e000
- ands r0, r1
- cmp r0, 0
- bne _080121CA
- ldr r1, _080121E0 @ =gUnknown_02024C98
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _080121E8
-_080121CA:
- ldr r1, _080121E4 @ =gUnknown_02024D1E
- movs r0, 0
- strb r0, [r1, 0x5]
- movs r0, 0x1
- b _0801224A
- .align 2, 0
-_080121D4: .4byte gBattleMons
-_080121D8: .4byte gUnknown_02024A60
-_080121DC: .4byte 0x0400e000
-_080121E0: .4byte gUnknown_02024C98
-_080121E4: .4byte gUnknown_02024D1E
-_080121E8:
- ldr r0, _080121F8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08012244
-_080121F4:
- movs r0, 0
- b _0801224A
- .align 2, 0
-_080121F8: .4byte gBattleTypeFlags
-_080121FC:
- ldr r0, _08012210 @ =0x02000000
- ldr r1, _08012214 @ =0x00016003
- adds r0, r1
- strb r5, [r0]
- ldr r1, _08012218 @ =byte_2024C06
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r1, _0801221C @ =gUnknown_02024D1E
- movs r0, 0x2
- b _08012248
- .align 2, 0
-_08012210: .4byte 0x02000000
-_08012214: .4byte 0x00016003
-_08012218: .4byte byte_2024C06
-_0801221C: .4byte gUnknown_02024D1E
-_08012220:
- ldr r0, _08012234 @ =0x02000000
- ldr r1, _08012238 @ =0x00016003
- adds r0, r1
- strb r5, [r0]
- ldr r1, _0801223C @ =byte_2024C06
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r1, _08012240 @ =gUnknown_02024D1E
- movs r0, 0x2
- b _08012248
- .align 2, 0
-_08012234: .4byte 0x02000000
-_08012238: .4byte 0x00016003
-_0801223C: .4byte byte_2024C06
-_08012240: .4byte gUnknown_02024D1E
-_08012244:
- ldr r1, _08012254 @ =gUnknown_02024D1E
- movs r0, 0x1
-_08012248:
- strb r0, [r1, 0x5]
-_0801224A:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08012254: .4byte gUnknown_02024D1E
- thumb_func_end sub_8012028
-
- thumb_func_start sub_8012258
-sub_8012258: @ 8012258
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r3, 0
- ldr r7, _080122E4 @ =gUnknown_02024A6A
- ldr r4, _080122E8 @ =gUnknown_02038470
- ldr r1, _080122EC @ =0x02000000
- lsls r6, r5, 1
- ldr r2, _080122F0 @ =0x0001606c
- adds r0, r5, r2
- adds r0, r6, r0
- adds r2, r0, r1
-_08012270:
- adds r1, r3, r4
- ldrb r0, [r2]
- strb r0, [r1]
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _08012270
- adds r0, r6, r7
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, _080122EC @ =0x02000000
- ldr r1, _080122F4 @ =0x00016068
- adds r0, r5, r1
- adds r0, r7
- ldrb r0, [r0]
- bl pokemon_order_func
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8094C98
- ldr r0, _080122F8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080122FC
- movs r3, 0
- ldr r2, _080122F0 @ =0x0001606c
- movs r0, 0x2
- adds r1, r5, 0
- eors r1, r0
- adds r0, r5, r2
- adds r0, r6, r0
- adds r4, r0, r7
- ldr r5, _080122E8 @ =gUnknown_02038470
- lsls r0, r1, 1
- adds r0, r1
- adds r0, r2
- adds r2, r0, r7
-_080122CC:
- adds r0, r3, r5
- ldrb r1, [r0]
- strb r1, [r4]
- ldrb r0, [r0]
- strb r0, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _080122CC
- b _08012316
- .align 2, 0
-_080122E4: .4byte gUnknown_02024A6A
-_080122E8: .4byte gUnknown_02038470
-_080122EC: .4byte 0x02000000
-_080122F0: .4byte 0x0001606c
-_080122F4: .4byte 0x00016068
-_080122F8: .4byte gBattleTypeFlags
-_080122FC:
- movs r3, 0
- ldr r2, _0801231C @ =0x0001606c
- adds r0, r5, r2
- adds r0, r6, r0
- adds r1, r0, r7
- ldr r2, _08012320 @ =gUnknown_02038470
-_08012308:
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, 0x1
- adds r3, 0x1
- cmp r3, 0x2
- ble _08012308
-_08012316:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801231C: .4byte 0x0001606c
-_08012320: .4byte gUnknown_02038470
- thumb_func_end sub_8012258
-
thumb_func_start sub_8012324
sub_8012324: @ 8012324
push {r4-r7,lr}
diff --git a/asm/cable_club.s b/asm/cable_club.s
index bd7a2bd5c..7e5d19c24 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -1515,7 +1515,7 @@ unref_sub_8083BB0: @ 8083BB0
bl CreateTask
lsls r0, 24
lsrs r0, 24
- ldr r2, _08083BD8 @ =sub_80B9484
+ ldr r2, _08083BD8 @ =Task_RecordMixing_Main
adds r1, r4, 0
bl SetTaskFuncWithFollowupFunc
bl ScriptContext1_Stop
@@ -1524,7 +1524,7 @@ unref_sub_8083BB0: @ 8083BB0
bx r0
.align 2, 0
_08083BD4: .4byte sub_80839DC
-_08083BD8: .4byte sub_80B9484
+_08083BD8: .4byte Task_RecordMixing_Main
thumb_func_end unref_sub_8083BB0
thumb_func_start sub_8083BDC
diff --git a/asm/daycare.s b/asm/daycare.s
index 47a84e8e0..2944f7565 100644
--- a/asm/daycare.s
+++ b/asm/daycare.s
@@ -6,446 +6,6 @@
.text
- thumb_func_start sub_8041324
-sub_8041324: @ 8041324
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- mov r10, r1
- movs r7, 0
- movs r5, 0
- mov r6, r10
- adds r6, 0x74
- movs r0, 0x1
- mov r8, r0
-_0804133E:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 4
- mov r1, r9
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _0804136E
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- movs r1, 0xC
- bl GetBoxMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0804136E
- lsls r0, r5, 1
- adds r0, r6, r0
- b _08041374
-_0804136E:
- lsls r0, r5, 1
- adds r0, r6, r0
- mov r1, r8
-_08041374:
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _0804133E
- mov r0, r10
- str r7, [r0, 0x70]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8041324
-
- thumb_func_start daycare_empty_slot
-daycare_empty_slot: @ 8041394
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r4, 0
-_0804139A:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r0, r5, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _080413B2
- lsls r0, r4, 24
- asrs r0, 24
- b _080413C0
-_080413B2:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bls _0804139A
- movs r0, 0x1
- negs r0, r0
-_080413C0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end daycare_empty_slot
-
- thumb_func_start sub_80413C8
-sub_80413C8: @ 80413C8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- mov r8, r1
- mov r0, r8
- bl daycare_empty_slot
- lsls r0, 24
- lsrs r4, r0, 24
- mov r9, r4
- adds r0, r7, 0
- bl MonHasMail
- lsls r0, 24
- cmp r0, 0
- beq _0804144A
- lsls r0, r4, 24
- asrs r0, 24
- lsls r4, r0, 3
- subs r4, r0
- lsls r4, 3
- adds r5, r4, 0
- adds r5, 0xA0
- add r5, r8
- adds r6, r5, 0
- adds r6, 0x24
- ldr r1, _08041490 @ =gSaveBlock2
- adds r0, r6, 0
- bl StringCopy
- adds r0, r6, 0
- movs r1, 0xFC
- bl PadNameString
- adds r6, 0x8
- adds r0, r7, 0
- adds r1, r6, 0
- bl pokemon_get_nick
- adds r0, r7, 0
- movs r1, 0x40
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- add r4, r8
- ldr r2, _08041494 @ =gSaveBlock1
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r4, 0xA0
- ldr r0, _08041498 @ =0x00002b4c
- adds r1, r0
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- adds r0, r7, 0
- bl TakeMailFromMon
-_0804144A:
- mov r2, r9
- lsls r4, r2, 24
- asrs r4, 24
- lsls r5, r4, 2
- adds r4, r5, r4
- lsls r4, 4
- add r4, r8
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r4, 0
- bl BoxMonRestorePP
- movs r0, 0x88
- lsls r0, 1
- add r0, r8
- adds r0, r5
- movs r1, 0
- str r1, [r0]
- adds r0, r7, 0
- bl ZeroMonData
- bl party_compaction
- bl CalculatePlayerPartyCount
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08041490: .4byte gSaveBlock2
-_08041494: .4byte gSaveBlock1
-_08041498: .4byte 0x00002b4c
- thumb_func_end sub_80413C8
-
- thumb_func_start daycare_send
-daycare_send: @ 804149C
- push {lr}
- ldr r0, _080414B4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080414B8 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080414BC @ =gSaveBlock1 + 0x2F9C
- bl sub_80413C8
- pop {r0}
- bx r0
- .align 2, 0
-_080414B4: .4byte gLastFieldPokeMenuOpened
-_080414B8: .4byte gPlayerParty
-_080414BC: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end daycare_send
-
- thumb_func_start sub_80414C0
-sub_80414C0: @ 80414C0
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- adds r4, 0x50
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08041516
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- adds r6, r0, 0
- cmp r6, 0
- bne _08041516
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r4, 0
- bl ZeroBoxMonData
- adds r0, r5, 0
- adds r0, 0xA0
- adds r4, 0x88
- adds r1, r4, 0
- movs r2, 0x38
- bl memcpy
- movs r0, 0x88
- lsls r0, 1
- adds r2, r5, r0
- adds r0, 0x4
- adds r1, r5, r0
- ldr r0, [r1]
- str r0, [r2]
- str r6, [r1]
- adds r0, r4, 0
- bl sub_80417F4
-_08041516:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80414C0
-
- thumb_func_start sub_804151C
-sub_804151C: @ 804151C
- push {r4-r7,lr}
- adds r4, r0, 0
- movs r5, 0
- ldr r7, _08041538 @ =0x0000ffff
-_08041524:
- adds r0, r4, 0
- bl TryIncrementMonLevel
- lsls r0, 24
- cmp r0, 0
- beq _08041560
- movs r6, 0x1
- adds r5, 0x1
- b _0804154C
- .align 2, 0
-_08041538: .4byte 0x0000ffff
-_0804153C:
- movs r6, 0
- cmp r0, r7
- bne _0804154C
- ldr r0, _0804156C @ =word_2024E82
- ldrh r1, [r0]
- adds r0, r4, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_0804154C:
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_803B7C8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _0804153C
- cmp r5, 0x63
- ble _08041524
-_08041560:
- adds r0, r4, 0
- bl CalculateMonStats
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804156C: .4byte word_2024E82
- thumb_func_end sub_804151C
-
- thumb_func_start sub_8041570
-sub_8041570: @ 8041570
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x68
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r7, r4, 2
- adds r0, r7, r4
- lsls r0, 4
- adds r6, r5, r0
- ldr r1, _08041640 @ =gStringVar1
- adds r0, r6, 0
- bl pokemon_get_nick_
- adds r0, r6, 0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- adds r0, r6, 0
- mov r1, sp
- bl sub_803B4B4
- mov r0, sp
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- beq _080415D8
- mov r0, sp
- movs r1, 0x19
- bl GetMonData
- movs r2, 0x88
- lsls r2, 1
- adds r1, r5, r2
- adds r1, r7
- ldr r1, [r1]
- adds r0, r1
- str r0, [sp, 0x64]
- add r2, sp, 0x64
- mov r0, sp
- movs r1, 0x19
- bl SetMonData
- mov r0, sp
- bl sub_804151C
-_080415D8:
- ldr r0, _08041644 @ =gPlayerParty
- movs r1, 0xFA
- lsls r1, 1
- adds r1, r0
- mov r8, r1
- mov r0, r8
- mov r1, sp
- movs r2, 0x64
- bl memcpy
- lsls r0, r4, 3
- subs r0, r4
- lsls r1, r0, 3
- adds r0, r5, r1
- adds r0, 0xC0
- ldrh r0, [r0]
- cmp r0, 0
- beq _08041610
- adds r4, r1, 0
- adds r4, 0xA0
- adds r4, r5, r4
- mov r0, r8
- adds r1, r4, 0
- bl GiveMailToMon2
- adds r0, r4, 0
- bl sub_80417F4
-_08041610:
- bl party_compaction
- adds r0, r6, 0
- bl ZeroBoxMonData
- movs r2, 0x88
- lsls r2, 1
- adds r0, r5, r2
- adds r0, r7
- movs r1, 0
- str r1, [r0]
- adds r0, r5, 0
- bl sub_80414C0
- bl CalculatePlayerPartyCount
- mov r0, r9
- add sp, 0x68
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08041640: .4byte gStringVar1
-_08041644: .4byte gPlayerParty
- thumb_func_end sub_8041570
-
- thumb_func_start sub_8041648
-sub_8041648: @ 8041648
- push {lr}
- ldr r0, _0804165C @ =gSaveBlock1 + 0x2F9C
- ldr r1, _08041660 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_8041570
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0804165C: .4byte gSaveBlock1 + 0x2F9C
-_08041660: .4byte gSpecialVar_0x8004
- thumb_func_end sub_8041648
-
- thumb_func_start sub_8041664
-sub_8041664: @ 8041664
- push {r4,r5,lr}
- sub sp, 0x54
- adds r4, r0, 0
- adds r5, r1, 0
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x50
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x19
- bl GetBoxMonData
- adds r0, r5
- str r0, [sp, 0x50]
- add r2, sp, 0x50
- mov r0, sp
- movs r1, 0x19
- bl SetBoxMonData
- mov r0, sp
- bl GetLevelFromBoxMonExp
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x54
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8041664
-
thumb_func_start sub_80416A0
sub_80416A0: @ 80416A0
push {r4-r6,lr}
@@ -470,7 +30,7 @@ sub_80416A0: @ 80416A0
add r5, r8
ldr r1, [r5]
adds r0, r4, 0
- bl sub_8041664
+ bl Daycare_GetLevelAfterSteps
lsls r0, 24
lsrs r0, 24
subs r0, r6
@@ -500,7 +60,7 @@ sub_80416E8: @ 80416E8
adds r6, r0
ldr r1, _08041720 @ =gStringVar1
adds r0, r6, 0
- bl pokemon_get_nick_
+ bl GetBoxMonNick
ldr r0, _08041724 @ =gStringVar2
adds r1, r5, 0
movs r2, 0
@@ -532,7 +92,7 @@ sub_8041728: @ 8041728
adds r6, r0
ldr r1, _08041768 @ =gStringVar1
adds r0, r6, 0
- bl pokemon_get_nick_
+ bl GetBoxMonNick
movs r0, 0x64
adds r4, r5, 0
muls r4, r0
@@ -2065,7 +1625,7 @@ sub_80422C4: @ 80422C4
beq _080422FC
ldr r1, _0804231C @ =gStringVar1
adds r0, r6, 0
- bl pokemon_get_nick_
+ bl GetBoxMonNick
adds r0, r6, 0
movs r1, 0x3
bl GetBoxMonData
@@ -2090,7 +1650,7 @@ _080422FC:
beq _08042314
ldr r1, _08042324 @ =gStringVar2
adds r0, r4, 0
- bl pokemon_get_nick_
+ bl GetBoxMonNick
_08042314:
pop {r4-r6}
pop {r0}
@@ -2111,7 +1671,7 @@ sub_8042328: @ 8042328
ldr r4, _08042358 @ =gPlayerParty
adds r0, r4
ldr r1, _0804235C @ =gStringVar1
- bl pokemon_get_nick_
+ bl GetBoxMonNick
ldrb r0, [r6]
muls r0, r5
adds r0, r4
@@ -2154,7 +1714,7 @@ sp0B6_daycare: @ 8042370
_08042384: .4byte gSaveBlock1 + 0x2F9C
_08042388:
adds r0, r4, 0
- bl daycare_count_pokemon
+ bl Daycare_CountPokemon
lsls r0, 24
lsrs r0, 24
cmp r0, 0
@@ -2558,7 +2118,7 @@ _08042648:
adds r5, r1, r0
adds r0, r4, 0
adds r1, r5, 0
- bl pokemon_get_nick_
+ bl GetBoxMonNick
adds r0, r5, 0
adds r1, r4, 0
bl MonAppendGenderSymbol
@@ -2618,7 +2178,7 @@ _080426C6:
adds r1, r6, r3
adds r1, r2
ldr r1, [r1]
- bl sub_8041664
+ bl Daycare_GetLevelAfterSteps
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index b9f27b895..2983deea0 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -10831,366 +10831,4 @@ _080EB4AC: .4byte gEasyChatGroupWords
_080EB4B0: .4byte 0x0000ffff
thumb_func_end sub_80EB3FC
- thumb_func_start ConvertEasyChatWordsToString
-ConvertEasyChatWordsToString: @ 80EB4B4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 16
- lsls r3, 16
- lsrs r3, 16
- mov r9, r3
- ldr r0, _080EB53C @ =0xffff0000
- adds r2, r0
- lsrs r7, r2, 16
- movs r0, 0
- cmp r0, r9
- bcs _080EB524
-_080EB4D6:
- movs r6, 0
- adds r0, 0x1
- mov r8, r0
- cmp r6, r7
- bcs _080EB508
- ldr r2, _080EB540 @ =0x0000ffff
-_080EB4E2:
- ldrh r1, [r5]
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80EB3FC
- adds r4, r0, 0
- ldrh r0, [r5]
- ldr r2, [sp]
- cmp r0, r2
- beq _080EB4FC
- movs r0, 0
- strb r0, [r4]
- adds r4, 0x1
-_080EB4FC:
- adds r5, 0x2
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r7
- bcc _080EB4E2
-_080EB508:
- ldrh r1, [r5]
- adds r5, 0x2
- adds r0, r4, 0
- bl sub_80EB3FC
- adds r4, r0, 0
- movs r0, 0xFE
- strb r0, [r4]
- adds r4, 0x1
- mov r1, r8
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, r9
- bcc _080EB4D6
-_080EB524:
- subs r4, 0x1
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080EB53C: .4byte 0xffff0000
-_080EB540: .4byte 0x0000ffff
- thumb_func_end ConvertEasyChatWordsToString
-
- thumb_func_start sub_80EB544
-sub_80EB544: @ 80EB544
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 16
- lsls r3, 16
- lsrs r3, 16
- mov r10, r3
- ldr r0, _080EB5B0 @ =0xffff0000
- adds r2, r0
- lsrs r2, 16
- mov r8, r2
- movs r7, 0
- cmp r7, r10
- bcs _080EB5C8
-_080EB56A:
- movs r6, 0
- adds r1, r7, 0x1
- mov r9, r1
- cmp r6, r8
- bcs _080EB59C
- ldr r2, _080EB5B4 @ =0x0000ffff
-_080EB576:
- ldrh r1, [r5]
- adds r0, r4, 0
- str r2, [sp]
- bl sub_80EB3FC
- adds r4, r0, 0
- ldrh r0, [r5]
- ldr r2, [sp]
- cmp r0, r2
- beq _080EB590
- movs r0, 0
- strb r0, [r4]
- adds r4, 0x1
-_080EB590:
- adds r5, 0x2
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r8
- bcc _080EB576
-_080EB59C:
- ldrh r1, [r5]
- adds r5, 0x2
- adds r0, r4, 0
- bl sub_80EB3FC
- adds r4, r0, 0
- cmp r7, 0
- bne _080EB5B8
- movs r0, 0xFE
- b _080EB5BA
- .align 2, 0
-_080EB5B0: .4byte 0xffff0000
-_080EB5B4: .4byte 0x0000ffff
-_080EB5B8:
- movs r0, 0xFA
-_080EB5BA:
- strb r0, [r4]
- adds r4, 0x1
- mov r1, r9
- lsls r0, r1, 16
- lsrs r7, r0, 16
- cmp r7, r10
- bcc _080EB56A
-_080EB5C8:
- subs r4, 0x1
- movs r0, 0xFF
- strb r0, [r4]
- adds r0, r4, 0
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80EB544
-
- thumb_func_start unref_sub_80EB5E0
-unref_sub_80EB5E0: @ 80EB5E0
- push {lr}
- lsls r1, r0, 16
- lsrs r3, r1, 16
- ldr r0, _080EB5F0 @ =0x0000ffff
- cmp r3, r0
- bne _080EB5F4
- movs r0, 0
- b _080EB67C
- .align 2, 0
-_080EB5F0: .4byte 0x0000ffff
-_080EB5F4:
- lsrs r1, 25
- ldr r2, _080EB608 @ =0x000001ff
- ands r2, r3
- cmp r1, 0x13
- bgt _080EB60C
- cmp r1, 0x12
- bge _080EB620
- cmp r1, 0
- beq _080EB610
- b _080EB630
- .align 2, 0
-_080EB608: .4byte 0x000001ff
-_080EB60C:
- cmp r1, 0x15
- bne _080EB630
-_080EB610:
- movs r0, 0xB
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _080EB61C @ =gSpeciesNames
- adds r1, r0
- b _080EB660
- .align 2, 0
-_080EB61C: .4byte gSpeciesNames
-_080EB620:
- movs r0, 0xD
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _080EB62C @ =gMoveNames
- adds r1, r0
- b _080EB660
- .align 2, 0
-_080EB62C: .4byte gMoveNames
-_080EB630:
- ldr r0, _080EB664 @ =gEasyChatGroupWords
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- subs r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _080EB668 @ =0x0000ffff
- cmp r2, r0
- beq _080EB660
- adds r3, r0, 0
-_080EB646:
- ldrb r0, [r1]
- adds r1, 0x1
- subs r2, 0x1
- cmp r0, 0xFF
- beq _080EB658
-_080EB650:
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0xFF
- bne _080EB650
-_080EB658:
- lsls r0, r2, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bne _080EB646
-_080EB660:
- movs r2, 0
- b _080EB674
- .align 2, 0
-_080EB664: .4byte gEasyChatGroupWords
-_080EB668: .4byte 0x0000ffff
-_080EB66C:
- adds r1, 0x1
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
-_080EB674:
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080EB66C
- adds r0, r2, 0
-_080EB67C:
- pop {r1}
- bx r1
- thumb_func_end unref_sub_80EB5E0
-
- thumb_func_start sub_80EB680
-sub_80EB680: @ 80EB680
- movs r0, 0
- bx lr
- thumb_func_end sub_80EB680
-
- thumb_func_start unref_sub_80EB684
-unref_sub_80EB684: @ 80EB684
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- cmp r0, 0x7
- beq _080EB6B4
- cmp r0, 0x7
- bgt _080EB69E
- cmp r0, 0x5
- beq _080EB6A4
- b _080EB6EE
-_080EB69E:
- cmp r2, 0x8
- beq _080EB6C4
- b _080EB6EE
-_080EB6A4:
- movs r2, 0x6
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080EB6B0 @ =gSaveBlock1 + 0x273C
- b _080EB6CE
- .align 2, 0
-_080EB6B0: .4byte gSaveBlock1 + 0x273C
-_080EB6B4:
- movs r2, 0x2
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080EB6C0 @ =gSaveBlock1 + 0x2754
- b _080EB6CE
- .align 2, 0
-_080EB6C0: .4byte gSaveBlock1 + 0x2754
-_080EB6C4:
- movs r2, 0x1
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080EB6F4 @ =gSaveBlock1 + 0x273A
-_080EB6CE:
- adds r1, r0, r1
- subs r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _080EB6F8 @ =0x0000ffff
- cmp r2, r0
- beq _080EB6EE
- adds r4, r0, 0
- adds r3, r0, 0
-_080EB6E0:
- strh r4, [r1]
- adds r1, 0x2
- subs r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r3
- bne _080EB6E0
-_080EB6EE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080EB6F4: .4byte gSaveBlock1 + 0x273A
-_080EB6F8: .4byte 0x0000ffff
- thumb_func_end unref_sub_80EB684
-
- thumb_func_start sub_80EB6FC
-sub_80EB6FC: @ 80EB6FC
- push {lr}
- adds r2, r0, 0
- lsls r1, 16
- ldr r0, _080EB724 @ =0xffff0000
- adds r1, r0
- lsrs r0, r1, 16
- ldr r1, _080EB728 @ =0x0000ffff
- cmp r0, r1
- beq _080EB71E
- adds r3, r1, 0
-_080EB710:
- strh r3, [r2]
- adds r2, 0x2
- subs r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bne _080EB710
-_080EB71E:
- pop {r0}
- bx r0
- .align 2, 0
-_080EB724: .4byte 0xffff0000
-_080EB728: .4byte 0x0000ffff
- thumb_func_end sub_80EB6FC
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
index 90ae6aaf7..2f11d4111 100644
--- a/asm/egg_hatch.s
+++ b/asm/egg_hatch.s
@@ -52,7 +52,7 @@ AddHatchedMonToParty: @ 80429EC
bl sub_8090D90
ldr r1, _08042AA4 @ =gStringVar1
adds r0, r5, 0
- bl pokemon_get_nick
+ bl GetMonNick
mov r2, sp
adds r2, 0xE
movs r0, 0x4
@@ -110,7 +110,7 @@ sub_8042ABC: @ 8042ABC
lsls r0, 4
adds r0, r5, r0
mov r1, sp
- bl pokemon_get_nick_
+ bl GetBoxMonNick
lsls r0, r4, 3
subs r0, r4
lsls r1, r0, 3
@@ -857,7 +857,7 @@ _08043124:
ldr r1, _08043150 @ =gPlayerParty
adds r0, r1
ldr r1, _08043154 @ =gStringVar1
- bl pokemon_get_nick
+ bl GetMonNick
ldr r4, _08043158 @ =gStringVar4
ldr r1, _0804315C @ =gOtherText_HatchedFromEgg
adds r0, r4, 0
@@ -898,7 +898,7 @@ _08043180:
ldr r1, _080431A8 @ =gPlayerParty
adds r0, r1
ldr r1, _080431AC @ =gStringVar1
- bl pokemon_get_nick
+ bl GetMonNick
ldr r4, _080431B0 @ =gStringVar4
ldr r1, _080431B4 @ =gOtherText_NickHatchPrompt
adds r0, r4, 0
@@ -957,7 +957,7 @@ _080431DA:
adds r0, r6
ldr r1, _08043280 @ =gStringVar3
mov r10, r1
- bl pokemon_get_nick
+ bl GetMonNick
mov r2, r9
ldr r0, [r2]
ldrb r0, [r0, 0x4]
diff --git a/asm/secret_base.s b/asm/secret_base.s
index 81225ba4b..8f2df8396 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -4,2036 +4,8 @@
.syntax unified
- .text
-
- thumb_func_start sub_80BB4AC
-sub_80BB4AC: @ 80BB4AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r3, r0, 0
- movs r0, 0
- strb r0, [r3]
- movs r2, 0
- adds r4, r3, 0x2
- movs r5, 0xFF
-_080BB4C4:
- adds r0, r4, r2
- ldrb r1, [r0]
- orrs r1, r5
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x6
- bls _080BB4C4
- movs r2, 0
- adds r5, r3, 0
- adds r5, 0x12
- adds r6, r3, 0
- adds r6, 0x22
- adds r7, r3, 0
- adds r7, 0x4C
- adds r0, r3, 0
- adds r0, 0x34
- str r0, [sp]
- adds r1, r3, 0
- adds r1, 0x9A
- str r1, [sp, 0x4]
- movs r0, 0x7C
- adds r0, r3
- mov r10, r0
- movs r1, 0x88
- adds r1, r3
- mov r9, r1
- movs r0, 0x94
- adds r0, r3
- mov r8, r0
- adds r1, r3, 0
- adds r1, 0x9
- movs r4, 0
-_080BB508:
- adds r0, r1, r2
- strb r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x3
- bls _080BB508
- movs r0, 0
- movs r1, 0
- strh r1, [r3, 0xE]
- strb r0, [r3, 0x10]
- strb r0, [r3, 0x11]
- movs r0, 0
- strb r0, [r3, 0x1]
- movs r2, 0
- adds r4, r5, 0
- adds r3, r6, 0
-_080BB52A:
- adds r0, r4, r2
- strb r1, [r0]
- adds r0, r3, r2
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _080BB52A
- movs r2, 0
- mov r12, r7
- movs r5, 0
-_080BB542:
- movs r1, 0
- adds r7, r2, 0x1
- lsls r4, r2, 2
- lsls r6, r2, 1
- adds r3, r4, 0
-_080BB54C:
- adds r0, r3, r1
- lsls r0, 1
- add r0, r12
- strh r5, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3
- bls _080BB54C
- ldr r1, [sp]
- adds r0, r1, r4
- str r5, [r0]
- ldr r1, [sp, 0x4]
- adds r0, r1, r2
- strb r5, [r0]
- mov r1, r10
- adds r0, r1, r6
- strh r5, [r0]
- mov r1, r9
- adds r0, r1, r6
- strh r5, [r0]
- mov r1, r8
- adds r0, r1, r2
- strb r5, [r0]
- lsls r0, r7, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _080BB542
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB4AC
-
- thumb_func_start ResetSecretBase
-ResetSecretBase: @ 80BB594
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 5
- ldr r1, _080BB5B0 @ =gSaveBlock1 + 0x1A08
- adds r0, r1
- bl sub_80BB4AC
- pop {r0}
- bx r0
- .align 2, 0
-_080BB5B0: .4byte gSaveBlock1 + 0x1A08
- thumb_func_end ResetSecretBase
-
- thumb_func_start ResetSecretBases
-ResetSecretBases: @ 80BB5B4
- push {r4,lr}
- movs r4, 0
-_080BB5B8:
- lsls r0, r4, 24
- lsrs r0, 24
- bl ResetSecretBase
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _080BB5B8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end ResetSecretBases
-
- thumb_func_start sub_80BB5D0
-sub_80BB5D0: @ 80BB5D0
- ldr r0, _080BB5DC @ =gUnknown_020387DC
- ldr r1, _080BB5E0 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080BB5DC: .4byte gUnknown_020387DC
-_080BB5E0: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80BB5D0
-
- thumb_func_start sub_80BB5E4
-sub_80BB5E4: @ 80BB5E4
- push {r4,lr}
- ldr r0, _080BB5F4 @ =gScriptResult
- movs r1, 0
- strh r1, [r0]
- movs r3, 0
- adds r4, r0, 0
- b _080BB5FE
- .align 2, 0
-_080BB5F4: .4byte gScriptResult
-_080BB5F8:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
-_080BB5FE:
- cmp r3, 0x13
- bhi _080BB626
- ldr r2, _080BB62C @ =gUnknown_020387DC
- ldr r1, _080BB630 @ =gSaveBlock1
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 5
- adds r0, r1
- ldr r1, _080BB634 @ =0x00001a08
- adds r0, r1
- ldrb r1, [r2]
- ldrb r0, [r0]
- cmp r1, r0
- bne _080BB5F8
- movs r0, 0x1
- strh r0, [r4]
- ldr r0, _080BB638 @ =0x00004054
- adds r1, r3, 0
- bl VarSet
-_080BB626:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB62C: .4byte gUnknown_020387DC
-_080BB630: .4byte gSaveBlock1
-_080BB634: .4byte 0x00001a08
-_080BB638: .4byte 0x00004054
- thumb_func_end sub_80BB5E4
-
- thumb_func_start sub_80BB63C
-sub_80BB63C: @ 80BB63C
- push {lr}
- ldr r0, _080BB654 @ =gSaveBlock1
- ldr r1, _080BB658 @ =0x00001a08
- adds r0, r1
- ldrb r1, [r0]
- cmp r1, 0
- beq _080BB660
- ldr r1, _080BB65C @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- b _080BB664
- .align 2, 0
-_080BB654: .4byte gSaveBlock1
-_080BB658: .4byte 0x00001a08
-_080BB65C: .4byte gScriptResult
-_080BB660:
- ldr r0, _080BB668 @ =gScriptResult
- strh r1, [r0]
-_080BB664:
- pop {r0}
- bx r0
- .align 2, 0
-_080BB668: .4byte gScriptResult
- thumb_func_end sub_80BB63C
-
- thumb_func_start sub_80BB66C
-sub_80BB66C: @ 80BB66C
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- adds r1, r0, 0
- ldr r2, _080BB6A4 @ =0x00000fff
- adds r0, r2, 0
- ands r1, r0
- adds r0, r1, 0
- subs r0, 0x90
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BB6A8
- movs r0, 0x1
- b _080BB702
- .align 2, 0
-_080BB6A4: .4byte 0x00000fff
-_080BB6A8:
- adds r0, r1, 0
- subs r0, 0x92
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BB6B8
- movs r0, 0x2
- b _080BB702
-_080BB6B8:
- adds r0, r1, 0
- subs r0, 0x9A
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BB6C8
- movs r0, 0x3
- b _080BB702
-_080BB6C8:
- adds r0, r1, 0
- subs r0, 0x94
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080BB6D8
- movs r0, 0x4
- b _080BB702
-_080BB6D8:
- adds r0, r1, 0
- subs r0, 0x96
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080BB6EC
- cmp r1, 0x9C
- beq _080BB6EC
- cmp r1, 0x9D
- bne _080BB6F0
-_080BB6EC:
- movs r0, 0x5
- b _080BB702
-_080BB6F0:
- adds r0, r1, 0
- subs r0, 0x98
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080BB700
- movs r0, 0
- b _080BB702
-_080BB700:
- movs r0, 0x6
-_080BB702:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BB66C
-
- thumb_func_start sub_80BB70C
-sub_80BB70C: @ 80BB70C
- push {r4,lr}
- ldr r4, _080BB720 @ =gSpecialVar_0x8007
- bl sub_80BB66C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB720: .4byte gSpecialVar_0x8007
- thumb_func_end sub_80BB70C
-
- thumb_func_start unref_sub_80BB724
-unref_sub_80BB724: @ 80BB724
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- movs r2, 0
- ldr r6, _080BB748 @ =0x00000fff
- lsrs r3, r1, 24
- ldr r5, _080BB74C @ =0x000001ff
-_080BB732:
- lsls r0, r2, 1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, r3
- bne _080BB750
- lsls r0, r2, 16
- asrs r0, 16
- b _080BB75E
- .align 2, 0
-_080BB748: .4byte 0x00000fff
-_080BB74C: .4byte 0x000001ff
-_080BB750:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r5
- bls _080BB732
- movs r0, 0x1
- negs r0, r0
-_080BB75E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_80BB724
-
- thumb_func_start sub_80BB764
-sub_80BB764: @ 80BB764
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r9, r0
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- movs r0, 0
- mov r12, r0
- ldr r1, _080BB7C8 @ =gMapHeader
- ldr r0, [r1]
- ldr r3, [r0, 0x4]
- cmp r12, r3
- bge _080BB7EE
- ldr r0, [r0]
- str r0, [sp, 0x4]
- str r3, [sp]
-_080BB78E:
- movs r2, 0
- mov r1, r12
- lsls r7, r1, 16
- ldr r0, [sp, 0x4]
- cmp r2, r0
- bge _080BB7DC
- ldr r0, _080BB7C8 @ =gMapHeader
- ldr r1, [r0]
- asrs r0, r7, 16
- ldr r4, [r1]
- adds r6, r0, 0
- muls r6, r4
- ldr r5, [r1, 0xC]
-_080BB7A8:
- lsls r0, r2, 16
- asrs r3, r0, 16
- adds r0, r6, r3
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r0, _080BB7CC @ =0x000003ff
- ands r0, r1
- cmp r0, r8
- bne _080BB7D0
- mov r1, r9
- strh r2, [r1]
- mov r1, r12
- mov r0, r10
- strh r1, [r0]
- b _080BB7EE
- .align 2, 0
-_080BB7C8: .4byte gMapHeader
-_080BB7CC: .4byte 0x000003ff
-_080BB7D0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, r4
- blt _080BB7A8
-_080BB7DC:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r7, r1
- lsrs r1, r0, 16
- mov r12, r1
- asrs r0, 16
- ldr r1, [sp]
- cmp r0, r1
- blt _080BB78E
-_080BB7EE:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB764
-
- thumb_func_start sub_80BB800
-sub_80BB800: @ 80BB800
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileIdAt
- movs r5, 0
- mov r12, r4
- lsls r0, 16
- asrs r3, r0, 16
- ldr r1, _080BB84C @ =gUnknown_083D1358
- mov r8, r1
- adds r7, r0, 0
- mov r4, sp
- mov r6, r12
-_080BB834:
- ldr r0, _080BB84C @ =gUnknown_083D1358
- lsls r1, r5, 2
- adds r2, r1, r0
- ldrh r0, [r2]
- cmp r0, r3
- bne _080BB850
- movs r3, 0
- ldrsh r0, [r4, r3]
- movs r5, 0
- ldrsh r1, [r6, r5]
- ldrh r3, [r2, 0x2]
- b _080BB878
- .align 2, 0
-_080BB84C: .4byte gUnknown_083D1358
-_080BB850:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x6
- bls _080BB834
- movs r5, 0
- mov r4, sp
- mov r6, r12
-_080BB860:
- lsls r0, r5, 2
- mov r1, r8
- adds r3, r0, r1
- ldrh r1, [r3, 0x2]
- asrs r0, r7, 16
- cmp r1, r0
- bne _080BB892
- movs r2, 0
- ldrsh r0, [r4, r2]
- movs r5, 0
- ldrsh r1, [r6, r5]
- ldrh r3, [r3]
-_080BB878:
- movs r5, 0xC0
- lsls r5, 4
- adds r2, r5, 0
- orrs r2, r3
- bl MapGridSetMetatileIdAt
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0
- ldrsh r1, [r6, r2]
- bl CurrentMapDrawMetatileAt
- b _080BB89C
-_080BB892:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x6
- bls _080BB860
-_080BB89C:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB800
-
- thumb_func_start sub_80BB8A8
-sub_80BB8A8: @ 80BB8A8
- push {lr}
- adds r2, r0, 0
- movs r1, 0
-_080BB8AE:
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080BB8BA
- adds r0, r1, 0
- b _080BB8C6
-_080BB8BA:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x6
- bls _080BB8AE
- movs r0, 0x7
-_080BB8C6:
- pop {r1}
- bx r1
- thumb_func_end sub_80BB8A8
-
- thumb_func_start sub_80BB8CC
-sub_80BB8CC: @ 80BB8CC
- push {r4-r6,lr}
- ldr r2, _080BB948 @ =gSaveBlock1
- ldr r0, _080BB94C @ =gUnknown_020387DC
- ldrb r1, [r0]
- ldr r3, _080BB950 @ =0x00001a08
- adds r0, r2, r3
- strb r1, [r0]
- movs r3, 0
- ldr r0, _080BB954 @ =0x00001a11
- adds r2, r0
- ldr r4, _080BB958 @ =gSaveBlock2 + 0xA
-_080BB8E2:
- adds r1, r3, r2
- adds r0, r3, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _080BB8E2
- ldr r0, _080BB95C @ =0x00004054
- movs r1, 0
- bl VarSet
- ldr r6, _080BB960 @ =gSaveBlock2
- adds r0, r6, 0
- bl sub_80BB8A8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _080BB964 @ =gSaveBlock1 + 0x1A0A
- adds r0, r5, 0
- movs r1, 0xFF
- movs r2, 0x7
- bl memset
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl StringCopyN
- ldrb r0, [r6, 0x8]
- subs r5, 0x1
- movs r1, 0x1
- ands r1, r0
- lsls r1, 4
- ldrb r2, [r5]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5]
- ldr r0, _080BB968 @ =0x00004026
- ldr r1, _080BB96C @ =gMapHeader
- ldrb r1, [r1, 0x14]
- bl VarSet
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BB948: .4byte gSaveBlock1
-_080BB94C: .4byte gUnknown_020387DC
-_080BB950: .4byte 0x00001a08
-_080BB954: .4byte 0x00001a11
-_080BB958: .4byte gSaveBlock2 + 0xA
-_080BB95C: .4byte 0x00004054
-_080BB960: .4byte gSaveBlock2
-_080BB964: .4byte gSaveBlock1 + 0x1A0A
-_080BB968: .4byte 0x00004026
-_080BB96C: .4byte gMapHeader
- thumb_func_end sub_80BB8CC
-
- thumb_func_start sub_80BB970
-sub_80BB970: @ 80BB970
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r2, 0
- b _080BBA06
-_080BB978:
- ldr r0, [r5, 0x10]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- adds r3, r1, r0
- ldrb r0, [r3, 0x5]
- adds r7, r2, 0x1
- cmp r0, 0x8
- bne _080BBA02
- movs r2, 0
- ldr r4, _080BB9E0 @ =gSaveBlock1
- adds r6, r1, 0
-_080BB990:
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 5
- adds r0, r4
- ldr r1, _080BB9E4 @ =0x00001a08
- adds r0, r1
- ldrb r1, [r0]
- ldr r0, [r3, 0x8]
- cmp r1, r0
- bne _080BB9F8
- ldrh r0, [r3]
- adds r0, 0x7
- ldrh r1, [r3, 0x2]
- adds r1, 0x7
- bl MapGridGetMetatileIdAt
- movs r3, 0
- lsls r0, 16
- asrs r4, r0, 16
-_080BB9B6:
- ldr r0, _080BB9E8 @ =gUnknown_083D1358
- lsls r1, r3, 2
- adds r2, r1, r0
- ldrh r0, [r2]
- cmp r0, r4
- bne _080BB9EC
- ldr r1, [r5, 0x10]
- adds r1, r6, r1
- ldrh r0, [r1]
- adds r0, 0x7
- ldrh r1, [r1, 0x2]
- adds r1, 0x7
- ldrh r3, [r2, 0x2]
- movs r4, 0xC0
- lsls r4, 4
- adds r2, r4, 0
- orrs r2, r3
- bl MapGridSetMetatileIdAt
- b _080BBA02
- .align 2, 0
-_080BB9E0: .4byte gSaveBlock1
-_080BB9E4: .4byte 0x00001a08
-_080BB9E8: .4byte gUnknown_083D1358
-_080BB9EC:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x6
- bls _080BB9B6
- b _080BBA02
-_080BB9F8:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x13
- bls _080BB990
-_080BBA02:
- lsls r0, r7, 16
- lsrs r2, r0, 16
-_080BBA06:
- ldrb r0, [r5, 0x3]
- cmp r2, r0
- bcc _080BB978
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BB970
-
- thumb_func_start sub_80BBA14
-sub_80BBA14: @ 80BBA14
- push {lr}
- ldr r0, _080BBA40 @ =gUnknown_020387DC
- ldrb r0, [r0]
- movs r1, 0xA
- bl __udivsi3
- ldr r2, _080BBA44 @ =gUnknown_083D1374
- lsls r0, 26
- asrs r0, 24
- adds r1, r0, r2
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- adds r0, 0x1
- adds r0, r2
- movs r2, 0
- ldrsb r2, [r0, r2]
- movs r0, 0x19
- bl warp1_set_2
- pop {r0}
- bx r0
- .align 2, 0
-_080BBA40: .4byte gUnknown_020387DC
-_080BBA44: .4byte gUnknown_083D1374
- thumb_func_end sub_80BBA14
-
- thumb_func_start sub_80BBA48
-sub_80BBA48: @ 80BBA48
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080BBA6C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _080BBA7C
- cmp r0, 0x1
- bgt _080BBA70
- cmp r0, 0
- beq _080BBA76
- b _080BBAD0
- .align 2, 0
-_080BBA6C: .4byte gTasks
-_080BBA70:
- cmp r0, 0x2
- beq _080BBA94
- b _080BBAD0
-_080BBA76:
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _080BBAD0
-_080BBA7C:
- ldr r0, _080BBA90 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BBAD0
- movs r0, 0x2
- strh r0, [r2, 0x8]
- b _080BBAD0
- .align 2, 0
-_080BBA90: .4byte gPaletteFade
-_080BBA94:
- ldr r0, _080BBAD8 @ =0x00004054
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080BBADC @ =gSaveBlock1
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 5
- adds r1, r2
- ldr r0, _080BBAE0 @ =0x00001a18
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _080BBAB6
- adds r0, 0x1
- strb r0, [r1]
-_080BBAB6:
- bl sub_80BBA14
- bl warp_in
- ldr r0, _080BBAE4 @ =gUnknown_0300485C
- ldr r1, _080BBAE8 @ =sub_8080990
- str r1, [r0]
- ldr r0, _080BBAEC @ =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_080BBAD0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBAD8: .4byte 0x00004054
-_080BBADC: .4byte gSaveBlock1
-_080BBAE0: .4byte 0x00001a18
-_080BBAE4: .4byte gUnknown_0300485C
-_080BBAE8: .4byte sub_8080990
-_080BBAEC: .4byte CB2_LoadMap
- thumb_func_end sub_80BBA48
-
- thumb_func_start sub_80BBAF0
-sub_80BBAF0: @ 80BBAF0
- push {lr}
- ldr r0, _080BBB1C @ =sub_80BBA48
- movs r1, 0
- bl CreateTask
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r0, _080BBB20 @ =gSaveBlock1
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- movs r2, 0x5
- ldrsb r2, [r0, r2]
- movs r3, 0x1
- negs r3, r3
- movs r0, 0
- bl saved_warp2_set
- pop {r0}
- bx r0
- .align 2, 0
-_080BBB1C: .4byte sub_80BBA48
-_080BBB20: .4byte gSaveBlock1
- thumb_func_end sub_80BBAF0
-
- thumb_func_start sub_80BBB24
-sub_80BBB24: @ 80BBB24
- push {lr}
- ldr r0, _080BBB40 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x9
- bne _080BBB48
- ldr r0, _080BBB44 @ =0x00004097
- bl VarGet
- lsls r0, 16
- cmp r0, 0
- bne _080BBB48
- movs r0, 0
- b _080BBB4A
- .align 2, 0
-_080BBB40: .4byte gMapHeader
-_080BBB44: .4byte 0x00004097
-_080BBB48:
- movs r0, 0x1
-_080BBB4A:
- pop {r1}
- bx r1
- thumb_func_end sub_80BBB24
-
- thumb_func_start sub_80BBB50
-sub_80BBB50: @ 80BBB50
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080BBB88 @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BBB8C @ =gMapObjects
- adds r0, r1
- movs r1, 0x2
- bl FieldObjectTurn
- bl sub_807D770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BBB80
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_080BBB80:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBB88: .4byte gPlayerAvatar
-_080BBB8C: .4byte gMapObjects
- thumb_func_end sub_80BBB50
-
- thumb_func_start sub_80BBB90
-sub_80BBB90: @ 80BBB90
- push {r4,lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- bl HideMapNamePopup
- mov r4, sp
- adds r4, 0x2
- movs r2, 0x88
- lsls r2, 2
- mov r0, sp
- adds r1, r4, 0
- bl sub_80BB764
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r0, 0x7
- movs r2, 0
- ldrsh r1, [r4, r2]
- adds r1, 0x7
- movs r2, 0xE2
- lsls r2, 4
- bl MapGridSetMetatileIdAt
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r0, 0x7
- movs r2, 0
- ldrsh r1, [r4, r2]
- adds r1, 0x7
- bl CurrentMapDrawMetatileAt
- bl pal_fill_black
- ldr r0, _080BBBE8 @ =sub_80BBB50
- movs r1, 0
- bl CreateTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBBE8: .4byte sub_80BBB50
- thumb_func_end sub_80BBB90
-
- thumb_func_start sub_80BBBEC
-sub_80BBBEC: @ 80BBBEC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080BBC5C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BBC52
- ldr r0, _080BBC60 @ =gUnknown_020387DC
- ldrb r0, [r0]
- movs r1, 0xA
- bl __udivsi3
- ldr r1, _080BBC64 @ =gSaveBlock1
- movs r5, 0x4
- ldrsb r5, [r1, r5]
- ldrb r1, [r1, 0x5]
- lsls r1, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- ldr r4, _080BBC68 @ =gUnknown_083D1374
- lsls r0, 26
- asrs r0, 24
- adds r3, r0, 0x2
- adds r3, r4
- ldrb r3, [r3]
- lsls r3, 24
- asrs r3, 24
- adds r0, 0x3
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- adds r0, r5, 0
- bl warp1_set
- bl warp_in
- ldr r1, _080BBC6C @ =gUnknown_0300485C
- ldr r0, _080BBC70 @ =sub_80BBB90
- str r0, [r1]
- ldr r0, _080BBC74 @ =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r6, 0
- bl DestroyTask
-_080BBC52:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBC5C: .4byte gPaletteFade
-_080BBC60: .4byte gUnknown_020387DC
-_080BBC64: .4byte gSaveBlock1
-_080BBC68: .4byte gUnknown_083D1374
-_080BBC6C: .4byte gUnknown_0300485C
-_080BBC70: .4byte sub_80BBB90
-_080BBC74: .4byte CB2_LoadMap
- thumb_func_end sub_80BBBEC
-
- thumb_func_start sub_80BBC78
-sub_80BBC78: @ 80BBC78
- push {lr}
- ldr r0, _080BBCA0 @ =sub_80BBBEC
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BBCA4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- pop {r0}
- bx r0
- .align 2, 0
-_080BBCA0: .4byte sub_80BBBEC
-_080BBCA4: .4byte gTasks
- thumb_func_end sub_80BBC78
-
- thumb_func_start CurrentMapIsSecretBase
-CurrentMapIsSecretBase: @ 80BBCA8
- push {lr}
- ldr r1, _080BBCC0 @ =gSaveBlock1
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x19
- bne _080BBCC4
- ldrb r0, [r1, 0x5]
- cmp r0, 0x17
- bhi _080BBCC4
- movs r0, 0x1
- b _080BBCC6
- .align 2, 0
-_080BBCC0: .4byte gSaveBlock1
-_080BBCC4:
- movs r0, 0
-_080BBCC6:
- pop {r1}
- bx r1
- thumb_func_end CurrentMapIsSecretBase
-
- thumb_func_start sub_80BBCCC
-sub_80BBCCC: @ 80BBCCC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- bl CurrentMapIsSecretBase
- lsls r0, 24
- cmp r0, 0
- beq _080BBDBC
- ldr r0, _080BBD70 @ =0x00004054
- bl VarGet
- lsls r0, 16
- lsrs r5, r0, 16
- movs r1, 0
- mov r0, sp
- strh r1, [r0]
- ldr r6, _080BBD74 @ =gSaveBlock1
- mov r4, sp
- ldr r0, _080BBD78 @ =0x00001a2a
- adds r7, r6, r0
-_080BBCFC:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 5
- ldrh r1, [r4]
- adds r2, r0, r1
- ldr r1, _080BBD7C @ =0x00001a1a
- adds r0, r6, r1
- adds r1, r2, r0
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x77
- bhi _080BBD3A
- ldr r0, _080BBD80 @ =gDecorations
- ldrb r3, [r1]
- lsls r1, r3, 5
- adds r1, r0
- ldrb r0, [r1, 0x11]
- cmp r0, 0x4
- beq _080BBD3A
- adds r0, r2, r7
- ldrb r2, [r0]
- lsrs r0, r2, 4
- adds r0, 0x7
- movs r1, 0xF
- ands r1, r2
- adds r1, 0x7
- adds r2, r3, 0
- bl sub_80FF394
-_080BBD3A:
- ldrh r0, [r4]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- strh r0, [r4]
- cmp r0, 0xF
- bls _080BBCFC
- cmp r5, 0
- beq _080BBD88
- mov r4, sp
- adds r4, 0x2
- movs r2, 0x88
- lsls r2, 2
- mov r0, sp
- adds r1, r4, 0
- bl sub_80BB764
- mov r0, sp
- ldrh r0, [r0]
- adds r0, 0x7
- ldrh r1, [r4]
- adds r1, 0x7
- ldr r2, _080BBD84 @ =0x00000e21
- bl MapGridSetMetatileIdAt
- b _080BBDBC
- .align 2, 0
-_080BBD70: .4byte 0x00004054
-_080BBD74: .4byte gSaveBlock1
-_080BBD78: .4byte 0x00001a2a
-_080BBD7C: .4byte 0x00001a1a
-_080BBD80: .4byte gDecorations
-_080BBD84: .4byte 0x00000e21
-_080BBD88:
- mov r0, r8
- cmp r0, 0x1
- bne _080BBDBC
- ldr r0, _080BBDC8 @ =0x00004089
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _080BBDBC
- mov r4, sp
- adds r4, 0x2
- movs r2, 0x88
- lsls r2, 2
- mov r0, sp
- adds r1, r4, 0
- bl sub_80BB764
- mov r0, sp
- ldrh r0, [r0]
- adds r0, 0x7
- ldrh r1, [r4]
- adds r1, 0x7
- ldr r2, _080BBDCC @ =0x00000e0a
- bl MapGridSetMetatileIdAt
-_080BBDBC:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBDC8: .4byte 0x00004089
-_080BBDCC: .4byte 0x00000e0a
- thumb_func_end sub_80BBCCC
-
- thumb_func_start sub_80BBDD0
-sub_80BBDD0: @ 80BBDD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- ldr r0, _080BBE00 @ =0x00004054
- bl VarGet
- lsls r0, 16
- lsrs r4, r0, 16
- bl CurrentMapIsSecretBase
- lsls r0, 24
- cmp r0, 0
- bne _080BBE08
- ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688
- str r0, [sp, 0x4]
- adds r0, 0xC
- str r0, [sp, 0x8]
- movs r1, 0xC
- str r1, [sp, 0xC]
- b _080BBE1E
- .align 2, 0
-_080BBE00: .4byte 0x00004054
-_080BBE04: .4byte gSaveBlock1 + 0x2688
-_080BBE08:
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 5
- ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A
- adds r2, r1, r0
- str r2, [sp, 0x4]
- adds r0, 0x10
- adds r1, r0
- str r1, [sp, 0x8]
- movs r3, 0x10
- str r3, [sp, 0xC]
-_080BBE1E:
- movs r6, 0
- ldr r4, [sp, 0xC]
- cmp r6, r4
- bcc _080BBE28
- b _080BBF6C
-_080BBE28:
- ldr r5, _080BBF80 @ =gSaveBlock1
- mov r10, r5
-_080BBE2C:
- ldr r1, [sp, 0x4]
- adds r0, r1, r6
- ldrb r1, [r0]
- mov r9, r0
- adds r2, r6, 0x1
- str r2, [sp, 0x10]
- cmp r1, 0
- bne _080BBE3E
- b _080BBF5E
-_080BBE3E:
- ldrb r0, [r0]
- lsls r0, 5
- ldr r3, _080BBF84 @ =gDecorations
- adds r0, r3
- ldrb r0, [r0, 0x11]
- cmp r0, 0x4
- beq _080BBE4E
- b _080BBF5E
-_080BBE4E:
- movs r5, 0
- ldr r0, _080BBF88 @ =gMapHeader
- ldr r2, [r0, 0x4]
- ldrb r3, [r2]
- mov r8, r0
- cmp r5, r3
- bcs _080BBE8E
- ldr r0, [r2, 0x4]
- ldrh r1, [r0, 0x14]
- ldr r4, _080BBF8C @ =gSpecialVar_0x8004
- ldrh r0, [r4]
- adds r0, 0xAE
- adds r7, r4, 0
- cmp r1, r0
- beq _080BBE8E
- adds r4, r2, 0
- adds r2, r3, 0
-_080BBE70:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r2
- bcs _080BBE8E
- ldr r1, [r4, 0x4]
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x14]
- ldrh r0, [r7]
- adds r0, 0xAE
- cmp r1, r0
- bne _080BBE70
-_080BBE8E:
- mov r1, r8
- ldr r0, [r1, 0x4]
- ldrb r0, [r0]
- cmp r5, r0
- beq _080BBF5E
- ldr r7, _080BBF90 @ =gSpecialVar_0x8006
- ldr r2, [sp, 0x8]
- adds r1, r2, r6
- ldrb r0, [r1]
- lsrs r0, 4
- strh r0, [r7]
- ldr r6, _080BBF94 @ =gSpecialVar_0x8007
- ldrb r1, [r1]
- movs r0, 0xF
- ands r0, r1
- strh r0, [r6]
- ldrh r0, [r7]
- adds r0, 0x7
- ldrh r1, [r6]
- adds r1, 0x7
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_80572D8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BBEDA
- adds r0, r4, 0
- bl sub_80572EC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BBF5E
-_080BBEDA:
- mov r3, r8
- ldr r0, [r3, 0x4]
- ldr r1, [r0, 0x4]
- lsls r4, r5, 1
- adds r4, r5
- lsls r4, 3
- adds r1, r4, r1
- ldr r5, _080BBF98 @ =0x00003f20
- adds r0, r5, 0
- ldrb r1, [r1, 0x1]
- adds r0, r1
- ldr r1, _080BBF9C @ =gScriptResult
- strh r0, [r1]
- ldrh r0, [r1]
- mov r2, r9
- ldrb r1, [r2]
- lsls r1, 5
- ldr r3, _080BBFA0 @ =gDecorations + 0x1C
- adds r1, r3
- ldr r1, [r1]
- ldrh r1, [r1]
- bl VarSet
- mov r5, r8
- ldr r0, [r5, 0x4]
- ldr r0, [r0, 0x4]
- adds r4, r0
- ldrb r0, [r4]
- ldr r1, _080BBF9C @ =gScriptResult
- strh r0, [r1]
- ldr r2, _080BBF8C @ =gSpecialVar_0x8004
- ldrh r0, [r2]
- adds r0, 0xAE
- lsls r0, 16
- lsrs r0, 16
- bl FlagReset
- ldr r3, _080BBF9C @ =gScriptResult
- ldrb r0, [r3]
- mov r4, r10
- ldrb r1, [r4, 0x5]
- ldrb r2, [r4, 0x4]
- bl show_sprite
- ldr r5, _080BBF9C @ =gScriptResult
- ldrb r0, [r5]
- ldrb r1, [r4, 0x5]
- ldrb r2, [r4, 0x4]
- movs r4, 0
- ldrsh r3, [r7, r4]
- movs r5, 0
- ldrsh r4, [r6, r5]
- str r4, [sp]
- bl sub_805C0F8
- ldr r1, _080BBF9C @ =gScriptResult
- ldrb r0, [r1]
- mov r2, r10
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl sub_805C78C
- ldr r3, _080BBF8C @ =gSpecialVar_0x8004
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
-_080BBF5E:
- ldr r4, [sp, 0x10]
- lsls r0, r4, 24
- lsrs r6, r0, 24
- ldr r5, [sp, 0xC]
- cmp r6, r5
- bcs _080BBF6C
- b _080BBE2C
-_080BBF6C:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBF7C: .4byte gSaveBlock1 + 0x1A1A
-_080BBF80: .4byte gSaveBlock1
-_080BBF84: .4byte gDecorations
-_080BBF88: .4byte gMapHeader
-_080BBF8C: .4byte gSpecialVar_0x8004
-_080BBF90: .4byte gSpecialVar_0x8006
-_080BBF94: .4byte gSpecialVar_0x8007
-_080BBF98: .4byte 0x00003f20
-_080BBF9C: .4byte gScriptResult
-_080BBFA0: .4byte gDecorations + 0x1C
- thumb_func_end sub_80BBDD0
-
- thumb_func_start sub_80BBFA4
-sub_80BBFA4: @ 80BBFA4
- push {r4,r5,lr}
- ldr r0, _080BBFCC @ =0x00004054
- bl VarGet
- ldr r5, _080BBFD0 @ =0x0000401f
- ldr r4, _080BBFD4 @ =gUnknown_083D13EC
- lsls r0, 24
- lsrs r0, 24
- bl sub_80BCCA4
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r5, 0
- bl VarSet
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BBFCC: .4byte 0x00004054
-_080BBFD0: .4byte 0x0000401f
-_080BBFD4: .4byte gUnknown_083D13EC
- thumb_func_end sub_80BBFA4
-
- thumb_func_start sub_80BBFD8
-sub_80BBFD8: @ 80BBFD8
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r3, 0
- ldrb r0, [r4, 0x3]
- cmp r3, r0
- bge _080BC030
- ldr r6, _080BC01C @ =gUnknown_020387DC
-_080BBFE8:
- lsls r3, 16
- asrs r1, r3, 16
- ldr r2, [r4, 0x10]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r2
- ldrb r0, [r2, 0x5]
- cmp r0, 0x8
- bne _080BC020
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldrh r0, [r2]
- adds r0, 0x7
- cmp r1, r0
- bne _080BC020
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- ldrh r0, [r2, 0x2]
- adds r0, 0x7
- cmp r1, r0
- bne _080BC020
- ldr r0, [r2, 0x8]
- strb r0, [r6]
- b _080BC030
- .align 2, 0
-_080BC01C: .4byte gUnknown_020387DC
-_080BC020:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r3, r0, 16
- asrs r0, 16
- ldrb r1, [r4, 0x3]
- cmp r0, r1
- blt _080BBFE8
-_080BC030:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BBFD8
-
- thumb_func_start sub_80BC038
-sub_80BC038: @ 80BC038
- push {lr}
- bl sub_80BBFD8
- bl sub_80BB5E4
- ldr r0, _080BC04C @ =gUnknown_081A2E14
- bl ScriptContext1_SetupScript
- pop {r0}
- bx r0
- .align 2, 0
-_080BC04C: .4byte gUnknown_081A2E14
- thumb_func_end sub_80BC038
-
- thumb_func_start sub_80BC050
-sub_80BC050: @ 80BC050
- push {lr}
- bl sub_80BB5D0
- bl sub_80BB5E4
- ldr r0, _080BC068 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080BC06C
- movs r0, 0x1
- b _080BC06E
- .align 2, 0
-_080BC068: .4byte gScriptResult
-_080BC06C:
- movs r0, 0
-_080BC06E:
- pop {r1}
- bx r1
- thumb_func_end sub_80BC050
-
- thumb_func_start sub_80BC074
-sub_80BC074: @ 80BC074
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080BC098 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080BC0AC
- cmp r0, 0x1
- bgt _080BC09C
- cmp r0, 0
- beq _080BC0A2
- b _080BC0E4
- .align 2, 0
-_080BC098: .4byte gTasks
-_080BC09C:
- cmp r0, 0x2
- beq _080BC0C4
- b _080BC0E4
-_080BC0A2:
- bl ScriptContext2_Enable
- movs r0, 0x1
- strh r0, [r4, 0x8]
- b _080BC0E4
-_080BC0AC:
- ldr r0, _080BC0C0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BC0E4
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _080BC0E4
- .align 2, 0
-_080BC0C0: .4byte gPaletteFade
-_080BC0C4:
- movs r0, 0x7E
- bl copy_saved_warp2_bank_and_enter_x_to_warp1
- bl warp_in
- ldr r0, _080BC0EC @ =gUnknown_0300485C
- ldr r1, _080BC0F0 @ =mapldr_default
- str r1, [r0]
- ldr r0, _080BC0F4 @ =CB2_LoadMap
- bl SetMainCallback2
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_080BC0E4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC0EC: .4byte gUnknown_0300485C
-_080BC0F0: .4byte mapldr_default
-_080BC0F4: .4byte CB2_LoadMap
- thumb_func_end sub_80BC074
-
- thumb_func_start sub_80BC0F8
-sub_80BC0F8: @ 80BC0F8
- push {lr}
- ldr r0, _080BC110 @ =sub_80BC074
- movs r1, 0
- bl CreateTask
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- pop {r0}
- bx r0
- .align 2, 0
-_080BC110: .4byte sub_80BC074
- thumb_func_end sub_80BC0F8
-
- thumb_func_start sub_80BC114
-sub_80BC114: @ 80BC114
- push {lr}
- ldr r0, _080BC12C @ =gSaveBlock1
- ldr r1, _080BC130 @ =0x00001a08
- adds r0, r1
- ldr r1, _080BC134 @ =gUnknown_020387DC
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- beq _080BC13C
- ldr r1, _080BC138 @ =gScriptResult
- movs r0, 0x1
- b _080BC140
- .align 2, 0
-_080BC12C: .4byte gSaveBlock1
-_080BC130: .4byte 0x00001a08
-_080BC134: .4byte gUnknown_020387DC
-_080BC138: .4byte gScriptResult
-_080BC13C:
- ldr r1, _080BC148 @ =gScriptResult
- movs r0, 0
-_080BC140:
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080BC148: .4byte gScriptResult
- thumb_func_end sub_80BC114
-
- thumb_func_start sub_80BC14C
-sub_80BC14C: @ 80BC14C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r2, 0
- ldr r5, _080BC174 @ =gSaveBlock1
- ldr r4, _080BC178 @ =0x00001a08
-_080BC158:
- lsls r0, r2, 16
- asrs r1, r0, 16
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 5
- adds r0, r5
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r3
- bne _080BC17C
- lsls r0, r2, 24
- lsrs r0, 24
- b _080BC18A
- .align 2, 0
-_080BC174: .4byte gSaveBlock1
-_080BC178: .4byte 0x00001a08
-_080BC17C:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080BC158
- movs r0, 0
-_080BC18A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80BC14C
-
.section .text_80BC1D0
- thumb_func_start GetSecretBaseMapName
-GetSecretBaseMapName: @ 80BC1D0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- ldr r6, _080BC214 @ =gUnknown_020387DC
- ldr r5, _080BC218 @ =gSaveBlock1
- ldr r4, _080BC21C @ =0x00004054
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 5
- adds r1, r5
- ldr r0, _080BC220 @ =0x00001a08
- adds r1, r0
- ldrb r0, [r1]
- strb r0, [r6]
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, r8
- bl sub_80BC190
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_080BC214: .4byte gUnknown_020387DC
-_080BC218: .4byte gSaveBlock1
-_080BC21C: .4byte 0x00004054
-_080BC220: .4byte 0x00001a08
- thumb_func_end GetSecretBaseMapName
-
- thumb_func_start sub_80BC224
-sub_80BC224: @ 80BC224
- push {r4,r5,lr}
- ldr r0, _080BC25C @ =0x00004054
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 5
- ldr r0, _080BC260 @ =gSaveBlock1 + 0x1A0A
- adds r4, r0
- ldr r5, _080BC264 @ =gStringVar1
- adds r0, r4, 0
- bl sub_80BB8A8
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl StringCopyN
- movs r1, 0xFF
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC25C: .4byte 0x00004054
-_080BC260: .4byte gSaveBlock1 + 0x1A0A
-_080BC264: .4byte gStringVar1
- thumb_func_end sub_80BC224
-
- thumb_func_start sub_80BC268
-sub_80BC268: @ 80BC268
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080BC288 @ =gSaveBlock1
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 5
- adds r1, r2
- ldr r0, _080BC28C @ =0x00001a09
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 6
- cmp r0, 0
- bne _080BC290
- movs r0, 0
- b _080BC292
- .align 2, 0
-_080BC288: .4byte gSaveBlock1
-_080BC28C: .4byte 0x00001a09
-_080BC290:
- movs r0, 0x1
-_080BC292:
- pop {r1}
- bx r1
- thumb_func_end sub_80BC268
-
- thumb_func_start sub_80BC298
-sub_80BC298: @ 80BC298
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x1A
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x1B
- bl GetMonData
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x1C
- bl GetMonData
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x1D
- bl GetMonData
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x1E
- bl GetMonData
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0x1F
- bl GetMonData
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80BC298
-
- thumb_func_start sub_80BC300
-sub_80BC300: @ 80BC300
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r0, 0
- mov r10, r0
- movs r6, 0
- mov r9, r6
-_080BC314:
- movs r4, 0
- lsls r3, r6, 2
- lsls r2, r6, 1
- ldr r7, _080BC424 @ =gPlayerParty
- adds r1, r6, 0x1
- str r1, [sp]
- adds r1, r3, 0
-_080BC322:
- adds r0, r1, r4
- lsls r0, 1
- ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54
- adds r0, r5, r0
- mov r5, r9
- strh r5, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080BC322
- ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84
- adds r0, r1, r2
- strh r5, [r0]
- ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90
- adds r0, r5, r2
- mov r1, r9
- strh r1, [r0]
- ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C
- adds r0, r2, r6
- mov r5, r9
- strb r5, [r0]
- ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C
- adds r0, r1, r3
- mov r2, r9
- str r2, [r0]
- ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2
- adds r0, r3, r6
- strb r2, [r0]
- movs r0, 0x64
- adds r5, r6, 0
- muls r5, r0
- adds r4, r5, r7
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080BC408
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080BC408
- movs r4, 0
- mov r0, r10
- lsls r0, 2
- mov r8, r0
- mov r1, r10
- lsls r7, r1, 1
- adds r1, 0x1
- str r1, [sp, 0x4]
- ldr r2, _080BC424 @ =gPlayerParty
-_080BC38E:
- adds r1, r4, 0
- adds r1, 0xD
- adds r0, r5, r2
- str r2, [sp, 0x8]
- bl GetMonData
- mov r3, r8
- adds r1, r3, r4
- lsls r1, 1
- ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54
- adds r1, r3, r1
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r2, [sp, 0x8]
- cmp r4, 0x3
- bls _080BC38E
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _080BC424 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84
- adds r1, r5, r7
- strh r0, [r1]
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90
- adds r1, r2, r7
- strh r0, [r1]
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C
- add r1, r10
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C
- add r1, r8
- str r0, [r1]
- adds r0, r4, 0
- bl sub_80BC298
- ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2
- add r1, r10
- strb r0, [r1]
- ldr r3, [sp, 0x4]
- lsls r0, r3, 16
- lsrs r0, 16
- mov r10, r0
-_080BC408:
- ldr r5, [sp]
- lsls r0, r5, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _080BC314
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC424: .4byte gPlayerParty
-_080BC428: .4byte gSaveBlock1 + 0x1A54
-_080BC42C: .4byte gSaveBlock1 + 0x1A84
-_080BC430: .4byte gSaveBlock1 + 0x1A90
-_080BC434: .4byte gSaveBlock1 + 0x1A9C
-_080BC438: .4byte gSaveBlock1 + 0x1A3C
-_080BC43C: .4byte gSaveBlock1 + 0x1AA2
- thumb_func_end sub_80BC300
-
- thumb_func_start sub_80BC440
-sub_80BC440: @ 80BC440
- push {r4,r5,lr}
- ldr r4, _080BC45C @ =gSaveBlock1
- ldr r0, _080BC460 @ =0x00001a16
- adds r4, r0
- ldrh r5, [r4]
- movs r0, 0
- bl ResetSecretBase
- strh r5, [r4]
- bl sub_80BC0F8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BC45C: .4byte gSaveBlock1
-_080BC460: .4byte 0x00001a16
- thumb_func_end sub_80BC440
-
- thumb_func_start SecretBasePC_PackUp
-SecretBasePC_PackUp: @ 80BC464
- push {lr}
- movs r0, 0x14
- bl IncrementGameStat
- bl sub_80BC440
- pop {r0}
- bx r0
- thumb_func_end SecretBasePC_PackUp
-
thumb_func_start sub_80BC474
sub_80BC474: @ 80BC474
push {r4-r7,lr}
diff --git a/asm/tv.s b/asm/tv.s
index ca2e5e410..ec5296064 100644
--- a/asm/tv.s
+++ b/asm/tv.s
@@ -7,51 +7,6 @@
.text
- thumb_func_start ClearTVShowData
-ClearTVShowData: @ 80BD7A8
- push {r4-r7,lr}
- movs r3, 0
- ldr r6, _080BD7F0 @ =gSaveBlock1
- movs r4, 0
- ldr r0, _080BD7F4 @ =0x0000273a
- adds r5, r6, r0
-_080BD7B4:
- lsls r2, r3, 3
- adds r2, r3
- lsls r2, 2
- adds r1, r2, r6
- ldr r7, _080BD7F8 @ =0x00002738
- adds r0, r1, r7
- strb r4, [r0]
- ldr r0, _080BD7FC @ =0x00002739
- adds r1, r0
- strb r4, [r1]
- movs r1, 0
- adds r3, 0x1
-_080BD7CC:
- adds r0, r1, r2
- adds r0, r5
- strb r4, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x21
- bls _080BD7CC
- lsls r0, r3, 24
- lsrs r3, r0, 24
- cmp r3, 0x18
- bls _080BD7B4
- bl sub_80BEBF4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BD7F0: .4byte gSaveBlock1
-_080BD7F4: .4byte 0x0000273a
-_080BD7F8: .4byte 0x00002738
-_080BD7FC: .4byte 0x00002739
- thumb_func_end ClearTVShowData
-
thumb_func_start special_0x44
special_0x44: @ 80BD800
push {r4-r7,lr}
@@ -776,4512 +731,11 @@ _080BDD5C:
_080BDD5E:
pop {r1}
bx r1
- thumb_func_end sub_80BDD18
-
- thumb_func_start GabbyAndTySetScriptVarsToFieldObjectLocalIds
-GabbyAndTySetScriptVarsToFieldObjectLocalIds: @ 80BDD64
- push {lr}
- bl GabbyAndTyGetBattleNum
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x7
- bhi _080BDE3C
- lsls r0, 2
- ldr r1, _080BDD80 @ =_080BDD84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BDD80: .4byte _080BDD84
- .align 2, 0
-_080BDD84:
- .4byte _080BDDA4
- .4byte _080BDDB8
- .4byte _080BDDCC
- .4byte _080BDDE0
- .4byte _080BDDF4
- .4byte _080BDE08
- .4byte _080BDE1C
- .4byte _080BDE30
-_080BDDA4:
- ldr r1, _080BDDB0 @ =gSpecialVar_0x8004
- movs r0, 0xE
- strh r0, [r1]
- ldr r1, _080BDDB4 @ =gSpecialVar_0x8005
- movs r0, 0xD
- b _080BDE3A
- .align 2, 0
-_080BDDB0: .4byte gSpecialVar_0x8004
-_080BDDB4: .4byte gSpecialVar_0x8005
-_080BDDB8:
- ldr r1, _080BDDC4 @ =gSpecialVar_0x8004
- movs r0, 0x5
- strh r0, [r1]
- ldr r1, _080BDDC8 @ =gSpecialVar_0x8005
- movs r0, 0x6
- b _080BDE3A
- .align 2, 0
-_080BDDC4: .4byte gSpecialVar_0x8004
-_080BDDC8: .4byte gSpecialVar_0x8005
-_080BDDCC:
- ldr r1, _080BDDD8 @ =gSpecialVar_0x8004
- movs r0, 0x12
- strh r0, [r1]
- ldr r1, _080BDDDC @ =gSpecialVar_0x8005
- movs r0, 0x11
- b _080BDE3A
- .align 2, 0
-_080BDDD8: .4byte gSpecialVar_0x8004
-_080BDDDC: .4byte gSpecialVar_0x8005
-_080BDDE0:
- ldr r1, _080BDDEC @ =gSpecialVar_0x8004
- movs r0, 0x15
- strh r0, [r1]
- ldr r1, _080BDDF0 @ =gSpecialVar_0x8005
- movs r0, 0x16
- b _080BDE3A
- .align 2, 0
-_080BDDEC: .4byte gSpecialVar_0x8004
-_080BDDF0: .4byte gSpecialVar_0x8005
-_080BDDF4:
- ldr r1, _080BDE00 @ =gSpecialVar_0x8004
- movs r0, 0x8
- strh r0, [r1]
- ldr r1, _080BDE04 @ =gSpecialVar_0x8005
- movs r0, 0x9
- b _080BDE3A
- .align 2, 0
-_080BDE00: .4byte gSpecialVar_0x8004
-_080BDE04: .4byte gSpecialVar_0x8005
-_080BDE08:
- ldr r1, _080BDE14 @ =gSpecialVar_0x8004
- movs r0, 0x13
- strh r0, [r1]
- ldr r1, _080BDE18 @ =gSpecialVar_0x8005
- movs r0, 0x14
- b _080BDE3A
- .align 2, 0
-_080BDE14: .4byte gSpecialVar_0x8004
-_080BDE18: .4byte gSpecialVar_0x8005
-_080BDE1C:
- ldr r1, _080BDE28 @ =gSpecialVar_0x8004
- movs r0, 0x17
- strh r0, [r1]
- ldr r1, _080BDE2C @ =gSpecialVar_0x8005
- movs r0, 0x18
- b _080BDE3A
- .align 2, 0
-_080BDE28: .4byte gSpecialVar_0x8004
-_080BDE2C: .4byte gSpecialVar_0x8005
-_080BDE30:
- ldr r1, _080BDE40 @ =gSpecialVar_0x8004
- movs r0, 0xA
- strh r0, [r1]
- ldr r1, _080BDE44 @ =gSpecialVar_0x8005
- movs r0, 0xB
-_080BDE3A:
- strh r0, [r1]
-_080BDE3C:
- pop {r0}
- bx r0
- .align 2, 0
-_080BDE40: .4byte gSpecialVar_0x8004
-_080BDE44: .4byte gSpecialVar_0x8005
- thumb_func_end GabbyAndTySetScriptVarsToFieldObjectLocalIds
-
- thumb_func_start sub_80BDE48
-sub_80BDE48: @ 80BDE48
- push {lr}
- ldr r0, _080BDE60 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x6
- bhi _080BDEA6
- lsls r0, 2
- ldr r1, _080BDE64 @ =_080BDE68
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BDE60: .4byte gSpecialVar_0x8005
-_080BDE64: .4byte _080BDE68
- .align 2, 0
-_080BDE68:
- .4byte _080BDE84
- .4byte _080BDE8A
- .4byte _080BDE90
- .4byte _080BDE96
- .4byte _080BDEA6
- .4byte _080BDE9C
- .4byte _080BDEA2
-_080BDE84:
- bl sub_80BE5FC
- b _080BDEA6
-_080BDE8A:
- bl sub_80BE65C
- b _080BDEA6
-_080BDE90:
- bl sub_80BE6A0
- b _080BDEA6
-_080BDE96:
- bl nullsub_21
- b _080BDEA6
-_080BDE9C:
- bl sub_80BE188
- b _080BDEA6
-_080BDEA2:
- bl sub_80BE320
-_080BDEA6:
- pop {r0}
- bx r0
- thumb_func_end sub_80BDE48
-
- thumb_func_start sub_80BDEAC
-sub_80BDEAC: @ 80BDEAC
- push {lr}
- adds r1, r0, 0
- movs r2, GAME_LANGUAGE
- ldrb r0, [r1]
- cmp r0, 0xFC
- bne _080BDEC0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x15
- bne _080BDEC0
- movs r2, 0x1
-_080BDEC0:
- adds r0, r2, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80BDEAC
-
- thumb_func_start sub_80BDEC8
-sub_80BDEC8: @ 80BDEC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r4, 0
- bl sub_80BEB20
- bl sub_80BE778
- ldr r5, _080BDEE8 @ =gUnknown_030042E0
- ldrh r0, [r5, 0x28]
- cmp r0, 0
- bne _080BDEEC
- bl sub_80BE074
- b _080BE012
.align 2, 0
-_080BDEE8: .4byte gUnknown_030042E0
-_080BDEEC:
- bl sub_80BE028
- ldr r0, _080BDF98 @ =0x0000ffff
- bl sub_80BF77C
- lsls r0, 24
- cmp r0, 0
- beq _080BDEFE
- b _080BE012
-_080BDEFE:
- ldrh r1, [r5, 0x28]
- movs r0, 0xB
- muls r0, r1
- ldr r1, _080BDF9C @ =gSpeciesNames
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x2A
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _080BDF16
- b _080BE012
-_080BDF16:
- ldr r0, _080BDFA0 @ =gSaveBlock1 + 0x2738
- bl sub_80BF74C
- ldr r1, _080BDFA4 @ =gUnknown_03005D38
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BE012
- movs r0, 0x15
- bl sub_80BF1B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BE012
- movs r2, 0
- adds r7, r5, 0
- adds r1, r7, 0
- adds r1, 0x36
-_080BDF42:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bls _080BDF42
- cmp r4, 0
- bne _080BDF64
- ldrb r1, [r7, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BE012
-_080BDF64:
- movs r4, 0
- ldr r0, _080BDFA4 @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BDFA0 @ =gSaveBlock1 + 0x2738
- adds r5, r0, r1
- movs r0, 0x15
- strb r0, [r5]
- strb r4, [r5, 0x1]
- ldrb r1, [r7, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BDFAC
- movs r4, 0x1
- movs r0, 0x1
- adds r3, r5, 0
- adds r3, 0x13
- ldr r1, _080BDFA8 @ =gSaveBlock2
- mov r8, r1
- adds r6, r5, 0x4
- b _080BDFDE
- .align 2, 0
-_080BDF98: .4byte 0x0000ffff
-_080BDF9C: .4byte gSpeciesNames
-_080BDFA0: .4byte gSaveBlock1 + 0x2738
-_080BDFA4: .4byte gUnknown_03005D38
-_080BDFA8: .4byte gSaveBlock2
-_080BDFAC:
- movs r2, 0
- ldr r0, _080BE01C @ =gUnknown_02024C04
- mov r12, r0
- adds r3, r5, 0
- adds r3, 0x13
- ldr r1, _080BE020 @ =gSaveBlock2
- mov r8, r1
- adds r6, r5, 0x4
- adds r1, r7, 0
- adds r1, 0x36
-_080BDFC0:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bls _080BDFC0
- cmp r4, 0xFF
- bls _080BDFDA
- movs r4, 0xFF
-_080BDFDA:
- mov r1, r12
- ldrh r0, [r1]
-_080BDFDE:
- strb r4, [r5, 0x12]
- strb r0, [r5, 0xF]
- adds r0, r3, 0
- mov r1, r8
- bl StringCopy
- ldr r4, _080BE024 @ =gUnknown_0300430A
- adds r0, r6, 0
- adds r1, r4, 0
- bl StringCopy
- subs r4, 0x2A
- ldrh r0, [r4, 0x28]
- strh r0, [r5, 0x10]
- adds r0, r5, 0
- bl sub_80BE138
- movs r0, GAME_LANGUAGE
- strb r0, [r5, 0x2]
- adds r0, r6, 0
- bl sub_80BDEAC
- strb r0, [r5, 0x3]
- adds r0, r6, 0
- bl StripExtCtrlCodes
-_080BE012:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE01C: .4byte gUnknown_02024C04
-_080BE020: .4byte gSaveBlock2
-_080BE024: .4byte gUnknown_0300430A
- thumb_func_end sub_80BDEC8
-
- thumb_func_start sub_80BE028
-sub_80BE028: @ 80BE028
- push {r4,lr}
- ldr r4, _080BE064 @ =gSaveBlock1 + 0x2A98
- ldrb r0, [r4]
- cmp r0, 0x19
- beq _080BE048
- ldr r1, _080BE068 @ =0xfffffca0
- adds r0, r4, r1
- movs r1, 0x18
- bl sub_80BF55C
- movs r0, 0x5
- bl GetGameStat
- strh r0, [r4, 0x6]
- movs r0, 0x19
- strb r0, [r4]
-_080BE048:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- ldr r1, _080BE06C @ =gUnknown_030042E0
- ldrh r0, [r1, 0x28]
- strh r0, [r4, 0x4]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x8]
- ldr r0, _080BE070 @ =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r4, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE064: .4byte gSaveBlock1 + 0x2A98
-_080BE068: .4byte 0xfffffca0
-_080BE06C: .4byte gUnknown_030042E0
-_080BE070: .4byte gMapHeader
- thumb_func_end sub_80BE028
-
- thumb_func_start sub_80BE074
-sub_80BE074: @ 80BE074
- push {r4-r7,lr}
- ldr r0, _080BE118 @ =0x0000ffff
- bl sub_80BF77C
- lsls r0, 24
- cmp r0, 0
- bne _080BE112
- movs r1, 0
- movs r5, 0
- ldr r2, _080BE11C @ =gUnknown_03004316
-_080BE088:
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bls _080BE088
- cmp r5, 0xFF
- bls _080BE0A2
- movs r5, 0xFF
-_080BE0A2:
- cmp r5, 0x2
- bls _080BE112
- ldr r7, _080BE120 @ =gUnknown_02024D26
- ldrb r0, [r7]
- cmp r0, 0x1
- bne _080BE112
- ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738
- adds r0, r6, 0
- bl sub_80BF74C
- ldr r4, _080BE128 @ =gUnknown_03005D38
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BE112
- movs r0, 0x17
- bl sub_80BF1B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BE112
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- adds r4, r6
- movs r1, 0
- movs r0, 0x17
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, _080BE12C @ =gUnknown_030042E0
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0xC]
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0xE]
- strb r5, [r4, 0x10]
- ldrb r0, [r7]
- strb r0, [r4, 0x11]
- ldr r0, _080BE130 @ =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r4, 0x12]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, _080BE134 @ =gSaveBlock2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80BE138
- movs r0, GAME_LANGUAGE
- strb r0, [r4, 0x2]
-_080BE112:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE118: .4byte 0x0000ffff
-_080BE11C: .4byte gUnknown_03004316
-_080BE120: .4byte gUnknown_02024D26
-_080BE124: .4byte gSaveBlock1 + 0x2738
-_080BE128: .4byte gUnknown_03005D38
-_080BE12C: .4byte gUnknown_030042E0
-_080BE130: .4byte gMapHeader
-_080BE134: .4byte gSaveBlock2
- thumb_func_end sub_80BE074
-
- thumb_func_start sub_80BE138
-sub_80BE138: @ 80BE138
- push {r4,lr}
- adds r4, r0, 0
- bl GetPlayerTrainerId
- strb r0, [r4, 0x1E]
- lsrs r2, r0, 8
- strb r2, [r4, 0x1F]
- adds r1, r4, 0
- adds r1, 0x20
- strb r0, [r1]
- adds r1, 0x1
- strb r2, [r1]
- adds r1, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- adds r0, 0x23
- strb r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80BE138
-
- thumb_func_start sub_80BE160
-sub_80BE160: @ 80BE160
- push {r4,lr}
- adds r4, r0, 0
- bl GetPlayerTrainerId
- adds r1, r4, 0
- adds r1, 0x20
- strb r0, [r1]
- lsrs r1, r0, 8
- adds r2, r4, 0
- adds r2, 0x21
- strb r1, [r2]
- adds r2, 0x1
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0x23
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80BE160
-
- thumb_func_start sub_80BE188
-sub_80BE188: @ 80BE188
- push {r4-r6,lr}
- ldr r6, _080BE22C @ =gSaveBlock1 + 0x2A98
- ldrb r1, [r6]
- cmp r1, 0x6
- bne _080BE224
- ldr r0, _080BE230 @ =gUnknown_03005D38
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r2, _080BE234 @ =0xfffffca0
- adds r0, r6, r2
- adds r4, r0
- strb r1, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- ldrh r0, [r6, 0x2]
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- adds r0, 0x16
- ldr r1, _080BE238 @ =gSaveBlock2
- bl StringCopy
- adds r5, r4, 0
- adds r5, 0x8
- adds r1, r6, 0
- adds r1, 0x8
- adds r0, r5, 0
- bl StringCopy
- ldrb r0, [r6, 0x13]
- lsls r0, 29
- lsrs r0, 29
- ldrb r2, [r4, 0x13]
- movs r3, 0x8
- negs r3, r3
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x13]
- ldrb r2, [r6, 0x13]
- movs r0, 0x18
- ands r0, r2
- movs r2, 0x19
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4, 0x13]
- ldrh r0, [r6, 0x14]
- strh r0, [r4, 0x14]
- ldrb r0, [r6, 0x13]
- movs r1, 0x60
- ands r1, r0
- movs r0, 0x61
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x13]
- ldrb r1, [r6, 0x13]
- lsls r1, 29
- lsrs r1, 29
- ands r0, r3
- orrs r0, r1
- strb r0, [r4, 0x13]
- adds r0, r4, 0
- bl sub_80BE160
- movs r0, GAME_LANGUAGE
- strb r0, [r4, 0x1E]
- adds r0, r5, 0
- bl sub_80BDEAC
- strb r0, [r4, 0x1F]
- adds r0, r5, 0
- bl StripExtCtrlCodes
-_080BE224:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE22C: .4byte gSaveBlock1 + 0x2A98
-_080BE230: .4byte gUnknown_03005D38
-_080BE234: .4byte 0xfffffca0
-_080BE238: .4byte gSaveBlock2
- thumb_func_end sub_80BE188
-
- thumb_func_start sub_80BE23C
-sub_80BE23C: @ 80BE23C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r4, _080BE278 @ =gSaveBlock1 + 0x2A98
- bl sub_80BF484
- ldr r0, _080BE27C @ =0xfffffca0
- adds r5, r4, r0
- adds r0, r5, 0
- bl sub_80BF720
- ldr r1, _080BE280 @ =gUnknown_03005D38
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BE270
- adds r0, r5, 0
- movs r1, 0x18
- bl sub_80BF55C
- strh r6, [r4, 0x14]
- movs r0, 0x6
- strb r0, [r4]
-_080BE270:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE278: .4byte gSaveBlock1 + 0x2A98
-_080BE27C: .4byte 0xfffffca0
-_080BE280: .4byte gUnknown_03005D38
- thumb_func_end sub_80BE23C
-
- thumb_func_start sub_80BE284
-sub_80BE284: @ 80BE284
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r7, _080BE304 @ =gSaveBlock1 + 0x2A98
- ldr r1, _080BE308 @ =0xfffffca0
- adds r0, r7, r1
- bl sub_80BF720
- ldr r1, _080BE30C @ =gUnknown_03005D38
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BE2FE
- movs r3, 0x3
- adds r1, r4, 0
- ands r1, r3
- lsls r1, 5
- ldrb r2, [r7, 0x13]
- movs r0, 0x61
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- ldr r1, _080BE310 @ =gScriptContestCategory
- ldrb r2, [r1]
- movs r1, 0x7
- ands r1, r2
- movs r2, 0x8
- negs r2, r2
- ands r0, r2
- orrs r0, r1
- ldr r1, _080BE314 @ =gScriptContestRank
- ldrb r1, [r1]
- ands r3, r1
- lsls r3, 3
- movs r1, 0x19
- negs r1, r1
- ands r0, r1
- orrs r0, r3
- strb r0, [r7, 0x13]
- ldr r6, _080BE318 @ =gUnknown_02038694
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _080BE31C @ =gPlayerParty
- adds r0, r4
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x2]
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- adds r2, r7, 0
- adds r2, 0x8
- movs r1, 0x2
- bl GetMonData
-_080BE2FE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE304: .4byte gSaveBlock1 + 0x2A98
-_080BE308: .4byte 0xfffffca0
-_080BE30C: .4byte gUnknown_03005D38
-_080BE310: .4byte gScriptContestCategory
-_080BE314: .4byte gScriptContestRank
-_080BE318: .4byte gUnknown_02038694
-_080BE31C: .4byte gPlayerParty
- thumb_func_end sub_80BE284
-
- thumb_func_start sub_80BE320
-sub_80BE320: @ 80BE320
- push {r4-r6,lr}
- ldr r0, _080BE384 @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BE388 @ =gSaveBlock1 + 0x2738
- adds r6, r0, r1
- movs r0, 0x7
- strb r0, [r6]
- movs r0, 0x1
- strb r0, [r6, 0x1]
- adds r0, r6, 0x2
- ldr r4, _080BE38C @ =gSaveBlock2
- adds r1, r4, 0
- bl StringCopy
- adds r0, r6, 0
- adds r0, 0xC
- ldr r2, _080BE390 @ =0x00000484
- adds r1, r4, r2
- bl StringCopy
- movs r1, 0x90
- lsls r1, 3
- adds r0, r4, r1
- ldrh r0, [r0]
- strh r0, [r6, 0xA]
- ldr r2, _080BE394 @ =0x00000482
- adds r0, r4, r2
- ldrh r0, [r0]
- strh r0, [r6, 0x14]
- movs r0, 0xAF
- lsls r0, 3
- adds r5, r4, r0
- ldrb r0, [r5]
- bl sub_8135D3C
- strh r0, [r6, 0x16]
- ldr r1, _080BE398 @ =0x00000555
- adds r4, r1
- ldrb r0, [r4]
- strb r0, [r6, 0x1C]
- ldrb r0, [r5]
- cmp r0, 0
- bne _080BE39C
- movs r0, 0x32
- b _080BE39E
- .align 2, 0
-_080BE384: .4byte gUnknown_03005D38
-_080BE388: .4byte gSaveBlock1 + 0x2738
-_080BE38C: .4byte gSaveBlock2
-_080BE390: .4byte 0x00000484
-_080BE394: .4byte 0x00000482
-_080BE398: .4byte 0x00000555
-_080BE39C:
- movs r0, 0x64
-_080BE39E:
- strb r0, [r6, 0x1A]
- ldr r0, _080BE3B8 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- strb r0, [r6, 0x1B]
- adds r0, r6, 0
- bl sub_80BE160
- movs r0, GAME_LANGUAGE
- strb r0, [r6, 0x1D]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE3B8: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80BE320
-
- thumb_func_start sub_80BE3BC
-sub_80BE3BC: @ 80BE3BC
- push {r4-r7,lr}
- ldr r0, _080BE460 @ =0x00005555
- bl sub_80BF77C
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080BE458
- ldr r6, _080BE464 @ =gSaveBlock1 + 0x2738
- adds r0, r6, 0
- bl sub_80BF74C
- ldr r5, _080BE468 @ =gUnknown_03005D38
- strb r0, [r5]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BE458
- movs r0, 0x16
- bl sub_80BF1B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BE458
- bl sub_80BF20C
- ldr r2, _080BE46C @ =gUnknown_02038724
- ldrh r0, [r2, 0x2]
- cmp r0, 0x13
- bls _080BE458
- movs r1, 0
- ldrsb r1, [r5, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r5, r0, r6
- movs r0, 0x16
- strb r0, [r5]
- strb r4, [r5, 0x1]
- ldr r0, _080BE470 @ =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r5, 0x12]
- movs r4, 0
- adds r7, r5, 0x6
- mov r12, r2
- adds r6, r5, 0
- adds r6, 0xC
-_080BE420:
- lsls r2, r4, 1
- adds r3, r7, r2
- lsls r1, r4, 2
- add r1, r12
- ldrh r0, [r1]
- strh r0, [r3]
- adds r2, r6, r2
- ldrh r0, [r1, 0x2]
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _080BE420
- movs r0, 0x1
- bl GetPriceReduction
- strb r0, [r5, 0x2]
- adds r0, r5, 0
- adds r0, 0x13
- ldr r1, _080BE474 @ =gSaveBlock2
- bl StringCopy
- adds r0, r5, 0
- bl sub_80BE138
- movs r0, GAME_LANGUAGE
- strb r0, [r5, 0x3]
-_080BE458:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE460: .4byte 0x00005555
-_080BE464: .4byte gSaveBlock1 + 0x2738
-_080BE468: .4byte gUnknown_03005D38
-_080BE46C: .4byte gUnknown_02038724
-_080BE470: .4byte gMapHeader
-_080BE474: .4byte gSaveBlock2
- thumb_func_end sub_80BE3BC
-
+ thumb_func_end sub_80BDD18
.section .text_80BE8EC
- thumb_func_start sub_80BE8EC
-sub_80BE8EC: @ 80BE8EC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r1, _080BE930 @ =gSaveBlock1
- ldr r2, _080BE934 @ =0x00002afc
- adds r0, r1, r2
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BE94C
- movs r3, 0
- adds r5, r1, 0
- ldr r7, _080BE938 @ =0x00002738
- adds r6, r5, r7
-_080BE906:
- lsls r0, r3, 3
- adds r0, r3
- lsls r2, r0, 2
- adds r1, r2, r5
- ldr r7, _080BE938 @ =0x00002738
- adds r0, r1, r7
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _080BE942
- adds r7, 0x1
- adds r0, r1, r7
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080BE942
- adds r1, r2, r6
- ldrh r0, [r1, 0x16]
- cmp r0, r4
- bcs _080BE93C
- movs r0, 0
- strh r0, [r1, 0x16]
- b _080BE94C
- .align 2, 0
-_080BE930: .4byte gSaveBlock1
-_080BE934: .4byte 0x00002afc
-_080BE938: .4byte 0x00002738
-_080BE93C:
- subs r0, r4
- strh r0, [r1, 0x16]
- b _080BE94C
-_080BE942:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x17
- bls _080BE906
-_080BE94C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BE8EC
-
- thumb_func_start UpdateMassOutbreakTimeLeft
-UpdateMassOutbreakTimeLeft: @ 80BE954
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _080BE96C @ =gSaveBlock1
- ldr r3, _080BE970 @ =0x00002b0e
- adds r2, r0, r3
- ldrh r0, [r2]
- cmp r0, r1
- bhi _080BE974
- bl EndMassOutbreak
- b _080BE978
- .align 2, 0
-_080BE96C: .4byte gSaveBlock1
-_080BE970: .4byte 0x00002b0e
-_080BE974:
- subs r0, r1
- strh r0, [r2]
-_080BE978:
- pop {r0}
- bx r0
- thumb_func_end UpdateMassOutbreakTimeLeft
-
- thumb_func_start sub_80BE97C
-sub_80BE97C: @ 80BE97C
- push {r4,lr}
- lsls r0, 24
- cmp r0, 0
- beq _080BE9A4
- ldr r4, _080BE9A0 @ =gUnknown_020387E2
- ldrh r0, [r4]
- lsrs r0, 8
- cmp r0, 0x4
- bls _080BE992
- bl sub_80BE9D4
-_080BE992:
- ldrb r0, [r4]
- strh r0, [r4]
- cmp r0, 0xFF
- beq _080BE9C8
- adds r0, 0x1
- b _080BE9C6
- .align 2, 0
-_080BE9A0: .4byte gUnknown_020387E2
-_080BE9A4:
- ldr r4, _080BE9D0 @ =gUnknown_020387E2
- ldrb r0, [r4]
- cmp r0, 0x4
- bls _080BE9B0
- bl sub_80BE9D4
-_080BE9B0:
- ldrh r0, [r4]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- strh r1, [r4]
- lsrs r0, r1, 8
- cmp r0, 0xFF
- beq _080BE9C8
- movs r2, 0x80
- lsls r2, 1
- adds r0, r1, r2
-_080BE9C6:
- strh r0, [r4]
-_080BE9C8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BE9D0: .4byte gUnknown_020387E2
- thumb_func_end sub_80BE97C
-
- thumb_func_start sub_80BE9D4
-sub_80BE9D4: @ 80BE9D4
- push {r4,r5,lr}
- ldr r5, _080BEA3C @ =gSaveBlock1 + 0x2738
- adds r0, r5, 0
- bl sub_80BF74C
- ldr r4, _080BEA40 @ =gUnknown_03005D38
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BEA36
- movs r0, 0x18
- bl sub_80BF1B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BEA36
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- adds r4, r5
- movs r1, 0
- movs r0, 0x18
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, _080BEA44 @ =gUnknown_020387E2
- ldrh r0, [r1]
- strb r0, [r4, 0x2]
- ldrh r0, [r1]
- lsrs r0, 8
- strb r0, [r4, 0x3]
- ldr r0, _080BEA48 @ =gUnknown_020387E0
- ldrh r0, [r0]
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, _080BEA4C @ =gSaveBlock2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80BE138
- movs r0, GAME_LANGUAGE
- strb r0, [r4, 0x6]
-_080BEA36:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEA3C: .4byte gSaveBlock1 + 0x2738
-_080BEA40: .4byte gUnknown_03005D38
-_080BEA44: .4byte gUnknown_020387E2
-_080BEA48: .4byte gUnknown_020387E0
-_080BEA4C: .4byte gSaveBlock2
- thumb_func_end sub_80BE9D4
-
- thumb_func_start sub_80BEA50
-sub_80BEA50: @ 80BEA50
- ldr r1, _080BEA58 @ =gUnknown_020387E0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080BEA58: .4byte gUnknown_020387E0
- thumb_func_end sub_80BEA50
-
- thumb_func_start sub_80BEA5C
-sub_80BEA5C: @ 80BEA5C
- push {lr}
- ldr r1, _080BEA78 @ =gSaveBlock1 + 0x2A98
- ldrb r0, [r1]
- cmp r0, 0x19
- bne _080BEA84
- ldrh r0, [r1, 0x2]
- cmp r0, 0x13
- bhi _080BEA80
- ldr r2, _080BEA7C @ =0xfffffca0
- adds r0, r1, r2
- movs r1, 0x18
- bl sub_80BF55C
- b _080BEA84
- .align 2, 0
-_080BEA78: .4byte gSaveBlock1 + 0x2A98
-_080BEA7C: .4byte 0xfffffca0
-_080BEA80:
- bl sub_80BEA88
-_080BEA84:
- pop {r0}
- bx r0
- thumb_func_end sub_80BEA5C
-
- thumb_func_start sub_80BEA88
-sub_80BEA88: @ 80BEA88
- push {r4-r7,lr}
- ldr r5, _080BEB0C @ =gSaveBlock1 + 0x2A98
- ldr r0, _080BEB10 @ =0x0000ffff
- bl sub_80BF77C
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080BEB04
- ldr r0, _080BEB14 @ =0xfffffca0
- adds r7, r5, r0
- adds r0, r7, 0
- bl sub_80BF74C
- ldr r4, _080BEB18 @ =gUnknown_03005D38
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BEB04
- movs r0, 0x19
- bl sub_80BF1B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BEB04
- movs r0, 0
- ldrsb r0, [r4, r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- adds r4, r7
- movs r0, 0x19
- strb r0, [r4]
- strb r6, [r4, 0x1]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- movs r0, 0x5
- bl GetGameStat
- ldrh r1, [r5, 0x6]
- subs r0, r1
- strh r0, [r4, 0x6]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x8]
- ldrb r0, [r5, 0xA]
- strb r0, [r4, 0xA]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, _080BEB1C @ =gSaveBlock2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80BE138
- movs r0, GAME_LANGUAGE
- strb r0, [r4, 0xB]
-_080BEB04:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEB0C: .4byte gSaveBlock1 + 0x2A98
-_080BEB10: .4byte 0x0000ffff
-_080BEB14: .4byte 0xfffffca0
-_080BEB18: .4byte gUnknown_03005D38
-_080BEB1C: .4byte gSaveBlock2
- thumb_func_end sub_80BEA88
-
- thumb_func_start sub_80BEB20
-sub_80BEB20: @ 80BEB20
- push {r4-r6,lr}
- ldr r0, _080BEBAC @ =0x00000804
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080BEBA6
- ldr r6, _080BEBB0 @ =gSaveBlock1 + 0x2ABC
- adds r0, r6, 0
- bl sub_80BEBC8
- ldr r5, _080BEBB4 @ =gUnknown_03005D38
- strb r0, [r5]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BEBA6
- ldr r0, _080BEBB8 @ =0x0000028f
- bl sub_80BF77C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BEBA6
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_80BEE48
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BEBA6
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- ldr r1, _080BEBBC @ =0xffffd544
- adds r2, r6, r1
- adds r0, r6, r0
- strb r4, [r0]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r0, r2
- ldr r1, _080BEBC0 @ =0x00002abe
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r0, r2
- ldr r1, _080BEBC4 @ =0x00002abd
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_080BEBA6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEBAC: .4byte 0x00000804
-_080BEBB0: .4byte gSaveBlock1 + 0x2ABC
-_080BEBB4: .4byte gUnknown_03005D38
-_080BEBB8: .4byte 0x0000028f
-_080BEBBC: .4byte 0xffffd544
-_080BEBC0: .4byte 0x00002abe
-_080BEBC4: .4byte 0x00002abd
- thumb_func_end sub_80BEB20
-
- thumb_func_start sub_80BEBC8
-sub_80BEBC8: @ 80BEBC8
- push {lr}
- adds r2, r0, 0
- movs r1, 0
-_080BEBCE:
- lsls r0, r1, 24
- asrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080BEBE0
- adds r0, r1, 0
- b _080BEBF0
-_080BEBE0:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- asrs r0, 24
- cmp r0, 0xF
- ble _080BEBCE
- movs r0, 0x1
- negs r0, r0
-_080BEBF0:
- pop {r1}
- bx r1
- thumb_func_end sub_80BEBC8
-
- thumb_func_start sub_80BEBF4
-sub_80BEBF4: @ 80BEBF4
- push {r4,lr}
- movs r4, 0
-_080BEBF8:
- adds r0, r4, 0
- bl sub_80BEC10
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080BEBF8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80BEBF4
-
- thumb_func_start sub_80BEC10
-sub_80BEC10: @ 80BEC10
- lsls r0, 24
- ldr r1, _080BEC30 @ =gSaveBlock1
- lsrs r0, 22
- adds r0, r1
- ldr r2, _080BEC34 @ =0x00002abc
- adds r1, r0, r2
- movs r2, 0
- strb r2, [r1]
- ldr r3, _080BEC38 @ =0x00002abd
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, _080BEC3C @ =0x00002abe
- adds r0, r1
- strh r2, [r0]
- bx lr
- .align 2, 0
-_080BEC30: .4byte gSaveBlock1
-_080BEC34: .4byte 0x00002abc
-_080BEC38: .4byte 0x00002abd
-_080BEC3C: .4byte 0x00002abe
- thumb_func_end sub_80BEC10
-
- thumb_func_start sub_80BEC40
-sub_80BEC40: @ 80BEC40
- push {r4-r7,lr}
- movs r1, 0
- ldr r6, _080BEC80 @ =gSaveBlock1
-_080BEC46:
- ldr r3, _080BEC80 @ =gSaveBlock1
- lsls r2, r1, 2
- adds r0, r2, r3
- ldr r4, _080BEC84 @ =0x00002abc
- adds r0, r4
- ldrb r0, [r0]
- adds r5, r1, 0x1
- cmp r0, 0
- bne _080BEC92
- lsls r0, r5, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bhi _080BEC92
- adds r4, r3, r4
- adds r3, r2, r4
-_080BEC64:
- lsls r2, r1, 2
- adds r0, r2, r6
- ldr r7, _080BEC84 @ =0x00002abc
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BEC88
- adds r0, r2, r4
- ldr r0, [r0]
- str r0, [r3]
- adds r0, r1, 0
- bl sub_80BEC10
- b _080BEC92
- .align 2, 0
-_080BEC80: .4byte gSaveBlock1
-_080BEC84: .4byte 0x00002abc
-_080BEC88:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080BEC64
-_080BEC92:
- lsls r0, r5, 24
- lsrs r1, r0, 24
- cmp r1, 0xE
- bls _080BEC46
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BEC40
-
- thumb_func_start sub_80BECA0
-sub_80BECA0: @ 80BECA0
- push {r4,lr}
- movs r2, 0
- ldr r3, _080BECCC @ =gSaveBlock1
-_080BECA6:
- lsls r0, r2, 2
- adds r1, r0, r3
- ldr r4, _080BECD0 @ =0x00002abc
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080BECD4
- adds r4, 0x1
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080BECD4
- adds r4, 0x1
- adds r0, r1, r4
- ldrh r0, [r0]
- cmp r0, 0x2
- bhi _080BECD4
- adds r0, r2, 0
- b _080BECE0
- .align 2, 0
-_080BECCC: .4byte gSaveBlock1
-_080BECD0: .4byte 0x00002abc
-_080BECD4:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080BECA6
- movs r0, 0xFF
-_080BECE0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BECA0
-
- thumb_func_start sub_80BECE8
-sub_80BECE8: @ 80BECE8
- push {r4,lr}
- bl sub_80BECA0
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- bne _080BED00
- ldr r1, _080BECFC @ =gScriptResult
- movs r0, 0
- b _080BED86
- .align 2, 0
-_080BECFC: .4byte gScriptResult
-_080BED00:
- ldr r0, _080BED2C @ =gSaveBlock1
- lsls r1, 2
- adds r4, r1, r0
- ldr r0, _080BED30 @ =0x00002abe
- adds r1, r4, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _080BED5C
- ldr r2, _080BED34 @ =0x00002abd
- adds r1, r4, r2
- movs r0, 0x2
- strb r0, [r1]
- ldr r0, _080BED38 @ =gLocalTime
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x13
- bgt _080BED40
- ldr r1, _080BED3C @ =gTVNewsTextGroup2
- subs r2, 0x1
- b _080BED44
- .align 2, 0
-_080BED2C: .4byte gSaveBlock1
-_080BED30: .4byte 0x00002abe
-_080BED34: .4byte 0x00002abd
-_080BED38: .4byte gLocalTime
-_080BED3C: .4byte gTVNewsTextGroup2
-_080BED40:
- ldr r1, _080BED54 @ =gTVNewsTextGroup3
- ldr r2, _080BED58 @ =0x00002abc
-_080BED44:
- adds r0, r4, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl ShowFieldMessage
- b _080BED82
- .align 2, 0
-_080BED54: .4byte gTVNewsTextGroup3
-_080BED58: .4byte 0x00002abc
-_080BED5C:
- ldrh r1, [r1]
- ldr r0, _080BED90 @ =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, _080BED94 @ =0x00002abd
- adds r1, r4, r0
- movs r0, 0
- strb r0, [r1]
- ldr r1, _080BED98 @ =gTVNewsTextGroup1
- ldr r2, _080BED9C @ =0x00002abc
- adds r0, r4, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl ShowFieldMessage
-_080BED82:
- ldr r1, _080BEDA0 @ =gScriptResult
- movs r0, 0x1
-_080BED86:
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BED90: .4byte gStringVar1
-_080BED94: .4byte 0x00002abd
-_080BED98: .4byte gTVNewsTextGroup1
-_080BED9C: .4byte 0x00002abc
-_080BEDA0: .4byte gScriptResult
- thumb_func_end sub_80BECE8
-
- thumb_func_start GetPriceReduction
-GetPriceReduction: @ 80BEDA4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080BEDB4
- b _080BEDF6
-_080BEDB0:
- movs r0, 0x1
- b _080BEDF8
-_080BEDB4:
- movs r2, 0
- ldr r4, _080BEDE0 @ =gSaveBlock1
-_080BEDB8:
- lsls r0, r2, 2
- adds r1, r0, r4
- ldr r5, _080BEDE4 @ =0x00002abc
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, r3
- bne _080BEDEC
- ldr r2, _080BEDE8 @ =0x00002abd
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080BEDF6
- adds r0, r3, 0
- bl IsPriceDiscounted
- lsls r0, 24
- cmp r0, 0
- bne _080BEDB0
- b _080BEDF6
- .align 2, 0
-_080BEDE0: .4byte gSaveBlock1
-_080BEDE4: .4byte 0x00002abc
-_080BEDE8: .4byte 0x00002abd
-_080BEDEC:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080BEDB8
-_080BEDF6:
- movs r0, 0
-_080BEDF8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetPriceReduction
-
- thumb_func_start IsPriceDiscounted
-IsPriceDiscounted: @ 80BEE00
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BEE12
- cmp r0, 0x3
- beq _080BEE30
-_080BEE0E:
- movs r0, 0x1
- b _080BEE3C
-_080BEE12:
- ldr r0, _080BEE28 @ =gSaveBlock1
- ldrh r1, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bne _080BEE3A
- ldr r0, _080BEE2C @ =gScriptLastTalked
- ldrh r0, [r0]
- cmp r0, 0x1A
- beq _080BEE0E
- b _080BEE3A
- .align 2, 0
-_080BEE28: .4byte gSaveBlock1
-_080BEE2C: .4byte gScriptLastTalked
-_080BEE30:
- ldr r0, _080BEE40 @ =gSaveBlock1
- ldrh r1, [r0, 0x4]
- ldr r0, _080BEE44 @ =0x0000160d
- cmp r1, r0
- beq _080BEE0E
-_080BEE3A:
- movs r0, 0
-_080BEE3C:
- pop {r1}
- bx r1
- .align 2, 0
-_080BEE40: .4byte gSaveBlock1
-_080BEE44: .4byte 0x0000160d
- thumb_func_end IsPriceDiscounted
-
- thumb_func_start sub_80BEE48
-sub_80BEE48: @ 80BEE48
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080BEE56
-_080BEE52:
- movs r0, 0x1
- b _080BEE74
-_080BEE56:
- movs r1, 0
- ldr r4, _080BEE7C @ =gSaveBlock1
- ldr r3, _080BEE80 @ =0x00002abc
-_080BEE5C:
- lsls r0, r1, 2
- adds r0, r4
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, r2
- beq _080BEE52
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080BEE5C
- movs r0, 0
-_080BEE74:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080BEE7C: .4byte gSaveBlock1
-_080BEE80: .4byte 0x00002abc
- thumb_func_end sub_80BEE48
-
- thumb_func_start sub_80BEE84
-sub_80BEE84: @ 80BEE84
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r5, 0
- ldr r0, _080BEEB8 @ =gSaveBlock1
- mov r8, r0
-_080BEE94:
- lsls r0, r5, 2
- mov r1, r8
- adds r2, r0, r1
- ldr r3, _080BEEBC @ =0x00002abc
- adds r1, r2, r3
- ldrb r1, [r1]
- adds r6, r0, 0
- cmp r1, 0
- beq _080BEEEC
- ldr r1, _080BEEC0 @ =0x00002abe
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r7
- bcs _080BEEC4
- adds r0, r5, 0
- bl sub_80BEC10
- b _080BEEEC
- .align 2, 0
-_080BEEB8: .4byte gSaveBlock1
-_080BEEBC: .4byte 0x00002abc
-_080BEEC0: .4byte 0x00002abe
-_080BEEC4:
- ldr r3, _080BEF04 @ =0x00002abd
- adds r4, r2, r3
- ldrb r0, [r4]
- cmp r0, 0
- bne _080BEEDE
- ldr r0, _080BEF08 @ =0x00000804
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080BEEDE
- strb r0, [r4]
-_080BEEDE:
- mov r0, r8
- adds r1, r6, r0
- ldr r3, _080BEF0C @ =0x00002abe
- adds r1, r3
- ldrh r0, [r1]
- subs r0, r7
- strh r0, [r1]
-_080BEEEC:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _080BEE94
- bl sub_80BEC40
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BEF04: .4byte 0x00002abd
-_080BEF08: .4byte 0x00000804
-_080BEF0C: .4byte 0x00002abe
- thumb_func_end sub_80BEE84
-
- thumb_func_start sub_80BEF10
-sub_80BEF10: @ 80BEF10
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _080BEF50
- cmp r1, 0x1
- bgt _080BEF2A
- cmp r1, 0
- beq _080BEF34
- b _080BEF98
-_080BEF2A:
- cmp r2, 0x2
- beq _080BEF6C
- cmp r2, 0x3
- beq _080BEF88
- b _080BEF98
-_080BEF34:
- ldr r1, _080BEF48 @ =gUnknown_083D1464
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BEF4C @ =gUnknown_083CE048
- ldr r1, [r1, 0x14]
- bl StringCopy
- b _080BEF98
- .align 2, 0
-_080BEF48: .4byte gUnknown_083D1464
-_080BEF4C: .4byte gUnknown_083CE048
-_080BEF50:
- ldr r1, _080BEF64 @ =gUnknown_083D1464
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BEF68 @ =gUnknown_083CE048
- ldr r1, [r1, 0x18]
- bl StringCopy
- b _080BEF98
- .align 2, 0
-_080BEF64: .4byte gUnknown_083D1464
-_080BEF68: .4byte gUnknown_083CE048
-_080BEF6C:
- ldr r1, _080BEF80 @ =gUnknown_083D1464
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BEF84 @ =gUnknown_083CE048
- ldr r1, [r1, 0x1C]
- bl StringCopy
- b _080BEF98
- .align 2, 0
-_080BEF80: .4byte gUnknown_083D1464
-_080BEF84: .4byte gUnknown_083CE048
-_080BEF88:
- ldr r1, _080BEF9C @ =gUnknown_083D1464
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BEFA0 @ =gUnknown_083CE048
- ldr r1, [r1, 0x20]
- bl StringCopy
-_080BEF98:
- pop {r0}
- bx r0
- .align 2, 0
-_080BEF9C: .4byte gUnknown_083D1464
-_080BEFA0: .4byte gUnknown_083CE048
- thumb_func_end sub_80BEF10
-
- thumb_func_start CopyContestCategoryToStringVar
-CopyContestCategoryToStringVar: @ 80BEFA4
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, 0x4
- bhi _080BF054
- lsls r0, 2
- ldr r1, _080BEFBC @ =_080BEFC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BEFBC: .4byte _080BEFC0
- .align 2, 0
-_080BEFC0:
- .4byte _080BEFD4
- .4byte _080BEFF0
- .4byte _080BF00C
- .4byte _080BF028
- .4byte _080BF044
-_080BEFD4:
- ldr r1, _080BEFE8 @ =gUnknown_083D1464
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BEFEC @ =gUnknown_083CE048
- ldr r1, [r1]
- bl StringCopy
- b _080BF054
- .align 2, 0
-_080BEFE8: .4byte gUnknown_083D1464
-_080BEFEC: .4byte gUnknown_083CE048
-_080BEFF0:
- ldr r1, _080BF004 @ =gUnknown_083D1464
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BF008 @ =gUnknown_083CE048
- ldr r1, [r1, 0x4]
- bl StringCopy
- b _080BF054
- .align 2, 0
-_080BF004: .4byte gUnknown_083D1464
-_080BF008: .4byte gUnknown_083CE048
-_080BF00C:
- ldr r1, _080BF020 @ =gUnknown_083D1464
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BF024 @ =gUnknown_083CE048
- ldr r1, [r1, 0x8]
- bl StringCopy
- b _080BF054
- .align 2, 0
-_080BF020: .4byte gUnknown_083D1464
-_080BF024: .4byte gUnknown_083CE048
-_080BF028:
- ldr r1, _080BF03C @ =gUnknown_083D1464
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BF040 @ =gUnknown_083CE048
- ldr r1, [r1, 0xC]
- bl StringCopy
- b _080BF054
- .align 2, 0
-_080BF03C: .4byte gUnknown_083D1464
-_080BF040: .4byte gUnknown_083CE048
-_080BF044:
- ldr r1, _080BF058 @ =gUnknown_083D1464
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080BF05C @ =gUnknown_083CE048
- ldr r1, [r1, 0x10]
- bl StringCopy
-_080BF054:
- pop {r0}
- bx r0
- .align 2, 0
-_080BF058: .4byte gUnknown_083D1464
-_080BF05C: .4byte gUnknown_083CE048
- thumb_func_end CopyContestCategoryToStringVar
-
- thumb_func_start SetContestCategoryStringVarForInterview
-SetContestCategoryStringVarForInterview: @ 80BF060
- push {lr}
- ldr r0, _080BF080 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BF084 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- ldrb r1, [r0, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x1
- bl CopyContestCategoryToStringVar
- pop {r0}
- bx r0
- .align 2, 0
-_080BF080: .4byte gSpecialVar_0x8004
-_080BF084: .4byte gSaveBlock1 + 0x2738
- thumb_func_end SetContestCategoryStringVarForInterview
-
- thumb_func_start sub_80BF088
-sub_80BF088: @ 80BF088
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_80BF0B8
- adds r3, r0, 0
- ldr r0, _080BF0B4 @ =gUnknown_083D1464
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- lsls r3, 24
- lsrs r3, 24
- adds r1, r5, 0
- movs r2, 0
- bl ConvertIntToDecimalStringN
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF0B4: .4byte gUnknown_083D1464
- thumb_func_end sub_80BF088
-
- thumb_func_start sub_80BF0B8
-sub_80BF0B8: @ 80BF0B8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xA
- bl __divsi3
- cmp r0, 0
- beq _080BF144
- adds r0, r4, 0
- movs r1, 0x64
- bl __divsi3
- cmp r0, 0
- bne _080BF0D6
- movs r0, 0x2
- b _080BF14E
-_080BF0D6:
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080BF0E8
- movs r0, 0x3
- b _080BF14E
-_080BF0E8:
- ldr r1, _080BF0F8 @ =0x00002710
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080BF0FC
- movs r0, 0x4
- b _080BF14E
- .align 2, 0
-_080BF0F8: .4byte 0x00002710
-_080BF0FC:
- ldr r1, _080BF10C @ =0x000186a0
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080BF110
- movs r0, 0x5
- b _080BF14E
- .align 2, 0
-_080BF10C: .4byte 0x000186a0
-_080BF110:
- ldr r1, _080BF120 @ =0x000f4240
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080BF124
- movs r0, 0x6
- b _080BF14E
- .align 2, 0
-_080BF120: .4byte 0x000f4240
-_080BF124:
- ldr r1, _080BF134 @ =0x00989680
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080BF138
- movs r0, 0x7
- b _080BF14E
- .align 2, 0
-_080BF134: .4byte 0x00989680
-_080BF138:
- ldr r1, _080BF148 @ =0x05f5e100
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- beq _080BF14C
-_080BF144:
- movs r0, 0x1
- b _080BF14E
- .align 2, 0
-_080BF148: .4byte 0x05f5e100
-_080BF14C:
- movs r0, 0x8
-_080BF14E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF0B8
-
- thumb_func_start sub_80BF154
-sub_80BF154: @ 80BF154
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r7, 0
- movs r5, 0
-_080BF166:
- lsls r4, r5, 1
- adds r0, r6, 0x6
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, 0
- beq _080BF186
- bl ItemId_GetPrice
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- adds r1, 0xC
- adds r1, r4
- ldrh r1, [r1]
- muls r0, r1
- adds r7, r0
-_080BF186:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080BF166
- ldrb r0, [r6, 0x2]
- cmp r0, 0x1
- bne _080BF1A0
- asrs r1, r7, 1
- mov r0, r8
- bl sub_80BF088
- b _080BF1A8
-_080BF1A0:
- mov r0, r8
- adds r1, r7, 0
- bl sub_80BF088
-_080BF1A8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BF154
-
- thumb_func_start sub_80BF1B4
-sub_80BF1B4: @ 80BF1B4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, _080BF1F4 @ =gSaveBlock1 + 0x2738
- bl GetPlayerTrainerId
- adds r5, r0, 0
- movs r4, 0x5
-_080BF1C4:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0, r7
- ldrb r0, [r1]
- cmp r0, r6
- bne _080BF1F8
- movs r3, 0xFF
- adds r0, r5, 0
- ands r0, r3
- adds r2, r1, 0
- adds r2, 0x22
- ldrb r2, [r2]
- cmp r0, r2
- bne _080BF1F8
- lsrs r0, r5, 8
- ands r0, r3
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080BF1F8
- movs r0, 0x1
- b _080BF204
- .align 2, 0
-_080BF1F4: .4byte gSaveBlock1 + 0x2738
-_080BF1F8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x17
- bls _080BF1C4
- movs r0, 0
-_080BF204:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF1B4
-
- thumb_func_start sub_80BF20C
-sub_80BF20C: @ 80BF20C
- push {r4-r7,lr}
- movs r2, 0
-_080BF210:
- adds r1, r2, 0x1
- lsls r0, r1, 24
- lsrs r5, r0, 24
- adds r7, r1, 0
- cmp r5, 0x2
- bhi _080BF248
- ldr r6, _080BF258 @ =gUnknown_02038724
- lsls r0, r2, 2
- adds r4, r0, r6
-_080BF222:
- lsls r0, r5, 2
- adds r3, r0, r6
- ldrh r0, [r4, 0x2]
- ldrh r1, [r3, 0x2]
- cmp r0, r1
- bcs _080BF23E
- ldrh r1, [r4]
- adds r2, r0, 0
- ldrh r0, [r3]
- strh r0, [r4]
- ldrh r0, [r3, 0x2]
- strh r0, [r4, 0x2]
- strh r1, [r3]
- strh r2, [r3, 0x2]
-_080BF23E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080BF222
-_080BF248:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- cmp r2, 0x1
- bls _080BF210
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF258: .4byte gUnknown_02038724
- thumb_func_end sub_80BF20C
-
- thumb_func_start sub_80BF25C
-sub_80BF25C: @ 80BF25C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0
- ldr r3, _080BF28C @ =gSaveBlock1
- ldr r0, _080BF290 @ =0x00002738
- adds r4, r3, r0
-_080BF26A:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r3
- ldr r6, _080BF290 @ =0x00002738
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, r5
- bne _080BF2AE
- ldr r3, _080BF294 @ =0x00002739
- adds r0, r2, r3
- ldrb r2, [r0]
- cmp r2, 0x1
- bne _080BF29C
- ldr r0, _080BF298 @ =gScriptResult
- strh r2, [r0]
- b _080BF2BC
- .align 2, 0
-_080BF28C: .4byte gSaveBlock1
-_080BF290: .4byte 0x00002738
-_080BF294: .4byte 0x00002739
-_080BF298: .4byte gScriptResult
-_080BF29C:
- adds r0, r4, 0
- bl sub_80BF55C
- adds r0, r4, 0
- bl sub_80BF588
- bl sub_80BF6D8
- b _080BF2BC
-_080BF2AE:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080BF26A
- bl sub_80BF6D8
-_080BF2BC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BF25C
-
- thumb_func_start sub_80BF2C4
-sub_80BF2C4: @ 80BF2C4
- push {lr}
- ldr r1, _080BF2E0 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080BF2E4 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x6
- bhi _080BF330
- lsls r0, 2
- ldr r1, _080BF2E8 @ =_080BF2EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080BF2E0: .4byte gScriptResult
-_080BF2E4: .4byte gSpecialVar_0x8005
-_080BF2E8: .4byte _080BF2EC
- .align 2, 0
-_080BF2EC:
- .4byte _080BF308
- .4byte _080BF30E
- .4byte _080BF314
- .4byte _080BF31A
- .4byte _080BF320
- .4byte _080BF326
- .4byte _080BF32C
-_080BF308:
- bl sub_80BF334
- b _080BF330
-_080BF30E:
- bl sub_80BF3A4
- b _080BF330
-_080BF314:
- bl sub_80BF3DC
- b _080BF330
-_080BF31A:
- bl sub_80BF46C
- b _080BF330
-_080BF320:
- bl sub_80BF478
- b _080BF330
-_080BF326:
- bl sub_80BF484
- b _080BF330
-_080BF32C:
- bl sub_80BF4BC
-_080BF330:
- pop {r0}
- bx r0
- thumb_func_end sub_80BF2C4
-
- thumb_func_start sub_80BF334
-sub_80BF334: @ 80BF334
- push {r4,lr}
- movs r0, 0x1
- bl sub_80BF25C
- ldr r0, _080BF38C @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BF384
- ldr r4, _080BF390 @ =gStringVar1
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _080BF394 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, _080BF398 @ =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _080BF39C @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BF3A0 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- adds r0, 0x4
- movs r1, 0x6
- bl sub_80EB6FC
-_080BF384:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF38C: .4byte gScriptResult
-_080BF390: .4byte gStringVar1
-_080BF394: .4byte gPlayerParty
-_080BF398: .4byte gSpeciesNames
-_080BF39C: .4byte gUnknown_03005D38
-_080BF3A0: .4byte gSaveBlock1 + 0x2738
- thumb_func_end sub_80BF334
-
- thumb_func_start sub_80BF3A4
-sub_80BF3A4: @ 80BF3A4
- push {lr}
- movs r0, 0x2
- bl sub_80BF25C
- ldr r0, _080BF3D0 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BF3CC
- ldr r0, _080BF3D4 @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BF3D8 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- adds r0, 0x4
- movs r1, 0x6
- bl sub_80EB6FC
-_080BF3CC:
- pop {r0}
- bx r0
- .align 2, 0
-_080BF3D0: .4byte gScriptResult
-_080BF3D4: .4byte gUnknown_03005D38
-_080BF3D8: .4byte gSaveBlock1 + 0x2738
- thumb_func_end sub_80BF3A4
-
- thumb_func_start sub_80BF3DC
-sub_80BF3DC: @ 80BF3DC
- push {r4-r6,lr}
- movs r0, 0x3
- bl sub_80BF25C
- ldr r0, _080BF450 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BF448
- ldr r6, _080BF454 @ =gStringVar1
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0x64
- muls r0, r5
- ldr r4, _080BF458 @ =gPlayerParty
- adds r0, r4
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, _080BF45C @ =gSpeciesNames
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r4
- ldr r4, _080BF460 @ =gStringVar2
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- ldr r0, _080BF464 @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BF468 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- adds r0, 0x1C
- movs r1, 0x2
- bl sub_80EB6FC
-_080BF448:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF450: .4byte gScriptResult
-_080BF454: .4byte gStringVar1
-_080BF458: .4byte gPlayerParty
-_080BF45C: .4byte gSpeciesNames
-_080BF460: .4byte gStringVar2
-_080BF464: .4byte gUnknown_03005D38
-_080BF468: .4byte gSaveBlock1 + 0x2738
- thumb_func_end sub_80BF3DC
-
- thumb_func_start sub_80BF46C
-sub_80BF46C: @ 80BF46C
- ldr r1, _080BF474 @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080BF474: .4byte gScriptResult
- thumb_func_end sub_80BF46C
-
- thumb_func_start sub_80BF478
-sub_80BF478: @ 80BF478
- push {lr}
- movs r0, 0x5
- bl sub_80BF25C
- pop {r0}
- bx r0
- thumb_func_end sub_80BF478
-
- thumb_func_start sub_80BF484
-sub_80BF484: @ 80BF484
- push {lr}
- movs r0, 0x6
- bl sub_80BF25C
- ldr r0, _080BF4B0 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BF4AC
- ldr r0, _080BF4B4 @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BF4B8 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- adds r0, 0x4
- movs r1, 0x2
- bl sub_80EB6FC
-_080BF4AC:
- pop {r0}
- bx r0
- .align 2, 0
-_080BF4B0: .4byte gScriptResult
-_080BF4B4: .4byte gUnknown_03005D38
-_080BF4B8: .4byte gSaveBlock1 + 0x2738
- thumb_func_end sub_80BF484
-
- thumb_func_start sub_80BF4BC
-sub_80BF4BC: @ 80BF4BC
- push {lr}
- movs r0, 0x7
- bl sub_80BF25C
- ldr r0, _080BF4E8 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080BF4E4
- ldr r0, _080BF4EC @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080BF4F0 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- adds r0, 0x18
- movs r1, 0x1
- bl sub_80EB6FC
-_080BF4E4:
- pop {r0}
- bx r0
- .align 2, 0
-_080BF4E8: .4byte gScriptResult
-_080BF4EC: .4byte gUnknown_03005D38
-_080BF4F0: .4byte gSaveBlock1 + 0x2738
- thumb_func_end sub_80BF4BC
-
-.section .text_80BF544
-
- thumb_func_start sub_80BF544
-sub_80BF544: @ 80BF544
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- bl sub_80BF4F4
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80BF544
-
- thumb_func_start sub_80BF55C
-sub_80BF55C: @ 80BF55C
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, r1, 3
- adds r2, r1
- lsls r2, 2
- adds r2, r0
- movs r0, 0
- strb r0, [r2]
- strb r0, [r2, 0x1]
- movs r1, 0
- adds r2, 0x2
- movs r3, 0
-_080BF576:
- adds r0, r2, r1
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x21
- bls _080BF576
- pop {r0}
- bx r0
- thumb_func_end sub_80BF55C
-
- thumb_func_start sub_80BF588
-sub_80BF588: @ 80BF588
- push {r4-r7,lr}
- adds r4, r0, 0
- movs r5, 0
-_080BF58E:
- lsls r0, r5, 3
- adds r0, r5
- lsls r1, r0, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080BF5D2
- adds r0, r5, 0x1
- b _080BF5CA
-_080BF5A0:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r4
- ldrb r0, [r3]
- cmp r0, 0
- beq _080BF5C8
- adds r1, r4
- adds r0, r3, 0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80BF55C
- b _080BF5D2
-_080BF5C8:
- adds r0, r2, 0x1
-_080BF5CA:
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x4
- bls _080BF5A0
-_080BF5D2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080BF58E
- movs r5, 0x5
-_080BF5DE:
- lsls r0, r5, 3
- adds r0, r5
- lsls r1, r0, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- adds r5, 0x1
- cmp r0, 0
- bne _080BF62A
- lsls r0, r5, 24
- b _080BF624
-_080BF5F2:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r4
- ldrb r0, [r3]
- cmp r0, 0
- beq _080BF620
- adds r1, r4
- adds r0, r3, 0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldr r0, _080BF61C @ =gSaveBlock1 + 0x2738
- adds r1, r2, 0
- bl sub_80BF55C
- b _080BF62A
- .align 2, 0
-_080BF61C: .4byte gSaveBlock1 + 0x2738
-_080BF620:
- adds r0, r2, 0x1
- lsls r0, 24
-_080BF624:
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080BF5F2
-_080BF62A:
- lsls r0, r5, 24
- lsrs r5, r0, 24
- cmp r5, 0x17
- bls _080BF5DE
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BF588
-
- thumb_func_start sub_80BF638
-sub_80BF638: @ 80BF638
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80BF674
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r0, _080BF66C @ =gUnknown_083D1464
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0xB
- muls r1, r5
- ldr r2, _080BF670 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080BF66C: .4byte gUnknown_083D1464
-_080BF670: .4byte gSpeciesNames
- thumb_func_end sub_80BF638
-
- thumb_func_start sub_80BF674
-sub_80BF674: @ 80BF674
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _080BF694 @ =0x0000019b
- bl __umodsi3
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- b _080BF6B2
- .align 2, 0
-_080BF694: .4byte 0x0000019b
-_080BF698:
- cmp r4, 0x1
- bne _080BF6A4
- ldr r4, _080BF6A0 @ =0x0000019b
- b _080BF6AA
- .align 2, 0
-_080BF6A0: .4byte 0x0000019b
-_080BF6A4:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080BF6AA:
- cmp r4, r6
- bne _080BF6B2
- adds r4, r5, 0
- b _080BF6CE
-_080BF6B2:
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl sub_8090D90
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _080BF698
- cmp r4, r5
- beq _080BF698
-_080BF6CE:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF674
-
- thumb_func_start sub_80BF6D8
-sub_80BF6D8: @ 80BF6D8
- push {lr}
- ldr r0, _080BF700 @ =gSaveBlock1 + 0x2738
- bl sub_80BF720
- ldr r1, _080BF704 @ =gUnknown_03005D38
- strb r0, [r1]
- ldr r2, _080BF708 @ =gSpecialVar_0x8006
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- strh r1, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080BF710
- ldr r1, _080BF70C @ =gScriptResult
- movs r0, 0x1
- b _080BF714
- .align 2, 0
-_080BF700: .4byte gSaveBlock1 + 0x2738
-_080BF704: .4byte gUnknown_03005D38
-_080BF708: .4byte gSpecialVar_0x8006
-_080BF70C: .4byte gScriptResult
-_080BF710:
- ldr r1, _080BF71C @ =gScriptResult
- movs r0, 0
-_080BF714:
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080BF71C: .4byte gScriptResult
- thumb_func_end sub_80BF6D8
-
- thumb_func_start sub_80BF720
-sub_80BF720: @ 80BF720
- push {lr}
- adds r2, r0, 0
- movs r1, 0
-_080BF726:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080BF73A
- lsls r0, r1, 24
- asrs r0, 24
- b _080BF748
-_080BF73A:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080BF726
- movs r0, 0x1
- negs r0, r0
-_080BF748:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF720
-
- thumb_func_start sub_80BF74C
-sub_80BF74C: @ 80BF74C
- push {lr}
- adds r2, r0, 0
- movs r1, 0x5
-_080BF752:
- lsls r0, r1, 24
- asrs r1, r0, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080BF768
- adds r0, r1, 0
- b _080BF778
-_080BF768:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- asrs r0, 24
- cmp r0, 0x17
- ble _080BF752
- movs r0, 0x1
- negs r0, r0
-_080BF778:
- pop {r1}
- bx r1
- thumb_func_end sub_80BF74C
-
- thumb_func_start sub_80BF77C
-sub_80BF77C: @ 80BF77C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bls _080BF794
- movs r0, 0x1
- b _080BF796
-_080BF794:
- movs r0, 0
-_080BF796:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF77C
-
- thumb_func_start sub_80BF79C
-sub_80BF79C: @ 80BF79C
- push {r4-r6,lr}
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r4, 0x4
- ldr r6, _080BF7B8 @ =0x0000ffff
- b _080BF7C2
- .align 2, 0
-_080BF7B8: .4byte 0x0000ffff
-_080BF7BC:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080BF7C2:
- cmp r2, 0x6
- bne _080BF7C8
- movs r2, 0
-_080BF7C8:
- lsls r1, r2, 1
- adds r0, r5, r1
- ldrh r0, [r0]
- adds r3, r4, 0x4
- cmp r0, r6
- beq _080BF7BC
- ldr r0, _080BF7E4 @ =gStringVar3
- adds r1, r3, r1
- ldrh r1, [r1]
- bl sub_80EB3FC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF7E4: .4byte gStringVar3
- thumb_func_end sub_80BF79C
-
- thumb_func_start sub_80BF7E8
-sub_80BF7E8: @ 80BF7E8
- push {lr}
- adds r2, r0, 0
- movs r3, 0
- movs r1, 0
- ldrb r0, [r2, 0x4]
- cmp r0, 0xFF
- beq _080BF814
- adds r2, 0x4
-_080BF7F8:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r3, r0
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bhi _080BF814
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080BF7F8
-_080BF814:
- movs r0, 0x7
- ands r3, r0
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80BF7E8
-
- thumb_func_start sub_80BF820
-sub_80BF820: @ 80BF820
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r4, [sp, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 16
- lsrs r3, 16
- lsls r4, 16
- lsrs r4, 16
- movs r2, 0
- movs r7, 0xFF
-_080BF844:
- mov r1, sp
- adds r0, r1, r2
- ldrb r1, [r0]
- orrs r1, r7
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _080BF844
- cmp r3, 0
- bne _080BF8A6
- ldr r4, [sp, 0x20]
- adds r4, 0xF
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080BF874
- mov r0, sp
- adds r1, r4, r5
- b _080BF920
-_080BF874:
- cmp r6, 0x1
- bne _080BF880
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4, r1
- b _080BF920
-_080BF880:
- cmp r6, 0x2
- bne _080BF892
- mov r1, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- adds r0, r4, r0
- b _080BF950
-_080BF892:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
- adds r0, r4, r0
- b _080BF950
-_080BF8A6:
- cmp r3, 0x1
- bne _080BF8F4
- ldr r4, [sp, 0x20]
- adds r4, 0x4
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080BF8C2
- mov r0, sp
- adds r1, r4, r5
- b _080BF920
-_080BF8C2:
- cmp r6, 0x1
- bne _080BF8CE
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4, r1
- b _080BF920
-_080BF8CE:
- cmp r6, 0x2
- bne _080BF8E0
- mov r1, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- adds r0, r4, r0
- b _080BF950
-_080BF8E0:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
- adds r0, r4, r0
- b _080BF950
-_080BF8F4:
- movs r0, 0xB
- muls r4, r0
- ldr r7, _080BF910 @ =gSpeciesNames
- adds r0, r4, r7
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080BF914
- mov r0, sp
- adds r1, r5, r4
- b _080BF91E
- .align 2, 0
-_080BF910: .4byte gSpeciesNames
-_080BF914:
- cmp r6, 0x1
- bne _080BF926
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4
-_080BF91E:
- adds r1, r7
-_080BF920:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080BF954
-_080BF926:
- cmp r6, 0x2
- bne _080BF93A
- mov r1, sp
- adds r0, r5, r4
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- adds r0, r5, r0
- b _080BF94E
-_080BF93A:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
- adds r0, r4
-_080BF94E:
- adds r0, r7
-_080BF950:
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
-_080BF954:
- ldr r0, _080BF970 @ =gUnknown_083D1464
- mov r2, r8
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- mov r1, sp
- bl StringCopy
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BF970: .4byte gUnknown_083D1464
- thumb_func_end sub_80BF820
-
- thumb_func_start sub_80BF974
-sub_80BF974: @ 80BF974
- push {r4,lr}
- movs r1, 0
- ldr r4, _080BF994 @ =gSaveBlock1
- ldr r0, _080BF998 @ =gSpecialVar_0x8004
- ldrh r2, [r0]
- ldr r3, _080BF99C @ =0x00002738
-_080BF980:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, r2
- bne _080BF9A0
- movs r0, 0x1
- b _080BF9AC
- .align 2, 0
-_080BF994: .4byte gSaveBlock1
-_080BF998: .4byte gSpecialVar_0x8004
-_080BF99C: .4byte 0x00002738
-_080BF9A0:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080BF980
- movs r0, 0
-_080BF9AC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF974
-
- thumb_func_start sub_80BF9B4
-sub_80BF9B4: @ 80BF9B4
- push {r4,lr}
- ldr r0, _080BF9E0 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BF9E4 @ =gPlayerParty
- adds r0, r1
- ldr r4, _080BF9E8 @ =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- ldr r0, _080BF9EC @ =gStringVar3
- adds r1, r4, 0
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- beq _080BF9F0
- bl sub_80BE478
- movs r0, 0x1
- b _080BF9F2
- .align 2, 0
-_080BF9E0: .4byte gSpecialVar_0x8004
-_080BF9E4: .4byte gPlayerParty
-_080BF9E8: .4byte gStringVar1
-_080BF9EC: .4byte gStringVar3
-_080BF9F0:
- movs r0, 0
-_080BF9F2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80BF9B4
-
- thumb_func_start sub_80BF9F8
-sub_80BF9F8: @ 80BF9F8
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x8
- ldr r0, _080BFAA0 @ =gSpecialVar_0x8004
- mov r9, r0
- ldrh r0, [r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, _080BFAA4 @ =gPlayerParty
- adds r0, r6
- ldr r2, _080BFAA8 @ =gStringVar3
- movs r1, 0x2
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- ldr r1, _080BFAAC @ =gStringVar2
- mov r10, r1
- movs r1, 0x2
- mov r2, r10
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- bl GetMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, _080BFAB0 @ =c2_080CC144
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r10
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFAA0: .4byte gSpecialVar_0x8004
-_080BFAA4: .4byte gPlayerParty
-_080BFAA8: .4byte gStringVar3
-_080BFAAC: .4byte gStringVar2
-_080BFAB0: .4byte c2_080CC144
- thumb_func_end sub_80BF9F8
-
- thumb_func_start c2_080CC144
-c2_080CC144: @ 80BFAB4
- push {lr}
- ldr r0, _080BFAD4 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BFAD8 @ =gPlayerParty
- adds r0, r1
- ldr r2, _080BFADC @ =gStringVar2
- movs r1, 0x2
- bl SetMonData
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
- pop {r0}
- bx r0
- .align 2, 0
-_080BFAD4: .4byte gSpecialVar_0x8004
-_080BFAD8: .4byte gPlayerParty
-_080BFADC: .4byte gStringVar2
- thumb_func_end c2_080CC144
-
- thumb_func_start sub_80BFAE0
-sub_80BFAE0: @ 80BFAE0
- push {r4,lr}
- ldr r0, _080BFB04 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BFB08 @ =gPlayerParty
- adds r0, r1
- ldr r4, _080BFB0C @ =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFB04: .4byte gSpecialVar_0x8004
-_080BFB08: .4byte gPlayerParty
-_080BFB0C: .4byte gStringVar1
- thumb_func_end sub_80BFAE0
-
- thumb_func_start sub_80BFB10
-sub_80BFB10: @ 80BFB10
- push {r4,lr}
- bl GetPlayerTrainerId
- adds r4, r0, 0
- ldr r0, _080BFB38 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080BFB3C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- cmp r4, r0
- bne _080BFB44
- ldr r1, _080BFB40 @ =gScriptResult
- movs r0, 0
- b _080BFB48
- .align 2, 0
-_080BFB38: .4byte gSpecialVar_0x8004
-_080BFB3C: .4byte gPlayerParty
-_080BFB40: .4byte gScriptResult
-_080BFB44:
- ldr r1, _080BFB50 @ =gScriptResult
- movs r0, 0x1
-_080BFB48:
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFB50: .4byte gScriptResult
- thumb_func_end sub_80BFB10
-
- thumb_func_start sub_80BFB54
-sub_80BFB54: @ 80BFB54
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- cmp r1, 0
- beq _080BFB8A
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080BFB6E
- movs r0, 0x2
- b _080BFB90
-_080BFB6E:
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080BFB7E
- movs r0, 0x3
- b _080BFB90
-_080BFB7E:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bls _080BFB8E
-_080BFB8A:
- movs r0, 0
- b _080BFB90
-_080BFB8E:
- movs r0, 0x4
-_080BFB90:
- pop {r1}
- bx r1
- thumb_func_end sub_80BFB54
-
- thumb_func_start GetPlayerTrainerId
-GetPlayerTrainerId: @ 80BFB94
- ldr r2, _080BFBAC @ =gSaveBlock2
- ldrb r0, [r2, 0xD]
- lsls r0, 24
- ldrb r1, [r2, 0xC]
- lsls r1, 16
- orrs r0, r1
- ldrb r1, [r2, 0xB]
- lsls r1, 8
- orrs r0, r1
- ldrb r1, [r2, 0xA]
- orrs r0, r1
- bx lr
- .align 2, 0
-_080BFBAC: .4byte gSaveBlock2
- thumb_func_end GetPlayerTrainerId
-
- thumb_func_start CheckForBigMovieOrEmergencyNewsOnTV
-CheckForBigMovieOrEmergencyNewsOnTV: @ 80BFBB0
- push {lr}
- ldr r1, _080BFBD0 @ =gSaveBlock1
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080BFBCC
- ldr r0, _080BFBD4 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080BFBD8
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080BFBE0
-_080BFBCC:
- movs r0, 0
- b _080BFC0A
- .align 2, 0
-_080BFBD0: .4byte gSaveBlock1
-_080BFBD4: .4byte gSaveBlock2
-_080BFBD8:
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bne _080BFBCC
-_080BFBE0:
- ldr r0, _080BFC04 @ =0x0000085d
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BFBFE
- movs r0, 0x83
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BFC08
-_080BFBFE:
- movs r0, 0x1
- b _080BFC0A
- .align 2, 0
-_080BFC04: .4byte 0x0000085d
-_080BFC08:
- movs r0, 0x2
-_080BFC0A:
- pop {r1}
- bx r1
- thumb_func_end CheckForBigMovieOrEmergencyNewsOnTV
-
- thumb_func_start GetMomOrDadStringForTVMessage
-GetMomOrDadStringForTVMessage: @ 80BFC10
- push {r4,lr}
- ldr r1, _080BFC40 @ =gSaveBlock1
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080BFC6C
- ldr r0, _080BFC44 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080BFC54
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bne _080BFC6C
- ldr r0, _080BFC48 @ =gStringVar1
- ldr r1, _080BFC4C @ =gOtherText_Mom
- bl StringCopy
- ldr r0, _080BFC50 @ =0x00004003
- movs r1, 0x1
- bl VarSet
- b _080BFC6C
- .align 2, 0
-_080BFC40: .4byte gSaveBlock1
-_080BFC44: .4byte gSaveBlock2
-_080BFC48: .4byte gStringVar1
-_080BFC4C: .4byte gOtherText_Mom
-_080BFC50: .4byte 0x00004003
-_080BFC54:
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bne _080BFC6C
- ldr r0, _080BFCB4 @ =gStringVar1
- ldr r1, _080BFCB8 @ =gOtherText_Mom
- bl StringCopy
- ldr r0, _080BFCBC @ =0x00004003
- movs r1, 0x1
- bl VarSet
-_080BFC6C:
- ldr r4, _080BFCBC @ =0x00004003
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _080BFCAA
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- beq _080BFCC0
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bls _080BFCD4
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080BFCC0
-_080BFCAA:
- ldr r0, _080BFCB4 @ =gStringVar1
- ldr r1, _080BFCB8 @ =gOtherText_Mom
- bl StringCopy
- b _080BFD10
- .align 2, 0
-_080BFCB4: .4byte gStringVar1
-_080BFCB8: .4byte gOtherText_Mom
-_080BFCBC: .4byte 0x00004003
-_080BFCC0:
- ldr r0, _080BFCCC @ =gStringVar1
- ldr r1, _080BFCD0 @ =gOtherText_Dad
- bl StringCopy
- b _080BFD10
- .align 2, 0
-_080BFCCC: .4byte gStringVar1
-_080BFCD0: .4byte gOtherText_Dad
-_080BFCD4:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080BFD00
- ldr r0, _080BFCF8 @ =gStringVar1
- ldr r1, _080BFCFC @ =gOtherText_Mom
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x1
- bl VarSet
- b _080BFD10
- .align 2, 0
-_080BFCF8: .4byte gStringVar1
-_080BFCFC: .4byte gOtherText_Mom
-_080BFD00:
- ldr r0, _080BFD18 @ =gStringVar1
- ldr r1, _080BFD1C @ =gOtherText_Dad
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x2
- bl VarSet
-_080BFD10:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFD18: .4byte gStringVar1
-_080BFD1C: .4byte gOtherText_Dad
- thumb_func_end GetMomOrDadStringForTVMessage
-
- thumb_func_start sub_80BFD20
-sub_80BFD20: @ 80BFD20
- push {lr}
- ldr r0, _080BFD3C @ =0x000040bc
- movs r1, 0
- bl VarSet
- ldr r0, _080BFD40 @ =gSaveBlock1
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x5
- bl RemoveFieldObjectByLocalIdAndMap
- pop {r0}
- bx r0
- .align 2, 0
-_080BFD3C: .4byte 0x000040bc
-_080BFD40: .4byte gSaveBlock1
- thumb_func_end sub_80BFD20
-
- thumb_func_start sub_80BFD44
-sub_80BFD44: @ 80BFD44
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- movs r4, 0
-_080BFD54:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 5
- adds r0, r4
- lsls r0, 2
- ldr r5, _080BFD8C @ =0x02007000
- adds r0, r5
- adds r1, r4, 0
- muls r1, r7
- add r1, r8
- movs r2, 0xE1
- lsls r2, 2
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080BFD54
- adds r4, r5, 0
- cmp r6, 0x1
- beq _080BFDBC
- cmp r6, 0x1
- bgt _080BFD90
- cmp r6, 0
- beq _080BFD9A
- b _080BFDFC
- .align 2, 0
-_080BFD8C: .4byte 0x02007000
-_080BFD90:
- cmp r6, 0x2
- beq _080BFDCC
- cmp r6, 0x3
- beq _080BFDE8
- b _080BFDFC
-_080BFD9A:
- ldr r0, _080BFDB4 @ =gSaveBlock1 + 0x2738
- movs r2, 0xE1
- lsls r2, 2
- adds r1, r4, r2
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r4, r3
- ldr r5, _080BFDB8 @ =0x00000a8c
- adds r3, r4, r5
- bl sub_80BFE24
- b _080BFDFC
- .align 2, 0
-_080BFDB4: .4byte gSaveBlock1 + 0x2738
-_080BFDB8: .4byte 0x00000a8c
-_080BFDBC:
- ldr r1, _080BFDC8 @ =gSaveBlock1 + 0x2738
- movs r0, 0xE1
- lsls r0, 3
- adds r2, r4, r0
- b _080BFDD4
- .align 2, 0
-_080BFDC8: .4byte gSaveBlock1 + 0x2738
-_080BFDCC:
- movs r0, 0xE1
- lsls r0, 2
- adds r1, r4, r0
- ldr r2, _080BFDE0 @ =gSaveBlock1 + 0x2738
-_080BFDD4:
- ldr r5, _080BFDE4 @ =0x00000a8c
- adds r3, r4, r5
- adds r0, r4, 0
- bl sub_80BFE24
- b _080BFDFC
- .align 2, 0
-_080BFDE0: .4byte gSaveBlock1 + 0x2738
-_080BFDE4: .4byte 0x00000a8c
-_080BFDE8:
- movs r0, 0xE1
- lsls r0, 2
- adds r1, r5, r0
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r5, r3
- ldr r3, _080BFE20 @ =gSaveBlock1 + 0x2738
- adds r0, r5, 0
- bl sub_80BFE24
-_080BFDFC:
- ldr r4, _080BFE20 @ =gSaveBlock1 + 0x2738
- adds r0, r4, 0
- bl sub_80BF588
- bl sub_80C04A0
- adds r0, r4, 0
- bl sub_80BF588
- bl sub_80C01D4
- bl sub_80C0408
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080BFE20: .4byte gSaveBlock1 + 0x2738
- thumb_func_end sub_80BFD44
-
- thumb_func_start sub_80BFE24
-sub_80BFE24: @ 80BFE24
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- add r0, sp, 0x10
- str r0, [sp]
- add r0, sp, 0x14
- str r0, [sp, 0x4]
- add r0, sp, 0x18
- str r0, [sp, 0x8]
- add r0, sp, 0x1C
- str r0, [sp, 0xC]
- bl GetLinkPlayerCount
- ldr r1, _080BFEA0 @ =gUnknown_03000720
- strb r0, [r1]
-_080BFE50:
- movs r6, 0
- ldr r0, _080BFEA0 @ =gUnknown_03000720
- ldrb r1, [r0]
- cmp r6, r1
- bcs _080BFE50
- mov r10, r0
-_080BFE5C:
- cmp r6, 0
- bne _080BFE64
- ldr r2, _080BFEA4 @ =gUnknown_020387E4
- strb r6, [r2]
-_080BFE64:
- lsls r4, r6, 2
- mov r3, sp
- adds r0, r3, r4
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80C019C
- ldr r1, _080BFEA8 @ =gUnknown_03000722
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- adds r7, r4, 0
- cmp r0, r1
- bne _080BFEAC
- ldr r1, _080BFEA4 @ =gUnknown_020387E4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- mov r2, r10
- ldrb r2, [r2]
- cmp r0, r2
- beq _080BFF58
- adds r6, 0x1
- mov r9, r6
- b _080BFF3C
- .align 2, 0
-_080BFEA0: .4byte gUnknown_03000720
-_080BFEA4: .4byte gUnknown_020387E4
-_080BFEA8: .4byte gUnknown_03000722
-_080BFEAC:
- movs r5, 0
- mov r3, r10
- ldrb r0, [r3]
- subs r0, 0x1
- adds r2, r6, 0x1
- mov r9, r2
- cmp r5, r0
- bge _080BFF22
- ldr r3, _080BFF4C @ =gUnknown_03000720
- mov r8, r3
-_080BFEC0:
- adds r0, r6, r5
- adds r4, r0, 0x1
- mov r0, r8
- ldrb r1, [r0]
- adds r0, r4, 0
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80BF74C
- ldr r1, _080BFF50 @ =gUnknown_03005D38
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080BFF12
- mov r2, r8
- ldrb r1, [r2]
- adds r0, r4, 0
- bl __modsi3
- adds r2, r0, 0
- lsls r0, r2, 2
- add r0, sp
- ldr r0, [r0]
- mov r3, sp
- adds r1, r3, r7
- ldr r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- bl sub_80BFF68
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080BFF22
-_080BFF12:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- blt _080BFEC0
-_080BFF22:
- mov r2, r10
- ldrb r0, [r2]
- subs r0, 0x1
- cmp r5, r0
- bne _080BFF3C
- mov r3, sp
- adds r0, r3, r7
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r1, _080BFF54 @ =gUnknown_03000722
- ldrb r1, [r1]
- bl sub_80BF55C
-_080BFF3C:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r6, r0, 24
- mov r2, r10
- ldrb r2, [r2]
- cmp r6, r2
- bcc _080BFE5C
- b _080BFE50
- .align 2, 0
-_080BFF4C: .4byte gUnknown_03000720
-_080BFF50: .4byte gUnknown_03005D38
-_080BFF54: .4byte gUnknown_03000722
-_080BFF58:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BFE24
-
- thumb_func_start sub_80BFF68
-sub_80BFF68: @ 80BFF68
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r4, [r0]
- ldr r6, [r1]
- movs r5, 0
- ldr r2, _080BFFA4 @ =gUnknown_03000722
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0]
- str r2, [sp]
- bl sub_80BFB54
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- ldr r2, [sp]
- cmp r0, 0x3
- beq _080BFFD8
- cmp r0, 0x3
- bgt _080BFFA8
- cmp r0, 0x2
- beq _080BFFAE
- b _080C0026
- .align 2, 0
-_080BFFA4: .4byte gUnknown_03000722
-_080BFFA8:
- cmp r1, 0x4
- beq _080C0000
- b _080C0026
-_080BFFAE:
- ldr r0, _080BFFD4 @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80C004C
- b _080C0022
- .align 2, 0
-_080BFFD4: .4byte gUnknown_03005D38
-_080BFFD8:
- ldr r0, _080BFFFC @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80C00B4
- b _080C0022
- .align 2, 0
-_080BFFFC: .4byte gUnknown_03005D38
-_080C0000:
- ldr r0, _080C0030 @ =gUnknown_03005D38
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80C0134
-_080C0022:
- lsls r0, 24
- lsrs r5, r0, 24
-_080C0026:
- cmp r5, 0x1
- beq _080C0034
- movs r0, 0
- b _080C0040
- .align 2, 0
-_080C0030: .4byte gUnknown_03005D38
-_080C0034:
- ldr r0, _080C0048 @ =gUnknown_03000722
- ldrb r1, [r0]
- adds r0, r6, 0
- bl sub_80BF55C
- movs r0, 0x1
-_080C0040:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080C0048: .4byte gUnknown_03000722
- thumb_func_end sub_80BFF68
-
- thumb_func_start sub_80C004C
-sub_80C004C: @ 80C004C
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl GetLinkPlayerTrainerId
- adds r5, r0, 0
- movs r2, 0xFF
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C007C
- lsrs r0, r5, 8
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C007C
- movs r0, 0
- b _080C00AC
-_080C007C:
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r0, [r1]
- adds r2, r4, 0
- adds r2, 0x22
- strb r0, [r2]
- adds r3, r4, 0
- adds r3, 0x21
- ldrb r0, [r3]
- adds r2, 0x1
- strb r0, [r2]
- strb r5, [r1]
- lsrs r0, r5, 8
- strb r0, [r3]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
-_080C00AC:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80C004C
-
- thumb_func_start sub_80C00B4
-sub_80C00B4: @ 80C00B4
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl GetLinkPlayerTrainerId
- adds r2, r0, 0
- movs r3, 0xFF
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C00E0
- lsrs r0, r2, 8
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r0, r1
- beq _080C0100
-_080C00E0:
- movs r3, 0xFF
- adds r0, r2, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x22
- lsrs r5, r2, 8
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C0104
- adds r0, r5, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C0104
-_080C0100:
- movs r0, 0
- b _080C012C
-_080C0104:
- ldrb r1, [r4, 0x1E]
- adds r0, r4, 0
- adds r0, 0x20
- strb r1, [r0]
- ldrb r0, [r4, 0x1F]
- adds r1, r4, 0
- adds r1, 0x21
- strb r0, [r1]
- strb r2, [r4, 0x1E]
- strb r5, [r4, 0x1F]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
-_080C012C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80C00B4
-
- thumb_func_start sub_80C0134
-sub_80C0134: @ 80C0134
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl GetLinkPlayerTrainerId
- adds r5, r0, 0
- movs r2, 0xFF
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C0164
- lsrs r0, r5, 8
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080C0164
- movs r0, 0
- b _080C0196
-_080C0164:
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r0, [r1]
- adds r2, r4, 0
- adds r2, 0x22
- strb r0, [r2]
- adds r3, r4, 0
- adds r3, 0x21
- ldrb r0, [r3]
- adds r2, 0x1
- strb r0, [r2]
- strb r5, [r1]
- lsrs r0, r5, 8
- strb r0, [r3]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
- strh r0, [r6, 0x16]
-_080C0196:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80C0134
-
- thumb_func_start sub_80C019C
-sub_80C019C: @ 80C019C
- push {lr}
- adds r3, r0, 0
- movs r2, 0
-_080C01A2:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r3
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080C01C2
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _080C01C2
- lsls r0, r2, 24
- asrs r0, 24
- b _080C01D0
-_080C01C2:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080C01A2
- movs r0, 0x1
- negs r0, r0
-_080C01D0:
- pop {r1}
- bx r1
- thumb_func_end sub_80C019C
-
- thumb_func_start sub_80C01D4
-sub_80C01D4: @ 80C01D4
- push {r4-r6,lr}
- movs r6, 0
-_080C01D8:
- ldr r0, _080C01F8 @ =gSaveBlock1
- lsls r2, r6, 3
- adds r1, r2, r6
- lsls r1, 2
- adds r1, r0
- ldr r0, _080C01FC @ =0x00002738
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x29
- bls _080C01EE
- b _080C038C
-_080C01EE:
- lsls r0, 2
- ldr r1, _080C0200 @ =_080C0204
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C01F8: .4byte gSaveBlock1
-_080C01FC: .4byte 0x00002738
-_080C0200: .4byte _080C0204
- .align 2, 0
-_080C0204:
- .4byte _080C0394
- .4byte _080C02AC
- .4byte _080C0394
- .4byte _080C02BC
- .4byte _080C02CC
- .4byte _080C02DC
- .4byte _080C02F8
- .4byte _080C0308
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C0324
- .4byte _080C0394
- .4byte _080C0334
- .4byte _080C0350
- .4byte _080C0368
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C038C
- .4byte _080C0394
-_080C02AC:
- adds r0, r2, r6
- lsls r0, 2
- ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- ldrh r0, [r0, 0x2]
- b _080C035A
- .align 2, 0
-_080C02B8: .4byte gSaveBlock1 + 0x2738
-_080C02BC:
- adds r0, r2, r6
- lsls r0, 2
- ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- ldrh r0, [r0, 0x2]
- b _080C035A
- .align 2, 0
-_080C02C8: .4byte gSaveBlock1 + 0x2738
-_080C02CC:
- adds r0, r2, r6
- lsls r0, 2
- ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- ldrh r0, [r0, 0x6]
- b _080C035A
- .align 2, 0
-_080C02D8: .4byte gSaveBlock1 + 0x2738
-_080C02DC:
- adds r4, r2, r6
- lsls r4, 2
- ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738
- adds r4, r0
- ldrh r0, [r4, 0x2]
- lsls r5, r6, 24
- lsrs r5, 24
- adds r1, r5, 0
- bl sub_80C03C8
- ldrh r0, [r4, 0x1C]
- b _080C037E
- .align 2, 0
-_080C02F4: .4byte gSaveBlock1 + 0x2738
-_080C02F8:
- adds r0, r2, r6
- lsls r0, 2
- ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- ldrh r0, [r0, 0x2]
- b _080C035A
- .align 2, 0
-_080C0304: .4byte gSaveBlock1 + 0x2738
-_080C0308:
- adds r4, r2, r6
- lsls r4, 2
- ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738
- adds r4, r0
- ldrh r0, [r4, 0xA]
- lsls r5, r6, 24
- lsrs r5, 24
- adds r1, r5, 0
- bl sub_80C03C8
- ldrh r0, [r4, 0x14]
- b _080C037E
- .align 2, 0
-_080C0320: .4byte gSaveBlock1 + 0x2738
-_080C0324:
- adds r0, r2, r6
- lsls r0, 2
- ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- ldrh r0, [r0, 0x10]
- b _080C035A
- .align 2, 0
-_080C0330: .4byte gSaveBlock1 + 0x2738
-_080C0334:
- adds r4, r2, r6
- lsls r4, 2
- ldr r0, _080C034C @ =gSaveBlock1 + 0x2738
- adds r4, r0
- ldrh r0, [r4, 0xC]
- lsls r5, r6, 24
- lsrs r5, 24
- adds r1, r5, 0
- bl sub_80C03C8
- ldrh r0, [r4, 0xE]
- b _080C037E
- .align 2, 0
-_080C034C: .4byte gSaveBlock1 + 0x2738
-_080C0350:
- adds r0, r2, r6
- lsls r0, 2
- ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738
- adds r0, r1
- ldrh r0, [r0, 0x4]
-_080C035A:
- lsls r1, r6, 24
- lsrs r1, 24
- bl sub_80C03C8
- b _080C0394
- .align 2, 0
-_080C0364: .4byte gSaveBlock1 + 0x2738
-_080C0368:
- adds r4, r2, r6
- lsls r4, 2
- ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738
- adds r4, r0
- ldrh r0, [r4, 0x8]
- lsls r5, r6, 24
- lsrs r5, 24
- adds r1, r5, 0
- bl sub_80C03C8
- ldrh r0, [r4, 0x4]
-_080C037E:
- adds r1, r5, 0
- bl sub_80C03C8
- b _080C0394
- .align 2, 0
-_080C0388: .4byte gSaveBlock1 + 0x2738
-_080C038C:
- lsls r0, r6, 24
- lsrs r0, 24
- bl sub_80C03A8
-_080C0394:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x17
- bhi _080C03A0
- b _080C01D8
-_080C03A0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80C01D4
-
- thumb_func_start sub_80C03A8
-sub_80C03A8: @ 80C03A8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080C03C0 @ =gSaveBlock1
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldr r0, _080C03C4 @ =0x00002739
- adds r1, r0
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080C03C0: .4byte gSaveBlock1
-_080C03C4: .4byte 0x00002739
- thumb_func_end sub_80C03A8
-
- thumb_func_start sub_80C03C8
-sub_80C03C8: @ 80C03C8
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl sub_8090D90
- lsls r0, 24
- asrs r2, r0, 24
- cmp r2, 0
- bne _080C03F8
- ldr r1, _080C0400 @ =gSaveBlock1
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, _080C0404 @ =0x00002739
- adds r0, r1
- strb r2, [r0]
-_080C03F8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0400: .4byte gSaveBlock1
-_080C0404: .4byte 0x00002739
- thumb_func_end sub_80C03C8
-
- thumb_func_start sub_80C0408
-sub_80C0408: @ 80C0408
- push {r4-r6,lr}
- ldr r0, _080C044C @ =0x00000804
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C0444
- movs r2, 0
- ldr r6, _080C0450 @ =gSaveBlock1
- ldr r4, _080C0454 @ =0x00002739
- movs r3, 0
- ldr r5, _080C0458 @ =0x00002738
-_080C0422:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r6
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080C0436
- cmp r0, 0x29
- bne _080C043A
-_080C0436:
- adds r0, r1, r4
- strb r3, [r0]
-_080C043A:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x17
- bls _080C0422
-_080C0444:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C044C: .4byte 0x00000804
-_080C0450: .4byte gSaveBlock1
-_080C0454: .4byte 0x00002739
-_080C0458: .4byte 0x00002738
- thumb_func_end sub_80C0408
-
- thumb_func_start sub_80C045C
-sub_80C045C: @ 80C045C
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _080C0494 @ =gSaveBlock1
-_080C0462:
- lsls r0, r5, 3
- adds r0, r5
- lsls r0, 2
- adds r4, r0, r6
- ldr r1, _080C0498 @ =0x00002738
- adds r0, r4, r1
- ldrb r0, [r0]
- bl sub_80BFB54
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080C0484
- ldr r0, _080C049C @ =0x00002739
- adds r1, r4, r0
- movs r0, 0
- strb r0, [r1]
-_080C0484:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080C0462
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0494: .4byte gSaveBlock1
-_080C0498: .4byte 0x00002738
-_080C049C: .4byte 0x00002739
- thumb_func_end sub_80C045C
-
thumb_func_start sub_80C04A0
sub_80C04A0: @ 80C04A0
push {r4,r5,lr}
@@ -5561,295 +1015,7 @@ _080C06B4: .4byte gUnknown_03000721
_080C06B8: .4byte gUnknown_03005D38
thumb_func_end sub_80C05C4
- thumb_func_start sub_80C06BC
-sub_80C06BC: @ 80C06BC
- push {lr}
- ldr r0, [r0]
- ldr r1, [r1]
- ldr r2, _080C06E0 @ =gUnknown_03000722
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r2, 2
- adds r1, r2
- ldr r2, _080C06E4 @ =gUnknown_03005D38
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- bl sub_80C06E8
- pop {r0}
- bx r0
- .align 2, 0
-_080C06E0: .4byte gUnknown_03000722
-_080C06E4: .4byte gUnknown_03005D38
- thumb_func_end sub_80C06BC
-
- thumb_func_start sub_80C06E8
-sub_80C06E8: @ 80C06E8
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- ldrb r3, [r5]
- adds r0, r3, 0
- cmp r0, 0
- bne _080C06FE
-_080C06FA:
- movs r0, 0
- b _080C072A
-_080C06FE:
- movs r1, 0
- adds r2, r3, 0
- adds r3, r0, 0
-_080C0704:
- lsls r0, r1, 2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r3
- beq _080C06FA
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080C0704
- lsls r0, r6, 24
- asrs r0, 22
- adds r0, r4
- strb r2, [r0]
- movs r1, 0x1
- strb r1, [r0, 0x1]
- ldrh r1, [r5, 0x2]
- strh r1, [r0, 0x2]
- movs r0, 0x1
-_080C072A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80C06E8
-
- thumb_func_start sub_80C0730
-sub_80C0730: @ 80C0730
- push {lr}
- lsls r1, 24
- lsrs r2, r1, 24
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080C0746
- lsls r0, r2, 24
- asrs r0, 24
- b _080C074A
-_080C0746:
- movs r0, 0x1
- negs r0, r0
-_080C074A:
- pop {r1}
- bx r1
- thumb_func_end sub_80C0730
-
- thumb_func_start sub_80C0750
-sub_80C0750: @ 80C0750
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _080C0780 @ =gSaveBlock1
-_080C0756:
- lsls r0, r4, 2
- adds r0, r5
- ldr r1, _080C0784 @ =0x00002abc
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x3
- bls _080C076A
- adds r0, r4, 0
- bl sub_80BEC10
-_080C076A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080C0756
- bl sub_80BEC40
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C0780: .4byte gSaveBlock1
-_080C0784: .4byte 0x00002abc
- thumb_func_end sub_80C0750
-
- thumb_func_start sub_80C0788
-sub_80C0788: @ 80C0788
- push {r4,lr}
- ldr r0, _080C07B8 @ =0x00000804
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080C07B2
- movs r1, 0
- ldr r4, _080C07BC @ =gSaveBlock1
- ldr r3, _080C07C0 @ =0x00002abd
- movs r2, 0
-_080C07A0:
- lsls r0, r1, 2
- adds r0, r4
- adds r0, r3
- strb r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080C07A0
-_080C07B2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080C07B8: .4byte 0x00000804
-_080C07BC: .4byte gSaveBlock1
-_080C07C0: .4byte 0x00002abd
- thumb_func_end sub_80C0788
-
- thumb_func_start DoTVShow
-DoTVShow: @ 80C07C4
- push {lr}
- ldr r2, _080C07F8 @ =gSaveBlock1
- ldr r0, _080C07FC @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldr r2, _080C0800 @ =0x00002739
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080C07E0
- b _080C08F8
-_080C07E0:
- subs r2, 0x1
- adds r0, r1, r2
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x28
- bls _080C07EE
- b _080C08F8
-_080C07EE:
- lsls r0, 2
- ldr r1, _080C0804 @ =_080C0808
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C07F8: .4byte gSaveBlock1
-_080C07FC: .4byte gSpecialVar_0x8004
-_080C0800: .4byte 0x00002739
-_080C0804: .4byte _080C0808
- .align 2, 0
-_080C0808:
- .4byte _080C08AC
- .4byte _080C08B2
- .4byte _080C08B8
- .4byte _080C08BE
- .4byte _080C08E2
- .4byte _080C08CA
- .4byte _080C08D0
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08D6
- .4byte _080C08DC
- .4byte _080C08E8
- .4byte _080C08EE
- .4byte _080C08F4
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08F8
- .4byte _080C08C4
-_080C08AC:
- bl DoTVShowPokemonFanClubLetter
- b _080C08F8
-_080C08B2:
- bl DoTVShowRecentHappenings
- b _080C08F8
-_080C08B8:
- bl DoTVShowPokemonFanClubOpinions
- b _080C08F8
-_080C08BE:
- bl nullsub_22
- b _080C08F8
-_080C08C4:
- bl DoTVShowPokemonNewsMassOutbreak
- b _080C08F8
-_080C08CA:
- bl DoTVShowBravoTrainerPokemonProfile
- b _080C08F8
-_080C08D0:
- bl DoTVShowBravoTrainerBattleTowerProfile
- b _080C08F8
-_080C08D6:
- bl DoTVShowPokemonTodaySuccessfulCapture
- b _080C08F8
-_080C08DC:
- bl DoTVShowTodaysSmartShopper
- b _080C08F8
-_080C08E2:
- bl DoTVShowTheNameRaterShow
- b _080C08F8
-_080C08E8:
- bl DoTVShowPokemonTodayFailedCapture
- b _080C08F8
-_080C08EE:
- bl DoTVShowPokemonAngler
- b _080C08F8
-_080C08F4:
- bl DoTVShowTheWorldOfMasters
-_080C08F8:
- pop {r0}
- bx r0
- thumb_func_end DoTVShow
-
- thumb_func_start TVShowConvertInternationalString
-TVShowConvertInternationalString: @ 80C08FC
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r2, 24
- lsrs r4, 24
- bl StringCopy
- cmp r4, 0x1
- bhi _080C0914
- adds r0, r5, 0
- movs r1, 0x1
- bl ConvertInternationalString
-_080C0914:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end TVShowConvertInternationalString
+.section .dotvshow
thumb_func_start DoTVShowBravoTrainerPokemonProfile
DoTVShowBravoTrainerPokemonProfile: @ 80C091C
@@ -6653,1673 +1819,4 @@ _080C1028: .4byte gStringVar1
_080C102C: .4byte gTVSmartShopperTextGroup
thumb_func_end DoTVShowTodaysSmartShopper
- thumb_func_start DoTVShowTheNameRaterShow
-DoTVShowTheNameRaterShow: @ 80C1030
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r0, _080C1060 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C1064 @ =gSaveBlock1 + 0x2738
- adds r6, r0, r1
- ldr r1, _080C1068 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080C106C @ =gUnknown_020387E8
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x12
- bls _080C1054
- b _080C138A
-_080C1054:
- lsls r0, r7, 2
- ldr r1, _080C1070 @ =_080C1074
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1060: .4byte gSpecialVar_0x8004
-_080C1064: .4byte gSaveBlock1 + 0x2738
-_080C1068: .4byte gScriptResult
-_080C106C: .4byte gUnknown_020387E8
-_080C1070: .4byte _080C1074
- .align 2, 0
-_080C1074:
- .4byte _080C10C0
- .4byte _080C1108
- .4byte _080C112A
- .4byte _080C1108
- .4byte _080C1108
- .4byte _080C1108
- .4byte _080C1108
- .4byte _080C1108
- .4byte _080C1108
- .4byte _080C1170
- .4byte _080C1170
- .4byte _080C1170
- .4byte _080C136C
- .4byte _080C11CC
- .4byte _080C1228
- .4byte _080C127C
- .4byte _080C12D4
- .4byte _080C1314
- .4byte _080C1370
-_080C10C0:
- ldr r0, _080C10F4 @ =gStringVar1
- adds r1, r6, 0
- adds r1, 0xF
- ldrb r2, [r6, 0x1E]
- bl TVShowConvertInternationalString
- ldr r0, _080C10F8 @ =gStringVar2
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C10FC @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C1100 @ =gStringVar3
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1F]
- bl TVShowConvertInternationalString
- ldr r4, _080C1104 @ =gUnknown_020387E8
- adds r0, r6, 0
- bl sub_80BF7E8
- adds r0, 0x1
- strb r0, [r4]
- b _080C138A
- .align 2, 0
-_080C10F4: .4byte gStringVar1
-_080C10F8: .4byte gStringVar2
-_080C10FC: .4byte gSpeciesNames
-_080C1100: .4byte gStringVar3
-_080C1104: .4byte gUnknown_020387E8
-_080C1108:
- ldrb r0, [r6, 0x1A]
- cmp r0, 0
- bne _080C1114
- movs r0, 0x9
- strb r0, [r2]
- b _080C138A
-_080C1114:
- cmp r0, 0x1
- bne _080C111E
- movs r0, 0xA
- strb r0, [r2]
- b _080C138A
-_080C111E:
- cmp r0, 0x2
- beq _080C1124
- b _080C138A
-_080C1124:
- movs r0, 0xB
- strb r0, [r2]
- b _080C138A
-_080C112A:
- ldr r0, _080C1144 @ =gStringVar1
- adds r1, r6, 0
- adds r1, 0xF
- ldrb r2, [r6, 0x1E]
- bl TVShowConvertInternationalString
- ldrb r0, [r6, 0x1A]
- cmp r0, 0
- bne _080C114C
- ldr r1, _080C1148 @ =gUnknown_020387E8
- movs r0, 0x9
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C1144: .4byte gStringVar1
-_080C1148: .4byte gUnknown_020387E8
-_080C114C:
- cmp r0, 0x1
- bne _080C115C
- ldr r1, _080C1158 @ =gUnknown_020387E8
- movs r0, 0xA
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C1158: .4byte gUnknown_020387E8
-_080C115C:
- cmp r0, 0x2
- beq _080C1162
- b _080C138A
-_080C1162:
- ldr r1, _080C116C @ =gUnknown_020387E8
- movs r0, 0xB
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C116C: .4byte gUnknown_020387E8
-_080C1170:
- movs r5, 0
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl sub_80BF820
- ldr r0, _080C11BC @ =gStringVar3
- ldr r4, _080C11C0 @ =gStringVar1
- ldrb r2, [r6, 0x1F]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_80BF820
- ldr r0, _080C11C4 @ =gStringVar2
- ldrb r2, [r6, 0x1F]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1F]
- adds r0, r4, 0
- bl TVShowConvertInternationalString
- ldr r1, _080C11C8 @ =gUnknown_020387E8
- movs r0, 0xC
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C11BC: .4byte gStringVar3
-_080C11C0: .4byte gStringVar1
-_080C11C4: .4byte gStringVar2
-_080C11C8: .4byte gUnknown_020387E8
-_080C11CC:
- movs r5, 0
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_80BF820
- ldr r0, _080C1218 @ =gStringVar3
- ldr r4, _080C121C @ =gStringVar1
- ldrb r2, [r6, 0x1F]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0
- bl sub_80BF820
- ldr r0, _080C1220 @ =gStringVar2
- ldrb r2, [r6, 0x1E]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- adds r1, r6, 0
- adds r1, 0xF
- ldrb r2, [r6, 0x1E]
- adds r0, r4, 0
- bl TVShowConvertInternationalString
- ldr r1, _080C1224 @ =gUnknown_020387E8
- movs r0, 0xE
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C1218: .4byte gStringVar3
-_080C121C: .4byte gStringVar1
-_080C1220: .4byte gStringVar2
-_080C1224: .4byte gUnknown_020387E8
-_080C1228:
- movs r5, 0
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x3
- movs r3, 0
- bl sub_80BF820
- ldr r0, _080C1270 @ =gStringVar3
- ldr r4, _080C1274 @ =gStringVar1
- ldrb r2, [r6, 0x1E]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- str r5, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80BF820
- ldr r0, _080C1278 @ =gStringVar2
- ldrb r2, [r6, 0x1F]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- adds r1, r6, 0
- adds r1, 0xF
- ldrb r2, [r6, 0x1E]
- adds r0, r4, 0
- bl TVShowConvertInternationalString
- b _080C1354
- .align 2, 0
-_080C1270: .4byte gStringVar3
-_080C1274: .4byte gStringVar1
-_080C1278: .4byte gStringVar2
-_080C127C:
- movs r0, 0
- str r0, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80BF820
- ldr r0, _080C12C4 @ =gStringVar1
- ldr r4, _080C12C8 @ =gStringVar2
- ldrb r2, [r6, 0x1F]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- ldrh r1, [r6, 0x2]
- movs r0, 0xB
- muls r1, r0
- ldr r0, _080C12CC @ =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldrh r0, [r6, 0x2]
- str r0, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_80BF820
- ldr r1, _080C12D0 @ =gUnknown_020387E8
- movs r0, 0x10
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C12C4: .4byte gStringVar1
-_080C12C8: .4byte gStringVar2
-_080C12CC: .4byte gSpeciesNames
-_080C12D0: .4byte gUnknown_020387E8
-_080C12D4:
- movs r0, 0
- str r0, [sp]
- str r6, [sp, 0x4]
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_80BF820
- ldr r0, _080C1308 @ =gStringVar3
- ldr r1, _080C130C @ =gStringVar1
- ldrb r2, [r6, 0x1F]
- bl TVShowConvertInternationalString
- ldrh r0, [r6, 0x2]
- str r0, [sp]
- str r6, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x2
- bl sub_80BF820
- ldr r1, _080C1310 @ =gUnknown_020387E8
- movs r0, 0x11
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C1308: .4byte gStringVar3
-_080C130C: .4byte gStringVar1
-_080C1310: .4byte gUnknown_020387E8
-_080C1314:
- movs r0, 0
- str r0, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80BF820
- ldr r0, _080C135C @ =gStringVar1
- ldr r4, _080C1360 @ =gStringVar2
- ldrb r2, [r6, 0x1F]
- adds r1, r4, 0
- bl TVShowConvertInternationalString
- ldrh r0, [r6, 0x1C]
- str r0, [sp]
- str r6, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_80BF820
- ldrh r1, [r6, 0x1C]
- movs r0, 0xB
- muls r1, r0
- ldr r0, _080C1364 @ =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
-_080C1354:
- ldr r1, _080C1368 @ =gUnknown_020387E8
- movs r0, 0x12
- strb r0, [r1]
- b _080C138A
- .align 2, 0
-_080C135C: .4byte gStringVar1
-_080C1360: .4byte gStringVar2
-_080C1364: .4byte gSpeciesNames
-_080C1368: .4byte gUnknown_020387E8
-_080C136C:
- movs r7, 0x12
- strb r7, [r2]
-_080C1370:
- ldr r0, _080C13A0 @ =gStringVar1
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1F]
- bl TVShowConvertInternationalString
- ldr r0, _080C13A4 @ =gStringVar2
- adds r1, r6, 0
- adds r1, 0xF
- ldrb r2, [r6, 0x1E]
- bl TVShowConvertInternationalString
- bl TVShowDone
-_080C138A:
- ldr r0, _080C13A8 @ =gTVNameRaterTextGroup
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C13A0: .4byte gStringVar1
-_080C13A4: .4byte gStringVar2
-_080C13A8: .4byte gTVNameRaterTextGroup
- thumb_func_end DoTVShowTheNameRaterShow
-
- thumb_func_start DoTVShowPokemonTodaySuccessfulCapture
-DoTVShowPokemonTodaySuccessfulCapture: @ 80C13AC
- push {r4-r6,lr}
- ldr r0, _080C13D8 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C13DC @ =gSaveBlock1 + 0x2738
- adds r5, r0, r1
- ldr r1, _080C13E0 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080C13E4 @ =gUnknown_020387E8
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0xB
- bls _080C13CE
- b _080C15DC
-_080C13CE:
- lsls r0, r6, 2
- ldr r1, _080C13E8 @ =_080C13EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C13D8: .4byte gSpecialVar_0x8004
-_080C13DC: .4byte gSaveBlock1 + 0x2738
-_080C13E0: .4byte gScriptResult
-_080C13E4: .4byte gUnknown_020387E8
-_080C13E8: .4byte _080C13EC
- .align 2, 0
-_080C13EC:
- .4byte _080C141C
- .4byte _080C1470
- .4byte _080C1476
- .4byte _080C14B0
- .4byte _080C14E8
- .4byte _080C14EE
- .4byte _080C1524
- .4byte _080C1578
- .4byte _080C1578
- .4byte _080C15A8
- .4byte _080C15A8
- .4byte _080C15D8
-_080C141C:
- ldr r0, _080C1450 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl TVShowConvertInternationalString
- ldr r0, _080C1454 @ =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1458 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C145C @ =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl TVShowConvertInternationalString
- ldrb r0, [r5, 0xF]
- cmp r0, 0x1
- bne _080C1464
- ldr r1, _080C1460 @ =gUnknown_020387E8
- movs r0, 0x5
- strb r0, [r1]
- b _080C15DC
- .align 2, 0
-_080C1450: .4byte gStringVar1
-_080C1454: .4byte gStringVar2
-_080C1458: .4byte gSpeciesNames
-_080C145C: .4byte gStringVar3
-_080C1460: .4byte gUnknown_020387E8
-_080C1464:
- ldr r1, _080C146C @ =gUnknown_020387E8
- movs r0, 0x1
- strb r0, [r1]
- b _080C15DC
- .align 2, 0
-_080C146C: .4byte gUnknown_020387E8
-_080C1470:
- movs r0, 0x2
- strb r0, [r2]
- b _080C15DC
-_080C1476:
- ldr r4, _080C149C @ =gStringVar2
- ldrb r0, [r5, 0xF]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5, 0x12]
- movs r0, 0x2
- bl sub_80BF088
- ldrb r0, [r5, 0x12]
- cmp r0, 0x3
- bhi _080C14A4
- ldr r1, _080C14A0 @ =gUnknown_020387E8
- movs r0, 0x3
- strb r0, [r1]
- b _080C15DC
- .align 2, 0
-_080C149C: .4byte gStringVar2
-_080C14A0: .4byte gUnknown_020387E8
-_080C14A4:
- ldr r1, _080C14AC @ =gUnknown_020387E8
- movs r0, 0x4
- strb r0, [r1]
- b _080C15DC
- .align 2, 0
-_080C14AC: .4byte gUnknown_020387E8
-_080C14B0:
- ldr r0, _080C14D8 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl TVShowConvertInternationalString
- ldr r0, _080C14DC @ =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C14E0 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C14E4 @ =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl TVShowConvertInternationalString
- b _080C150A
- .align 2, 0
-_080C14D8: .4byte gStringVar1
-_080C14DC: .4byte gStringVar2
-_080C14E0: .4byte gSpeciesNames
-_080C14E4: .4byte gStringVar3
-_080C14E8:
- movs r0, 0x6
- strb r0, [r2]
- b _080C15DC
-_080C14EE:
- ldr r0, _080C1514 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl TVShowConvertInternationalString
- ldr r0, _080C1518 @ =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C151C @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
-_080C150A:
- ldr r1, _080C1520 @ =gUnknown_020387E8
- movs r0, 0x6
- strb r0, [r1]
- b _080C15DC
- .align 2, 0
-_080C1514: .4byte gStringVar1
-_080C1518: .4byte gStringVar2
-_080C151C: .4byte gSpeciesNames
-_080C1520: .4byte gUnknown_020387E8
-_080C1524:
- ldr r0, _080C1564 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl TVShowConvertInternationalString
- ldr r0, _080C1568 @ =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C156C @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C1570 @ =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl TVShowConvertInternationalString
- ldr r4, _080C1574 @ =gUnknown_020387E8
- bl Random
- ldrb r2, [r4]
- adds r2, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, r2
- strb r0, [r4]
- b _080C15DC
- .align 2, 0
-_080C1564: .4byte gStringVar1
-_080C1568: .4byte gStringVar2
-_080C156C: .4byte gSpeciesNames
-_080C1570: .4byte gStringVar3
-_080C1574: .4byte gUnknown_020387E8
-_080C1578:
- ldr r0, _080C159C @ =gStringVar1
- ldrh r1, [r5, 0x10]
- movs r4, 0xB
- muls r1, r4
- ldr r2, _080C15A0 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C15A4 @ =gStringVar2
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl TVShowConvertInternationalString
- ldrh r1, [r5, 0x10]
- movs r0, 0x2
- bl sub_80BF638
- b _080C15C2
- .align 2, 0
-_080C159C: .4byte gStringVar1
-_080C15A0: .4byte gSpeciesNames
-_080C15A4: .4byte gStringVar2
-_080C15A8:
- ldr r0, _080C15C8 @ =gStringVar1
- ldrh r1, [r5, 0x10]
- movs r4, 0xB
- muls r1, r4
- ldr r2, _080C15CC @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C15D0 @ =gStringVar2
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl TVShowConvertInternationalString
-_080C15C2:
- ldr r0, _080C15D4 @ =gUnknown_020387E8
- strb r4, [r0]
- b _080C15DC
- .align 2, 0
-_080C15C8: .4byte gStringVar1
-_080C15CC: .4byte gSpeciesNames
-_080C15D0: .4byte gStringVar2
-_080C15D4: .4byte gUnknown_020387E8
-_080C15D8:
- bl TVShowDone
-_080C15DC:
- ldr r0, _080C15F0 @ =gTVPokemonTodayTextGroup
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C15F0: .4byte gTVPokemonTodayTextGroup
- thumb_func_end DoTVShowPokemonTodaySuccessfulCapture
-
- thumb_func_start DoTVShowPokemonTodayFailedCapture
-DoTVShowPokemonTodayFailedCapture: @ 80C15F4
- push {r4,r5,lr}
- ldr r0, _080C1620 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C1624 @ =gSaveBlock1 + 0x2738
- adds r4, r0, r1
- ldr r1, _080C1628 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080C162C @ =gUnknown_020387E8
- ldrb r5, [r0]
- cmp r5, 0x6
- bls _080C1614
- b _080C173C
-_080C1614:
- lsls r0, r5, 2
- ldr r1, _080C1630 @ =_080C1634
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1620: .4byte gSpecialVar_0x8004
-_080C1624: .4byte gSaveBlock1 + 0x2738
-_080C1628: .4byte gScriptResult
-_080C162C: .4byte gUnknown_020387E8
-_080C1630: .4byte _080C1634
- .align 2, 0
-_080C1634:
- .4byte _080C1650
- .4byte _080C1684
- .4byte _080C16D8
- .4byte _080C16D8
- .4byte _080C171C
- .4byte _080C171C
- .4byte _080C1738
-_080C1650:
- ldr r0, _080C1674 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl TVShowConvertInternationalString
- ldr r0, _080C1678 @ =gStringVar2
- ldrh r2, [r4, 0xC]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C167C @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, _080C1680 @ =gUnknown_020387E8
- movs r0, 0x1
- strb r0, [r1]
- b _080C173C
- .align 2, 0
-_080C1674: .4byte gStringVar1
-_080C1678: .4byte gStringVar2
-_080C167C: .4byte gSpeciesNames
-_080C1680: .4byte gUnknown_020387E8
-_080C1684:
- ldr r0, _080C16B8 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl TVShowConvertInternationalString
- ldr r0, _080C16BC @ =gStringVar2
- ldrb r1, [r4, 0x12]
- movs r2, 0
- bl sub_80FBFB4
- ldr r0, _080C16C0 @ =gStringVar3
- ldrh r2, [r4, 0xE]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C16C4 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r4, 0x11]
- cmp r0, 0x1
- bne _080C16CC
- ldr r1, _080C16C8 @ =gUnknown_020387E8
- movs r0, 0x3
- strb r0, [r1]
- b _080C173C
- .align 2, 0
-_080C16B8: .4byte gStringVar1
-_080C16BC: .4byte gStringVar2
-_080C16C0: .4byte gStringVar3
-_080C16C4: .4byte gSpeciesNames
-_080C16C8: .4byte gUnknown_020387E8
-_080C16CC:
- ldr r1, _080C16D4 @ =gUnknown_020387E8
- movs r0, 0x2
- strb r0, [r1]
- b _080C173C
- .align 2, 0
-_080C16D4: .4byte gUnknown_020387E8
-_080C16D8:
- ldr r0, _080C1708 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl TVShowConvertInternationalString
- ldrb r1, [r4, 0x10]
- movs r0, 0x1
- bl sub_80BF088
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _080C1710
- ldr r1, _080C170C @ =gUnknown_020387E8
- movs r0, 0x5
- strb r0, [r1]
- b _080C173C
- .align 2, 0
-_080C1708: .4byte gStringVar1
-_080C170C: .4byte gUnknown_020387E8
-_080C1710:
- ldr r1, _080C1718 @ =gUnknown_020387E8
- movs r0, 0x4
- strb r0, [r1]
- b _080C173C
- .align 2, 0
-_080C1718: .4byte gUnknown_020387E8
-_080C171C:
- ldr r0, _080C1730 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl TVShowConvertInternationalString
- ldr r1, _080C1734 @ =gUnknown_020387E8
- movs r0, 0x6
- strb r0, [r1]
- b _080C173C
- .align 2, 0
-_080C1730: .4byte gStringVar1
-_080C1734: .4byte gUnknown_020387E8
-_080C1738:
- bl TVShowDone
-_080C173C:
- ldr r0, _080C1750 @ =gTVPokemonTodayFailedCaptureTextGroup
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1750: .4byte gTVPokemonTodayFailedCaptureTextGroup
- thumb_func_end DoTVShowPokemonTodayFailedCapture
-
- thumb_func_start DoTVShowPokemonFanClubLetter
-DoTVShowPokemonFanClubLetter: @ 80C1754
- push {r4-r7,lr}
- ldr r0, _080C1780 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C1784 @ =gSaveBlock1 + 0x2738
- adds r5, r0, r1
- ldr r1, _080C1788 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080C178C @ =gUnknown_020387E8
- ldrb r7, [r0]
- adds r6, r0, 0
- cmp r7, 0x33
- bls _080C1776
- b _080C1960
-_080C1776:
- lsls r0, r7, 2
- ldr r1, _080C1790 @ =_080C1794
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1780: .4byte gSpecialVar_0x8004
-_080C1784: .4byte gSaveBlock1 + 0x2738
-_080C1788: .4byte gScriptResult
-_080C178C: .4byte gUnknown_020387E8
-_080C1790: .4byte _080C1794
- .align 2, 0
-_080C1794:
- .4byte _080C1864
- .4byte _080C1898
- .4byte _080C18C4
- .4byte _080C18CA
- .4byte _080C18E2
- .4byte _080C18E2
- .4byte _080C18E2
- .4byte _080C18F4
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1960
- .4byte _080C1916
- .4byte _080C193C
-_080C1864:
- ldr r0, _080C1888 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- ldrb r2, [r5, 0x18]
- bl TVShowConvertInternationalString
- ldr r0, _080C188C @ =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1890 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, _080C1894 @ =gUnknown_020387E8
- movs r0, 0x32
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C1888: .4byte gStringVar1
-_080C188C: .4byte gStringVar2
-_080C1890: .4byte gSpeciesNames
-_080C1894: .4byte gUnknown_020387E8
-_080C1898:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r2, r0, 0x1
- cmp r2, 0x1
- bne _080C18B8
- ldr r1, _080C18B4 @ =gUnknown_020387E8
- movs r0, 0x2
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C18B4: .4byte gUnknown_020387E8
-_080C18B8:
- ldr r1, _080C18C0 @ =gUnknown_020387E8
- adds r0, r2, 0x2
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C18C0: .4byte gUnknown_020387E8
-_080C18C4:
- movs r0, 0x33
- strb r0, [r6]
- b _080C1960
-_080C18CA:
- bl Random
- ldrb r4, [r6]
- adds r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, r4
- strb r0, [r6]
- b _080C1960
-_080C18E2:
- adds r0, r5, 0
- bl sub_80BF79C
- ldr r1, _080C18F0 @ =gUnknown_020387E8
- movs r0, 0x7
- strb r0, [r1]
- b _080C1960
- .align 2, 0
-_080C18F0: .4byte gUnknown_020387E8
-_080C18F4:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- bl __umodsi3
- adds r0, 0x46
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x2
- adds r1, r2, 0
- bl sub_80BF088
- bl TVShowDone
- b _080C1960
-_080C1916:
- ldr r4, _080C1934 @ =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl ShowFieldMessage
- ldr r1, _080C1938 @ =gUnknown_020387E8
- movs r0, 0x1
- strb r0, [r1]
- b _080C196C
- .align 2, 0
-_080C1934: .4byte gStringVar4
-_080C1938: .4byte gUnknown_020387E8
-_080C193C:
- ldr r4, _080C1958 @ =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl ShowFieldMessage
- ldr r1, _080C195C @ =gUnknown_020387E8
- movs r0, 0x3
- strb r0, [r1]
- b _080C196C
- .align 2, 0
-_080C1958: .4byte gStringVar4
-_080C195C: .4byte gUnknown_020387E8
-_080C1960:
- ldr r0, _080C1974 @ =gTVFanClubTextGroup
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
-_080C196C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1974: .4byte gTVFanClubTextGroup
- thumb_func_end DoTVShowPokemonFanClubLetter
-
- thumb_func_start DoTVShowRecentHappenings
-DoTVShowRecentHappenings: @ 80C1978
- push {r4-r7,lr}
- ldr r0, _080C19A4 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C19A8 @ =gSaveBlock1 + 0x2738
- adds r5, r0, r1
- ldr r1, _080C19AC @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080C19B0 @ =gUnknown_020387E8
- ldrb r6, [r0]
- adds r7, r0, 0
- cmp r6, 0x32
- bls _080C199A
- b _080C1AF0
-_080C199A:
- lsls r0, r6, 2
- ldr r1, _080C19B4 @ =_080C19B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C19A4: .4byte gSpecialVar_0x8004
-_080C19A8: .4byte gSaveBlock1 + 0x2738
-_080C19AC: .4byte gScriptResult
-_080C19B0: .4byte gUnknown_020387E8
-_080C19B4: .4byte _080C19B8
- .align 2, 0
-_080C19B8:
- .4byte _080C1A84
- .4byte _080C1AA8
- .4byte _080C1AC0
- .4byte _080C1AC0
- .4byte _080C1AC0
- .4byte _080C1AC6
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1AF0
- .4byte _080C1ACC
-_080C1A84:
- ldr r0, _080C1AA0 @ =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- ldrb r2, [r5, 0x18]
- bl TVShowConvertInternationalString
- adds r0, r5, 0
- bl sub_80BF79C
- ldr r1, _080C1AA4 @ =gUnknown_020387E8
- movs r0, 0x32
- strb r0, [r1]
- b _080C1AF0
- .align 2, 0
-_080C1AA0: .4byte gStringVar1
-_080C1AA4: .4byte gUnknown_020387E8
-_080C1AA8:
- bl Random
- ldrb r4, [r7]
- adds r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, r4
- strb r0, [r7]
- b _080C1AF0
-_080C1AC0:
- movs r0, 0x5
- strb r0, [r7]
- b _080C1AF0
-_080C1AC6:
- bl TVShowDone
- b _080C1AF0
-_080C1ACC:
- ldr r4, _080C1AE8 @ =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl ShowFieldMessage
- ldr r1, _080C1AEC @ =gUnknown_020387E8
- movs r0, 0x1
- strb r0, [r1]
- b _080C1AFC
- .align 2, 0
-_080C1AE8: .4byte gStringVar4
-_080C1AEC: .4byte gUnknown_020387E8
-_080C1AF0:
- ldr r0, _080C1B04 @ =gTVRecentHappeningsTextGroup
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
-_080C1AFC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1B04: .4byte gTVRecentHappeningsTextGroup
- thumb_func_end DoTVShowRecentHappenings
-
- thumb_func_start DoTVShowPokemonFanClubOpinions
-DoTVShowPokemonFanClubOpinions: @ 80C1B08
- push {r4-r6,lr}
- ldr r0, _080C1B30 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C1B34 @ =gSaveBlock1 + 0x2738
- adds r4, r0, r1
- ldr r1, _080C1B38 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, _080C1B3C @ =gUnknown_020387E8
- ldrb r5, [r6]
- cmp r5, 0x3
- bgt _080C1B40
- cmp r5, 0x1
- bge _080C1B88
- cmp r5, 0
- beq _080C1B46
- b _080C1BD6
- .align 2, 0
-_080C1B30: .4byte gSpecialVar_0x8004
-_080C1B34: .4byte gSaveBlock1 + 0x2738
-_080C1B38: .4byte gScriptResult
-_080C1B3C: .4byte gUnknown_020387E8
-_080C1B40:
- cmp r5, 0x4
- beq _080C1BC0
- b _080C1BD6
-_080C1B46:
- ldr r0, _080C1B78 @ =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl TVShowConvertInternationalString
- ldr r0, _080C1B7C @ =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1B80 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C1B84 @ =gStringVar3
- adds r1, r4, 0
- adds r1, 0x10
- ldrb r2, [r4, 0xE]
- bl TVShowConvertInternationalString
- ldrb r0, [r4, 0x4]
- lsrs r0, 4
- adds r0, 0x1
- strb r0, [r6]
- b _080C1BD6
- .align 2, 0
-_080C1B78: .4byte gStringVar1
-_080C1B7C: .4byte gStringVar2
-_080C1B80: .4byte gSpeciesNames
-_080C1B84: .4byte gStringVar3
-_080C1B88:
- ldr r0, _080C1BB0 @ =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl TVShowConvertInternationalString
- ldr r0, _080C1BB4 @ =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1BB8 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C1BBC @ =gStringVar3
- ldrh r1, [r4, 0x1C]
- bl sub_80EB3FC
- movs r0, 0x4
- strb r0, [r6]
- b _080C1BD6
- .align 2, 0
-_080C1BB0: .4byte gStringVar1
-_080C1BB4: .4byte gStringVar2
-_080C1BB8: .4byte gSpeciesNames
-_080C1BBC: .4byte gStringVar3
-_080C1BC0:
- ldr r0, _080C1BE8 @ =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl TVShowConvertInternationalString
- ldr r0, _080C1BEC @ =gStringVar3
- ldrh r1, [r4, 0x1E]
- bl sub_80EB3FC
- bl TVShowDone
-_080C1BD6:
- ldr r0, _080C1BF0 @ =gTVFanClubOpinionsTextGroup
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1BE8: .4byte gStringVar1
-_080C1BEC: .4byte gStringVar3
-_080C1BF0: .4byte gTVFanClubOpinionsTextGroup
- thumb_func_end DoTVShowPokemonFanClubOpinions
-
- thumb_func_start nullsub_22
-nullsub_22: @ 80C1BF4
- bx lr
- thumb_func_end nullsub_22
-
-.section .text_80C1C5C
-
- thumb_func_start DoTVShowInSearchOfTrainers
-DoTVShowInSearchOfTrainers: @ 80C1C5C
- push {r4-r7,lr}
- ldr r0, _080C1C7C @ =gScriptResult
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080C1C80 @ =gUnknown_020387E8
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x8
- bls _080C1C70
- b _080C1DF8
-_080C1C70:
- lsls r0, r7, 2
- ldr r1, _080C1C84 @ =_080C1C88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080C1C7C: .4byte gScriptResult
-_080C1C80: .4byte gUnknown_020387E8
-_080C1C84: .4byte _080C1C88
- .align 2, 0
-_080C1C88:
- .4byte _080C1CAC
- .4byte _080C1CF0
- .4byte _080C1CF6
- .4byte _080C1D44
- .4byte _080C1DB0
- .4byte _080C1DB0
- .4byte _080C1DB0
- .4byte _080C1DB0
- .4byte _080C1DB6
-_080C1CAC:
- ldr r0, _080C1CD0 @ =gStringVar1
- ldr r4, _080C1CD4 @ =gSaveBlock1
- ldr r2, _080C1CD8 @ =0x00002b18
- adds r1, r4, r2
- ldrb r1, [r1]
- movs r2, 0
- bl sub_80FBFB4
- ldr r0, _080C1CDC @ =0x00002b19
- adds r4, r0
- ldrb r0, [r4]
- cmp r0, 0x1
- bls _080C1CE4
- ldr r1, _080C1CE0 @ =gUnknown_020387E8
- movs r0, 0x1
- strb r0, [r1]
- b _080C1DF8
- .align 2, 0
-_080C1CD0: .4byte gStringVar1
-_080C1CD4: .4byte gSaveBlock1
-_080C1CD8: .4byte 0x00002b18
-_080C1CDC: .4byte 0x00002b19
-_080C1CE0: .4byte gUnknown_020387E8
-_080C1CE4:
- ldr r1, _080C1CEC @ =gUnknown_020387E8
- movs r0, 0x2
- strb r0, [r1]
- b _080C1DF8
- .align 2, 0
-_080C1CEC: .4byte gUnknown_020387E8
-_080C1CF0:
- movs r0, 0x2
- strb r0, [r2]
- b _080C1DF8
-_080C1CF6:
- ldr r0, _080C1D0C @ =gSaveBlock1
- ldr r1, _080C1D10 @ =0x00002b1a
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080C1D14
- movs r0, 0x4
- strb r0, [r2]
- b _080C1DF8
- .align 2, 0
-_080C1D0C: .4byte gSaveBlock1
-_080C1D10: .4byte 0x00002b1a
-_080C1D14:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080C1D22
- movs r0, 0x5
- strb r0, [r2]
- b _080C1DF8
-_080C1D22:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080C1D30
- movs r0, 0x6
- strb r0, [r2]
- b _080C1DF8
-_080C1D30:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080C1D3E
- movs r0, 0x7
- strb r0, [r2]
- b _080C1DF8
-_080C1D3E:
- movs r0, 0x3
- strb r0, [r2]
- b _080C1DF8
-_080C1D44:
- ldr r0, _080C1D88 @ =gStringVar1
- ldr r4, _080C1D8C @ =gSaveBlock1
- ldr r2, _080C1D90 @ =0x00002b10
- adds r1, r4, r2
- ldrh r1, [r1]
- movs r6, 0xB
- muls r1, r6
- ldr r5, _080C1D94 @ =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, _080C1D98 @ =gStringVar2
- ldr r2, _080C1D9C @ =0x00002b14
- adds r1, r4, r2
- ldrh r2, [r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _080C1DA0 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, _080C1DA4 @ =gStringVar3
- ldr r1, _080C1DA8 @ =0x00002b12
- adds r4, r1
- ldrh r1, [r4]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldr r1, _080C1DAC @ =gUnknown_020387E8
- movs r0, 0x8
- strb r0, [r1]
- b _080C1DF8
- .align 2, 0
-_080C1D88: .4byte gStringVar1
-_080C1D8C: .4byte gSaveBlock1
-_080C1D90: .4byte 0x00002b10
-_080C1D94: .4byte gSpeciesNames
-_080C1D98: .4byte gStringVar2
-_080C1D9C: .4byte 0x00002b14
-_080C1DA0: .4byte gMoveNames
-_080C1DA4: .4byte gStringVar3
-_080C1DA8: .4byte 0x00002b12
-_080C1DAC: .4byte gUnknown_020387E8
-_080C1DB0:
- movs r0, 0x8
- strb r0, [r2]
- b _080C1DF8
-_080C1DB6:
- ldr r0, _080C1E0C @ =gStringVar1
- ldr r4, _080C1E10 @ =gSaveBlock1
- ldr r2, _080C1E14 @ =0x00002b16
- adds r1, r4, r2
- ldrh r1, [r1]
- bl sub_80EB3FC
- ldr r0, _080C1E18 @ =gStringVar2
- ldr r2, _080C1E1C @ =0x00002b10
- adds r1, r4, r2
- ldrh r1, [r1]
- movs r6, 0xB
- muls r1, r6
- ldr r5, _080C1E20 @ =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, _080C1E24 @ =gStringVar3
- ldr r1, _080C1E28 @ =0x00002b12
- adds r4, r1
- ldrh r1, [r4]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldr r1, _080C1E2C @ =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, _080C1E30 @ =gUnknown_020387E8
- movs r0, 0
- strb r0, [r1]
- bl TakeTVShowInSearchOfTrainersOffTheAir
-_080C1DF8:
- ldr r0, _080C1E34 @ =gTVGabbyAndTyTextGroup
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1E0C: .4byte gStringVar1
-_080C1E10: .4byte gSaveBlock1
-_080C1E14: .4byte 0x00002b16
-_080C1E18: .4byte gStringVar2
-_080C1E1C: .4byte 0x00002b10
-_080C1E20: .4byte gSpeciesNames
-_080C1E24: .4byte gStringVar3
-_080C1E28: .4byte 0x00002b12
-_080C1E2C: .4byte gScriptResult
-_080C1E30: .4byte gUnknown_020387E8
-_080C1E34: .4byte gTVGabbyAndTyTextGroup
- thumb_func_end DoTVShowInSearchOfTrainers
-
- thumb_func_start DoTVShowPokemonAngler
-DoTVShowPokemonAngler: @ 80C1E38
- push {r4,r5,lr}
- ldr r0, _080C1E5C @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C1E60 @ =gSaveBlock1 + 0x2738
- adds r4, r0, r1
- ldr r0, _080C1E64 @ =gScriptResult
- movs r1, 0
- strh r1, [r0]
- ldrb r0, [r4, 0x2]
- ldrb r2, [r4, 0x3]
- cmp r0, r2
- bcs _080C1E6C
- ldr r0, _080C1E68 @ =gUnknown_020387E8
- strb r1, [r0]
- b _080C1E74
- .align 2, 0
-_080C1E5C: .4byte gSpecialVar_0x8004
-_080C1E60: .4byte gSaveBlock1 + 0x2738
-_080C1E64: .4byte gScriptResult
-_080C1E68: .4byte gUnknown_020387E8
-_080C1E6C:
- ldr r1, _080C1E80 @ =gUnknown_020387E8
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r1, 0
-_080C1E74:
- ldrb r5, [r0]
- cmp r5, 0
- beq _080C1E84
- cmp r5, 0x1
- beq _080C1EBC
- b _080C1EE4
- .align 2, 0
-_080C1E80: .4byte gUnknown_020387E8
-_080C1E84:
- ldr r0, _080C1EB0 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x6]
- bl TVShowConvertInternationalString
- ldr r0, _080C1EB4 @ =gStringVar2
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1EB8 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r4, 0x3]
- movs r0, 0x2
- bl sub_80BF088
- bl TVShowDone
- b _080C1EE4
- .align 2, 0
-_080C1EB0: .4byte gStringVar1
-_080C1EB4: .4byte gStringVar2
-_080C1EB8: .4byte gSpeciesNames
-_080C1EBC:
- ldr r0, _080C1EF8 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x6]
- bl TVShowConvertInternationalString
- ldr r0, _080C1EFC @ =gStringVar2
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1F00 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80BF088
- bl TVShowDone
-_080C1EE4:
- ldr r0, _080C1F04 @ =gTVFishingGuruAdviceTextGroup
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1EF8: .4byte gStringVar1
-_080C1EFC: .4byte gStringVar2
-_080C1F00: .4byte gSpeciesNames
-_080C1F04: .4byte gTVFishingGuruAdviceTextGroup
- thumb_func_end DoTVShowPokemonAngler
-
- thumb_func_start DoTVShowTheWorldOfMasters
-DoTVShowTheWorldOfMasters: @ 80C1F08
- push {r4-r6,lr}
- ldr r0, _080C1F30 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _080C1F34 @ =gSaveBlock1 + 0x2738
- adds r4, r0, r1
- ldr r1, _080C1F38 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, _080C1F3C @ =gUnknown_020387E8
- ldrb r5, [r6]
- cmp r5, 0x1
- beq _080C1F6C
- cmp r5, 0x1
- bgt _080C1F40
- cmp r5, 0
- beq _080C1F46
- b _080C1FB6
- .align 2, 0
-_080C1F30: .4byte gSpecialVar_0x8004
-_080C1F34: .4byte gSaveBlock1 + 0x2738
-_080C1F38: .4byte gScriptResult
-_080C1F3C: .4byte gUnknown_020387E8
-_080C1F40:
- cmp r5, 0x2
- beq _080C1F8C
- b _080C1FB6
-_080C1F46:
- ldr r0, _080C1F68 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xB]
- bl TVShowConvertInternationalString
- ldrh r1, [r4, 0x6]
- movs r0, 0x1
- bl sub_80BF088
- ldrh r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80BF088
- movs r0, 0x1
- strb r0, [r6]
- b _080C1FB6
- .align 2, 0
-_080C1F68: .4byte gStringVar1
-_080C1F6C:
- ldr r0, _080C1F84 @ =gStringVar1
- ldrh r2, [r4, 0x8]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1F88 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- movs r0, 0x2
- strb r0, [r6]
- b _080C1FB6
- .align 2, 0
-_080C1F84: .4byte gStringVar1
-_080C1F88: .4byte gSpeciesNames
-_080C1F8C:
- ldr r0, _080C1FC8 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xB]
- bl TVShowConvertInternationalString
- ldr r0, _080C1FCC @ =gStringVar2
- ldrb r1, [r4, 0xA]
- movs r2, 0
- bl sub_80FBFB4
- ldr r0, _080C1FD0 @ =gStringVar3
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _080C1FD4 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080C1FB6:
- ldr r0, _080C1FD8 @ =gTVWorldOfMastersTextGroup
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl ShowFieldMessage
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080C1FC8: .4byte gStringVar1
-_080C1FCC: .4byte gStringVar2
-_080C1FD0: .4byte gStringVar3
-_080C1FD4: .4byte gSpeciesNames
-_080C1FD8: .4byte gTVWorldOfMastersTextGroup
- thumb_func_end DoTVShowTheWorldOfMasters
-
-
.align 2, 0 @ Don't pad with nop.
diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc
index 19f9af2eb..6125c4871 100644
--- a/data/scripts/maps/SlateportCity.inc
+++ b/data/scripts/maps/SlateportCity.inc
@@ -4,11 +4,11 @@ SlateportCity_MapScripts:: @ 814BA36
SlateportCity_MapScript1_14BA3C:: @ 814BA3C
.ifdef SAPPHIRE
- setvar 0x4010, 118
- setvar 0x4011, 117
+ setvar 0x4010, MAP_OBJ_GFX_AQUA_MEMBER_F
+ setvar 0x4011, MAP_OBJ_GFX_AQUA_MEMBER_M
.else
- setvar 0x4010, 120
- setvar 0x4011, 119
+ setvar 0x4010, MAP_OBJ_GFX_MAGMA_MEMBER_F
+ setvar 0x4011, MAP_OBJ_GFX_MAGMA_MEMBER_M
.endif
setvar 0x40aa, 0
call SlateportCity_EventScript_14BA5C
diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
index 0bfeb4f5a..e84f8ccc6 100644
--- a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
+++ b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
@@ -4,11 +4,11 @@ SlateportCity_OceanicMuseum_1F_MapScripts:: @ 8155ACA
SlateportCity_OceanicMuseum_1F_MapScript1_155AD0:: @ 8155AD0
.ifdef SAPPHIRE
- setvar 0x4010, 118
- setvar 0x4011, 117
+ setvar 0x4010, MAP_OBJ_GFX_AQUA_MEMBER_F
+ setvar 0x4011, MAP_OBJ_GFX_AQUA_MEMBER_M
.else
- setvar 0x4010, 120
- setvar 0x4011, 119
+ setvar 0x4010, MAP_OBJ_GFX_MAGMA_MEMBER_F
+ setvar 0x4011, MAP_OBJ_GFX_MAGMA_MEMBER_M
.endif
end
diff --git a/data/specials.inc b/data/specials.inc
index bac45b91b..dd12775f5 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -187,7 +187,7 @@ gSpecials::
.4byte sp0B8_daycare
.4byte sp0B9_daycare_relationship_comment
.4byte sub_8042328
- .4byte daycare_send
+ .4byte Daycare_SendPokemon_Special
.4byte ChooseSendDaycareMon
.4byte ShowDaycareLevelMenu
.4byte sub_80417B8
diff --git a/include/asm.inc.h b/include/asm.inc.h
index 62a8ac1cc..3db79b128 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -31,7 +31,7 @@ void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
// src/daycare.o
-u8 daycare_count_pokemon(u8 *);
+u8 Daycare_CountPokemon(struct BoxPokemon *);
// asm/daycare.o
void sub_8041324(struct BoxPokemon *, void *);
@@ -288,12 +288,12 @@ void sub_80BEA50(u16);
void sub_80BEA5C(u16);
bool8 GetPriceReduction(u8);
void sub_80BEE84(u16);
-u8 sub_80BF0B8(u32);
+size_t sub_80BF0B8(int);
void sub_80BF478(void);
u16 sub_80BF674(u16 species);
s8 sub_80BF720(TVShow *);
-u8 sub_80BF77C(u32);
-void sub_80BFD44(void *, u32, u8);
+bool8 sub_80BF77C(u16);
+void sub_80BFD44(u8 *, u32, u8);
void sub_80C0514(void *, u32, u8);
// src/tv.o
@@ -328,7 +328,7 @@ void sub_80C8F34(u8);
// asm/easy_chat.o
void InitEasyChatPhrases(void);
u8* sub_80EB3FC(u8 *, u16);
-u8 ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16);
+u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16);
// asm/pokenav.o
void sub_80EBA5C(void);
@@ -422,6 +422,9 @@ void sub_8134AC0(void *);
// src/player_pc.o
void NewGameInitPCItems(void);
+// asm/hall_of_fame.o
+void sub_8143648(u16 paletteTag, u8 arg1);
+
// src/diploma.o
void sub_8145D88(void);
diff --git a/include/battle.h b/include/battle.h
index f05c7369d..be474b59f 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -124,17 +124,22 @@ struct BattleStruct /* 0x2000000 */
struct UnknownStruct4
{
- u8 filler0[0x3];
- u16 unk4;
- u16 unk6;
- u8 unk8;
- u8 unk9;
- u8 fillerA[0x9];
- u8 taunt:4;
- u8 unkC:4;
- u8 fillerD[0x2];
- u8 unk16;
- u8 filler17[0x4];
+ /*0x00*/ u8 filler0[0x3];
+ /*0x04*/ u16 unk4;
+ /*0x06*/ u16 unk6;
+ /*0x08*/ u8 unk8;
+ /*0x09*/ u8 unk9;
+ /*0x0A*/ u8 unkA;
+ u8 fillerB[4];
+ u8 unkF_0:4;
+ u8 unkF_4:4;
+ u8 filler10[3];
+ /*0x13*/ u8 taunt:4;
+ /*0x13*/ u8 unkC:4;
+ /*0x14*/ u8 unk14;
+ /*0x15*/ u8 unk15;
+ /*0x16*/ u8 unk16;
+ /*0x17*/ u8 filler17[0x4];
};
extern struct UnknownStruct1 unk_2016A00;
diff --git a/include/contest_painting.h b/include/contest_painting.h
index 896aa299b..a67748d02 100644
--- a/include/contest_painting.h
+++ b/include/contest_painting.h
@@ -8,6 +8,14 @@
enum
{
+ NORMAL_RANK,
+ SUPER_RANK,
+ HYPER_RANK,
+ MASTER_RANK,
+};
+
+enum
+{
CONTEST_COOL,
CONTEST_BEAUTY,
CONTEST_CUTE,
diff --git a/include/decoration.h b/include/decoration.h
index 4bad93d1f..d041a8007 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -3,14 +3,17 @@
struct Decoration
{
- u8 id;
- u8 name[16];
- u8 decor_field_11;
- u8 decor_field_12;
- u8 decor_field_13;
- u16 price;
- u8 *description;
- void *tiles;
+ /*0x00*/ u8 id;
+ /*0x01*/ u8 name[16];
+ /*0x11*/ u8 decor_field_11;
+ /*0x12*/ u8 decor_field_12;
+ /*0x13*/ u8 decor_field_13;
+ /*0x14*/ u16 price;
+ /*0x18*/ u8 *description;
+ /*0x1c*/ u16 *tiles;
};
+extern struct Decoration gDecorations[0x77];
+extern void sub_80FF394(u16 unkr0, u16 unkr1, u16 unkr2);
+
#endif // GUARD_DECORATION_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index ee5ac4138..dca6b80c2 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -28,5 +28,6 @@ enum {
u16 sub_80EB72C(u16 group);
+void sub_80EB6FC(u16 *, u16);
#endif // GUARD_EASYCHAT_H
diff --git a/include/flags.h b/include/flags.h
index 56325dea6..0e408a833 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -51,6 +51,8 @@
#define SYS_BRAILLE_WAIT 0x851
#define SYS_BRAILLE_FLY 0x852
+#define SYS_TV_LATI 0x85D
+
#define SYS_SHOAL_ITEM 0x85F
#define SYS_B_DASH 0x860 // got Running Shoes
#define SYS_CTRL_OBJ_DELETE 0x861
@@ -61,3 +63,5 @@
#define SPECIAL_FLAG_1 0x4001
#endif // GUARD_FLAGS_H
+
+bool8 FlagGet(u16 flag);
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 508d7e4ed..0b72bbec5 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -104,7 +104,7 @@ struct CoordEvent
struct BgEvent
{
- s16 x, y;
+ u16 x, y;
u8 unk4;
u8 kind;
// 0x2 padding for the union beginning.
@@ -119,7 +119,7 @@ struct BgEvent
} hiddenItem;
// secret base type
- u16 secretBaseId;
+ u32 secretBaseId;
} bgUnion;
};
diff --git a/include/global.h b/include/global.h
index 4cbbef5cc..34946c895 100644
--- a/include/global.h
+++ b/include/global.h
@@ -94,23 +94,24 @@ struct UCoords16
struct SecretBaseRecord
{
- u8 sbr_field_0; // ID?
- u8 sbr_field_1_0:4;
- u8 gender:1;
- u8 sbr_field_1_5:1;
- u8 sbr_field_2[7]; // 0xFF bytes?
- u8 trainerId[4]; // byte 0 is used for determining trainer class
- u16 sbr_field_e;
- u8 sbr_field_10;
- u8 sbr_field_11;
- u8 decorations[16];
- u8 sbr_field_22[16];
- u32 partyPersonality[6];
- u16 partyMoves[6 * 4];
- u16 partySpecies[6];
- u16 partyHeldItems[6];
- u8 partyLevels[6];
- u8 partyEVs[6];
+ /*0x1A08*/ u8 sbr_field_0; // ID?
+ /*0x1A09*/ u8 sbr_field_1_0:4;
+ /*0x1A09*/ u8 gender:1;
+ /*0x1A09*/ u8 sbr_field_1_5:1;
+ /*0x1A09*/ u8 sbr_field_1_6:2;
+ /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes?
+ /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
+ /*0x1A16*/ u16 sbr_field_e;
+ /*0x1A18*/ u8 sbr_field_10;
+ /*0x1A19*/ u8 sbr_field_11;
+ /*0x1A1A*/ u8 decorations[16];
+ /*0x1A2A*/ u8 decorationPos[16];
+ /*0x1A3A*/ u32 partyPersonality[6];
+ /*0x1A54*/ u16 partyMoves[6 * 4];
+ /*0x1A84*/ u16 partySpecies[6];
+ /*0x1A90*/ u16 partyHeldItems[6];
+ /*0x1A9C*/ u8 partyLevels[6];
+ /*0x1AA2*/ u8 partyEVs[6];
};
#include "game_stat.h"
@@ -193,24 +194,60 @@ struct EasyChatPair
struct TVShowCommon {
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
+ /*0x02*/ u8 pad02[20];
+ /*0x16*/ u16 var16[3];
+ /*0x1C*/ u8 srcTrainerId3Lo;
+ /*0x1D*/ u8 srcTrainerId3Hi;
+ /*0x1E*/ u8 srcTrainerId2Lo;
+ /*0x1F*/ u8 srcTrainerId2Hi;
+ /*0x20*/ u8 srcTrainerIdLo;
+ /*0x21*/ u8 srcTrainerIdHi;
+ /*0x22*/ u8 trainerIdLo;
+ /*0x23*/ u8 trainerIdHi;
+};
+
+struct TVShowPokemonToday {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 language2;
+ /*0x04*/ u8 nickname[11];
+ /*0x0F*/ u8 ball;
+ /*0x10*/ u16 species;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 playerName[8];
+};
+
+
+struct TVShowPokemonTodayFailed {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 pad03[9];
+ /*0x0c*/ u16 species;
+ /*0x0e*/ u16 species2;
+ /*0x10*/ u8 var10;
+ /*0x11*/ u8 var11;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 playerName[8];
};
struct TVShowFanClubLetter {
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 species;
- u8 pad04[12];
+ /*0x04*/ u16 pad04[6];
/*0x10*/ u8 playerName[8];
- /*0x18*/ u8 var18;
+ /*0x18*/ u8 language;
};
struct TVShowRecentHappenings {
/*0x00*/ u8 var00;
/*0x01*/ u8 var01;
/*0x02*/ u16 var02;
- u8 pad04[12];
- /*0x10*/ u8 var10[8];
- /*0x18*/ u8 var18;
+ /*0x04*/ u16 var04[6];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
u8 pad19[10];
};
@@ -220,11 +257,13 @@ struct TVShowFanclubOpinions {
/*0x02*/ u16 var02;
/*0x04*/ u8 var04A:4;
u8 var04B:4;
- /*0x04*/ u8 var05[8];
- /*0x0D*/ u8 var0D;
+ /*0x05*/ u8 playerName[8];
+ /*0x0D*/ u8 language;
/*0x0E*/ u8 var0E;
/*0x0F*/ u8 var0F;
/*0x10*/ u8 var10[8];
+ /*0x18*/ u16 var18[2];
+ /*0x1C*/ u16 var1C[4];
};
struct TVShowNameRaterShow {
@@ -237,7 +276,7 @@ struct TVShowNameRaterShow {
/*0x1B*/ u8 random2;
/*0x1C*/ u16 var1C;
/*0x1E*/ u8 language;
- /*0x1F*/ u8 var1F;
+ /*0x1F*/ u8 pokemonNameLanguage;
};
struct TVShowMassOutbreak {
@@ -255,10 +294,77 @@ struct TVShowMassOutbreak {
/*0x14*/ u8 level;
/*0x15*/ u8 var15;
/*0x16*/ u16 var16;
- /*0x18*/ u8 var18;
+ /*0x18*/ u8 language;
u8 pad19[11];
};
+struct TVShowPokemonAngler {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u8 var02;
+ /*0x03*/ u8 var03;
+ /*0x04*/ u16 var04;
+ /*0x06*/ u8 language;
+ u8 pad07[12];
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowWorldOfMasters {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u16 var04;
+ /*0x06*/ u16 var06;
+ /*0x08*/ u16 var08;
+ /*0x0a*/ u8 var0a;
+ /*0x0b*/ u8 language;
+ u8 pad0c[7];
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowSmartShopper {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u8 priceReduced;
+ /*0x03*/ u8 language;
+ /*0x04*/ u8 pad04[2];
+ /*0x06*/ u16 itemIds[3];
+ /*0x0C*/ u16 itemAmounts[3];
+ /*0x12*/ u8 shopLocation;
+ /*0x13*/ u8 playerName[8];
+};
+
+struct TVShowBravoTrainerPokemonProfiles {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u16 species;
+ /*0x04*/ u16 var04[2];
+ /*0x08*/ u8 pokemonNickname[11];
+ /*0x13*/ u8 contestCategory:3;
+ /*0x13*/ u8 contestRank:2;
+ /*0x13*/ u8 var13_5:2;
+ /*0x13*/ u8 var13_7:1;
+ /*0x14*/ u16 var14;
+ /*0x16*/ u8 playerName[8];
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 var1f;
+};
+
+struct TVShowBravoTrainerBattleTowerSpotlight {
+ /*0x00*/ u8 var00;
+ /*0x01*/ u8 var01;
+ /*0x02*/ u8 trainerName[8];
+ /*0x0A*/ u16 species;
+ /*0x0C*/ u8 pokemonName[8];
+ /*0x14*/ u16 winningMove;
+ /*0x16*/ u16 var16;
+ /*0x18*/ u16 var18[1];
+ /*0x1A*/ u8 btLevel;
+ /*0x1B*/ u8 var1b;
+ /*0x1C*/ u8 var1c;
+ /*0x1D*/ u8 language;
+};
+
typedef union TVShow {
struct TVShowCommon common;
struct TVShowFanClubLetter fanclubLetter;
@@ -266,6 +372,13 @@ typedef union TVShow {
struct TVShowFanclubOpinions fanclubOpinions;
struct TVShowNameRaterShow nameRaterShow;
struct TVShowMassOutbreak massOutbreak;
+ struct TVShowPokemonAngler pokemonAngler;
+ struct TVShowWorldOfMasters worldOfMasters;
+ struct TVShowSmartShopper smartshopperShow;
+ struct TVShowBravoTrainerPokemonProfiles bravoTrainer;
+ struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower;
+ struct TVShowPokemonToday pokemonToday;
+ struct TVShowPokemonTodayFailed pokemonTodayFailed;
} TVShow;
struct MailStruct
@@ -325,6 +438,36 @@ typedef union SB_Struct {
} SB_Struct;
// size is 0x198
+struct SaveTVStruct {
+ TVShow shows[24];
+ TVShow unknown_2A98;
+};
+
+struct UnknownSaveStruct2ABC {
+ u8 val0;
+ u8 val1;
+ u16 val2;
+};
+
+struct GabbyAndTyData {
+ u16 mon1;
+ u16 mon2;
+ u16 move1;
+ u16 move2;
+ u8 mapnum;
+ u8 val9;
+ u8 valA_0:1;
+ u8 valA_1:1;
+ u8 valA_2:1;
+ u8 valA_3:1;
+ u8 valA_4:4;
+ u8 valB;
+};
+
+struct RecordMixing_UnknownStruct {
+ u8 data[0x38];
+};
+
struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
@@ -374,8 +517,8 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2704*/ u8 decorDoll[40];
/*0x272C*/ u8 decorCushion[10];
/*0x2736*/ u8 padding_2736[2];
- /*0x2738*/ TVShow tvShows[24];
- /*0x2A98*/ u8 filler_2A98[0x64];
+ /*0x2738*/ struct SaveTVStruct tvShows;
+ /*0x2ABC*/ struct UnknownSaveStruct2ABC unknown_2ABC[16];
/*0x2AFC*/ u16 outbreakPokemonSpecies;
/*0x2AFE*/ u8 outbreakLocationMapNum;
/*0x2AFF*/ u8 outbreakLocationMapGroup;
@@ -386,7 +529,7 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2B0C*/ u8 outbreakUnk4;
/*0x2B0D*/ u8 outbreakPokemonProbability;
/*0x2B0E*/ u16 outbreakUnk5;
- /*0x2B10*/ u8 filler_2B0E[0xC];
+ /*0x2B18*/ struct GabbyAndTyData gabbyAndTyData;
/*0x2B1C*/ u16 unk2B1C[6];
/*0x2B28*/ u16 unk2B28[6];
/*0x2B34*/ u16 unk2B34[6];
@@ -399,9 +542,9 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2DFC*/ u8 filler_2DFC[0x8];
/*0x2E04*/ SB_Struct sbStruct;
- /*0x2F9C*/ u8 filler_2F9C[0xA0];
- /*0x303C*/ u8 filler_303C[0x38];
- /*0x3074*/ u8 filler_3074[0x42];
+ /*0x2F9C*/ struct BoxPokemon daycareData[2];
+ /*0x303C*/ struct RecordMixing_UnknownStruct filler_303C[2];
+ /*0x30AC*/ u8 filler_30AC[0xA];
/*0x30B6*/ u8 filler_30B6;
/*0x30B7*/ u8 filler_30B7[1];
/*0x30B8*/ u8 linkBattleRecords[5][16];
@@ -440,7 +583,11 @@ struct Pokedex
struct SaveBlock2_Sub
{
- /*0x0000, 0x00A8*/ u8 filler_000[0x4AE];
+ /*0x0000, 0x00A4*/ u8 filler_000[0x3D8];
+ /*0x03D8, 0x0480*/ u16 var_480;
+ /*0x03DA, 0x0482*/ u16 var_482;
+ /*0x03DC, 0x0484*/ u8 filler_3DC[0xD1];
+ /*0x04AD, 0x0555*/ u8 var_4AD;
/*0x04AE, 0x0556*/ u8 var_4AE;
/*0x04AF, 0x0557*/ u8 var_4AF;
/*0x04B0, 0x0558*/ u16 var_4B0;
@@ -450,7 +597,9 @@ struct SaveBlock2_Sub
/*0x04B8, 0x0560*/ u8 filler_4B8[0x10];
/*0x04C8, 0x0570*/ u16 var_4C8;
/*0x04CA, 0x0572*/ u16 var_4CA;
- /*0x04CC, 0x0574*/ u8 filler_4CC[0x31C];
+ /*0x04CC, 0x0574*/ u8 filler_4CC[4];
+ /*0x04D0, 0x0578*/ u8 var_4D0;
+ /*0x04D1, 0x0579*/ u8 filler_4D1[0x317];
};
struct SaveBlock2 /* 0x02024EA4 */
diff --git a/include/item.h b/include/item.h
index cc917dbc8..47af11940 100644
--- a/include/item.h
+++ b/include/item.h
@@ -1,8 +1,27 @@
#ifndef GUARD_ITEM_H
#define GUARD_ITEM_H
+
typedef void (*ItemUseFunc)(u8);
+struct Item
+{
+ u8 name[14];
+ u16 itemId;
+ u16 price;
+ u8 holdEffect;
+ u8 holdEffectParam;
+ u8 *description;
+ u8 importance;
+ u8 unk19;
+ u8 pocket;
+ u8 type;
+ ItemUseFunc fieldUseFunc;
+ u8 battleUsage;
+ ItemUseFunc battleUseFunc;
+ u8 secondaryId;
+};
+
void CopyItemName(u16 itemId, u8 *string);
bool8 IsBagPocketNonEmpty(u8 pocket);
bool8 CheckBagHasItem(u16 itemId, u16 count);
diff --git a/include/pokedex.h b/include/pokedex.h
index 5dd44cd2f..61597981b 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -135,7 +135,7 @@ void sub_8090A3C(u8);
void sub_8090C68(void);
u8 *GetPokemonCategory(u16);
-bool8 sub_8090D90(u16, u8);
+s8 sub_8090D90(u16, u8);
u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8);
bool8 sub_8090FC0(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index ae02de8ca..15a028d6e 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -462,4 +462,5 @@ void MonRestorePP(struct Pokemon *);
u8 *sub_803F378(u16 itemId);
+u16 NationalPokedexNumToSpecies(u16 nationalNum);
#endif // GUARD_POKEMON_H
diff --git a/include/record_mixing.h b/include/record_mixing.h
index 39cf5bd43..72a089ca1 100644
--- a/include/record_mixing.h
+++ b/include/record_mixing.h
@@ -4,16 +4,16 @@
#include <stddef.h>
void sub_80B929C(void);
-void sub_80B92AC(void);
-void sub_80B93B0(u32 a);
-void sub_80B9450(u8 taskId);
-void sub_80B9484(u8 taskId);
+void RecordMixing_PrepareExchangePacket(void);
+void RecordMixing_ReceiveExchangePacket(u32 a);
+void Task_RecordMixing_SoundEffect(u8 taskId);
+void Task_RecordMixing_Main(u8 taskId);
void sub_80B95F0(u8 taskId);
-void sub_80B97DC(u8 taskId);
-void Task_CopyRecvBuffer(u8 taskId);
+void Task_RecordMixing_SendPacket(u8 taskId);
+void Task_RecordMixing_CopyReceiveBuffer(u8 taskId);
void sub_80B99B4(u8 taskId);
-void sub_80B99E8(u8 taskId);
-void sub_80B9A1C(u8 taskId);
+void Task_RecordMixing_ReceivePacket(u8 taskId);
+void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId);
void *LoadPtrFromTaskData(u16 *ptr);
void StorePtrInTaskData(void *ptr, u16 *data);
u8 GetMultiplayerId_(void);
diff --git a/include/tv.h b/include/tv.h
new file mode 100644
index 000000000..b1ed61a82
--- /dev/null
+++ b/include/tv.h
@@ -0,0 +1,23 @@
+//
+// Created by Scott Norton on 5/18/17.
+//
+
+#ifndef POKERUBY_TV_H
+#define POKERUBY_TV_H
+enum
+{
+ TVSHOW_FAN_CLUB_LETTER = 1,
+ TVSHOW_RECENT_HAPPENINGS,
+ TVSHOW_PKMN_FAN_CLUB_OPINIONS,
+ TVSHOW_UNKN_SHOWTYPE_04,
+ TVSHOW_NAME_RATER_SHOW,
+ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE,
+ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE,
+ TVSHOW_POKEMON_TODAY_CAUGHT = 21,
+ TVSHOW_SMART_SHOPPER,
+ TVSHOW_POKEMON_TODAY_FAILED,
+ TVSHOW_FISHING_ADVICE,
+ TVSHOW_WORLD_OF_MASTERS,
+ TVSHOW_MASS_OUTBREAK = 41,
+};
+#endif //POKERUBY_TV_H
diff --git a/include/vars.h b/include/vars.h
index 55df0a5e3..cb5bb3296 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -1,6 +1,8 @@
#ifndef GUARD_VARS_H
#define GUARD_VARS_H
+#define VAR_0x4003 0x4003
+#define VAR_0x401F 0x401F
#define VAR_RECYCLE_GOODS 0x4020
#define VAR_REPEL_STEP_COUNT 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
@@ -26,6 +28,13 @@
#define VAR_BARBOACH_SIZE_RECORD 0x404F
-#define VAR_PORTHOLE 0x40B4
+#define VAR_0x4054 0x4054
+
+#define VAR_0x4089 0x4089
+#define VAR_0x4097 0x4097
+
+#define VAR_PORTHOLE 0x40B4
+
+#define VAR_0x40BC 0x40BC
#endif // GUARD_VARS_H
diff --git a/ld_script.txt b/ld_script.txt
index 4bd488346..dac5fb782 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -170,17 +170,15 @@ SECTIONS {
src/record_mixing.o(.text);
asm/record_mixing.o(.text);
asm/sound_check_menu.o(.text);
- asm/secret_base.o(.text);
src/secret_base.o(.text);
asm/secret_base.o(.text_80BC1D0);
+ src/tv.o(.text);
asm/tv.o(.text);
- src/tv.o(.text);
+ src/tv.o(.text_a);
asm/tv.o(.text_80BE8EC);
- src/tv.o(.text_b);
- asm/tv.o(.text_80BF544);
+ src/tv.o(.dotvshow);
+ asm/tv.o(.dotvshow);
src/tv.o(.text_c);
- asm/tv.o(.text_80C1C5C);
- src/tv.o(.text_d);
asm/contest_link_80C2020.o(.text);
src/script_pokemon_util_80C4BF0.o(.text);
src/field_poison.o(.text);
diff --git a/src/battle_2.c b/src/battle_2.c
index a9f0fd57a..f2ce737d6 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "asm.h"
#include "battle.h"
#include "main.h"
#include "text.h"
@@ -10,6 +11,16 @@
#include "link.h"
#include "name_string_util.h"
#include "battle_setup.h"
+#include "rng.h"
+#include "sound.h"
+#include "songs.h"
+#include "trig.h"
+#include "abilities.h"
+
+struct MonCoords
+{
+ u8 x, y;
+};
struct UnknownStruct5
{
@@ -55,35 +66,198 @@ struct UnknownPokemonStruct2
/*0x1D*/ u8 language;
};
+struct UnknownStruct9
+{
+ u8 unk0;
+ u16 unk2;
+};
+
+struct UnknownStruct10
+{
+ u8 unk0_0:1;
+ u8 unk0_1:1;
+ u8 unk0_2:1;
+ u8 filler1[1];
+ u8 unk2;
+ u8 unk3;
+ u8 filler4[8];
+};
+
+struct UnknownStruct11
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5_0:1;
+ u8 unk5_1:1;
+ u16 unk6;
+ u8 unk8[10];
+ u8 unk12;
+ u8 unk13;
+ u8 unk14[10];
+ u8 filler1E[2];
+ u16 unk20;
+ u16 unk22;
+ u16 unk24;
+ u16 unk26;
+ u16 unk28;
+ u8 unk2A[10];
+ u8 filler34[2];
+ u8 unk36[10];
+};
+
+struct UnknownStruct12
+{
+ u32 unk0;
+ u8 filler4[0x54];
+};
+
+struct UnknownStruct13
+{
+ u32 unk0_0:1;
+ u32 unk0_1:1;
+ u32 unk0_2:1;
+ u32 unk0_3:1;
+ u32 unk0_4:1;
+ u32 unk0_5:1;
+ u32 unk0_6:1;
+ u32 unk0_7:1;
+ u32 unk1_0:1;
+ u32 unk1_1:1;
+ u32 unk1_2:1;
+ u32 unk1_3:2;
+ u32 unk1_5:1;
+ u32 unk1_6:1;
+ u32 unk1_7:1;
+ u32 unk2_0:1;
+ u32 unk2_1:1;
+ u32 unk2_2:1;
+ u32 unk2_3:1;
+ u8 filler4[12];
+};
+
extern const struct UnknownStruct5 gUnknown_081F9674;
extern const u8 gUnknown_081F96C8[];
+extern void *const gUnknown_081FAF4C[];
+extern const u16 gUnknown_08D004E0[];
extern const struct Trainer gTrainers[];
extern const u8 gSpeciesNames[][11];
extern const struct BattleMove gBattleMoves[];
+extern const struct MonCoords gMonFrontPicCoords[];
+extern const struct MonCoords gCastformFrontSpriteCoords[];
+extern const struct BaseStats gBaseStats[];
+extern const u32 gBitTable[];
extern u8 ewram[];
#define ewram0 (*(struct UnknownStruct7 *)(ewram + 0x0))
#define ewram4 (*(struct UnknownStruct8 *)(ewram + 0x4))
+#define ewram16000 (ewram[0x16000])
+#define ewram16001 (ewram[0x16001])
+#define ewram16002 (ewram[0x16002])
+#define ewram16003 (ewram[0x16003])
+#define ewram1600C (ewram[0x1600C])
+#define ewram1600E (ewram[0x1600E])
+#define ewram1601B (ewram[0x1601B])
+#define ewram16020 ((u8 *)(ewram + 0x16020))
+#define ewram16056 (ewram[0x16056])
+#define ewram16058 (ewram[0x16058])
+#define ewram16059 (ewram[0x16059])
+#define ewram16078 (ewram[0x16078])
+#define ewram16084 (ewram[0x16084])
+#define ewram16086 (ewram[0x16086])
+#define ewram16087 (ewram[0x16087])
+#define ewram16088 (ewram[0x16088])
+#define ewram16089 (ewram[0x16089])
+#define ewram160A1 (ewram[0x160A1])
+#define ewram160A6 (ewram[0x160A6])
+#define ewram160AC ((u8 *)(ewram + 0x160AC))
+#define ewram160BC ((u16 *)(ewram + 0x160BC)) // hp
+#define ewram160C8 (ewram[0x160C8])
+#define ewram160C9 (ewram[0x160C9])
#define ewram160CB (ewram[0x160CB])
+#define ewram160CC ((u8 *)(ewram + 0x160CC))
+#define ewram160E6 (ewram[0x160E6])
+#define ewram160E8 ((u8 *)(ewram + 0x160E8))
+#define ewram160F0 ((u8 *)(ewram + 0x160F0))
+#define ewram160F9 (ewram[0x160F9])
+#define ewram16100 ((u8 *)(ewram + 0x16100))
+#define ewram16108 ((u8 *)(ewram + 0x16108))
+#define ewram16110 (ewram[0x16110])
+#define ewram16111 (ewram[0x16111])
+#define ewram16113 (ewram[0x16113])
+#define ewram17100 ((u32 *)(ewram + 0x17100))
+#define ewram17130 (ewram[0x17130])
+#define ewram17160 (ewram[0x17160])
+#define ewram17800 ((struct UnknownStruct9 *)(ewram + 0x17800))
+#define ewram17810 ((struct UnknownStruct10 *)(ewram + 0x17810))
#define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000))
extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
+extern u8 gUnknown_02024260[][0x200];
+extern u8 gUnknown_02024A60;
+extern u32 gUnknown_02024A64;
+extern u8 gUnknown_02024A68;
+extern u16 gUnknown_02024A6A[];
+extern u8 gUnknown_02024A7F;
+extern u8 gUnknown_02024A7A[];
+extern struct UnknownStruct12 gUnknown_02024AD0[];
+extern u8 gUnknown_02024BE0[];
+extern u16 gUnknown_02024BE6;
+extern u8 byte_2024C06;
+extern u8 gUnknown_02024C0B;
+extern u8 gUnknown_02024C0C;
+extern u8 gUnknown_02024C0E;
+extern u8 gUnknown_02024C18[];
+extern u16 gUnknown_02024C2C[];
+extern u16 gUnknown_02024C34[];
+extern u16 gUnknown_02024C3C[];
+extern u16 gUnknown_02024C44[];
+extern u16 gUnknown_02024C4C[];
+extern u16 gUnknown_02024C54[];
+extern u8 gUnknown_02024C5C[];
+extern u16 gUnknown_02024C60[];
+extern u32 gUnknown_02024C6C;
+extern u8 gUnknown_02024C70[];
+extern u16 gUnknown_02024C7A[];
+extern u8 gUnknown_02024C80[][12];
+extern u32 gUnknown_02024C98[];
+//extern u8 gUnknown_02024CA8[][0x1C];
+extern u16 gUnknown_02024D18;
+extern u16 gUnknown_02024D1A;
+extern u16 gUnknown_02024D1C;
extern u8 gUnknown_02024D1E[];
extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is.
+extern u8 gUnknown_02024D26;
+extern struct UnknownStruct13 gUnknown_02024D28[];
+extern u8 gUnknown_02024DBC[];
+extern u16 gUnknown_02024DE8;
+extern u8 gUnknown_02024E60[];
+extern u8 gUnknown_02024E64[];
+extern u8 gUnknown_02038470[];
extern u16 gUnknown_030041B0;
extern u16 gUnknown_030041B4;
extern u16 gUnknown_030041B8;
extern struct Window gUnknown_030041D0;
+extern u16 gUnknown_03004200;
extern struct Window gUnknown_03004210;
+extern u16 gUnknown_03004244;
extern struct Window gUnknown_03004250;
extern u16 gUnknown_03004240;
extern u16 gUnknown_03004280;
+extern u32 gUnknown_03004284;
extern u16 gUnknown_03004288;
extern u16 gUnknown_030042A0;
extern u16 gUnknown_030042A4;
extern u16 gUnknown_030042C0;
extern u16 gUnknown_030042C4;
extern MainCallback gUnknown_030042D0;
+extern void (*gUnknown_030042D4)(void);
+extern struct UnknownStruct11 gUnknown_030042E0;
+extern u8 gUnknown_03004324;
+extern void (*gUnknown_03004330[])(void);
+extern u8 gUnknown_03004340[];
extern struct UnknownStruct6 gUnknown_03004DE0;
//extern u16 gUnknown_03004DE0[][0xA0]; // possibly?
extern u16 gBattleTypeFlags;
@@ -92,6 +266,13 @@ extern u8 gReservedSpritePaletteCount;
extern u16 gTrainerBattleOpponent;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
+extern u8 gBattleMonForms[];
+extern u8 gPlayerMonIndex;
+extern u8 gEnemyMonIndex;
+extern u16 gBattleWeather;
+extern u32 gBattleMoveDamage;
+extern struct BattlePokemon gBattleMons[];
+extern u8 gBattleMoveFlags;
extern void sub_800B858(void);
extern void dp12_8087EA4(void);
@@ -106,6 +287,29 @@ extern void sub_800DE30(u8);
extern void sub_800B950(void);
extern u8 battle_load_something();
extern void OpenPartyMenu();
+extern void sub_8089668();
+extern void sub_800D74C();
+extern void sub_804777C(u8);
+extern void sub_8043DFC();
+extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
+extern void dp01_build_cmdbuf_x00_a_b_0(u8 a, u8 b, u8 c);
+extern void dp01_build_cmdbuf_x04_4_4_4(u8 a);
+extern void dp01_build_cmdbuf_x07_7_7_7(u8 a);
+extern void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c);
+extern void dp01_build_cmdbuf_x2E_a(u8 a, u8 b);
+extern void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);
+extern void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c);
+extern void dp01_battle_side_mark_buffer_for_execution();
+extern u8 sub_8090D90();
+extern void sub_800C704(u8, u8, u8);
+extern u8 sub_8018324();
+extern u8 sub_801A02C();
+extern u8 sub_8015DFC();
+extern u8 sub_8016558();
+extern u8 sub_80173A4();
+extern u8 sub_80170DC();
+extern u8 ItemId_GetHoldEffect(u16);
+extern void sub_8094C98();
void sub_800E7F8(void);
void sub_800EC9C(void);
@@ -116,6 +320,40 @@ void sub_800F838(struct Sprite *);
u8 CreateNPCTrainerParty(struct Pokemon *, u16);
void sub_800FCFC(void);
void sub_8010824(void);
+void sub_80101B8(void);
+void c2_081284E0(void);
+void sub_8010278(struct Sprite *);
+void sub_80102AC(struct Sprite *);
+void nullsub_37(struct Sprite *);
+void sub_8010320(struct Sprite *);
+void sub_8010494(struct Sprite *);
+void sub_801053C(struct Sprite *);
+void oac_poke_ally_(struct Sprite *);
+void nullsub_86(struct Sprite *);
+void objc_dp11b_pingpong(struct Sprite *);
+void sub_8010874(void);
+void bc_8012FAC(void);
+void bc_load_battlefield(void);
+void sub_8011384(void);
+void bc_801333C(void);
+void bc_battle_begin_message(void);
+void bc_8013568(void);
+void sub_8011800(void);
+void sub_8011834(void);
+void bc_801362C(void);
+void sub_8011970(void);
+void sub_80119B4(void);
+void sub_8011B00(void);
+void sub_8011E8C(void);
+void sub_8012324(void);
+void sub_8012FBC(u8, u8);
+u8 b_first_side();
+void sub_801365C(u8);
+void sub_801377C(void);
+void sub_80138F0(void);
+void b_cancel_multi_turn_move_maybe(u8);
+void b_std_message();
+void sub_80156DC();
void sub_800E7C4(void)
{
@@ -565,25 +803,42 @@ void sub_800F298(void)
BuildOamBuffer();
switch (gUnknown_02024D1E[0])
{
- case 0:
- if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC())
+ case 0:
+ if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC())
+ {
+ ewram0.unk0 = 1;
+ ewram0.unk1 = 1;
+ sub_800E9EC();
+ sub_800EAAC();
+ SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20);
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 1:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ u8 taskId;
+
+ ResetBlockReceivedFlags();
+ id = 0;
+ if (gBlockRecvBuffer[0][0] == 0x100)
{
- ewram0.unk0 = 1;
- ewram0.unk1 = 1;
- sub_800E9EC();
- sub_800EAAC();
- SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20);
- gUnknown_02024D1E[0]++;
+ if (playerId == 0)
+ gBattleTypeFlags |= 12;
+ else
+ gBattleTypeFlags |= 8;
+ id++;
}
- break;
- case 1:
- if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ if (id == 0)
{
- u8 taskId;
+ s32 i;
- ResetBlockReceivedFlags();
- id = 0;
- if (gBlockRecvBuffer[0][0] == 0x100)
+ for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ {
+ if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0])
+ break;
+ }
+ if (i == MAX_LINK_PLAYERS)
{
if (playerId == 0)
gBattleTypeFlags |= 12;
@@ -593,231 +848,214 @@ void sub_800F298(void)
}
if (id == 0)
{
- s32 i;
-
- for (i = 0; i < MAX_LINK_PLAYERS; i++)
+ while (id < MAX_LINK_PLAYERS)
{
- if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0])
+ if (gBlockRecvBuffer[id][0] == 0x0101 && id != playerId)
+ if (id < playerId)
+ break;
+ if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId)
break;
- }
- if (i == MAX_LINK_PLAYERS)
- {
- if (playerId == 0)
- gBattleTypeFlags |= 12;
- else
- gBattleTypeFlags |= 8;
id++;
}
- if (id == 0)
- {
- while (id < MAX_LINK_PLAYERS)
- {
- if (gBlockRecvBuffer[id][0] == 0x0101 && id != playerId)
- if (id < playerId)
- break;
- if (gBlockRecvBuffer[id][0] > 0x0101 && id != playerId)
- break;
- id++;
- }
- if (id == MAX_LINK_PLAYERS)
- gBattleTypeFlags |= 12;
- else
- gBattleTypeFlags |= 8;
- }
+ if (id == MAX_LINK_PLAYERS)
+ gBattleTypeFlags |= 12;
+ else
+ gBattleTypeFlags |= 8;
+ }
+ }
+ sub_800EB08();
+ memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3);
+ taskId = CreateTask(sub_800DE30, 0);
+ gTasks[taskId].data[1] = 0x10E;
+ gTasks[taskId].data[2] = 0x5A;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 0;
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F;
+ break;
+ case 1:
+ gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F;
+ break;
+ case 2:
+ gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
+ break;
+ case 3:
+ gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
+ break;
}
- sub_800EB08();
- memcpy(ewram1D000, gPlayerParty, sizeof(struct Pokemon) * 3);
- taskId = CreateTask(sub_800DE30, 0);
- gTasks[taskId].data[1] = 0x10E;
- gTasks[taskId].data[2] = 0x5A;
- gTasks[taskId].data[5] = 0;
- gTasks[taskId].data[3] = 0;
- gTasks[taskId].data[4] = 0;
- for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ }
+ ZeroPlayerPartyMons();
+ ZeroEnemyPartyMons();
+ gUnknown_02024D1E[0]++;
+ goto step_2;
+ }
+ break;
+ case 2:
+ step_2:
+ if (sub_8007ECC())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 3:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ {
+ if (id == playerId)
{
switch (gLinkPlayers[id].lp_field_18)
{
- case 0:
- gTasks[taskId].data[3] |= gBlockRecvBuffer[id][1] & 0x3F;
- break;
- case 1:
- gTasks[taskId].data[4] |= gBlockRecvBuffer[id][1] & 0x3F;
- break;
- case 2:
- gTasks[taskId].data[3] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
- break;
- case 3:
- gTasks[taskId].data[4] |= (gBlockRecvBuffer[id][1] & 0x3F) << 6;
- break;
+ case 0:
+ case 3:
+ memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
}
}
- ZeroPlayerPartyMons();
- ZeroEnemyPartyMons();
- gUnknown_02024D1E[0]++;
- goto step_2;
- }
- break;
- case 2:
- step_2:
- if (sub_8007ECC())
- {
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2);
- gUnknown_02024D1E[0]++;
- }
- break;
- case 3:
- if ((GetBlockReceivedStatus() & 0xF) == 0xF)
- {
- ResetBlockReceivedFlags();
- for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ else
{
- if (id == playerId)
+ if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
+ || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
{
switch (gLinkPlayers[id].lp_field_18)
{
- case 0:
- case 3:
- memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
+ case 0:
+ case 3:
+ memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
}
}
else
{
- if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
- || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
- {
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gPlayerParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- }
- }
- else
+ switch (gLinkPlayers[id].lp_field_18)
{
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- case 1:
- case 2:
- memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
- break;
- }
+ case 0:
+ case 3:
+ memcpy(gEnemyParty, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
+ case 1:
+ case 2:
+ memcpy(gEnemyParty + 3, gBlockRecvBuffer[id], sizeof(struct Pokemon) * 2);
+ break;
}
}
}
- gUnknown_02024D1E[0]++;
}
- break;
- case 4:
- if (sub_8007ECC())
- {
- SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon));
- gUnknown_02024D1E[0]++;
- }
- break;
- case 5:
- if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 4:
+ if (sub_8007ECC())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon));
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 5:
+ if ((GetBlockReceivedStatus() & 0xF) == 0xF)
+ {
+ ResetBlockReceivedFlags();
+ for (id = 0; id < MAX_LINK_PLAYERS; id++)
{
- ResetBlockReceivedFlags();
- for (id = 0; id < MAX_LINK_PLAYERS; id++)
+ if (id == playerId)
+ {
+ switch (gLinkPlayers[id].lp_field_18)
+ {
+ case 0:
+ case 3:
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ }
+ }
+ else
{
- if (id == playerId)
+ if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
+ || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
{
switch (gLinkPlayers[id].lp_field_18)
{
- case 0:
- case 3:
- memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
+ case 0:
+ case 3:
+ memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
}
}
else
{
- if ((!(gLinkPlayers[id].lp_field_18 & 1) && !(gLinkPlayers[playerId].lp_field_18 & 1))
- || ((gLinkPlayers[id].lp_field_18 & 1) && (gLinkPlayers[playerId].lp_field_18 & 1)))
- {
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gPlayerParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- case 1:
- case 2:
- memcpy(gPlayerParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- }
- }
- else
+ switch (gLinkPlayers[id].lp_field_18)
{
- switch (gLinkPlayers[id].lp_field_18)
- {
- case 0:
- case 3:
- memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- case 1:
- case 2:
- memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
- break;
- }
+ case 0:
+ case 3:
+ memcpy(gEnemyParty + 2, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
+ case 1:
+ case 2:
+ memcpy(gEnemyParty + 5, gBlockRecvBuffer[id], sizeof(struct Pokemon));
+ break;
}
}
}
+ }
- shedinja_something(&gPlayerParty[0]);
- shedinja_something(&gPlayerParty[1]);
- shedinja_something(&gPlayerParty[2]);
- shedinja_something(&gPlayerParty[3]);
- shedinja_something(&gPlayerParty[4]);
- shedinja_something(&gPlayerParty[5]);
+ shedinja_something(&gPlayerParty[0]);
+ shedinja_something(&gPlayerParty[1]);
+ shedinja_something(&gPlayerParty[2]);
+ shedinja_something(&gPlayerParty[3]);
+ shedinja_something(&gPlayerParty[4]);
+ shedinja_something(&gPlayerParty[5]);
- shedinja_something(&gEnemyParty[0]);
- shedinja_something(&gEnemyParty[1]);
- shedinja_something(&gEnemyParty[2]);
- shedinja_something(&gEnemyParty[3]);
- shedinja_something(&gEnemyParty[4]);
- shedinja_something(&gEnemyParty[5]);
+ shedinja_something(&gEnemyParty[0]);
+ shedinja_something(&gEnemyParty[1]);
+ shedinja_something(&gEnemyParty[2]);
+ shedinja_something(&gEnemyParty[3]);
+ shedinja_something(&gEnemyParty[4]);
+ shedinja_something(&gEnemyParty[5]);
- gUnknown_02024D1E[0]++;
- }
- break;
- case 6:
- sub_800B950();
gUnknown_02024D1E[0]++;
- gUnknown_02024D1E[1] = 0;
- gUnknown_02024D1E[2] = 0;
- break;
- case 7:
- if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0)
+ }
+ break;
+ case 6:
+ sub_800B950();
+ gUnknown_02024D1E[0]++;
+ gUnknown_02024D1E[1] = 0;
+ gUnknown_02024D1E[2] = 0;
+ break;
+ case 7:
+ if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0)
+ {
+ gUnknown_030042D0 = gMain.callback1;
+ gMain.callback1 = sub_8010824;
+ SetMainCallback2(sub_800F808);
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- gUnknown_030042D0 = gMain.callback1;
- gMain.callback1 = sub_8010824;
- SetMainCallback2(sub_800F808);
- if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- {
- gTrainerBattleOpponent = 0x800;
- gBattleTypeFlags |= BATTLE_TYPE_20;
- }
+ gTrainerBattleOpponent = 0x800;
+ gBattleTypeFlags |= BATTLE_TYPE_20;
}
- break;
+ }
+ break;
}
}
@@ -842,42 +1080,42 @@ void sub_800F838(struct Sprite *sprite)
switch (sprite->data0)
{
- case 0:
- sprite->data0++;
- sprite->data1 = 0;
- sprite->data2 = 0x281;
- sprite->data3 = 0;
- sprite->data4 = 1;
- // fall through
- case 1:
- sprite->data4--;
- if (sprite->data4 == 0)
- {
- s32 i;
- s32 r2;
- s32 r0;
+ case 0:
+ sprite->data0++;
+ sprite->data1 = 0;
+ sprite->data2 = 0x281;
+ sprite->data3 = 0;
+ sprite->data4 = 1;
+ // fall through
+ case 1:
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ s32 i;
+ s32 r2;
+ s32 r0;
- sprite->data4 = 2;
- r2 = sprite->data1 + sprite->data3 * 32;
- r0 = sprite->data2 - sprite->data3 * 32;
- for (i = 0; i < 29; i += 2)
- {
- arr[r2 + i] = 0x3D;
- arr[r0 + i] = 0x3D;
- }
- sprite->data3++;
- if (sprite->data3 == 21)
- {
- sprite->data0++;
- sprite->data1 = 32;
- }
+ sprite->data4 = 2;
+ r2 = sprite->data1 + sprite->data3 * 32;
+ r0 = sprite->data2 - sprite->data3 * 32;
+ for (i = 0; i < 29; i += 2)
+ {
+ arr[r2 + i] = 0x3D;
+ arr[r0 + i] = 0x3D;
}
- break;
- case 2:
- sprite->data1--;
- if (sprite->data1 == 20)
- SetMainCallback2(sub_800E7C4);
- break;
+ sprite->data3++;
+ if (sprite->data3 == 21)
+ {
+ sprite->data0++;
+ sprite->data1 = 32;
+ }
+ }
+ break;
+ case 2:
+ sprite->data1--;
+ if (sprite->data1 == 20)
+ SetMainCallback2(sub_800E7C4);
+ break;
}
}
@@ -910,68 +1148,1454 @@ u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum)
switch (gTrainers[trainerNum].partyFlags)
{
- case 0:
+ case 0:
+ {
+ struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+ break;
+ }
+ case 1:
+ {
+ struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+
+ for (j = 0; j < 4; j++)
{
- struct TrainerPartyMember0 *partyData = gTrainers[trainerNum].party;
+ SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
+ SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
+ }
+ break;
+ }
+ case 2:
+ {
+ struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
- break;
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+
+ SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
+ break;
+ }
+ case 3:
+ {
+ struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
+
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ nameHash += gSpeciesNames[partyData[i].species][j];
+ personalityValue += nameHash << 8;
+ fixedIV = partyData[i].iv * 31 / 255;
+ CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+
+ SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
+ for (j = 0; j < 4; j++)
+ {
+ SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
+ SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
}
- case 1:
+ break;
+ }
+ }
+ }
+ gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle;
+ }
+ return gTrainers[trainerNum].partySize;
+}
+
+void sub_800FCD4(void)
+{
+ if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F )
+ REG_BG0CNT = 0x9800;
+}
+
+void sub_800FCFC(void)
+{
+ Random(); // unused return value
+ REG_BG0HOFS = gUnknown_030042A4;
+ REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+ REG_BG3HOFS = gUnknown_030041B0;
+ REG_BG3VOFS = gUnknown_030041B8;
+ REG_WIN0H = gUnknown_030042C4;
+ REG_WIN0V = gUnknown_03004240;
+ REG_WIN1H = gUnknown_03004200;
+ REG_WIN1V = gUnknown_03004244;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8089668();
+}
+
+void nullsub_36(struct Sprite *sprite)
+{
+}
+
+void sub_800FDB0(struct Sprite *sprite)
+{
+ if (sprite->data0 != 0)
+ sprite->pos1.x = sprite->data1 + ((sprite->data2 & 0xFF00) >> 8);
+ else
+ sprite->pos1.x = sprite->data1 - ((sprite->data2 & 0xFF00) >> 8);
+ sprite->data2 += 0x180;
+ if (sprite->affineAnimEnded)
+ {
+ FreeSpriteTilesByTag(0x2710);
+ FreeSpritePaletteByTag(0x2710);
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_800FE20(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_800FDB0;
+ PlaySE(SE_BT_START);
+}
+
+void sub_800FE40(u8 taskId)
+{
+ struct Pokemon *sp4 = NULL;
+ struct Pokemon *sp8 = NULL;
+ u8 r2 = ewram160CB;
+ u32 r7;
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ switch (gLinkPlayers[r2].lp_field_18)
+ {
+ case 0:
+ case 2:
+ sp4 = gPlayerParty;
+ sp8 = gEnemyParty;
+ break;
+ case 1:
+ case 3:
+ sp4 = gEnemyParty;
+ sp8 = gPlayerParty;
+ break;
+ }
+ }
+ else
+ {
+ sp4 = gPlayerParty;
+ sp8 = gEnemyParty;
+ }
+
+ r7 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2);
+ u16 hp = GetMonData(&sp4[i], MON_DATA_HP);
+ u32 status = GetMonData(&sp4[i], MON_DATA_STATUS);
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp != 0 && status == 0)
+ r7 |= 1 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (hp != 0 && (species == SPECIES_EGG || status != 0))
+ r7 |= 2 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp == 0)
+ r7 |= 3 << i * 2;
+ }
+ gTasks[taskId].data[3] = r7;
+
+ r7 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2);
+ u16 hp = GetMonData(&sp8[i], MON_DATA_HP);
+ u32 status = GetMonData(&sp8[i], MON_DATA_STATUS);
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp != 0 && status == 0)
+ r7 |= 1 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (hp != 0 && (species == SPECIES_EGG || status != 0))
+ r7 |= 2 << i * 2;
+
+ if (species == 0)
+ continue;
+ if (species != SPECIES_EGG && hp == 0)
+ r7 |= 3 << i * 2;
+ }
+ gTasks[taskId].data[4] = r7;
+}
+
+void c2_8011A1C(void)
+{
+ s32 i;
+ u8 taskId;
+
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void *)VRAM, VRAM_SIZE);
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0xF0;
+ REG_WIN0V = 0x5051;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ gUnknown_030042C4 = 0xF0;
+ gUnknown_03004240 = 0x5051;
+ dp12_8087EA4();
+
+ for (i = 0; i < 80; i++)
+ {
+ gUnknown_03004DE0.unk0[i] = 0xF0;
+ gUnknown_03004DE0.unk780[i] = 0xF0;
+ }
+ for (i = 80; i < 160; i++)
+ {
+ asm(""::"r"(i)); // Needed to stop the compiler from optimizing out the loop counter
+ gUnknown_03004DE0.unk0[i] = 0xFF10;
+ gUnknown_03004DE0.unk780[i] = 0xFF10;
+ }
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 0;
+ gUnknown_030041B8 = 0;
+
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0);
+ InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC);
+ sub_800D6D4();
+ LoadCompressedPalette(gUnknown_08D004E0, 0, 64);
+ sub_800D74C();
+ ResetSpriteData();
+ ResetTasks();
+ sub_800E23C();
+ REG_WINOUT = 0x37;
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ SetVBlankCallback(sub_800FCFC);
+ taskId = CreateTask(sub_800DE30, 0);
+ gTasks[taskId].data[1] = 0x10E;
+ gTasks[taskId].data[2] = 0x5A;
+ gTasks[taskId].data[5] = 1;
+ sub_800FE40(taskId);
+ SetMainCallback2(sub_80101B8);
+ gUnknown_02024D1E[0] = 0;
+}
+
+void sub_80101B8(void)
+{
+ c2_081284E0();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+void c2_081284E0(void)
+{
+ switch (gUnknown_02024D1E[0])
+ {
+ case 0:
+ gUnknown_02024D1E[1] = 0xFF;
+ gUnknown_02024D1E[0]++;
+ break;
+ case 1:
+ gUnknown_02024D1E[1]--;
+ if (gUnknown_02024D1E[1] == 0)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gUnknown_02024D1E[0]++;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ SetMainCallback2(gMain.savedCallback);
+ break;
+ }
+}
+
+void oac_poke_opponent(struct Sprite *sprite)
+{
+ sprite->callback = sub_8010278;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ BeginNormalPaletteFade(0x00020000, 0, 10, 10, 0x3DEF);
+}
+
+void sub_8010278(struct Sprite *sprite)
+{
+ if ((gUnknown_02024DE8 & 1) == 0)
+ {
+ sprite->pos2.x += 2;
+ if (sprite->pos2.x == 0)
+ {
+ sprite->callback = sub_80102AC;
+ PlayCry1(sprite->data2, 25);
+ }
+ }
+}
+
+void sub_80102AC(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ sub_804777C(sprite->data0);
+ sub_8043DFC(gUnknown_03004340[sprite->data0]);
+ sprite->callback = nullsub_37;
+ StartSpriteAnimIfDifferent(sprite, 0);
+ BeginNormalPaletteFade(0x00020000, 0, 10, 0, 0x3DEF);
+ }
+}
+
+void nullsub_37(struct Sprite *sprite)
+{
+}
+
+void unref_sub_801030C(struct Sprite *sprite)
+{
+ sprite->data3 = 6;
+ sprite->data4 = 1;
+ sprite->callback = sub_8010320;
+}
+
+void sub_8010320(struct Sprite *sprite)
+{
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ sprite->data4 = 8;
+ sprite->invisible ^= 1;
+ sprite->data3--;
+ if (sprite->data3 == 0)
+ {
+ sprite->invisible = FALSE;
+ sprite->callback = nullsub_37;
+ gUnknown_03004284 = 0;
+ }
+ }
+}
+
+void sub_8010384(struct Sprite *sprite)
+{
+ u8 r6 = sprite->data0;
+ u16 species;
+ u8 yOffset;
+
+ if (ewram17800[r6].unk2 != 0)
+ species = ewram17800[r6].unk2;
+ else
+ species = sprite->data2;
+
+ GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); // Unused return value
+
+ if (species == SPECIES_UNOWN)
+ {
+ u32 personalityValue = GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY);
+ u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C);
+ u16 unownSpecies;
+
+ if (unownForm == 0)
+ unownSpecies = SPECIES_UNOWN; // Use the A Unown form
+ else
+ unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters
+
+ yOffset = gMonFrontPicCoords[unownSpecies].y;
+ }
+ else if (species == SPECIES_CASTFORM)
+ {
+ yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y;
+ }
+ else if (species > NUM_SPECIES)
+ {
+ yOffset = gMonFrontPicCoords[SPECIES_NONE].y;
+ }
+ else
+ {
+ yOffset = gMonFrontPicCoords[species].y;
+ }
+
+ sprite->data3 = 8 - yOffset / 8;
+ sprite->data4 = 1;
+ sprite->callback = sub_8010494;
+}
+
+void sub_8010494(struct Sprite *sprite)
+{
+ s32 i;
+
+ sprite->data4--;
+ if (sprite->data4 == 0)
+ {
+ sprite->data4 = 2;
+ sprite->pos2.y += 8;
+ sprite->data3--;
+ if (sprite->data3 < 0)
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+ else
+ {
+ u8 *dst = (u8 *)gUnknown_081FAF4C[battle_get_per_side_status(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8);
+
+ for (i = 0; i < 0x100; i++)
+ *(dst++) = 0;
+ StartSpriteAnim(sprite, gBattleMonForms[sprite->data0]);
+ }
+ }
+}
+
+void sub_8010520(struct Sprite *sprite)
+{
+ sprite->data3 = 8;
+ sprite->data4 = sprite->invisible;
+ sprite->callback = sub_801053C;
+}
+
+void sub_801053C(struct Sprite *sprite)
+{
+ sprite->data3--;
+ if (sprite->data3 == 0)
+ {
+ sprite->invisible ^= 1;
+ sprite->data3 = 8;
+ }
+}
+
+void sub_8010574(struct Sprite *sprite)
+{
+ sprite->invisible = sprite->data4;
+ sprite->data4 = FALSE;
+ sprite->callback = nullsub_37;
+}
+
+void sub_80105A0(struct Sprite *sprite)
+{
+ sprite->callback = oac_poke_ally_;
+}
+
+void oac_poke_ally_(struct Sprite *sprite)
+{
+ if ((gUnknown_02024DE8 & 1) == 0)
+ {
+ sprite->pos2.x -= 2;
+ if (sprite->pos2.x == 0)
+ {
+ sprite->callback = nullsub_86;
+ sprite->data1 = 0;
+ }
+ }
+}
+
+void sub_80105DC(struct Sprite *sprite)
+{
+ sprite->callback = nullsub_86;
+}
+
+void nullsub_86(struct Sprite *sprite)
+{
+}
+
+void sub_80105EC(struct Sprite *sprite)
+{
+ if ((gUnknown_02024DE8 & 1) == 0)
+ {
+ sprite->pos2.x += sprite->data1;
+ sprite->pos2.y += sprite->data2;
+ }
+}
+
+void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d)
+{
+ u8 spriteId;
+ u8 r7;
+
+ if (b)
+ {
+ if (ewram17810[a].unk0_1)
+ return;
+ }
+ else
+ {
+ if (ewram17810[a].unk0_2)
+ return;
+ }
+
+ spriteId = CreateInvisibleSpriteWithCallback(objc_dp11b_pingpong);
+ if (b == TRUE)
+ {
+ r7 = gUnknown_03004340[a];
+ ewram17810[a].unk2 = spriteId;
+ ewram17810[a].unk0_1 = 1;
+ gSprites[spriteId].data0 = 0x80;
+ }
+ else
+ {
+ r7 = gUnknown_02024BE0[a];
+ ewram17810[a].unk3 = spriteId;
+ ewram17810[a].unk0_2 = 1;
+ gSprites[spriteId].data0 = 0xC0;
+ }
+ gSprites[spriteId].data1 = c;
+ gSprites[spriteId].data2 = d;
+ gSprites[spriteId].data3 = r7;
+ gSprites[spriteId].data4 = b;
+ gSprites[r7].pos2.x = 0;
+ gSprites[r7].pos2.y = 0;
+}
+
+void dp11b_obj_free(u8 a, u8 b)
+{
+ u8 r4;
+
+ if (b == TRUE)
+ {
+ if (!ewram17810[a].unk0_1)
+ return;
+ r4 = gSprites[ewram17810[a].unk2].data3;
+ DestroySprite(&gSprites[ewram17810[a].unk2]);
+ ewram17810[a].unk0_1 = 0;
+ }
+ else
+ {
+ if (!ewram17810[a].unk0_2)
+ return;
+ r4 = gSprites[ewram17810[a].unk3].data3;
+ DestroySprite(&gSprites[ewram17810[a].unk3]);
+ ewram17810[a].unk0_2 = 0;
+ }
+ gSprites[r4].pos2.x = 0;
+ gSprites[r4].pos2.y = 0;
+}
+
+void objc_dp11b_pingpong(struct Sprite *sprite)
+{
+ u8 spriteId = sprite->data3;
+ s32 var;
+
+ if (sprite->data4 == 1)
+ var = sprite->data0;
+ else
+ var = sprite->data0;
+
+ gSprites[spriteId].pos2.y = Sin(var, sprite->data2) + sprite->data2;
+ sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF;
+}
+
+void nullsub_41(void)
+{
+}
+
+void sub_8010800(void)
+{
+ sub_8010874();
+ gUnknown_02024D1E[1] = 0;
+ gUnknown_030042D4 = bc_8012FAC;
+}
+
+void sub_8010824(void)
+{
+ gUnknown_030042D4();
+ gUnknown_02024A60 = 0;
+
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ gUnknown_03004330[gUnknown_02024A60]();
+}
+
+void sub_8010874(void)
+{
+ s32 i;
+ s32 j;
+ u8 *r4;
+
+ sub_801365C(0);
+ sub_801377C();
+
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_02024C98[i] = 0;
+
+ r4 = (u8 *)&gUnknown_02024CA8[i];
+ for (j = 0; j < (u32)0x1C; j++)
+ r4[j] = 0;
+
+ gUnknown_02024CA8[i].unk16 = 2;
+ gUnknown_02024C70[i] = 0;
+ gUnknown_02024C34[i] = 0;
+ gUnknown_02024C3C[i] = 0;
+ gUnknown_02024C44[i] = 0;
+ gUnknown_02024C4C[i] = 0;
+ gUnknown_02024C5C[i] = 0xFF;
+ gUnknown_02024C54[i] = 0;
+ gUnknown_02024C2C[i] = 0;
+ ewram17100[i] = 0;
+ }
+
+ for (i = 0; i < 2; i++)
+ {
+ gUnknown_02024C7A[i] = 0;
+
+ r4 = (u8 *)&gUnknown_02024C80[i];
+ for (j = 0; j < (u32)12; j++)
+ r4[j] = 0;
+ }
+
+ gPlayerMonIndex = 0;
+ gEnemyMonIndex = 0;
+ gBattleWeather = 0;
+
+ r4 = (u8 *)&gUnknown_02024DBC;
+ for (i = 0; i < (u32)0x2C; i++)
+ r4[i] = 0;
+
+ gUnknown_02024C6C = 0;
+ if ((gBattleTypeFlags & 2) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE)
+ gUnknown_02024C6C = 0x80;
+ ewram16084 = gSaveBlock2.optionsBattleStyle;
+ gUnknown_02024C0E = 0;
+ gUnknown_02024D26 = 0;
+ gUnknown_02024A64 = 0;
+ gUnknown_02024D1A = 0;
+ ewram17130 = 0;
+ ewram17160 = 0;
+ for (i = 0; i < 8; i++)
+ gUnknown_02024D1E[i] = 0;
+ gUnknown_02024D18 = 0;
+ gBattleMoveDamage = 0;
+ gUnknown_02024DE8 = 0;
+ ewram16002 = 0;
+ ewram160A1 = 0;
+ gUnknown_03004324 = 0;
+ gUnknown_02024C0C = 0;
+ ewram16078 = 0;
+ ewram16086 = 0;
+ ewram16087 = 0;
+ ewram16089 = gBaseStats[GetMonData(&gEnemyParty[0], MON_DATA_SPECIES)].catchRate * 100 / 1275;
+ ewram16088 = 3;
+ ewram1601B = 0;
+ ewram16056 = 1;
+
+ for (i = 0; i < 8; i++)
+ {
+ ewram[i + 0x160AC] = 0;
+ ewram[i + 0x160CC] = 0;
+ ewram[i + 0x160E8] = 0;
+ ewram[i + 0x160F0] = 0;
+ ewram[i + 0x16100] = 0;
+ ewram[i + 0x16108] = 0;
+ }
+
+ ewram160C8 = 6;
+ ewram160C9 = 6;
+ ewram16113 = 0;
+ for (i = 0; i < 11; i++)
+ gUnknown_030042E0.unk36[i] = 0;
+ gUnknown_030042E0.unk13 = 0;
+ gUnknown_030042E0.unk0 = 0;
+ gUnknown_030042E0.unk1 = 0;
+ gUnknown_030042E0.unk2 = 0;
+ gUnknown_030042E0.unk3 = 0;
+ gUnknown_030042E0.unk4 = 0;
+ gUnknown_030042E0.unk5_0 = 0;
+ gUnknown_030042E0.unk5_1 = 0;
+ gUnknown_030042E0.unk20 = 0;
+ gUnknown_030042E0.unk22 = 0;
+ gUnknown_030042E0.unk24 = 0;
+ gUnknown_030042E0.unk6 = 0;
+ gUnknown_030042E0.unk26 = 0;
+ gUnknown_030042E0.unk28 = 0;
+ for (i = 0; i < 10; i++)
+ {
+ gUnknown_030042E0.unk8[i] = 0;
+ gUnknown_030042E0.unk14[i] = 0;
+ gUnknown_030042E0.unk2A[i] = 0;
+ }
+}
+
+void sub_8010B88(void)
+{
+ struct UnknownStruct4 sp0 = gUnknown_02024CA8[gUnknown_02024A60];
+ s32 i;
+ u8 *ptr;
+ u32 *ptr2;
+
+ if (gBattleMoves[gUnknown_02024BE6].effect != 0x7F)
+ {
+ for (i = 0; i < 8; i++)
+ gBattleMons[gUnknown_02024A60].statStages[i] = 6;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i];
+
+ if ((sp20->unk0 & 0x04000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60)
+ sp20->unk0 &= ~0x04000000;
+ if ((gUnknown_02024C98[i] & 0x18) && gUnknown_02024CA8[i].unk15 == gUnknown_02024A60)
+ {
+ gUnknown_02024C98[i] &= ~0x18;
+ gUnknown_02024CA8[i].unk15 = 0;
+ }
+ }
+ }
+ if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F)
+ {
+ gBattleMons[gUnknown_02024A60].status2 &= 0x15100007;
+ gUnknown_02024C98[gUnknown_02024A60] &= 0x3043F;
+
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) != battle_side_get_owner(i)
+ && (gUnknown_02024C98[i] & 0x18) != 0
+ && (gUnknown_02024CA8[i].unk15 == gUnknown_02024A60))
+ {
+ gUnknown_02024C98[i] &= ~0x18;
+ gUnknown_02024C98[i] |= 0x10;
+ }
+ }
+ }
+ else
+ {
+ gBattleMons[gUnknown_02024A60].status2 = 0;
+ gUnknown_02024C98[gUnknown_02024A60] = 0;
+ }
+
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if (gUnknown_02024AD0[i].unk0 & (gBitTable[gUnknown_02024A60] << 16))
+ gUnknown_02024AD0[i].unk0 &= ~(gBitTable[gUnknown_02024A60] << 16);
+ if ((gUnknown_02024AD0[i].unk0 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60)
+ gUnknown_02024AD0[i].unk0 &= ~0xE000;
+ }
+
+ gUnknown_02024E60[gUnknown_02024A60] = 0;
+ gUnknown_02024E64[gUnknown_02024A60] = 0;
+
+ ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x1C; i++)
+ ptr[i] = 0;
+
+ if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F)
+ {
+ gUnknown_02024CA8[gUnknown_02024A60].unkA = sp0.unkA;
+ gUnknown_02024CA8[gUnknown_02024A60].unk15 = sp0.unk15;
+ gUnknown_02024CA8[gUnknown_02024A60].unkF_0 = sp0.unkF_0;
+ gUnknown_02024CA8[gUnknown_02024A60].unkF_4 = sp0.unkF_4;
+ }
+
+ gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2;
+ gUnknown_02024C34[gUnknown_02024A60] = 0;
+ gUnknown_02024C3C[gUnknown_02024A60] = 0;
+ gUnknown_02024C44[gUnknown_02024A60] = 0;
+ gUnknown_02024C4C[gUnknown_02024A60] = 0;
+ gUnknown_02024C2C[gUnknown_02024A60] = 0;
+ gUnknown_02024C5C[gUnknown_02024A60] = 0xFF;
+
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0;
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0;
+
+ ptr2 = (u32 *)(ewram + 0x17100);
+ ptr2[gUnknown_02024A60] = 0;
+
+ gUnknown_02024BE6 = 0;
+}
+
+void sub_8010F48(void)
+{
+ s32 i;
+ u8 *ptr;
+ u32 *ptr2;
+
+ for (i = 0; i < 8; i++)
+ gBattleMons[gUnknown_02024A60].statStages[i] = 6;
+ gBattleMons[gUnknown_02024A60].status2 = 0;
+ gUnknown_02024C98[gUnknown_02024A60] = 0;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if ((gBattleMons[i].status2 & 0x4000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60)
+ gBattleMons[i].status2 &= ~0x4000000;
+ if (gBattleMons[i].status2 & (gBitTable[gUnknown_02024A60] << 16))
+ gBattleMons[i].status2 &= ~(gBitTable[gUnknown_02024A60] << 16);
+ if ((gBattleMons[i].status2 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60)
+ gBattleMons[i].status2 &= ~0xE000;
+ }
+ gUnknown_02024E60[gUnknown_02024A60] = 0;
+ gUnknown_02024E64[gUnknown_02024A60] = 0;
+
+ ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x1C; i++)
+ ptr[i] = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_0 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_1 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_2 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_3 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_4 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_5 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_6 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk0_7 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_0 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_1 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_2 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_3 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_5 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_6 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk1_7 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_0 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_1 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_2 = 0;
+ gUnknown_02024D28[gUnknown_02024A60].unk2_3 = 0;
+
+ gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2;
+ gUnknown_02024C34[gUnknown_02024A60] = 0;
+ gUnknown_02024C3C[gUnknown_02024A60] = 0;
+ gUnknown_02024C44[gUnknown_02024A60] = 0;
+ gUnknown_02024C4C[gUnknown_02024A60] = 0;
+ gUnknown_02024C2C[gUnknown_02024A60] = 0;
+ gUnknown_02024C5C[gUnknown_02024A60] = 0xFF;
+
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0;
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0;
+ ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0;
+ ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0;
+
+ ptr2 = (u32 *)(ewram + 0x17100);
+ ptr2[gUnknown_02024A60] = 0;
+
+ gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1;
+ gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2;
+}
+
+void bc_8012FAC(void)
+{
+ switch (gUnknown_02024D1E[0])
+ {
+ case 0:
+ gUnknown_02024A60 = gUnknown_02024D1E[1];
+ dp01_build_cmdbuf_x00_a_b_0(0, 0, 0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ gUnknown_02024D1E[0]++;
+ break;
+ case 1:
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_02024D1E[1]++;
+ if (gUnknown_02024D1E[1] == gUnknown_02024A68)
+ gUnknown_030042D4 = bc_load_battlefield;
+ else
+ gUnknown_02024D1E[0] = 0;
+ }
+ break;
+ }
+}
+
+void bc_load_battlefield(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_02024A60 = battle_get_side_with_given_state(0);
+ dp01_build_cmdbuf_x2E_a(0, gBattleTerrain);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ gUnknown_030042D4 = sub_8011384;
+ gUnknown_02024D1E[0] = 0;
+ gUnknown_02024D1E[1] = 0;
+ }
+}
+
+void sub_8011384(void)
+{
+ u8 *ptr;
+ s32 i;
+
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ && battle_side_get_owner(gUnknown_02024A60) == 0)
+ {
+ ptr = (u8 *)&gBattleMons[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x58; i++)
+ ptr[i] = 0;
+ }
+ else
+ {
+ u8 r0;
+
+ ptr = (u8 *)&gBattleMons[gUnknown_02024A60];
+ for (i = 0; i < (u32)0x58; i++)
+ ptr[i] = gUnknown_02024260[gUnknown_02024A60][4 + i];
+
+ gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1;
+ gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2;
+ gBattleMons[gUnknown_02024A60].ability = GetAbilityBySpecies(gBattleMons[gUnknown_02024A60].species, gBattleMons[gUnknown_02024A60].altAbility);
+ r0 = battle_side_get_owner(gUnknown_02024A60);
+ ewram160BC[r0] = gBattleMons[gUnknown_02024A60].hp;
+ for (i = 0; i < 8; i++)
+ gBattleMons[gUnknown_02024A60].statStages[i] = 6;
+ gBattleMons[gUnknown_02024A60].status2 = 0;
+ }
+
+ if (battle_get_per_side_status(gUnknown_02024A60) == 0)
+ {
+ dp01_build_cmdbuf_x07_7_7_7(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 1)
{
- struct TrainerPartyMember1 *partyData = gTrainers[trainerNum].party;
+ dp01_build_cmdbuf_x07_7_7_7(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ if (battle_side_get_owner(gUnknown_02024A60) == 1
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
+ sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2);
+ }
+ else
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) == 1
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
+ {
+ sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2);
+ dp01_build_cmdbuf_x04_4_4_4(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 2
+ || battle_get_per_side_status(gUnknown_02024A60) == 3)
+ {
+ dp01_build_cmdbuf_x07_7_7_7(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ }
+ gUnknown_030042D4 = bc_801333C;
+ }
+}
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+void bc_801333C(void)
+{
+ s32 i;
- for (j = 0; j < 4; j++)
- {
- SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
- SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
- }
- break;
+ if (gUnknown_02024A64 == 0)
+ {
+ struct
+ {
+ u16 hp;
+ u32 status;
+ } sp0[6];
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == 0
+ || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ sp0[i].hp = 0xFFFF;
+ sp0[i].status = 0;
}
- case 2:
+ else
{
- struct TrainerPartyMember2 *partyData = gTrainers[trainerNum].party;
+ sp0[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ sp0[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS);
+ }
+ }
+ gUnknown_02024A60 = battle_get_side_with_given_state(1);
+ dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == 0
+ || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ sp0[i].hp = 0xFFFF;
+ sp0[i].status = 0;
+ }
+ else
+ {
+ sp0[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ sp0[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+ }
+ }
+ gUnknown_02024A60 = battle_get_side_with_given_state(0);
+ dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
- SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
- break;
+ gUnknown_030042D4 = bc_battle_begin_message;
+ }
+ else
+ {
+ // The array gets set here, but nothing is ever done with it.
+ // Likely unfinished code.
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == 0
+ || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ sp0[i].hp = 0xFFFF;
+ sp0[i].status = 0;
}
- case 3:
+ else
{
- struct TrainerPartyMember3 *partyData = gTrainers[trainerNum].party;
+ sp0[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ sp0[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS);
+ }
+ }
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
- nameHash += gSpeciesNames[partyData[i].species][j];
- personalityValue += nameHash << 8;
- fixedIV = partyData[i].iv * 31 / 255;
- CreateMon(&party[i], partyData[i].species, partyData[i].level, fixedIV, TRUE, personalityValue, 2, 0);
+ gUnknown_030042D4 = bc_8013568;
+ }
+ }
+}
- SetMonData(&party[i], MON_DATA_HELD_ITEM, (u8 *)&partyData[i].heldItem);
- for (j = 0; j < 4; j++)
- {
- SetMonData(&party[i], MON_DATA_MOVE1 + j, (u8 *)&partyData[i].moves[j]);
- SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp);
- }
- break;
+void bc_battle_begin_message(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_02024A60 = battle_get_side_with_given_state(1);
+ b_std_message(0, gUnknown_02024A60);
+ gUnknown_030042D4 = sub_8011800;
+ }
+}
+
+void bc_8013568(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_030042D4 = sub_8011970;
+ b_std_message(0, 0);
+ }
+}
+
+void sub_8011800(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ b_std_message(1, battle_get_side_with_given_state(1));
+ gUnknown_030042D4 = sub_8011834;
+ }
+}
+
+void sub_8011834(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 1)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ && battle_get_per_side_status(gUnknown_02024A60) == 3)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ gUnknown_030042D4 = bc_801362C;
+ }
+}
+
+void bc_801362C(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) == 1
+ && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
+ sub_8090D90(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2);
+ }
+ gUnknown_030042D4 = sub_8011970;
+ }
+}
+
+void unref_sub_8011950(void)
+{
+ if (gUnknown_02024A64 == 0)
+ gUnknown_030042D4 = sub_8011970;
+}
+
+void sub_8011970(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
+ b_std_message(1, battle_get_side_with_given_state(0));
+ gUnknown_030042D4 = sub_80119B4;
+ }
+}
+
+void sub_80119B4(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_get_per_side_status(gUnknown_02024A60) == 0)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ && battle_get_per_side_status(gUnknown_02024A60) == 2)
+ {
+ dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ ewram16058 = 0;
+ ewram160F9 = 0;
+ ewram160E6 = 0;
+ gUnknown_030042D4 = sub_8011B00;
+ }
+}
+
+void unref_sub_8011A68(void)
+{
+ if (gUnknown_02024A64 == 0)
+ {
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ if (battle_side_get_owner(gUnknown_02024A60) == 0)
+ {
+ sub_800C704(0, gUnknown_02024A6A[gUnknown_02024A60], 0);
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ }
+ }
+ ewram16058 = 0;
+ ewram160F9 = 0;
+ ewram160E6 = 0;
+ gUnknown_030042D4 = sub_8011B00;
+ }
+}
+
+void sub_8011B00(void)
+{
+ s32 i;
+ s32 j;
+ u8 r9 = 0;
+
+ if (gUnknown_02024A64 == 0)
+ {
+ if (ewram16058 == 0)
+ {
+ for (i = 0; i < gUnknown_02024A68; i++)
+ gUnknown_02024A7A[i] = i;
+ for (i = 0; i < gUnknown_02024A68 - 1; i++)
+ {
+ for (j = i + 1; j < gUnknown_02024A68; j++)
+ {
+ if (b_first_side(gUnknown_02024A7A[i], gUnknown_02024A7A[j], 1) != 0)
+ sub_8012FBC(i, j);
}
}
}
- gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle;
+ if (ewram160E6 == 0 && sub_8018324(0, 0, 0, 0xFF, 0) != 0)
+ {
+ ewram160E6 = 1;
+ return;
+ }
+ while (ewram16058 < gUnknown_02024A68)
+ {
+ if (sub_8018324(0, gUnknown_02024A7A[ewram16058], 0, 0, 0) != 0)
+ r9++;
+ ewram16058++;
+ if (r9 != 0)
+ return;
+ }
+ if (sub_8018324(9, 0, 0, 0, 0) != 0)
+ return;
+ if (sub_8018324(11, 0, 0, 0, 0) != 0)
+ return;
+ while (ewram160F9 < gUnknown_02024A68)
+ {
+ if (sub_801A02C(0, gUnknown_02024A7A[ewram160F9], 0) != 0)
+ r9++;
+ ewram160F9++;
+ if (r9 != 0)
+ return;
+ }
+ // Absolutely pointless for-loop that somehow doesn't get optimized out
+ for (i = 0; i < gUnknown_02024A68; i++)
+ ;
+ for (i = 0; i < 4; i++)
+ {
+ ewram[0x16068 + i] = 6;
+ gUnknown_02024C18[i] = 0xFF;
+ gUnknown_02024C60[i] = 0;
+ }
+ sub_801365C(0);
+ sub_801377C();
+ ewram160A6 = gUnknown_02024C0C;
+ gUnknown_030042D4 = sub_8012324;
+ sub_80156DC();
+ for (i = 0; i < 8; i++)
+ gUnknown_02024D1E[i] = 0;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ gBattleMons[i].status2 &= ~8;
+ ewram16000 = 0;
+ ewram16001 = 0;
+ ewram16110 = 0;
+ ewram16111 = 0;
+ ewram1600C = 0;
+ ewram16059 = 0;
+ ewram1600E = 0;
+ gBattleMoveFlags = 0;
+ gUnknown_02024D1C = Random();
}
- return gTrainers[trainerNum].partySize;
-} \ No newline at end of file
+}
+
+void bc_8013B1C(void)
+{
+ s32 i;
+
+ if (gUnknown_02024A64 == 0)
+ {
+ gUnknown_030042D4 = sub_8011E8C;
+ for (i = 0; i < 8; i++)
+ gUnknown_02024D1E[i] = 0;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ gBattleMons[i].status2 &= ~8;
+ if ((gBattleMons[i].status1 & 7) && (gBattleMons[i].status2 & 0x1000))
+ b_cancel_multi_turn_move_maybe(i);
+ }
+ ewram16000 = 0;
+ ewram16001 = 0;
+ ewram16110 = 0;
+ ewram16111 = 0;
+ ewram1600E = 0;
+ gBattleMoveFlags = 0;
+ }
+}
+
+void sub_8011E8C(void)
+{
+ s32 i;
+
+ sub_801365C(1);
+ if (gUnknown_02024D26 == 0)
+ {
+ if (sub_8015DFC() != 0)
+ return;
+ if (sub_8016558() != 0)
+ return;
+ }
+ if (sub_80173A4() != 0)
+ return;
+ ewram16059 = 0;
+ if (sub_80170DC() != 0)
+ return;
+ sub_801365C(0);
+ gUnknown_02024C6C &= ~0x200;
+ gUnknown_02024C6C &= ~0x80000;
+ gUnknown_02024C6C &= ~0x400000;
+ gUnknown_02024C6C &= ~0x100000;
+ ewram16002 = 0;
+ ewram160A1 = 0;
+ ewram1600C = 0;
+ gBattleMoveDamage = 0;
+ gBattleMoveFlags = 0;
+ for (i = 0; i < 5; i++)
+ gUnknown_02024D1E[i] = 0;
+ if (gUnknown_02024D26 != 0)
+ {
+ gUnknown_02024A7F = 12;
+ gUnknown_030042D4 = sub_80138F0;
+ return;
+ }
+ if (gUnknown_030042E0.unk13 < 0xFF)
+ gUnknown_030042E0.unk13++;
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ gUnknown_02024C18[i] = 0xFF;
+ gUnknown_02024C60[i] = 0;
+ }
+ for (i = 0; i < 4; i++)
+ ewram[0x16068 + i] = 6;
+ ewram160A6 = gUnknown_02024C0C;
+ gUnknown_030042D4 = sub_8012324;
+ gUnknown_02024D1C = Random();
+}
+
+u8 sub_8012028(void)
+{
+ u8 r2;
+ u8 r6;
+ s32 i;
+
+ if (gBattleMons[gUnknown_02024A60].item == 0xAF)
+ r2 = gEnigmaBerries[gUnknown_02024A60].holdEffect;
+ else
+ r2 = ItemId_GetHoldEffect(gBattleMons[gUnknown_02024A60].item);
+ gUnknown_02024C0B = gUnknown_02024A60;
+ if (r2 == 0x25)
+ return 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ return 0;
+ if (gBattleMons[gUnknown_02024A60].ability == ABILITY_RUN_AWAY)
+ return 0;
+ r6 = battle_side_get_owner(gUnknown_02024A60);
+ for (i = 0; i < gUnknown_02024A68; i++)
+ {
+ if (r6 != battle_side_get_owner(i)
+ && gBattleMons[i].ability == 0x17)
+ {
+ ewram16003 = i;
+ byte_2024C06 = gBattleMons[i].ability;
+ gUnknown_02024D1E[5] = 2;
+ return 2;
+ }
+ if (r6 != battle_side_get_owner(i)
+ && gBattleMons[gUnknown_02024A60].ability != ABILITY_LEVITATE
+ && gBattleMons[gUnknown_02024A60].type1 != 2
+ && gBattleMons[gUnknown_02024A60].type2 != 2
+ && gBattleMons[i].ability == 0x47)
+ {
+ ewram16003 = i;
+ byte_2024C06 = gBattleMons[i].ability;
+ gUnknown_02024D1E[5] = 2;
+ return 2;
+ }
+ }
+ i = sub_8018324(15, gUnknown_02024A60, 0x2A, 0, 0);
+ if (i != 0 && (gBattleMons[gUnknown_02024A60].type1 == 8 || gBattleMons[gUnknown_02024A60].type2 == 8))
+ {
+ ewram16003 = i - 1;
+ byte_2024C06 = gBattleMons[i - 1].ability;
+ gUnknown_02024D1E[5] = 2;
+ return 2;
+ }
+ if ((gBattleMons[gUnknown_02024A60].status2 & 0x0400E000) || (gUnknown_02024C98[gUnknown_02024A60] & 0x400))
+ {
+ gUnknown_02024D1E[5] = 0;
+ return 1;
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
+ {
+ gUnknown_02024D1E[5] = 1;
+ return 1;
+ }
+ return 0;
+}
+
+void sub_8012258(u8 a)
+{
+ s32 i;
+ u8 r4;
+ u8 r1;
+
+ for (i = 0; i < 3; i++)
+ gUnknown_02038470[i] = ewram[0x1606C + i + a * 3];
+ r4 = pokemon_order_func(gUnknown_02024A6A[a]);
+ r1 = pokemon_order_func(ewram[0x16068 + a]);
+ sub_8094C98(r4, r1);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ for (i = 0; i < 3; i++)
+ {
+ ewram[0x1606C + i + a * 3] = gUnknown_02038470[i];
+ ewram[0x1606C + i + (a ^ 2) * 3] = gUnknown_02038470[i];
+ }
+ }
+ else
+ {
+ for (i = 0; i < 3; i++)
+ {
+ ewram[0x1606C + i + a * 3] = gUnknown_02038470[i];
+ }
+ }
+}
+
+/*
+void sub_8012324(void)
+{
+ u8 r5;
+
+ gUnknown_02024D1E[4] = 0;
+ // inverted loop
+ //_0801234C
+ for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++)
+ {
+ r5 = battle_get_per_side_status(gUnknown_02024A60);
+ switch (gUnknown_02024D1E[gUnknown_02024A60])
+ {
+ case 0:
+ ewram[0x016068 + gUnknown_02024A60] = 6;
+ if (!(gBattleTypeFlags & 0x40)
+ && (r5 & 2)
+ && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)])
+ && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4)
+ break;
+ //_080123F8
+ if (ewram160A6 & gBitTable[gUnknown_02024A60])
+ {
+ gUnknown_02024C18[gUnknown_02024A60] = 13;
+ if (!(gBattleTypeFlags & 0x40))
+ gUnknown_02024D1E[gUnknown_02024A60] = 4;
+ //_08012454
+ else
+ gUnknown_02024D1E[gUnknown_02024A60] = 3;
+ break;
+ }
+ //_08012468
+ if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000)
+ || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000))
+ {
+ gUnknown_02024C18[gUnknown_02024A60] = 0;
+ gUnknown_02024D1E[gUnknown_02024A60] = 3;
+ }
+ else
+ {
+ dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8));
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ gUnknown_02024D1E[gUnknown_02024A60]++;
+ }
+ break;
+ case 1:
+ }
+ }
+}
+*/
diff --git a/src/credits.c b/src/credits.c
index 01af78bce..ca5553c2e 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1,12 +1,17 @@
#include "global.h"
#include "asm.h"
#include "decompress.h"
+#include "event_data.h"
#include "m4a.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
+#include "pokedex.h"
+#include "rng.h"
#include "songs.h"
#include "sound.h"
+#include "species.h"
+#include "starter_choose.h"
#include "trig.h"
asm(".set REG_BASE, 0x4000000");
@@ -15,8 +20,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52");
asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT");
asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA");
-u32 NationalPokedexNumToSpecies(u16 nationalNum);
-
struct MonCoords
{
u8 x, y;
@@ -126,14 +129,17 @@ enum
TDE_TASK_A_ID = 2,
};
+#define POKEMON_TILE_COUNT 68
+
struct Unk201C000
{
- u16 unk0[8];
- u8 pad_10[0x78];
+ u16 unk0[POKEMON_TILE_COUNT];
u16 unk88;
u16 unk8A;
u16 unk8C;
u16 unk8E;
+ u16 unk90[386];
+ u16 unk394;
};
struct CreditsEntry
@@ -226,12 +232,12 @@ static u8 sub_8144454(u8 page, u8 taskIdA);
static void task_d_8144514(u8 taskIdD);
static bool8 sub_8144ECC(u8 data, u8 taskIdA);
static void sub_81450AC(u8 taskIdA);
-void sub_8145128(u16, u16, u16);
-static void sub_81452D0(u16 arg0, u16 arg1);
+static void sub_8145128(u16, u16, u16);
+static void sub_81452D0(u16 arg0, u16 palette);
static void spritecb_player_8145378(struct Sprite *sprite);
static void spritecb_rival_8145420(struct Sprite *sprite);
-u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3);
-void sub_81458DC(void);
+static u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 position);
+static void sub_81458DC(void);
static void vblank_8143948(void)
{
@@ -666,8 +672,7 @@ static void task_b_81441B8(u8 taskIdB)
for (i = 0; i < 5; i++)
{
- sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0,
- 9 + i * 2, 240);
+ sub_8072BD8(gCreditsEntryPointerTable[gTasks[taskIdB].data[TDB_CURRENT_PAGE]][i]->text, 0, 9 + i * 2, 240);
}
gTasks[taskIdB].data[TDB_CURRENT_PAGE] += 1;
@@ -816,8 +821,6 @@ static u8 sub_8144454(u8 page, u8 taskIdA)
return FALSE;
}
-#define UNK_DEFINE_44 (0x44)
-
static void task_d_8144514(u8 taskIdD)
{
struct Unk201C000 *r6 = &ewram1c000;
@@ -834,7 +837,7 @@ static void task_d_8144514(u8 taskIdD)
gTasks[taskIdD].data[TDD_STATE]++;
break;
case 2:
- if (r6->unk88 == UNK_DEFINE_44 || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68)
+ if (r6->unk88 == POKEMON_TILE_COUNT || gTasks[gTasks[taskIdD].data[TDD_TASK_A_ID]].func != task_a_8143B68)
break;
r2 = sub_81456B4(r6->unk0[r6->unk8C], gUnknown_0840CA00[r6->unk8A][0], gUnknown_0840CA00[r6->unk8A][1], r6->unk8A);
if (r6->unk8C < r6->unk8E - 1)
@@ -866,83 +869,83 @@ static void task_d_8144514(u8 taskIdD)
void task_c_8144664(u8 taskIdC)
{
- switch (gTasks[taskIdC].data[0])
+ switch (gTasks[taskIdC].data[TDC_0])
{
case 0:
- gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12);
- gTasks[taskIdC].data[5]++;
+ gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12);
+ gTasks[taskIdC].data[TDC_5]++;
break;
case 1:
if (gUnknown_0203935A != 0)
{
- gUnknown_0203935A = Sin((gTasks[taskIdC].data[5] >> 1) & 0x7F, 12);
- gTasks[taskIdC].data[5]++;
+ gUnknown_0203935A = Sin((gTasks[taskIdC].data[TDC_5] >> 1) & 0x7F, 12);
+ gTasks[taskIdC].data[TDC_5]++;
}
else
{
- gSprites[gTasks[taskIdC].data[2]].data0 = 2;
- gTasks[taskIdC].data[5] = 0;
- gTasks[taskIdC].data[0]++;
+ gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 2;
+ gTasks[taskIdC].data[TDC_5] = 0;
+ gTasks[taskIdC].data[TDC_0]++;
}
break;
case 2:
- if (gTasks[taskIdC].data[5] < 64)
+ if (gTasks[taskIdC].data[TDC_5] < 64)
{
- gTasks[taskIdC].data[5]++;
- gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20);
+ gTasks[taskIdC].data[TDC_5]++;
+ gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20);
}
else
{
- gTasks[taskIdC].data[0]++;
+ gTasks[taskIdC].data[TDC_0]++;
}
break;
case 3:
- gSprites[gTasks[taskIdC].data[2]].data0 = 3;
- gSprites[gTasks[taskIdC].data[3]].data0 = 1;
- gTasks[taskIdC].data[4] = 120;
- gTasks[taskIdC].data[0]++;
+ gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 3;
+ gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 1;
+ gTasks[taskIdC].data[TDC_4] = 120;
+ gTasks[taskIdC].data[TDC_0]++;
break;
case 4:
- if (gTasks[taskIdC].data[4] != 0)
+ if (gTasks[taskIdC].data[TDC_4] != 0)
{
- gTasks[taskIdC].data[4]--;
+ gTasks[taskIdC].data[TDC_4]--;
}
else
{
- gTasks[taskIdC].data[5] = 64;
- gTasks[taskIdC].data[0]++;
+ gTasks[taskIdC].data[TDC_5] = 64;
+ gTasks[taskIdC].data[TDC_0]++;
}
break;
case 5:
- if (gTasks[taskIdC].data[5] > 0)
+ if (gTasks[taskIdC].data[TDC_5] > 0)
{
- gTasks[taskIdC].data[5]--;
- gUnknown_0203935A = Sin(gTasks[taskIdC].data[5] & 0x7F, 20);
+ gTasks[taskIdC].data[TDC_5]--;
+ gUnknown_0203935A = Sin(gTasks[taskIdC].data[TDC_5] & 0x7F, 20);
}
else
{
- gSprites[gTasks[taskIdC].data[2]].data0 = 1;
- gTasks[taskIdC].data[0]++;
+ gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 1;
+ gTasks[taskIdC].data[TDC_0]++;
}
break;
case 6:
- gTasks[taskIdC].data[0] = 50;
+ gTasks[taskIdC].data[TDC_0] = 50;
break;
case 10:
- gSprites[gTasks[taskIdC].data[3]].data0 = 2;
- gTasks[taskIdC].data[0] = 50;
+ gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 2;
+ gTasks[taskIdC].data[TDC_0] = 50;
break;
case 20:
- gSprites[gTasks[taskIdC].data[2]].data0 = 4;
- gTasks[taskIdC].data[0] = 50;
+ gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 4;
+ gTasks[taskIdC].data[TDC_0] = 50;
break;
case 30:
- gSprites[gTasks[taskIdC].data[2]].data0 = 5;
- gSprites[gTasks[taskIdC].data[3]].data0 = 3;
- gTasks[taskIdC].data[0] = 50;
+ gSprites[gTasks[taskIdC].data[TDC_2]].data0 = 5;
+ gSprites[gTasks[taskIdC].data[TDC_3]].data0 = 3;
+ gTasks[taskIdC].data[TDC_0] = 50;
break;
case 50:
- gTasks[taskIdC].data[0] = 0;
+ gTasks[taskIdC].data[TDC_0] = 0;
break;
}
}
@@ -1205,119 +1208,39 @@ static void sub_81450AC(u8 taskIdA)
gUnknown_0203935C = 1;
}
-__attribute__((naked))
-void sub_8145128(u16 arg0, u16 arg1, u16 arg2)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- adds r3, r0, 0\n\
- adds r4, r2, 0\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- lsls r1, 16\n\
- lsrs r7, r1, 16\n\
- lsls r4, 16\n\
- lsrs r5, r4, 16\n\
- ldr r0, _081451EC @ =gCreditsCopyrightEnd_Gfx\n\
- movs r6, 0xC0\n\
- lsls r6, 19\n\
- adds r3, r6\n\
- adds r1, r3, 0\n\
- bl LZ77UnCompVram\n\
- ldr r0, _081451F0 @ =gIntroCopyright_Pal\n\
- adds r1, r5, 0\n\
- movs r2, 0x20\n\
- bl LoadPalette\n\
- lsrs r4, 20\n\
- lsls r4, 28\n\
- lsrs r4, 16\n\
- movs r2, 0\n\
- adds r1, r4, 0x1\n\
- ldr r3, _081451F4 @ =0x000003ff\n\
-_0814515E:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r6\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, r3\n\
- bls _0814515E\n\
- movs r2, 0\n\
- adds r0, r4, 0x2\n\
- adds r6, r4, 0\n\
- adds r6, 0x17\n\
- movs r1, 0x2B\n\
- adds r1, r4\n\
- mov r12, r1\n\
- adds r4, 0x42\n\
- ldr r5, _081451F8 @ =0x060001c8\n\
- adds r3, r0, 0\n\
-_08145184:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x14\n\
- bls _08145184\n\
- movs r2, 0\n\
- ldr r5, _081451FC @ =0x06000248\n\
- adds r3, r6, 0\n\
-_0814519E:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x13\n\
- bls _0814519E\n\
- movs r2, 0\n\
- ldr r5, _08145200 @ =0x060002c8\n\
- mov r3, r12\n\
-_081451B8:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r5\n\
- adds r1, r2, r3\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0x16\n\
- bls _081451B8\n\
- movs r2, 0\n\
- ldr r3, _08145204 @ =0x06000348\n\
-_081451D0:\n\
- lsls r0, r2, 1\n\
- adds r0, r7\n\
- adds r0, r3\n\
- adds r1, r2, r4\n\
- strh r1, [r0]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- cmp r2, 0xB\n\
- bls _081451D0\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_081451EC: .4byte gCreditsCopyrightEnd_Gfx\n\
-_081451F0: .4byte gIntroCopyright_Pal\n\
-_081451F4: .4byte 0x000003ff\n\
-_081451F8: .4byte 0x060001c8\n\
-_081451FC: .4byte 0x06000248\n\
-_08145200: .4byte 0x060002c8\n\
-_08145204: .4byte 0x06000348\n\
- .syntax divided\n");
+static void sub_8145128(u16 arg0, u16 arg1, u16 arg2) {
+ u16 baseTile;
+ u16 i;
+
+ LZ77UnCompVram(gCreditsCopyrightEnd_Gfx, (void *) (VRAM + arg0));
+ LoadPalette(gIntroCopyright_Pal, arg2, sizeof(gIntroCopyright_Pal));
+
+ baseTile = (arg2 / 16) << 12;
+
+ for (i = 0; i < 32 * 32; i++)
+ {
+ ((u16 *) (VRAM + arg1))[i] = baseTile + 1;
+ }
+
+ for (i = 0; i < 21; i++)
+ {
+ ((u16 *) (VRAM + arg1))[7 * 32 + 4 + i] = i + 2 + baseTile;
+ }
+
+ for (i = 0; i < 20; i++)
+ {
+ ((u16 *) (VRAM + arg1))[9 * 32 + 4 + i] = i + 23 + baseTile;
+ }
+
+ for (i = 0; i < 23; i++)
+ {
+ ((u16 *) (VRAM + arg1))[11 * 32 + 4 + i] = i + 43 + baseTile;
+ }
+
+ for (i = 0; i < 12; i++)
+ {
+ ((u16 *) (VRAM + arg1))[13 * 32 + 4 + i] = i + 66 + baseTile;
+ }
}
u16 sub_8145208(u8 arg0)
@@ -1332,106 +1255,45 @@ u16 sub_8145208(u8 arg0)
if (arg0 & (1 << 7))
{
- out |= 0x800;
+ out |= 1 << 11;
}
if (arg0 & (1 << 6))
{
- out |= 0x400;
+ out |= 1 << 10;
}
return out;
}
-__attribute__((naked))
-void sub_814524C(void *arg0, u8 arg1, u8 arg2, u16 arg3, int arg4)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- str r0, [sp]\n\
- ldr r0, [sp, 0x2C]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r10, r1\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x4]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0x8]\n\
- lsls r0, 16\n\
- lsrs r0, 20\n\
- lsls r0, 28\n\
- lsrs r0, 16\n\
- mov r9, r0\n\
- movs r5, 0\n\
-_0814527A:\n\
- movs r4, 0\n\
- lsls r7, r5, 1\n\
- ldr r1, [sp, 0x4]\n\
- adds r0, r1, r5\n\
- adds r2, r5, 0x1\n\
- mov r8, r2\n\
- lsls r0, 6\n\
- ldr r1, [sp, 0x8]\n\
- adds r6, r0, r1\n\
-_0814528C:\n\
- adds r0, r7, r5\n\
- adds r0, r4\n\
- ldr r2, [sp]\n\
- adds r0, r2, r0\n\
- ldrb r0, [r0]\n\
- bl sub_8145208\n\
- mov r2, r10\n\
- adds r1, r2, r4\n\
- lsls r1, 1\n\
- adds r1, r6\n\
- movs r2, 0xC0\n\
- lsls r2, 19\n\
- adds r1, r2\n\
- add r0, r9\n\
- strh r0, [r1]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x2\n\
- bls _0814528C\n\
- mov r1, r8\n\
- lsls r0, r1, 24\n\
- lsrs r5, r0, 24\n\
- cmp r5, 0x4\n\
- bls _0814527A\n\
- add sp, 0xC\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+void sub_814524C(u8 arg0[], u8 baseX, u8 baseY, u16 arg3, u16 palette) {
+ u8 y, x;
+
+ const u16 tileOffset = (palette / 16) << 12;
+
+ for (y = 0; y < 5; y++)
+ {
+ for (x = 0; x < 3; x++)
+ {
+ ((u16 *) (VRAM + arg3 + (baseY + y) * 64))[baseX + x] = tileOffset + sub_8145208(arg0[y * 3 + x]);
+ }
+ }
}
-static void sub_81452D0(u16 arg0, u16 arg1)
+static void sub_81452D0(u16 arg0, u16 palette)
{
- u16 i;
- u16 foo = arg1 / 16;
- u16 bar = foo * 4096;
-
- for (i = 0; i < 0x400; i++)
- ((u16 *)(VRAM + arg0))[i] = bar + 1;
-
- sub_814524C(&gUnknown_0840B83C, 3, 7, arg0, arg1);
- sub_814524C(&gUnknown_0840B84B, 7, 7, arg0, arg1);
- sub_814524C(&gUnknown_0840B85A, 11, 7, arg0, arg1);
- sub_814524C(&gUnknown_0840B85A, 16, 7, arg0, arg1);
- sub_814524C(&gUnknown_0840B869, 20, 7, arg0, arg1);
- sub_814524C(&gUnknown_0840B878, 24, 7, arg0, arg1);
+ u16 pos;
+ u16 baseTile = (palette / 16) << 12;
+
+ for (pos = 0; pos < 32 * 32; pos++)
+ ((u16 *) (VRAM + arg0))[pos] = baseTile + 1;
+
+ sub_814524C(gUnknown_0840B83C, 3, 7, arg0, palette);
+ sub_814524C(gUnknown_0840B84B, 7, 7, arg0, palette);
+ sub_814524C(gUnknown_0840B85A, 11, 7, arg0, palette);
+ sub_814524C(gUnknown_0840B85A, 16, 7, arg0, palette);
+ sub_814524C(gUnknown_0840B869, 20, 7, arg0, palette);
+ sub_814524C(gUnknown_0840B878, 24, 7, arg0, palette);
}
static void spritecb_player_8145378(struct Sprite *sprite)
@@ -1538,268 +1400,121 @@ static void spritecb_rival_8145420(struct Sprite *sprite)
}
}
-__attribute__((naked))
-void spritecb_81454E0(struct Sprite *sprite)
-{
- asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- sub sp, 0x4\n\
- adds r5, r0, 0\n\
- ldr r0, _081454F8 @ =gUnknown_0203935C\n\
- movs r1, 0\n\
- ldrsh r0, [r0, r1]\n\
- cmp r0, 0\n\
- beq _081454FC\n\
- adds r0, r5, 0\n\
- bl DestroySprite\n\
- b _081456A6\n\
- .align 2, 0\n\
-_081454F8: .4byte gUnknown_0203935C\n\
-_081454FC:\n\
- ldrh r0, [r5, 0x3C]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x3C]\n\
- movs r2, 0x2E\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0xA\n\
- bhi _08145544\n\
- lsls r0, 2\n\
- ldr r1, _08145514 @ =_08145518\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_08145514: .4byte _08145518\n\
- .align 2, 0\n\
-_08145518:\n\
- .4byte _08145544\n\
- .4byte _0814559E\n\
- .4byte _08145620\n\
- .4byte _08145660\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145544\n\
- .4byte _08145696\n\
-_08145544:\n\
- ldrb r1, [r5, 0x1]\n\
- movs r0, 0x4\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x30\n\
- ldrsh r1, [r5, r0]\n\
- movs r0, 0x1F\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- ldrb r2, [r5, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x3]\n\
- movs r0, 0x10\n\
- strh r0, [r5, 0x32]\n\
- ldrh r4, [r5, 0x30]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x80\n\
- lsls r0, 9\n\
- movs r1, 0x10\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- str r1, [sp]\n\
- adds r0, r4, 0\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl SetOamMatrix\n\
- adds r2, r5, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
-_0814559E:\n\
- ldrh r1, [r5, 0x32]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0xFF\n\
- bgt _081455D4\n\
- adds r0, r1, 0\n\
- adds r0, 0x8\n\
- strh r0, [r5, 0x32]\n\
- ldrh r4, [r5, 0x30]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r0, 0x32\n\
- ldrsh r1, [r5, r0]\n\
- movs r0, 0x80\n\
- lsls r0, 9\n\
- bl __divsi3\n\
- adds r1, r0, 0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- str r1, [sp]\n\
- adds r0, r4, 0\n\
- movs r2, 0\n\
- movs r3, 0\n\
- bl SetOamMatrix\n\
- b _081455DA\n\
-_081455D4:\n\
- ldrh r0, [r5, 0x2E]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
-_081455DA:\n\
- movs r2, 0x30\n\
- ldrsh r1, [r5, r2]\n\
- cmp r1, 0x2\n\
- beq _081456A6\n\
- cmp r1, 0x2\n\
- bgt _081455EC\n\
- cmp r1, 0x1\n\
- beq _081455F2\n\
- b _081456A6\n\
-_081455EC:\n\
- cmp r1, 0x3\n\
- beq _0814560A\n\
- b _081456A6\n\
-_081455F2:\n\
- ldrh r1, [r5, 0x3C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08145602\n\
- ldrh r0, [r5, 0x22]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x22]\n\
-_08145602:\n\
- ldrh r0, [r5, 0x20]\n\
- subs r0, 0x2\n\
- strh r0, [r5, 0x20]\n\
- b _081456A6\n\
-_0814560A:\n\
- ldrh r0, [r5, 0x3C]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _08145618\n\
- ldrh r0, [r5, 0x22]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x22]\n\
-_08145618:\n\
- ldrh r0, [r5, 0x20]\n\
- adds r0, 0x2\n\
- strh r0, [r5, 0x20]\n\
- b _081456A6\n\
-_08145620:\n\
- ldrh r1, [r5, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0\n\
- beq _08145630\n\
- subs r0, r1, 0x1\n\
- strh r0, [r5, 0x34]\n\
- b _081456A6\n\
-_08145630:\n\
- ldr r1, _0814565C @ =REG_BLDCNT\n\
- movs r2, 0xF4\n\
- lsls r2, 4\n\
- adds r0, r2, 0\n\
- strh r0, [r1]\n\
- adds r1, 0x2\n\
- movs r0, 0x10\n\
- strh r0, [r1]\n\
- ldrb r1, [r5, 0x1]\n\
- movs r0, 0xD\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1]\n\
- movs r0, 0x10\n\
- strh r0, [r5, 0x34]\n\
- ldrh r0, [r5, 0x2E]\n\
- adds r0, 0x1\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
- .align 2, 0\n\
-_0814565C: .4byte REG_BLDCNT\n\
-_08145660:\n\
- ldrh r1, [r5, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r5, r2]\n\
- cmp r0, 0\n\
- beq _08145684\n\
- subs r1, 0x1\n\
- strh r1, [r5, 0x34]\n\
- ldr r3, _08145680 @ =REG_BLDALPHA\n\
- movs r0, 0x34\n\
- ldrsh r2, [r5, r0]\n\
- movs r0, 0x10\n\
- subs r0, r2\n\
- lsls r0, 8\n\
- adds r1, r0\n\
- strh r1, [r3]\n\
- b _081456A6\n\
- .align 2, 0\n\
-_08145680: .4byte REG_BLDALPHA\n\
-_08145684:\n\
- adds r2, r5, 0\n\
- adds r2, 0x3E\n\
- ldrb r0, [r2]\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0xA\n\
- strh r0, [r5, 0x2E]\n\
- b _081456A6\n\
-_08145696:\n\
- ldr r0, _081456B0 @ =REG_BLDCNT\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- adds r0, 0x2\n\
- strh r1, [r0]\n\
- adds r0, r5, 0\n\
- bl DestroySprite\n\
-_081456A6:\n\
- add sp, 0x4\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_081456B0: .4byte REG_BLDCNT\n\
- .syntax divided\n");
+void spritecb_81454E0(struct Sprite *sprite) {
+ if (gUnknown_0203935C)
+ {
+ DestroySprite(sprite);
+ return;
+ }
+
+ sprite->data7 += 1;
+ switch (sprite->data0)
+ {
+ case 0:
+ default:
+ sprite->oam.affineMode = 1;
+ sprite->oam.matrixNum = sprite->data1;
+ sprite->data2 = 16;
+ SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2);
+ sprite->invisible = FALSE;
+ sprite->data0 = 1;
+ break;
+
+ case 1:
+ if (sprite->data2 < 256)
+ {
+ sprite->data2 += 8;
+ SetOamMatrix(sprite->data1, 0x10000 / sprite->data2, 0, 0, 0x10000 / sprite->data2);
+ }
+ else
+ {
+ sprite->data0 += 1;
+ }
+ switch (sprite->data1)
+ {
+ case 1:
+ if ((sprite->data7 & 3) == 0)
+ {
+ sprite->pos1.y += 1;
+ }
+ sprite->pos1.x -= 2;
+ break;
+ case 2:
+ break;
+ case 3:
+ if ((sprite->data7 & 3) == 0)
+ {
+ sprite->pos1.y += 1;
+ }
+ sprite->pos1.x += 2;
+ break;
+ }
+ break;
+
+ case 2:
+ if (sprite->data3 != 0)
+ {
+ sprite->data3 -= 1;
+ }
+ else
+ {
+ REG_BLDCNT = 0xF40;
+ REG_BLDALPHA = 0x10;
+ sprite->oam.objMode = 1;
+ sprite->data3 = 16;
+ sprite->data0 += 1;
+ }
+ break;
+
+ case 3:
+ if (sprite->data3 != 0)
+ {
+ int data3;
+ vu16 *reg;
+
+ sprite->data3 -= 1;
+
+ reg = &REG_BLDALPHA;
+ data3 = 16 - sprite->data3;
+ *reg = (data3 << 8) + sprite->data3;
+ }
+ else
+ {
+ sprite->invisible = TRUE;
+ sprite->data0 = 10;
+ }
+ break;
+
+ case 10:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroySprite(sprite);
+ break;
+
+ }
}
-#ifdef NONMATCHING
-u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3)
+static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
{
- u32 species;
u32 personality;
void *palette;
u8 spriteId;
u8 spriteId2;
- species = NationalPokedexNumToSpecies(nationalNum);
+ species = NationalPokedexNumToSpecies(species);
+
switch (species)
{
- case SPECIES_UNOWN:
- personality = gSaveBlock2.pokedex.unownPersonality;
+ default:
+ personality = 0;
break;
case SPECIES_SPINDA:
personality = gSaveBlock2.pokedex.spindaPersonality;
break;
- default:
- personality = 0;
+ case SPECIES_UNOWN:
+ personality = gSaveBlock2.pokedex.unownPersonality;
break;
}
@@ -1808,196 +1523,30 @@ u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3)
gMonFrontPicCoords[species].x,
gMonFrontPicCoords[species].y,
0x2000000,
- gUnknown_0840B5A0[arg3],
+ gUnknown_0840B5A0[position],
species,
personality,
1
);
palette = species_and_otid_get_pal(species, 0, 0xFFFF);
- LoadCompressedPalette(palette, 0x100 + (arg3 * 16), 0x20);
- sub_8143648(arg3, arg3);
+ LoadCompressedPalette(palette, 0x100 + (position * 16), 0x20);
+ sub_8143648(position, position);
spriteId = CreateSprite(&gUnknown_02024E8C, x, y, 0);
- gSprites[spriteId].oam.paletteNum = arg3;
+ gSprites[spriteId].oam.paletteNum = position;
gSprites[spriteId].oam.priority = 1;
- gSprites[spriteId].data1 = arg3 + 1;
+ gSprites[spriteId].data1 = position + 1;
gSprites[spriteId].invisible = TRUE;
gSprites[spriteId].callback = spritecb_81454E0;
spriteId2 = CreateSprite(&gSpriteTemplate_840CAEC, gSprites[spriteId].pos1.x, gSprites[spriteId].pos1.y, 1);
gSprites[spriteId2].data0 = spriteId;
- StartSpriteAnimIfDifferent(&gSprites[spriteId2], arg3);
+ StartSpriteAnimIfDifferent(&gSprites[spriteId2], position);
return spriteId;
}
-#else
-__attribute__((naked))
-u8 sub_81456B4(u16 nationalNum, u16 x, u16 y, u16 arg3)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- mov r10, r1\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- str r2, [sp, 0x10]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- mov r9, r3\n\
- adds r0, r6, 0\n\
- bl NationalPokedexNumToSpecies\n\
- adds r6, r0, 0\n\
- cmp r6, 0xC9\n\
- beq _081456F8\n\
- movs r0, 0x9A\n\
- lsls r0, 1\n\
- cmp r6, r0\n\
- beq _081456EE\n\
- movs r7, 0\n\
- b _081456FC\n\
-_081456EE:\n\
- ldr r0, _081456F4 @ =gSaveBlock2\n\
- ldr r7, [r0, 0x20]\n\
- b _081456FC\n\
- .align 2, 0\n\
-_081456F4: .4byte gSaveBlock2\n\
-_081456F8:\n\
- ldr r0, _081457E8 @ =gSaveBlock2\n\
- ldr r7, [r0, 0x1C]\n\
-_081456FC:\n\
- lsls r0, r6, 3\n\
- ldr r1, _081457EC @ =gMonFrontPicTable\n\
- adds r0, r1\n\
- ldr r1, _081457F0 @ =gMonFrontPicCoords\n\
- lsls r2, r6, 2\n\
- adds r2, r1\n\
- ldrb r1, [r2]\n\
- ldrb r2, [r2, 0x1]\n\
- movs r3, 0x80\n\
- lsls r3, 18\n\
- ldr r4, _081457F4 @ =gUnknown_0840B5A0\n\
- mov r8, r4\n\
- mov r5, r9\n\
- lsls r4, r5, 2\n\
- add r4, r8\n\
- ldr r4, [r4]\n\
- str r4, [sp]\n\
- str r6, [sp, 0x4]\n\
- str r7, [sp, 0x8]\n\
- movs r4, 0x1\n\
- str r4, [sp, 0xC]\n\
- bl LoadSpecialPokePic\n\
- ldr r2, _081457F8 @ =0x0000ffff\n\
- adds r0, r6, 0\n\
- movs r1, 0\n\
- bl species_and_otid_get_pal\n\
- lsls r5, 4\n\
- mov r8, r5\n\
- movs r1, 0x80\n\
- lsls r1, 1\n\
- add r1, r8\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- movs r2, 0x20\n\
- bl LoadCompressedPalette\n\
- mov r7, r9\n\
- lsls r6, r7, 24\n\
- lsrs r6, 24\n\
- mov r0, r9\n\
- adds r1, r6, 0\n\
- bl sub_8143648\n\
- ldr r0, _081457FC @ =gUnknown_02024E8C\n\
- mov r2, r10\n\
- lsls r1, r2, 16\n\
- asrs r1, 16\n\
- ldr r3, [sp, 0x10]\n\
- lsls r2, r3, 16\n\
- asrs r2, 16\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- adds r4, r0, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- ldr r5, _08145800 @ =gSprites\n\
- lsls r2, r4, 4\n\
- adds r2, r4\n\
- lsls r2, 2\n\
- adds r3, r2, r5\n\
- ldrb r1, [r3, 0x5]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- mov r7, r8\n\
- orrs r0, r7\n\
- movs r1, 0xD\n\
- negs r1, r1\n\
- ands r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r3, 0x5]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x30]\n\
- movs r0, 0x3E\n\
- adds r0, r3\n\
- mov r8, r0\n\
- ldrb r0, [r0]\n\
- orrs r0, r1\n\
- mov r1, r8\n\
- strb r0, [r1]\n\
- adds r0, r5, 0\n\
- adds r0, 0x1C\n\
- adds r2, r0\n\
- ldr r0, _08145804 @ =spritecb_81454E0\n\
- str r0, [r2]\n\
- ldr r0, _08145808 @ =gSpriteTemplate_840CAEC\n\
- movs r2, 0x20\n\
- ldrsh r1, [r3, r2]\n\
- movs r7, 0x22\n\
- ldrsh r2, [r3, r7]\n\
- movs r3, 0x1\n\
- bl CreateSprite\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- strh r4, [r0, 0x2E]\n\
- adds r1, r6, 0\n\
- bl StartSpriteAnimIfDifferent\n\
- adds r0, r4, 0\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_081457E8: .4byte gSaveBlock2\n\
-_081457EC: .4byte gMonFrontPicTable\n\
-_081457F0: .4byte gMonFrontPicCoords\n\
-_081457F4: .4byte gUnknown_0840B5A0\n\
-_081457F8: .4byte 0x0000ffff\n\
-_081457FC: .4byte gUnknown_02024E8C\n\
-_08145800: .4byte gSprites\n\
-_08145804: .4byte spritecb_81454E0\n\
-_08145808: .4byte gSpriteTemplate_840CAEC\n\
- .syntax divided\n");
-}
-#endif
void spritecb_814580C(struct Sprite *sprite)
{
@@ -2015,223 +1564,79 @@ void spritecb_814580C(struct Sprite *sprite)
sprite->pos1.y = gSprites[sprite->data0].pos1.y;
}
-__attribute__((naked))
-void sub_81458DC(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x4\n\
- ldr r7, _0814597C @ =0x0201c000\n\
- ldr r0, _08145980 @ =0x00004023\n\
- bl VarGet\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl GetStarterPokemon\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- bl SpeciesToNationalPokedexNum\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r10, r0\n\
- movs r4, 0x1\n\
- movs r5, 0\n\
- ldr r0, _08145984 @ =0x00000181\n\
- mov r8, r0\n\
-_0814590E:\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- bl sub_8090D90\n\
- lsls r0, 24\n\
- adds r6, r7, 0\n\
- adds r6, 0x90\n\
- cmp r0, 0\n\
- beq _0814592C\n\
- lsls r0, r5, 1\n\
- adds r0, r6, r0\n\
- strh r4, [r0]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
-_0814592C:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r8\n\
- bls _0814590E\n\
- adds r4, r5, 0\n\
- ldr r0, _08145984 @ =0x00000181\n\
- lsls r1, r4, 16\n\
- mov r9, r1\n\
- movs r2, 0x8E\n\
- adds r2, r7\n\
- mov r8, r2\n\
- adds r1, r7, 0\n\
- adds r1, 0x86\n\
- str r1, [sp]\n\
- cmp r4, r0\n\
- bhi _08145964\n\
- adds r1, r6, 0\n\
- movs r3, 0\n\
- adds r2, r0, 0\n\
-_08145954:\n\
- lsls r0, r4, 1\n\
- adds r0, r1, r0\n\
- strh r3, [r0]\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, r2\n\
- bls _08145954\n\
-_08145964:\n\
- movs r2, 0xE5\n\
- lsls r2, 2\n\
- adds r0, r7, r2\n\
- strh r5, [r0]\n\
- mov r1, r9\n\
- lsrs r0, r1, 16\n\
- cmp r0, 0x43\n\
- bhi _08145988\n\
- mov r2, r8\n\
- strh r5, [r2]\n\
- b _0814598E\n\
- .align 2, 0\n\
-_0814597C: .4byte 0x0201c000\n\
-_08145980: .4byte 0x00004023\n\
-_08145984: .4byte 0x00000181\n\
-_08145988:\n\
- movs r0, 0x44\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
-_0814598E:\n\
- movs r5, 0\n\
- movs r2, 0xE5\n\
- lsls r2, 2\n\
- adds r4, r7, r2\n\
- mov r9, r5\n\
- b _0814599E\n\
-_0814599A:\n\
- cmp r5, 0x43\n\
- bhi _081459EE\n\
-_0814599E:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- ldrh r1, [r4]\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- lsls r1, r5, 1\n\
- adds r1, r7, r1\n\
- lsls r0, r2, 1\n\
- adds r3, r6, r0\n\
- ldrh r0, [r3]\n\
- strh r0, [r1]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- mov r0, r9\n\
- strh r0, [r3]\n\
- ldrh r0, [r4]\n\
- subs r0, 0x1\n\
- strh r0, [r4]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r2, r0\n\
- beq _081459E8\n\
- ldrh r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6, r0\n\
- ldrh r0, [r0]\n\
- strh r0, [r3]\n\
- ldrh r0, [r4]\n\
- lsls r0, 1\n\
- adds r0, r6, r0\n\
- mov r1, r9\n\
- strh r1, [r0]\n\
-_081459E8:\n\
- ldrh r0, [r4]\n\
- cmp r0, 0\n\
- bne _0814599A\n\
-_081459EE:\n\
- mov r2, r8\n\
- ldrh r0, [r2]\n\
- cmp r0, 0x43\n\
- bhi _08145A26\n\
- adds r5, r0, 0\n\
- movs r2, 0\n\
- cmp r5, 0x43\n\
- bhi _08145A5C\n\
- mov r3, r8\n\
-_08145A00:\n\
- lsls r1, r5, 1\n\
- adds r1, r7, r1\n\
- lsls r0, r2, 1\n\
- adds r0, r7, r0\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- adds r0, r2, 0x1\n\
- lsls r0, 16\n\
- lsrs r2, r0, 16\n\
- ldrh r0, [r3]\n\
- cmp r2, r0\n\
- bne _08145A1A\n\
- movs r2, 0\n\
-_08145A1A:\n\
- adds r0, r5, 0x1\n\
- lsls r0, 16\n\
- lsrs r5, r0, 16\n\
- cmp r5, 0x43\n\
- bls _08145A00\n\
- b _08145A5C\n\
-_08145A26:\n\
- movs r4, 0\n\
- ldrh r0, [r7]\n\
- cmp r0, r10\n\
- beq _08145A42\n\
-_08145A2E:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- lsls r0, r4, 1\n\
- adds r0, r7, r0\n\
- ldrh r0, [r0]\n\
- cmp r0, r10\n\
- beq _08145A42\n\
- cmp r4, 0x43\n\
- bls _08145A2E\n\
-_08145A42:\n\
- mov r1, r8\n\
- ldrh r0, [r1]\n\
- subs r0, 0x1\n\
- cmp r4, r0\n\
- bge _08145A5C\n\
- lsls r0, r4, 1\n\
- adds r0, r7, r0\n\
- ldr r2, [sp]\n\
- ldrh r1, [r2]\n\
- strh r1, [r0]\n\
- mov r0, r10\n\
- strh r0, [r2]\n\
- b _08145A62\n\
-_08145A5C:\n\
- mov r2, r10\n\
- ldr r1, [sp]\n\
- strh r2, [r1]\n\
-_08145A62:\n\
- movs r0, 0x44\n\
- mov r1, r8\n\
- strh r0, [r1]\n\
- add sp, 0x4\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+static void sub_81458DC(void) {
+ struct Unk201C000 *unk201C000 = &ewram1c000;
+ u16 starter = SpeciesToNationalPokedexNum(GetStarterPokemon(VarGet(VAR_FIRST_POKE)));
+ u16 seenTypesCount;
+ u16 page;
+ u16 dexNum;
+ u16 j;
+
+ for (dexNum = 1, seenTypesCount = 0; dexNum < 386; dexNum++)
+ {
+ if (sub_8090D90(dexNum, 1))
+ {
+ unk201C000->unk90[seenTypesCount] = dexNum;
+ seenTypesCount++;
+ }
+ }
+
+ for (dexNum = seenTypesCount; dexNum < 386; dexNum++)
+ {
+ unk201C000->unk90[dexNum] = 0;
+ }
+
+ unk201C000->unk394 = seenTypesCount;
+ if (unk201C000->unk394 < POKEMON_TILE_COUNT)
+ {
+ unk201C000->unk8E = seenTypesCount;
+ }
+ else
+ {
+ unk201C000->unk8E = POKEMON_TILE_COUNT;
+ }
+
+ j = 0;
+ do
+ {
+ page = Random() % unk201C000->unk394;
+ unk201C000->unk0[j] = unk201C000->unk90[page];
+
+ j++;
+ unk201C000->unk90[page] = 0;
+ unk201C000->unk394--;
+ if (page != unk201C000->unk394)
+ {
+ unk201C000->unk90[page] = unk201C000->unk90[unk201C000->unk394];
+ unk201C000->unk90[unk201C000->unk394] = 0;
+ }
+ }
+ while (unk201C000->unk394 != 0 && j < POKEMON_TILE_COUNT);
+
+ if (unk201C000->unk8E < POKEMON_TILE_COUNT)
+ {
+ for (j = unk201C000->unk8E, page = 0; j < POKEMON_TILE_COUNT; j++)
+ {
+ unk201C000->unk0[j] = unk201C000->unk0[page];
+
+ page++;
+ if (page == unk201C000->unk8E)
+ page = 0;
+ }
+ unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
+ }
+ else
+ {
+
+ for (dexNum = 0; unk201C000->unk0[dexNum] != starter && dexNum < POKEMON_TILE_COUNT; dexNum++);
+
+ if (dexNum < unk201C000->unk8E - 1)
+ {
+ unk201C000->unk0[dexNum] = unk201C000->unk0[POKEMON_TILE_COUNT - 1];
+ unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
+ }
+ else
+ unk201C000->unk0[POKEMON_TILE_COUNT - 1] = starter;
+ }
+ unk201C000->unk8E = POKEMON_TILE_COUNT;
}
diff --git a/src/daycare.c b/src/daycare.c
index 1729efb2a..92be45cfa 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1,8 +1,11 @@
#include "global.h"
#include "pokemon.h"
#include "string_util.h"
+#include "asm.h"
-u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest)
+extern u8 gLastFieldPokeMenuOpened;
+
+u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
{
s8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -10,7 +13,7 @@ u8 *pokemon_get_nick(struct Pokemon *mon, u8 *dest)
return StringCopy10(dest, nickname);
}
-u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest)
+u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
{
s8 nickname[POKEMON_NAME_LENGTH * 2];
@@ -18,14 +21,368 @@ u8 *pokemon_get_nick_(struct BoxPokemon *mon, u8 *dest)
return StringCopy10(dest, nickname);
}
-u8 daycare_count_pokemon(struct BoxPokemon *daycare_data)
+u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data)
{
u8 i, count;
count = 0;
- for (i = 0; i <= 1; i++)
- if (GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0)
+ for(i = 0;i <= 1;i++)
+ if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0)
count++;
return count;
}
+
+#ifndef ASDF
+__attribute__((naked))
+void sub_8041324(struct BoxPokemon * box_pokemon, void * void_pointer)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ mov r9, r0\n\
+ mov r10, r1\n\
+ movs r7, 0\n\
+ movs r5, 0\n\
+ mov r6, r10\n\
+ adds r6, 0x74\n\
+ movs r0, 0x1\n\
+ mov r8, r0\n\
+_0804133E:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 4\n\
+ mov r1, r9\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetBoxMonData\n\
+ cmp r0, 0\n\
+ beq _0804136E\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xC\n\
+ bl GetBoxMonData\n\
+ adds r1, r0, 0\n\
+ cmp r1, 0\n\
+ bne _0804136E\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ b _08041374\n\
+_0804136E:\n\
+ lsls r0, r5, 1\n\
+ adds r0, r6, r0\n\
+ mov r1, r8\n\
+_08041374:\n\
+ strh r1, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, 0x1\n\
+ bls _0804133E\n\
+ mov r0, r10\n\
+ str r7, [r0, 0x70]\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
+
+s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data)
+{
+ u8 i;
+
+ for(i = 0;i <= 1;i++)
+ if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0)
+ return i;
+
+ return -1;
+}
+
+/*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished
+ s8 empty_slot;
+
+ empty_slot = Daycare_FindEmptySpot(daycare_data);
+ if(MonHasMail(mon) != 0){ // if the mon holds a mail?
+ u8 empty_slot_times_56 = empty_slot * 56;
+ u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36;
+ StringCopy(something2, gSaveBlock2.playerName);
+ PadNameString(something2, 0xFC);
+ something2 += 8;
+ GetMonNick(mon, something2);
+ u8 pokerus = GetMonData(mon, MON_DATA_64);
+ something1 += (u8 * daycare_data)
+}*/
+
+__attribute__((naked))
+void Daycare_SendPokemon()
+{
+ // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped:
+ // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC
+ // the ldm/stm section probably copies some struct, but I'm not sure how the code would look
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ adds r7, r0, 0\n\
+ mov r8, r1\n\
+ mov r0, r8\n\
+ bl Daycare_FindEmptySpot\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ mov r9, r4\n\
+ adds r0, r7, 0\n\
+ bl MonHasMail\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0804144A\n\
+ lsls r0, r4, 24\n\
+ asrs r0, 24\n\
+ lsls r4, r0, 3\n\
+ subs r4, r0\n\
+ lsls r4, 3\n\
+ adds r5, r4, 0\n\
+ adds r5, 0xA0\n\
+ add r5, r8\n\
+ adds r6, r5, 0\n\
+ adds r6, 0x24\n\
+ ldr r1, _08041490 @ =gSaveBlock2\n\
+ adds r0, r6, 0\n\
+ bl StringCopy\n\
+ adds r0, r6, 0\n\
+ movs r1, 0xFC\n\
+ bl PadNameString\n\
+ adds r6, 0x8\n\
+ adds r0, r7, 0\n\
+ adds r1, r6, 0\n\
+ bl GetMonNick\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x40\n\
+ bl GetMonData\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ add r4, r8\n\
+ ldr r2, _08041494 @ =gSaveBlock1\n\
+ lsls r1, r0, 3\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ adds r4, 0xA0\n\
+ ldr r0, _08041498 @ =0x00002b4c\n\
+ adds r1, r0\n\
+ ldm r1!, {r0,r2,r3}\n\
+ stm r4!, {r0,r2,r3}\n\
+ ldm r1!, {r0,r2,r3}\n\
+ stm r4!, {r0,r2,r3}\n\
+ ldm r1!, {r0,r2,r3}\n\
+ stm r4!, {r0,r2,r3}\n\
+ adds r0, r7, 0\n\
+ bl TakeMailFromMon\n\
+_0804144A:\n\
+ mov r2, r9\n\
+ lsls r4, r2, 24\n\
+ asrs r4, 24\n\
+ lsls r5, r4, 2\n\
+ adds r4, r5, r4\n\
+ lsls r4, 4\n\
+ add r4, r8\n\
+ adds r0, r4, 0\n\
+ adds r1, r7, 0\n\
+ movs r2, 0x50\n\
+ bl memcpy\n\
+ adds r0, r4, 0\n\
+ bl BoxMonRestorePP\n\
+ movs r0, 0x88\n\
+ lsls r0, 1\n\
+ add r0, r8\n\
+ adds r0, r5\n\
+ movs r1, 0\n\
+ str r1, [r0]\n\
+ adds r0, r7, 0\n\
+ bl ZeroMonData\n\
+ bl party_compaction\n\
+ bl CalculatePlayerPartyCount\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08041490: .4byte gSaveBlock2\n\
+_08041494: .4byte gSaveBlock1\n\
+_08041498: .4byte 0x00002b4c\n\
+ .syntax divided\n");
+}
+
+void Daycare_SendPokemon_Special()
+{
+ Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData);
+}
+
+void sub_80417F4(u8 *);
+
+void sub_80414C0(struct BoxPokemon * daycare_data)
+{
+ u32 second_species;
+ if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){
+ daycare_data[0] = daycare_data[1];
+ ZeroBoxMonData(&daycare_data[1]);
+ memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38);
+ *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69);
+ *((u32 *)(daycare_data) + 69) = second_species;
+ sub_80417F4((u8 *) (daycare_data + 1) + 0x88);
+ }
+}
+
+u8 TryIncrementMonLevel(struct Pokemon *);
+extern u16 word_2024E82;
+
+void sub_804151C(struct Pokemon * mon)
+{
+ s32 i;
+ u8 r6;
+ u16 temp;
+
+ for(i = 0; i < 100; i++){
+ if(TryIncrementMonLevel(mon) == FALSE) goto end;
+
+ r6 = 1;
+ while((temp = sub_803B7C8(mon, r6)) != 0){
+ r6 = 0;
+ if(temp == 0xffff){
+ DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82);
+ }
+ }
+ }
+
+ end:
+
+ CalculateMonStats(mon);
+}
+
+__attribute__((naked))
+u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x68\n\
+ adds r5, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r4, r1, 24\n\
+ lsls r7, r4, 2\n\
+ adds r0, r7, r4\n\
+ lsls r0, 4\n\
+ adds r6, r5, r0\n\
+ ldr r1, _08041640 @ =gStringVar1\n\
+ adds r0, r6, 0\n\
+ bl GetBoxMonNick\n\
+ adds r0, r6, 0\n\
+ movs r1, 0xB\n\
+ bl GetBoxMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r9, r0\n\
+ adds r0, r6, 0\n\
+ mov r1, sp\n\
+ bl sub_803B4B4\n\
+ mov r0, sp\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ cmp r0, 0x64\n\
+ beq _080415D8\n\
+ mov r0, sp\n\
+ movs r1, 0x19\n\
+ bl GetMonData\n\
+ movs r2, 0x88\n\
+ lsls r2, 1\n\
+ adds r1, r5, r2\n\
+ adds r1, r7\n\
+ ldr r1, [r1]\n\
+ adds r0, r1\n\
+ str r0, [sp, 0x64]\n\
+ add r2, sp, 0x64\n\
+ mov r0, sp\n\
+ movs r1, 0x19\n\
+ bl SetMonData\n\
+ mov r0, sp\n\
+ bl sub_804151C\n\
+_080415D8:\n\
+ ldr r0, _08041644 @ =gPlayerParty\n\
+ movs r1, 0xFA\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ mov r8, r1\n\
+ mov r0, r8\n\
+ mov r1, sp\n\
+ movs r2, 0x64\n\
+ bl memcpy\n\
+ lsls r0, r4, 3\n\
+ subs r0, r4\n\
+ lsls r1, r0, 3\n\
+ adds r0, r5, r1\n\
+ adds r0, 0xC0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08041610\n\
+ adds r4, r1, 0\n\
+ adds r4, 0xA0\n\
+ adds r4, r5, r4\n\
+ mov r0, r8\n\
+ adds r1, r4, 0\n\
+ bl GiveMailToMon2\n\
+ adds r0, r4, 0\n\
+ bl sub_80417F4\n\
+_08041610:\n\
+ bl party_compaction\n\
+ adds r0, r6, 0\n\
+ bl ZeroBoxMonData\n\
+ movs r2, 0x88\n\
+ lsls r2, 1\n\
+ adds r0, r5, r2\n\
+ adds r0, r7\n\
+ movs r1, 0\n\
+ str r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl sub_80414C0\n\
+ bl CalculatePlayerPartyCount\n\
+ mov r0, r9\n\
+ add sp, 0x68\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08041640: .4byte gStringVar1\n\
+_08041644: .4byte gPlayerParty\n\
+ .syntax divided");
+}
+
+extern u8 gSpecialVar_0x8004;
+
+u16 sub_8041648()
+{
+ return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004);
+}
+
+u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){
+ struct BoxPokemon temp = *mon;
+ u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps;
+ SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp);
+ return GetLevelFromBoxMonExp(&temp);
+}
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 380fe6e4d..86719a2ae 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -5,24 +5,254 @@
#include "field_message_box.h"
#include "pokedex.h"
#include "rng.h"
+#include "string_util.h"
+#include "strings.h"
#include "text.h"
+u8 sub_80EB37C(u16);
u8 sub_80EB8C0(void);
u8 sub_80EB868(u8);
u16 sub_80EAE88(u8);
void sub_80EB890(u8);
u16 sub_80EB784(u16 group);
u8 sub_80EAD7C(u8 group);
-u8 sub_80EB680(u16 *, u16, u16, u16);
+static bool8 sub_80EB680(u16 *, u16, u16, u16);
static u16 sub_80EB9D8(void);
static u16 sub_80EB960(void);
u16 sub_80EB72C(u16);
+extern const u8 gSpeciesNames[][11];
+extern u8 gMoveNames[][13];
extern void *gEasyChatGroupWords[];
extern const u8 gEasyChatGroupSizes[];
extern u16 gSpecialVar_0x8004;
+extern const u8 gOtherText_ThreeQuestions[];
+
+#ifdef NONMATCHING
+u8 *sub_80EB3FC(u8 *dst, u16 word) {
+ int group, wordIndex;
+ u8 *src;
+ u16 i;
+
+
+ if (sub_80EB37C(word))
+ {
+ return StringCopy(dst, gOtherText_ThreeQuestions);
+ }
+
+ if (word != 0xFFFF)
+ {
+ group = word >> 9;
+ wordIndex = word & 0x1FF;
+ switch (group)
+ {
+ case EC_GROUP_POKEMON: // 0
+ case EC_GROUP_POKEMON_2: // 21
+ dst = StringCopy(dst, gSpeciesNames[wordIndex]);
+ break;
+
+ case EC_GROUP_MOVE_1: // 18
+ case EC_GROUP_MOVE_2: // 19
+ dst = StringCopy(dst, gMoveNames[wordIndex]);
+ break;
+
+ default:
+ src = gEasyChatGroupWords[group];
+
+ i = wordIndex - 1;
+ while (i != 0xFFFF)
+ {
+ while (*src++ != EOS)
+ {
+ }
+ i--;
+ }
+ dst = StringCopy(dst, src);
+ break;
+ }
+ }
+
+ dst[0] = EOS;
+ return dst;
+}
+#endif
+
+u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
+ u16 i;
+ u16 n;
+
+ const u16 i1 = arg2 - 1;
+
+ for (i = 0; i < arg3; i++)
+ {
+ u16 word;
+
+ for (n = 0; n < i1; n++)
+ {
+ dst = sub_80EB3FC(dst, words[0]);
+
+ if (words[0] != 0xFFFF)
+ {
+ dst[0] = CHAR_SPACE;
+ dst++;
+ }
+
+ words++;
+ }
+
+ word = words[0];
+ words++;
+ dst = sub_80EB3FC(dst, word);
+
+ dst[0] = 0xFE;
+ dst++;
+ }
+
+ dst--;
+ dst[0] = EOS;
+
+ return dst;
+}
+
+u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3) {
+ u16 i;
+ u16 n;
+
+ const u16 i1 = arg2 - 1;
+
+ for (i = 0; i < arg3; i++)
+ {
+ u16 word;
+
+ for (n = 0; n < i1; n++)
+ {
+ dst = sub_80EB3FC(dst, words[0]);
+
+ if (words[0] != 0xFFFF)
+ {
+ dst[0] = CHAR_SPACE;
+ dst++;
+ }
+
+ words++;
+ }
+
+ word = words[0];
+ words++;
+ dst = sub_80EB3FC(dst, word);
+
+ // Only difference with ConvertEasyChatWordsToString
+ dst[0] = (i == 0) ? 0xFE : 0xFA;
+ dst++;
+ }
+
+ dst--;
+ dst[0] = EOS;
+
+ return dst;
+}
+
+
+u16 unref_sub_80EB5E0(u16 arg0) {
+ u8 *chars;
+ u16 i;
+ u16 strlen;
+ int group, word;
+
+
+ if (arg0 == 0xFFFF)
+ {
+ return 0;
+ }
+
+ group = arg0 >> 9;
+ word = arg0 & 0x1FF;
+ switch (group)
+ {
+ case EC_GROUP_POKEMON: // 0
+ case EC_GROUP_POKEMON_2: // 21
+ chars = (u8 *) gSpeciesNames[word];
+ break;
+
+ case EC_GROUP_MOVE_1: // 18
+ case EC_GROUP_MOVE_2: // 19
+ chars = gMoveNames[word];
+ break;
+
+ default:
+ chars = gEasyChatGroupWords[group];
+
+ i = word - 1;
+ while (i != 0xFFFF)
+ {
+ while (*chars++ != EOS)
+ {
+ }
+ i--;
+ }
+ break;
+ }
+
+ strlen = 0;
+ while (*chars != EOS)
+ {
+ chars++;
+ strlen += 1;
+ }
+
+ return strlen;
+}
+
+static bool8 sub_80EB680(u16 *arg0, u16 arg1, u16 arg2, u16 arg3) {
+ return FALSE;
+}
+
+void unref_sub_80EB684(u8 arg0, u16 arg1) {
+ u16 *ptr;
+ u16 c;
+
+ // FIXME: find actual tv shows used
+ switch (arg0)
+ {
+ case 5:
+ c = 6;
+ ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x04);
+ break;
+ case 7:
+ c = 2;
+ ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x1C);
+ break;
+ case 8:
+ c = 1;
+ ptr = (u16*)((void *)&gSaveBlock1.tvShows.shows[arg1] + 0x02);
+ break;
+
+ default:
+ return;
+ }
+
+ c -= 1;
+ while (c != 0xFFFF)
+ {
+ *ptr = -1;
+ ptr++;
+ c -= 1;
+ }
+}
+
+void sub_80EB6FC(u16 *arg0, u16 arg1) {
+ u16 i;
+
+ for (i = arg1 - 1; i != 0xFFFF; i--)
+ {
+ *arg0 = 0xFFFF;
+ arg0++;
+ }
+
+}
+
u16 sub_80EB72C(u16 group) {
u16 local1;
@@ -260,3 +490,4 @@ static u16 sub_80EB9D8(void) {
return -1;
}
+
diff --git a/src/intro.c b/src/intro.c
index ea6edba3d..2a62892ba 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -19,7 +19,6 @@
#include "trig.h"
extern void *species_and_otid_get_pal(/*TODO: arg types*/);
-extern void sub_8143648(int, u8);
extern void sub_8143680(int, u8);
struct MonCoords
diff --git a/src/item.c b/src/item.c
index 656563ad4..7257c3649 100644
--- a/src/item.c
+++ b/src/item.c
@@ -6,25 +6,6 @@ extern struct Berry *GetBerryInfo(u8 berry);
extern u8 gOtherText_Berry2[];
extern u8 gUnknown_02038560;
-
-struct Item
-{
- u8 name[14];
- u16 itemId;
- u16 price;
- u8 holdEffect;
- u8 holdEffectParam;
- u8 *description;
- u8 importance;
- u8 unk19;
- u8 pocket;
- u8 type;
- ItemUseFunc fieldUseFunc;
- u8 battleUsage;
- ItemUseFunc battleUseFunc;
- u8 secondaryId;
-};
-
extern struct Item gItems[];
struct BagPocket
diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c
index 9f586dcb9..fd0ad773b 100644
--- a/src/mori_debug_menu.c
+++ b/src/mori_debug_menu.c
@@ -65,7 +65,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr)
s8 MoriDebugMenu_Egg(void)
{
- if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() )
+ if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
sub_8041940();
CloseMenu();
@@ -74,7 +74,7 @@ s8 MoriDebugMenu_Egg(void)
s8 MoriDebugMenu_MaleEgg(void)
{
- if ( daycare_count_pokemon(gSaveBlock1.filler_2F9C) == 2 && daycare_relationship_score_from_savegame() )
+ if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
sub_8041950();
CloseMenu();
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 76fe13059..58722010f 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -23,7 +23,7 @@ extern u8 gUnknown_083D0288[2];
extern u8 gUnknown_083D028A[2][3];
extern u8 gUnknown_083D0290[9][4];
-extern u8 gUnknown_02038738[]; //Don't know what type this points to
+extern struct RecordMixing_UnknownStruct gUnknown_02038738[2]; //Don't know what type this points to
extern u16 gSpecialVar_0x8005;
extern u32 gUnknown_03005D2C;
extern u8 gUnknown_03000718;
@@ -36,7 +36,7 @@ extern bool8 gReceivedRemoteLinkPlayers;
void sub_80B929C(void)
{
- sub_8083A84(sub_80B9484);
+ sub_8083A84(Task_RecordMixing_Main);
}
struct PlayerRecords {
@@ -53,8 +53,10 @@ struct PlayerRecords {
extern struct PlayerRecords unk_2008000;
extern struct PlayerRecords unk_2018000;
-#ifdef NONMATCHING
-void sub_80B92AC(void)
+void sub_80BC300();
+void sub_80C045C();
+
+void RecordMixing_PrepareExchangePacket(void)
{
sub_80BC300();
sub_80C045C();
@@ -64,128 +66,20 @@ void sub_80B92AC(void)
memcpy(unk_2018000.filler1004, gUnknown_083D0274, 0x40);
memcpy(unk_2018000.filler1044, gUnknown_083D0278, 0x40);
memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, 0x28);
- memcpy(gUnknown_02038738, gSaveBlock1.filler_303C, 0x38);
- memcpy(gUnknown_02038738 + 0x38, gSaveBlock1.filler_3074, 0x38);
- sub_8041324(gSaveBlock1.filler_2F9C, gUnknown_02038738);
+ gUnknown_02038738[0] = gSaveBlock1.filler_303C[0];
+ gUnknown_02038738[1] = gSaveBlock1.filler_303C[1];
+ sub_8041324(gSaveBlock1.daycareData, gUnknown_02038738);
memcpy(unk_2018000.filler10AC, gUnknown_083D0280, 0x78);
memcpy(unk_2018000.filler1124, gUnknown_083D0284, 0xA4);
if (GetMultiplayerId() == 0)
unk_2018000.filler11C8[0] = sub_8126338();
}
-#else
-__attribute__((naked))
-void sub_80B92AC(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- bl sub_80BC300\n\
- bl sub_80C045C\n\
- ldr r6, _080B9364 @ =0x02018000\n\
- ldr r0, _080B9368 @ =recordMixingSecretBases\n\
- ldr r1, [r0]\n\
- movs r2, 0xC8\n\
- lsls r2, 4\n\
- adds r0, r6, 0\n\
- bl memcpy\n\
- movs r1, 0xC8\n\
- lsls r1, 4\n\
- adds r0, r6, r1\n\
- ldr r1, _080B936C @ =recordMixingTvShows\n\
- ldr r1, [r1]\n\
- movs r2, 0xE1\n\
- lsls r2, 2\n\
- bl memcpy\n\
- ldr r2, _080B9370 @ =0x00001004\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9374 @ =gUnknown_083D0274\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r1, _080B9378 @ =0x00001044\n\
- adds r0, r6, r1\n\
- ldr r1, _080B937C @ =gUnknown_083D0278\n\
- ldr r1, [r1]\n\
- movs r2, 0x40\n\
- bl memcpy\n\
- ldr r2, _080B9380 @ =0x00001084\n\
- adds r0, r6, r2\n\
- ldr r1, _080B9384 @ =recordMixingEasyChatPairs\n\
- ldr r1, [r1]\n\
- movs r2, 0x28\n\
- bl memcpy\n\
- ldr r5, _080B9388 @ =gUnknown_02038738\n\
- ldr r4, _080B938C @ =gSaveBlock1\n\
- ldr r0, _080B9390 @ =0x0000303c\n\
- adds r1, r4, r0\n\
- adds r0, r5, 0\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r2, _080B9394 @ =0x00003074\n\
- adds r1, r4, r2\n\
- adds r0, r5, 0\n\
- adds r0, 0x38\n\
- movs r2, 0x38\n\
- bl memcpy\n\
- ldr r0, _080B9398 @ =0x00002f9c\n\
- adds r4, r0\n\
- adds r0, r4, 0\n\
- adds r1, r5, 0\n\
- bl sub_8041324\n\
- ldr r1, _080B939C @ =0x000010ac\n\
- adds r0, r6, r1\n\
- ldr r1, _080B93A0 @ =gUnknown_083D0280\n\
- ldr r1, [r1]\n\
- movs r2, 0x78\n\
- bl memcpy\n\
- ldr r2, _080B93A4 @ =0x00001124\n\
- adds r0, r6, r2\n\
- ldr r1, _080B93A8 @ =gUnknown_083D0284\n\
- ldr r1, [r1]\n\
- movs r2, 0xA4\n\
- bl memcpy\n\
- bl GetMultiplayerId\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080B935C\n\
- bl sub_8126338\n\
- ldr r2, _080B93AC @ =0x000011c8\n\
- adds r1, r6, r2\n\
- strh r0, [r1]\n\
-_080B935C:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080B9364: .4byte 0x02018000\n\
-_080B9368: .4byte recordMixingSecretBases\n\
-_080B936C: .4byte recordMixingTvShows\n\
-_080B9370: .4byte 0x00001004\n\
-_080B9374: .4byte gUnknown_083D0274\n\
-_080B9378: .4byte 0x00001044\n\
-_080B937C: .4byte gUnknown_083D0278\n\
-_080B9380: .4byte 0x00001084\n\
-_080B9384: .4byte recordMixingEasyChatPairs\n\
-_080B9388: .4byte gUnknown_02038738\n\
-_080B938C: .4byte gSaveBlock1\n\
-_080B9390: .4byte 0x0000303c\n\
-_080B9394: .4byte 0x00003074\n\
-_080B9398: .4byte 0x00002f9c\n\
-_080B939C: .4byte 0x000010ac\n\
-_080B93A0: .4byte gUnknown_083D0280\n\
-_080B93A4: .4byte 0x00001124\n\
-_080B93A8: .4byte gUnknown_083D0284\n\
-_080B93AC: .4byte 0x000011c8\n\
- .syntax divided\n");
-}
-#endif
-#undef NONMATCHING
-
-void sub_80B93B0(u32 a)
+void RecordMixing_ReceiveExchangePacket(u32 a)
{
sub_80BD674(unk_2008000.secretBases, sizeof(struct PlayerRecords), a);
- sub_80BFD44(unk_2008000.tvShows, sizeof(struct PlayerRecords), a);
+ sub_80BFD44((u8 *)unk_2008000.tvShows, sizeof(struct PlayerRecords), a);
sub_80C0514(unk_2008000.filler1004, sizeof(struct PlayerRecords), a);
sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a);
//UB: Too many arguments for function "sub_80FA4E4"
@@ -195,7 +89,7 @@ void sub_80B93B0(u32 a)
sub_80B9F3C(unk_2008000.filler11C8, a);
}
-void sub_80B9450(u8 taskId)
+void Task_RecordMixing_SoundEffect(u8 taskId)
{
gTasks[taskId].data[0]++;
if (gTasks[taskId].data[0] == 50)
@@ -206,24 +100,23 @@ void sub_80B9450(u8 taskId)
}
#define TD_STATE 0
-
-void sub_80B9484(u8 taskId)
+void Task_RecordMixing_Main(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
switch (taskData[TD_STATE])
{
- case 0:
+ case 0: // init
sub_8007270(gSpecialVar_0x8005);
VarSet(0x4000, 1);
gUnknown_03000718 = 0;
- sub_80B92AC();
+ RecordMixing_PrepareExchangePacket();
CreateRecordMixingSprite();
taskData[TD_STATE] = 1;
taskData[10] = CreateTask(sub_80B95F0, 0x50);
- taskData[15] = CreateTask(sub_80B9450, 0x51);
+ taskData[15] = CreateTask(Task_RecordMixing_SoundEffect, 0x51);
break;
- case 1:
+ case 1: // wait for sub_80B95F0
if (!gTasks[taskData[10]].isActive)
{
taskData[TD_STATE] = 2;
@@ -237,7 +130,7 @@ void sub_80B9484(u8 taskId)
taskData[TD_STATE] = 3;
PlaySE(SE_W226);
break;
- case 3:
+ case 3: // wait for sub_80BA00C
if (!gTasks[taskData[10]].isActive)
{
taskData[TD_STATE] = 4;
@@ -247,7 +140,7 @@ void sub_80B9484(u8 taskId)
taskData[8] = 0;
}
break;
- case 4:
+ case 4: // wait 60 frames
taskData[8]++;
if (taskData[8] > 60)
taskData[TD_STATE] = 5;
@@ -275,10 +168,10 @@ void sub_80B95F0(u8 taskId)
MenuDisplayMessageBox();
MenuPrint(gOtherText_MixingRecordsWithFriend, 2, 15);
task->data[8] = 0x708;
- task->data[TD_STATE] = 0x190;
+ task->data[TD_STATE] = 400;
ClearLinkCallback_2();
break;
- case 100:
+ case 100: // wait 20 frames
task->data[12]++;
if (task->data[12] > 20)
{
@@ -320,7 +213,7 @@ void sub_80B95F0(u8 taskId)
if (sub_800820C() == GetLinkPlayerCount_2())
task->data[TD_STATE] = 1;
break;
- case 400:
+ case 400: // wait 20 frames
task->data[12]++;
if (task->data[12] > 20)
{
@@ -328,7 +221,7 @@ void sub_80B95F0(u8 taskId)
task->data[12] = 0;
}
break;
- case 1:
+ case 1: // wait for handshake
if (gReceivedRemoteLinkPlayers)
{
ConvertIntToDecimalStringN(gStringVar1, GetMultiplayerId_(), 2, 2);
@@ -342,16 +235,16 @@ void sub_80B95F0(u8 taskId)
task->data[6] = GetLinkPlayerCount_2();
task->data[TD_STATE] = 0;
task->data[5] = GetMultiplayerId_();
- task->func = sub_80B97DC;
+ task->func = Task_RecordMixing_SendPacket;
StorePtrInTaskData(&unk_2018000, &task->data[2]);
- subTaskId = CreateTask(Task_CopyRecvBuffer, 0x50);
+ subTaskId = CreateTask(Task_RecordMixing_CopyReceiveBuffer, 0x50);
task->data[10] = subTaskId;
gTasks[subTaskId].data[0] = taskId;
//StorePtrInTaskData((void*)0x2008000, &gTasks[subTaskId].data[5]);
StorePtrInTaskData((u8 *)&unk_2018000 - 0x10000, &gTasks[subTaskId].data[5]);
break;
}
- case 5:
+ case 5: // wait 60 frames
task->data[10]++;
if (task->data[10] > 60)
{
@@ -362,9 +255,10 @@ void sub_80B95F0(u8 taskId)
}
}
-void sub_80B97DC(u8 taskId)
+void Task_RecordMixing_SendPacket(u8 taskId)
{
struct Task *task = &gTasks[taskId];
+ // does this send the data 24 times?
switch (task->data[TD_STATE])
{
@@ -392,15 +286,15 @@ void sub_80B97DC(u8 taskId)
break;
case 4:
if (!gTasks[task->data[10]].isActive)
- task->func = sub_80B9A1C;
+ task->func = Task_RecordMixing_SendPacket_SwitchToReceive;
}
}
-void Task_CopyRecvBuffer(u8 taskId)
+void Task_RecordMixing_CopyReceiveBuffer(u8 taskId)
{
struct Task *task = &gTasks[taskId];
s32 recvStatus = GetBlockReceivedStatus();
- u32 sp8 = 0;
+ u8 handledPlayers = 0;
if (recvStatus == sub_8008198())
{
@@ -408,32 +302,27 @@ void Task_CopyRecvBuffer(u8 taskId)
for (player = 0; player < GetLinkPlayerCount(); player++)
{
- //_080B98D4
- u8 *ptr;
void *src;
u8 *dst;
if ((recvStatus >> player) & 1)
{
- ptr = LoadPtrFromTaskData(&task->data[5]);
- dst = ptr + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords);
+ dst = LoadPtrFromTaskData(&task->data[5]) + task->data[player + 1] * BUFFER_CHUNK_SIZE + player * sizeof(struct PlayerRecords);
src = GetPlayerRecvBuffer(player);
- if ((u32)(task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords))
+ if ((task->data[player + 1] + 1) * BUFFER_CHUNK_SIZE > sizeof(struct PlayerRecords))
memcpy(dst, src, sizeof(struct PlayerRecords) - task->data[player + 1] * BUFFER_CHUNK_SIZE);
else
memcpy(dst, src, BUFFER_CHUNK_SIZE);
- //_080B993C
ResetBlockReceivedFlag(player);
task->data[player + 1]++;
if ((u16)task->data[player + 1] == 0x18)
- sp8 = (u8)(sp8 + 1);
+ handledPlayers++;
}
}
- //line 828
gTasks[task->data[0]].data[0]++;
}
//_080B998A
- if (sp8 == GetLinkPlayerCount())
+ if (handledPlayers == GetLinkPlayerCount())
DestroyTask(taskId);
}
@@ -445,18 +334,18 @@ void sub_80B99B4(u8 taskId)
DestroyTask(taskId);
}
-void sub_80B99E8(u8 taskId)
+void Task_RecordMixing_ReceivePacket(u8 taskId)
{
struct Task *task = &gTasks[taskId];
task->func = sub_80B99B4;
if (gUnknown_03000718 == 1)
- sub_80B93B0(task->data[5]);
+ RecordMixing_ReceiveExchangePacket(task->data[5]);
}
-void sub_80B9A1C(u8 taskId)
+void Task_RecordMixing_SendPacket_SwitchToReceive(u8 taskId)
{
- gTasks[taskId].func = sub_80B99E8;
+ gTasks[taskId].func = Task_RecordMixing_ReceivePacket;
gUnknown_03000718 = 1;
}
@@ -537,6 +426,7 @@ u8 sub_80B9BBC(u16 *a)
return a[16];
}
+#undef NONMATCHING
#ifdef NONMATCHING
void sub_80B9BC4(u32 a, u32 b, u32 c, u32 d)
diff --git a/src/rom3.c b/src/rom3.c
index 0169128cb..ef7b9a7ed 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -582,7 +582,7 @@ void sub_800C47C(u8 taskId)
}
}
-void dp01_build_cmdbuf_x00_a_b_0(u8 a, int b, int c)
+void dp01_build_cmdbuf_x00_a_b_0(u8 a, u8 b, u8 c)
{
gUnknown_03004040[0] = 0;
gUnknown_03004040[1] = b;
@@ -591,7 +591,7 @@ void dp01_build_cmdbuf_x00_a_b_0(u8 a, int b, int c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, int b, int c)
+void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c)
{
gUnknown_03004040[0] = 1;
gUnknown_03004040[1] = b;
@@ -600,7 +600,7 @@ void dp01_build_cmdbuf_x01_a_b_0(u8 a, int b, int c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, int b, int c, u8 d, u8 *e)
+void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, u8 b, u8 c, u8 d, u8 *e)
{
int i;
@@ -612,7 +612,7 @@ void dp01_build_cmdbuf_x02_a_b_varargs(u8 a, int b, int c, u8 d, u8 *e)
dp01_prepare_buffer(a, gUnknown_03004040, d + 3);
}
-void unref_sub_800C6A4(u8 a, int b, u8 c, u8 *d)
+void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
{
int i;
@@ -633,7 +633,7 @@ void dp01_build_cmdbuf_x04_4_4_4(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void sub_800C704(u8 a, int b, int c)
+void sub_800C704(u8 a, u8 b, u8 c)
{
gUnknown_03004040[0] = 5;
gUnknown_03004040[1] = b;
@@ -642,7 +642,7 @@ void sub_800C704(u8 a, int b, int c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x06_a(u8 a, int b)
+void dp01_build_cmdbuf_x06_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 6;
gUnknown_03004040[1] = b;
@@ -703,7 +703,7 @@ void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x0D_a(u8 a, int b)
+void dp01_build_cmdbuf_x0D_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 13;
gUnknown_03004040[1] = b;
@@ -721,7 +721,7 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c)
dp01_prepare_buffer(a, gUnknown_03004040, b * 3 + 2);
}
-void dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes(u8 a, u16 b, u8 c, u16 d, int e, u8 f, u8 *g)
+void dp01_build_cmdbuf_x0F_aa_b_cc_dddd_e_mlc_weather_00_x1Cbytes(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
{
gUnknown_03004040[0] = 15;
gUnknown_03004040[1] = b;
@@ -1039,7 +1039,7 @@ _0800CB54: .4byte gUnknown_030041C0\n\
.syntax divided\n");
}
-void dp01_build_cmdbuf_x12_a_bb(u8 a, int b, u16 c)
+void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c)
{
gUnknown_03004040[0] = 18;
gUnknown_03004040[1] = b;
@@ -1048,14 +1048,14 @@ void dp01_build_cmdbuf_x12_a_bb(u8 a, int b, u16 c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void unref_sub_800CB84(u8 a, int b)
+void unref_sub_800CB84(u8 a, u8 b)
{
gUnknown_03004040[0] = 19;
gUnknown_03004040[1] = b;
dp01_prepare_buffer(a, gUnknown_03004040, 2);
}
-void sub_800CBA4(u8 a, int b, int c, u8 *d)
+void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
{
u32 i;
@@ -1078,7 +1078,7 @@ void sub_800CBE0(u8 a, u8 *b)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, int b, int c, int d, u8 *e)
+void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
{
int i;
@@ -1109,7 +1109,7 @@ void dp01_build_cmdbuf_x18_0_aa_health_bar_update(u8 a, s16 b)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x19_a_bb(u8 a, int b, s16 c)
+void dp01_build_cmdbuf_x19_a_bb(u8 a, u8 b, s16 c)
{
gUnknown_03004040[0] = 25;
gUnknown_03004040[1] = b;
@@ -1132,7 +1132,7 @@ void dp01_build_cmdbuf_x1A_aaaa_bbbb(u8 a, u32 b, u32 c)
dp01_prepare_buffer(a, gUnknown_03004040, 9);
}
-void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, int b, u32 c)
+void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, u8 b, u32 c)
{
gUnknown_03004040[0] = 27;
gUnknown_03004040[1] = b;
@@ -1143,7 +1143,7 @@ void dp01_build_cmdbuf_x1B_aaaa_b(u8 a, int b, u32 c)
dp01_prepare_buffer(a, gUnknown_03004040, 6);
}
-void dp01_build_cmdbuf_x1C_a(u8 a, int b)
+void dp01_build_cmdbuf_x1C_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 28;
gUnknown_03004040[1] = b;
@@ -1203,7 +1203,7 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c)
dp01_prepare_buffer(a, gUnknown_03004040, b + 3);
}
-void dp01_build_cmdbuf_x21_a_bb(u8 a, int b, u16 c)
+void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c)
{
gUnknown_03004040[0] = 33;
gUnknown_03004040[1] = b;
@@ -1212,7 +1212,7 @@ void dp01_build_cmdbuf_x21_a_bb(u8 a, int b, u16 c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, int b, u8 *c)
+void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
{
int i;
@@ -1250,7 +1250,7 @@ void dp01_build_cmdbuf_x25_25_25_25(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x26_a(u8 a, int b)
+void dp01_build_cmdbuf_x26_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 38;
gUnknown_03004040[1] = b;
@@ -1320,7 +1320,7 @@ void dp01_build_cmdbuf_x2D_2D_2D_2D(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x2E_a(u8 a, int b)
+void dp01_build_cmdbuf_x2E_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 46;
gUnknown_03004040[1] = b;
@@ -1367,7 +1367,7 @@ void dp01_build_cmdbuf_x32_32_32_32(u8 a)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x33_a_33_33(u8 a, int b)
+void dp01_build_cmdbuf_x33_a_33_33(u8 a, u8 b)
{
gUnknown_03004040[0] = 51;
gUnknown_03004040[1] = b;
@@ -1376,7 +1376,7 @@ void dp01_build_cmdbuf_x33_a_33_33(u8 a, int b)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, int b, u16 c)
+void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, u8 b, u16 c)
{
gUnknown_03004040[0] = 52;
gUnknown_03004040[1] = b;
@@ -1385,21 +1385,21 @@ void dp01_build_cmdbuf_x34_a_bb_aka_battle_anim(u8 a, int b, u16 c)
dp01_prepare_buffer(a, gUnknown_03004040, 4);
}
-void sub_800D1D8(u8 a, int b)
+void sub_800D1D8(u8 a, u8 b)
{
gUnknown_03004040[0] = 53;
gUnknown_03004040[1] = b;
dp01_prepare_buffer(a, gUnknown_03004040, 2);
}
-void dp01_build_cmdbuf_x38_a(u8 a, int b)
+void dp01_build_cmdbuf_x38_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 54;
gUnknown_03004040[1] = b;
dp01_prepare_buffer(a, gUnknown_03004040, 2);
}
-void dp01_build_cmdbuf_x37_a(u8 a, int b)
+void dp01_build_cmdbuf_x37_a(u8 a, u8 b)
{
gUnknown_03004040[0] = 55;
gUnknown_03004040[1] = b;
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index b216bbe97..437c62400 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -20,7 +20,6 @@
#define NUM_BATTLE_SLOTS 4
#define gBattleMonPartyPositions gUnknown_02024A6A
-#define gCastformFrontSpriteCoords gUnknownCastformCoords_0837F598
#define gCastformElevations gUnknownCastformData_0837F5A8
#define gCastformBackSpriteYCoords gUnknown_0837F5AC
#define gTransformPersonalities gUnknown_02024E70
diff --git a/src/secret_base.c b/src/secret_base.c
index 572dfaa1d..2769806f6 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -2,10 +2,831 @@
#include "string_util.h"
#include "strings.h"
#include "text.h"
+#include "event_data.h"
+#include "vars.h"
+#include "rom4.h"
+#include "asm.h"
+#include "script.h"
+#include "field_player_avatar.h"
+#include "field_camera.h"
+#include "map_constants.h"
+#include "task.h"
+#include "palette.h"
+#include "decoration.h"
+#include "field_weather.h"
+#include "metatile_behavior.h"
+#include "pokemon.h"
-u8 sub_80BB8A8(void *);
+extern u8 gUnknown_020387DC;
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+extern u16 gSpecialVar_0x8007;
+extern u16 gScriptResult;
+extern const struct
+{
+ u16 unk_083D1358_0;
+ u16 unk_083D1358_1;
+} gUnknown_083D1358[7];
+extern const u8 gUnknown_083D1374[4 * 16];
+extern void *gUnknown_0300485C;
+extern const u8 sub_807D770(void);
+extern const u8 gUnknown_083D13EC[12];
+extern const u8 sub_80BCCA4(u8);
+extern u8 gUnknown_081A2E14[];
-u8 *sub_80BC190(u8 *dest, u8 arg1) {
+
+void sub_80BB4AC(struct SecretBaseRecord *record) // 080bb4ac
+{
+ u16 i;
+ u16 j;
+ record->sbr_field_0 = 0;
+ for (i=0; i<7; i++)
+ record->sbr_field_2[i] = 0xff;
+ for (i=0; i<4; i++)
+ record->trainerId[i] = 0x00;
+ record->sbr_field_e = 0;
+ record->sbr_field_10 = 0;
+ record->sbr_field_11 = 0;
+ record->sbr_field_1_0 = 0;
+ record->gender = 0;
+ record->sbr_field_1_5 = 0;
+ record->sbr_field_1_6 = 0;
+ for (i=0; i<16; i++) {
+ record->decorations[i] = 0;
+ record->decorationPos[i] = 0;
+ }
+ for (i=0; i<6; i++) {
+ for (j=0; j<4; j++) {
+ record->partyMoves[i * 4 + j] = 0;
+ }
+ record->partyPersonality[i] = 0;
+ record->partyEVs[i] = 0;
+ record->partySpecies[i] = 0;
+ record->partyHeldItems[i] = 0;
+ record->partyLevels[i] = 0;
+ }
+}
+
+void ResetSecretBase(u8 idx) // 80bb594
+{
+ sub_80BB4AC(&(gSaveBlock1.secretBases[idx]));
+}
+
+void ResetSecretBases(void) // 080bb5b4
+{
+ u16 i;
+ for (i=0; i<20; i++)
+ ResetSecretBase(i);
+}
+
+void sub_80BB5D0(void) // 080bb5d0
+{
+ gUnknown_020387DC = gSpecialVar_0x8004;
+}
+
+void sub_80BB5E4(void) // 80bb5e4
+{
+ u16 idx;
+ gScriptResult = 0;
+ for (idx=0; idx<20; idx++) {
+ if (gUnknown_020387DC != gSaveBlock1.secretBases[idx].sbr_field_0)
+ continue;
+ gScriptResult = 1;
+ VarSet(VAR_0x4054, idx);
+ break;
+ }
+}
+
+void sub_80BB63C(void) // 80bb63c
+{
+ if (gSaveBlock1.secretBases[0].sbr_field_0)
+ gScriptResult = 1;
+ else
+ gScriptResult = 0;
+}
+
+u8 sub_80BB66C(void) // 80bb66c
+{
+ s16 x, y;
+ s16 v0;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ v0 = MapGridGetMetatileBehaviorAt(x, y) & 0xFFF;
+ if (v0 == 0x90 || v0 == 0x91)
+ return 1;
+ else if (v0 == 0x92 || v0 == 0x93)
+ return 2;
+ else if (v0 == 0x9a || v0 == 0x9b)
+ return 3;
+ else if (v0 == 0x94 || v0 == 0x95)
+ return 4;
+ else if (v0 == 0x96 || v0 == 0x97 || v0 == 0x9c || v0 == 0x9d)
+ return 5;
+ else if (v0 == 0x98 || v0 == 0x99)
+ return 6;
+ return 0;
+}
+
+void sub_80BB70C(void) // 80bb70c
+{
+ gSpecialVar_0x8007 = sub_80BB66C();
+}
+
+s16 unref_sub_80BB724(u16 *a0, u8 a1)
+{
+ u16 v2;
+ for (v2=0; v2<0x200; v2++) {
+ if ((a0[v2] & 0xFFF) == a1)
+ return (s16)v2;
+ }
+ return -1;
+}
+
+void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3)
+{
+ s16 x, y;
+ for (y=0; y<gMapHeader.mapData->height; y++) {
+ for (x=0; x<gMapHeader.mapData->width; x++) {
+ if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) {
+ *arg1 = x;
+ *arg2 = y;
+ return;
+ }
+ }
+ }
+}
+
+void sub_80BB800(void)
+{
+ s16 x, y;
+ s16 tile_id;
+ u16 idx;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ tile_id = MapGridGetMetatileIdAt(x, y);
+ for (idx=0; idx<7; idx++) {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
+ CurrentMapDrawMetatileAt(x, y);
+ return;
+ }
+ }
+ for (idx=0; idx<7; idx++) {
+ if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) {
+ MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00);
+ CurrentMapDrawMetatileAt(x, y);
+ return;
+ }
+ }
+}
+
+u8 sub_80BB8A8(u8 *arg1)
+{
+ u8 idx;
+ for (idx=0; idx<7; idx++) {
+ if (arg1[idx] == EOS)
+ return idx;
+ }
+ return 7;
+}
+
+void sub_80BB8CC(void)
+{
+ u8 nameLength;
+ u16 idx;
+ gSaveBlock1.secretBases[0].sbr_field_0 = gUnknown_020387DC;
+ for (idx=0; idx<4; idx++) {
+ gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
+ }
+ VarSet(VAR_0x4054, 0);
+ nameLength = sub_80BB8A8(gSaveBlock2.playerName);
+ memset(gSaveBlock1.secretBases[0].sbr_field_2, 0xFF, 7);
+ StringCopyN(gSaveBlock1.secretBases[0].sbr_field_2, gSaveBlock2.playerName, nameLength);
+ gSaveBlock1.secretBases[0].gender = gSaveBlock2.playerGender;
+ VarSet(VAR_SECRET_BASE_MAP, gMapHeader.name);
+}
+
+void sub_80BB970(struct MapEvents *events)
+{
+ u16 bgevidx, idx, jdx;
+ s16 tile_id;
+ for (bgevidx=0; bgevidx<events->bgEventCount; bgevidx++) {
+ if (events->bgEvents[bgevidx].kind == 8) {
+ for (jdx=0; jdx<20; jdx++) {
+ if (gSaveBlock1.secretBases[jdx].sbr_field_0 == events->bgEvents[bgevidx].bgUnion.secretBaseId) {
+ tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7);
+ for (idx=0; idx<7; idx++) {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
+ break;
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+}
+
+void sub_80BBA14(void)
+{
+ s8 idx = 4 * (gUnknown_020387DC / 10);
+ warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_083D1374[idx], gUnknown_083D1374[idx + 1]);
+}
+
+void sub_80BBA48(u8 taskid)
+{
+ u16 curbaseid;
+ switch (gTasks[taskid].data[0]) {
+ case 0:
+ gTasks[taskid].data[0] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active) {
+ gTasks[taskid].data[0] = 2;
+ }
+ break;
+ case 2:
+ curbaseid = VarGet(VAR_0x4054);
+ if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
+ gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++;
+ sub_80BBA14();
+ warp_in();
+ gUnknown_0300485C = sub_8080990;
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskid);
+ break;
+ }
+}
+
+void sub_80BBAF0(void)
+{
+ CreateTask(sub_80BBA48, 0);
+ fade_screen(1, 0);
+ saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1);
+}
+
+bool8 sub_80BBB24(void)
+{
+ if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_80BBB50(u8 taskid)
+{
+ FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2);
+ if (sub_807D770() == 1) {
+ EnableBothScriptContexts();
+ DestroyTask(taskid);
+ }
+}
+
+void sub_80BBB90(void)
+{
+ s16 x, y;
+ ScriptContext2_Enable();
+ HideMapNamePopup();
+ sub_80BB764(&x, &y, 0x220);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0xe20);
+ CurrentMapDrawMetatileAt(x + 7, y + 7);
+ pal_fill_black();
+ CreateTask(sub_80BBB50, 0);
+}
+
+void sub_80BBBEC(u8 taskid)
+{
+ s8 idx;
+ if (!gPaletteFade.active) {
+ idx = 4 * (gUnknown_020387DC / 10);
+ warp1_set(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]);
+ warp_in();
+ gUnknown_0300485C = sub_80BBB90;
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskid);
+ }
+}
+
+void sub_80BBC78(void)
+{
+ u8 taskid = CreateTask(sub_80BBBEC, 0);
+ gTasks[taskid].data[0] = 0;
+ fade_screen(1, 0);
+}
+
+bool8 CurrentMapIsSecretBase(void)
+{
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_SECRET_BASE_SHRUB4 && (u8)(gSaveBlock1.location.mapNum) <= MAP_ID_SECRET_BASE_SHRUB4)
+ return TRUE;
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+void sub_80BBCCC(u8 flagIn)
+{
+ u16 curBaseId;
+ u16 x, y;
+ if (CurrentMapIsSecretBase()) {
+ curBaseId = VarGet(VAR_0x4054);
+ for (x=0; x<16; x++) {
+ if ((u8)(gSaveBlock1.secretBases[curBaseId].decorations[x] - 1) <= 0x77 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].decor_field_11 != 4) {
+ sub_80FF394((gSaveBlock1.secretBases[0].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[0].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]);
+ }
+ }
+ if (curBaseId != 0) {
+ sub_80BB764(&x, &y, 0x220);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21);
+ } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) {
+ sub_80BB764(&x, &y, 0x220);
+ MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a);
+ }
+ }
+}
+
+void sub_80BBDD0(void)
+{
+ u8 *roomdecor;
+ u8 *roomdecorpos;
+ u8 ndecor;
+ u8 decidx;
+ u8 objid = 0;
+ u8 metatile;
+ u16 curBase = VarGet(VAR_0x4054);
+ if (!CurrentMapIsSecretBase()) {
+ roomdecor = gSaveBlock1.playerRoomDecor;
+ roomdecorpos = gSaveBlock1.playerRoomDecorPos;
+ ndecor = 12;
+ } else {
+ roomdecor = gSaveBlock1.secretBases[curBase].decorations;
+ roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos;
+ ndecor = 16;
+ }
+ for (decidx=0; decidx<ndecor; decidx++) {
+ if (roomdecor[decidx] == 0)
+ continue;
+ if (gDecorations[roomdecor[decidx]].decor_field_11 != 4)
+ continue;
+ for (objid=0; objid<gMapHeader.events->mapObjectCount; objid++) {
+ if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE)
+ break;
+ }
+ if (objid != gMapHeader.events->mapObjectCount) {
+ gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
+ gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
+ metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
+ if (sub_80572D8(metatile) == 1 || sub_80572EC(metatile) == 1) {
+ gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20;
+ VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]);
+ gScriptResult = gMapHeader.events->mapObjects[objid].localId;
+ FlagReset(gSpecialVar_0x8004 + 0xAE);
+ show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
+ sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ gSpecialVar_0x8004 ++;
+ }
+ }
+ }
+}
+
+#else
+__attribute__((naked))
+void sub_80BBCCC(u8 flagIn)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ bl CurrentMapIsSecretBase\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080BBDBC\n\
+ ldr r0, _080BBD70 @ =0x00004054\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ movs r1, 0\n\
+ mov r0, sp\n\
+ strh r1, [r0]\n\
+ ldr r6, _080BBD74 @ =gSaveBlock1\n\
+ mov r4, sp\n\
+ ldr r0, _080BBD78 @ =0x00001a2a\n\
+ adds r7, r6, r0\n\
+_080BBCFC:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 5\n\
+ ldrh r1, [r4]\n\
+ adds r2, r0, r1\n\
+ ldr r1, _080BBD7C @ =0x00001a1a\n\
+ adds r0, r6, r1\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1]\n\
+ subs r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x77\n\
+ bhi _080BBD3A\n\
+ ldr r0, _080BBD80 @ =gDecorations\n\
+ ldrb r3, [r1]\n\
+ lsls r1, r3, 5\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x11]\n\
+ cmp r0, 0x4\n\
+ beq _080BBD3A\n\
+ adds r0, r2, r7\n\
+ ldrb r2, [r0]\n\
+ lsrs r0, r2, 4\n\
+ adds r0, 0x7\n\
+ movs r1, 0xF\n\
+ ands r1, r2\n\
+ adds r1, 0x7\n\
+ adds r2, r3, 0\n\
+ bl sub_80FF394\n\
+_080BBD3A:\n\
+ ldrh r0, [r4]\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ strh r0, [r4]\n\
+ cmp r0, 0xF\n\
+ bls _080BBCFC\n\
+ cmp r5, 0\n\
+ beq _080BBD88\n\
+ mov r4, sp\n\
+ adds r4, 0x2\n\
+ movs r2, 0x88\n\
+ lsls r2, 2\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ bl sub_80BB764\n\
+ mov r0, sp\n\
+ ldrh r0, [r0]\n\
+ adds r0, 0x7\n\
+ ldrh r1, [r4]\n\
+ adds r1, 0x7\n\
+ ldr r2, _080BBD84 @ =0x00000e21\n\
+ bl MapGridSetMetatileIdAt\n\
+ b _080BBDBC\n\
+ .align 2, 0\n\
+_080BBD70: .4byte 0x00004054\n\
+_080BBD74: .4byte gSaveBlock1\n\
+_080BBD78: .4byte 0x00001a2a\n\
+_080BBD7C: .4byte 0x00001a1a\n\
+_080BBD80: .4byte gDecorations\n\
+_080BBD84: .4byte 0x00000e21\n\
+_080BBD88:\n\
+ mov r0, r8\n\
+ cmp r0, 0x1\n\
+ bne _080BBDBC\n\
+ ldr r0, _080BBDC8 @ =0x00004089\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ bne _080BBDBC\n\
+ mov r4, sp\n\
+ adds r4, 0x2\n\
+ movs r2, 0x88\n\
+ lsls r2, 2\n\
+ mov r0, sp\n\
+ adds r1, r4, 0\n\
+ bl sub_80BB764\n\
+ mov r0, sp\n\
+ ldrh r0, [r0]\n\
+ adds r0, 0x7\n\
+ ldrh r1, [r4]\n\
+ adds r1, 0x7\n\
+ ldr r2, _080BBDCC @ =0x00000e0a\n\
+ bl MapGridSetMetatileIdAt\n\
+_080BBDBC:\n\
+ add sp, 0x4\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080BBDC8: .4byte 0x00004089\n\
+_080BBDCC: .4byte 0x00000e0a\n\
+.syntax divided\n");
+}
+
+__attribute__((naked))
+void sub_80BBDD0(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x14\n\
+ ldr r0, _080BBE00 @ =0x00004054\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ bl CurrentMapIsSecretBase\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080BBE08\n\
+ ldr r0, _080BBE04 @ =gSaveBlock1 + 0x2688\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, 0xC\n\
+ str r0, [sp, 0x8]\n\
+ movs r1, 0xC\n\
+ str r1, [sp, 0xC]\n\
+ b _080BBE1E\n\
+ .align 2, 0\n\
+_080BBE00: .4byte 0x00004054\n\
+_080BBE04: .4byte gSaveBlock1 + 0x2688\n\
+_080BBE08:\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 5\n\
+ ldr r0, _080BBF7C @ =gSaveBlock1 + 0x1A1A\n\
+ adds r2, r1, r0\n\
+ str r2, [sp, 0x4]\n\
+ adds r0, 0x10\n\
+ adds r1, r0\n\
+ str r1, [sp, 0x8]\n\
+ movs r3, 0x10\n\
+ str r3, [sp, 0xC]\n\
+_080BBE1E:\n\
+ movs r6, 0\n\
+ ldr r4, [sp, 0xC]\n\
+ cmp r6, r4\n\
+ bcc _080BBE28\n\
+ b _080BBF6C\n\
+_080BBE28:\n\
+ ldr r5, _080BBF80 @ =gSaveBlock1\n\
+ mov r10, r5\n\
+_080BBE2C:\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1, r6\n\
+ ldrb r1, [r0]\n\
+ mov r9, r0\n\
+ adds r2, r6, 0x1\n\
+ str r2, [sp, 0x10]\n\
+ cmp r1, 0\n\
+ bne _080BBE3E\n\
+ b _080BBF5E\n\
+_080BBE3E:\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 5\n\
+ ldr r3, _080BBF84 @ =gDecorations\n\
+ adds r0, r3\n\
+ ldrb r0, [r0, 0x11]\n\
+ cmp r0, 0x4\n\
+ beq _080BBE4E\n\
+ b _080BBF5E\n\
+_080BBE4E:\n\
+ movs r5, 0\n\
+ ldr r0, _080BBF88 @ =gMapHeader\n\
+ ldr r2, [r0, 0x4]\n\
+ ldrb r3, [r2]\n\
+ mov r8, r0\n\
+ cmp r5, r3\n\
+ bcs _080BBE8E\n\
+ ldr r0, [r2, 0x4]\n\
+ ldrh r1, [r0, 0x14]\n\
+ ldr r4, _080BBF8C @ =gSpecialVar_0x8004\n\
+ ldrh r0, [r4]\n\
+ adds r0, 0xAE\n\
+ adds r7, r4, 0\n\
+ cmp r1, r0\n\
+ beq _080BBE8E\n\
+ adds r4, r2, 0\n\
+ adds r2, r3, 0\n\
+_080BBE70:\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r5, r2\n\
+ bcs _080BBE8E\n\
+ ldr r1, [r4, 0x4]\n\
+ lsls r0, r5, 1\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrh r1, [r0, 0x14]\n\
+ ldrh r0, [r7]\n\
+ adds r0, 0xAE\n\
+ cmp r1, r0\n\
+ bne _080BBE70\n\
+_080BBE8E:\n\
+ mov r1, r8\n\
+ ldr r0, [r1, 0x4]\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ beq _080BBF5E\n\
+ ldr r7, _080BBF90 @ =gSpecialVar_0x8006\n\
+ ldr r2, [sp, 0x8]\n\
+ adds r1, r2, r6\n\
+ ldrb r0, [r1]\n\
+ lsrs r0, 4\n\
+ strh r0, [r7]\n\
+ ldr r6, _080BBF94 @ =gSpecialVar_0x8007\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ strh r0, [r6]\n\
+ ldrh r0, [r7]\n\
+ adds r0, 0x7\n\
+ ldrh r1, [r6]\n\
+ adds r1, 0x7\n\
+ bl MapGridGetMetatileBehaviorAt\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ adds r0, r4, 0\n\
+ bl sub_80572D8\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _080BBEDA\n\
+ adds r0, r4, 0\n\
+ bl sub_80572EC\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _080BBF5E\n\
+_080BBEDA:\n\
+ mov r3, r8\n\
+ ldr r0, [r3, 0x4]\n\
+ ldr r1, [r0, 0x4]\n\
+ lsls r4, r5, 1\n\
+ adds r4, r5\n\
+ lsls r4, 3\n\
+ adds r1, r4, r1\n\
+ ldr r5, _080BBF98 @ =0x00003f20\n\
+ adds r0, r5, 0\n\
+ ldrb r1, [r1, 0x1]\n\
+ adds r0, r1\n\
+ ldr r1, _080BBF9C @ =gScriptResult\n\
+ strh r0, [r1]\n\
+ ldrh r0, [r1]\n\
+ mov r2, r9\n\
+ ldrb r1, [r2]\n\
+ lsls r1, 5\n\
+ ldr r3, _080BBFA0 @ =gDecorations + 0x1C\n\
+ adds r1, r3\n\
+ ldr r1, [r1]\n\
+ ldrh r1, [r1]\n\
+ bl VarSet\n\
+ mov r5, r8\n\
+ ldr r0, [r5, 0x4]\n\
+ ldr r0, [r0, 0x4]\n\
+ adds r4, r0\n\
+ ldrb r0, [r4]\n\
+ ldr r1, _080BBF9C @ =gScriptResult\n\
+ strh r0, [r1]\n\
+ ldr r2, _080BBF8C @ =gSpecialVar_0x8004\n\
+ ldrh r0, [r2]\n\
+ adds r0, 0xAE\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ bl FlagReset\n\
+ ldr r3, _080BBF9C @ =gScriptResult\n\
+ ldrb r0, [r3]\n\
+ mov r4, r10\n\
+ ldrb r1, [r4, 0x5]\n\
+ ldrb r2, [r4, 0x4]\n\
+ bl show_sprite\n\
+ ldr r5, _080BBF9C @ =gScriptResult\n\
+ ldrb r0, [r5]\n\
+ ldrb r1, [r4, 0x5]\n\
+ ldrb r2, [r4, 0x4]\n\
+ movs r4, 0\n\
+ ldrsh r3, [r7, r4]\n\
+ movs r5, 0\n\
+ ldrsh r4, [r6, r5]\n\
+ str r4, [sp]\n\
+ bl sub_805C0F8\n\
+ ldr r1, _080BBF9C @ =gScriptResult\n\
+ ldrb r0, [r1]\n\
+ mov r2, r10\n\
+ ldrb r1, [r2, 0x5]\n\
+ ldrb r2, [r2, 0x4]\n\
+ bl sub_805C78C\n\
+ ldr r3, _080BBF8C @ =gSpecialVar_0x8004\n\
+ ldrh r0, [r3]\n\
+ adds r0, 0x1\n\
+ strh r0, [r3]\n\
+_080BBF5E:\n\
+ ldr r4, [sp, 0x10]\n\
+ lsls r0, r4, 24\n\
+ lsrs r6, r0, 24\n\
+ ldr r5, [sp, 0xC]\n\
+ cmp r6, r5\n\
+ bcs _080BBF6C\n\
+ b _080BBE2C\n\
+_080BBF6C:\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080BBF7C: .4byte gSaveBlock1 + 0x1A1A\n\
+_080BBF80: .4byte gSaveBlock1\n\
+_080BBF84: .4byte gDecorations\n\
+_080BBF88: .4byte gMapHeader\n\
+_080BBF8C: .4byte gSpecialVar_0x8004\n\
+_080BBF90: .4byte gSpecialVar_0x8006\n\
+_080BBF94: .4byte gSpecialVar_0x8007\n\
+_080BBF98: .4byte 0x00003f20\n\
+_080BBF9C: .4byte gScriptResult\n\
+_080BBFA0: .4byte gDecorations + 0x1C\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_80BBFA4(void)
+{
+ int curBase = VarGet(VAR_0x4054);
+ VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]);
+}
+
+void sub_80BBFD8(s16 *position, struct MapEvents *events)
+{
+ s16 bgevtidx;
+ for (bgevtidx=0; bgevtidx<events->bgEventCount; bgevtidx++) {
+ if (events->bgEvents[bgevtidx].kind == 8 && position[0] == events->bgEvents[bgevtidx].x + 7 && position[1] == events->bgEvents[bgevtidx].y + 7) {
+ gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId;
+ break;
+ }
+ }
+}
+
+void sub_80BC038(s16 *position, struct MapEvents *events)
+{
+ sub_80BBFD8(position, events);
+ sub_80BB5E4();
+ ScriptContext1_SetupScript(gUnknown_081A2E14);
+}
+
+bool8 sub_80BC050(void)
+{
+ sub_80BB5D0();
+ sub_80BB5E4();
+ if (gScriptResult == 1)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_80BC074(u8 taskid)
+{
+ switch (gTasks[taskid].data[0]) {
+ case 0:
+ ScriptContext2_Enable();
+ gTasks[taskid].data[0] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active) {
+ gTasks[taskid].data[0] = 2;
+ }
+ break;
+ case 2:
+ copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E);
+ warp_in();
+ gUnknown_0300485C = mapldr_default;
+ SetMainCallback2(CB2_LoadMap);
+ ScriptContext2_Disable();
+ DestroyTask(taskid);
+ break;
+ }
+}
+
+void sub_80BC0F8(void) {
+ CreateTask(sub_80BC074, 0);
+ fade_screen(1, 0);
+}
+
+void sub_80BC114(void) {
+ if (gSaveBlock1.secretBases[0].sbr_field_0 != gUnknown_020387DC)
+ gScriptResult = 1;
+ else
+ gScriptResult = 0;
+}
+
+u8 sub_80BC14C(u8 sbid)
+{
+ s16 idx;
+ for (idx=0; idx<20; idx++) {
+ if (gSaveBlock1.secretBases[idx].sbr_field_0 == sbid)
+ return idx;
+ }
+ return 0;
+}
+
+
+
+u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
u8 local1;
u8 *str;
@@ -16,3 +837,234 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) {
return StringAppend(dest, gOtherText_PlayersBase);
}
+
+u8 *GetSecretBaseMapName(u8 *dest) {
+ gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_0;
+ return sub_80BC190(dest, VarGet(VAR_0x4054));
+}
+
+void sub_80BC224(void) {
+ u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_0x4054)].sbr_field_2;
+ u8 *var1 = gStringVar1;
+ u8 var2 = sub_80BB8A8(var0);
+ u8 *var3 = StringCopyN(var1, var0, var2);
+ *var3 = EOS;
+}
+
+u8 sub_80BC268(u8 foo) { // 80bc268
+ if (gSaveBlock1.secretBases[foo].sbr_field_1_6)
+ return 1;
+ return 0;
+}
+
+u8 sub_80BC298(struct Pokemon *mon) { // 80bc298
+ u16 evsum = GetMonData(mon, MON_DATA_HP_EV);
+ evsum += GetMonData(mon, MON_DATA_ATK_EV);
+ evsum += GetMonData(mon, MON_DATA_DEF_EV);
+ evsum += GetMonData(mon, MON_DATA_SPD_EV);
+ evsum += GetMonData(mon, MON_DATA_SPATK_EV);
+ evsum += GetMonData(mon, MON_DATA_SPDEF_EV);
+ return (u8)(evsum / 6);
+}
+
+#ifdef NONMATCHING
+void sub_80BC300(void)
+{
+ u16 moveidx;
+ u16 sbpartyidx = 0;
+ int resetVal = 0;
+ u16 partyidx = 0;
+ while (partyidx < 6) {
+ partyidx ++;
+ for (moveidx=0; moveidx<4; moveidx++) {
+ gSaveBlock1.secretBases[0].partyMoves[(partyidx - 1) * 6 + moveidx] = resetVal;
+ }
+ gSaveBlock1.secretBases[0].partySpecies[partyidx - 1] = resetVal;
+ gSaveBlock1.secretBases[0].partyHeldItems[partyidx - 1] = resetVal;
+ gSaveBlock1.secretBases[0].partyLevels[partyidx - 1] = resetVal;
+ gSaveBlock1.secretBases[0].partyPersonality[partyidx - 1] = resetVal;
+ gSaveBlock1.secretBases[0].partyEVs[partyidx - 1] = resetVal;
+ if (GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_SPECIES) != 0 && !GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_IS_EGG)) {
+ sbpartyidx ++;
+ for (moveidx=0; moveidx<4; moveidx++) {
+ gSaveBlock1.secretBases[0].partyMoves[(sbpartyidx - 1) * 6 + moveidx] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_MOVE1 + moveidx);
+ }
+ gSaveBlock1.secretBases[0].partySpecies[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_SPECIES);
+ gSaveBlock1.secretBases[0].partyHeldItems[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_HELD_ITEM);
+ gSaveBlock1.secretBases[0].partyLevels[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_LEVEL);
+ gSaveBlock1.secretBases[0].partyPersonality[sbpartyidx - 1] = GetMonData(&(gPlayerParty[partyidx - 1]), MON_DATA_PERSONALITY);
+ gSaveBlock1.secretBases[0].partyEVs[sbpartyidx - 1] = sub_80BC298(&(gPlayerParty[partyidx - 1]));
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80BC300(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ movs r6, 0\n\
+ mov r9, r6\n\
+_080BC314:\n\
+ movs r4, 0\n\
+ lsls r3, r6, 2\n\
+ lsls r2, r6, 1\n\
+ ldr r7, _080BC424 @ =gPlayerParty\n\
+ adds r1, r6, 0x1\n\
+ str r1, [sp]\n\
+ adds r1, r3, 0\n\
+_080BC322:\n\
+ adds r0, r1, r4\n\
+ lsls r0, 1\n\
+ ldr r5, _080BC428 @ =gSaveBlock1 + 0x1A54\n\
+ adds r0, r5, r0\n\
+ mov r5, r9\n\
+ strh r5, [r0]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, 0x3\n\
+ bls _080BC322\n\
+ ldr r1, _080BC42C @ =gSaveBlock1 + 0x1A84\n\
+ adds r0, r1, r2\n\
+ strh r5, [r0]\n\
+ ldr r5, _080BC430 @ =gSaveBlock1 + 0x1A90\n\
+ adds r0, r5, r2\n\
+ mov r1, r9\n\
+ strh r1, [r0]\n\
+ ldr r2, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\
+ adds r0, r2, r6\n\
+ mov r5, r9\n\
+ strb r5, [r0]\n\
+ ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\
+ adds r0, r1, r3\n\
+ mov r2, r9\n\
+ str r2, [r0]\n\
+ ldr r3, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\
+ adds r0, r3, r6\n\
+ strb r2, [r0]\n\
+ movs r0, 0x64\n\
+ adds r5, r6, 0\n\
+ muls r5, r0\n\
+ adds r4, r5, r7\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _080BC408\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _080BC408\n\
+ movs r4, 0\n\
+ mov r0, r10\n\
+ lsls r0, 2\n\
+ mov r8, r0\n\
+ mov r1, r10\n\
+ lsls r7, r1, 1\n\
+ adds r1, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ ldr r2, _080BC424 @ =gPlayerParty\n\
+_080BC38E:\n\
+ adds r1, r4, 0\n\
+ adds r1, 0xD\n\
+ adds r0, r5, r2\n\
+ str r2, [sp, 0x8]\n\
+ bl GetMonData\n\
+ mov r3, r8\n\
+ adds r1, r3, r4\n\
+ lsls r1, 1\n\
+ ldr r3, _080BC428 @ =gSaveBlock1 + 0x1A54\n\
+ adds r1, r3, r1\n\
+ strh r0, [r1]\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ ldr r2, [sp, 0x8]\n\
+ cmp r4, 0x3\n\
+ bls _080BC38E\n\
+ movs r0, 0x64\n\
+ adds r4, r6, 0\n\
+ muls r4, r0\n\
+ ldr r0, _080BC424 @ =gPlayerParty\n\
+ adds r4, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ ldr r5, _080BC42C @ =gSaveBlock1 + 0x1A84\n\
+ adds r1, r5, r7\n\
+ strh r0, [r1]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ ldr r2, _080BC430 @ =gSaveBlock1 + 0x1A90\n\
+ adds r1, r2, r7\n\
+ strh r0, [r1]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ ldr r1, _080BC434 @ =gSaveBlock1 + 0x1A9C\n\
+ add r1, r10\n\
+ strb r0, [r1]\n\
+ adds r0, r4, 0\n\
+ movs r1, 0\n\
+ bl GetMonData\n\
+ ldr r1, _080BC438 @ =gSaveBlock1 + 0x1A3C\n\
+ add r1, r8\n\
+ str r0, [r1]\n\
+ adds r0, r4, 0\n\
+ bl sub_80BC298\n\
+ ldr r1, _080BC43C @ =gSaveBlock1 + 0x1AA2\n\
+ add r1, r10\n\
+ strb r0, [r1]\n\
+ ldr r3, [sp, 0x4]\n\
+ lsls r0, r3, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+_080BC408:\n\
+ ldr r5, [sp]\n\
+ lsls r0, r5, 16\n\
+ lsrs r6, r0, 16\n\
+ cmp r6, 0x5\n\
+ bls _080BC314\n\
+ add sp, 0xC\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080BC424: .4byte gPlayerParty\n\
+_080BC428: .4byte gSaveBlock1 + 0x1A54\n\
+_080BC42C: .4byte gSaveBlock1 + 0x1A84\n\
+_080BC430: .4byte gSaveBlock1 + 0x1A90\n\
+_080BC434: .4byte gSaveBlock1 + 0x1A9C\n\
+_080BC438: .4byte gSaveBlock1 + 0x1A3C\n\
+_080BC43C: .4byte gSaveBlock1 + 0x1AA2\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_80BC440(void)
+{
+ u16 backupValue = gSaveBlock1.secretBases[0].sbr_field_e;
+ ResetSecretBase(0);
+ gSaveBlock1.secretBases[0].sbr_field_e = backupValue;
+ sub_80BC0F8();
+}
+
+void SecretBasePC_PackUp(void)
+{
+ IncrementGameStat(20);
+ sub_80BC440();
+}
diff --git a/src/tv.c b/src/tv.c
index c0d4bde4d..ea1f13047 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1,26 +1,48 @@
#include "global.h"
#include "asm.h"
+#include "tv.h"
#include "event_data.h"
#include "field_message_box.h"
#include "flags.h"
#include "rng.h"
#include "string_util.h"
#include "text.h"
-
-enum
-{
- TVSHOW_FAN_CLUB_LETTER = 1,
- TVSHOW_RECENT_HAPPENINGS = 2,
- TVSHOW_PKMN_FAN_CLUB_OPINIONS = 3,
- TVSHOW_NAME_RATER_SHOW = 5,
- TVSHOW_MASS_OUTBREAK = 41,
-};
+#include "species.h"
+#include "pokedex.h"
+#include "naming_screen.h"
+#include "rom4.h"
+#include "map_constants.h"
+#include "strings.h"
+#include "link.h"
+#include "easy_chat.h"
+#include "item.h"
+#include "items.h"
+#include "contest_painting.h"
+#include "rtc.h"
struct UnkTvStruct
{
s8 var0;
};
+struct UnkBattleStruct {
+ u16 var00;
+ u8 var02[3];
+ u8 var05_0:1;
+ u8 var05_1:1;
+ u8 var05_pad2:6;
+ u16 var06;
+ u8 pad08[24];
+ u16 var20;
+ u8 pad22[6];
+ u16 var28;
+ u8 var2a[11];
+ u8 var35;
+ u8 var36[11];
+};
+extern struct UnkBattleStruct gUnknown_030042E0;
+extern u8 gUnknown_0300430A[11];
+
struct OutbreakPokemon
{
/*0x00*/ u16 species;
@@ -29,7 +51,18 @@ struct OutbreakPokemon
/*0x0B*/ u8 location;
};
+extern u8 *gUnknown_083D1464[3];
+extern u8 gUnknown_02038694;
+
+struct TVSaleItem {
+ u16 item_id;
+ u16 item_amount;
+};
+extern struct TVSaleItem gUnknown_02038724[3];
+
extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
extern u8 gSpecialVar_0x8007;
extern u16 gScriptResult;
extern u8 gUnknown_020387E8;
@@ -37,9 +70,472 @@ extern u8 gUnknown_020387E8;
extern struct UnkTvStruct gUnknown_03005D38;
extern u8 gSpeciesNames[][11];
+extern u8 gMoveNames[][13];
+
+extern u8 *gTVBravoTrainerTextGroup[];
+extern u8 *gTVBravoTrainerBattleTowerTextGroup[];
+extern u8 *gTVSmartShopperTextGroup[];
+extern u8 *gTVNameRaterTextGroup[];
+extern u8 *gTVPokemonTodayTextGroup[];
+extern u8 *gTVPokemonTodayFailedCaptureTextGroup[];
+extern u8 *gTVFanClubTextGroup[];
+extern u8 *gTVRecentHappeningsTextGroup[];
+extern u8 *gTVFanClubOpinionsTextGroup[];
extern u8 *gTVPokemonOutbreakTextGroup[];
+extern u8 *gTVGabbyAndTyTextGroup[];
+extern u8 *gTVFishingGuruAdviceTextGroup[];
+extern u8 *gTVWorldOfMastersTextGroup[];
extern struct OutbreakPokemon gPokeOutbreakSpeciesList[5];
+extern void sub_80BEBF4(void);
+
+extern u16 gUnknown_020387E0;
+extern u16 gUnknown_020387E2;
+extern const u8 *gUnknown_083CE048[];
+
+extern const u8 *gTVNewsTextGroup1[];
+extern const u8 *gTVNewsTextGroup2[];
+extern const u8 *gTVNewsTextGroup3[];
+
+extern u16 gScriptLastTalked;
+
+u32 GetPlayerTrainerId(void);
+
+void ClearTVShowData(void)
+{
+ u8 showidx;
+ u8 extradataidx;
+ for (showidx=0; showidx<25; showidx++) {
+ gSaveBlock1.tvShows.shows[showidx].common.var00 = 0;
+ gSaveBlock1.tvShows.shows[showidx].common.var01 = 0;
+ for (extradataidx=0; extradataidx<34; extradataidx++) {
+ gSaveBlock1.tvShows.shows[showidx].common.pad02[extradataidx] = 0;
+ }
+ }
+ sub_80BEBF4();
+}
+
+bool8 sub_80BF1B4(u8);
+void sub_80BF20C(void);
+extern u16 sub_8135D3C(u8);
+extern u8 gScriptContestCategory;
+extern u8 gScriptContestRank;
+extern u8 gUnknown_03004316[11];
+extern u8 gUnknown_02024D26;
+
+void sub_80BF334(void);
+void sub_80BF3A4(void);
+void sub_80BF3DC(void);
+void sub_80BF46C(void);
+void sub_80BF478(void);
+void sub_80BF484(void);
+void sub_80BF4BC(void);
+
+void sub_80BE028(void);
+void sub_80BE074(void);
+void sub_80BE778(void);
+void sub_80BEB20(void);
+
+asm(".section .text_a");
+s8 sub_80BF74C(TVShow tvShow[]);
+
+void sub_80BF55C(TVShow tvShow[], u8 showidx);
+void sub_80BEA88(void);
+
+void sub_80BE138(TVShow *show);
+void sub_80BE160(TVShow *show);
+extern u16 gUnknown_02024C04;
+
+void sub_80BE5FC(void);
+void sub_80BE65C(void);
+void sub_80BE6A0(void);
+void nullsub_21(void);
+void sub_80BE188(void);
+void sub_80BE320(void);
+
+extern u8 GabbyAndTyGetBattleNum(void);
+
+void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) {
+ switch (GabbyAndTyGetBattleNum()) {
+ case 1:
+ gSpecialVar_0x8004 = 0xE;
+ gSpecialVar_0x8005 = 0xD;
+ break;
+ case 2:
+ gSpecialVar_0x8004 = 0x5;
+ gSpecialVar_0x8005 = 0x6;
+ break;
+ case 3:
+ gSpecialVar_0x8004 = 0x12;
+ gSpecialVar_0x8005 = 0x11;
+ break;
+ case 4:
+ gSpecialVar_0x8004 = 0x15;
+ gSpecialVar_0x8005 = 0x16;
+ break;
+ case 5:
+ gSpecialVar_0x8004 = 0x8;
+ gSpecialVar_0x8005 = 0x9;
+ break;
+ case 6:
+ gSpecialVar_0x8004 = 0x13;
+ gSpecialVar_0x8005 = 0x14;
+ break;
+ case 7:
+ gSpecialVar_0x8004 = 0x17;
+ gSpecialVar_0x8005 = 0x18;
+ break;
+ case 8:
+ gSpecialVar_0x8004 = 0xA;
+ gSpecialVar_0x8005 = 0xB;
+ break;
+ }
+}
+
+void sub_80BDE48(void) {
+ switch (gSpecialVar_0x8005) {
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80BE5FC();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ sub_80BE65C();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80BE6A0();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ nullsub_21();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80BE188();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80BE320();
+ break;
+ }
+}
+
+u8 sub_80BDEAC(u8 *a0) {
+ u8 lang;
+ lang = GAME_LANGUAGE;
+ if (a0[0] == 0xFC && a0[1] == 0x15) {
+ lang = LANGUAGE_JAPANESE;
+ }
+ return lang;
+}
+
+void sub_80BDEC8(void) {
+ TVShow *show;
+ u8 i;
+ u16 total;
+ u16 item;
+ total = 0;
+ sub_80BEB20();
+ sub_80BE778();
+ if (gUnknown_030042E0.var28 == 0) {
+ sub_80BE074();
+ } else {
+ sub_80BE028();
+ if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gUnknown_030042E0.var28], gUnknown_030042E0.var2a) != 0) {
+ gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1) {
+ for (i=0; i<11; i++) {
+ total += gUnknown_030042E0.var36[i];
+ }
+ if (total != 0 || gUnknown_030042E0.var05_1 != 0) {
+ total = FALSE;
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ show->pokemonToday.var00 = TVSHOW_POKEMON_TODAY_CAUGHT;
+ show->pokemonToday.var01 = total;
+ if (gUnknown_030042E0.var05_1 != 0) {
+ total = 1;
+ item = ITEM_MASTER_BALL;
+ } else {
+ for (i=0; i<11; i++) {
+ total += gUnknown_030042E0.var36[i];
+ }
+ if (total > 0xff) {
+ total = 0xff;
+ }
+ item = gUnknown_02024C04;
+ }
+ show->pokemonToday.var12 = total;
+ show->pokemonToday.ball = item;
+ StringCopy(show->pokemonToday.playerName, gSaveBlock2.playerName);
+ StringCopy(show->pokemonToday.nickname, gUnknown_030042E0.var2a);
+ show->pokemonToday.species = gUnknown_030042E0.var28;
+ sub_80BE138(show);
+ show->pokemonToday.language = GAME_LANGUAGE;
+ show->pokemonToday.language2 = sub_80BDEAC(show->pokemonToday.nickname);
+ StripExtCtrlCodes(show->pokemonToday.nickname);
+ }
+ }
+ }
+ }
+}
+
+void sub_80BE028(void) {
+ TVShow *buffer;
+ buffer = &gSaveBlock1.tvShows.unknown_2A98;
+ if (buffer->worldOfMasters.var00 != TVSHOW_WORLD_OF_MASTERS) {
+ sub_80BF55C(gSaveBlock1.tvShows.shows, 24);
+ buffer->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS);
+ buffer->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS;
+ }
+ buffer->worldOfMasters.var02++;
+ buffer->worldOfMasters.var04 = gUnknown_030042E0.var28;
+ buffer->worldOfMasters.var08 = gUnknown_030042E0.var06;
+ buffer->worldOfMasters.var0a = gMapHeader.name;
+}
+
+#ifdef NONMATCHING
+void sub_80BE074(void) {
+ u8 i;
+ u16 total;
+ u8 flag;
+ TVShow *show;
+ if (sub_80BF77C(0xffff) == 0) {
+ for (i=0, total=0; i<ARRAY_COUNT(gUnknown_03004316); i++) {
+ total += gUnknown_03004316[i];
+ }
+ if (total > 0xff) {
+ total = 0xff;
+ }
+ if (total > 2 && gUnknown_02024D26 == 1) {
+ gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_FAILED) != 1) {
+ flag = FALSE;
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ asm_comment("Here the wrong registers are used to hold the show ID and flag.");
+ show->pokemonTodayFailed.var00 = TVSHOW_POKEMON_TODAY_FAILED;
+ show->pokemonTodayFailed.var01 = flag;
+ show->pokemonTodayFailed.species = gUnknown_030042E0.var06;
+ show->pokemonTodayFailed.species2 = gUnknown_030042E0.var20;
+ show->pokemonTodayFailed.var10 = total;
+ show->pokemonTodayFailed.var11 = gUnknown_02024D26;
+ show->pokemonTodayFailed.var12 = gMapHeader.name;
+ StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2.playerName);
+ sub_80BE138(show);
+ show->pokemonTodayFailed.language = GAME_LANGUAGE;
+ }
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80BE074(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ ldr r0, _080BE118 @ =0x0000ffff\n\
+ bl sub_80BF77C\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080BE112\n\
+ movs r1, 0\n\
+ movs r5, 0\n\
+ ldr r2, _080BE11C @ =gUnknown_03004316\n\
+_080BE088:\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r0, r5, r0\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r1, 0xA\n\
+ bls _080BE088\n\
+ cmp r5, 0xFF\n\
+ bls _080BE0A2\n\
+ movs r5, 0xFF\n\
+_080BE0A2:\n\
+ cmp r5, 0x2\n\
+ bls _080BE112\n\
+ ldr r7, _080BE120 @ =gUnknown_02024D26\n\
+ ldrb r0, [r7]\n\
+ cmp r0, 0x1\n\
+ bne _080BE112\n\
+ ldr r6, _080BE124 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r6, 0\n\
+ bl sub_80BF74C\n\
+ ldr r4, _080BE128 @ =gUnknown_03005D38\n\
+ strb r0, [r4]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ cmp r0, r1\n\
+ beq _080BE112\n\
+ movs r0, 0x17\n\
+ bl sub_80BF1B4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _080BE112\n\
+ movs r0, 0\n\
+ ldrsb r0, [r4, r0]\n\
+ lsls r4, r0, 3\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ adds r4, r6\n\
+ @ -- Here the compiler puts the status flag in the wrong register. --\n\
+ movs r1, 0\n\
+ movs r0, 0x17\n\
+ strb r0, [r4]\n\
+ strb r1, [r4, 0x1]\n\
+ ldr r1, _080BE12C @ =gUnknown_030042E0\n\
+ ldrh r0, [r1, 0x6]\n\
+ strh r0, [r4, 0xC]\n\
+ ldrh r0, [r1, 0x20]\n\
+ strh r0, [r4, 0xE]\n\
+ strb r5, [r4, 0x10]\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r4, 0x11]\n\
+ ldr r0, _080BE130 @ =gMapHeader\n\
+ ldrb r0, [r0, 0x14]\n\
+ strb r0, [r4, 0x12]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x13\n\
+ ldr r1, _080BE134 @ =gSaveBlock2\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ bl sub_80BE138\n\
+ movs r0, 2 @ GAME_LANGUAGE\n\
+ strb r0, [r4, 0x2]\n\
+_080BE112:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080BE118: .4byte 0x0000ffff\n\
+_080BE11C: .4byte gUnknown_03004316\n\
+_080BE120: .4byte gUnknown_02024D26\n\
+_080BE124: .4byte gSaveBlock1 + 0x2738\n\
+_080BE128: .4byte gUnknown_03005D38\n\
+_080BE12C: .4byte gUnknown_030042E0\n\
+_080BE130: .4byte gMapHeader\n\
+_080BE134: .4byte gSaveBlock2\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_80BE138(TVShow *show) {
+ u32 playerId;
+ playerId = GetPlayerTrainerId();
+ show->common.srcTrainerId2Lo = playerId & 0xFF;
+ show->common.srcTrainerId2Hi = playerId >> 8;
+ show->common.srcTrainerIdLo = playerId & 0xFF;
+ show->common.srcTrainerIdHi = playerId >> 8;
+ show->common.trainerIdLo = playerId & 0xFF;
+ show->common.trainerIdHi = playerId >> 8;
+}
+
+void sub_80BE160(TVShow *show) {
+ u32 playerId;
+ playerId = GetPlayerTrainerId();
+ show->common.srcTrainerIdLo = playerId & 0xFF;
+ show->common.srcTrainerIdHi = playerId >> 8;
+ show->common.trainerIdLo = playerId & 0xFF;
+ show->common.trainerIdHi = playerId >> 8;
+}
+
+void sub_80BE188(void) {
+ TVShow *show;
+ TVShow *buffer;
+ buffer = &gSaveBlock1.tvShows.unknown_2A98;
+ if (buffer->bravoTrainer.var00 == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE) {
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ show->bravoTrainer.var01 = 1;
+ show->bravoTrainer.species = buffer->bravoTrainer.species;
+ StringCopy(show->bravoTrainer.playerName, gSaveBlock2.playerName);
+ StringCopy(show->bravoTrainer.pokemonNickname, buffer->bravoTrainer.pokemonNickname);
+ show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory;
+ show->bravoTrainer.contestRank = buffer->bravoTrainer.contestRank;
+ show->bravoTrainer.var14 = buffer->bravoTrainer.var14;
+ show->bravoTrainer.var13_5 = buffer->bravoTrainer.var13_5;
+ show->bravoTrainer.contestCategory = buffer->bravoTrainer.contestCategory;
+ sub_80BE160(show);
+ show->bravoTrainer.language = GAME_LANGUAGE;
+ show->bravoTrainer.var1f = sub_80BDEAC(show->bravoTrainer.pokemonNickname);
+ StripExtCtrlCodes(show->bravoTrainer.pokemonNickname);
+ }
+}
+
+void sub_80BE23C(u16 a0) {
+ TVShow *show;
+ show = &gSaveBlock1.tvShows.unknown_2A98;
+ sub_80BF484();
+ gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1) {
+ sub_80BF55C(gSaveBlock1.tvShows.shows, 24);
+ show->bravoTrainer.var14 = a0;
+ show->bravoTrainer.var00 = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ }
+}
+
+void sub_80BE284(u8 a0) {
+ TVShow *show;
+ show = &gSaveBlock1.tvShows.unknown_2A98;
+ gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1) {
+ show->bravoTrainer.var13_5 = a0;
+ show->bravoTrainer.contestCategory = gScriptContestCategory;
+ show->bravoTrainer.contestRank = gScriptContestRank;
+ show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gUnknown_02038694], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname);
+ }
+}
+
+void sub_80BE320(void) {
+ TVShow *show;
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ show->bravoTrainerTower.var00 = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
+ show->bravoTrainerTower.var01 = 1;
+ StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2.playerName);
+ StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2.filler_A8.filler_3DC);
+ show->bravoTrainerTower.species = gSaveBlock2.filler_A8.var_480;
+ show->bravoTrainerTower.winningMove = gSaveBlock2.filler_A8.var_482;
+ show->bravoTrainerTower.var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0);
+ show->bravoTrainerTower.var1c = gSaveBlock2.filler_A8.var_4AD;
+ if (gSaveBlock2.filler_A8.var_4D0 == 0) {
+ show->bravoTrainerTower.btLevel = 50;
+ } else {
+ show->bravoTrainerTower.btLevel = 100;
+ }
+ show->bravoTrainerTower.var1b = gSpecialVar_0x8004;
+ sub_80BE160(show);
+ show->bravoTrainerTower.language = GAME_LANGUAGE;
+}
+
+void sub_80BE3BC(void) {
+ u8 rval;
+ TVShow *tvShow;
+ u8 i;
+
+ rval = sub_80BF77C(0x5555);
+ if (rval == 0) {
+ gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_SMART_SHOPPER) != 1) {
+ sub_80BF20C();
+ if (gUnknown_02038724[0].item_amount >= 20) {
+ tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ tvShow->smartshopperShow.var00 = TVSHOW_SMART_SHOPPER;
+ tvShow->smartshopperShow.var01 = rval;
+ tvShow->smartshopperShow.shopLocation = gMapHeader.name;
+ for (i=0; i<3; i++) {
+ tvShow->smartshopperShow.itemIds[i] = gUnknown_02038724[i].item_id;
+ tvShow->smartshopperShow.itemAmounts[i] = gUnknown_02038724[i].item_amount;
+ }
+ tvShow->smartshopperShow.priceReduced = GetPriceReduction(1);
+ StringCopy(tvShow->smartshopperShow.playerName, gSaveBlock2.playerName);
+ sub_80BE138(tvShow);
+ tvShow->smartshopperShow.language = GAME_LANGUAGE;
+ }
+ }
+ }
+}
+
void sub_80BE478(void)
{
u16 playerNameLength;
@@ -67,7 +563,7 @@ void sub_80BE478(void)
return;
}
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
+ tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
tvShow->nameRaterShow.var00 = TVSHOW_NAME_RATER_SHOW;
tvShow->nameRaterShow.var01 = 1;
@@ -85,7 +581,7 @@ void sub_80BE478(void)
sub_80BE160(tvShow);
tvShow->nameRaterShow.language = GAME_LANGUAGE;
- tvShow->nameRaterShow.var1F = sub_80BDEAC(tvShow->nameRaterShow.pokemonName);
+ tvShow->nameRaterShow.pokemonNameLanguage = sub_80BDEAC(tvShow->nameRaterShow.pokemonName);
StripExtCtrlCodes(tvShow->nameRaterShow.pokemonName);
}
@@ -94,7 +590,7 @@ void StartMassOutbreak(void)
{
TVShow *tvShow;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
gSaveBlock1.outbreakPokemonSpecies = tvShow->massOutbreak.species;
gSaveBlock1.outbreakLocationMapNum = tvShow->massOutbreak.locationMapNum;
@@ -116,7 +612,7 @@ void sub_80BE5FC(void)
TVShow *tvShow;
u16 species;
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
+ tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
tvShow->fanclubLetter.var00 = TVSHOW_FAN_CLUB_LETTER;
tvShow->fanclubLetter.var01 = 1;
@@ -125,22 +621,22 @@ void sub_80BE5FC(void)
species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
tvShow->fanclubLetter.species = species;
sub_80BE160(tvShow);
- tvShow->fanclubLetter.var18 = GAME_LANGUAGE;
+ tvShow->fanclubLetter.language = GAME_LANGUAGE;
}
void sub_80BE65C(void)
{
TVShow *tvShow;
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
+ tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
tvShow->recentHappenings.var00 = TVSHOW_RECENT_HAPPENINGS;
tvShow->recentHappenings.var01 = 1;
- StringCopy(&tvShow->recentHappenings.var10[0], &gSaveBlock2.playerName[0]);
+ StringCopy(tvShow->recentHappenings.playerName, gSaveBlock2.playerName);
tvShow->recentHappenings.var02 = 0;
sub_80BE160(tvShow);
- tvShow->recentHappenings.var18 = GAME_LANGUAGE;
+ tvShow->recentHappenings.language = GAME_LANGUAGE;
}
void sub_80BE6A0(void)
@@ -148,7 +644,7 @@ void sub_80BE6A0(void)
TVShow *tvShow;
u8 monIndex;
- tvShow = &gSaveBlock1.tvShows[gUnknown_03005D38.var0];
+ tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
tvShow->fanclubOpinions.var00 = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
tvShow->fanclubOpinions.var01 = 1;
@@ -159,13 +655,13 @@ void sub_80BE6A0(void)
tvShow->fanclubOpinions.var04B = gSpecialVar_0x8007;
- StringCopy(tvShow->fanclubOpinions.var05, gSaveBlock2.playerName);
+ StringCopy(tvShow->fanclubOpinions.playerName, gSaveBlock2.playerName);
GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, tvShow->fanclubOpinions.var10);
tvShow->fanclubOpinions.var02 = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
sub_80BE160(tvShow);
- tvShow->fanclubOpinions.var0D = GAME_LANGUAGE;
+ tvShow->fanclubOpinions.language = GAME_LANGUAGE;
tvShow->fanclubOpinions.var0E = sub_80BDEAC(tvShow->fanclubOpinions.var10);
StripExtCtrlCodes(tvShow->fanclubOpinions.var10);
}
@@ -186,7 +682,7 @@ void sub_80BE778(void)
for (i = 0; i < 24; i++)
{
- if (gSaveBlock1.tvShows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK)
+ if (gSaveBlock1.tvShows.shows[i].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK)
{
return;
}
@@ -197,7 +693,7 @@ void sub_80BE778(void)
return;
}
- gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows);
+ gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows);
if (gUnknown_03005D38.var0 == -1)
{
return;
@@ -213,7 +709,7 @@ void sub_80BE778(void)
val2 = gUnknown_03005D38.var0;
- tvShow = &gSaveBlock1.tvShows[val2];
+ tvShow = &gSaveBlock1.tvShows.shows[val2];
tvShow->massOutbreak.var00 = TVSHOW_MASS_OUTBREAK;
tvShow->massOutbreak.var01 = 1;
@@ -235,7 +731,7 @@ void sub_80BE778(void)
tvShow->massOutbreak.var16 = 0x01;
sub_80BE160(tvShow);
- tvShow->massOutbreak.var18 = GAME_LANGUAGE;
+ tvShow->massOutbreak.language = GAME_LANGUAGE;
}
}
@@ -264,7 +760,593 @@ void UpdateTVShowsPerDay(u16 arg0)
sub_80BEA5C(arg0);
}
-asm(".section .text_b");
+void sub_80BE8EC(u16 arg0)
+{
+ u8 showidx;
+ TVShow *tvShow;
+ if (gSaveBlock1.outbreakPokemonSpecies == 0) {
+ for (showidx=0; showidx<24; showidx++) {
+ if (gSaveBlock1.tvShows.shows[showidx].massOutbreak.var00 == TVSHOW_MASS_OUTBREAK && gSaveBlock1.tvShows.shows[showidx].massOutbreak.var01 == 0x01) {
+ tvShow = &(gSaveBlock1.tvShows.shows[showidx]);
+ if (tvShow->massOutbreak.var16 < arg0)
+ tvShow->massOutbreak.var16 = 0;
+ else
+ tvShow->massOutbreak.var16 -= arg0;
+ break;
+ }
+ }
+ }
+}
+
+void UpdateMassOutbreakTimeLeft(u16 arg0)
+{
+ if (gSaveBlock1.outbreakUnk5 <= arg0)
+ EndMassOutbreak();
+ else
+ gSaveBlock1.outbreakUnk5 -= arg0;
+}
+
+void sub_80BE9D4();
+
+void sub_80BE97C(bool8 flag)
+{
+ u8 var0, var1;
+ if (flag != 0) {
+ var0 = gUnknown_020387E2 >> 8;
+ if (var0 > 4)
+ sub_80BE9D4();
+ gUnknown_020387E2 &= 0xFF;
+ var1 = gUnknown_020387E2 & 0xFF;
+ if (var1 != 0xFF)
+ gUnknown_020387E2++;
+ } else {
+ var0 = gUnknown_020387E2 & 0xFF;
+ if (var0 > 4)
+ sub_80BE9D4();
+ gUnknown_020387E2 &= 0xFF00;
+ var1 = gUnknown_020387E2 >> 8;
+ if (var1 != 0xFF)
+ gUnknown_020387E2 += 0x100;
+ }
+}
+
+void sub_80BE9D4()
+{
+ TVShow *show;
+ gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1) {
+ show = &(gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0]);
+#ifdef NONMATCHING
+ show->pokemonAngler.var00 = TVSHOW_FISHING_ADVICE;
+ show->pokemonAngler.var01 = 0;
+#else
+ asm(".syntax unified\n\
+ movs r1, 0\n\
+ movs r0, 24\n\
+ strb r0, [r4]\n\
+ strb r1, [r4, 1]\n\
+ .syntax divided\n");
+#endif
+ show->pokemonAngler.var02 = gUnknown_020387E2 & 0xFF;
+ show->pokemonAngler.var03 = gUnknown_020387E2 >> 8;
+ show->pokemonAngler.var04 = gUnknown_020387E0;
+ StringCopy(show->pokemonAngler.playerName, gSaveBlock2.playerName);
+ sub_80BE138(show);
+ show->pokemonAngler.language = GAME_LANGUAGE;
+ }
+}
+
+void sub_80BEA50(u16 var)
+{
+ gUnknown_020387E0 = var;
+}
+
+void sub_80BF55C(TVShow tvShow[], u8 showidx);
+void sub_80BEA88(void);
+
+void sub_80BEA5C(u16 arg0)
+{
+ TVShow *unk_2a98;
+ unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98;
+ if (unk_2a98->common.var00 == TVSHOW_WORLD_OF_MASTERS)
+ {
+ if (unk_2a98->worldOfMasters.var02 < 20)
+ {
+ sub_80BF55C(gSaveBlock1.tvShows.shows, 0x18);
+ }
+ else
+ {
+ sub_80BEA88();
+ }
+ }
+}
+void sub_80BEA88(void)
+{
+ TVShow *unk_2a98;
+ TVShow *tvShow;
+ u8 rval;
+ unk_2a98 = &gSaveBlock1.tvShows.unknown_2A98;
+ rval = sub_80BF77C(0xFFFF);
+ if (rval == 0)
+ {
+ gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows.shows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_WORLD_OF_MASTERS) != 1)
+ {
+ tvShow = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ tvShow->worldOfMasters.var00 = TVSHOW_WORLD_OF_MASTERS;
+ tvShow->worldOfMasters.var01 = rval;
+ tvShow->worldOfMasters.var02 = unk_2a98->worldOfMasters.var02;
+ tvShow->worldOfMasters.var06 = GetGameStat(GAME_STAT_STEPS) - unk_2a98->worldOfMasters.var06;
+ tvShow->worldOfMasters.var04 = unk_2a98->worldOfMasters.var04;
+ tvShow->worldOfMasters.var08 = unk_2a98->worldOfMasters.var08;
+ tvShow->worldOfMasters.var0a = unk_2a98->worldOfMasters.var0a;
+ StringCopy(tvShow->worldOfMasters.playerName, gSaveBlock2.playerName);
+ sub_80BE138(tvShow);
+ tvShow->worldOfMasters.language = GAME_LANGUAGE;
+ }
+ }
+}
+
+int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0);
+void sub_80BEC10(u8);
+void sub_80BF588(TVShow tvShows[]);
+void sub_80BF6D8(void);
+bool8 sub_80BF77C(u16);
+bool8 sub_80BEE48(u8);
+
+bool8 IsPriceDiscounted(u8);
+
+void sub_80BEB20(void) {
+ u16 rval;
+ struct SaveBlock1 *save;
+ struct UnknownSaveStruct2ABC *unk2abc;
+ if (FlagGet(SYS_GAME_CLEAR) != 0) {
+ unk2abc = gSaveBlock1.unknown_2ABC;
+ gUnknown_03005D38.var0 = sub_80BEBC8(unk2abc);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BF77C(0x28f) != 1) {
+ rval = (Random() % 3) + 1;
+ if (sub_80BEE48(rval) != 1) {
+ save = &gSaveBlock1;
+ save->unknown_2ABC[gUnknown_03005D38.var0].val0 = rval;
+ save->unknown_2ABC[gUnknown_03005D38.var0].val2 = 4;
+ save->unknown_2ABC[gUnknown_03005D38.var0].val1 = 1;
+ }
+ }
+ }
+}
+
+int sub_80BEBC8(struct UnknownSaveStruct2ABC *arg0) {
+ s8 i;
+ for (i=0; i<16; i++) {
+ if (arg0[i].val0 == 0) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+void sub_80BEBF4(void) {
+ u8 i;
+ for (i=0; i<16; i++) {
+ sub_80BEC10(i);
+ }
+}
+
+void sub_80BEC10(u8 arg0) {
+ gSaveBlock1.unknown_2ABC[arg0].val0 = 0;
+ gSaveBlock1.unknown_2ABC[arg0].val1 = 0;
+ gSaveBlock1.unknown_2ABC[arg0].val2 = 0;
+}
+
+void sub_80BEC40(void) {
+ u8 i, j;
+ for (i = 0; i < 15; i++) {
+ if (gSaveBlock1.unknown_2ABC[i].val0 == 0) {
+ for (j = i + 1; j < 16; j++) {
+ if (gSaveBlock1.unknown_2ABC[j].val0 != 0) {
+ gSaveBlock1.unknown_2ABC[i] = gSaveBlock1.unknown_2ABC[j];
+ sub_80BEC10(j);
+ break;
+ }
+ }
+ }
+ }
+}
+
+u8 sub_80BECA0(void)
+{
+ u8 i;
+ for (i=0; i<16; i++)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val0 != 0 && gSaveBlock1.unknown_2ABC[i].val1 == 1 && gSaveBlock1.unknown_2ABC[i].val2 < 3)
+ {
+ return i;
+ }
+ }
+ return 0xFF;
+}
+
+void sub_80BECE8(void)
+{
+ u8 arg0;
+ arg0 = sub_80BECA0();
+ if (arg0 == 0xff)
+ {
+ gScriptResult = 0;
+ return;
+ }
+ if (gSaveBlock1.unknown_2ABC[arg0].val2 == 0)
+ {
+ gSaveBlock1.unknown_2ABC[arg0].val1 = 2;
+ if (gLocalTime.hours < 20)
+ {
+ ShowFieldMessage(gTVNewsTextGroup2[gSaveBlock1.unknown_2ABC[arg0].val0]);
+ }
+ else
+ {
+ ShowFieldMessage(gTVNewsTextGroup3[gSaveBlock1.unknown_2ABC[arg0].val0]);
+ }
+ }
+ else
+ {
+ u16 value = gSaveBlock1.unknown_2ABC[arg0].val2;
+ ConvertIntToDecimalStringN(gStringVar1, value, 0, 1);
+ gSaveBlock1.unknown_2ABC[arg0].val1 = 0;
+ ShowFieldMessage(gTVNewsTextGroup1[gSaveBlock1.unknown_2ABC[arg0].val0]);
+ }
+ gScriptResult = 1;
+}
+
+bool8 GetPriceReduction(u8 arg0)
+{
+ u8 i;
+ if (arg0 == 0)
+ {
+ return FALSE;
+ }
+ for (i=0; i<16; i++)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val0 == arg0)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val1 == 2 && IsPriceDiscounted(arg0) != 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+bool8 IsPriceDiscounted(u8 arg0)
+{
+ switch (arg0)
+ {
+ case 1:
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ break;
+ case 3:
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ break;
+ default:
+ return TRUE;
+ }
+}
+
+bool8 sub_80BEE48(u8 arg0)
+{
+ u8 i;
+ if (arg0 == 0)
+ {
+ return TRUE;
+ }
+ else
+ {
+ for (i=0; i<16; i++)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val0 == arg0)
+ {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+void sub_80BEE84(u16 var0)
+{
+ u8 i;
+ for (i=0; i<16; i++)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val0)
+ {
+ if (gSaveBlock1.unknown_2ABC[i].val2 < var0)
+ {
+ sub_80BEC10(i);
+ }
+ else
+ {
+ if (!gSaveBlock1.unknown_2ABC[i].val1 && FlagGet(SYS_GAME_CLEAR) == 1)
+ {
+ gSaveBlock1.unknown_2ABC[i].val1 = 1;
+ }
+ gSaveBlock1.unknown_2ABC[i].val2 -= var0;
+ }
+ }
+ }
+ sub_80BEC40();
+}
+
+void sub_80BEF10(u8 strvaridx, u8 rank)
+{
+ switch (rank)
+ {
+ case NORMAL_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]);
+ break;
+ case SUPER_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]);
+ break;
+ case HYPER_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]);
+ break;
+ case MASTER_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]);
+ break;
+ }
+}
+
+void CopyContestCategoryToStringVar(u8 strvaridx, u8 category)
+{
+ switch (category)
+ {
+ case CONTEST_COOL:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]);
+ break;
+ case CONTEST_BEAUTY:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]);
+ break;
+ case CONTEST_CUTE:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]);
+ break;
+ case CONTEST_SMART:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]);
+ break;
+ case CONTEST_TOUGH:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]);
+ break;
+ }
+}
+
+void SetContestCategoryStringVarForInterview(void)
+{
+ TVShow *tvShow;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ CopyContestCategoryToStringVar(1, tvShow->bravoTrainer.contestCategory);
+}
+
+void sub_80BF088(u8 arg0, s32 price)
+{
+ size_t log10val;
+ log10val = sub_80BF0B8(price);
+ ConvertIntToDecimalStringN(gUnknown_083D1464[arg0], price, 0, log10val);
+}
+
+size_t sub_80BF0B8(int value)
+{
+ if (value / 10 == 0)
+ return 1;
+ else if (value / 100 == 0)
+ return 2;
+ else if (value / 1000 == 0)
+ return 3;
+ else if (value / 10000 == 0)
+ return 4;
+ else if (value / 100000 == 0)
+ return 5;
+ else if (value / 1000000 == 0)
+ return 6;
+ else if (value / 10000000 == 0)
+ return 7;
+ else if (value / 100000000 == 0)
+ return 8;
+ else
+ return 1;
+}
+
+void sub_80BF154(u8 arg0, struct TVShowSmartShopper *arg1)
+{
+ u8 i;
+ s32 price;
+ price = 0;
+ for (i=0; i<3; i++)
+ {
+ if (arg1->itemIds[i])
+ {
+ price += ItemId_GetPrice(arg1->itemIds[i]) * arg1->itemAmounts[i];
+ }
+ }
+ if (arg1->priceReduced == 1)
+ {
+ sub_80BF088(arg0, price >> 1);
+ }
+ else
+ {
+ sub_80BF088(arg0, price);
+ }
+}
+
+bool8 sub_80BF1B4(u8 showIdx)
+{
+ TVShow *tvShows;
+ u8 i;
+ u32 trainerId;
+ tvShows = gSaveBlock1.tvShows.shows;
+ trainerId = GetPlayerTrainerId();
+ for (i=5; i<24; i++)
+ {
+ if (tvShows[i].common.var00 == showIdx)
+ {
+ if ((trainerId & 0xFF) == tvShows[i].common.trainerIdLo && ((trainerId >> 8) & 0xFF) == tvShows[i].common.trainerIdHi)
+ {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+void sub_80BF20C(void)
+{
+ u8 i, j;
+ u16 tmpId, tmpAmount;
+ for (i=0; i<2; i++)
+ {
+ for (j=i+1; j<3; j++)
+ {
+ if (gUnknown_02038724[i].item_amount < gUnknown_02038724[j].item_amount)
+ {
+ tmpId = gUnknown_02038724[i].item_id;
+ tmpAmount = gUnknown_02038724[i].item_amount;
+ gUnknown_02038724[i].item_id = gUnknown_02038724[j].item_id;
+ gUnknown_02038724[i].item_amount = gUnknown_02038724[j].item_amount;
+ gUnknown_02038724[j].item_id = tmpId;
+ gUnknown_02038724[j].item_amount = tmpAmount;
+ }
+ }
+ }
+}
+
+void sub_80BF25C(u8 showType)
+{
+ u8 i;
+ for (i=0; i<5; i++)
+ {
+ if (gSaveBlock1.tvShows.shows[i].common.var00 == showType) {
+ if(gSaveBlock1.tvShows.shows[i].common.var01 == 1)
+ {
+ gScriptResult = 1;
+ }
+ else
+ {
+ sub_80BF55C(gSaveBlock1.tvShows.shows, i);
+ sub_80BF588(gSaveBlock1.tvShows.shows);
+ sub_80BF6D8();
+ }
+ return;
+ }
+ }
+ sub_80BF6D8();
+}
+
+void sub_80BF2C4(void)
+{
+ gScriptResult = 0;
+ switch (gSpecialVar_0x8005) {
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80BF334();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ sub_80BF3A4();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80BF3DC();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ sub_80BF46C();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ sub_80BF478();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80BF484();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80BF4BC();
+ break;
+ }
+}
+
+void sub_80BF334(void)
+{
+ TVShow *show;
+ sub_80BF25C(TVSHOW_FAN_CLUB_LETTER);
+ if (gScriptResult == 0) {
+ StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]);
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ sub_80EB6FC(show->fanclubLetter.pad04, 6);
+ }
+}
+
+void sub_80BF3A4(void)
+{
+ TVShow *show;
+ sub_80BF25C(TVSHOW_RECENT_HAPPENINGS);
+ if (gScriptResult == 0) {
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ sub_80EB6FC(show->recentHappenings.var04, 6);
+ }
+}
+
+void sub_80BF3DC(void)
+{
+ TVShow *show;
+ sub_80BF25C(TVSHOW_PKMN_FAN_CLUB_OPINIONS);
+ if (gScriptResult == 0) {
+ StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, 0)]);
+ GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2);
+ StringGetEnd10(gStringVar2);
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ sub_80EB6FC(show->fanclubOpinions.var1C, 2);
+ }
+}
+
+void sub_80BF46C(void)
+{
+ gScriptResult = 1;
+}
+
+void sub_80BF478(void)
+{
+ sub_80BF25C(TVSHOW_NAME_RATER_SHOW);
+}
+
+void sub_80BF484(void)
+{
+ TVShow *show;
+ sub_80BF25C(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE);
+ if (gScriptResult == 0) {
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ sub_80EB6FC(show->bravoTrainer.var04, 2);
+ }
+}
+
+void sub_80BF4BC(void)
+{
+ TVShow *show;
+ sub_80BF25C(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE);
+ if (gScriptResult == 0) {
+ show = &gSaveBlock1.tvShows.shows[gUnknown_03005D38.var0];
+ sub_80EB6FC(show->bravoTrainerTower.var18, 1); // wrong struct ident, fix later
+ }
+}
u8 sub_80BF4F4(u8 arg0)
{
@@ -282,13 +1364,1540 @@ u8 sub_80BF4F4(u8 arg0)
return TRUE;
}
+u8 sub_80BF544(void)
+{
+ return sub_80BF4F4(GetLeadMonIndex());
+}
+
+void sub_80BF55C(TVShow tvShow[], u8 showidx)
+{
+ u8 idx;
+ tvShow[showidx].common.var00 = 0;
+ tvShow[showidx].common.var01 = 0;
+ for (idx=0; idx<34; idx++) {
+ tvShow[showidx].common.pad02[idx] = 0;
+ }
+}
+
+void sub_80BF588(TVShow tvShow[])
+{
+ u8 showidx;
+ u8 showidx2;
+ for (showidx=0; showidx<4; showidx++) {
+ if (tvShow[showidx].common.var00 == 0) {
+ for (showidx2=showidx+1; showidx2<5; showidx2++) {
+ if (tvShow[showidx2].common.var00 != 0) {
+ tvShow[showidx] = tvShow[showidx2];
+ sub_80BF55C(tvShow, showidx2);
+ break;
+ }
+ }
+ }
+ }
+ for (showidx=5; showidx<24; showidx++) {
+ if (tvShow[showidx].common.var00 == 0) {
+ for (showidx2=showidx+1; showidx2<24; showidx2++) {
+ if (tvShow[showidx2].common.var00 != 0) {
+ tvShow[showidx] = tvShow[showidx2];
+ sub_80BF55C(gSaveBlock1.tvShows.shows, showidx2);
+ break;
+ }
+ }
+ }
+ }
+}
+
+u16 sub_80BF638(u8 arg0, u16 arg1)
+{
+ u16 retval = sub_80BF674(arg1);
+ StringCopy(gUnknown_083D1464[arg0], gSpeciesNames[retval]);
+ return retval;
+}
+
+u16 sub_80BF674(u16 species)
+{
+ u16 rspecies;
+ u16 cspecies;
+ rspecies = (Random() % (NUM_SPECIES - 1)) + 1;
+ cspecies = rspecies;
+ while ((s8)sub_8090D90(SpeciesToNationalPokedexNum(cspecies), 0) != 1 || cspecies == species) {
+ if (cspecies == SPECIES_BULBASAUR)
+ cspecies = NUM_SPECIES - 1;
+ else
+ cspecies --;
+ if (cspecies == rspecies) {
+ cspecies = species;
+ return cspecies;
+ }
+ }
+ return cspecies;
+}
+
+void sub_80BF6D8(void)
+{
+ gUnknown_03005D38.var0 = sub_80BF720(gSaveBlock1.tvShows.shows);
+ gSpecialVar_0x8006 = gUnknown_03005D38.var0;
+ if (gUnknown_03005D38.var0 == -1)
+ gScriptResult = 1;
+ else
+ gScriptResult = 0;
+}
+
+s8 sub_80BF720(TVShow tvShow[])
+{
+ u8 idx;
+ for (idx=0; idx<5; idx++) {
+ if (tvShow[idx].common.var00 == 0)
+ return idx;
+ }
+ return -1;
+}
+
+s8 sub_80BF74C(TVShow tvShow[])
+{
+ s8 idx;
+ for (idx=5; idx<24; idx++) {
+ if (tvShow[idx].common.var00 == 0)
+ return idx;
+ }
+ return -1;
+}
+
+bool8 sub_80BF77C(u16 value)
+{
+ if (Random() <= value)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_80BF79C(TVShow *arg0)
+{
+ u8 i = Random() % 6;
+ while (1) {
+ if (i == 6)
+ i = 0;
+ if (arg0->recentHappenings.var04[i] != 0xFFFF)
+ break;
+ i ++;
+ }
+ sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]);
+}
+
+u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0)
+{
+ u16 flagsum = 0;
+ u8 i = 0;
+ if (arg0->pokemonName[0] != 0xFF) {
+ while (i < 11 && arg0->pokemonName[i] != 0xFF) {
+ flagsum += arg0->pokemonName[i];
+ i++;
+ }
+ }
+ return flagsum & 0x7;
+}
+
+void sub_80BF820(u8 arg0, u8 arg1, u8 arg2, u16 arg3, u16 arg4, struct TVShowNameRaterShow *tvShow)
+{
+ u8 flags[3];
+ u16 nameLength;
+ u8 i;
+ for (i=0; i<3; i++)
+ flags[i] = EOS;
+ if (arg3 == 0) {
+ nameLength = StringLength(tvShow->trainerName);
+ if (arg2 == 0) {
+ flags[0] = tvShow->trainerName[arg1];
+ } else if (arg2 == 1) {
+ flags[0] = tvShow->trainerName[nameLength - arg1];
+ } else if (arg2 == 2) {
+ flags[0] = tvShow->trainerName[arg1];
+ flags[1] = tvShow->trainerName[arg1 + 1];
+ } else {
+ flags[0] = tvShow->trainerName[nameLength - (arg1 + 2)];
+ flags[1] = tvShow->trainerName[nameLength - (arg1 + 1)];
+ }
+ } else if (arg3 == 1) {
+ nameLength = StringLength(tvShow->pokemonName);
+ if (arg2 == 0) {
+ flags[0] = tvShow->pokemonName[arg1];
+ } else if (arg2 == 1) {
+ flags[0] = tvShow->pokemonName[nameLength - arg1];
+ } else if (arg2 == 2) {
+ flags[0] = tvShow->pokemonName[arg1];
+ flags[1] = tvShow->pokemonName[arg1 + 1];
+ } else {
+ flags[0] = tvShow->pokemonName[nameLength - (arg1 + 2)];
+ flags[1] = tvShow->pokemonName[nameLength - (arg1 + 1)];
+ }
+ } else {
+ nameLength = StringLength(gSpeciesNames[arg4]);
+ if (arg2 == 0) {
+ flags[0] = gSpeciesNames[arg4][arg1];
+ } else if (arg2 == 1) {
+ flags[0] = gSpeciesNames[arg4][nameLength - arg1];
+ } else if (arg2 == 2) {
+ flags[0] = gSpeciesNames[arg4][arg1];
+ flags[1] = gSpeciesNames[arg4][arg1 + 1];
+ } else {
+ flags[0] = gSpeciesNames[arg4][nameLength - (arg1 + 2)];
+ flags[1] = gSpeciesNames[arg4][nameLength - (arg1 + 1)];
+ }
+ }
+ StringCopy(gUnknown_083D1464[arg0], flags);
+}
+
+bool8 sub_80BF974(void)
+{
+ u8 i;
+ for (i=0; i<5; i++)
+ {
+ if (gSaveBlock1.tvShows.shows[i].common.var00 == gSpecialVar_0x8004)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80BF9B4(void)
+{
+ GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1);
+ if (!StringCompareWithoutExtCtrlCodes(gStringVar3, gStringVar1))
+ return FALSE;
+ sub_80BE478();
+ return TRUE;
+}
+
+void c2_080CC144(void);
+
+void sub_80BF9F8(void)
+{
+ u16 spec;
+ u16 gender;
+ u32 pval;
+ GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar3);
+ GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar2);
+ spec = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_SPECIES, 0);
+ gender = GetMonGender(&(gPlayerParty[gSpecialVar_0x8004]));
+ pval = GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_PERSONALITY, 0);
+ DoNamingScreen(3, gStringVar2, spec, gender, pval, c2_080CC144);
+}
+
+void c2_080CC144(void)
+{
+ SetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, gStringVar2);
+ c2_exit_to_overworld_1_continue_scripts_restart_music();
+}
+
+void sub_80BFAE0(void)
+{
+ GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_NICKNAME, &gStringVar1);
+ StringGetEnd10(gStringVar1);
+}
+
+void sub_80BFB10(void)
+{
+ if (GetPlayerTrainerId() == GetMonData(&(gPlayerParty[gSpecialVar_0x8004]), MON_DATA_OT_ID, 0))
+ gScriptResult = 0;
+ else
+ gScriptResult = 1;
+}
+
+u8 sub_80BFB54(u8 arg0)
+{
+ if (arg0 == 0)
+ return 0;
+ else if (arg0 > 0 && arg0 <= 20)
+ return 2;
+ else if (arg0 > 20 && arg0 <= 40)
+ return 3;
+ else if (arg0 > 40 && arg0 <= 60)
+ return 4;
+ else
+ return 0;
+}
+
+u32 GetPlayerTrainerId(void)
+{
+ return (gSaveBlock2.playerTrainerId[3] << 24) | (gSaveBlock2.playerTrainerId[2] << 16) | (gSaveBlock2.playerTrainerId[1] << 8) | (gSaveBlock2.playerTrainerId[0]);
+}
+
+u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
+{
+ if (gSaveBlock1.location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ return 0;
+ if (gSaveBlock2.playerGender == MALE) {
+ if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ return 0;
+ } else {
+ if (gSaveBlock1.location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ return 0;
+ }
+ if (FlagGet(SYS_TV_LATI) == 1)
+ return 1;
+ if (FlagGet(SYS_TV_HOME) == 1)
+ return 2;
+ return 1;
+}
+
+#ifdef NONMATCHING
+void GetMomOrDadStringForTVMessage(void)
+{
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) {
+ if (gSaveBlock2.playerGender == MALE) {
+ if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F) {
+ StringCopy(gStringVar1, gOtherText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ } else {
+ if (gSaveBlock1.location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F) {
+ StringCopy(gStringVar1, gOtherText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ }
+ }
+ if (VarGet(VAR_0x4003) == 1) {
+ StringCopy(gStringVar1, gOtherText_Mom);
+ } else if (VarGet(VAR_0x4003) == 2) {
+ StringCopy(gStringVar1, gOtherText_Dad);
+ } else if (VarGet(VAR_0x4003) > 2) {
+ if ((u16)(VarGet(VAR_0x4003) & 1) == 0) {
+ StringCopy(gStringVar1, gOtherText_Mom);
+ } else {
+ StringCopy(gStringVar1, gOtherText_Dad);
+ }
+ } else {
+ if ((u16)(Random() & 1) != 0) {
+ StringCopy(gStringVar1, gOtherText_Mom);
+ VarSet(VAR_0x4003, 1);
+ } else {
+ StringCopy(gStringVar1, gOtherText_Dad);
+ VarSet(VAR_0x4003, 2);
+ }
+ }
+}
+#else
+__attribute__((naked))
+void GetMomOrDadStringForTVMessage(void)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ ldr r1, _080BFC40 @ =gSaveBlock1\n\
+ movs r0, 0x4\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0x1\n\
+ bne _080BFC6C\n\
+ ldr r0, _080BFC44 @ =gSaveBlock2\n\
+ ldrb r0, [r0, 0x8]\n\
+ cmp r0, 0\n\
+ bne _080BFC54\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0\n\
+ bne _080BFC6C\n\
+ ldr r0, _080BFC48 @ =gStringVar1\n\
+ ldr r1, _080BFC4C @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ ldr r0, _080BFC50 @ =0x00004003\n\
+ movs r1, 0x1\n\
+ bl VarSet\n\
+ b _080BFC6C\n\
+ .align 2, 0\n\
+_080BFC40: .4byte gSaveBlock1\n\
+_080BFC44: .4byte gSaveBlock2\n\
+_080BFC48: .4byte gStringVar1\n\
+_080BFC4C: .4byte gOtherText_Mom\n\
+_080BFC50: .4byte 0x00004003\n\
+_080BFC54:\n\
+ movs r0, 0x5\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0x2\n\
+ bne _080BFC6C\n\
+ ldr r0, _080BFCB4 @ =gStringVar1\n\
+ ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ ldr r0, _080BFCBC @ =0x00004003\n\
+ movs r1, 0x1\n\
+ bl VarSet\n\
+_080BFC6C:\n\
+ ldr r4, _080BFCBC @ =0x00004003\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x1\n\
+ beq _080BFCAA\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x2\n\
+ beq _080BFCC0\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0x2\n\
+ bls _080BFCD4\n\
+ adds r0, r4, 0\n\
+ bl VarGet\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080BFCC0\n\
+_080BFCAA:\n\
+ ldr r0, _080BFCB4 @ =gStringVar1\n\
+ ldr r1, _080BFCB8 @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ b _080BFD10\n\
+ .align 2, 0\n\
+_080BFCB4: .4byte gStringVar1\n\
+_080BFCB8: .4byte gOtherText_Mom\n\
+_080BFCBC: .4byte 0x00004003\n\
+_080BFCC0:\n\
+ ldr r0, _080BFCCC @ =gStringVar1\n\
+ ldr r1, _080BFCD0 @ =gOtherText_Dad\n\
+ bl StringCopy\n\
+ b _080BFD10\n\
+ .align 2, 0\n\
+_080BFCCC: .4byte gStringVar1\n\
+_080BFCD0: .4byte gOtherText_Dad\n\
+_080BFCD4:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080BFD00\n\
+ ldr r0, _080BFCF8 @ =gStringVar1\n\
+ ldr r1, _080BFCFC @ =gOtherText_Mom\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x1\n\
+ bl VarSet\n\
+ b _080BFD10\n\
+ .align 2, 0\n\
+_080BFCF8: .4byte gStringVar1\n\
+_080BFCFC: .4byte gOtherText_Mom\n\
+_080BFD00:\n\
+ ldr r0, _080BFD18 @ =gStringVar1\n\
+ ldr r1, _080BFD1C @ =gOtherText_Dad\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2\n\
+ bl VarSet\n\
+_080BFD10:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080BFD18: .4byte gStringVar1\n\
+_080BFD1C: .4byte gOtherText_Dad\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_80BFD20(void)
+{
+ VarSet(VAR_0x40BC, 0);
+ RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+}
+
+extern u8 ewram[];
+#define gUnknown_02007000 (*(struct ewramStruct_0207000 *)(ewram + 0x7000))
+extern u8 gUnknown_020387E4;
+
+struct ewramStruct_0207000 {
+ struct SaveTVStruct tvshows[4];
+};
+
+void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3);
+
+void sub_80C04A0(void);
+void sub_80C01D4(void);
+void sub_80C0408(void);
+
+void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2)
+{
+ u8 i;
+ struct ewramStruct_0207000 *ewramTVShows;
+ for (i=0; i<4; i++) {
+ memcpy(&gUnknown_02007000.tvshows[i], &arg0[i * arg1], sizeof(struct SaveTVStruct));
+ }
+ ewramTVShows = &gUnknown_02007000;
+ switch (arg2) {
+ case 0:
+ sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]);
+ break;
+ case 1:
+ sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]);
+ break;
+ case 2:
+ sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]);
+ break;
+ case 3:
+ sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows);
+ break;
+ }
+ sub_80BF588(gSaveBlock1.tvShows.shows);
+ sub_80C04A0();
+ sub_80BF588(gSaveBlock1.tvShows.shows);
+ sub_80C01D4();
+ sub_80C0408();
+}
+
+extern u8 gUnknown_03000720;
+extern s8 gUnknown_03000722;
+s8 sub_80C019C(TVShow tvShows[]);
+bool8 sub_80BFF68(struct SaveTVStruct ** tv1, struct SaveTVStruct ** tv2, u8 idx);
+u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx);
+u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx);
+u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx);
+
+void sub_80BFE24(struct SaveTVStruct *arg0, struct SaveTVStruct *arg1, struct SaveTVStruct *arg2, struct SaveTVStruct *arg3)
+{
+ u8 i, j;
+ struct SaveTVStruct ** argslist[4];
+ argslist[0] = &arg0;
+ argslist[1] = &arg1;
+ argslist[2] = &arg2;
+ argslist[3] = &arg3;
+ gUnknown_03000720 = GetLinkPlayerCount();
+ while (1) {
+ for (i=0; i<gUnknown_03000720; i++) {
+ if (i == 0)
+ gUnknown_020387E4 = i;
+ gUnknown_03000722 = sub_80C019C(argslist[i][0]->shows);
+ if (gUnknown_03000722 == -1) {
+ gUnknown_020387E4++;
+ if (gUnknown_020387E4 == gUnknown_03000720)
+ return;
+ } else {
+ for (j=0; j<gUnknown_03000720-1; j++) {
+ gUnknown_03005D38.var0 = sub_80BF74C(argslist[(i + j + 1) % gUnknown_03000720][0]->shows);
+ if (gUnknown_03005D38.var0 != -1 && sub_80BFF68(argslist[(i + j + 1) % gUnknown_03000720], argslist[i], (i + j + 1) % gUnknown_03000720) == 1) {
+ break;
+ }
+ }
+ if (j == gUnknown_03000720 - 1) {
+ sub_80BF55C(argslist[i][0]->shows, gUnknown_03000722);
+ }
+ }
+ }
+ }
+}
+
+#ifdef NONMATCHING
+bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) {
+ u8 value;
+ u8 switchval;
+ struct SaveTVStruct *tv1;
+ struct SaveTVStruct *tv2;
+ tv1 = *arg1;
+ tv2 = *arg2;
+ value = FALSE;
+ switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00);
+ switch (switchval) {
+ case 2:
+ value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
+ break;
+ case 3:
+ value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
+ break;
+ case 4:
+ value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
+ break;
+ }
+ if (value == TRUE) {
+ sub_80BF55C(tv2->shows, gUnknown_03000722);
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+#else
+__attribute__((naked))
+bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 idx) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x4\n\
+ lsls r2, 24\n\
+ lsrs r7, r2, 24\n\
+ ldr r4, [r0]\n\
+ ldr r6, [r1]\n\
+ movs r5, 0\n\
+ ldr r2, _080BFFA4 @ =gUnknown_03000722\n\
+ movs r1, 0\n\
+ ldrsb r1, [r2, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6 @ this is the only mimsmatch\n\
+ ldrb r0, [r0]\n\
+ str r2, [sp]\n\
+ bl sub_80BFB54\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r1, r0, 0\n\
+ ldr r2, [sp]\n\
+ cmp r0, 0x3\n\
+ beq _080BFFD8\n\
+ cmp r0, 0x3\n\
+ bgt _080BFFA8\n\
+ cmp r0, 0x2\n\
+ beq _080BFFAE\n\
+ b _080C0026\n\
+ .align 2, 0\n\
+_080BFFA4: .4byte gUnknown_03000722\n\
+_080BFFA8:\n\
+ cmp r1, 0x4\n\
+ beq _080C0000\n\
+ b _080C0026\n\
+_080BFFAE:\n\
+ ldr r0, _080BFFD4 @ =gUnknown_03005D38\n\
+ movs r1, 0\n\
+ ldrsb r1, [r0, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ ldrb r2, [r2]\n\
+ lsls r2, 24\n\
+ asrs r2, 24\n\
+ lsls r1, r2, 3\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r6, r1\n\
+ adds r2, r7, 0\n\
+ bl sub_80C004C\n\
+ b _080C0022\n\
+ .align 2, 0\n\
+_080BFFD4: .4byte gUnknown_03005D38\n\
+_080BFFD8:\n\
+ ldr r0, _080BFFFC @ =gUnknown_03005D38\n\
+ movs r1, 0\n\
+ ldrsb r1, [r0, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ ldrb r2, [r2]\n\
+ lsls r2, 24\n\
+ asrs r2, 24\n\
+ lsls r1, r2, 3\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r6, r1\n\
+ adds r2, r7, 0\n\
+ bl sub_80C00B4\n\
+ b _080C0022\n\
+ .align 2, 0\n\
+_080BFFFC: .4byte gUnknown_03005D38\n\
+_080C0000:\n\
+ ldr r0, _080C0030 @ =gUnknown_03005D38\n\
+ movs r1, 0\n\
+ ldrsb r1, [r0, r1]\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4, r0\n\
+ ldrb r2, [r2]\n\
+ lsls r2, 24\n\
+ asrs r2, 24\n\
+ lsls r1, r2, 3\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r6, r1\n\
+ adds r2, r7, 0\n\
+ bl sub_80C0134\n\
+_080C0022:\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+_080C0026:\n\
+ cmp r5, 0x1\n\
+ beq _080C0034\n\
+ movs r0, 0\n\
+ b _080C0040\n\
+ .align 2, 0\n\
+_080C0030: .4byte gUnknown_03005D38\n\
+_080C0034:\n\
+ ldr r0, _080C0048 @ =gUnknown_03000722\n\
+ ldrb r1, [r0]\n\
+ adds r0, r6, 0\n\
+ bl sub_80BF55C\n\
+ movs r0, 0x1\n\
+_080C0040:\n\
+ add sp, 0x4\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_080C0048: .4byte gUnknown_03000722\n\
+.syntax divided\n");
+}
+#endif
+
+u8 sub_80C004C(TVShow *tv1, TVShow *tv2, u8 idx) {
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) {
+ return FALSE;
+ }
+ tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
+ tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
+ tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.var01 = 1;
+ return TRUE;
+}
+
+u8 sub_80C00B4(TVShow *tv1, TVShow *tv2, u8 idx) {
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi) {
+ return FALSE;
+ }
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) {
+ return FALSE;
+ }
+ tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo;
+ tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi;
+ tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerId2Hi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.var01 = 1;
+ return TRUE;
+}
+
+u8 sub_80C0134(TVShow *tv1, TVShow *tv2, u8 idx) {
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi) {
+ return FALSE;
+ }
+ tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
+ tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
+ tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.var01 = 1;
+ tv1->common.var16[0] = 1;
+ return TRUE;
+}
+
+s8 sub_80C019C(TVShow tvShows[]) {
+ u8 i;
+ for (i=0; i<24; i++) {
+ if (tvShows[i].common.var01 == 0 && (u8)(tvShows[i].common.var00 - 1) < 60) {
+ return i;
+ }
+ }
+ return -1;
+}
+
+void sub_80C03A8(u8 showidx);
+void sub_80C03C8(u16 species, u8 showidx);
+
+#ifdef NONMATCHING
+void sub_80C01D4(void) {
+ u8 i;
+ for (i=0; i<24; i++) {
+ switch (gSaveBlock1.tvShows.shows[i].common.var00) {
+ case 0:
+ break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i);
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i);
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i);
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ break;
+ default:
+ sub_80C03A8(i);
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80C01D4(void) {
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ movs r6, 0\n\
+_080C01D8:\n\
+ ldr r0, _080C01F8 @ =gSaveBlock1\n\
+ lsls r2, r6, 3\n\
+ adds r1, r2, r6\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldr r0, _080C01FC @ =0x00002738\n\
+ adds r1, r0\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x29\n\
+ bls _080C01EE\n\
+ b _default\n\
+_080C01EE:\n\
+ lsls r0, 2\n\
+ ldr r1, _080C0200 @ =_080C0204\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080C01F8: .4byte gSaveBlock1\n\
+_080C01FC: .4byte 0x00002738\n\
+_080C0200: .4byte _080C0204\n\
+ .align 2, 0\n\
+_080C0204:\n\
+ .4byte _break\n\
+ .4byte _fanclubLetter @ TVSHOW_FAN_CLUB_LETTER\n\
+ .4byte _break @ TVSHOW_RECENT_HAPPENINGS\n\
+ .4byte _fanclubOpinions @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n\
+ .4byte _showtype4 @ TVSHOW_UNKN_SHOWTYPE_04\n\
+ .4byte _nameRater @ TVSHOW_NAME_RATER_SHOW\n\
+ .4byte _bravoTrainerContest @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n\
+ .4byte _bravoTrainerTower @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _pokemonTodayS @ TVSHOW_POKEMON_TODAY_CAUGHT\n\
+ .4byte _break @ TVSHOW_SMART_SHOPPER\n\
+ .4byte _pokemonTodayF @ TVSHOW_POKEMON_TODAY_FAILED\n\
+ .4byte _fishing @ TVSHOW_FISHING_ADVICE\n\
+ .4byte _worldOfMasters @ TVSHOW_WORLD_OF_MASTERS\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _default\n\
+ .4byte _break @ TVSHOW_MASS_OUTBREAK\n\
+_fanclubLetter:\n\
+ adds r0, r2, r6\n\
+ lsls r0, 2\n\
+ ldr r1, _080C02B8 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x2]\n\
+ b _checkSpecies1 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C02B8: .4byte gSaveBlock1 + 0x2738\n\
+_fanclubOpinions:\n\
+ adds r0, r2, r6\n\
+ lsls r0, 2\n\
+ ldr r1, _080C02C8 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x2]\n\
+ b _checkSpecies1 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C02C8: .4byte gSaveBlock1 + 0x2738\n\
+_showtype4:\n\
+ adds r0, r2, r6\n\
+ lsls r0, 2\n\
+ ldr r1, _080C02D8 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x6]\n\
+ b _checkSpecies1 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C02D8: .4byte gSaveBlock1 + 0x2738\n\
+_nameRater:\n\
+ adds r4, r2, r6\n\
+ lsls r4, 2\n\
+ ldr r0, _080C02F4 @ =gSaveBlock1 + 0x2738\n\
+ adds r4, r0\n\
+ ldrh r0, [r4, 0x2]\n\
+ lsls r5, r6, 24\n\
+ lsrs r5, 24\n\
+ adds r1, r5, 0\n\
+ bl sub_80C03C8\n\
+ ldrh r0, [r4, 0x1C]\n\
+ b _checkSpecies2 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C02F4: .4byte gSaveBlock1 + 0x2738\n\
+_bravoTrainerContest:\n\
+ adds r0, r2, r6\n\
+ lsls r0, 2\n\
+ ldr r1, _080C0304 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x2]\n\
+ b _checkSpecies1 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C0304: .4byte gSaveBlock1 + 0x2738\n\
+_bravoTrainerTower:\n\
+ adds r4, r2, r6\n\
+ lsls r4, 2\n\
+ ldr r0, _080C0320 @ =gSaveBlock1 + 0x2738\n\
+ adds r4, r0\n\
+ ldrh r0, [r4, 0xA]\n\
+ lsls r5, r6, 24\n\
+ lsrs r5, 24\n\
+ adds r1, r5, 0\n\
+ bl sub_80C03C8\n\
+ ldrh r0, [r4, 0x14]\n\
+ b _checkSpecies2 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C0320: .4byte gSaveBlock1 + 0x2738\n\
+_pokemonTodayS:\n\
+ adds r0, r2, r6\n\
+ lsls r0, 2\n\
+ ldr r1, _080C0330 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x10]\n\
+ b _checkSpecies1 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C0330: .4byte gSaveBlock1 + 0x2738\n\
+_pokemonTodayF:\n\
+ adds r4, r2, r6\n\
+ lsls r4, 2\n\
+ ldr r0, _080C034C @ =gSaveBlock1 + 0x2738\n\
+ adds r4, r0\n\
+ ldrh r0, [r4, 0xC]\n\
+ lsls r5, r6, 24\n\
+ lsrs r5, 24\n\
+ adds r1, r5, 0\n\
+ bl sub_80C03C8\n\
+ ldrh r0, [r4, 0xE]\n\
+ b _checkSpecies2 @ sub_80C03C8(r0, i)\n\
+ .align 2, 0\n\
+_080C034C: .4byte gSaveBlock1 + 0x2738\n\
+_fishing:\n\
+ adds r0, r2, r6\n\
+ lsls r0, 2\n\
+ ldr r1, _080C0364 @ =gSaveBlock1 + 0x2738\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x4]\n\
+_checkSpecies1:\n\
+ lsls r1, r6, 24\n\
+ lsrs r1, 24\n\
+ bl sub_80C03C8\n\
+ b _break\n\
+ .align 2, 0\n\
+_080C0364: .4byte gSaveBlock1 + 0x2738\n\
+_worldOfMasters:\n\
+ adds r4, r2, r6\n\
+ lsls r4, 2\n\
+ ldr r0, _080C0388 @ =gSaveBlock1 + 0x2738\n\
+ adds r4, r0\n\
+ ldrh r0, [r4, 0x8]\n\
+ lsls r5, r6, 24\n\
+ lsrs r5, 24\n\
+ adds r1, r5, 0\n\
+ bl sub_80C03C8\n\
+ ldrh r0, [r4, 0x4]\n\
+_checkSpecies2:\n\
+ adds r1, r5, 0\n\
+ bl sub_80C03C8\n\
+ b _break\n\
+ .align 2, 0\n\
+_080C0388: .4byte gSaveBlock1 + 0x2738\n\
+_default:\n\
+ lsls r0, r6, 24\n\
+ lsrs r0, 24\n\
+ bl sub_80C03A8\n\
+_break:\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+ cmp r6, 0x17\n\
+ bhi _080C03A0\n\
+ b _080C01D8\n\
+_080C03A0:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_80C03A8(u8 showidx) {
+ gSaveBlock1.tvShows.shows[showidx].common.var01 = 0;
+}
+
+void sub_80C03C8(u16 species, u8 showidx) {
+ if (sub_8090D90(SpeciesToNationalPokedexNum(species), 0) == 0) {
+ gSaveBlock1.tvShows.shows[showidx].common.var01 = 0;
+ }
+}
+
+#ifdef NONMATCHING
+void sub_80C0408(void) {
+ u16 i;
+ if (FlagGet(SYS_GAME_CLEAR) != 1) {
+ for (i=0; i<24; i++) {
+ if (gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE || gSaveBlock1.tvShows.shows[i].common.var00 == TVSHOW_MASS_OUTBREAK) {
+ gSaveBlock1.tvShows.shows[i].common.var01 = 0;
+ }
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80C0408(void) {
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r0, _080C044C @ =0x00000804\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ beq _080C0444\n\
+ movs r2, 0\n\
+ ldr r6, _080C0450 @ =gSaveBlock1\n\
+ ldr r4, _080C0454 @ =0x00002739\n\
+ movs r3, 0\n\
+ ldr r5, _080C0458 @ =0x00002738\n\
+_080C0422:\n\
+ lsls r0, r2, 3\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ adds r1, r0, r6\n\
+ adds r0, r1, r5\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x7\n\
+ beq _080C0436\n\
+ cmp r0, 0x29\n\
+ bne _080C043A\n\
+_080C0436:\n\
+ adds r0, r1, r4\n\
+ strb r3, [r0]\n\
+_080C043A:\n\
+ adds r0, r2, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r2, 0x17\n\
+ bls _080C0422\n\
+_080C0444:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080C044C: .4byte 0x00000804\n\
+_080C0450: .4byte gSaveBlock1\n\
+_080C0454: .4byte 0x00002739\n\
+_080C0458: .4byte 0x00002738\n\
+.syntax divided\n");
+}
+#endif
+
+void sub_80C045C(void) {
+ u8 i;
+ for (i=0; i<5; i++) {
+ if (sub_80BFB54(gSaveBlock1.tvShows.shows[i].common.var00) == 2) {
+ gSaveBlock1.tvShows.shows[i].common.var01 = 0;
+ }
+ }
+}
+
+asm(".section .dotvshow\n");
+
+void DoTVShowPokemonFanClubLetter(void);
+void DoTVShowRecentHappenings(void);
+void DoTVShowPokemonFanClubOpinions(void);
+void nullsub_22(void);
+void DoTVShowPokemonNewsMassOutbreak(void);
+void DoTVShowBravoTrainerPokemonProfile(void);
+void DoTVShowBravoTrainerBattleTowerProfile(void);
+void DoTVShowPokemonTodaySuccessfulCapture(void);
+void DoTVShowTodaysSmartShopper(void);
+void DoTVShowTheNameRaterShow(void);
+void DoTVShowPokemonTodayFailedCapture(void);
+void DoTVShowPokemonAngler(void);
+void DoTVShowTheWorldOfMasters(void);
+
+bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2);
+
+void sub_80C06BC(int *arg0, int *arg1) {
+ struct UnknownSaveStruct2ABC *str0;
+ struct UnknownSaveStruct2ABC *str1;
+ str0 = (void *)arg0[0];
+ str1 = (void *)arg1[0];
+ str1 += gUnknown_03000722;
+ sub_80C06E8(str0, str1, gUnknown_03005D38.var0);
+}
+
+bool8 sub_80C06E8(struct UnknownSaveStruct2ABC *arg0, struct UnknownSaveStruct2ABC *arg1, s8 arg2) {
+ u8 i;
+ if (arg1->val0 == 0) {
+ return FALSE;
+ }
+ for (i=0; i<16; i++) {
+ if (arg0[i].val0 == arg1->val0) {
+ return FALSE;
+ }
+ }
+ arg0[arg2].val0 = arg1->val0;
+ arg0[arg2].val1 = 1;
+ arg0[arg2].val2 = arg1->val2;
+ return TRUE;
+}
+
+s8 sub_80C0730(struct UnknownSaveStruct2ABC *arg0, u8 arg1) {
+ if (arg0[arg1].val0 == 0) {
+ return -1;
+ }
+ return arg1;
+}
+
+void sub_80C0750(void) {
+ u8 i;
+ for (i=0; i<16; i++) {
+ if (gSaveBlock1.unknown_2ABC[i].val0 > 3) {
+ sub_80BEC10(i);
+ }
+ }
+ sub_80BEC40();
+}
+
+void sub_80C0788(void) {
+ u8 i;
+ if (FlagGet(SYS_GAME_CLEAR) != 1) {
+ for (i=0; i<16; i++) {
+ gSaveBlock1.unknown_2ABC[i].val1 = 0;
+ }
+ }
+}
+
+void DoTVShow(void) {
+ if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) {
+ switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) {
+ case TVSHOW_FAN_CLUB_LETTER:
+ DoTVShowPokemonFanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ DoTVShowRecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ DoTVShowPokemonFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ nullsub_22();
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ DoTVShowPokemonNewsMassOutbreak();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ DoTVShowBravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ DoTVShowBravoTrainerBattleTowerProfile();
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ DoTVShowPokemonTodaySuccessfulCapture();
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ DoTVShowTodaysSmartShopper();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ DoTVShowTheNameRaterShow();
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ DoTVShowPokemonTodayFailedCapture();
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ DoTVShowPokemonAngler();
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ DoTVShowTheWorldOfMasters();
+ break;
+ }
+ }
+}
+
+void TVShowConvertInternationalString(u8 *dest, u8 *src, u8 language) {
+ StringCopy(dest, src);
+ if (language < LANGUAGE_ENGLISH) {
+ ConvertInternationalString(dest, LANGUAGE_JAPANESE);
+ }
+}
+
asm(".section .text_c");
+void TVShowConvertInternationalString(u8 *, u8 *, u8);
+
+void TakeTVShowInSearchOfTrainersOffTheAir(void);
+
+void DoTVShowTheNameRaterShow(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
+ gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1;
+ break;
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ if (tvShow->nameRaterShow.random == 0) {
+ gUnknown_020387E8 = 9;
+ } else if (tvShow->nameRaterShow.random == 1) {
+ gUnknown_020387E8 = 10;
+ } else if (tvShow->nameRaterShow.random == 2) {
+ gUnknown_020387E8 = 11;
+ }
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ if (tvShow->nameRaterShow.random == 0) {
+ gUnknown_020387E8 = 9;
+ } else if (tvShow->nameRaterShow.random == 1) {
+ gUnknown_020387E8 = 10;
+ } else if (tvShow->nameRaterShow.random == 2) {
+ gUnknown_020387E8 = 11;
+ }
+ break;
+ case 9:
+ case 10:
+ case 11:
+ sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
+ gUnknown_020387E8 = 12;
+ break;
+ case 13:
+ sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language);
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ gUnknown_020387E8 = 14;
+ break;
+ case 14:
+ sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language);
+ sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ gUnknown_020387E8 = 18;
+ break;
+ case 15:
+ sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
+ sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
+ gUnknown_020387E8 = 16;
+ break;
+ case 16:
+ sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
+ gUnknown_020387E8 = 17;
+ break;
+ case 17:
+ sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]);
+ gUnknown_020387E8 = 18;
+ break;
+ case 12:
+ switchval = 18;
+ gUnknown_020387E8 = 18;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(gTVNameRaterTextGroup[switchval]);
+}
+
+void DoTVShowPokemonTodaySuccessfulCapture(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) {
+ gUnknown_020387E8 = 5;
+ } else {
+ gUnknown_020387E8 = 1;
+ }
+ break;
+ case 1:
+ gUnknown_020387E8 = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name);
+ sub_80BF088(2, tvShow->pokemonToday.var12);
+ if (tvShow->pokemonToday.var12 < 4) {
+ gUnknown_020387E8 = 3;
+ } else {
+ gUnknown_020387E8 = 4;
+ }
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ gUnknown_020387E8 = 6;
+ break;
+ case 4:
+ gUnknown_020387E8 = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ gUnknown_020387E8 = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ gUnknown_020387E8 += (Random() % 4) + 1;
+ break;
+ case 7:
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ sub_80BF638(2, tvShow->pokemonToday.species);
+ gUnknown_020387E8 = 11;
+ break;
+ case 9:
+ case 10:
+ StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ gUnknown_020387E8 = 11;
+ break;
+ case 11:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]);
+}
+
+void DoTVShowPokemonTodayFailedCapture(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ u16 rval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]);
+ gUnknown_020387E8 = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0);
+ StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]);
+ if (tvShow->pokemonTodayFailed.var11 == 1) {
+ gUnknown_020387E8 = 3;
+ } else {
+ gUnknown_020387E8 = 2;
+ }
+ break;
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ sub_80BF088(1, tvShow->pokemonTodayFailed.var10);
+ rval = (Random() % 3);
+ if (rval == 0) {
+ gUnknown_020387E8 = 5;
+ } else {
+ gUnknown_020387E8 = 4;
+ }
+ break;
+ case 4:
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ gUnknown_020387E8 = 6;
+ break;
+ case 6:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]);
+}
+
+void DoTVShowPokemonFanClubLetter(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ u16 rval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]);
+ gUnknown_020387E8 = 50;
+ break;
+ case 1:
+ rval = (Random() % 4) + 1;
+ if (rval == 1) {
+ gUnknown_020387E8 = 2;
+ } else {
+ gUnknown_020387E8 = rval + 2;
+ }
+ break;
+ case 2:
+ gUnknown_020387E8 = 51;
+ break;
+ case 3:
+ gUnknown_020387E8 += (Random() % 3) + 1;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ sub_80BF79C(tvShow);
+ gUnknown_020387E8 = 7;
+ break;
+ case 7:
+ rval = (Random() % 0x1f) + 0x46;
+ sub_80BF088(2, rval);
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 1;
+ return;
+ case 51:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 3;
+ return;
+ }
+ ShowFieldMessage(gTVFanClubTextGroup[switchval]);
+}
+
+void DoTVShowRecentHappenings(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language);
+ sub_80BF79C(tvShow);
+ gUnknown_020387E8 = 50;
+ break;
+ case 1:
+ gUnknown_020387E8 += 1 + (Random() % 3);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ gUnknown_020387E8 = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 1;
+ return;
+ }
+ ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]);
+}
+
+void DoTVShowPokemonFanClubOpinions(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E);
+ gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
+ sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]);
+ gUnknown_020387E8 = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
+ sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]);
+}
+
+void nullsub_22(void) {
+
+}
+
void DoTVShowPokemonNewsMassOutbreak(void)
{
TVShow *tvShow;
- tvShow = &gSaveBlock1.tvShows[gSpecialVar_0x8004];
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
sub_80FBFB4(gStringVar1, tvShow->massOutbreak.locationMapNum, 0);
@@ -300,14 +2909,122 @@ void DoTVShowPokemonNewsMassOutbreak(void)
ShowFieldMessage(gTVPokemonOutbreakTextGroup[gUnknown_020387E8]);
}
-asm(".section .text_d");
+void DoTVShowInSearchOfTrainers(void) {
+ u8 switchval;
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
+ if (gSaveBlock1.gabbyAndTyData.val9 > 1) {
+ gUnknown_020387E8 = 1;
+ } else {
+ gUnknown_020387E8 = 2;
+ }
+ break;
+ case 1:
+ gUnknown_020387E8 = 2;
+ break;
+ case 2:
+ if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) {
+ gUnknown_020387E8 = 4;
+ } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) {
+ gUnknown_020387E8 = 5;
+ } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) {
+ gUnknown_020387E8 = 6;
+ } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) {
+ gUnknown_020387E8 = 7;
+ } else {
+ gUnknown_020387E8 = 3;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
+ StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
+ gUnknown_020387E8 = 8;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ gUnknown_020387E8 = 8;
+ break;
+ case 8:
+ sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2);
+ StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
+ gScriptResult = 1;
+ gUnknown_020387E8 = 0;;
+ TakeTVShowInSearchOfTrainersOffTheAir();
+ break;
+ }
+ ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]);
+}
+
+void DoTVShowPokemonAngler(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ if (tvShow->pokemonAngler.var02 < tvShow->pokemonAngler.var03) {
+ gUnknown_020387E8 = 0;
+ } else {
+ gUnknown_020387E8 = 1;
+ }
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
+ sub_80BF088(2, tvShow->pokemonAngler.var03);
+ TVShowDone();
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
+ sub_80BF088(2, tvShow->pokemonAngler.var02);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]);
+}
+
+void DoTVShowTheWorldOfMasters(void) {
+ TVShow *tvShow;
+ u8 switchval;
+ tvShow = &gSaveBlock1.tvShows.shows[gSpecialVar_0x8004];
+ gScriptResult = 0;
+ switchval = gUnknown_020387E8;
+ switch (switchval) {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
+ tvShow->worldOfMasters.language);
+ sub_80BF088(1, tvShow->worldOfMasters.var06);
+ sub_80BF088(2, tvShow->worldOfMasters.var02);
+ gUnknown_020387E8 = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]);
+ gUnknown_020387E8 = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
+ tvShow->worldOfMasters.language);
+ sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0);
+ StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]);
+}
void TVShowDone(void)
{
gScriptResult = 1;
gUnknown_020387E8 = 0;
- gSaveBlock1.tvShows[gSpecialVar_0x8004].common.var01 = 0;
+ gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 = 0;
}
void sub_80C2014(void)
diff --git a/tools/aif2pcm/Makefile b/tools/aif2pcm/Makefile
index ec6343b12..611c0e2df 100644
--- a/tools/aif2pcm/Makefile
+++ b/tools/aif2pcm/Makefile
@@ -1,6 +1,6 @@
CC = gcc
-CFLAGS = -Wall -Wextra -Wno-switch -std=c11 -O2
+CFLAGS = -Wall -Wextra -Wno-switch -std=c11 -O2 -s
LIBS = -lm
@@ -9,7 +9,7 @@ SRCS = main.c extended.c
.PHONY: clean
aif2pcm: $(SRCS)
- $(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS)
+ $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
clean:
$(RM) aif2pcm aif2pcm.exe
diff --git a/tools/bin2c/Makefile b/tools/bin2c/Makefile
index eee19af22..bd5f60490 100644
--- a/tools/bin2c/Makefile
+++ b/tools/bin2c/Makefile
@@ -1,13 +1,13 @@
CC = gcc
-CFLAGS = -Wall -Wextra -std=c11 -O2
+CFLAGS = -Wall -Wextra -std=c11 -O2 -s
.PHONY: clean
SRCS = bin2c.c
bin2c: $(SRCS)
- $(CC) $(CFLAGS) $(SRCS) -o $@
+ $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS)
clean:
$(RM) bin2c bin2c.exe
diff --git a/tools/gbagfx/Makefile b/tools/gbagfx/Makefile
index de4ea5c42..9a5dee1cc 100644
--- a/tools/gbagfx/Makefile
+++ b/tools/gbagfx/Makefile
@@ -1,6 +1,6 @@
CC = gcc
-CFLAGS = -Wall -Wextra -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
+CFLAGS = -Wall -Wextra -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK
LIBS = -lpng -lz
@@ -9,7 +9,7 @@ SRCS = main.c convert_png.c gfx.c jasc_pal.c lz.c rl.c util.c font.c
.PHONY: clean
gbagfx: $(SRCS) convert_png.h gfx.h global.h jasc_pal.h lz.h rl.h util.h font.h
- $(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS)
+ $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
clean:
$(RM) gbagfx gbagfx.exe
diff --git a/tools/mid2agb/Makefile b/tools/mid2agb/Makefile
index 3215169d3..accd81882 100644
--- a/tools/mid2agb/Makefile
+++ b/tools/mid2agb/Makefile
@@ -1,6 +1,6 @@
CXX := g++
-CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch
+CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch
SRCS := agb.cpp error.cpp main.cpp midi.cpp tables.cpp
@@ -9,7 +9,7 @@ HEADERS := agb.h error.h main.h midi.h tables.h
.PHONY: clean
mid2agb: $(SRCS) $(HEADERS)
- $(CXX) $(CXXFLAGS) $(SRCS) -o $@
+ $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS)
clean:
$(RM) mid2agb mid2agb.exe
diff --git a/tools/preproc/Makefile b/tools/preproc/Makefile
index 2d577c79f..1f4c58e21 100644
--- a/tools/preproc/Makefile
+++ b/tools/preproc/Makefile
@@ -1,6 +1,6 @@
CXX := g++
-CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch
+CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch
SRCS := asm_file.cpp c_file.cpp charmap.cpp preproc.cpp string_parser.cpp \
utf8.cpp
@@ -11,7 +11,7 @@ HEADERS := asm_file.h c_file.h char_util.h charmap.h preproc.h string_parser.h \
.PHONY: clean
preproc: $(SRCS) $(HEADERS)
- $(CXX) $(CXXFLAGS) $(SRCS) -o $@
+ $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS)
clean:
$(RM) preproc preproc.exe
diff --git a/tools/ramscrgen/Makefile b/tools/ramscrgen/Makefile
index e18ae99f2..6c4ca28b6 100644
--- a/tools/ramscrgen/Makefile
+++ b/tools/ramscrgen/Makefile
@@ -1,6 +1,6 @@
CXX := g++
-CXXFLAGS := -std=c++11 -O2 -Wall -Wno-switch
+CXXFLAGS := -std=c++11 -O2 -s -Wall -Wno-switch
SRCS := main.cpp sym_file.cpp elf.cpp
@@ -9,7 +9,7 @@ HEADERS := ramscrgen.h sym_file.h elf.h char_util.h
.PHONY: clean
ramscrgen: $(SRCS) $(HEADERS)
- $(CXX) $(CXXFLAGS) $(SRCS) -o $@
+ $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS)
clean:
$(RM) ramscrgen ramscrgen.exe
diff --git a/tools/rsfont/Makefile b/tools/rsfont/Makefile
index d2a88c46d..544954bfc 100644
--- a/tools/rsfont/Makefile
+++ b/tools/rsfont/Makefile
@@ -1,6 +1,6 @@
CC = gcc
-CFLAGS = -Wall -Wextra -std=c11 -O2 -DPNG_SKIP_SETJMP_CHECK
+CFLAGS = -Wall -Wextra -std=c11 -O2 -s -DPNG_SKIP_SETJMP_CHECK
LIBS = -lpng -lz
@@ -9,7 +9,7 @@ SRCS = main.c convert_png.c util.c font.c
.PHONY: clean
rsfont: $(SRCS) convert_png.h gfx.h global.h util.h font.h
- $(CC) $(CFLAGS) $(SRCS) -o $@ $(LIBS)
+ $(CC) $(CFLAGS) $(SRCS) -o $@ $(LDFLAGS) $(LIBS)
clean:
$(RM) rsfont rsfont.exe
diff --git a/tools/scaninc/Makefile b/tools/scaninc/Makefile
index 71c4389ef..d33dee6d2 100644
--- a/tools/scaninc/Makefile
+++ b/tools/scaninc/Makefile
@@ -1,6 +1,6 @@
CXX = g++
-CXXFLAGS = -Wall -std=c++11 -O2
+CXXFLAGS = -Wall -std=c++11 -O2 -s
SRCS = scaninc.cpp c_file.cpp asm_file.cpp
@@ -9,7 +9,7 @@ HEADERS := scaninc.h asm_file.h c_file.h
.PHONY: clean
scaninc: $(SRCS) $(HEADERS)
- $(CXX) $(CXXFLAGS) $(SRCS) -o $@
+ $(CXX) $(CXXFLAGS) $(SRCS) -o $@ $(LDFLAGS)
clean:
$(RM) scaninc scaninc.exe