summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscnorton <scnorton@biociphers.org>2017-06-29 17:17:35 -0400
committerscnorton <scnorton@biociphers.org>2017-06-29 17:17:35 -0400
commita62fbd6ec1d34ccba25e117e0db60fd4100bfd8d (patch)
treed28f0320009ff4cf4955e84b4555519a1ab55b69
parentb73b15dc9c10ace5145e3d4b339ca833413a1522 (diff)
parent8d82578d3a101b06f9d2ced31738021007c4e533 (diff)
Merge branch 'master' into pokeblock
-rw-r--r--asm/field_specials.s4934
-rw-r--r--data/field_specials.s75
-rw-r--r--include/battle_tower.h1
-rwxr-xr-xinclude/field_map_obj.h3
-rw-r--r--include/field_region_map.h1
-rw-r--r--include/field_specials.h24
-rwxr-xr-xinclude/pokeblock.h1
-rwxr-xr-x[-rw-r--r--]include/pokemon.h2
-rw-r--r--include/pokemon_summary_screen.h1
-rwxr-xr-x[-rw-r--r--]include/region_map.h2
-rw-r--r--include/script.h1
-rw-r--r--include/tv.h3
-rwxr-xr-x[-rw-r--r--]include/vars.h5
-rwxr-xr-xld_script.txt3
-rwxr-xr-xsrc/field_map_obj.c4
-rwxr-xr-x[-rw-r--r--]src/field_specials.c2213
16 files changed, 2238 insertions, 5035 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s
deleted file mode 100644
index 8523e540b..000000000
--- a/asm/field_specials.s
+++ /dev/null
@@ -1,4934 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetSSTidalFlag
-SetSSTidalFlag: @ 810D980
- push {lr}
- ldr r0, _0810D998 @ =0x0000082d
- bl FlagSet
- ldr r0, _0810D99C @ =0x0000404a
- bl GetVarPointer
- movs r1, 0
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0810D998: .4byte 0x0000082d
-_0810D99C: .4byte 0x0000404a
- thumb_func_end SetSSTidalFlag
-
- thumb_func_start ResetSSTidalFlag
-ResetSSTidalFlag: @ 810D9A0
- push {lr}
- ldr r0, _0810D9AC @ =0x0000082d
- bl FlagReset
- pop {r0}
- bx r0
- .align 2, 0
-_0810D9AC: .4byte 0x0000082d
- thumb_func_end ResetSSTidalFlag
-
- thumb_func_start CountSSTidalStep
-CountSSTidalStep: @ 810D9B0
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _0810D9DC @ =0x0000082d
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0810D9D6
- ldr r0, _0810D9E0 @ =0x0000404a
- bl GetVarPointer
- ldrh r1, [r0]
- adds r1, r4, r1
- strh r1, [r0]
- lsls r1, 16
- lsrs r1, 16
- cmp r1, 0xCC
- bhi _0810D9E4
-_0810D9D6:
- movs r0, 0
- b _0810D9E6
- .align 2, 0
-_0810D9DC: .4byte 0x0000082d
-_0810D9E0: .4byte 0x0000404a
-_0810D9E4:
- movs r0, 0x1
-_0810D9E6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end CountSSTidalStep
-
- thumb_func_start GetSSTidalLocation
-GetSSTidalLocation: @ 810D9EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r5, r1, 0
- adds r6, r2, 0
- adds r7, r3, 0
- ldr r0, _0810DA1C @ =0x0000404a
- bl GetVarPointer
- adds r4, r0, 0
- ldr r0, _0810DA20 @ =0x000040b4
- bl GetVarPointer
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x9
- bhi _0810DAB2
- lsls r0, 2
- ldr r1, _0810DA24 @ =_0810DA28
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810DA1C: .4byte 0x0000404a
-_0810DA20: .4byte 0x000040b4
-_0810DA24: .4byte _0810DA28
- .align 2, 0
-_0810DA28:
- .4byte _0810DA50
- .4byte _0810DA60
- .4byte _0810DA54
- .4byte _0810DA58
- .4byte _0810DA58
- .4byte _0810DA5C
- .4byte _0810DA88
- .4byte _0810DA50
- .4byte _0810DA54
- .4byte _0810DA5C
-_0810DA50:
- movs r0, 0x1
- b _0810DABE
-_0810DA54:
- movs r0, 0x4
- b _0810DABE
-_0810DA58:
- movs r0, 0x2
- b _0810DABE
-_0810DA5C:
- movs r0, 0x3
- b _0810DABE
-_0810DA60:
- ldrh r0, [r4]
- cmp r0, 0x3B
- bhi _0810DA70
- movs r0, 0x31
- strb r0, [r5]
- ldrh r0, [r4]
- adds r0, 0x13
- b _0810DAB0
-_0810DA70:
- cmp r0, 0x8B
- bhi _0810DA7E
- movs r0, 0x30
- strb r0, [r5]
- ldrh r0, [r4]
- subs r0, 0x3C
- b _0810DAB0
-_0810DA7E:
- movs r0, 0x2F
- strb r0, [r5]
- ldrh r0, [r4]
- subs r0, 0x8C
- b _0810DAB0
-_0810DA88:
- ldrh r0, [r4]
- cmp r0, 0x41
- bhi _0810DA98
- movs r0, 0x2F
- strb r0, [r5]
- ldrh r1, [r4]
- movs r0, 0x41
- b _0810DAAE
-_0810DA98:
- cmp r0, 0x91
- bhi _0810DAA6
- movs r0, 0x30
- strb r0, [r5]
- ldrh r1, [r4]
- movs r0, 0x91
- b _0810DAAE
-_0810DAA6:
- movs r0, 0x31
- strb r0, [r5]
- ldrh r1, [r4]
- movs r0, 0xE0
-_0810DAAE:
- subs r0, r1
-_0810DAB0:
- strh r0, [r6]
-_0810DAB2:
- movs r0, 0
- mov r1, r8
- strb r0, [r1]
- movs r0, 0x14
- strh r0, [r7]
- movs r0, 0
-_0810DABE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end GetSSTidalLocation
-
- thumb_func_start GetLinkPartnerNames
-GetLinkPartnerNames: @ 810DAC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- bl sub_8008218
- lsls r0, 24
- lsrs r7, r0, 24
- bl sub_800820C
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810DB12
- ldr r0, _0810DB20 @ =gUnknown_083D1464
- mov r8, r0
-_0810DAEA:
- cmp r7, r4
- beq _0810DB08
- lsls r0, r6, 2
- add r0, r8
- ldr r0, [r0]
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- ldr r2, _0810DB24 @ =gLinkPlayers + 0x8
- adds r1, r2
- bl StringCopy
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0810DB08:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810DAEA
-_0810DB12:
- adds r0, r5, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810DB20: .4byte gUnknown_083D1464
-_0810DB24: .4byte gLinkPlayers + 0x8
- thumb_func_end GetLinkPartnerNames
-
- thumb_func_start SpawnBerryBlenderLinkPlayerSprites
-SpawnBerryBlenderLinkPlayerSprites: @ 810DB28
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- movs r7, 0
- movs r0, 0
- mov r9, r0
- mov r8, r0
- ldr r1, _0810DB74 @ =gUnknown_083F8358
- add r0, sp, 0x8
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0xC
- ldr r1, _0810DB78 @ =gUnknown_083F835C
- adds r0, r4, 0
- movs r2, 0x8
- bl memcpy
- bl sub_8008218
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x2
- beq _0810DB94
- cmp r0, 0x2
- bgt _0810DB7C
- cmp r0, 0x1
- beq _0810DBC0
- b _0810DBD2
- .align 2, 0
-_0810DB74: .4byte gUnknown_083F8358
-_0810DB78: .4byte gUnknown_083F835C
-_0810DB7C:
- cmp r1, 0x3
- beq _0810DB86
- cmp r1, 0x4
- beq _0810DBA8
- b _0810DBD2
-_0810DB86:
- movs r7, 0x2
- ldr r1, _0810DB90 @ =gSaveBlock1
- ldrh r0, [r1]
- subs r0, 0x1
- b _0810DBAE
- .align 2, 0
-_0810DB90: .4byte gSaveBlock1
-_0810DB94:
- movs r7, 0x1
- ldr r0, _0810DBA4 @ =gSaveBlock1
- ldrh r1, [r0]
- mov r9, r1
- ldrh r0, [r0, 0x2]
- subs r0, 0x1
- b _0810DBCC
- .align 2, 0
-_0810DBA4: .4byte gSaveBlock1
-_0810DBA8:
- ldr r1, _0810DBBC @ =gSaveBlock1
- ldrh r0, [r1]
- adds r0, 0x1
-_0810DBAE:
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- ldrh r1, [r1, 0x2]
- mov r8, r1
- b _0810DBD2
- .align 2, 0
-_0810DBBC: .4byte gSaveBlock1
-_0810DBC0:
- movs r7, 0x3
- ldr r0, _0810DBD8 @ =gSaveBlock1
- ldrh r4, [r0]
- mov r9, r4
- ldrh r0, [r0, 0x2]
- adds r0, 0x1
-_0810DBCC:
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
-_0810DBD2:
- movs r6, 0
- b _0810DC5C
- .align 2, 0
-_0810DBD8: .4byte gSaveBlock1
-_0810DBDC:
- cmp r10, r6
- beq _0810DC56
- ldr r1, _0810DC74 @ =gLinkPlayers
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x13]
- movs r0, 0
- bl GetRivalAvatarGraphicsIdByStateIdAndGender
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- adds r1, r7
- adds r1, 0x8
- ldrb r1, [r1]
- movs r2, 0xF0
- subs r2, r6
- lsls r2, 24
- lsrs r2, 24
- lsls r5, r7, 1
- mov r3, sp
- adds r3, r5
- adds r3, 0xC
- ldrb r3, [r3]
- lsls r3, 24
- asrs r3, 24
- mov r12, r3
- mov r4, r9
- lsls r3, r4, 16
- asrs r3, 16
- add r3, r12
- adds r3, 0x7
- lsls r3, 16
- asrs r3, 16
- mov r4, sp
- adds r4, 0xD
- adds r4, r5
- ldrb r4, [r4]
- lsls r4, 24
- asrs r4, 24
- mov r12, r4
- mov r5, r8
- lsls r4, r5, 16
- asrs r4, 16
- add r4, r12
- adds r4, 0x7
- lsls r4, 16
- asrs r4, 16
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- bl SpawnSpecialFieldObjectParametrized
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x4
- bne _0810DC56
- movs r7, 0
-_0810DC56:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0810DC5C:
- ldr r0, _0810DC78 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r6, r0
- bcc _0810DBDC
- 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
-_0810DC74: .4byte gLinkPlayers
-_0810DC78: .4byte gSpecialVar_0x8004
- thumb_func_end SpawnBerryBlenderLinkPlayerSprites
-
- thumb_func_start MauvilleGymSpecial1
-MauvilleGymSpecial1: @ 810DC7C
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0810DC9C @ =gUnknown_083F8364
-_0810DC82:
- ldr r0, _0810DCA0 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bne _0810DCA8
- lsls r1, r4, 2
- adds r1, r5
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- ldr r2, _0810DCA4 @ =0x00000206
- bl MapGridSetMetatileIdAt
- b _0810DCB6
- .align 2, 0
-_0810DC9C: .4byte gUnknown_083F8364
-_0810DCA0: .4byte gSpecialVar_0x8004
-_0810DCA4: .4byte 0x00000206
-_0810DCA8:
- lsls r1, r4, 2
- adds r1, r5
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- ldr r2, _0810DCC8 @ =0x00000205
- bl MapGridSetMetatileIdAt
-_0810DCB6:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _0810DC82
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DCC8: .4byte 0x00000205
- thumb_func_end MauvilleGymSpecial1
-
- thumb_func_start MauvilleGymSpecial2
-MauvilleGymSpecial2: @ 810DCCC
- push {r4-r6,lr}
- movs r5, 0xC
-_0810DCD0:
- movs r4, 0x7
- adds r6, r5, 0x1
-_0810DCD4:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileIdAt
- ldr r1, _0810DCF0 @ =0xfffffde6
- adds r0, r1
- cmp r0, 0x37
- bls _0810DCE6
- b _0810DEC0
-_0810DCE6:
- lsls r0, 2
- ldr r1, _0810DCF4 @ =_0810DCF8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810DCF0: .4byte 0xfffffde6
-_0810DCF4: .4byte _0810DCF8
- .align 2, 0
-_0810DCF8:
- .4byte _0810DE7E
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DDD8
- .4byte _0810DDDE
- .4byte _0810DE18
- .4byte _0810DE20
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DDE8
- .4byte _0810DDEE
- .4byte _0810DE28
- .4byte _0810DE30
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DDF8
- .4byte _0810DDFE
- .4byte _0810DE38
- .4byte _0810DE40
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DE08
- .4byte _0810DE10
- .4byte _0810DE48
- .4byte _0810DE50
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DE58
- .4byte _0810DE68
- .4byte _0810DE78
- .4byte _0810DEA0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DE60
- .4byte _0810DE70
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEC0
- .4byte _0810DEB6
- .4byte _0810DEA8
-_0810DDD8:
- movs r2, 0x8C
- lsls r2, 2
- b _0810DEAC
-_0810DDDE:
- ldr r2, _0810DDE4 @ =0x00000231
- b _0810DEAC
- .align 2, 0
-_0810DDE4: .4byte 0x00000231
-_0810DDE8:
- movs r2, 0x8E
- lsls r2, 2
- b _0810DEAC
-_0810DDEE:
- ldr r2, _0810DDF4 @ =0x00000239
- b _0810DEAC
- .align 2, 0
-_0810DDF4: .4byte 0x00000239
-_0810DDF8:
- movs r2, 0x88
- lsls r2, 2
- b _0810DEAC
-_0810DDFE:
- ldr r2, _0810DE04 @ =0x00000221
- b _0810DEAC
- .align 2, 0
-_0810DE04: .4byte 0x00000221
-_0810DE08:
- ldr r2, _0810DE0C @ =0x00000e28
- b _0810DEAC
- .align 2, 0
-_0810DE0C: .4byte 0x00000e28
-_0810DE10:
- ldr r2, _0810DE14 @ =0x00000e29
- b _0810DEAC
- .align 2, 0
-_0810DE14: .4byte 0x00000e29
-_0810DE18:
- ldr r2, _0810DE1C @ =0x00000232
- b _0810DEAC
- .align 2, 0
-_0810DE1C: .4byte 0x00000232
-_0810DE20:
- ldr r2, _0810DE24 @ =0x00000233
- b _0810DEAC
- .align 2, 0
-_0810DE24: .4byte 0x00000233
-_0810DE28:
- ldr r2, _0810DE2C @ =0x0000023a
- b _0810DEAC
- .align 2, 0
-_0810DE2C: .4byte 0x0000023a
-_0810DE30:
- ldr r2, _0810DE34 @ =0x0000023b
- b _0810DEAC
- .align 2, 0
-_0810DE34: .4byte 0x0000023b
-_0810DE38:
- ldr r2, _0810DE3C @ =0x00000222
- b _0810DEAC
- .align 2, 0
-_0810DE3C: .4byte 0x00000222
-_0810DE40:
- ldr r2, _0810DE44 @ =0x00000223
- b _0810DEAC
- .align 2, 0
-_0810DE44: .4byte 0x00000223
-_0810DE48:
- ldr r2, _0810DE4C @ =0x00000e2a
- b _0810DEAC
- .align 2, 0
-_0810DE4C: .4byte 0x00000e2a
-_0810DE50:
- ldr r2, _0810DE54 @ =0x00000e2b
- b _0810DEAC
- .align 2, 0
-_0810DE54: .4byte 0x00000e2b
-_0810DE58:
- ldr r2, _0810DE5C @ =0x00000e42
- b _0810DEAC
- .align 2, 0
-_0810DE5C: .4byte 0x00000e42
-_0810DE60:
- ldr r2, _0810DE64 @ =0x0000021a
- b _0810DEAC
- .align 2, 0
-_0810DE64: .4byte 0x0000021a
-_0810DE68:
- ldr r2, _0810DE6C @ =0x00000e43
- b _0810DEAC
- .align 2, 0
-_0810DE6C: .4byte 0x00000e43
-_0810DE70:
- ldr r2, _0810DE74 @ =0x0000021a
- b _0810DEAC
- .align 2, 0
-_0810DE74: .4byte 0x0000021a
-_0810DE78:
- movs r2, 0xE4
- lsls r2, 4
- b _0810DEAC
-_0810DE7E:
- subs r1, r5, 0x1
- adds r0, r4, 0
- bl MapGridGetMetatileIdAt
- movs r1, 0x90
- lsls r1, 2
- cmp r0, r1
- bne _0810DE98
- ldr r2, _0810DE94 @ =0x00000e48
- b _0810DEAC
- .align 2, 0
-_0810DE94: .4byte 0x00000e48
-_0810DE98:
- ldr r2, _0810DE9C @ =0x00000e49
- b _0810DEAC
- .align 2, 0
-_0810DE9C: .4byte 0x00000e49
-_0810DEA0:
- ldr r2, _0810DEA4 @ =0x00000e41
- b _0810DEAC
- .align 2, 0
-_0810DEA4: .4byte 0x00000e41
-_0810DEA8:
- movs r2, 0xE5
- lsls r2, 4
-_0810DEAC:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridSetMetatileIdAt
- b _0810DEC0
-_0810DEB6:
- ldr r2, _0810DED8 @ =0x00000251
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridSetMetatileIdAt
-_0810DEC0:
- adds r4, 0x1
- cmp r4, 0xF
- bgt _0810DEC8
- b _0810DCD4
-_0810DEC8:
- adds r5, r6, 0
- cmp r5, 0x17
- bgt _0810DED0
- b _0810DCD0
-_0810DED0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810DED8: .4byte 0x00000251
- thumb_func_end MauvilleGymSpecial2
-
- thumb_func_start MauvilleGymSpecial3
-MauvilleGymSpecial3: @ 810DEDC
- push {r4-r6,lr}
- ldr r4, _0810DF18 @ =gUnknown_083F8364
- movs r5, 0x2
-_0810DEE2:
- ldrb r0, [r4]
- ldrb r1, [r4, 0x1]
- ldr r2, _0810DF1C @ =0x00000206
- bl MapGridSetMetatileIdAt
- adds r4, 0x4
- subs r5, 0x1
- cmp r5, 0
- bge _0810DEE2
- movs r5, 0xC
-_0810DEF6:
- movs r4, 0x7
- adds r6, r5, 0x1
-_0810DEFA:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileIdAt
- ldr r1, _0810DF20 @ =0xfffffde0
- adds r0, r1
- cmp r0, 0x30
- bls _0810DF0C
- b _0810E056
-_0810DF0C:
- lsls r0, 2
- ldr r1, _0810DF24 @ =_0810DF28
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810DF18: .4byte gUnknown_083F8364
-_0810DF1C: .4byte 0x00000206
-_0810DF20: .4byte 0xfffffde0
-_0810DF24: .4byte _0810DF28
- .align 2, 0
-_0810DF28:
- .4byte _0810DFEC
- .4byte _0810DFF2
- .4byte _0810E00C
- .4byte _0810E014
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810DFFC
- .4byte _0810E002
- .4byte _0810E01C
- .4byte _0810E024
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E02C
- .4byte _0810E034
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E03C
- .4byte _0810E03C
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E056
- .4byte _0810E04C
-_0810DFEC:
- movs r2, 0x8C
- lsls r2, 2
- b _0810E03E
-_0810DFF2:
- ldr r2, _0810DFF8 @ =0x00000231
- b _0810E03E
- .align 2, 0
-_0810DFF8: .4byte 0x00000231
-_0810DFFC:
- movs r2, 0x8E
- lsls r2, 2
- b _0810E03E
-_0810E002:
- ldr r2, _0810E008 @ =0x00000239
- b _0810E03E
- .align 2, 0
-_0810E008: .4byte 0x00000239
-_0810E00C:
- ldr r2, _0810E010 @ =0x00000232
- b _0810E03E
- .align 2, 0
-_0810E010: .4byte 0x00000232
-_0810E014:
- ldr r2, _0810E018 @ =0x00000233
- b _0810E03E
- .align 2, 0
-_0810E018: .4byte 0x00000233
-_0810E01C:
- ldr r2, _0810E020 @ =0x0000023a
- b _0810E03E
- .align 2, 0
-_0810E020: .4byte 0x0000023a
-_0810E024:
- ldr r2, _0810E028 @ =0x0000023b
- b _0810E03E
- .align 2, 0
-_0810E028: .4byte 0x0000023b
-_0810E02C:
- ldr r2, _0810E030 @ =0x00000e42
- b _0810E03E
- .align 2, 0
-_0810E030: .4byte 0x00000e42
-_0810E034:
- ldr r2, _0810E038 @ =0x00000e43
- b _0810E03E
- .align 2, 0
-_0810E038: .4byte 0x00000e43
-_0810E03C:
- ldr r2, _0810E048 @ =0x0000021a
-_0810E03E:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridSetMetatileIdAt
- b _0810E056
- .align 2, 0
-_0810E048: .4byte 0x0000021a
-_0810E04C:
- ldr r2, _0810E06C @ =0x00000251
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridSetMetatileIdAt
-_0810E056:
- adds r4, 0x1
- cmp r4, 0xF
- bgt _0810E05E
- b _0810DEFA
-_0810E05E:
- adds r5, r6, 0
- cmp r5, 0x17
- bgt _0810E066
- b _0810DEF6
-_0810E066:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E06C: .4byte 0x00000251
- thumb_func_end MauvilleGymSpecial3
-
- thumb_func_start PetalburgGymSpecial1
-PetalburgGymSpecial1: @ 810E070
- push {lr}
- ldr r0, _0810E090 @ =gUnknown_02039258
- movs r1, 0
- strb r1, [r0]
- ldr r0, _0810E094 @ =gUnknown_02039259
- strb r1, [r0]
- movs r0, 0x2C
- bl PlaySE
- ldr r0, _0810E098 @ =Task_PetalburgGym
- movs r1, 0x8
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0810E090: .4byte gUnknown_02039258
-_0810E094: .4byte gUnknown_02039259
-_0810E098: .4byte Task_PetalburgGym
- thumb_func_end PetalburgGymSpecial1
-
- thumb_func_start Task_PetalburgGym
-Task_PetalburgGym: @ 810E09C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0810E0E4 @ =gUnknown_083F8370
- ldr r5, _0810E0E8 @ =gUnknown_02039259
- ldrb r1, [r5]
- adds r0, r1, r0
- ldr r4, _0810E0EC @ =gUnknown_02039258
- ldrb r2, [r4]
- ldrb r0, [r0]
- cmp r0, r2
- bne _0810E0F8
- ldr r0, _0810E0F0 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- ldr r2, _0810E0F4 @ =gUnknown_083F8376
- lsls r1, 1
- adds r1, r2
- ldrh r1, [r1]
- bl PetalburgGymFunc
- movs r0, 0
- strb r0, [r4]
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bne _0810E0FC
- adds r0, r6, 0
- bl DestroyTask
- bl EnableBothScriptContexts
- b _0810E0FC
- .align 2, 0
-_0810E0E4: .4byte gUnknown_083F8370
-_0810E0E8: .4byte gUnknown_02039259
-_0810E0EC: .4byte gUnknown_02039258
-_0810E0F0: .4byte gSpecialVar_0x8004
-_0810E0F4: .4byte gUnknown_083F8376
-_0810E0F8:
- adds r0, r2, 0x1
- strb r0, [r4]
-_0810E0FC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end Task_PetalburgGym
-
- thumb_func_start PetalburgGymFunc
-PetalburgGymFunc: @ 810E104
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r2, r1, 16
- movs r7, 0
- subs r0, 0x1
- cmp r0, 0x7
- bhi _0810E1CC
- lsls r0, 2
- ldr r1, _0810E128 @ =_0810E12C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810E128: .4byte _0810E12C
- .align 2, 0
-_0810E12C:
- .4byte _0810E14C
- .4byte _0810E15E
- .4byte _0810E170
- .4byte _0810E182
- .4byte _0810E190
- .4byte _0810E1A6
- .4byte _0810E1B2
- .4byte _0810E1C0
-_0810E14C:
- movs r7, 0x2
- mov r1, sp
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0x7
- strh r0, [r1, 0x2]
- add r1, sp, 0x8
- movs r0, 0x68
- b _0810E1A0
-_0810E15E:
- movs r7, 0x2
- mov r1, sp
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0x7
- strh r0, [r1, 0x2]
- add r1, sp, 0x8
- movs r0, 0x4E
- b _0810E1A0
-_0810E170:
- movs r7, 0x2
- mov r1, sp
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0x7
- strh r0, [r1, 0x2]
- add r1, sp, 0x8
- movs r0, 0x5B
- b _0810E1A0
-_0810E182:
- movs r7, 0x1
- mov r1, sp
- movs r0, 0x7
- strh r0, [r1]
- add r1, sp, 0x8
- movs r0, 0x27
- b _0810E1CA
-_0810E190:
- movs r7, 0x2
- mov r1, sp
- movs r0, 0x1
- strh r0, [r1]
- movs r0, 0x7
- strh r0, [r1, 0x2]
- add r1, sp, 0x8
- movs r0, 0x34
-_0810E1A0:
- strh r0, [r1]
- strh r0, [r1, 0x2]
- b _0810E1CC
-_0810E1A6:
- movs r7, 0x1
- mov r0, sp
- strh r7, [r0]
- add r1, sp, 0x8
- movs r0, 0x41
- b _0810E1CA
-_0810E1B2:
- movs r7, 0x1
- mov r1, sp
- movs r0, 0x7
- strh r0, [r1]
- add r1, sp, 0x8
- movs r0, 0xD
- b _0810E1CA
-_0810E1C0:
- movs r7, 0x1
- mov r0, sp
- strh r7, [r0]
- add r1, sp, 0x8
- movs r0, 0x1A
-_0810E1CA:
- strh r0, [r1]
-_0810E1CC:
- movs r6, 0
- cmp r6, r7
- bcs _0810E21E
- movs r1, 0xC0
- lsls r1, 4
- adds r0, r1, 0
- adds r1, r2, 0
- orrs r1, r0
- lsls r1, 16
- mov r9, r1
- adds r1, r2, 0
- adds r1, 0x8
- orrs r1, r0
- lsls r1, 16
- mov r8, r1
-_0810E1EA:
- lsls r1, r6, 1
- mov r3, sp
- adds r5, r3, r1
- ldrh r0, [r5]
- adds r0, 0x7
- add r4, sp, 0x8
- adds r4, r1
- ldrh r1, [r4]
- adds r1, 0x7
- mov r3, r9
- lsrs r2, r3, 16
- bl MapGridSetMetatileIdAt
- ldrh r0, [r5]
- adds r0, 0x7
- ldrh r1, [r4]
- adds r1, 0x8
- mov r3, r8
- lsrs r2, r3, 16
- bl MapGridSetMetatileIdAt
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r7
- bcc _0810E1EA
-_0810E21E:
- bl DrawWholeMapView
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PetalburgGymFunc
-
- thumb_func_start PetalburgGymSpecial2
-PetalburgGymSpecial2: @ 810E230
- push {lr}
- ldr r0, _0810E244 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- ldr r1, _0810E248 @ =gUnknown_083F8376
- ldrh r1, [r1, 0x8]
- bl PetalburgGymFunc
- pop {r0}
- bx r0
- .align 2, 0
-_0810E244: .4byte gSpecialVar_0x8004
-_0810E248: .4byte gUnknown_083F8376
- thumb_func_end PetalburgGymSpecial2
-
- thumb_func_start ShowFieldMessageStringVar4
-ShowFieldMessageStringVar4: @ 810E24C
- push {lr}
- ldr r0, _0810E258 @ =gStringVar4
- bl ShowFieldMessage
- pop {r0}
- bx r0
- .align 2, 0
-_0810E258: .4byte gStringVar4
- thumb_func_end ShowFieldMessageStringVar4
-
- thumb_func_start StorePlayerCoordsInVars
-StorePlayerCoordsInVars: @ 810E25C
- ldr r1, _0810E26C @ =gSpecialVar_0x8004
- ldr r2, _0810E270 @ =gSaveBlock1
- ldrh r0, [r2]
- strh r0, [r1]
- ldr r1, _0810E274 @ =gSpecialVar_0x8005
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0810E26C: .4byte gSpecialVar_0x8004
-_0810E270: .4byte gSaveBlock1
-_0810E274: .4byte gSpecialVar_0x8005
- thumb_func_end StorePlayerCoordsInVars
-
- thumb_func_start GetPlayerTrainerIdOnesDigit
-GetPlayerTrainerIdOnesDigit: @ 810E278
- push {lr}
- ldr r0, _0810E294 @ =gSaveBlock2
- ldrb r1, [r0, 0xB]
- lsls r1, 8
- ldrb r0, [r0, 0xA]
- orrs r0, r1
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0810E294: .4byte gSaveBlock2
- thumb_func_end GetPlayerTrainerIdOnesDigit
-
- thumb_func_start GetPlayerBigGuyGirlString
-GetPlayerBigGuyGirlString: @ 810E298
- push {lr}
- ldr r0, _0810E2AC @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _0810E2B8
- ldr r0, _0810E2B0 @ =gStringVar1
- ldr r1, _0810E2B4 @ =gOtherText_BigGuy
- bl StringCopy
- b _0810E2C0
- .align 2, 0
-_0810E2AC: .4byte gSaveBlock2
-_0810E2B0: .4byte gStringVar1
-_0810E2B4: .4byte gOtherText_BigGuy
-_0810E2B8:
- ldr r0, _0810E2C4 @ =gStringVar1
- ldr r1, _0810E2C8 @ =gOtherText_BigGirl
- bl StringCopy
-_0810E2C0:
- pop {r0}
- bx r0
- .align 2, 0
-_0810E2C4: .4byte gStringVar1
-_0810E2C8: .4byte gOtherText_BigGirl
- thumb_func_end GetPlayerBigGuyGirlString
-
- thumb_func_start GetRivalSonDaughterString
-GetRivalSonDaughterString: @ 810E2CC
- push {lr}
- ldr r0, _0810E2E0 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _0810E2EC
- ldr r0, _0810E2E4 @ =gStringVar1
- ldr r1, _0810E2E8 @ =gOtherText_Daughter
- bl StringCopy
- b _0810E2F4
- .align 2, 0
-_0810E2E0: .4byte gSaveBlock2
-_0810E2E4: .4byte gStringVar1
-_0810E2E8: .4byte gOtherText_Daughter
-_0810E2EC:
- ldr r0, _0810E2F8 @ =gStringVar1
- ldr r1, _0810E2FC @ =gOtherText_Son
- bl StringCopy
-_0810E2F4:
- pop {r0}
- bx r0
- .align 2, 0
-_0810E2F8: .4byte gStringVar1
-_0810E2FC: .4byte gOtherText_Son
- thumb_func_end GetRivalSonDaughterString
-
- thumb_func_start sub_810E300
-sub_810E300: @ 810E300
- ldr r0, _0810E308 @ =gBattleOutcome
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0810E308: .4byte gBattleOutcome
- thumb_func_end sub_810E300
-
- thumb_func_start CableCarWarp
-CableCarWarp: @ 810E30C
- push {lr}
- sub sp, 0x4
- ldr r0, _0810E32C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _0810E330
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x4
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r3, 0x6
- bl warp1_set
- b _0810E342
- .align 2, 0
-_0810E32C: .4byte gSpecialVar_0x8004
-_0810E330:
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x4
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0x1
- movs r3, 0x6
- bl warp1_set
-_0810E342:
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end CableCarWarp
-
- thumb_func_start SetFlagInVar
-SetFlagInVar: @ 810E348
- push {lr}
- ldr r0, _0810E358 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- bl FlagSet
- pop {r0}
- bx r0
- .align 2, 0
-_0810E358: .4byte gSpecialVar_0x8004
- thumb_func_end SetFlagInVar
-
- thumb_func_start GetWeekCount
-GetWeekCount: @ 810E35C
- push {lr}
- ldr r0, _0810E37C @ =gLocalTime
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x7
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0810E380 @ =0x0000270f
- cmp r0, r1
- bls _0810E376
- adds r0, r1, 0
-_0810E376:
- pop {r1}
- bx r1
- .align 2, 0
-_0810E37C: .4byte gLocalTime
-_0810E380: .4byte 0x0000270f
- thumb_func_end GetWeekCount
-
- thumb_func_start GetLeadMonFriendshipScore
-GetLeadMonFriendshipScore: @ 810E384
- push {r4,lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, _0810E3A8 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- cmp r0, 0xFF
- bne _0810E3AC
- movs r0, 0x6
- b _0810E3FE
- .align 2, 0
-_0810E3A8: .4byte gPlayerParty
-_0810E3AC:
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- cmp r0, 0xC7
- bls _0810E3BC
- movs r0, 0x5
- b _0810E3FE
-_0810E3BC:
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- cmp r0, 0x95
- bls _0810E3CC
- movs r0, 0x4
- b _0810E3FE
-_0810E3CC:
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- cmp r0, 0x63
- bls _0810E3DC
- movs r0, 0x3
- b _0810E3FE
-_0810E3DC:
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- cmp r0, 0x31
- bls _0810E3EC
- movs r0, 0x2
- b _0810E3FE
-_0810E3EC:
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- cmp r0, 0
- bne _0810E3FC
- movs r0, 0
- b _0810E3FE
-_0810E3FC:
- movs r0, 0x1
-_0810E3FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetLeadMonFriendshipScore
-
- thumb_func_start CB2_FieldShowRegionMap
-CB2_FieldShowRegionMap: @ 810E404
- push {lr}
- ldr r0, _0810E410 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl FieldInitRegionMap
- pop {r0}
- bx r0
- .align 2, 0
-_0810E410: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end CB2_FieldShowRegionMap
-
- thumb_func_start FieldShowRegionMap
-FieldShowRegionMap: @ 810E414
- push {lr}
- ldr r0, _0810E420 @ =CB2_FieldShowRegionMap
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0810E420: .4byte CB2_FieldShowRegionMap
- thumb_func_end FieldShowRegionMap
-
- thumb_func_start DoPCTurnOnEffect
-DoPCTurnOnEffect: @ 810E424
- push {r4,lr}
- ldr r4, _0810E460 @ =Task_PCTurnOnEffect
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810E458
- adds r0, r4, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810E464 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x8]
- strh r0, [r1, 0xA]
- strh r2, [r1, 0xC]
- strh r2, [r1, 0xE]
- strh r2, [r1, 0x10]
-_0810E458:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E460: .4byte Task_PCTurnOnEffect
-_0810E464: .4byte gTasks
- thumb_func_end DoPCTurnOnEffect
-
- thumb_func_start Task_PCTurnOnEffect
-Task_PCTurnOnEffect: @ 810E468
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0810E48C @ =gTasks
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0810E486
- adds r0, r1, 0
- bl PCTurnOffEffect_0
-_0810E486:
- pop {r0}
- bx r0
- .align 2, 0
-_0810E48C: .4byte gTasks
- thumb_func_end Task_PCTurnOnEffect
-
- thumb_func_start PCTurnOffEffect_0
-PCTurnOffEffect_0: @ 810E490
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r6, 0
- movs r5, 0
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bne _0810E4FC
- strh r5, [r4, 0xE]
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x3
- beq _0810E4C4
- cmp r0, 0x3
- bgt _0810E4BA
- cmp r0, 0x2
- beq _0810E4C0
- b _0810E4CC
-_0810E4BA:
- cmp r1, 0x4
- beq _0810E4C8
- b _0810E4CC
-_0810E4C0:
- movs r6, 0
- b _0810E4CA
-_0810E4C4:
- movs r6, 0xFF
- b _0810E4CA
-_0810E4C8:
- movs r6, 0x1
-_0810E4CA:
- movs r5, 0xFF
-_0810E4CC:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- lsls r1, r6, 24
- asrs r1, 24
- lsls r2, r5, 24
- asrs r2, 24
- bl PCTurnOffEffect_1
- bl DrawWholeMapView
- ldrh r0, [r4, 0x10]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0810E4FC
- ldrb r0, [r4, 0xA]
- bl DestroyTask
-_0810E4FC:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end PCTurnOffEffect_0
-
- thumb_func_start PCTurnOffEffect_1
-PCTurnOffEffect_1: @ 810E508
- push {r4,r5,lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r4, r2, 24
- movs r3, 0
- lsls r0, 16
- cmp r0, 0
- beq _0810E544
- ldr r0, _0810E528 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _0810E52C
- movs r3, 0x4
- b _0810E566
- .align 2, 0
-_0810E528: .4byte gSpecialVar_0x8004
-_0810E52C:
- cmp r0, 0x1
- bne _0810E538
- ldr r3, _0810E534 @ =0x0000025a
- b _0810E566
- .align 2, 0
-_0810E534: .4byte 0x0000025a
-_0810E538:
- cmp r0, 0x2
- bne _0810E566
- ldr r3, _0810E540 @ =0x00000259
- b _0810E566
- .align 2, 0
-_0810E540: .4byte 0x00000259
-_0810E544:
- ldr r0, _0810E550 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _0810E554
- movs r3, 0x5
- b _0810E566
- .align 2, 0
-_0810E550: .4byte gSpecialVar_0x8004
-_0810E554:
- cmp r0, 0x1
- bne _0810E560
- ldr r3, _0810E55C @ =0x0000027f
- b _0810E566
- .align 2, 0
-_0810E55C: .4byte 0x0000027f
-_0810E560:
- cmp r0, 0x2
- bne _0810E566
- ldr r3, _0810E594 @ =0x0000027e
-_0810E566:
- ldr r2, _0810E598 @ =gSaveBlock1
- movs r5, 0
- ldrsh r0, [r2, r5]
- lsls r1, 24
- asrs r1, 24
- adds r0, r1
- adds r0, 0x7
- movs r5, 0x2
- ldrsh r1, [r2, r5]
- lsls r2, r4, 24
- asrs r2, 24
- adds r1, r2
- adds r1, 0x7
- movs r4, 0xC0
- lsls r4, 4
- adds r2, r4, 0
- orrs r3, r2
- adds r2, r3, 0
- bl MapGridSetMetatileIdAt
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E594: .4byte 0x0000027e
-_0810E598: .4byte gSaveBlock1
- thumb_func_end PCTurnOffEffect_1
-
- thumb_func_start DoPCTurnOffEffect
-DoPCTurnOffEffect: @ 810E59C
- push {lr}
- bl PCTurnOffEffect
- pop {r0}
- bx r0
- thumb_func_end DoPCTurnOffEffect
-
- thumb_func_start PCTurnOffEffect
-PCTurnOffEffect: @ 810E5A8
- push {r4-r6,lr}
- movs r6, 0
- movs r5, 0
- movs r4, 0
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- cmp r0, 0x3
- beq _0810E5D2
- cmp r0, 0x3
- bgt _0810E5C8
- cmp r0, 0x2
- beq _0810E5CE
- b _0810E5DA
-_0810E5C8:
- cmp r1, 0x4
- beq _0810E5D6
- b _0810E5DA
-_0810E5CE:
- movs r6, 0
- b _0810E5D8
-_0810E5D2:
- movs r6, 0xFF
- b _0810E5D8
-_0810E5D6:
- movs r6, 0x1
-_0810E5D8:
- movs r5, 0xFF
-_0810E5DA:
- ldr r0, _0810E5E8 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _0810E5EC
- movs r4, 0x4
- b _0810E5FE
- .align 2, 0
-_0810E5E8: .4byte gSpecialVar_0x8004
-_0810E5EC:
- cmp r0, 0x1
- bne _0810E5F8
- ldr r4, _0810E5F4 @ =0x0000025a
- b _0810E5FE
- .align 2, 0
-_0810E5F4: .4byte 0x0000025a
-_0810E5F8:
- cmp r0, 0x2
- bne _0810E5FE
- ldr r4, _0810E630 @ =0x00000259
-_0810E5FE:
- ldr r2, _0810E634 @ =gSaveBlock1
- movs r1, 0
- ldrsh r0, [r2, r1]
- lsls r1, r6, 24
- asrs r1, 24
- adds r0, r1
- adds r0, 0x7
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- lsls r2, r5, 24
- asrs r2, 24
- adds r1, r2
- adds r1, 0x7
- movs r3, 0xC0
- lsls r3, 4
- adds r2, r3, 0
- orrs r4, r2
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E630: .4byte 0x00000259
-_0810E634: .4byte gSaveBlock1
- thumb_func_end PCTurnOffEffect
-
- thumb_func_start DoLotteryCornerComputerEffect
-DoLotteryCornerComputerEffect: @ 810E638
- push {r4,lr}
- ldr r4, _0810E674 @ =Task_LotteryCornerComputerEffect
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810E66C
- adds r0, r4, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810E678 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x8]
- strh r0, [r1, 0xA]
- strh r2, [r1, 0xC]
- strh r2, [r1, 0xE]
- strh r2, [r1, 0x10]
-_0810E66C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E674: .4byte Task_LotteryCornerComputerEffect
-_0810E678: .4byte gTasks
- thumb_func_end DoLotteryCornerComputerEffect
-
- thumb_func_start Task_LotteryCornerComputerEffect
-Task_LotteryCornerComputerEffect: @ 810E67C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0810E6A0 @ =gTasks
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0810E69A
- adds r0, r1, 0
- bl LotteryCornerComputerEffect
-_0810E69A:
- pop {r0}
- bx r0
- .align 2, 0
-_0810E6A0: .4byte gTasks
- thumb_func_end Task_LotteryCornerComputerEffect
-
- thumb_func_start LotteryCornerComputerEffect
-LotteryCornerComputerEffect: @ 810E6A4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bne _0810E712
- movs r0, 0
- strh r0, [r4, 0xE]
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0810E6DC
- ldr r2, _0810E6D4 @ =0x00000e9d
- movs r0, 0x12
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, _0810E6D8 @ =0x00000ea5
- movs r0, 0x12
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- b _0810E6F2
- .align 2, 0
-_0810E6D4: .4byte 0x00000e9d
-_0810E6D8: .4byte 0x00000ea5
-_0810E6DC:
- ldr r2, _0810E720 @ =0x00000e58
- movs r0, 0x12
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- movs r2, 0xE6
- lsls r2, 4
- movs r0, 0x12
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
-_0810E6F2:
- bl DrawWholeMapView
- ldrh r0, [r4, 0x10]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r4, 0x10]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0810E712
- ldrb r0, [r4, 0xA]
- bl DestroyTask
-_0810E712:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E720: .4byte 0x00000e58
- thumb_func_end LotteryCornerComputerEffect
-
- thumb_func_start EndLotteryCornerComputerEffect
-EndLotteryCornerComputerEffect: @ 810E724
- push {lr}
- ldr r2, _0810E744 @ =0x00000e9d
- movs r0, 0x12
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, _0810E748 @ =0x00000ea5
- movs r0, 0x12
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- bl DrawWholeMapView
- pop {r0}
- bx r0
- .align 2, 0
-_0810E744: .4byte 0x00000e9d
-_0810E748: .4byte 0x00000ea5
- thumb_func_end EndLotteryCornerComputerEffect
-
- thumb_func_start SetDepartmentStoreFloorVar
-SetDepartmentStoreFloorVar: @ 810E74C
- push {lr}
- ldr r0, _0810E768 @ =gSaveBlock1
- ldrb r0, [r0, 0x15]
- subs r0, 0x11
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x5
- bhi _0810E79C
- lsls r0, 2
- ldr r1, _0810E76C @ =_0810E770
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810E768: .4byte gSaveBlock1
-_0810E76C: .4byte _0810E770
- .align 2, 0
-_0810E770:
- .4byte _0810E79C
- .4byte _0810E788
- .4byte _0810E78C
- .4byte _0810E790
- .4byte _0810E794
- .4byte _0810E798
-_0810E788:
- movs r1, 0x1
- b _0810E79E
-_0810E78C:
- movs r1, 0x2
- b _0810E79E
-_0810E790:
- movs r1, 0x3
- b _0810E79E
-_0810E794:
- movs r1, 0x4
- b _0810E79E
-_0810E798:
- movs r1, 0xF
- b _0810E79E
-_0810E79C:
- movs r1, 0
-_0810E79E:
- ldr r0, _0810E7A8 @ =0x00004043
- bl VarSet
- pop {r0}
- bx r0
- .align 2, 0
-_0810E7A8: .4byte 0x00004043
- thumb_func_end SetDepartmentStoreFloorVar
-
- thumb_func_start ScriptAddElevatorMenuItem
-ScriptAddElevatorMenuItem: @ 810E7AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r12, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- ldr r0, _0810E81C @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- adds r2, r0, 0
- ldr r3, _0810E820 @ =gUnknown_03000760
- cmp r1, 0
- bne _0810E7E8
- movs r1, 0
- adds r5, r3, 0
- movs r4, 0x10
-_0810E7D8:
- lsls r0, r1, 2
- adds r0, r5
- strb r4, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x13
- bls _0810E7D8
-_0810E7E8:
- ldrh r0, [r2]
- lsls r0, 2
- adds r0, r3
- strb r6, [r0]
- ldrh r0, [r2]
- lsls r0, 2
- adds r0, r3
- strb r7, [r0, 0x1]
- ldrh r0, [r2]
- lsls r0, 2
- adds r0, r3
- mov r1, r12
- strb r1, [r0, 0x2]
- ldrh r0, [r2]
- lsls r0, 2
- adds r0, r3
- mov r1, r8
- strb r1, [r0, 0x3]
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E81C: .4byte gSpecialVar_0x8004
-_0810E820: .4byte gUnknown_03000760
- thumb_func_end ScriptAddElevatorMenuItem
-
- thumb_func_start ScriptShowElevatorMenu
-ScriptShowElevatorMenu: @ 810E824
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _0810E868 @ =gUnknown_0203925A
- strb r4, [r5]
- ldr r0, _0810E86C @ =gUnknown_0203925B
- strb r4, [r0]
- movs r0, 0x10
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl ScriptAddElevatorMenuItem
- ldr r2, _0810E870 @ =gUnknown_03000760
- ldrb r0, [r2]
- cmp r0, 0x10
- beq _0810E85C
- adds r1, r5, 0
-_0810E846:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x10
- bne _0810E846
-_0810E85C:
- bl sub_810E874
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E868: .4byte gUnknown_0203925A
-_0810E86C: .4byte gUnknown_0203925B
-_0810E870: .4byte gUnknown_03000760
- thumb_func_end ScriptShowElevatorMenu
-
- thumb_func_start sub_810E874
-sub_810E874: @ 810E874
- push {r4-r6,lr}
- sub sp, 0x8
- bl ScriptContext2_Enable
- ldr r4, _0810E8B8 @ =gUnknown_0203925A
- ldrb r0, [r4]
- cmp r0, 0x5
- bls _0810E8C0
- movs r0, 0
- movs r1, 0
- movs r2, 0x8
- movs r3, 0xB
- bl MenuDrawTextWindow
- movs r4, 0
- str r4, [sp]
- movs r0, 0x7
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x5
- bl InitMenu
- ldr r0, _0810E8BC @ =gUnknown_0203925C
- strb r4, [r0]
- bl sub_80F944C
- bl LoadScrollIndicatorPalette
- bl sub_810ECD4
- b _0810E8E8
- .align 2, 0
-_0810E8B8: .4byte gUnknown_0203925A
-_0810E8BC: .4byte gUnknown_0203925C
-_0810E8C0:
- ldrb r3, [r4]
- lsls r3, 1
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- movs r1, 0
- movs r2, 0x8
- bl MenuDrawTextWindow
- ldrb r3, [r4]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x7
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- bl InitMenu
-_0810E8E8:
- movs r4, 0
- ldr r1, _0810E938 @ =gUnknown_03000760
- ldrb r0, [r1]
- cmp r0, 0x10
- beq _0810E924
- ldr r6, _0810E93C @ =gUnknown_083F8380
- adds r5, r1, 0
-_0810E8F6:
- lsls r0, r4, 2
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- lsls r2, r4, 1
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bhi _0810E924
- lsls r0, r4, 2
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x10
- bne _0810E8F6
-_0810E924:
- bl sub_810E944
- ldr r0, _0810E940 @ =sub_810E984
- movs r1, 0x8
- bl CreateTask
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810E938: .4byte gUnknown_03000760
-_0810E93C: .4byte gUnknown_083F8380
-_0810E940: .4byte sub_810E984
- thumb_func_end sub_810E874
-
- thumb_func_start sub_810E944
-sub_810E944: @ 810E944
- push {lr}
- movs r0, 0x14
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x5
- bl MenuDrawTextWindow
- ldr r0, _0810E978 @ =gOtherText_NowOn
- movs r1, 0x15
- movs r2, 0x1
- movs r3, 0x40
- bl sub_8072BD8
- ldr r1, _0810E97C @ =gUnknown_083F8380
- ldr r0, _0810E980 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x15
- movs r2, 0x3
- movs r3, 0x40
- bl sub_8072BD8
- pop {r0}
- bx r0
- .align 2, 0
-_0810E978: .4byte gOtherText_NowOn
-_0810E97C: .4byte gUnknown_083F8380
-_0810E980: .4byte gSpecialVar_0x8005
- thumb_func_end sub_810E944
-
- thumb_func_start sub_810E984
-sub_810E984: @ 810E984
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0810EA44 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x40
- bne _0810E9B8
- ldr r1, _0810EA48 @ =gUnknown_0203925B
- ldrb r0, [r1]
- cmp r0, 0
- beq _0810E9B8
- subs r0, 0x1
- strb r0, [r1]
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrap
- adds r0, r4, 0
- movs r1, 0x40
- bl sub_810EAC8
-_0810E9B8:
- ldr r0, _0810EA44 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x80
- bne _0810E9E8
- ldr r2, _0810EA48 @ =gUnknown_0203925B
- ldrb r1, [r2]
- ldr r0, _0810EA4C @ =gUnknown_0203925A
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- beq _0810E9E8
- adds r0, r1, 0x1
- strb r0, [r2]
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- bl MoveMenuCursorNoWrap
- adds r0, r4, 0
- movs r1, 0x80
- bl sub_810EAC8
-_0810E9E8:
- ldr r0, _0810EA44 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r2
- cmp r1, 0
- beq _0810EA94
- ldr r1, _0810EA50 @ =gUnknown_03000760
- ldr r4, _0810EA48 @ =gUnknown_0203925B
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- movs r1, 0x1
- ldrsb r1, [r0, r1]
- movs r2, 0x2
- ldrsb r2, [r0, r2]
- movs r3, 0x1
- negs r3, r3
- movs r0, 0x2
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- bl saved_warp2_set_2
- ldr r1, _0810EA54 @ =gSpecialVar_0x8005
- ldrh r0, [r1]
- ldrb r2, [r4]
- cmp r0, r2
- bne _0810EA5C
- ldr r1, _0810EA58 @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- bl sub_810EC9C
- b _0810EABC
- .align 2, 0
-_0810EA44: .4byte gMain
-_0810EA48: .4byte gUnknown_0203925B
-_0810EA4C: .4byte gUnknown_0203925A
-_0810EA50: .4byte gUnknown_03000760
-_0810EA54: .4byte gSpecialVar_0x8005
-_0810EA58: .4byte gScriptResult
-_0810EA5C:
- ldr r0, _0810EA88 @ =gScriptResult
- strh r5, [r0]
- ldrb r0, [r4]
- strh r0, [r1]
- bl sub_810EBEC
- ldr r0, _0810EA8C @ =gScriptLastTalked
- ldrb r0, [r0]
- ldr r2, _0810EA90 @ =gSaveBlock1
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- movs r3, 0x1
- bl FieldObjectTurnByLocalIdAndMap
- bl sub_810EEDC
- bl MenuZeroFillScreen
- adds r0, r6, 0
- bl DestroyTask
- b _0810EABC
- .align 2, 0
-_0810EA88: .4byte gScriptResult
-_0810EA8C: .4byte gScriptLastTalked
-_0810EA90: .4byte gSaveBlock1
-_0810EA94:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0810EABC
- ldr r0, _0810EAC4 @ =gScriptResult
- strh r1, [r0]
- movs r0, 0x5
- bl PlaySE
- bl sub_810EEDC
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- bl sub_810EC9C
-_0810EABC:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EAC4: .4byte gScriptResult
- thumb_func_end sub_810E984
-
- thumb_func_start sub_810EAC8
-sub_810EAC8: @ 810EAC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r2, 0
- lsls r1, 24
- lsrs r1, 24
- adds r3, r1, 0
- movs r7, 0
- movs r4, 0
- ldr r0, _0810EAEC @ =gUnknown_0203925A
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _0810EAF0
- movs r0, 0
- b _0810EB78
- .align 2, 0
-_0810EAEC: .4byte gUnknown_0203925A
-_0810EAF0:
- cmp r1, 0x40
- bne _0810EB04
- cmp r2, 0
- bne _0810EB18
- ldr r0, _0810EB00 @ =gUnknown_0203925B
- ldrb r4, [r0]
- movs r7, 0x1
- b _0810EB1C
- .align 2, 0
-_0810EB00: .4byte gUnknown_0203925B
-_0810EB04:
- cmp r3, 0x80
- bne _0810EB18
- cmp r5, 0x4
- bne _0810EB18
- ldr r0, _0810EB84 @ =gUnknown_0203925B
- ldrb r0, [r0]
- subs r0, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r7, 0x1
-_0810EB18:
- cmp r7, 0
- beq _0810EB76
-_0810EB1C:
- adds r0, r4, 0
- movs r1, 0x5
- bl sub_810EB90
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x7
- movs r3, 0xA
- bl MenuFillWindowRectWithBlankTile
- movs r5, 0
- ldr r2, _0810EB88 @ =gUnknown_03000760
- lsls r1, r4, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x10
- beq _0810EB76
- ldr r0, _0810EB8C @ =gUnknown_083F8380
- mov r8, r0
- adds r6, r2, 0
-_0810EB44:
- adds r0, r1, r6
- ldrb r0, [r0]
- lsls r0, 2
- add r0, r8
- ldr r0, [r0]
- lsls r2, r5, 1
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bhi _0810EB76
- lsls r1, r4, 2
- adds r0, r1, r6
- ldrb r0, [r0]
- cmp r0, 0x10
- bne _0810EB44
-_0810EB76:
- adds r0, r7, 0
-_0810EB78:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810EB84: .4byte gUnknown_0203925B
-_0810EB88: .4byte gUnknown_03000760
-_0810EB8C: .4byte gUnknown_083F8380
- thumb_func_end sub_810EAC8
-
- thumb_func_start sub_810EB90
-sub_810EB90: @ 810EB90
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r4, 0
- bne _0810EBB4
- ldr r0, _0810EBB0 @ =gUnknown_0203925C
- ldrb r1, [r0]
- movs r2, 0x2
- eors r1, r2
- strb r1, [r0]
- movs r0, 0
- bl DestroyVerticalScrollIndicator
- b _0810EBB8
- .align 2, 0
-_0810EBB0: .4byte gUnknown_0203925C
-_0810EBB4:
- bl sub_810ECB0
-_0810EBB8:
- adds r1, r4, r5
- ldr r0, _0810EBC8 @ =gUnknown_0203925A
- ldrb r0, [r0]
- cmp r1, r0
- bge _0810EBCC
- bl sub_810ECD4
- b _0810EBE0
- .align 2, 0
-_0810EBC8: .4byte gUnknown_0203925A
-_0810EBCC:
- cmp r1, r0
- bne _0810EBE0
- ldr r0, _0810EBE8 @ =gUnknown_0203925C
- ldrb r1, [r0]
- movs r2, 0x1
- eors r1, r2
- strb r1, [r0]
- movs r0, 0x1
- bl DestroyVerticalScrollIndicator
-_0810EBE0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EBE8: .4byte gUnknown_0203925C
- thumb_func_end sub_810EB90
-
- thumb_func_start sub_810EBEC
-sub_810EBEC: @ 810EBEC
- push {lr}
- ldr r0, _0810EC2C @ =sub_810EC34
- movs r1, 0x9
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810EC30 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- movs r2, 0x1
- strh r2, [r1, 0x8]
- strh r0, [r1, 0xA]
- strh r0, [r1, 0xC]
- strh r0, [r1, 0xE]
- strh r2, [r1, 0x10]
- movs r0, 0x3
- strh r0, [r1, 0x12]
- movs r0, 0
- bl SetCameraPanningCallback
- bl sub_810ECFC
- movs r0, 0x59
- bl PlaySE
- pop {r0}
- bx r0
- .align 2, 0
-_0810EC2C: .4byte sub_810EC34
-_0810EC30: .4byte gTasks
- thumb_func_end sub_810EBEC
-
- thumb_func_start sub_810EC34
-sub_810EC34: @ 810EC34
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810EC98 @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _0810EC92
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0810EC92
- ldrh r0, [r4, 0x10]
- negs r0, r0
- strh r0, [r4, 0x10]
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- movs r0, 0
- bl SetCameraPanning
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x17
- bne _0810EC92
- movs r0, 0x49
- bl PlaySE
- adds r0, r5, 0
- bl sub_810EC9C
- bl InstallCameraPanAheadCallback
-_0810EC92:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EC98: .4byte gTasks
- thumb_func_end sub_810EC34
-
- thumb_func_start sub_810EC9C
-sub_810EC9C: @ 810EC9C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_810EC9C
-
- thumb_func_start sub_810ECB0
-sub_810ECB0: @ 810ECB0
- push {lr}
- ldr r2, _0810ECD0 @ =gUnknown_0203925C
- ldrb r1, [r2]
- lsrs r0, r1, 1
- cmp r0, 0x1
- beq _0810ECCC
- movs r0, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0
- movs r1, 0x24
- movs r2, 0x8
- bl CreateVerticalScrollIndicators
-_0810ECCC:
- pop {r0}
- bx r0
- .align 2, 0
-_0810ECD0: .4byte gUnknown_0203925C
- thumb_func_end sub_810ECB0
-
- thumb_func_start sub_810ECD4
-sub_810ECD4: @ 810ECD4
- push {lr}
- ldr r2, _0810ECF8 @ =gUnknown_0203925C
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810ECF2
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
- movs r1, 0x24
- movs r2, 0x48
- bl CreateVerticalScrollIndicators
-_0810ECF2:
- pop {r0}
- bx r0
- .align 2, 0
-_0810ECF8: .4byte gUnknown_0203925C
- thumb_func_end sub_810ECD4
-
- thumb_func_start sub_810ECFC
-sub_810ECFC: @ 810ECFC
- push {r4,lr}
- ldr r4, _0810ED38 @ =sub_810ED40
- adds r0, r4, 0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810ED30
- adds r0, r4, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810ED3C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x8]
- strh r0, [r1, 0xA]
- strh r2, [r1, 0xC]
- strh r2, [r1, 0xE]
- strh r2, [r1, 0x10]
-_0810ED30:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810ED38: .4byte sub_810ED40
-_0810ED3C: .4byte gTasks
- thumb_func_end sub_810ECFC
-
- thumb_func_start sub_810ED40
-sub_810ED40: @ 810ED40
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _0810ED5C @ =gTasks
- adds r0, r1
- bl sub_810ED60
- pop {r0}
- bx r0
- .align 2, 0
-_0810ED5C: .4byte gTasks
- thumb_func_end sub_810ED40
-
- thumb_func_start sub_810ED60
-sub_810ED60: @ 810ED60
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x8
- beq _0810ED6E
- b _0810EEB2
-_0810ED6E:
- movs r0, 0
- strh r0, [r5, 0xE]
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0810EE14
- ldr r2, _0810EDFC @ =0x00000e68
- movs r0, 0x7
- movs r1, 0x7
- bl MapGridSetMetatileIdAt
- ldr r4, _0810EE00 @ =0x00000e69
- movs r0, 0x8
- movs r1, 0x7
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- movs r0, 0x9
- movs r1, 0x7
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EE04 @ =0x00000e6a
- movs r0, 0xA
- movs r1, 0x7
- bl MapGridSetMetatileIdAt
- movs r2, 0xE7
- lsls r2, 4
- movs r0, 0x7
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- adds r4, 0x8
- movs r0, 0x8
- movs r1, 0x8
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- movs r0, 0x9
- movs r1, 0x8
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EE08 @ =0x00000e72
- movs r0, 0xA
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EE0C @ =0x00000e78
- movs r0, 0x7
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- adds r4, 0x8
- movs r0, 0x8
- movs r1, 0x9
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- movs r0, 0x9
- movs r1, 0x9
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EE10 @ =0x00000e7a
- movs r0, 0xA
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- b _0810EE92
- .align 2, 0
-_0810EDFC: .4byte 0x00000e68
-_0810EE00: .4byte 0x00000e69
-_0810EE04: .4byte 0x00000e6a
-_0810EE08: .4byte 0x00000e72
-_0810EE0C: .4byte 0x00000e78
-_0810EE10: .4byte 0x00000e7a
-_0810EE14:
- ldr r2, _0810EEC0 @ =0x00000e6b
- movs r0, 0x7
- movs r1, 0x7
- bl MapGridSetMetatileIdAt
- ldr r4, _0810EEC4 @ =0x00000e6c
- movs r0, 0x8
- movs r1, 0x7
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- movs r0, 0x9
- movs r1, 0x7
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EEC8 @ =0x00000e6d
- movs r0, 0xA
- movs r1, 0x7
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EECC @ =0x00000e73
- movs r0, 0x7
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- adds r4, 0x8
- movs r0, 0x8
- movs r1, 0x8
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- movs r0, 0x9
- movs r1, 0x8
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EED0 @ =0x00000e75
- movs r0, 0xA
- movs r1, 0x8
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EED4 @ =0x00000e7b
- movs r0, 0x7
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
- adds r4, 0x8
- movs r0, 0x8
- movs r1, 0x9
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- movs r0, 0x9
- movs r1, 0x9
- adds r2, r4, 0
- bl MapGridSetMetatileIdAt
- ldr r2, _0810EED8 @ =0x00000e7d
- movs r0, 0xA
- movs r1, 0x9
- bl MapGridSetMetatileIdAt
-_0810EE92:
- bl DrawWholeMapView
- ldrh r0, [r5, 0x10]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r5, 0x10]
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bne _0810EEB2
- ldrb r0, [r5, 0xA]
- bl DestroyTask
-_0810EEB2:
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EEC0: .4byte 0x00000e6b
-_0810EEC4: .4byte 0x00000e6c
-_0810EEC8: .4byte 0x00000e6d
-_0810EECC: .4byte 0x00000e73
-_0810EED0: .4byte 0x00000e75
-_0810EED4: .4byte 0x00000e7b
-_0810EED8: .4byte 0x00000e7d
- thumb_func_end sub_810ED60
-
- thumb_func_start sub_810EEDC
-sub_810EEDC: @ 810EEDC
- push {r4,lr}
- ldr r4, _0810EF08 @ =gUnknown_0203925C
- ldrb r1, [r4]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810EEF0
- movs r0, 0x1
- bl DestroyVerticalScrollIndicator
-_0810EEF0:
- ldrb r0, [r4]
- lsrs r0, 1
- cmp r0, 0x1
- bne _0810EEFE
- movs r0, 0
- bl DestroyVerticalScrollIndicator
-_0810EEFE:
- bl BuyMenuFreeMemory
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EF08: .4byte gUnknown_0203925C
- thumb_func_end sub_810EEDC
-
- thumb_func_start SetTrickHouseEndRoomFlag
-SetTrickHouseEndRoomFlag: @ 810EF0C
- push {lr}
- ldr r1, _0810EF1C @ =gSpecialVar_0x8004
- ldr r0, _0810EF20 @ =0x00000259
- strh r0, [r1]
- bl FlagSet
- pop {r0}
- bx r0
- .align 2, 0
-_0810EF1C: .4byte gSpecialVar_0x8004
-_0810EF20: .4byte 0x00000259
- thumb_func_end SetTrickHouseEndRoomFlag
-
- thumb_func_start ResetTrickHouseEndRoomFlag
-ResetTrickHouseEndRoomFlag: @ 810EF24
- push {lr}
- ldr r1, _0810EF34 @ =gSpecialVar_0x8004
- ldr r0, _0810EF38 @ =0x00000259
- strh r0, [r1]
- bl FlagReset
- pop {r0}
- bx r0
- .align 2, 0
-_0810EF34: .4byte gSpecialVar_0x8004
-_0810EF38: .4byte 0x00000259
- thumb_func_end ResetTrickHouseEndRoomFlag
-
- thumb_func_start CheckLeadMonCool
-CheckLeadMonCool: @ 810EF3C
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810EF5C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x16
- bl GetMonData
- cmp r0, 0xC7
- bls _0810EF60
- movs r0, 0x1
- b _0810EF62
- .align 2, 0
-_0810EF5C: .4byte gPlayerParty
-_0810EF60:
- movs r0, 0
-_0810EF62:
- pop {r1}
- bx r1
- thumb_func_end CheckLeadMonCool
-
- thumb_func_start CheckLeadMonBeauty
-CheckLeadMonBeauty: @ 810EF68
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810EF88 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x17
- bl GetMonData
- cmp r0, 0xC7
- bls _0810EF8C
- movs r0, 0x1
- b _0810EF8E
- .align 2, 0
-_0810EF88: .4byte gPlayerParty
-_0810EF8C:
- movs r0, 0
-_0810EF8E:
- pop {r1}
- bx r1
- thumb_func_end CheckLeadMonBeauty
-
- thumb_func_start CheckLeadMonCute
-CheckLeadMonCute: @ 810EF94
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810EFB4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x18
- bl GetMonData
- cmp r0, 0xC7
- bls _0810EFB8
- movs r0, 0x1
- b _0810EFBA
- .align 2, 0
-_0810EFB4: .4byte gPlayerParty
-_0810EFB8:
- movs r0, 0
-_0810EFBA:
- pop {r1}
- bx r1
- thumb_func_end CheckLeadMonCute
-
- thumb_func_start CheckLeadMonSmart
-CheckLeadMonSmart: @ 810EFC0
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810EFE0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x21
- bl GetMonData
- cmp r0, 0xC7
- bls _0810EFE4
- movs r0, 0x1
- b _0810EFE6
- .align 2, 0
-_0810EFE0: .4byte gPlayerParty
-_0810EFE4:
- movs r0, 0
-_0810EFE6:
- pop {r1}
- bx r1
- thumb_func_end CheckLeadMonSmart
-
- thumb_func_start CheckLeadMonTough
-CheckLeadMonTough: @ 810EFEC
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810F00C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2F
- bl GetMonData
- cmp r0, 0xC7
- bls _0810F010
- movs r0, 0x1
- b _0810F012
- .align 2, 0
-_0810F00C: .4byte gPlayerParty
-_0810F010:
- movs r0, 0
-_0810F012:
- pop {r1}
- bx r1
- thumb_func_end CheckLeadMonTough
-
- thumb_func_start IsGrassTypeInParty
-IsGrassTypeInParty: @ 810F018
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, _0810F068 @ =gBaseStats
-_0810F01E:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0810F06C @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _0810F074
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0810F074
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1, 0x6]
- cmp r0, 0xC
- beq _0810F060
- ldrb r0, [r1, 0x7]
- cmp r0, 0xC
- bne _0810F074
-_0810F060:
- ldr r1, _0810F070 @ =gScriptResult
- movs r0, 0x1
- b _0810F082
- .align 2, 0
-_0810F068: .4byte gBaseStats
-_0810F06C: .4byte gPlayerParty
-_0810F070: .4byte gScriptResult
-_0810F074:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0810F01E
- ldr r1, _0810F08C @ =gScriptResult
- movs r0, 0
-_0810F082:
- strh r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F08C: .4byte gScriptResult
- thumb_func_end IsGrassTypeInParty
-
- thumb_func_start ShowGlassWorkshopMenu
-ShowGlassWorkshopMenu: @ 810F090
- push {r4,r5,lr}
- sub sp, 0x8
- bl ScriptContext2_Enable
- movs r0, 0
- movs r1, 0
- movs r2, 0xA
- movs r3, 0xB
- bl MenuDrawTextWindow
- movs r4, 0
- str r4, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x5
- bl InitMenu
- ldr r0, _0810F104 @ =gUnknown_0203925C
- strb r4, [r0]
- bl sub_80F944C
- bl LoadScrollIndicatorPalette
- bl sub_810F2B4
- ldr r5, _0810F108 @ =gUnknown_083F83C0
-_0810F0CA:
- lsls r0, r4, 2
- adds r0, r5
- ldr r0, [r0]
- lsls r2, r4, 1
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x4
- bls _0810F0CA
- ldr r1, _0810F10C @ =gUnknown_0203925B
- movs r0, 0
- strb r0, [r1]
- ldr r1, _0810F110 @ =gUnknown_0203925A
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, _0810F114 @ =sub_810F118
- movs r1, 0x8
- bl CreateTask
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F104: .4byte gUnknown_0203925C
-_0810F108: .4byte gUnknown_083F83C0
-_0810F10C: .4byte gUnknown_0203925B
-_0810F110: .4byte gUnknown_0203925A
-_0810F114: .4byte sub_810F118
- thumb_func_end ShowGlassWorkshopMenu
-
- thumb_func_start sub_810F118
-sub_810F118: @ 810F118
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0810F1E4 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x40
- bne _0810F14A
- ldr r1, _0810F1E8 @ =gUnknown_0203925B
- ldrb r0, [r1]
- cmp r0, 0
- beq _0810F14A
- subs r0, 0x1
- strb r0, [r1]
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrap
- adds r0, r4, 0
- movs r1, 0x40
- bl sub_810F1F4
-_0810F14A:
- ldr r0, _0810F1E4 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x80
- bne _0810F17A
- ldr r2, _0810F1E8 @ =gUnknown_0203925B
- ldrb r1, [r2]
- ldr r0, _0810F1EC @ =gUnknown_0203925A
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- beq _0810F17A
- adds r0, r1, 0x1
- strb r0, [r2]
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0x1
- bl MoveMenuCursorNoWrap
- adds r0, r4, 0
- movs r1, 0x80
- bl sub_810F1F4
-_0810F17A:
- ldr r4, _0810F1E4 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810F1AE
- bl HandleDestroyMenuCursors
- ldr r0, _0810F1F0 @ =gScriptResult
- ldr r1, _0810F1E8 @ =gUnknown_0203925B
- ldrb r1, [r1]
- strh r1, [r0]
- movs r0, 0x5
- bl PlaySE
- bl sub_810EEDC
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r5, 0
- bl sub_810EC9C
-_0810F1AE:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810F1DE
- bl HandleDestroyMenuCursors
- ldr r1, _0810F1F0 @ =gScriptResult
- movs r0, 0x7F
- strh r0, [r1]
- movs r0, 0x5
- bl PlaySE
- bl sub_810EEDC
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r5, 0
- bl sub_810EC9C
-_0810F1DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F1E4: .4byte gMain
-_0810F1E8: .4byte gUnknown_0203925B
-_0810F1EC: .4byte gUnknown_0203925A
-_0810F1F0: .4byte gScriptResult
- thumb_func_end sub_810F118
-
- thumb_func_start sub_810F1F4
-sub_810F1F4: @ 810F1F4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r2, 0
- lsls r1, 24
- lsrs r1, 24
- adds r3, r1, 0
- movs r6, 0
- movs r4, 0
- ldr r0, _0810F214 @ =gUnknown_0203925A
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _0810F218
- movs r0, 0
- b _0810F282
- .align 2, 0
-_0810F214: .4byte gUnknown_0203925A
-_0810F218:
- cmp r1, 0x40
- bne _0810F22C
- cmp r2, 0
- bne _0810F240
- ldr r0, _0810F228 @ =gUnknown_0203925B
- ldrb r4, [r0]
- movs r6, 0x1
- b _0810F244
- .align 2, 0
-_0810F228: .4byte gUnknown_0203925B
-_0810F22C:
- cmp r3, 0x80
- bne _0810F240
- cmp r5, 0x4
- bne _0810F240
- ldr r0, _0810F288 @ =gUnknown_0203925B
- ldrb r0, [r0]
- subs r0, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- movs r6, 0x1
-_0810F240:
- cmp r6, 0
- beq _0810F280
-_0810F244:
- adds r0, r4, 0
- movs r1, 0x5
- bl GlassWorkshopUpdateScrollIndicators
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0x9
- movs r3, 0xA
- bl MenuFillWindowRectWithBlankTile
- movs r5, 0
- ldr r7, _0810F28C @ =gUnknown_083F83C0
-_0810F25C:
- lsls r0, r4, 2
- adds r0, r7
- ldr r0, [r0]
- lsls r2, r5, 1
- adds r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _0810F25C
-_0810F280:
- adds r0, r6, 0
-_0810F282:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F288: .4byte gUnknown_0203925B
-_0810F28C: .4byte gUnknown_083F83C0
- thumb_func_end sub_810F1F4
-
- thumb_func_start sub_810F290
-sub_810F290: @ 810F290
- push {lr}
- ldr r2, _0810F2B0 @ =gUnknown_0203925C
- ldrb r1, [r2]
- lsrs r0, r1, 1
- cmp r0, 0x1
- beq _0810F2AC
- movs r0, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0
- movs r1, 0x2C
- movs r2, 0x8
- bl CreateVerticalScrollIndicators
-_0810F2AC:
- pop {r0}
- bx r0
- .align 2, 0
-_0810F2B0: .4byte gUnknown_0203925C
- thumb_func_end sub_810F290
-
- thumb_func_start sub_810F2B4
-sub_810F2B4: @ 810F2B4
- push {lr}
- ldr r2, _0810F2D8 @ =gUnknown_0203925C
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810F2D2
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
- movs r1, 0x2C
- movs r2, 0x58
- bl CreateVerticalScrollIndicators
-_0810F2D2:
- pop {r0}
- bx r0
- .align 2, 0
-_0810F2D8: .4byte gUnknown_0203925C
- thumb_func_end sub_810F2B4
-
- thumb_func_start GlassWorkshopUpdateScrollIndicators
-GlassWorkshopUpdateScrollIndicators: @ 810F2DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r4, 0
- bne _0810F300
- ldr r0, _0810F2FC @ =gUnknown_0203925C
- ldrb r1, [r0]
- movs r2, 0x2
- eors r1, r2
- strb r1, [r0]
- movs r0, 0
- bl DestroyVerticalScrollIndicator
- b _0810F304
- .align 2, 0
-_0810F2FC: .4byte gUnknown_0203925C
-_0810F300:
- bl sub_810F290
-_0810F304:
- adds r1, r4, r5
- ldr r0, _0810F314 @ =gUnknown_0203925A
- ldrb r0, [r0]
- cmp r1, r0
- bge _0810F318
- bl sub_810F2B4
- b _0810F32C
- .align 2, 0
-_0810F314: .4byte gUnknown_0203925A
-_0810F318:
- cmp r1, r0
- bne _0810F32C
- ldr r0, _0810F334 @ =gUnknown_0203925C
- ldrb r1, [r0]
- movs r2, 0x1
- eors r1, r2
- strb r1, [r0]
- movs r0, 0x1
- bl DestroyVerticalScrollIndicator
-_0810F32C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F334: .4byte gUnknown_0203925C
- thumb_func_end GlassWorkshopUpdateScrollIndicators
-
- thumb_func_start SpawnCameraDummy
-SpawnCameraDummy: @ 810F338
- push {lr}
- sub sp, 0x8
- ldr r0, _0810F380 @ =gSaveBlock1
- ldrh r3, [r0]
- adds r3, 0x7
- lsls r3, 16
- asrs r3, 16
- ldrh r0, [r0, 0x2]
- adds r0, 0x7
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0x7F
- bl SpawnSpecialFieldObjectParametrized
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810F384 @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r1, 0x4]
- bl CameraObjectSetFollowedObjectId
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0810F380: .4byte gSaveBlock1
-_0810F384: .4byte gMapObjects
- thumb_func_end SpawnCameraDummy
-
- thumb_func_start RemoveCameraDummy
-RemoveCameraDummy: @ 810F388
- push {lr}
- bl GetPlayerAvatarObjectId
- lsls r0, 24
- lsrs r0, 24
- bl CameraObjectSetFollowedObjectId
- ldr r0, _0810F3A8 @ =gSaveBlock1
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x7F
- bl RemoveFieldObjectByLocalIdAndMap
- pop {r0}
- bx r0
- .align 2, 0
-_0810F3A8: .4byte gSaveBlock1
- thumb_func_end RemoveCameraDummy
-
- thumb_func_start GetPokeblockNameByMonNature
-GetPokeblockNameByMonNature: @ 810F3AC
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810F3D4 @ =gPlayerParty
- adds r0, r1
- bl GetNature
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0810F3D8 @ =gStringVar1
- bl sub_810CB68
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0810F3D4: .4byte gPlayerParty
-_0810F3D8: .4byte gStringVar1
- thumb_func_end GetPokeblockNameByMonNature
-
- thumb_func_start GetSecretBaseNearbyMapName
-GetSecretBaseNearbyMapName: @ 810F3DC
- push {r4,lr}
- ldr r4, _0810F3FC @ =gStringVar1
- ldr r0, _0810F400 @ =0x00004026
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0
- bl sub_80FBFB4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F3FC: .4byte gStringVar1
-_0810F400: .4byte 0x00004026
- thumb_func_end GetSecretBaseNearbyMapName
-
- thumb_func_start sub_810F404
-sub_810F404: @ 810F404
- push {lr}
- movs r0, 0x20
- bl GetGameStat
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_810F404
-
- thumb_func_start sub_810F414
-sub_810F414: @ 810F414
- push {lr}
- ldr r0, _0810F420 @ =gStringVar1
- bl sub_8135FF4
- pop {r0}
- bx r0
- .align 2, 0
-_0810F420: .4byte gStringVar1
- thumb_func_end sub_810F414
-
- thumb_func_start sub_810F424
-sub_810F424: @ 810F424
- push {r4,r5,lr}
- ldr r2, _0810F458 @ =gSaveBlock1
- ldr r1, _0810F45C @ =0x00002dd4
- adds r0, r2, r1
- ldrb r1, [r0]
- lsls r1, 25
- ldr r0, _0810F460 @ =0x00002dd6
- adds r2, r0
- lsrs r1, 25
- ldrh r2, [r2]
- adds r1, r2
- ldr r2, _0810F464 @ =gUnknown_083F83E0
- ldr r0, _0810F468 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r0, r2
- ldrb r0, [r0]
- adds r5, r1, r0
- movs r0, 0x2
- bl GetPriceReduction
- lsls r0, 24
- cmp r0, 0
- bne _0810F470
- ldr r4, _0810F46C @ =gUnknown_083F83EC
- b _0810F472
- .align 2, 0
-_0810F458: .4byte gSaveBlock1
-_0810F45C: .4byte 0x00002dd4
-_0810F460: .4byte 0x00002dd6
-_0810F464: .4byte gUnknown_083F83E0
-_0810F468: .4byte gSpecialVar_0x8004
-_0810F46C: .4byte gUnknown_083F83EC
-_0810F470:
- ldr r4, _0810F484 @ =gUnknown_083F83F8
-_0810F472:
- adds r0, r5, 0
- movs r1, 0xC
- bl __umodsi3
- adds r0, r4
- ldrb r0, [r0]
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F484: .4byte gUnknown_083F83F8
- thumb_func_end sub_810F424
-
- thumb_func_start sub_810F488
-sub_810F488: @ 810F488
- push {lr}
- ldr r1, _0810F4A0 @ =gSpecialVar_0x8004
- ldr r0, _0810F4A4 @ =0x00000277
- strh r0, [r1]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0810F4A8
- movs r0, 0x1
- b _0810F4AA
- .align 2, 0
-_0810F4A0: .4byte gSpecialVar_0x8004
-_0810F4A4: .4byte 0x00000277
-_0810F4A8:
- movs r0, 0
-_0810F4AA:
- pop {r1}
- bx r1
- thumb_func_end sub_810F488
-
- thumb_func_start sub_810F4B0
-sub_810F4B0: @ 810F4B0
- push {lr}
- ldr r1, _0810F4C8 @ =gSpecialVar_0x8004
- movs r0, 0x9E
- lsls r0, 2
- strh r0, [r1]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0810F4CC
- movs r0, 0x1
- b _0810F4CE
- .align 2, 0
-_0810F4C8: .4byte gSpecialVar_0x8004
-_0810F4CC:
- movs r0, 0
-_0810F4CE:
- pop {r1}
- bx r1
- thumb_func_end sub_810F4B0
-
- thumb_func_start sub_810F4D4
-sub_810F4D4: @ 810F4D4
- push {lr}
- ldr r1, _0810F4EC @ =gSpecialVar_0x8004
- ldr r0, _0810F4F0 @ =0x00000279
- strh r0, [r1]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0810F4F4
- movs r0, 0x1
- b _0810F4F6
- .align 2, 0
-_0810F4EC: .4byte gSpecialVar_0x8004
-_0810F4F0: .4byte 0x00000279
-_0810F4F4:
- movs r0, 0
-_0810F4F6:
- pop {r1}
- bx r1
- thumb_func_end sub_810F4D4
-
- thumb_func_start sub_810F4FC
-sub_810F4FC: @ 810F4FC
- push {lr}
- ldr r1, _0810F514 @ =gSpecialVar_0x8004
- ldr r0, _0810F518 @ =0x0000027a
- strh r0, [r1]
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0810F51C
- movs r0, 0x1
- b _0810F51E
- .align 2, 0
-_0810F514: .4byte gSpecialVar_0x8004
-_0810F518: .4byte 0x0000027a
-_0810F51C:
- movs r0, 0
-_0810F51E:
- pop {r1}
- bx r1
- thumb_func_end sub_810F4FC
-
- thumb_func_start LeadMonHasEffortRibbon
-LeadMonHasEffortRibbon: @ 810F524
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810F548 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x47
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0810F548: .4byte gPlayerParty
- thumb_func_end LeadMonHasEffortRibbon
-
- thumb_func_start GivLeadMonEffortRibbon
-GivLeadMonEffortRibbon: @ 810F54C
- push {lr}
- sub sp, 0x4
- movs r0, 0x2A
- bl IncrementGameStat
- ldr r0, _0810F580 @ =0x0000083b
- bl FlagSet
- movs r1, 0x1
- mov r0, sp
- strb r1, [r0]
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810F584 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x47
- mov r2, sp
- bl SetMonData
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0810F580: .4byte 0x0000083b
-_0810F584: .4byte gPlayerParty
- thumb_func_end GivLeadMonEffortRibbon
-
- thumb_func_start GetLeadMonEVCount
-GetLeadMonEVCount: @ 810F588
- push {lr}
- bl GetLeadMonIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0810F5AC @ =gPlayerParty
- adds r0, r1
- bl GetMonEVCount
- lsls r0, 16
- ldr r1, _0810F5B0 @ =0x01fd0000
- cmp r0, r1
- bhi _0810F5B4
- movs r0, 0
- b _0810F5B6
- .align 2, 0
-_0810F5AC: .4byte gPlayerParty
-_0810F5B0: .4byte 0x01fd0000
-_0810F5B4:
- movs r0, 0x1
-_0810F5B6:
- pop {r1}
- bx r1
- thumb_func_end GetLeadMonEVCount
-
- thumb_func_start sub_810F5BC
-sub_810F5BC: @ 810F5BC
- push {lr}
- movs r0, 0xC7
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _0810F610
- ldr r0, _0810F5E8 @ =gSaveBlock1
- ldrh r1, [r0, 0x4]
- movs r0, 0x83
- lsls r0, 3
- cmp r1, r0
- bne _0810F610
- subs r0, 0x75
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0810F5F0
- ldr r0, _0810F5EC @ =0x0000409a
- movs r1, 0x4
- b _0810F602
- .align 2, 0
-_0810F5E8: .4byte gSaveBlock1
-_0810F5EC: .4byte 0x0000409a
-_0810F5F0:
- movs r0, 0xE9
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0810F610
- ldr r0, _0810F60C @ =0x0000409a
- movs r1, 0x5
-_0810F602:
- bl VarSet
- movs r0, 0x1
- b _0810F612
- .align 2, 0
-_0810F60C: .4byte 0x0000409a
-_0810F610:
- movs r0, 0
-_0810F612:
- pop {r1}
- bx r1
- thumb_func_end sub_810F5BC
-
- thumb_func_start SetShoalItemFlag
-SetShoalItemFlag: @ 810F618
- push {lr}
- ldr r0, _0810F624 @ =0x0000085f
- bl FlagSet
- pop {r0}
- bx r0
- .align 2, 0
-_0810F624: .4byte 0x0000085f
- thumb_func_end SetShoalItemFlag
-
- thumb_func_start PutZigzagoonInPlayerParty
-PutZigzagoonInPlayerParty: @ 810F628
- push {r4,r5,lr}
- sub sp, 0x14
- ldr r5, _0810F690 @ =gPlayerParty
- movs r1, 0x90
- lsls r1, 1
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r5, 0
- movs r2, 0x7
- movs r3, 0x20
- bl CreateMon
- movs r1, 0x1
- add r0, sp, 0x10
- strh r1, [r0]
- adds r0, r5, 0
- movs r1, 0x2E
- add r2, sp, 0x10
- bl SetMonData
- add r1, sp, 0x10
- movs r0, 0x21
- strh r0, [r1]
- adds r0, r5, 0
- movs r1, 0xD
- add r2, sp, 0x10
- bl SetMonData
- add r0, sp, 0x10
- strh r4, [r0]
- adds r0, r5, 0
- movs r1, 0xE
- add r2, sp, 0x10
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xF
- add r2, sp, 0x10
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0x10
- add r2, sp, 0x10
- bl SetMonData
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F690: .4byte gPlayerParty
- thumb_func_end PutZigzagoonInPlayerParty
-
- thumb_func_start IsStarterInParty
-IsStarterInParty: @ 810F694
- push {r4-r6,lr}
- ldr r0, _0810F6D0 @ =0x00004023
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl GetStarterPokemon
- lsls r0, 16
- lsrs r6, r0, 16
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810F6E2
-_0810F6B6:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _0810F6D4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- cmp r0, r6
- bne _0810F6D8
- movs r0, 0x1
- b _0810F6E4
- .align 2, 0
-_0810F6D0: .4byte 0x00004023
-_0810F6D4: .4byte gPlayerParty
-_0810F6D8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810F6B6
-_0810F6E2:
- movs r0, 0
-_0810F6E4:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end IsStarterInParty
-
- thumb_func_start CheckFreePokemonStorageSpace
-CheckFreePokemonStorageSpace: @ 810F6EC
- push {r4-r6,lr}
- movs r5, 0
-_0810F6F0:
- movs r4, 0
- lsls r1, r5, 2
- adds r1, r5
- lsls r0, r1, 4
- subs r0, r1
- lsls r6, r0, 5
-_0810F6FC:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- ldr r1, _0810F718 @ =gPokemonStorage + 0x4
- adds r0, r1
- adds r0, r6, r0
- movs r1, 0xB
- movs r2, 0
- bl GetBoxMonData
- cmp r0, 0
- bne _0810F71C
- movs r0, 0x1
- b _0810F732
- .align 2, 0
-_0810F718: .4byte gPokemonStorage + 0x4
-_0810F71C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _0810F6FC
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xD
- bls _0810F6F0
- movs r0, 0
-_0810F732:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end CheckFreePokemonStorageSpace
-
- thumb_func_start IsPokerusInParty
-IsPokerusInParty: @ 810F738
- push {lr}
- ldr r0, _0810F74C @ =gPlayerParty
- movs r1, 0x3F
- bl CheckPartyPokerus
- lsls r0, 24
- cmp r0, 0
- beq _0810F750
- movs r0, 0x1
- b _0810F752
- .align 2, 0
-_0810F74C: .4byte gPlayerParty
-_0810F750:
- movs r0, 0
-_0810F752:
- pop {r1}
- bx r1
- thumb_func_end IsPokerusInParty
-
- thumb_func_start sub_810F758
-sub_810F758: @ 810F758
- push {lr}
- ldr r0, _0810F798 @ =sub_810F7A8
- movs r1, 0x9
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0810F79C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r0, _0810F7A0 @ =gSpecialVar_0x8005
- ldrh r2, [r0]
- movs r0, 0
- strh r2, [r1, 0x8]
- strh r0, [r1, 0xA]
- strh r0, [r1, 0xC]
- strh r0, [r1, 0xE]
- ldr r0, _0810F7A4 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- strh r0, [r1, 0x10]
- movs r0, 0x5
- strh r0, [r1, 0x12]
- movs r0, 0
- bl SetCameraPanningCallback
- movs r0, 0xD6
- bl PlaySE
- pop {r0}
- bx r0
- .align 2, 0
-_0810F798: .4byte sub_810F7A8
-_0810F79C: .4byte gTasks
-_0810F7A0: .4byte gSpecialVar_0x8005
-_0810F7A4: .4byte gSpecialVar_0x8004
- thumb_func_end sub_810F758
-
- thumb_func_start sub_810F7A8
-sub_810F7A8: @ 810F7A8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0810F810 @ =gTasks
- adds r4, r0, r1
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl __modsi3
- cmp r0, 0
- bne _0810F808
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0810F808
- ldrh r0, [r4, 0x8]
- negs r0, r0
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0x10]
- negs r0, r0
- strh r0, [r4, 0x10]
- movs r2, 0x8
- ldrsh r0, [r4, r2]
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- bl SetCameraPanning
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- bne _0810F808
- adds r0, r5, 0
- bl sub_810F814
- bl InstallCameraPanAheadCallback
-_0810F808:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F810: .4byte gTasks
- thumb_func_end sub_810F7A8
-
- thumb_func_start sub_810F814
-sub_810F814: @ 810F814
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- bl EnableBothScriptContexts
- pop {r0}
- bx r0
- thumb_func_end sub_810F814
-
- thumb_func_start sub_810F828
-sub_810F828: @ 810F828
- push {lr}
- movs r0, 0xAE
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_810F828
-
- thumb_func_start SetRoute119Weather
-SetRoute119Weather: @ 810F83C
- push {lr}
- bl get_map_light_from_warp0
- lsls r0, 24
- lsrs r0, 24
- bl is_light_level_1_2_3_5_or_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810F858
- movs r0, 0x14
- bl SetSav1Weather
-_0810F858:
- pop {r0}
- bx r0
- thumb_func_end SetRoute119Weather
-
- thumb_func_start SetRoute123Weather
-SetRoute123Weather: @ 810F85C
- push {lr}
- bl get_map_light_from_warp0
- lsls r0, 24
- lsrs r0, 24
- bl is_light_level_1_2_3_5_or_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0810F878
- movs r0, 0x15
- bl SetSav1Weather
-_0810F878:
- pop {r0}
- bx r0
- thumb_func_end SetRoute123Weather
-
- thumb_func_start GetLeadMonIndex
-GetLeadMonIndex: @ 810F87C
- push {r4-r6,lr}
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- cmp r5, r6
- bcs _0810F8CA
-_0810F88C:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0810F8BC @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0810F8C0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- cmp r0, 0
- beq _0810F8C0
- adds r0, r5, 0
- b _0810F8CC
- .align 2, 0
-_0810F8BC: .4byte gPlayerParty
-_0810F8C0:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, r6
- bcc _0810F88C
-_0810F8CA:
- movs r0, 0
-_0810F8CC:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetLeadMonIndex
-
- thumb_func_start ScriptGetPartyMonSpecies
-ScriptGetPartyMonSpecies: @ 810F8D4
- push {lr}
- ldr r0, _0810F8F4 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0810F8F8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0810F8F4: .4byte gSpecialVar_0x8004
-_0810F8F8: .4byte gPlayerParty
- thumb_func_end ScriptGetPartyMonSpecies
-
- thumb_func_start sub_810F8FC
-sub_810F8FC: @ 810F8FC
- push {lr}
- movs r0, 0x6
- bl sub_805ADDC
- pop {r0}
- bx r0
- thumb_func_end sub_810F8FC
-
- thumb_func_start sub_810F908
-sub_810F908: @ 810F908
- push {r4,lr}
- ldr r0, _0810F928 @ =0x000040c2
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- adds r3, r0, 0
- ldr r2, _0810F92C @ =gLocalTime
- movs r1, 0
- ldrsh r0, [r2, r1]
- subs r0, r3
- cmp r0, 0x6
- ble _0810F930
- movs r0, 0
- b _0810F948
- .align 2, 0
-_0810F928: .4byte 0x000040c2
-_0810F92C: .4byte gLocalTime
-_0810F930:
- ldrh r1, [r2]
- movs r4, 0
- ldrsh r0, [r2, r4]
- cmp r0, 0
- blt _0810F946
- subs r1, r3
- movs r0, 0x7
- subs r0, r1
- lsls r0, 16
- lsrs r0, 16
- b _0810F948
-_0810F946:
- movs r0, 0x8
-_0810F948:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810F908
-
- thumb_func_start sub_810F950
-sub_810F950: @ 810F950
- push {r4,lr}
- ldr r0, _0810F964 @ =0x000040c2
- ldr r4, _0810F968 @ =gLocalTime
- ldrh r1, [r4]
- bl VarSet
- ldrh r0, [r4]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F964: .4byte 0x000040c2
-_0810F968: .4byte gLocalTime
- thumb_func_end sub_810F950
-
- thumb_func_start sub_810F96C
-sub_810F96C: @ 810F96C
- push {r4,lr}
- ldr r0, _0810F994 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0810F998 @ =gPlayerParty
- adds r0, r1
- ldr r4, _0810F99C @ =gStringVar1
- movs r1, 0x7
- adds r2, r4, 0
- bl GetMonData
- ldr r0, _0810F9A0 @ =gSaveBlock2
- adds r1, r4, 0
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- beq _0810F9A4
- movs r0, 0x1
- b _0810F9A6
- .align 2, 0
-_0810F994: .4byte gSpecialVar_0x8004
-_0810F998: .4byte gPlayerParty
-_0810F99C: .4byte gStringVar1
-_0810F9A0: .4byte gSaveBlock2
-_0810F9A4:
- movs r0, 0
-_0810F9A6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_810F96C
-
- thumb_func_start sub_810F9AC
-sub_810F9AC: @ 810F9AC
- push {r4,r5,lr}
- ldr r2, _0810F9C0 @ =gScriptResult
- ldrh r1, [r2]
- ldr r0, _0810F9C4 @ =0x0000270f
- cmp r1, r0
- bls _0810F9C8
- movs r0, 0
- bl sub_80BF088
- b _0810FA4A
- .align 2, 0
-_0810F9C0: .4byte gScriptResult
-_0810F9C4: .4byte 0x0000270f
-_0810F9C8:
- ldr r0, _0810F9D8 @ =0x000003e7
- cmp r1, r0
- bls _0810F9E0
- ldr r4, _0810F9DC @ =gStringVar1
- movs r0, 0xA1
- strb r0, [r4]
- adds r4, 0x1
- b _0810FA04
- .align 2, 0
-_0810F9D8: .4byte 0x000003e7
-_0810F9DC: .4byte gStringVar1
-_0810F9E0:
- cmp r1, 0x63
- bls _0810F9F4
- ldr r4, _0810F9F0 @ =gStringVar1
- movs r0, 0xA1
- strb r0, [r4]
- strb r0, [r4, 0x1]
- adds r4, 0x2
- b _0810FA04
- .align 2, 0
-_0810F9F0: .4byte gStringVar1
-_0810F9F4:
- cmp r1, 0x9
- bls _0810FA24
- ldr r4, _0810FA20 @ =gStringVar1
- movs r0, 0xA1
- strb r0, [r4]
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- adds r4, 0x3
-_0810FA04:
- ldrh r5, [r2]
- adds r0, r5, 0
- bl sub_80BF0B8
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl ConvertIntToDecimalStringN
- b _0810FA4A
- .align 2, 0
-_0810FA20: .4byte gStringVar1
-_0810FA24:
- ldr r4, _0810FA50 @ =gStringVar1
- movs r0, 0xA1
- strb r0, [r4]
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- strb r0, [r4, 0x3]
- adds r4, 0x4
- ldrh r5, [r2]
- adds r0, r5, 0
- bl sub_80BF0B8
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl ConvertIntToDecimalStringN
-_0810FA4A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810FA50: .4byte gStringVar1
- thumb_func_end sub_810F9AC
-
- thumb_func_start ResetFanClub
-ResetFanClub: @ 810FA54
- ldr r0, _0810FA68 @ =gSaveBlock1
- ldr r2, _0810FA6C @ =0x000013c2
- adds r1, r0, r2
- movs r2, 0
- strh r2, [r1]
- ldr r1, _0810FA70 @ =0x000013c4
- adds r0, r1
- strh r2, [r0]
- bx lr
- .align 2, 0
-_0810FA68: .4byte gSaveBlock1
-_0810FA6C: .4byte 0x000013c2
-_0810FA70: .4byte 0x000013c4
- thumb_func_end ResetFanClub
-
- thumb_func_start sub_810FA74
-sub_810FA74: @ 810FA74
- push {lr}
- bl sub_810FF30
- lsls r0, 24
- cmp r0, 0
- beq _0810FA90
- bl sub_810FCE8
- ldr r0, _0810FA94 @ =gSaveBlock1
- ldr r1, _0810FA98 @ =gSaveBlock2
- ldrh r1, [r1, 0xE]
- ldr r2, _0810FA9C @ =0x000013c4
- adds r0, r2
- strh r1, [r0]
-_0810FA90:
- pop {r0}
- bx r0
- .align 2, 0
-_0810FA94: .4byte gSaveBlock1
-_0810FA98: .4byte gSaveBlock2
-_0810FA9C: .4byte 0x000013c4
- thumb_func_end sub_810FA74
-
- thumb_func_start sub_810FAA0
-sub_810FAA0: @ 810FAA0
- push {r4,lr}
- ldr r4, _0810FAF0 @ =gSaveBlock1
- ldr r1, _0810FAF4 @ =0x000013c2
- adds r0, r4, r1
- ldrh r0, [r0]
- lsrs r0, 7
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0810FAE8
- bl sub_810FF48
- bl sub_810FD80
- ldr r0, _0810FAF8 @ =gSaveBlock2
- ldrh r1, [r0, 0xE]
- ldr r2, _0810FAFC @ =0x000013c4
- adds r0, r4, r2
- strh r1, [r0]
- ldr r0, _0810FB00 @ =0x00000315
- bl FlagReset
- ldr r0, _0810FB04 @ =0x00000316
- bl FlagReset
- ldr r0, _0810FB08 @ =0x00000317
- bl FlagReset
- movs r0, 0xC6
- lsls r0, 2
- bl FlagReset
- ldr r0, _0810FB0C @ =0x00004095
- movs r1, 0x1
- bl VarSet
-_0810FAE8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810FAF0: .4byte gSaveBlock1
-_0810FAF4: .4byte 0x000013c2
-_0810FAF8: .4byte gSaveBlock2
-_0810FAFC: .4byte 0x000013c4
-_0810FB00: .4byte 0x00000315
-_0810FB04: .4byte 0x00000316
-_0810FB08: .4byte 0x00000317
-_0810FB0C: .4byte 0x00004095
- thumb_func_end sub_810FAA0
-
- thumb_func_start sub_810FB10
-sub_810FB10: @ 810FB10
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0810FB54 @ =0x00004095
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bne _0810FB80
- ldr r0, _0810FB58 @ =gSaveBlock1
- ldr r1, _0810FB5C @ =0x000013c2
- adds r4, r0, r1
- ldrh r2, [r4]
- movs r1, 0x7F
- ands r1, r2
- ldr r0, _0810FB60 @ =gUnknown_083F8404
- adds r0, r5, r0
- ldrb r0, [r0]
- adds r1, r0
- cmp r1, 0x13
- ble _0810FB7C
- bl sub_810FCB0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bhi _0810FB68
- bl sub_810FB9C
- ldrh r1, [r4]
- ldr r0, _0810FB64 @ =0x0000ff80
- ands r0, r1
- b _0810FB7E
- .align 2, 0
-_0810FB54: .4byte 0x00004095
-_0810FB58: .4byte gSaveBlock1
-_0810FB5C: .4byte 0x000013c2
-_0810FB60: .4byte gUnknown_083F8404
-_0810FB64: .4byte 0x0000ff80
-_0810FB68:
- ldrh r0, [r4]
- ldr r1, _0810FB78 @ =0x0000ff80
- ands r1, r0
- movs r0, 0x14
- orrs r1, r0
- strh r1, [r4]
- b _0810FB80
- .align 2, 0
-_0810FB78: .4byte 0x0000ff80
-_0810FB7C:
- adds r0, r2, r0
-_0810FB7E:
- strh r0, [r4]
-_0810FB80:
- ldr r0, _0810FB94 @ =gSaveBlock1
- ldr r1, _0810FB98 @ =0x000013c2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x7F
- ands r0, r1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0810FB94: .4byte gSaveBlock1
-_0810FB98: .4byte 0x000013c2
- thumb_func_end sub_810FB10
-
- thumb_func_start sub_810FB9C
-sub_810FB9C: @ 810FB9C
- push {r4-r7,lr}
- sub sp, 0x4
- movs r3, 0
- movs r5, 0
- ldr r7, _0810FBD8 @ =gSaveBlock1 + 0x13C2
- movs r6, 0x1
-_0810FBA8:
- ldrh r1, [r7]
- ldr r0, _0810FBDC @ =gUnknown_083F8408
- adds r0, r5, r0
- ldrb r4, [r0]
- asrs r1, r4
- ands r1, r6
- cmp r1, 0
- bne _0810FBE0
- adds r3, r5, 0
- str r3, [sp]
- bl Random
- adds r1, r6, 0
- ands r1, r0
- ldr r3, [sp]
- cmp r1, 0
- beq _0810FBE0
- adds r0, r6, 0
- lsls r0, r4
- ldrh r1, [r7]
- orrs r0, r1
- strh r0, [r7]
- b _0810FC00
- .align 2, 0
-_0810FBD8: .4byte gSaveBlock1 + 0x13C2
-_0810FBDC: .4byte gUnknown_083F8408
-_0810FBE0:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _0810FBA8
- ldr r2, _0810FC0C @ =gSaveBlock1
- ldr r0, _0810FC10 @ =0x000013c2
- adds r2, r0
- ldr r1, _0810FC14 @ =gUnknown_083F8408
- adds r1, r3, r1
- movs r0, 0x1
- ldrb r1, [r1]
- lsls r0, r1
- ldrh r1, [r2]
- orrs r0, r1
- strh r0, [r2]
-_0810FC00:
- adds r0, r3, 0
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810FC0C: .4byte gSaveBlock1
-_0810FC10: .4byte 0x000013c2
-_0810FC14: .4byte gUnknown_083F8408
- thumb_func_end sub_810FB9C
-
- thumb_func_start sub_810FC18
-sub_810FC18: @ 810FC18
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r0, 0
- mov r8, r0
- bl sub_810FCB0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _0810FC3E
- movs r0, 0
- b _0810FC94
-_0810FC34:
- lsls r4, r6
- ldrh r0, [r2]
- eors r4, r0
- strh r4, [r2]
- b _0810FC92
-_0810FC3E:
- movs r5, 0
- ldr r2, _0810FCA0 @ =gSaveBlock1 + 0x13C2
- movs r4, 0x1
-_0810FC44:
- ldrh r1, [r2]
- ldr r7, _0810FCA4 @ =gUnknown_083F8410
- adds r0, r5, r7
- ldrb r6, [r0]
- asrs r1, r6
- ands r1, r4
- cmp r1, 0
- beq _0810FC66
- mov r8, r5
- str r2, [sp]
- bl Random
- adds r1, r4, 0
- ands r1, r0
- ldr r2, [sp]
- cmp r1, 0
- bne _0810FC34
-_0810FC66:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x7
- bls _0810FC44
- ldr r0, _0810FCA8 @ =gSaveBlock1
- ldr r1, _0810FCAC @ =0x000013c2
- adds r4, r0, r1
- ldrh r1, [r4]
- mov r2, r8
- adds r0, r2, r7
- ldrb r2, [r0]
- adds r0, r1, 0
- asrs r0, r2
- movs r3, 0x1
- ands r0, r3
- cmp r0, 0
- beq _0810FC92
- adds r0, r3, 0
- lsls r0, r2
- eors r1, r0
- strh r1, [r4]
-_0810FC92:
- mov r0, r8
-_0810FC94:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810FCA0: .4byte gSaveBlock1 + 0x13C2
-_0810FCA4: .4byte gUnknown_083F8410
-_0810FCA8: .4byte gSaveBlock1
-_0810FCAC: .4byte 0x000013c2
- thumb_func_end sub_810FC18
-
- thumb_func_start sub_810FCB0
-sub_810FCB0: @ 810FCB0
- push {r4,r5,lr}
- movs r3, 0
- movs r2, 0
- ldr r0, _0810FCE4 @ =gSaveBlock1 + 0x13C2
- ldrh r4, [r0]
- movs r5, 0x1
-_0810FCBC:
- adds r1, r2, 0
- adds r1, 0x8
- adds r0, r4, 0
- asrs r0, r1
- ands r0, r5
- cmp r0, 0
- beq _0810FCD0
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_0810FCD0:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x7
- bls _0810FCBC
- adds r0, r3, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0810FCE4: .4byte gSaveBlock1 + 0x13C2
- thumb_func_end sub_810FCB0
-
- thumb_func_start sub_810FCE8
-sub_810FCE8: @ 810FCE8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- ldr r2, _0810FD08 @ =gSaveBlock2
- ldrh r1, [r2, 0xE]
- ldr r0, _0810FD0C @ =0x000003e6
- cmp r1, r0
- bhi _0810FD54
- ldr r7, _0810FD10 @ =gSaveBlock1
- adds r6, r2, 0
- ldr r0, _0810FD14 @ =0x000013c4
- adds r0, r7
- mov r8, r0
- b _0810FD36
- .align 2, 0
-_0810FD08: .4byte gSaveBlock2
-_0810FD0C: .4byte 0x000003e6
-_0810FD10: .4byte gSaveBlock1
-_0810FD14: .4byte 0x000013c4
-_0810FD18:
- ldrh r1, [r6, 0xE]
- ldr r0, _0810FD4C @ =0x000013c4
- adds r4, r7, r0
- ldrh r0, [r4]
- subs r1, r0
- cmp r1, 0xB
- ble _0810FD54
- bl sub_810FC18
- ldrh r0, [r4]
- adds r0, 0xC
- strh r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0810FD36:
- bl sub_810FCB0
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x4
- bhi _0810FD50
- ldrh r0, [r6, 0xE]
- mov r1, r8
- strh r0, [r1]
- b _0810FD54
- .align 2, 0
-_0810FD4C: .4byte 0x000013c4
-_0810FD50:
- cmp r5, 0x8
- bne _0810FD18
-_0810FD54:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FCE8
-
- thumb_func_start sub_810FD60
-sub_810FD60: @ 810FD60
- ldr r0, _0810FD74 @ =gSaveBlock1
- ldr r1, _0810FD78 @ =0x000013c2
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _0810FD7C @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- asrs r0, r1
- movs r1, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_0810FD74: .4byte gSaveBlock1
-_0810FD78: .4byte 0x000013c2
-_0810FD7C: .4byte gSpecialVar_0x8004
- thumb_func_end sub_810FD60
-
- thumb_func_start sub_810FD80
-sub_810FD80: @ 810FD80
- ldr r2, _0810FDA4 @ =gSaveBlock1
- ldr r0, _0810FDA8 @ =0x000013c2
- adds r2, r0
- ldrh r1, [r2]
- movs r3, 0x80
- lsls r3, 6
- adds r0, r3, 0
- orrs r0, r1
- movs r3, 0x80
- lsls r3, 1
- adds r1, r3, 0
- orrs r0, r1
- movs r3, 0x80
- lsls r3, 3
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- bx lr
- .align 2, 0
-_0810FDA4: .4byte gSaveBlock1
-_0810FDA8: .4byte 0x000013c2
- thumb_func_end sub_810FD80
-
- thumb_func_start sub_810FDAC
-sub_810FDAC: @ 810FDAC
- push {lr}
- movs r3, 0
- movs r2, 0
- ldr r0, _0810FDC8 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- subs r0, 0x8
- cmp r0, 0x7
- bhi _0810FE0C
- lsls r0, 2
- ldr r1, _0810FDCC @ =_0810FDD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810FDC8: .4byte gSpecialVar_0x8004
-_0810FDCC: .4byte _0810FDD0
- .align 2, 0
-_0810FDD0:
- .4byte _0810FE0C
- .4byte _0810FE0C
- .4byte _0810FDF0
- .4byte _0810FDF6
- .4byte _0810FDFC
- .4byte _0810FE02
- .4byte _0810FE08
- .4byte _0810FE0C
-_0810FDF0:
- movs r3, 0
- movs r2, 0x3
- b _0810FE0C
-_0810FDF6:
- movs r3, 0
- movs r2, 0x1
- b _0810FE0C
-_0810FDFC:
- movs r3, 0x1
- movs r2, 0
- b _0810FE0C
-_0810FE02:
- movs r3, 0
- movs r2, 0x4
- b _0810FE0C
-_0810FE08:
- movs r3, 0x1
- movs r2, 0x5
-_0810FE0C:
- ldr r0, _0810FE18 @ =gSaveBlock1 + 0x30B8
- adds r1, r3, 0
- bl sub_810FE1C
- pop {r0}
- bx r0
- .align 2, 0
-_0810FE18: .4byte gSaveBlock1 + 0x30B8
- thumb_func_end sub_810FDAC
-
- thumb_func_start sub_810FE1C
-sub_810FE1C: @ 810FE1C
- push {r4,lr}
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsrs r1, 20
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0810FED0
- cmp r2, 0x5
- bhi _0810FEBC
- lsls r0, r2, 2
- ldr r1, _0810FE3C @ =_0810FE40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0810FE3C: .4byte _0810FE40
- .align 2, 0
-_0810FE40:
- .4byte _0810FEBC
- .4byte _0810FE58
- .4byte _0810FE6C
- .4byte _0810FE80
- .4byte _0810FE94
- .4byte _0810FEA8
-_0810FE58:
- ldr r0, _0810FE64 @ =gStringVar1
- ldr r1, _0810FE68 @ =gOtherText_Steven
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FE64: .4byte gStringVar1
-_0810FE68: .4byte gOtherText_Steven
-_0810FE6C:
- ldr r0, _0810FE78 @ =gStringVar1
- ldr r1, _0810FE7C @ =gOtherText_Brawly
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FE78: .4byte gStringVar1
-_0810FE7C: .4byte gOtherText_Brawly
-_0810FE80:
- ldr r0, _0810FE8C @ =gStringVar1
- ldr r1, _0810FE90 @ =gOtherText_Winona
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FE8C: .4byte gStringVar1
-_0810FE90: .4byte gOtherText_Winona
-_0810FE94:
- ldr r0, _0810FEA0 @ =gStringVar1
- ldr r1, _0810FEA4 @ =gOtherText_Phoebe
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FEA0: .4byte gStringVar1
-_0810FEA4: .4byte gOtherText_Phoebe
-_0810FEA8:
- ldr r0, _0810FEB4 @ =gStringVar1
- ldr r1, _0810FEB8 @ =gOtherText_Glacia
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FEB4: .4byte gStringVar1
-_0810FEB8: .4byte gOtherText_Glacia
-_0810FEBC:
- ldr r0, _0810FEC8 @ =gStringVar1
- ldr r1, _0810FECC @ =gOtherText_Wallace
- bl StringCopy
- b _0810FEF2
- .align 2, 0
-_0810FEC8: .4byte gStringVar1
-_0810FECC: .4byte gOtherText_Wallace
-_0810FED0:
- ldr r4, _0810FEF8 @ =gStringVar1
- adds r0, r4, 0
- movs r2, 0x7
- bl StringCopyN
- movs r0, 0xFF
- strb r0, [r4, 0x7]
- ldrb r0, [r4]
- cmp r0, 0xFC
- bne _0810FEF2
- ldrb r0, [r4, 0x1]
- cmp r0, 0x15
- bne _0810FEF2
- adds r0, r4, 0
- movs r1, 0x1
- bl ConvertInternationalString
-_0810FEF2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810FEF8: .4byte gStringVar1
- thumb_func_end sub_810FE1C
-
- thumb_func_start sub_810FEFC
-sub_810FEFC: @ 810FEFC
- push {lr}
- ldr r0, _0810FF20 @ =0x00004095
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bne _0810FF2C
- bl sub_810FA74
- ldr r0, _0810FF24 @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0810FF28
- bl sub_810FB9C
- b _0810FF2C
- .align 2, 0
-_0810FF20: .4byte 0x00004095
-_0810FF24: .4byte gBattleOutcome
-_0810FF28:
- bl sub_810FC18
-_0810FF2C:
- pop {r0}
- bx r0
- thumb_func_end sub_810FEFC
-
- thumb_func_start sub_810FF30
-sub_810FF30: @ 810FF30
- ldr r0, _0810FF40 @ =gSaveBlock1
- ldr r1, _0810FF44 @ =0x000013c2
- adds r0, r1
- ldrh r0, [r0]
- lsrs r0, 7
- movs r1, 0x1
- ands r0, r1
- bx lr
- .align 2, 0
-_0810FF40: .4byte gSaveBlock1
-_0810FF44: .4byte 0x000013c2
- thumb_func_end sub_810FF30
-
- thumb_func_start sub_810FF48
-sub_810FF48: @ 810FF48
- ldr r0, _0810FF58 @ =gSaveBlock1
- ldr r1, _0810FF5C @ =0x000013c2
- adds r0, r1
- ldrh r2, [r0]
- movs r1, 0x80
- orrs r1, r2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0810FF58: .4byte gSaveBlock1
-_0810FF5C: .4byte 0x000013c2
- thumb_func_end sub_810FF48
-
- thumb_func_start sub_810FF60
-sub_810FF60: @ 810FF60
- push {lr}
- ldr r0, _0810FF74 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_810FB10
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0810FF74: .4byte gSpecialVar_0x8004
- thumb_func_end sub_810FF60
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/field_specials.s b/data/field_specials.s
deleted file mode 100644
index 3e76bbe3f..000000000
--- a/data/field_specials.s
+++ /dev/null
@@ -1,75 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083F8358:: @ 83F8358
- .byte 7, 9, 8, 10
-
-gUnknown_083F835C:: @ 83F835C
- .byte 0, 1
- .byte 1, 0
- .byte 0, -1
- .byte -1, 0
-
- .align 2
-gUnknown_083F8364:: @ 83F8364
- .byte 7, 16, 0, 0
- .byte 15, 18, 0, 0
- .byte 11, 22, 0, 0
-
-gUnknown_083F8370:: @ 83F8370
- .byte 0, 1, 1, 1, 1
-
- .align 1
-gUnknown_083F8376:: @ 83F8376
- .2byte 0x218, 0x219, 0x21A, 0x21B, 0x21C
-
- .align 2
-gUnknown_083F8380:: @ 83F8380
- .4byte OtherText_1F
- .4byte OtherText_2F
- .4byte OtherText_3F
- .4byte OtherText_4F
- .4byte OtherText_5F
- .4byte OtherText_6F
- .4byte OtherText_7F
- .4byte OtherText_8F
- .4byte OtherText_9F
- .4byte OtherText_10F
- .4byte OtherText_11F
- .4byte OtherText_B1F
- .4byte OtherText_B2F
- .4byte OtherText_B3F
- .4byte OtherText_B4F
- .4byte OtherText_Rooftop
-
- .align 2
-gUnknown_083F83C0:: @ 83F83C0
- .4byte OtherText_BlueFlute
- .4byte OtherText_YellowFlute
- .4byte OtherText_RedFlute
- .4byte OtherText_WhiteFlute
- .4byte OtherText_BlackFlute
- .4byte OtherText_PrettyChair
- .4byte OtherText_PrettyDesk
- .4byte gOtherText_CancelNoTerminator
-
-gUnknown_083F83E0:: @ 83F83E0
- .byte 12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6
-
-gUnknown_083F83EC:: @ 83F83EC
- .byte 0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5
-
-gUnknown_083F83F8:: @ 83F83F8
- .byte 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5
-
-gUnknown_083F8404:: @ 83F8404
- .byte 2, 1, 2, 1
-
-gUnknown_083F8408:: @ 83F8408
- .byte 8, 9, 10, 11, 12, 13, 14, 15
-
-gUnknown_083F8410:: @ 83F8410
- .byte 8, 13, 14, 11, 10, 12, 15, 9
diff --git a/include/battle_tower.h b/include/battle_tower.h
index 193905b93..75ea405ab 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -3,5 +3,6 @@
void sub_8134AC0(void *);
u16 sub_8135D3C(u8);
+void sub_8135FF4(u8*);
#endif // GUARD_BATTLE_TOWER_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index d051ea097..6595a51ca 100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -426,5 +426,8 @@ u8 sub_8060B38(u8);
u8 sub_8060B64(u8);
u8 GetOppositeDirection(u8);
void sub_80634D0(struct MapObject *, struct Sprite *);
+u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
+void CameraObjectSetFollowedObjectId(u8);
+u8 sub_805ADDC(u8);
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_region_map.h b/include/field_region_map.h
index 93b8c6d68..a7e81b418 100644
--- a/include/field_region_map.h
+++ b/include/field_region_map.h
@@ -1,6 +1,7 @@
#ifndef GUARD_FIELD_REGION_MAP_H
#define GUARD_FIELD_REGION_MAP_H
+void FieldInitRegionMap(void(void));
void CB2_FieldInitRegionMap(void);
void VBlankCB_FieldRegionMap(void);
void CB2_FieldRegionMap(void);
diff --git a/include/field_specials.h b/include/field_specials.h
index d0eb12065..710f0a2a0 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -1,6 +1,30 @@
#ifndef GUARD_FIELD_SPECIALS_H
#define GUARD_FIELD_SPECIALS_H
+struct ElevatorMenu {
+ u8 var0;
+ s8 var1;
+ s8 var2;
+ u8 var3;
+};
+
+extern struct ElevatorMenu gUnknown_03000760[20];
+extern struct WarpData gUnknown_020297F0;
+extern u8 gBattleOutcome;
+
+extern u16 gScriptResult;
+extern u8 gUnknown_02039250;
+extern u8 gUnknown_02039251;
+extern u32 gUnknown_02039254;
+extern u8 gUnknown_02039258;
+extern u8 gUnknown_02039259;
+extern u8 gUnknown_0203925A;
+extern u8 gUnknown_0203925B;
+extern u8 gUnknown_0203925C;
+
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+
void ResetCyclingRoadChallengeData(void);
bool32 CountSSTidalStep(u16);
u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *);
diff --git a/include/pokeblock.h b/include/pokeblock.h
index c2a1ff860..0d8e965e4 100755
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -30,5 +30,6 @@ void sub_810BA7C(u8);
void ClearPokeblocks(void);
bool8 sub_810CA6C(u8);
s16 sub_810CAE4(u8, const struct Pokeblock *);
+u8 sub_810CB68(u8, u8*);
#endif // GUARD_POKEBLOCK_H
diff --git a/include/pokemon.h b/include/pokemon.h
index be8e4e56d..46366511d 100644..100755
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -409,6 +409,7 @@ extern u8 gStatStageRatios[][2];
extern struct Pokemon gPlayerParty[PARTY_SIZE];
extern struct Pokemon gEnemyParty[PARTY_SIZE];
+extern struct PokemonStorage gPokemonStorage;
void ZeroBoxMonData(struct BoxPokemon *boxMon);
void ZeroMonData(struct Pokemon *mon);
@@ -511,5 +512,6 @@ void sub_8040B8C(void);
void SetWildMonHeldItem(void);
u8 *sub_8040D08();
bool32 sub_8040D3C(u16 species, u8 *name, u8 language);
+u16 GetMonEVCount(struct Pokemon *);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 71259c887..c1b99c367 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -12,5 +12,6 @@ u8 GetMonStatusAndPokerus();
u8 *sub_80A1E9C(u8 *dest, const u8 *src, u8);
u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level);
u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon);
+bool8 CheckPartyPokerus(struct Pokemon *, u8);
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/region_map.h b/include/region_map.h
index 0cef566f6..6dfa4dcf0 100644..100755
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -6,7 +6,7 @@ void sub_80FAB10(void);
u8 sub_80FAB60(void);
void sub_80FBB3C(u16, u16);
void sub_80FBCF0(u32, u8);
-void sub_80FBFB4(u8 *str, u8 region, u8);
+void sub_80FBFB4(u8 *str, u16 region, u8);
void CopyMapName();
u8 *CopyLocationName(u8 *dest, u8 location);
diff --git a/include/script.h b/include/script.h
index 4070a838f..5577fcb01 100644
--- a/include/script.h
+++ b/include/script.h
@@ -56,5 +56,6 @@ void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
u8 *GetRamScript(u8 objectId, u8 *script);
u16 gScriptResult;
+extern u16 gScriptLastTalked;
#endif // GUARD_SCRIPT_H
diff --git a/include/tv.h b/include/tv.h
index 277d29750..3243fff2c 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -18,7 +18,7 @@ enum
TVSHOW_MASS_OUTBREAK = 41,
};
-extern u8 *gUnknown_083D1464[3];
+extern u8 *const gUnknown_083D1464[3];
void ClearTVShowData(void);
u8 sub_80BDEAC(u8 *);
@@ -106,5 +106,6 @@ void DoTVShowTodaysSmartShopper(void);
void sub_80BE3BC(void);
void UpdateTVShowsPerDay(u16);
void sub_80C045C();
+void sub_80BF088(u8, s32);
#endif // GUARD_TV_H
diff --git a/include/vars.h b/include/vars.h
index cb5bb3296..f31ebde84 100644..100755
--- a/include/vars.h
+++ b/include/vars.h
@@ -17,6 +17,7 @@
#define VAR_DAYS 0x4040
+#define VAR_DEPT_STORE_FLOOR 0x4043
#define VAR_POKELOT_PRIZE 0x4045
#define VAR_NATIONAL_DEX 0x4046
#define VAR_SHROOMISH_SIZE_RECORD 0x4047
@@ -31,10 +32,12 @@
#define VAR_0x4054 0x4054
#define VAR_0x4089 0x4089
+#define VAR_0x4095 0x4095
#define VAR_0x4097 0x4097
-
+#define VAR_0x409a 0x409a
#define VAR_PORTHOLE 0x40B4
#define VAR_0x40BC 0x40BC
+#define VAR_0x40C2 0x40C2
#endif // GUARD_VARS_H
diff --git a/ld_script.txt b/ld_script.txt
index c12d7a39a..737d9eadd 100755
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -219,7 +219,6 @@ SECTIONS {
src/birch_pc.o(.text);
src/hof_pc.o(.text);
src/field_specials.o(.text);
- asm/field_specials.o(.text);
asm/battle_records.o(.text);
src/battle_records.o(.text);
asm/battle_records.o(.text_8110494);
@@ -441,7 +440,7 @@ SECTIONS {
src/pokeblock.o(.rodata);
data/fldeff_flash.o(.rodata);
src/time_events.o(.rodata);
- data/field_specials.o(.rodata);
+ src/field_specials.o(.rodata);
data/pokedex_area_screen.o(.rodata);
data/evolution_scene.o(.rodata);
data/roulette.o(.rodata);
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index dc5ee6afb..d94c97ff3 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -3104,13 +3104,13 @@ void CameraObjectReset1(void)
}
}
-void CameraObjectSetFollowedObjectId(u8 state)
+void CameraObjectSetFollowedObjectId(u8 spriteId)
{
struct Sprite *cameraSprite = FindCameraObject();
if (cameraSprite != NULL)
{
- cameraSprite->data0 = state;
+ cameraSprite->data0 = spriteId;
CameraObjectReset1();
}
}
diff --git a/src/field_specials.c b/src/field_specials.c
index 2cb2cf795..2b505bbfe 100644..100755
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1,7 +1,14 @@
#include "global.h"
#include "field_specials.h"
#include "diploma.h"
+#include "fieldmap.h"
#include "event_data.h"
+#include "battle_tower.h"
+#include "field_map_obj.h"
+#include "region_map.h"
+#include "field_region_map.h"
+#include "field_message_box.h"
+#include "field_camera.h"
#include "field_player_avatar.h"
#include "main.h"
#include "map_constants.h"
@@ -10,21 +17,30 @@
#include "songs.h"
#include "string_util.h"
#include "strings.h"
+#include "pokeblock.h"
+#include "species.h"
+#include "abilities.h"
+#include "moves.h"
#include "text.h"
#include "wallclock.h"
+#include "tv.h"
+#include "rtc.h"
+#include "link.h"
+#include "songs.h"
+#include "sound.h"
+#include "menu.h"
+#include "starter_choose.h"
+#include "menu_helpers.h"
+#include "battle_tower.h"
+#include "field_weather.h"
+#include "pokemon_summary_screen.h"
+#include "rng.h"
#if ENGLISH
#define CHAR_DECIMAL_SEPARATOR CHAR_PERIOD
#elif GERMAN
#define CHAR_DECIMAL_SEPARATOR CHAR_COMMA
#endif
-
-extern struct WarpData gUnknown_020297F0;
-extern u16 gScriptResult;
-extern u8 gUnknown_02039250;
-extern u8 gUnknown_02039251;
-extern u32 gUnknown_02039254;
-
static void RecordCyclingRoadResults(u32, u8);
void sub_810D6A4(void) {
@@ -144,12 +160,9 @@ void FinishCyclingRoadChallenge(void) {
}
static void RecordCyclingRoadResults(u32 arg0, u8 arg1) {
- u16 high, low;
- u32 record;
-
- high = VarGet(0x4028);
- low = VarGet(0x4029);
- record = high + (low << 16);
+ u16 high = VarGet(0x4028);
+ u16 low = VarGet(0x4029);
+ u32 record = high + (low << 16);
if (record > arg0 || record == 0)
{
@@ -160,12 +173,9 @@ static void RecordCyclingRoadResults(u32 arg0, u8 arg1) {
}
u16 GetRecordedCyclingRoadResults(void) {
- u16 high, low;
- u32 record;
-
- high = VarGet(0x4028);
- low = VarGet(0x4029);
- record = high + (low << 16);
+ u16 high = VarGet(0x4028);
+ u16 low = VarGet(0x4029);
+ u32 record = high + (low << 16);
if (record == 0)
{
@@ -188,3 +198,2168 @@ void UpdateCyclingRoadState(void) {
sav1_set_battle_music_maybe(SE_STOP);
}
}
+
+void SetSSTidalFlag(void)
+{
+ FlagSet(SYS_CRUISE_MODE);
+ *GetVarPointer(VAR_CRUISE_STEP_COUNT) = 0;
+}
+
+void ResetSSTidalFlag(void)
+{
+ FlagReset(SYS_CRUISE_MODE);
+}
+
+bool32 CountSSTidalStep(u16 delta)
+{
+ if (!FlagGet(SYS_CRUISE_MODE) || (*GetVarPointer(VAR_CRUISE_STEP_COUNT) += delta) <= 0xcc)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y)
+{
+ u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT);
+ switch (*GetVarPointer(VAR_PORTHOLE))
+ {
+ case 1:
+ case 8:
+ return 1;
+ case 3:
+ case 9:
+ return 4;
+ case 4:
+ case 5:
+ return 2;
+ case 6:
+ case 10:
+ return 3;
+ case 2:
+ if (*varCruiseStepCount < 60)
+ {
+ *mapNum = MAP_ID_ROUTE134;
+ *x = *varCruiseStepCount + 19;
+ }
+ else if (*varCruiseStepCount < 140)
+ {
+ *mapNum = MAP_ID_ROUTE133;
+ *x = *varCruiseStepCount - 60;
+ }
+ else
+ {
+ *mapNum = MAP_ID_ROUTE132;
+ *x = *varCruiseStepCount - 140;
+ }
+ break;
+ case 7:
+ if (*varCruiseStepCount < 66)
+ {
+ *mapNum = MAP_ID_ROUTE132;
+ *x = 65 - *varCruiseStepCount;
+ }
+ else if (*varCruiseStepCount < 146) {
+ *mapNum = MAP_ID_ROUTE133;
+ *x = 145 - *varCruiseStepCount;
+ }
+ else
+ {
+ *mapNum = MAP_ID_ROUTE134;
+ *x = 224 - *varCruiseStepCount;
+ }
+ break;
+ }
+ *mapGroup = MAP_GROUP_ROUTE132;
+ *y = 20;
+ return 0;
+}
+
+u8 GetLinkPartnerNames(void)
+{
+ u8 i;
+ u8 j = 0;
+ u8 myLinkPlayerNumber = sub_8008218();
+ u8 nLinkPlayers = sub_800820C();
+ for (i=0; i<nLinkPlayers; i++)
+ {
+ if (myLinkPlayerNumber != i)
+ {
+ StringCopy(gUnknown_083D1464[j], gLinkPlayers[i].name);
+ j++;
+ }
+ }
+ return nLinkPlayers;
+}
+
+const u8 gUnknown_083F8358[4] = {7, 9, 8, 10};
+const s8 gUnknown_083F835C[4][2] = {
+ { 0, 1},
+ { 1, 0},
+ { 0, -1},
+ {-1, 0}
+};
+
+void SpawnBerryBlenderLinkPlayerSprites(void)
+{
+ u8 unknown_083F8358[4];
+ u8 unknown_083F835C[4][2];
+ u8 myLinkPlayerNumber;
+ u8 playerDirectionLowerNybble;
+ u8 rivalAvatarGraphicsId;
+ u8 i;
+ u8 j = 0;
+ s16 x = 0;
+ s16 y = 0;
+
+ memcpy(unknown_083F8358, gUnknown_083F8358, sizeof gUnknown_083F8358);
+ memcpy(unknown_083F835C, gUnknown_083F835C, sizeof gUnknown_083F835C);
+ myLinkPlayerNumber = sub_8008218();
+ playerDirectionLowerNybble = player_get_direction_lower_nybble();
+ switch (playerDirectionLowerNybble)
+ {
+ case DIR_WEST:
+ j = 2;
+ x = gSaveBlock1.pos.x - 1;
+ y = gSaveBlock1.pos.y;
+ break;
+ case DIR_NORTH:
+ j = 1;
+ x = gSaveBlock1.pos.x;
+ y = gSaveBlock1.pos.y - 1;
+ break;
+ case DIR_EAST:
+ x = gSaveBlock1.pos.x + 1;
+ y = gSaveBlock1.pos.y;
+ break;
+ case DIR_SOUTH:
+ j = 3;
+ x = gSaveBlock1.pos.x;
+ y = gSaveBlock1.pos.y + 1;
+ }
+ for (i=0; i<gSpecialVar_0x8004; i++)
+ {
+ if (myLinkPlayerNumber != i)
+ {
+ rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gLinkPlayers[i].gender);
+ SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, (s8)unknown_083F835C[j][0] + x + 7, (s8)unknown_083F835C[j][1] + y + 7, 0);
+ j++;
+ if (j == 4)
+ {
+ j = 0;
+ }
+ }
+ }
+}
+
+struct Coords8 {
+ u8 x;
+ u8 y;
+};
+
+const struct Coords8 gUnknown_083F8364[3] = {
+ { 7, 16},
+ {15, 18},
+ {11, 22}
+};
+
+void MauvilleGymSpecial1(void)
+{
+ u8 i;
+ for (i=0; i<3; i++)
+ {
+ if (i == gSpecialVar_0x8004)
+ {
+ MapGridSetMetatileIdAt(gUnknown_083F8364[i].x, gUnknown_083F8364[i].y, 0x206);
+ }
+ else
+ {
+ MapGridSetMetatileIdAt(gUnknown_083F8364[i].x, gUnknown_083F8364[i].y, 0x205);
+ }
+ }
+}
+
+void MauvilleGymSpecial2(void)
+{
+ int x, y;
+ for (y=12; y<24; y++)
+ {
+ for (x=7; x<16; x++)
+ {
+ switch (MapGridGetMetatileIdAt(x, y))
+ {
+ case 0x220:
+ MapGridSetMetatileIdAt(x, y, 0x230);
+ break;
+ case 0x221:
+ MapGridSetMetatileIdAt(x, y, 0x231);
+ break;
+ case 0x228:
+ MapGridSetMetatileIdAt(x, y, 0x238);
+ break;
+ case 0x229:
+ MapGridSetMetatileIdAt(x, y, 0x239);
+ break;
+ case 0x230:
+ MapGridSetMetatileIdAt(x, y, 0x220);
+ break;
+ case 0x231:
+ MapGridSetMetatileIdAt(x, y, 0x221);
+ break;
+ case 0x238:
+ MapGridSetMetatileIdAt(x, y, 0xe28);
+ break;
+ case 0x239:
+ MapGridSetMetatileIdAt(x, y, 0xe29);
+ break;
+ case 0x222:
+ MapGridSetMetatileIdAt(x, y, 0x232);
+ break;
+ case 0x223:
+ MapGridSetMetatileIdAt(x, y, 0x233);
+ break;
+ case 0x22a:
+ MapGridSetMetatileIdAt(x, y, 0x23a);
+ break;
+ case 0x22b:
+ MapGridSetMetatileIdAt(x, y, 0x23b);
+ break;
+ case 0x232:
+ MapGridSetMetatileIdAt(x, y, 0x222);
+ break;
+ case 0x233:
+ MapGridSetMetatileIdAt(x, y, 0x223);
+ break;
+ case 0x23a:
+ MapGridSetMetatileIdAt(x, y, 0xe2a);
+ break;
+ case 0x23b:
+ MapGridSetMetatileIdAt(x, y, 0xe2b);
+ break;
+ case 0x240:
+ MapGridSetMetatileIdAt(x, y, 0xe42);
+ break;
+ case 0x248:
+ MapGridSetMetatileIdAt(x, y, 0x21a);
+ break;
+ case 0x241:
+ MapGridSetMetatileIdAt(x, y, 0xe43);
+ break;
+ case 0x249:
+ MapGridSetMetatileIdAt(x, y, 0x21a);
+ break;
+ case 0x242:
+ MapGridSetMetatileIdAt(x, y, 0xe40);
+ break;
+ case 0x21a:
+ if (MapGridGetMetatileIdAt(x, y - 1) == 0x240)
+ {
+ MapGridSetMetatileIdAt(x, y, 0xe48);
+ }
+ else
+ {
+ MapGridSetMetatileIdAt(x, y, 0xe49);
+ }
+ break;
+ case 0x243:
+ MapGridSetMetatileIdAt(x, y, 0xe41);
+ break;
+ case 0x251:
+ MapGridSetMetatileIdAt(x, y, 0xe50);
+ break;
+ case 0x250:
+ MapGridSetMetatileIdAt(x, y, 0x251);
+ break;
+ }
+ }
+ }
+}
+
+void MauvilleGymSpecial3(void)
+{
+ int i, x, y;
+ const struct Coords8 *switchCoords = gUnknown_083F8364;
+ for (i=ARRAY_COUNT(gUnknown_083F8364)-1; i>=0; i--)
+ {
+ MapGridSetMetatileIdAt(switchCoords->x, switchCoords->y, 0x206);
+ switchCoords++;
+ }
+ for (y=12; y<24; y++)
+ {
+ for (x=7; x<16; x++)
+ {
+ switch (MapGridGetMetatileIdAt(x, y))
+ {
+ case 0x220:
+ MapGridSetMetatileIdAt(x, y, 0x230);
+ break;
+ case 0x221:
+ MapGridSetMetatileIdAt(x, y, 0x231);
+ break;
+ case 0x228:
+ MapGridSetMetatileIdAt(x, y, 0x238);
+ break;
+ case 0x229:
+ MapGridSetMetatileIdAt(x, y, 0x239);
+ break;
+ case 0x222:
+ MapGridSetMetatileIdAt(x, y, 0x232);
+ break;
+ case 0x223:
+ MapGridSetMetatileIdAt(x, y, 0x233);
+ break;
+ case 0x22a:
+ MapGridSetMetatileIdAt(x, y, 0x23a);
+ break;
+ case 0x22b:
+ MapGridSetMetatileIdAt(x, y, 0x23b);
+ break;
+ case 0x240:
+ MapGridSetMetatileIdAt(x, y, 0xe42);
+ break;
+ case 0x241:
+ MapGridSetMetatileIdAt(x, y, 0xe43);
+ break;
+ case 0x248:
+ case 0x249:
+ MapGridSetMetatileIdAt(x, y, 0x21a);
+ break;
+ case 0x250:
+ MapGridSetMetatileIdAt(x, y, 0x251);
+ break;
+ }
+ }
+ }
+}
+
+static void Task_PetalburgGym(u8);
+static void PetalburgGymFunc(u8, u16);
+const u8 gUnknown_083F8370[] = {0, 1, 1, 1, 1};
+const u16 gUnknown_083F8376[] = {0x218, 0x219, 0x21a, 0x21b, 0x21c};
+
+void PetalburgGymSpecial1(void)
+{
+ gUnknown_02039258 = 0;
+ gUnknown_02039259 = 0;
+ PlaySE(SE_KI_GASYAN);
+ CreateTask(Task_PetalburgGym, 8);
+}
+
+static void Task_PetalburgGym(u8 taskId)
+{
+ if (gUnknown_083F8370[gUnknown_02039259] == gUnknown_02039258)
+ {
+ PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_083F8376[gUnknown_02039259]);
+ gUnknown_02039258 = 0;
+ if ((++gUnknown_02039259) == 5)
+ {
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ }
+ else
+ {
+ gUnknown_02039258++;
+ }
+}
+
+static void PetalburgGymFunc(u8 a0, u16 a1)
+{
+ u16 x[4];
+ u16 y[4];
+ u8 i;
+ u8 nDoors = 0;
+ switch (a0)
+ {
+ case 1:
+ nDoors = 2;
+ x[0] = 1;
+ x[1] = 7;
+ y[0] = 0x68;
+ y[1] = 0x68;
+ break;
+ case 2:
+ nDoors = 2;
+ x[0] = 1;
+ x[1] = 7;
+ y[0] = 0x4e;
+ y[1] = 0x4e;
+ break;
+ case 3:
+ nDoors = 2;
+ x[0] = 1;
+ x[1] = 7;
+ y[0] = 0x5b;
+ y[1] = 0x5b;
+ break;
+ case 4:
+ nDoors = 1;
+ x[0] = 7;
+ y[0] = 0x27;
+ break;
+ case 5:
+ nDoors = 2;
+ x[0] = 1;
+ x[1] = 7;
+ y[0] = 0x34;
+ y[1] = 0x34;
+ break;
+ case 6:
+ nDoors = 1;
+ x[0] = 1;
+ y[0] = 0x41;
+ break;
+ case 7:
+ nDoors = 1;
+ x[0] = 7;
+ y[0] = 0xd;
+ break;
+ case 8:
+ nDoors = 1;
+ x[0] = 1;
+ y[0] = 0x1a;
+ break;
+ }
+ for (i=0; i<nDoors; i++)
+ {
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 7, a1 | 0xc00);
+ MapGridSetMetatileIdAt(x[i] + 7, y[i] + 8, (a1 + 8) | 0xc00);
+ }
+ DrawWholeMapView();
+}
+
+void PetalburgGymSpecial2(void)
+{
+ PetalburgGymFunc(gSpecialVar_0x8004, gUnknown_083F8376[4]);
+}
+
+void ShowFieldMessageStringVar4(void)
+{
+ ShowFieldMessage(gStringVar4);
+}
+
+void StorePlayerCoordsInVars(void)
+{
+ gSpecialVar_0x8004 = gSaveBlock1.pos.x;
+ gSpecialVar_0x8005 = gSaveBlock1.pos.y;
+}
+
+u8 GetPlayerTrainerIdOnesDigit(void)
+{
+ return (u16)((gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0]) % 10;
+}
+
+void GetPlayerBigGuyGirlString(void)
+{
+ if (gSaveBlock2.playerGender == MALE)
+ {
+ StringCopy(gStringVar1, gOtherText_BigGuy);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gOtherText_BigGirl);
+ }
+}
+
+void GetRivalSonDaughterString(void)
+{
+ if (gSaveBlock2.playerGender == MALE)
+ {
+ StringCopy(gStringVar1, gOtherText_Daughter);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gOtherText_Son);
+ }
+}
+
+u8 sub_810E300(void)
+{
+ return gBattleOutcome;
+}
+
+void CableCarWarp(void)
+{
+ if (gSpecialVar_0x8004 != 0)
+ {
+ warp1_set(MAP_GROUP_ROUTE112_CABLE_CAR_STATION, MAP_ID_ROUTE112_CABLE_CAR_STATION, -1, 6, 4);
+ }
+ else
+ {
+ warp1_set(MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION, MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION, -1, 6, 4);
+ }
+}
+
+void SetFlagInVar(void)
+{
+ FlagSet(gSpecialVar_0x8004);
+}
+
+u16 GetWeekCount(void)
+{
+ u16 weekCount = gLocalTime.days / 7;
+ if (weekCount > 9999)
+ {
+ weekCount = 9999;
+ }
+ return weekCount;
+}
+
+u8 GetLeadMonFriendshipScore(void)
+{
+ struct Pokemon *pokemon = &gPlayerParty[GetLeadMonIndex()];
+ if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) == 255)
+ {
+ return 6;
+ }
+ if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 200)
+ {
+ return 5;
+ }
+ if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 150)
+ {
+ return 4;
+ }
+ if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 100)
+ {
+ return 3;
+ }
+ if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 50)
+ {
+ return 2;
+ }
+ if (GetMonData(pokemon, MON_DATA_FRIENDSHIP) >= 1)
+ {
+ return 1;
+ }
+ return 0;
+}
+
+void CB2_FieldShowRegionMap(void)
+{
+ FieldInitRegionMap(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+void FieldShowRegionMap(void)
+{
+ SetMainCallback2(CB2_FieldShowRegionMap);
+}
+
+static void Task_PCTurnOnEffect(u8);
+static void PCTurnOffEffect_0(struct Task *);
+static void PCTurnOffEffect_1(s16, s8, s8);
+static void PCTurnOffEffect(void);
+
+void DoPCTurnOnEffect(void)
+{
+ if (FuncIsActiveTask(Task_PCTurnOnEffect) != TRUE)
+ {
+ u8 taskId = CreateTask(Task_PCTurnOnEffect, 8);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = taskId;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 0;
+ }
+}
+
+static void Task_PCTurnOnEffect(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ if (task->data[0] == 0)
+ {
+ PCTurnOffEffect_0(task);
+ }
+}
+
+static void PCTurnOffEffect_0(struct Task *task)
+{
+ u8 playerDirectionLowerNybble;
+ s8 dx = 0;
+ s8 dy = 0;
+ if (task->data[3] == 6)
+ {
+ task->data[3] = 0;
+ playerDirectionLowerNybble = player_get_direction_lower_nybble();
+ switch (playerDirectionLowerNybble)
+ {
+ case DIR_NORTH:
+ dx = 0;
+ dy = -1;
+ break;
+ case DIR_WEST:
+ dx = -1;
+ dy = -1;
+ break;
+ case DIR_EAST:
+ dx = 1;
+ dy = -1;
+ break;
+ }
+ PCTurnOffEffect_1(task->data[4], dx, dy);
+ DrawWholeMapView();
+ task->data[4] ^= 1;
+ if ((++task->data[2]) == 5)
+ {
+ DestroyTask(task->data[1]);
+ }
+ }
+ task->data[3]++;
+}
+
+static void PCTurnOffEffect_1(s16 flag, s8 dx, s8 dy)
+{
+ u16 tileId = 0;
+ if (flag != 0)
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ tileId = 0x4;
+ }
+ else if (gSpecialVar_0x8004 == 1)
+ {
+ tileId = 0x25a;
+ }
+ else if (gSpecialVar_0x8004 == 2)
+ {
+ tileId = 0x259;
+ }
+ }
+ else
+ {
+ if (gSpecialVar_0x8004 == 0)
+ {
+ tileId = 0x5;
+ }
+ else if (gSpecialVar_0x8004 == 1)
+ {
+ tileId = 0x27f;
+ }
+ else if (gSpecialVar_0x8004 == 2)
+ {
+ tileId = 0x27e;
+ }
+ }
+ MapGridSetMetatileIdAt(gSaveBlock1.pos.x + dx + 7, gSaveBlock1.pos.y + dy + 7, tileId | 0xc00);
+}
+
+void DoPCTurnOffEffect(void)
+{
+ PCTurnOffEffect();
+}
+
+static void PCTurnOffEffect(void)
+{
+ s8 dx = 0;
+ s8 dy = 0;
+ u16 tileId = 0;
+ u8 playerDirectionLowerNybble = player_get_direction_lower_nybble();
+ switch (playerDirectionLowerNybble)
+ {
+ case DIR_NORTH:
+ dx = 0;
+ dy = -1;
+ break;
+ case DIR_WEST:
+ dx = -1;
+ dy = -1;
+ break;
+ case DIR_EAST:
+ dx = 1;
+ dy = -1;
+ break;
+ }
+ if (gSpecialVar_0x8004 == 0)
+ {
+ tileId = 0x4;
+ }
+ else if (gSpecialVar_0x8004 == 1)
+ {
+ tileId = 0x25a;
+ }
+ else if (gSpecialVar_0x8004 == 2)
+ {
+ tileId = 0x259;
+ }
+ MapGridSetMetatileIdAt(gSaveBlock1.pos.x + dx + 7, gSaveBlock1.pos.y + dy + 7, tileId | 0xc00);
+ DrawWholeMapView();
+}
+
+static void Task_LotteryCornerComputerEffect(u8);
+static void LotteryCornerComputerEffect(struct Task *);
+
+void DoLotteryCornerComputerEffect(void)
+{
+ if (FuncIsActiveTask(Task_LotteryCornerComputerEffect) != TRUE)
+ {
+ u8 taskId = CreateTask(Task_LotteryCornerComputerEffect, 8);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = taskId;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 0;
+ }
+}
+
+static void Task_LotteryCornerComputerEffect(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ if (task->data[0] == 0)
+ {
+ LotteryCornerComputerEffect(task);
+ }
+}
+
+static void LotteryCornerComputerEffect(struct Task *task)
+{
+ if (task->data[3] == 6)
+ {
+ task->data[3] = 0;
+ if (task->data[4] != 0)
+ {
+ MapGridSetMetatileIdAt(18, 8, 0xe9d);
+ MapGridSetMetatileIdAt(18, 9, 0xea5);
+ }
+ else
+ {
+ MapGridSetMetatileIdAt(18, 8, 0xe58);
+ MapGridSetMetatileIdAt(18, 9, 0xe60);
+ }
+ DrawWholeMapView();
+ task->data[4] ^= 1;
+ if ((++task->data[2]) == 5)
+ {
+ DestroyTask(task->data[1]);
+ }
+ }
+ task->data[3]++;
+}
+
+void EndLotteryCornerComputerEffect(void)
+{
+ MapGridSetMetatileIdAt(18, 8, 0xe9d);
+ MapGridSetMetatileIdAt(18, 9, 0xea5);
+ DrawWholeMapView();
+}
+
+static void sub_810E874(void);
+void sub_810E944(void);
+void sub_810E984(u8);
+bool8 sub_810EAC8(u8, u8);
+void sub_810EB90(u8, u8);
+void sub_810EBEC(void);
+void sub_810EC34(u8);
+void sub_810EC9C(u8);
+void sub_810ECB0(void);
+void sub_810ECD4(void);
+void sub_810ECFC(void);
+void sub_810ED40(u8);
+void sub_810ED60(struct Task *);
+void sub_810EEDC(void);
+
+const u8 *const gUnknown_083F8380[] = {
+ OtherText_1F,
+ OtherText_2F,
+ OtherText_3F,
+ OtherText_4F,
+ OtherText_5F,
+ OtherText_6F,
+ OtherText_7F,
+ OtherText_8F,
+ OtherText_9F,
+ OtherText_10F,
+ OtherText_11F,
+ OtherText_B1F,
+ OtherText_B2F,
+ OtherText_B3F,
+ OtherText_B4F,
+ OtherText_Rooftop
+};
+
+void SetDepartmentStoreFloorVar(void)
+{
+ u8 deptStoreFloor;
+ switch (gSaveBlock1.warp2.mapNum)
+ {
+ case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F:
+ deptStoreFloor = 0;
+ break;
+ case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F:
+ deptStoreFloor = 1;
+ break;
+ case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F:
+ deptStoreFloor = 2;
+ break;
+ case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F:
+ deptStoreFloor = 3;
+ break;
+ case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F:
+ deptStoreFloor = 4;
+ break;
+ case MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP:
+ deptStoreFloor = 15;
+ break;
+ default:
+ deptStoreFloor = 0;
+ break;
+ }
+ VarSet(VAR_DEPT_STORE_FLOOR, deptStoreFloor);
+}
+
+void ScriptAddElevatorMenuItem(u8 a0, u8 a1, u8 a2, u8 a3)
+{
+ u8 i;
+ if (gSpecialVar_0x8004 == 0)
+ {
+ for (i=0; i<20; i++)
+ {
+ gUnknown_03000760[i].var0 = 16;
+ }
+ }
+ gUnknown_03000760[gSpecialVar_0x8004].var0 = a0;
+ gUnknown_03000760[gSpecialVar_0x8004].var1 = a1;
+ gUnknown_03000760[gSpecialVar_0x8004].var2 = a2;
+ gUnknown_03000760[gSpecialVar_0x8004].var3 = a3;
+ gSpecialVar_0x8004++;
+}
+
+void ScriptShowElevatorMenu(void)
+{
+ u8 i = 0;
+ gUnknown_0203925A = 0;
+ gUnknown_0203925B = 0;
+ ScriptAddElevatorMenuItem(16, 0, 0, 0);
+ while (gUnknown_03000760[i].var0 != 16)
+ {
+ gUnknown_0203925A++;
+ i++;
+ }
+ sub_810E874();
+}
+
+static void sub_810E874(void)
+{
+ u8 i;
+ ScriptContext2_Enable();
+ if (gUnknown_0203925A > 5)
+ {
+ MenuDrawTextWindow(0, 0, 8, 11);
+ InitMenu(0, 1, 1, 5, 0, 7);
+ gUnknown_0203925C = 0;
+ sub_80F944C();
+ LoadScrollIndicatorPalette();
+ sub_810ECD4();
+ }
+ else
+ {
+ MenuDrawTextWindow(0, 0, 8, 2 * gUnknown_0203925A + 1);
+ InitMenu(0, 1, 1, gUnknown_0203925A, 0, 7);
+ }
+ for (i = 0; i < 5 && gUnknown_03000760[i].var0 != 16; i ++)
+ {
+ MenuPrint(gUnknown_083F8380[gUnknown_03000760[i].var0], 1, 2 * i + 1);
+ }
+ sub_810E944();
+ CreateTask(sub_810E984, 8);
+}
+
+void sub_810E944(void)
+{
+ MenuDrawTextWindow(20, 0, 29, 5);
+ sub_8072BD8(gOtherText_NowOn, 21, 1, 64);
+ sub_8072BD8(gUnknown_083F8380[gSpecialVar_0x8005], 21, 3, 64);
+}
+
+void sub_810E984(u8 taskId)
+{
+ u8 curMenuPos;
+ if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0)
+ {
+ gUnknown_0203925B--;
+ curMenuPos = GetMenuCursorPos();
+ MoveMenuCursorNoWrap(-1);
+ sub_810EAC8(curMenuPos, DPAD_UP);
+ }
+ if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1)
+ {
+ gUnknown_0203925B++;
+ curMenuPos = GetMenuCursorPos();
+ MoveMenuCursorNoWrap(+1);
+ sub_810EAC8(curMenuPos, DPAD_DOWN);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ saved_warp2_set_2(0, gUnknown_03000760[gUnknown_0203925B].var1, gUnknown_03000760[gUnknown_0203925B].var2, -1, 2, 1);
+ if (gSpecialVar_0x8005 == gUnknown_0203925B)
+ {
+ gScriptResult = 0;
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(0, 0, 29, 12);
+ sub_810EC9C(taskId);
+ }
+ else
+ {
+ gScriptResult = 1;
+ gSpecialVar_0x8005 = gUnknown_0203925B;
+ sub_810EBEC();
+ FieldObjectTurnByLocalIdAndMap(gScriptLastTalked, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, DIR_SOUTH);
+ sub_810EEDC();
+ MenuZeroFillScreen();
+ DestroyTask(taskId);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gScriptResult = 0;
+ PlaySE(SE_SELECT);
+ sub_810EEDC();
+ MenuZeroFillWindowRect(0, 0, 29, 12);
+ sub_810EC9C(taskId);
+ }
+}
+
+// This function, as written, swaps the roles of r4 and r5 throughout.
+#ifdef NONMATCHING
+bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
+{
+ u8 i;
+ bool8 flag = 0;
+ u8 newPos = 0;
+ if (gUnknown_0203925A < 5)
+ {
+ return FALSE;
+ }
+ if (dpadInput == DPAD_UP)
+ {
+ if (prevMenuPos == 0)
+ {
+ newPos = gUnknown_0203925B;
+ flag = 1;
+ }
+ }
+ else if (dpadInput == DPAD_DOWN)
+ {
+ if (prevMenuPos == 4)
+ {
+ newPos = gUnknown_0203925B - 4;
+ flag = 1;
+ }
+ }
+ if (flag)
+ {
+ sub_810EB90(newPos, 5);
+ MenuFillWindowRectWithBlankTile(2, 1, 7, 10);
+ for (i=0; i<5 && gUnknown_03000760[newPos].var0 != 16; newPos++, i++)
+ {
+ MenuPrint(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1);
+ }
+ }
+ return flag;
+}
+#else
+__attribute__((naked))
+bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r2, r0, 24\n"
+ "\tadds r5, r2, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tadds r3, r1, 0\n"
+ "\tmovs r7, 0\n"
+ "\tmovs r4, 0\n"
+ "\tldr r0, _0810EAEC @ =gUnknown_0203925A\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x4\n"
+ "\tbhi _0810EAF0\n"
+ "\tmovs r0, 0\n"
+ "\tb _0810EB78\n"
+ "\t.align 2, 0\n"
+ "_0810EAEC: .4byte gUnknown_0203925A\n"
+ "_0810EAF0:\n"
+ "\tcmp r1, 0x40\n"
+ "\tbne _0810EB04\n"
+ "\tcmp r2, 0\n"
+ "\tbne _0810EB18\n"
+ "\tldr r0, _0810EB00 @ =gUnknown_0203925B\n"
+ "\tldrb r4, [r0]\n"
+ "\tmovs r7, 0x1\n"
+ "\tb _0810EB1C\n"
+ "\t.align 2, 0\n"
+ "_0810EB00: .4byte gUnknown_0203925B\n"
+ "_0810EB04:\n"
+ "\tcmp r3, 0x80\n"
+ "\tbne _0810EB18\n"
+ "\tcmp r5, 0x4\n"
+ "\tbne _0810EB18\n"
+ "\tldr r0, _0810EB84 @ =gUnknown_0203925B\n"
+ "\tldrb r0, [r0]\n"
+ "\tsubs r0, 0x4\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tmovs r7, 0x1\n"
+ "_0810EB18:\n"
+ "\tcmp r7, 0\n"
+ "\tbeq _0810EB76\n"
+ "_0810EB1C:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x5\n"
+ "\tbl sub_810EB90\n"
+ "\tmovs r0, 0x2\n"
+ "\tmovs r1, 0x1\n"
+ "\tmovs r2, 0x7\n"
+ "\tmovs r3, 0xA\n"
+ "\tbl MenuFillWindowRectWithBlankTile\n"
+ "\tmovs r5, 0\n"
+ "\tldr r2, _0810EB88 @ =gUnknown_03000760\n"
+ "\tlsls r1, r4, 2\n"
+ "\tadds r0, r1, r2\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x10\n"
+ "\tbeq _0810EB76\n"
+ "\tldr r0, _0810EB8C @ =gUnknown_083F8380\n"
+ "\tmov r8, r0\n"
+ "\tadds r6, r2, 0\n"
+ "_0810EB44:\n"
+ "\tadds r0, r1, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r8\n"
+ "\tldr r0, [r0]\n"
+ "\tlsls r2, r5, 1\n"
+ "\tadds r2, 0x1\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl MenuPrint\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tcmp r5, 0x4\n"
+ "\tbhi _0810EB76\n"
+ "\tlsls r1, r4, 2\n"
+ "\tadds r0, r1, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x10\n"
+ "\tbne _0810EB44\n"
+ "_0810EB76:\n"
+ "\tadds r0, r7, 0\n"
+ "_0810EB78:\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_0810EB84: .4byte gUnknown_0203925B\n"
+ "_0810EB88: .4byte gUnknown_03000760\n"
+ "_0810EB8C: .4byte gUnknown_083F8380");
+}
+#endif
+
+void sub_810EB90(u8 newPos, u8 maxItems)
+{
+ if (newPos == 0)
+ {
+ gUnknown_0203925C ^= 0x02;
+ DestroyVerticalScrollIndicator(0);
+ }
+ else
+ {
+ sub_810ECB0();
+ }
+ if (newPos + maxItems < gUnknown_0203925A)
+ {
+ sub_810ECD4();
+ }
+ else if (newPos + maxItems == gUnknown_0203925A)
+ {
+ gUnknown_0203925C ^= 0x01;
+ DestroyVerticalScrollIndicator(1);
+ }
+}
+
+void sub_810EBEC(void)
+{
+ u8 taskId = CreateTask(sub_810EC34, 9);
+ gTasks[taskId].data[0] = 1;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 1;
+ gTasks[taskId].data[5] = 3;
+ SetCameraPanningCallback(NULL);
+ sub_810ECFC();
+ PlaySE(SE_ELEBETA);
+}
+
+void sub_810EC34(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ task->data[1] ++;
+ if (task->data[1] % task->data[5] == 0)
+ {
+ task->data[1] = 0;
+ task->data[2] ++;
+ if (task->data[3] == 0)
+ {
+ task->data[4] = -task->data[4];
+ SetCameraPanning(0, task->data[4]);
+ if (task->data[2] == 23)
+ {
+ PlaySE(SE_PINPON);
+ sub_810EC9C(taskId);
+ InstallCameraPanAheadCallback();
+ }
+ }
+ }
+}
+
+void sub_810EC9C(u8 taskId)
+{
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+void sub_810ECB0(void)
+{
+ if (gUnknown_0203925C >> 1 != 1)
+ {
+ gUnknown_0203925C |= 0x2;
+ CreateVerticalScrollIndicators(0, 0x24, 0x08);
+ }
+}
+
+void sub_810ECD4(void)
+{
+ if ((gUnknown_0203925C & 1) == 0)
+ {
+ gUnknown_0203925C |= 0x1;
+ CreateVerticalScrollIndicators(1, 0x24, 0x48);
+ }
+}
+
+void sub_810ECFC(void)
+{
+ if (FuncIsActiveTask(sub_810ED40) != TRUE)
+ {
+ u8 taskId = CreateTask(sub_810ED40, 8);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = taskId;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = 0;
+ }
+}
+
+void sub_810ED40(u8 taskId)
+{
+ sub_810ED60(&gTasks[taskId]);
+}
+
+void sub_810ED60(struct Task *task)
+{
+ if (task->data[3] == 8)
+ {
+ task->data[3] = 0;
+ if (task->data[4] != 0)
+ {
+ MapGridSetMetatileIdAt( 7, 7, 0xe68);
+ MapGridSetMetatileIdAt( 8, 7, 0xe69);
+ MapGridSetMetatileIdAt( 9, 7, 0xe69);
+ MapGridSetMetatileIdAt(10, 7, 0xe6a);
+ MapGridSetMetatileIdAt( 7, 8, 0xe70);
+ MapGridSetMetatileIdAt( 8, 8, 0xe71);
+ MapGridSetMetatileIdAt( 9, 8, 0xe71);
+ MapGridSetMetatileIdAt(10, 8, 0xe72);
+ MapGridSetMetatileIdAt( 7, 9, 0xe78);
+ MapGridSetMetatileIdAt( 8, 9, 0xe79);
+ MapGridSetMetatileIdAt( 9, 9, 0xe79);
+ MapGridSetMetatileIdAt(10, 9, 0xe7a);
+ }
+ else
+ {
+ MapGridSetMetatileIdAt( 7, 7, 0xe6b);
+ MapGridSetMetatileIdAt( 8, 7, 0xe6c);
+ MapGridSetMetatileIdAt( 9, 7, 0xe6c);
+ MapGridSetMetatileIdAt(10, 7, 0xe6d);
+ MapGridSetMetatileIdAt( 7, 8, 0xe73);
+ MapGridSetMetatileIdAt( 8, 8, 0xe74);
+ MapGridSetMetatileIdAt( 9, 8, 0xe74);
+ MapGridSetMetatileIdAt(10, 8, 0xe75);
+ MapGridSetMetatileIdAt( 7, 9, 0xe7b);
+ MapGridSetMetatileIdAt( 8, 9, 0xe7c);
+ MapGridSetMetatileIdAt( 9, 9, 0xe7c);
+ MapGridSetMetatileIdAt(10, 9, 0xe7d);
+ }
+ DrawWholeMapView();
+ task->data[4] ^= 1;
+ task->data[2]++;
+ if (task->data[2] == 8)
+ {
+ DestroyTask(task->data[1]);
+ }
+ }
+ task->data[3]++;
+}
+
+void sub_810EEDC(void)
+{
+ if ((gUnknown_0203925C & 1) != 0)
+ {
+ DestroyVerticalScrollIndicator(1);
+ }
+ if ((gUnknown_0203925C >> 1) == 1)
+ {
+ DestroyVerticalScrollIndicator(0);
+ }
+ BuyMenuFreeMemory();
+}
+
+void SetTrickHouseEndRoomFlag(void)
+{
+ u16 *specVar = &gSpecialVar_0x8004;
+ u16 flag = 0x259;
+ *specVar = flag;
+ FlagSet(flag);
+}
+
+void ResetTrickHouseEndRoomFlag(void)
+{
+ u16 *specVar = &gSpecialVar_0x8004;
+ u16 flag = 0x259;
+ *specVar = flag;
+ FlagReset(flag);
+}
+
+bool8 CheckLeadMonCool(void)
+{
+ if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_COOL) < 200)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 CheckLeadMonBeauty(void)
+{
+ if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_BEAUTY) < 200)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 CheckLeadMonCute(void)
+{
+ if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_CUTE) < 200)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 CheckLeadMonSmart(void)
+{
+ if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SMART) < 200)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 CheckLeadMonTough(void)
+{
+ if (GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_TOUGH) < 200)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void IsGrassTypeInParty(void)
+{
+ u8 i;
+ u16 species;
+ struct Pokemon *pokemon;
+ for (i=0; i<PARTY_SIZE; i++)
+ {
+ pokemon = &gPlayerParty[i];
+ if (GetMonData(pokemon, MON_DATA_SANITY_BIT2) && !GetMonData(pokemon, MON_DATA_IS_EGG))
+ {
+ species = GetMonData(pokemon, MON_DATA_SPECIES);
+ if (gBaseStats[species].type1 == TYPE_GRASS || gBaseStats[species].type2 == TYPE_GRASS)
+ {
+ gScriptResult = TRUE;
+ return;
+ }
+ }
+ }
+ gScriptResult = FALSE;
+}
+
+const u8 *const gUnknown_083F83C0[] = {
+ OtherText_BlueFlute,
+ OtherText_YellowFlute,
+ OtherText_RedFlute,
+ OtherText_WhiteFlute,
+ OtherText_BlackFlute,
+ OtherText_PrettyChair,
+ OtherText_PrettyDesk,
+ gOtherText_CancelNoTerminator
+};
+
+void sub_810F118(u8);
+bool8 sub_810F1F4(u8, u8);
+void sub_810F2B4(void);
+void GlassWorkshopUpdateScrollIndicators(u8, u8);
+
+void ShowGlassWorkshopMenu(void)
+{
+ u8 i;
+ ScriptContext2_Enable();
+ MenuDrawTextWindow(0, 0, 10, 11);
+ InitMenu(0, 1, 1, 5, 0, 9);
+ gUnknown_0203925C = 0;
+ sub_80F944C();
+ LoadScrollIndicatorPalette();
+ sub_810F2B4();
+ for (i=0; i<5; i++)
+ {
+ MenuPrint(gUnknown_083F83C0[i], 1, 2 * i + 1);
+ }
+ gUnknown_0203925B = 0;
+ gUnknown_0203925A = ARRAY_COUNT(gUnknown_083F83C0);
+ CreateTask(sub_810F118, 8);
+}
+
+void sub_810F118(u8 taskId)
+{
+ u8 prevCursorPos;
+ if (gMain.newKeys == DPAD_UP && gUnknown_0203925B != 0)
+ {
+ gUnknown_0203925B--;
+ prevCursorPos = GetMenuCursorPos();
+ MoveMenuCursorNoWrap(-1);
+ sub_810F1F4(prevCursorPos, DPAD_UP);
+ }
+ if (gMain.newKeys == DPAD_DOWN && gUnknown_0203925B != gUnknown_0203925A - 1)
+ {
+ gUnknown_0203925B++;
+ prevCursorPos = GetMenuCursorPos();
+ MoveMenuCursorNoWrap(1);
+ sub_810F1F4(prevCursorPos, DPAD_DOWN);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ HandleDestroyMenuCursors();
+ gScriptResult = gUnknown_0203925B;
+ PlaySE(SE_SELECT);
+ sub_810EEDC();
+ MenuZeroFillWindowRect(0, 0, 29, 12);
+ sub_810EC9C(taskId);
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ HandleDestroyMenuCursors();
+ gScriptResult = 0x7f;
+ PlaySE(SE_SELECT);
+ sub_810EEDC();
+ MenuZeroFillWindowRect(0, 0, 29, 12);
+ sub_810EC9C(taskId);
+ }
+}
+
+// Second verse, same as the first
+#ifdef NONMATCHING
+bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
+{
+ u8 i;
+ u8 flag = 0;
+ u8 newPos = 0;
+ if (gUnknown_0203925A < 5)
+ {
+ return FALSE;
+ }
+ if (dpadInput == DPAD_UP)
+ {
+ if (prevCursorPos == 0)
+ {
+ newPos = gUnknown_0203925B;
+ flag = TRUE;
+ }
+ }
+ else if (dpadInput == DPAD_DOWN)
+ {
+ if (prevCursorPos == 4)
+ {
+ newPos = gUnknown_0203925B - 4;
+ flag = TRUE;
+ }
+ }
+ if (flag)
+ {
+ GlassWorkshopUpdateScrollIndicators(newPos, 5);
+ MenuFillWindowRectWithBlankTile(2, 1, 9, 10);
+ for (i=0; i<5; newPos++, i++)
+ {
+ MenuPrint(gUnknown_083F83C0[newPos], 1, 2 * i + 1);
+ }
+ }
+ return flag;
+}
+#else
+__attribute__((naked))
+bool8 sub_810F1F4(u8 prevCursorPos, u8 dpadInput)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r2, r0, 24\n"
+ "\tadds r5, r2, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tadds r3, r1, 0\n"
+ "\tmovs r6, 0\n"
+ "\tmovs r4, 0\n"
+ "\tldr r0, _0810F214 @ =gUnknown_0203925A\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x4\n"
+ "\tbhi _0810F218\n"
+ "\tmovs r0, 0\n"
+ "\tb _0810F282\n"
+ "\t.align 2, 0\n"
+ "_0810F214: .4byte gUnknown_0203925A\n"
+ "_0810F218:\n"
+ "\tcmp r1, 0x40\n"
+ "\tbne _0810F22C\n"
+ "\tcmp r2, 0\n"
+ "\tbne _0810F240\n"
+ "\tldr r0, _0810F228 @ =gUnknown_0203925B\n"
+ "\tldrb r4, [r0]\n"
+ "\tmovs r6, 0x1\n"
+ "\tb _0810F244\n"
+ "\t.align 2, 0\n"
+ "_0810F228: .4byte gUnknown_0203925B\n"
+ "_0810F22C:\n"
+ "\tcmp r3, 0x80\n"
+ "\tbne _0810F240\n"
+ "\tcmp r5, 0x4\n"
+ "\tbne _0810F240\n"
+ "\tldr r0, _0810F288 @ =gUnknown_0203925B\n"
+ "\tldrb r0, [r0]\n"
+ "\tsubs r0, 0x4\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tmovs r6, 0x1\n"
+ "_0810F240:\n"
+ "\tcmp r6, 0\n"
+ "\tbeq _0810F280\n"
+ "_0810F244:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x5\n"
+ "\tbl GlassWorkshopUpdateScrollIndicators\n"
+ "\tmovs r0, 0x2\n"
+ "\tmovs r1, 0x1\n"
+ "\tmovs r2, 0x9\n"
+ "\tmovs r3, 0xA\n"
+ "\tbl MenuFillWindowRectWithBlankTile\n"
+ "\tmovs r5, 0\n"
+ "\tldr r7, _0810F28C @ =gUnknown_083F83C0\n"
+ "_0810F25C:\n"
+ "\tlsls r0, r4, 2\n"
+ "\tadds r0, r7\n"
+ "\tldr r0, [r0]\n"
+ "\tlsls r2, r5, 1\n"
+ "\tadds r2, 0x1\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl MenuPrint\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tcmp r5, 0x4\n"
+ "\tbls _0810F25C\n"
+ "_0810F280:\n"
+ "\tadds r0, r6, 0\n"
+ "_0810F282:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_0810F288: .4byte gUnknown_0203925B\n"
+ "_0810F28C: .4byte gUnknown_083F83C0");
+}
+#endif
+
+void sub_810F290(void)
+{
+ if (gUnknown_0203925C >> 1 != 1)
+ {
+ gUnknown_0203925C |= 0x02;
+ CreateVerticalScrollIndicators(0, 0x2c, 0x08);
+ }
+}
+
+void sub_810F2B4(void)
+{
+ if (!(gUnknown_0203925C & 0x01))
+ {
+ gUnknown_0203925C |= 0x01;
+ CreateVerticalScrollIndicators(1, 0x2c, 0x58);
+ }
+}
+
+void GlassWorkshopUpdateScrollIndicators(u8 newPos, u8 maxItems)
+{
+ if (newPos == 0)
+ {
+ gUnknown_0203925C ^= 0x02;
+ DestroyVerticalScrollIndicator(0);
+ }
+ else
+ {
+ sub_810F290();
+ }
+ if (newPos + maxItems < gUnknown_0203925A)
+ {
+ sub_810F2B4();
+ }
+ else if (newPos + maxItems == gUnknown_0203925A)
+ {
+ gUnknown_0203925C ^= 0x01;
+ DestroyVerticalScrollIndicator(1);
+ }
+}
+
+void SpawnCameraDummy(void)
+{
+ u8 mapObjectId = SpawnSpecialFieldObjectParametrized(7, 8, 0x7f, gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7, 3);
+ gMapObjects[mapObjectId].mapobj_bit_13 = 1;
+ CameraObjectSetFollowedObjectId(gMapObjects[mapObjectId].spriteId);
+}
+
+void RemoveCameraDummy(void)
+{
+ CameraObjectSetFollowedObjectId(GetPlayerAvatarObjectId());
+ RemoveFieldObjectByLocalIdAndMap(0x7f, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+}
+
+u8 GetPokeblockNameByMonNature(void)
+{
+ return sub_810CB68(GetNature(&gPlayerParty[GetLeadMonIndex()]), gStringVar1);
+}
+
+void GetSecretBaseNearbyMapName(void)
+{
+ sub_80FBFB4(gStringVar1, VarGet(VAR_SECRET_BASE_MAP), 0);
+}
+
+u16 sub_810F404(void)
+{
+ return GetGameStat(GAME_STAT_BATTLE_TOWER_BEST_STREAK);
+}
+
+void sub_810F414(void)
+{
+ sub_8135FF4(gStringVar1);
+}
+
+const u8 gUnknown_083F83E0[] = {12, 2, 4, 5, 1, 8, 7, 11, 3, 10, 9, 6};
+const u8 gUnknown_083F83EC[] = {0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5};
+const u8 gUnknown_083F83F8[] = {3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5};
+
+u8 sub_810F424(void)
+{
+ u32 v0 = gSaveBlock1.easyChatPairs[0].unk0_0 + gSaveBlock1.easyChatPairs[0].unk2 + gUnknown_083F83E0[gSpecialVar_0x8004];
+ if (GetPriceReduction(2))
+ {
+ return gUnknown_083F83F8[v0 % 12];
+ }
+ return gUnknown_083F83EC[v0 % 12];
+}
+
+bool8 sub_810F488(void)
+{
+ u16 *specVar = &gSpecialVar_0x8004;
+ u16 flag = 0x277;
+ *specVar = flag;
+ if (!FlagGet(flag))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_810F4B0(void)
+{
+ u16 *specVar = &gSpecialVar_0x8004;
+ u16 flag = 0x278;
+ *specVar = flag;
+ if (!FlagGet(flag))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_810F4D4(void)
+{
+ u16 *specVar = &gSpecialVar_0x8004;
+ u16 flag = 0x279;
+ *specVar = flag;
+ if (!FlagGet(flag))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_810F4FC(void)
+{
+ u16 *specVar = &gSpecialVar_0x8004;
+ u16 flag = 0x27a;
+ *specVar = flag;
+ if (!FlagGet(flag))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 LeadMonHasEffortRibbon(void)
+{
+ return GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, NULL);
+}
+
+void GivLeadMonEffortRibbon(void)
+{
+ bool8 ribbonSet;
+ IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
+ FlagSet(SYS_RIBBON_GET);
+ ribbonSet = TRUE;
+ SetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, &ribbonSet);
+}
+
+bool8 GetLeadMonEVCount(void)
+{
+ if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 sub_810F5BC(void)
+{
+ if (!FlagGet(0xc7) && gSaveBlock1.location.mapGroup == MAP_GROUP_RUSTURF_TUNNEL && gSaveBlock1.location.mapNum == MAP_ID_RUSTURF_TUNNEL)
+ {
+ if (FlagGet(0x3a3))
+ {
+ VarSet(VAR_0x409a, 4);
+ return TRUE;
+ }
+ else if (FlagGet(0x3a4))
+ {
+ VarSet(VAR_0x409a, 5);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void SetShoalItemFlag(u16 v0)
+{
+ FlagSet(0x85f);
+}
+
+void PutZigzagoonInPlayerParty(void)
+{
+ u16 monData;
+ CreateMon(&gPlayerParty[0], SPECIES_ZIGZAGOON, 7, 0x20, FALSE, 0, FALSE, 0);
+ monData = TRUE;
+ SetMonData(&gPlayerParty[0], MON_DATA_ALT_ABILITY, (u8 *)&monData);
+ monData = MOVE_TACKLE;
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE1, (u8 *)&monData);
+ monData = MOVE_NONE;
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE2, (u8 *)&monData);
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE3, (u8 *)&monData);
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE4, (u8 *)&monData);
+}
+
+bool8 IsStarterInParty(void)
+{
+ u8 i;
+ u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE));
+ u8 partyCount = CalculatePlayerPartyCount();
+ for (i=0; i<partyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == starter)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 CheckFreePokemonStorageSpace(void)
+{
+ u16 i, j;
+ for (i=0; i<14; i++)
+ {
+ for (j=0; j<30; j++)
+ {
+ if (GetBoxMonData(&gPokemonStorage.boxes[i][j], MON_DATA_SPECIES, NULL) == SPECIES_NONE)
+ {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+bool8 IsPokerusInParty(void)
+{
+ if (!CheckPartyPokerus(gPlayerParty, 0x3f))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void sub_810F7A8(u8);
+static void sub_810F814(u8);
+
+void sub_810F758(void)
+{
+ u8 taskId = CreateTask(sub_810F7A8, 9);
+ gTasks[taskId].data[0] = gSpecialVar_0x8005;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = gSpecialVar_0x8004;
+ gTasks[taskId].data[5] = 5;
+ SetCameraPanningCallback(NULL);
+ PlaySE(SE_W070);
+}
+
+static void sub_810F7A8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ task->data[1]++;
+ if ((task->data[1] % task->data[5]) == 0)
+ {
+ task->data[1] = 0;
+ task->data[2]++;
+ if (task->data[3] == 0)
+ {
+ task->data[0] = -task->data[0];
+ task->data[4] = -task->data[4];
+ SetCameraPanning(task->data[0], task->data[4]);
+ if (task->data[2] == 8)
+ {
+ sub_810F814(taskId);
+ InstallCameraPanAheadCallback();
+ }
+ }
+ }
+}
+
+static void sub_810F814(u8 taskId)
+{
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+bool8 sub_810F828(void)
+{
+ return FlagGet(0x2b8);
+}
+
+void SetRoute119Weather(void)
+{
+ if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ {
+ SetSav1Weather(0x14);
+ }
+}
+
+void SetRoute123Weather(void)
+{
+ if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ {
+ SetSav1Weather(0x15);
+ }
+}
+
+u8 GetLeadMonIndex(void)
+{
+ u8 i;
+ u8 partyCount = CalculatePlayerPartyCount();
+ for (i=0; i<partyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != SPECIES_EGG && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) != 0)
+ {
+ return i;
+ }
+ }
+ return 0;
+}
+
+u16 ScriptGetPartyMonSpecies(void)
+{
+ return GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES2, NULL);
+}
+
+void sub_810F8FC(void)
+{
+ sub_805ADDC(6);
+}
+
+u16 sub_810F908(void)
+{
+ u16 var40c2 = VarGet(VAR_0x40C2);
+ if (gLocalTime.days - var40c2 >= 7)
+ {
+ return 0;
+ }
+ else if (gLocalTime.days < 0)
+ {
+ return 8;
+ }
+ return 7 - (gLocalTime.days - var40c2);
+}
+
+u16 sub_810F950(void)
+{
+ VarSet(VAR_0x40C2, gLocalTime.days);
+ return gLocalTime.days;
+}
+
+bool8 sub_810F96C(void)
+{
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_NAME, gStringVar1);
+ if (!StringCompareWithoutExtCtrlCodes(gSaveBlock2.playerName, gStringVar1))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_810F9AC(void)
+{
+ if (gScriptResult >= 10000)
+ {
+ sub_80BF088(0, gScriptResult);
+ }
+ else if (gScriptResult >= 1000)
+ {
+ gStringVar1[0] = CHAR_0;
+ ConvertIntToDecimalStringN(gStringVar1 + 1, gScriptResult, 0, sub_80BF0B8(gScriptResult));
+ }
+ else if (gScriptResult >= 100)
+ {
+ gStringVar1[0] = CHAR_0;
+ gStringVar1[1] = CHAR_0;
+ ConvertIntToDecimalStringN(gStringVar1 + 2, gScriptResult, 0, sub_80BF0B8(gScriptResult));
+ }
+ else if (gScriptResult >= 10)
+ {
+ gStringVar1[0] = CHAR_0;
+ gStringVar1[1] = CHAR_0;
+ gStringVar1[2] = CHAR_0;
+ ConvertIntToDecimalStringN(gStringVar1 + 3, gScriptResult, 0, sub_80BF0B8(gScriptResult));
+ }
+ else
+ {
+ gStringVar1[0] = CHAR_0;
+ gStringVar1[1] = CHAR_0;
+ gStringVar1[2] = CHAR_0;
+ gStringVar1[3] = CHAR_0;
+ ConvertIntToDecimalStringN(gStringVar1 + 4, gScriptResult, 0, sub_80BF0B8(gScriptResult));
+ }
+}
+
+const u8 gUnknown_083F8404[] = {2, 1, 2, 1};
+const u8 gUnknown_083F8408[] = {8, 9, 10, 11, 12, 13, 14, 15};
+const u8 gUnknown_083F8410[] = {8, 13, 14, 11, 10, 12, 15, 9};
+
+bool8 sub_810FF30(void);
+void sub_810FCE8(void);
+void sub_810FF48(void);
+void sub_810FD80(void);
+u16 sub_810FCB0(void);
+int sub_810FB9C(void);
+
+void ResetFanClub(void)
+{
+ gSaveBlock1.vars[0x41] = 0;
+ gSaveBlock1.vars[0x42] = 0;
+}
+
+void sub_810FA74(void)
+{
+ if (sub_810FF30())
+ {
+ sub_810FCE8();
+ gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
+ }
+}
+
+void sub_810FAA0(void)
+{
+ if (!((gSaveBlock1.vars[0x41] >> 7) & 1))
+ {
+ sub_810FF48();
+ sub_810FD80();
+ gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
+ FlagReset(0x315);
+ FlagReset(0x316);
+ FlagReset(0x317);
+ FlagReset(0x318);
+ VarSet(VAR_0x4095, 1);
+ }
+}
+
+u8 sub_810FB10(u8 a0)
+{
+ if (VarGet(VAR_0x4095) == 2)
+ {
+ if ((gSaveBlock1.vars[0x41] & 0x7f) + gUnknown_083F8404[a0] >= 20)
+ {
+ if (sub_810FCB0() < 3)
+ {
+ sub_810FB9C();
+ gSaveBlock1.vars[0x41] &= 0xff80;
+ }
+ else
+ {
+ gSaveBlock1.vars[0x41] = (gSaveBlock1.vars[0x41] & 0xff80) | 20;
+ }
+ }
+ else
+ {
+ gSaveBlock1.vars[0x41] += gUnknown_083F8404[a0];
+ }
+ }
+ return gSaveBlock1.vars[0x41] & 0x7f;
+}
+
+int sub_810FB9C(void)
+{
+ u8 i;
+ int retval = 0;
+ for (i=0; i<8; i++)
+ {
+ if (!((gSaveBlock1.vars[0x41] >> gUnknown_083F8408[i]) & 0x01))
+ {
+ retval = i;
+ if (Random() & 1)
+ {
+ gSaveBlock1.vars[0x41] |= (1 << gUnknown_083F8408[i]);
+ return retval;
+ }
+ }
+ }
+ gSaveBlock1.vars[0x41] |= (1 << gUnknown_083F8408[retval]);
+ return retval;
+}
+
+int sub_810FC18(void)
+{
+ u8 i;
+ int retval = 0;
+ if (sub_810FCB0() == TRUE)
+ {
+ return 0;
+ }
+ for (i=0; i<8; i++)
+ {
+ if ((gSaveBlock1.vars[0x41] >> gUnknown_083F8410[i]) & 1)
+ {
+ retval = i;
+ if (Random() & 1)
+ {
+ gSaveBlock1.vars[0x41] ^= (1 << gUnknown_083F8410[i]);
+ return retval;
+ }
+ }
+ }
+ if ((gSaveBlock1.vars[0x41] >> gUnknown_083F8410[retval]) & 1)
+ {
+ gSaveBlock1.vars[0x41] ^= (1 << gUnknown_083F8410[retval]);
+ }
+ return retval;
+}
+
+u16 sub_810FCB0(void)
+{
+ u8 i;
+ u8 retval = 0;
+ for (i=0; i<8; i++)
+ {
+ if ((gSaveBlock1.vars[0x41] >> (i + 8)) & 1)
+ {
+ retval ++;
+ }
+ }
+ return retval;
+}
+
+void sub_810FCE8(void)
+{
+ u8 i = 0;
+ if (gSaveBlock2.playTimeHours < 999)
+ {
+ while (1)
+ {
+ if (sub_810FCB0() < 5)
+ {
+ gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
+ break;
+ }
+ else if (i == 8)
+ {
+ break;
+ }
+ else if (gSaveBlock2.playTimeHours - gSaveBlock1.vars[0x42] < 12)
+ {
+ return;
+ }
+ sub_810FC18();
+ gSaveBlock1.vars[0x42] += 12;
+ i++;
+ }
+ }
+}
+
+bool8 sub_810FD60(void)
+{
+ return (gSaveBlock1.vars[0x41] >> gSpecialVar_0x8004) & 0x01;
+}
+
+void sub_810FD80(void)
+{
+ gSaveBlock1.vars[0x41] |= 0x2000;
+ gSaveBlock1.vars[0x41] |= 0x100;
+ gSaveBlock1.vars[0x41] |= 0x400;
+}
+
+void sub_810FE1C(void *, u8, u8);
+
+void sub_810FDAC(void)
+{
+ u8 a = 0;
+ u8 b = 0;
+ switch (gSpecialVar_0x8004)
+ {
+ case 8:
+ break;
+ case 9:
+ break;
+ case 10:
+ a = 0;
+ b = 3;
+ break;
+ case 11:
+ a = 0;
+ b = 1;
+ break;
+ case 12:
+ a = 1;
+ b = 0;
+ break;
+ case 13:
+ a = 0;
+ b = 4;
+ break;
+ case 14:
+ a = 1;
+ b = 5;
+ break;
+ case 15:
+ break;
+ }
+ sub_810FE1C(gSaveBlock1.linkBattleRecords, a, b);
+}
+
+void sub_810FE1C(void *linkRecords, u8 a, u8 b)
+{
+ u8 *curRecord = (linkRecords + 16 * a);
+ if (*curRecord == EOS)
+ {
+ switch (b)
+ {
+ case 0:
+ StringCopy(gStringVar1, gOtherText_Wallace);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gOtherText_Steven);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gOtherText_Brawly);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gOtherText_Winona);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gOtherText_Phoebe);
+ break;
+ case 5:
+ StringCopy(gStringVar1, gOtherText_Glacia);
+ break;
+ default:
+ StringCopy(gStringVar1, gOtherText_Wallace);
+ break;
+ }
+ }
+ else
+ {
+ StringCopyN(gStringVar1, curRecord, 7);
+ gStringVar1[7] = EOS;
+ if (gStringVar1[0] == 0xfc && gStringVar1[1] == 0x15)
+ {
+ ConvertInternationalString(gStringVar1, 1);
+ }
+ }
+}
+
+void sub_810FEFC(void)
+{
+ if (VarGet(VAR_0x4095) == 2)
+ {
+ sub_810FA74();
+ if (gBattleOutcome == 1)
+ {
+ sub_810FB9C();
+ }
+ else
+ {
+ sub_810FC18();
+ }
+ }
+}
+
+bool8 sub_810FF30(void)
+{
+ return (gSaveBlock1.vars[0x41] >> 7) & 0x01;
+}
+
+void sub_810FF48(void)
+{
+ gSaveBlock1.vars[0x41] |= 0x80;
+}
+
+u8 sub_810FF60(void)
+{
+ return sub_810FB10(gSpecialVar_0x8004);
+}