summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--.gitmodules3
-rw-r--r--asm/field_map_obj.s8771
-rw-r--r--include/asm.inc.h10
-rw-r--r--include/data2.h46
-rw-r--r--include/field_camera.h10
-rw-r--r--include/field_ground_effect.h11
-rwxr-xr-x[-rw-r--r--]include/field_map_obj.h83
-rw-r--r--include/field_map_obj_helpers.h3
-rw-r--r--include/fieldmap.h4
-rw-r--r--include/menu.h10
-rw-r--r--include/script_pokemon_80C4.h5
-rw-r--r--include/strings2.h322
-rw-r--r--include/trig.h2
-rw-r--r--ld_script.txt2
-rw-r--r--src/battle_2.c90
-rw-r--r--src/battle_ai.c3
-rw-r--r--src/battle_interface.c34
-rw-r--r--src/battle_party_menu.c11
-rw-r--r--src/battle_records.c4
-rw-r--r--src/battle_setup.c13
-rw-r--r--src/berry_tag_screen.c5
-rw-r--r--src/braille_puzzles.c74
-rw-r--r--src/calculate_base_damage.c8
-rw-r--r--src/clear_save_data_menu.c141
-rw-r--r--src/coins.c3
-rw-r--r--src/contest_painting.c51
-rw-r--r--src/credits.c14
-rw-r--r--src/decompress.c5
-rw-r--r--src/diploma.c5
-rw-r--r--src/easy_chat.c6
-rw-r--r--src/field_camera.c106
-rw-r--r--src/field_control_avatar.c68
-rwxr-xr-x[-rw-r--r--]src/field_map_obj.c2907
-rw-r--r--src/field_player_avatar.c18
-rw-r--r--src/field_poison.c48
-rw-r--r--src/field_region_map.c3
-rw-r--r--src/field_special_scene.c122
-rw-r--r--src/fldeff_cut.c86
-rw-r--r--src/intro.c121
-rw-r--r--src/item.c2
-rw-r--r--src/item_use.c199
-rw-r--r--src/link.c3
-rw-r--r--src/mail.c3
-rw-r--r--src/main_menu.c38
-rw-r--r--src/matsuda_debug_menu.c72
-rw-r--r--src/mauville_old_man.c33
-rw-r--r--src/menu.c12
-rw-r--r--src/mori_debug_menu.c3
-rw-r--r--src/mystery_event_menu.c410
-rw-r--r--src/naming_screen.c7
-rw-r--r--src/option_menu.c321
-rw-r--r--src/party_menu.c47
-rw-r--r--src/player_pc.c47
-rw-r--r--src/pokedex.c1570
-rw-r--r--src/pokemon_1.c2
-rw-r--r--src/pokemon_2.c1044
-rw-r--r--src/pokemon_3.c118
-rw-r--r--src/pokemon_size_record.c4
-rw-r--r--src/pokemon_summary_screen.c13
-rw-r--r--src/pokenav.c3
-rw-r--r--src/record_mixing.c49
-rw-r--r--src/rom3.c1
-rw-r--r--src/rom_8077ABC.c14
-rw-r--r--src/save_failed_screen.c114
-rw-r--r--src/save_menu_util.c6
-rw-r--r--src/scrcmd.c4
-rw-r--r--src/script_menu.c26
-rw-r--r--src/script_pokemon_util_80C4BF0.c149
-rw-r--r--src/script_pokemon_util_80F99CC.c269
-rw-r--r--src/secret_base.c70
-rw-r--r--src/shop.c29
-rw-r--r--src/smokescreen.c4
-rw-r--r--src/start_menu.c325
-rw-r--r--src/starter_choose.c57
-rw-r--r--src/string_util.c29
-rw-r--r--src/text.c78
-rw-r--r--src/trainer_card.c13
-rw-r--r--src/trig.c1
-rw-r--r--src/tv.c1110
-rw-r--r--src/wallclock.c136
81 files changed, 6944 insertions, 12722 deletions
diff --git a/.gitignore b/.gitignore
index 78af8c737..f5c95dbc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,4 +35,5 @@ types_*.taghl
*.dump
*.sa*
Thumbs.db
-build/*
+build/
+.idea/
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000..7dbd4ef6d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "tools/agbcc"]
+ path = tools/agbcc
+ url = git@github.com:pret/agbcc
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index d54b57fed..6051dc6e6 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -6,5850 +6,6 @@
.text
- thumb_func_start sub_805C930
-sub_805C930: @ 805C930
- push {r4-r6,lr}
- adds r6, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805C964
- ldr r5, _0805C960 @ =gUnknown_0837520C
- bl Random
- movs r4, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r5
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r6, 0
- bl sub_8064820
- strh r4, [r6, 0x30]
- movs r0, 0x1
- b _0805C966
- .align 2, 0
-_0805C960: .4byte gUnknown_0837520C
-_0805C964:
- movs r0, 0
-_0805C966:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805C930
-
- thumb_func_start sub_805C96C
-sub_805C96C: @ 805C96C
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805C980
- movs r0, 0
- b _0805C986
-_0805C980:
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805C986:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805C96C
-
- thumb_func_start sub_805C98C
-sub_805C98C: @ 805C98C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0805C9D4 @ =gUnknown_08375240
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r4, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x5
- strh r0, [r6, 0x30]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_805FF20
- lsls r0, 24
- cmp r0, 0
- beq _0805C9CA
- movs r0, 0x1
- strh r0, [r6, 0x30]
-_0805C9CA:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805C9D4: .4byte gUnknown_08375240
- thumb_func_end sub_805C98C
-
- thumb_func_start sub_805C9D8
-sub_805C9D8: @ 805C9D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x6
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805C9D8
-
- thumb_func_start sub_805CA08
-sub_805CA08: @ 805CA08
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805CA26
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805CA26:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CA08
-
- thumb_func_start FieldObjectIsTrainerAndCloseToPlayer
-FieldObjectIsTrainerAndCloseToPlayer: @ 805CA30
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r0, 0x80
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0805CA9C
- ldrb r0, [r5, 0x7]
- cmp r0, 0x1
- beq _0805CA4C
- cmp r0, 0x3
- bne _0805CA9C
-_0805CA4C:
- mov r7, sp
- adds r7, 0x2
- mov r0, sp
- adds r1, r7, 0
- bl PlayerGetDestCoords
- ldrh r2, [r5, 0x10]
- ldrh r4, [r5, 0x12]
- ldrb r1, [r5, 0x1D]
- subs r3, r2, r1
- subs r0, r4, r1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r2, r1, r2
- lsls r2, 16
- lsrs r2, 16
- adds r1, r4
- lsls r1, 16
- lsrs r6, r1, 16
- mov r0, sp
- lsls r3, 16
- asrs r3, 16
- movs r1, 0
- ldrsh r4, [r0, r1]
- cmp r3, r4
- bgt _0805CA9C
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, r4
- blt _0805CA9C
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0
- ldrsh r1, [r7, r2]
- cmp r0, r1
- bgt _0805CA9C
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, r1
- bge _0805CAA0
-_0805CA9C:
- movs r0, 0
- b _0805CAA2
-_0805CAA0:
- movs r0, 0x1
-_0805CAA2:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectIsTrainerAndCloseToPlayer
-
- thumb_func_start sub_805CAAC
-sub_805CAAC: @ 805CAAC
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- lsrs r0, r1, 16
- lsls r2, 16
- lsls r3, 16
- cmp r2, r3
- ble _0805CACA
- movs r2, 0x4
- lsls r0, r4, 16
- cmp r0, 0
- bge _0805CAD4
- movs r2, 0x3
- b _0805CAD4
-_0805CACA:
- movs r2, 0x1
- lsls r0, 16
- cmp r0, 0
- bge _0805CAD4
- movs r2, 0x2
-_0805CAD4:
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CAAC
-
- thumb_func_start sub_805CADC
-sub_805CADC: @ 805CADC
- push {lr}
- movs r0, 0x1
- lsls r1, 16
- cmp r1, 0
- bge _0805CAE8
- movs r0, 0x2
-_0805CAE8:
- pop {r1}
- bx r1
- thumb_func_end sub_805CADC
-
- thumb_func_start sub_805CAEC
-sub_805CAEC: @ 805CAEC
- push {lr}
- movs r1, 0x4
- lsls r0, 16
- cmp r0, 0
- bge _0805CAF8
- movs r1, 0x3
-_0805CAF8:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_805CAEC
-
- thumb_func_start sub_805CB00
-sub_805CB00: @ 805CB00
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB3C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CB56
- b _0805CB54
-_0805CB3C:
- cmp r0, 0x4
- bne _0805CB56
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB56
-_0805CB54:
- movs r0, 0x2
-_0805CB56:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CB00
-
- thumb_func_start sub_805CB5C
-sub_805CB5C: @ 805CB5C
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CB98
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CBB2
- b _0805CBB0
-_0805CB98:
- cmp r0, 0x3
- bne _0805CBB2
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CBB2
-_0805CBB0:
- movs r0, 0x2
-_0805CBB2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CB5C
-
- thumb_func_start sub_805CBB8
-sub_805CBB8: @ 805CBB8
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CBF4
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CC0E
- b _0805CC0C
-_0805CBF4:
- cmp r0, 0x4
- bne _0805CC0E
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC0E
-_0805CC0C:
- movs r0, 0x1
-_0805CC0E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CBB8
-
- thumb_func_start sub_805CC14
-sub_805CC14: @ 805CC14
- push {r4-r7,lr}
- lsls r0, 16
- asrs r4, r0, 16
- lsls r1, 16
- asrs r5, r1, 16
- lsls r2, 16
- asrs r6, r2, 16
- lsls r3, 16
- asrs r7, r3, 16
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC50
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CC6A
- b _0805CC68
-_0805CC50:
- cmp r0, 0x3
- bne _0805CC6A
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r7, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CC6A
-_0805CC68:
- movs r0, 0x1
-_0805CC6A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CC14
-
- thumb_func_start sub_805CC70
-sub_805CC70: @ 805CC70
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bne _0805CCA6
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
-_0805CCA6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CC70
-
- thumb_func_start sub_805CCAC
-sub_805CCAC: @ 805CCAC
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0805CCE2
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CADC
- lsls r0, 24
- lsrs r0, 24
-_0805CCE2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CCAC
-
- thumb_func_start sub_805CCE8
-sub_805CCE8: @ 805CCE8
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805CD1E
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
-_0805CD1E:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CCE8
-
- thumb_func_start sub_805CD24
-sub_805CD24: @ 805CD24
- push {r4-r7,lr}
- lsls r0, 16
- asrs r7, r0, 16
- lsls r1, 16
- asrs r6, r1, 16
- lsls r2, 16
- asrs r5, r2, 16
- lsls r3, 16
- asrs r4, r3, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAAC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0805CD5A
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_805CAEC
- lsls r0, 24
- lsrs r0, 24
-_0805CD5A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805CD24
-
- thumb_func_start sub_805CD60
-sub_805CD60: @ 805CD60
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- bne _0805CD78
- movs r0, 0
- b _0805CDDC
-_0805CD78:
- mov r5, sp
- adds r5, 0x2
- mov r0, sp
- adds r1, r5, 0
- bl PlayerGetDestCoords
- mov r2, sp
- mov r0, sp
- ldrh r0, [r0]
- ldrh r1, [r4, 0x10]
- subs r0, r1
- strh r0, [r2]
- ldrh r0, [r5]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r5]
- mov r0, sp
- ldrh r3, [r5]
- ldrh r2, [r0]
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _0805CDAC
- negs r0, r0
- lsls r0, 16
- lsrs r2, r0, 16
-_0805CDAC:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0
- bge _0805CDBA
- negs r0, r0
- lsls r0, 16
- lsrs r3, r0, 16
-_0805CDBA:
- ldr r0, _0805CDE4 @ =gUnknown_08375244
- lsls r4, r6, 2
- adds r4, r0
- mov r0, sp
- movs r6, 0
- ldrsh r0, [r0, r6]
- movs r6, 0
- ldrsh r1, [r5, r6]
- lsls r2, 16
- asrs r2, 16
- lsls r3, 16
- asrs r3, 16
- ldr r4, [r4]
- bl _call_via_r4
- lsls r0, 24
- lsrs r0, 24
-_0805CDDC:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CDE4: .4byte gUnknown_08375244
- thumb_func_end sub_805CD60
-
- thumb_func_start sub_805CDE8
-sub_805CDE8: @ 805CDE8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805CE04 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805CE08 @ =sub_805CE0C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805CE04: .4byte gMapObjects
-_0805CE08: .4byte sub_805CE0C
- thumb_func_end sub_805CDE8
-
- thumb_func_start sub_805CE0C
-sub_805CE0C: @ 805CE0C
- push {r4,lr}
- ldr r3, _0805CE28 @ =gUnknown_08375270
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CE28: .4byte gUnknown_08375270
- thumb_func_end sub_805CE0C
-
- thumb_func_start sub_805CE2C
-sub_805CE2C: @ 805CE2C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CE2C
-
- thumb_func_start sub_805CE40
-sub_805CE40: @ 805CE40
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CE40
-
- thumb_func_start sub_805CE6C
-sub_805CE6C: @ 805CE6C
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805CEA2
- ldr r4, _0805CEAC @ =gUnknown_0837520C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805CEA2:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CEAC: .4byte gUnknown_0837520C
- thumb_func_end sub_805CE6C
-
- thumb_func_start sub_805CEB0
-sub_805CEB0: @ 805CEB0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805CECE
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805CED6
-_0805CECE:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805CED8
-_0805CED6:
- movs r0, 0
-_0805CED8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CEB0
-
- thumb_func_start sub_805CEE0
-sub_805CEE0: @ 805CEE0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805CF24 @ =gUnknown_08375240
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805CF10
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805CF10:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CF24: .4byte gUnknown_08375240
- thumb_func_end sub_805CEE0
-
- thumb_func_start sub_805CF28
-sub_805CF28: @ 805CF28
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805CF44 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805CF48 @ =sub_805CF4C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805CF44: .4byte gMapObjects
-_0805CF48: .4byte sub_805CF4C
- thumb_func_end sub_805CF28
-
- thumb_func_start sub_805CF4C
-sub_805CF4C: @ 805CF4C
- push {r4,lr}
- ldr r3, _0805CF68 @ =gUnknown_08375284
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805CF68: .4byte gUnknown_08375284
- thumb_func_end sub_805CF4C
-
- thumb_func_start sub_805CF6C
-sub_805CF6C: @ 805CF6C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CF6C
-
- thumb_func_start sub_805CF80
-sub_805CF80: @ 805CF80
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805CF80
-
- thumb_func_start sub_805CFAC
-sub_805CFAC: @ 805CFAC
- push {r4-r6,lr}
- adds r6, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805CFE0
- ldr r5, _0805CFDC @ =gUnknown_0837520C
- bl Random
- movs r4, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r5
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r6, 0
- bl sub_8064820
- strh r4, [r6, 0x30]
- movs r0, 0x1
- b _0805CFE2
- .align 2, 0
-_0805CFDC: .4byte gUnknown_0837520C
-_0805CFE0:
- movs r0, 0
-_0805CFE2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805CFAC
-
- thumb_func_start sub_805CFE8
-sub_805CFE8: @ 805CFE8
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805CFFC
- movs r0, 0
- b _0805D002
-_0805CFFC:
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D002:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805CFE8
-
- thumb_func_start sub_805D008
-sub_805D008: @ 805D008
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0805D050 @ =gUnknown_083752A0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- bl Random
- movs r7, 0x1
- adds r1, r7, 0
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r4, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x5
- strh r0, [r6, 0x30]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_805FF20
- lsls r0, 24
- cmp r0, 0
- beq _0805D046
- strh r7, [r6, 0x30]
-_0805D046:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D050: .4byte gUnknown_083752A0
- thumb_func_end sub_805D008
-
- thumb_func_start sub_805D054
-sub_805D054: @ 805D054
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x6
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D054
-
- thumb_func_start sub_805D084
-sub_805D084: @ 805D084
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D0A2
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805D0A2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D084
-
- thumb_func_start sub_805D0AC
-sub_805D0AC: @ 805D0AC
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D0C8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D0CC @ =sub_805D0D0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D0C8: .4byte gMapObjects
-_0805D0CC: .4byte sub_805D0D0
- thumb_func_end sub_805D0AC
-
- thumb_func_start sub_805D0D0
-sub_805D0D0: @ 805D0D0
- push {r4,lr}
- ldr r3, _0805D0EC @ =gUnknown_083752A4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D0EC: .4byte gUnknown_083752A4
- thumb_func_end sub_805D0D0
-
- thumb_func_start sub_805D0F0
-sub_805D0F0: @ 805D0F0
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D0F0
-
- thumb_func_start sub_805D104
-sub_805D104: @ 805D104
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D104
-
- thumb_func_start sub_805D130
-sub_805D130: @ 805D130
- push {r4-r6,lr}
- adds r6, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D164
- ldr r5, _0805D160 @ =gUnknown_0837520C
- bl Random
- movs r4, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r5
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r6, 0
- bl sub_8064820
- strh r4, [r6, 0x30]
- movs r0, 0x1
- b _0805D166
- .align 2, 0
-_0805D160: .4byte gUnknown_0837520C
-_0805D164:
- movs r0, 0
-_0805D166:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805D130
-
- thumb_func_start sub_805D16C
-sub_805D16C: @ 805D16C
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D180
- movs r0, 0
- b _0805D186
-_0805D180:
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D186:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D16C
-
- thumb_func_start sub_805D18C
-sub_805D18C: @ 805D18C
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0805D1D4 @ =gUnknown_083752C0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- bl Random
- movs r7, 0x1
- adds r1, r7, 0
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r4, [r0]
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x5
- strh r0, [r6, 0x30]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_805FF20
- lsls r0, 24
- cmp r0, 0
- beq _0805D1CA
- strh r7, [r6, 0x30]
-_0805D1CA:
- movs r0, 0x1
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D1D4: .4byte gUnknown_083752C0
- thumb_func_end sub_805D18C
-
- thumb_func_start sub_805D1D8
-sub_805D1D8: @ 805D1D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x6
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D1D8
-
- thumb_func_start sub_805D208
-sub_805D208: @ 805D208
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D226
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805D226:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D208
-
- thumb_func_start sub_805D230
-sub_805D230: @ 805D230
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D24C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D250 @ =sub_805D254
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D24C: .4byte gMapObjects
-_0805D250: .4byte sub_805D254
- thumb_func_end sub_805D230
-
- thumb_func_start sub_805D254
-sub_805D254: @ 805D254
- push {r4,lr}
- ldr r3, _0805D270 @ =gUnknown_083752C4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D270: .4byte gUnknown_083752C4
- thumb_func_end sub_805D254
-
- thumb_func_start sub_805D274
-sub_805D274: @ 805D274
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D274
-
- thumb_func_start sub_805D2A0
-sub_805D2A0: @ 805D2A0
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- bne _0805D2B2
- movs r0, 0
- b _0805D2B8
-_0805D2B2:
- movs r0, 0x2
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D2B8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D2A0
-
- thumb_func_start sub_805D2C0
-sub_805D2C0: @ 805D2C0
- ldrb r2, [r0]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- movs r0, 0
- bx lr
- thumb_func_end sub_805D2C0
-
- thumb_func_start FieldObjectCB_BerryTree
-FieldObjectCB_BerryTree: @ 805D2D0
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0805D30C @ =gMapObjects
- adds r5, r0, r1
- ldrh r1, [r4, 0x3C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0805D2FC
- adds r0, r5, 0
- adds r1, r4, 0
- bl get_berry_tree_graphics
- ldrh r1, [r4, 0x3C]
- movs r0, 0x1
- orrs r0, r1
- strh r0, [r4, 0x3C]
-_0805D2FC:
- ldr r2, _0805D310 @ =sub_805D314
- adds r0, r5, 0
- adds r1, r4, 0
- bl meta_step
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805D30C: .4byte gMapObjects
-_0805D310: .4byte sub_805D314
- thumb_func_end FieldObjectCB_BerryTree
-
- thumb_func_start sub_805D314
-sub_805D314: @ 805D314
- push {r4,lr}
- ldr r3, _0805D330 @ =gUnknown_083752D0
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D330: .4byte gUnknown_083752D0
- thumb_func_end sub_805D314
-
- thumb_func_start do_berry_tree_growth_sparkle_1
-do_berry_tree_growth_sparkle_1: @ 805D334
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x1]
- adds r6, r5, 0
- adds r6, 0x3E
- ldrb r0, [r6]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r6]
- ldrb r0, [r4, 0x1D]
- bl GetStageByBerryTreeId
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0
- bne _0805D3A4
- ldrh r1, [r5, 0x3C]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0805D39A
- subs r6, 0x14
- ldrb r0, [r6]
- cmp r0, 0x4
- bne _0805D39A
- ldr r1, _0805D3A0 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r0, [r4, r2]
- str r0, [r1]
- movs r2, 0x12
- ldrsh r0, [r4, r2]
- str r0, [r1, 0x4]
- adds r0, r5, 0
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
- str r0, [r1, 0x8]
- ldrb r0, [r5, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r1, 0xC]
- movs r0, 0x17
- bl FieldEffectStart
- strb r7, [r6]
-_0805D39A:
- movs r0, 0
- b _0805D3E6
- .align 2, 0
-_0805D3A0: .4byte gUnknown_0202FF84
-_0805D3A4:
- ldrb r1, [r4, 0x1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x1]
- ldrb r1, [r6]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- subs r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r5, 0
- adds r0, 0x2A
- ldrb r0, [r0]
- cmp r0, r7
- bne _0805D3E0
- adds r0, r4, 0
- adds r1, r5, 0
- bl get_berry_tree_graphics
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x39
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- b _0805D3E6
-_0805D3E0:
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
-_0805D3E6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end do_berry_tree_growth_sparkle_1
-
- thumb_func_start sub_805D3EC
-sub_805D3EC: @ 805D3EC
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- bne _0805D3FE
- movs r0, 0
- b _0805D404
-_0805D3FE:
- movs r0, 0
- strh r0, [r4, 0x30]
- movs r0, 0x1
-_0805D404:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D3EC
-
- thumb_func_start do_berry_tree_growth_sparkle_2
-do_berry_tree_growth_sparkle_2: @ 805D40C
- push {r4,lr}
- ldrb r2, [r0]
- movs r3, 0x2
- orrs r2, r3
- strb r2, [r0]
- movs r3, 0
- movs r2, 0x3
- strh r2, [r1, 0x30]
- strh r3, [r1, 0x32]
- ldrh r3, [r1, 0x3C]
- movs r2, 0x2
- orrs r2, r3
- strh r2, [r1, 0x3C]
- ldr r3, _0805D454 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r2, 0x12
- ldrsh r0, [r0, r2]
- str r0, [r3, 0x4]
- adds r0, r1, 0
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0x17
- bl FieldEffectStart
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D454: .4byte gUnknown_0202FF84
- thumb_func_end do_berry_tree_growth_sparkle_2
-
- thumb_func_start sub_805D458
-sub_805D458: @ 805D458
- push {r4,lr}
- adds r3, r0, 0
- adds r4, r1, 0
- ldrh r1, [r4, 0x32]
- adds r1, 0x1
- strh r1, [r4, 0x32]
- movs r0, 0x2
- ands r1, r0
- lsls r1, 16
- lsrs r1, 17
- lsls r1, 5
- ldrb r2, [r3, 0x1]
- subs r0, 0x23
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x40
- bgt _0805D490
- movs r0, 0
- b _0805D4A2
-_0805D490:
- adds r0, r3, 0
- adds r1, r4, 0
- bl get_berry_tree_graphics
- movs r0, 0x4
- strh r0, [r4, 0x30]
- movs r0, 0
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_0805D4A2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D458
-
- thumb_func_start sub_805D4A8
-sub_805D4A8: @ 805D4A8
- push {r4,lr}
- adds r4, r1, 0
- ldrh r2, [r4, 0x32]
- adds r2, 0x1
- strh r2, [r4, 0x32]
- movs r1, 0x2
- ands r2, r1
- lsls r2, 16
- lsrs r2, 17
- lsls r2, 5
- ldrb r3, [r0, 0x1]
- subs r1, 0x23
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x1]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0x40
- bgt _0805D4DE
- movs r0, 0
- b _0805D4EC
-_0805D4DE:
- movs r0, 0
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x3C]
- subs r0, 0x3
- ands r0, r1
- strh r0, [r4, 0x3C]
- movs r0, 0x1
-_0805D4EC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D4A8
-
- thumb_func_start sub_805D4F4
-sub_805D4F4: @ 805D4F4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D510 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D514 @ =sub_805D518
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D510: .4byte gMapObjects
-_0805D514: .4byte sub_805D518
- thumb_func_end sub_805D4F4
-
- thumb_func_start sub_805D518
-sub_805D518: @ 805D518
- push {r4,lr}
- ldr r3, _0805D534 @ =gUnknown_083752E4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D534: .4byte gUnknown_083752E4
- thumb_func_end sub_805D518
-
- thumb_func_start sub_805D538
-sub_805D538: @ 805D538
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D538
-
- thumb_func_start sub_805D54C
-sub_805D54C: @ 805D54C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D54C
-
- thumb_func_start sub_805D578
-sub_805D578: @ 805D578
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D5AE
- ldr r4, _0805D5B8 @ =gUnknown_0837520C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D5AE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D5B8: .4byte gUnknown_0837520C
- thumb_func_end sub_805D578
-
- thumb_func_start sub_805D5BC
-sub_805D5BC: @ 805D5BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D5DA
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D5E2
-_0805D5DA:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D5E4
-_0805D5E2:
- movs r0, 0
-_0805D5E4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D5BC
-
- thumb_func_start sub_805D5EC
-sub_805D5EC: @ 805D5EC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D630 @ =gUnknown_083752A0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D61C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D61C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D630: .4byte gUnknown_083752A0
- thumb_func_end sub_805D5EC
-
- thumb_func_start sub_805D634
-sub_805D634: @ 805D634
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D650 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D654 @ =sub_805D658
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D650: .4byte gMapObjects
-_0805D654: .4byte sub_805D658
- thumb_func_end sub_805D634
-
- thumb_func_start sub_805D658
-sub_805D658: @ 805D658
- push {r4,lr}
- ldr r3, _0805D674 @ =gUnknown_083752F8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D674: .4byte gUnknown_083752F8
- thumb_func_end sub_805D658
-
- thumb_func_start sub_805D678
-sub_805D678: @ 805D678
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D678
-
- thumb_func_start sub_805D68C
-sub_805D68C: @ 805D68C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D68C
-
- thumb_func_start sub_805D6B8
-sub_805D6B8: @ 805D6B8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D6EE
- ldr r4, _0805D6F8 @ =gUnknown_0837520C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D6EE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D6F8: .4byte gUnknown_0837520C
- thumb_func_end sub_805D6B8
-
- thumb_func_start sub_805D6FC
-sub_805D6FC: @ 805D6FC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D71A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D722
-_0805D71A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D724
-_0805D722:
- movs r0, 0
-_0805D724:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D6FC
-
- thumb_func_start sub_805D72C
-sub_805D72C: @ 805D72C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D770 @ =gUnknown_083752C0
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x2
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D75C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D75C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D770: .4byte gUnknown_083752C0
- thumb_func_end sub_805D72C
-
- thumb_func_start sub_805D774
-sub_805D774: @ 805D774
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D790 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D794 @ =sub_805D798
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D790: .4byte gMapObjects
-_0805D794: .4byte sub_805D798
- thumb_func_end sub_805D774
-
- thumb_func_start sub_805D798
-sub_805D798: @ 805D798
- push {r4,lr}
- ldr r3, _0805D7B4 @ =gUnknown_0837530C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D7B4: .4byte gUnknown_0837530C
- thumb_func_end sub_805D798
-
- thumb_func_start sub_805D7B8
-sub_805D7B8: @ 805D7B8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D7B8
-
- thumb_func_start sub_805D7CC
-sub_805D7CC: @ 805D7CC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D7CC
-
- thumb_func_start sub_805D7F8
-sub_805D7F8: @ 805D7F8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D82E
- ldr r4, _0805D838 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D82E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D838: .4byte gUnknown_0837521C
- thumb_func_end sub_805D7F8
-
- thumb_func_start sub_805D83C
-sub_805D83C: @ 805D83C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D85A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D862
-_0805D85A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D864
-_0805D862:
- movs r0, 0
-_0805D864:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D83C
-
- thumb_func_start sub_805D86C
-sub_805D86C: @ 805D86C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D8B0 @ =gUnknown_08375320
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x3
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D89C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D89C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D8B0: .4byte gUnknown_08375320
- thumb_func_end sub_805D86C
-
- thumb_func_start sub_805D8B4
-sub_805D8B4: @ 805D8B4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805D8D0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805D8D4 @ =sub_805D8D8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805D8D0: .4byte gMapObjects
-_0805D8D4: .4byte sub_805D8D8
- thumb_func_end sub_805D8B4
-
- thumb_func_start sub_805D8D8
-sub_805D8D8: @ 805D8D8
- push {r4,lr}
- ldr r3, _0805D8F4 @ =gUnknown_08375324
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D8F4: .4byte gUnknown_08375324
- thumb_func_end sub_805D8D8
-
- thumb_func_start sub_805D8F8
-sub_805D8F8: @ 805D8F8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805D8F8
-
- thumb_func_start sub_805D90C
-sub_805D90C: @ 805D90C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D90C
-
- thumb_func_start sub_805D938
-sub_805D938: @ 805D938
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805D96E
- ldr r4, _0805D978 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805D96E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D978: .4byte gUnknown_0837521C
- thumb_func_end sub_805D938
-
- thumb_func_start sub_805D97C
-sub_805D97C: @ 805D97C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805D99A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805D9A2
-_0805D99A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805D9A4
-_0805D9A2:
- movs r0, 0
-_0805D9A4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805D97C
-
- thumb_func_start sub_805D9AC
-sub_805D9AC: @ 805D9AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805D9F0 @ =gUnknown_08375338
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x4
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805D9DC
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805D9DC:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805D9F0: .4byte gUnknown_08375338
- thumb_func_end sub_805D9AC
-
- thumb_func_start sub_805D9F4
-sub_805D9F4: @ 805D9F4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DA10 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DA14 @ =sub_805DA18
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DA10: .4byte gMapObjects
-_0805DA14: .4byte sub_805DA18
- thumb_func_end sub_805D9F4
-
- thumb_func_start sub_805DA18
-sub_805DA18: @ 805DA18
- push {r4,lr}
- ldr r3, _0805DA34 @ =gUnknown_0837533C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DA34: .4byte gUnknown_0837533C
- thumb_func_end sub_805DA18
-
- thumb_func_start sub_805DA38
-sub_805DA38: @ 805DA38
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DA38
-
- thumb_func_start sub_805DA4C
-sub_805DA4C: @ 805DA4C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DA4C
-
- thumb_func_start sub_805DA78
-sub_805DA78: @ 805DA78
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DAAE
- ldr r4, _0805DAB8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DAAE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DAB8: .4byte gUnknown_0837521C
- thumb_func_end sub_805DA78
-
- thumb_func_start sub_805DABC
-sub_805DABC: @ 805DABC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DADA
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DAE2
-_0805DADA:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DAE4
-_0805DAE2:
- movs r0, 0
-_0805DAE4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DABC
-
- thumb_func_start sub_805DAEC
-sub_805DAEC: @ 805DAEC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DB30 @ =gUnknown_08375350
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x5
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DB1C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DB1C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DB30: .4byte gUnknown_08375350
- thumb_func_end sub_805DAEC
-
- thumb_func_start sub_805DB34
-sub_805DB34: @ 805DB34
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DB50 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DB54 @ =sub_805DB58
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DB50: .4byte gMapObjects
-_0805DB54: .4byte sub_805DB58
- thumb_func_end sub_805DB34
-
- thumb_func_start sub_805DB58
-sub_805DB58: @ 805DB58
- push {r4,lr}
- ldr r3, _0805DB74 @ =gUnknown_08375354
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DB74: .4byte gUnknown_08375354
- thumb_func_end sub_805DB58
-
- thumb_func_start sub_805DB78
-sub_805DB78: @ 805DB78
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DB78
-
- thumb_func_start sub_805DB8C
-sub_805DB8C: @ 805DB8C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DB8C
-
- thumb_func_start sub_805DBB8
-sub_805DBB8: @ 805DBB8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DBEE
- ldr r4, _0805DBF8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DBEE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DBF8: .4byte gUnknown_0837521C
- thumb_func_end sub_805DBB8
-
- thumb_func_start sub_805DBFC
-sub_805DBFC: @ 805DBFC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DC1A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DC22
-_0805DC1A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DC24
-_0805DC22:
- movs r0, 0
-_0805DC24:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DBFC
-
- thumb_func_start sub_805DC2C
-sub_805DC2C: @ 805DC2C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DC70 @ =gUnknown_08375368
- mov r0, sp
- movs r2, 0x2
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x6
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DC5C
- bl Random
- movs r1, 0x1
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DC5C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DC70: .4byte gUnknown_08375368
- thumb_func_end sub_805DC2C
-
- thumb_func_start sub_805DC74
-sub_805DC74: @ 805DC74
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DC90 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DC94 @ =sub_805DC98
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DC90: .4byte gMapObjects
-_0805DC94: .4byte sub_805DC98
- thumb_func_end sub_805DC74
-
- thumb_func_start sub_805DC98
-sub_805DC98: @ 805DC98
- push {r4,lr}
- ldr r3, _0805DCB4 @ =gUnknown_0837536C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DCB4: .4byte gUnknown_0837536C
- thumb_func_end sub_805DC98
-
- thumb_func_start sub_805DCB8
-sub_805DCB8: @ 805DCB8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DCB8
-
- thumb_func_start sub_805DCCC
-sub_805DCCC: @ 805DCCC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DCCC
-
- thumb_func_start sub_805DCF8
-sub_805DCF8: @ 805DCF8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DD2E
- ldr r4, _0805DD38 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DD2E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DD38: .4byte gUnknown_0837521C
- thumb_func_end sub_805DCF8
-
- thumb_func_start sub_805DD3C
-sub_805DD3C: @ 805DD3C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DD5A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DD62
-_0805DD5A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DD64
-_0805DD62:
- movs r0, 0
-_0805DD64:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DD3C
-
- thumb_func_start sub_805DD6C
-sub_805DD6C: @ 805DD6C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DDB0 @ =gUnknown_08375380
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x7
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DD9C
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DD9C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DDB0: .4byte gUnknown_08375380
- thumb_func_end sub_805DD6C
-
- thumb_func_start sub_805DDB4
-sub_805DDB4: @ 805DDB4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DDD0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DDD4 @ =sub_805DDD8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DDD0: .4byte gMapObjects
-_0805DDD4: .4byte sub_805DDD8
- thumb_func_end sub_805DDB4
-
- thumb_func_start sub_805DDD8
-sub_805DDD8: @ 805DDD8
- push {r4,lr}
- ldr r3, _0805DDF4 @ =gUnknown_08375384
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DDF4: .4byte gUnknown_08375384
- thumb_func_end sub_805DDD8
-
- thumb_func_start sub_805DDF8
-sub_805DDF8: @ 805DDF8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DDF8
-
- thumb_func_start sub_805DE0C
-sub_805DE0C: @ 805DE0C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DE0C
-
- thumb_func_start sub_805DE38
-sub_805DE38: @ 805DE38
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DE6E
- ldr r4, _0805DE78 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DE6E:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DE78: .4byte gUnknown_0837521C
- thumb_func_end sub_805DE38
-
- thumb_func_start sub_805DE7C
-sub_805DE7C: @ 805DE7C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DE9A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DEA2
-_0805DE9A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DEA4
-_0805DEA2:
- movs r0, 0
-_0805DEA4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DE7C
-
- thumb_func_start sub_805DEAC
-sub_805DEAC: @ 805DEAC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805DEF0 @ =gUnknown_08375398
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x8
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805DEDC
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805DEDC:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DEF0: .4byte gUnknown_08375398
- thumb_func_end sub_805DEAC
-
- thumb_func_start sub_805DEF4
-sub_805DEF4: @ 805DEF4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805DF10 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805DF14 @ =sub_805DF18
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805DF10: .4byte gMapObjects
-_0805DF14: .4byte sub_805DF18
- thumb_func_end sub_805DEF4
-
- thumb_func_start sub_805DF18
-sub_805DF18: @ 805DF18
- push {r4,lr}
- ldr r3, _0805DF34 @ =gUnknown_0837539C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DF34: .4byte gUnknown_0837539C
- thumb_func_end sub_805DF18
-
- thumb_func_start sub_805DF38
-sub_805DF38: @ 805DF38
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805DF38
-
- thumb_func_start sub_805DF4C
-sub_805DF4C: @ 805DF4C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DF4C
-
- thumb_func_start sub_805DF78
-sub_805DF78: @ 805DF78
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805DFAE
- ldr r4, _0805DFB8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805DFAE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805DFB8: .4byte gUnknown_0837521C
- thumb_func_end sub_805DF78
-
- thumb_func_start sub_805DFBC
-sub_805DFBC: @ 805DFBC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805DFDA
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805DFE2
-_0805DFDA:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805DFE4
-_0805DFE2:
- movs r0, 0
-_0805DFE4:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805DFBC
-
- thumb_func_start sub_805DFEC
-sub_805DFEC: @ 805DFEC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E030 @ =gUnknown_083753B0
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x9
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E01C
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805E01C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E030: .4byte gUnknown_083753B0
- thumb_func_end sub_805DFEC
-
- thumb_func_start sub_805E034
-sub_805E034: @ 805E034
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E050 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E054 @ =sub_805E058
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E050: .4byte gMapObjects
-_0805E054: .4byte sub_805E058
- thumb_func_end sub_805E034
-
- thumb_func_start sub_805E058
-sub_805E058: @ 805E058
- push {r4,lr}
- ldr r3, _0805E074 @ =gUnknown_083753B4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E074: .4byte gUnknown_083753B4
- thumb_func_end sub_805E058
-
- thumb_func_start sub_805E078
-sub_805E078: @ 805E078
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E078
-
- thumb_func_start sub_805E08C
-sub_805E08C: @ 805E08C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E08C
-
- thumb_func_start sub_805E0B8
-sub_805E0B8: @ 805E0B8
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r7, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E0EE
- ldr r4, _0805E0F8 @ =gUnknown_0837521C
- bl Random
- movs r5, 0x3
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- movs r0, 0
- ldrsh r1, [r1, r0]
- adds r0, r7, 0
- bl sub_8064820
- ldrb r1, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r6]
- strh r5, [r7, 0x30]
-_0805E0EE:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E0F8: .4byte gUnknown_0837521C
- thumb_func_end sub_805E0B8
-
- thumb_func_start sub_805E0FC
-sub_805E0FC: @ 805E0FC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805E11A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805E122
-_0805E11A:
- movs r0, 0x4
- strh r0, [r5, 0x30]
- movs r0, 0x1
- b _0805E124
-_0805E122:
- movs r0, 0
-_0805E124:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E0FC
-
- thumb_func_start sub_805E12C
-sub_805E12C: @ 805E12C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E170 @ =gUnknown_083753C8
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- movs r1, 0xA
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E15C
- bl Random
- movs r1, 0x3
- ands r1, r0
- mov r2, sp
- adds r0, r2, r1
- ldrb r1, [r0]
-_0805E15C:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x30]
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E170: .4byte gUnknown_083753C8
- thumb_func_end sub_805E12C
-
- thumb_func_start sub_805E174
-sub_805E174: @ 805E174
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E190 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E194 @ =sub_805E198
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E190: .4byte gMapObjects
-_0805E194: .4byte sub_805E198
- thumb_func_end sub_805E174
-
- thumb_func_start sub_805E198
-sub_805E198: @ 805E198
- push {r4,lr}
- ldr r3, _0805E1B4 @ =gUnknown_083753CC
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E1B4: .4byte gUnknown_083753CC
- thumb_func_end sub_805E198
-
- thumb_func_start sub_805E1B8
-sub_805E1B8: @ 805E1B8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E1B8
-
- thumb_func_start sub_805E1E4
-sub_805E1E4: @ 805E1E4
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E1FE
- adds r0, r4, 0
- movs r1, 0x30
- bl sub_8064820
- movs r0, 0x2
- strh r0, [r4, 0x30]
-_0805E1FE:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E1E4
-
- thumb_func_start sub_805E208
-sub_805E208: @ 805E208
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805E226
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805E22A
-_0805E226:
- movs r0, 0x3
- strh r0, [r5, 0x30]
-_0805E22A:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E208
-
- thumb_func_start sub_805E234
-sub_805E234: @ 805E234
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E274 @ =gUnknown_083753DC
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- movs r1, 0
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E260
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- add r0, sp
- ldrb r1, [r0]
-_0805E260:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0
- strh r0, [r5, 0x30]
- movs r0, 0x1
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E274: .4byte gUnknown_083753DC
- thumb_func_end sub_805E234
-
- thumb_func_start sub_805E278
-sub_805E278: @ 805E278
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E294 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E298 @ =sub_805E29C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E294: .4byte gMapObjects
-_0805E298: .4byte sub_805E29C
- thumb_func_end sub_805E278
-
- thumb_func_start sub_805E29C
-sub_805E29C: @ 805E29C
- push {r4,lr}
- ldr r3, _0805E2B8 @ =gUnknown_083753E4
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E2B8: .4byte gUnknown_083753E4
- thumb_func_end sub_805E29C
-
- thumb_func_start sub_805E2BC
-sub_805E2BC: @ 805E2BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl npc_reset
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- movs r0, 0x1
- strh r0, [r5, 0x30]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E2BC
-
- thumb_func_start sub_805E2E8
-sub_805E2E8: @ 805E2E8
- push {r4,lr}
- adds r4, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E302
- adds r0, r4, 0
- movs r1, 0x30
- bl sub_8064820
- movs r0, 0x2
- strh r0, [r4, 0x30]
-_0805E302:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E2E8
-
- thumb_func_start sub_805E30C
-sub_805E30C: @ 805E30C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_8064824
- lsls r0, 24
- cmp r0, 0
- bne _0805E32A
- adds r0, r4, 0
- bl FieldObjectIsTrainerAndCloseToPlayer
- lsls r0, 24
- cmp r0, 0
- beq _0805E32E
-_0805E32A:
- movs r0, 0x3
- strh r0, [r5, 0x30]
-_0805E32E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E30C
-
- thumb_func_start sub_805E338
-sub_805E338: @ 805E338
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E378 @ =gUnknown_083753F4
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- movs r1, 0
- bl sub_805CD60
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _0805E364
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- add r0, sp
- ldrb r1, [r0]
-_0805E364:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0
- strh r0, [r5, 0x30]
- movs r0, 0x1
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E378: .4byte gUnknown_083753F4
- thumb_func_end sub_805E338
-
- thumb_func_start sub_805E37C
-sub_805E37C: @ 805E37C
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E398 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E39C @ =sub_805E3A0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E398: .4byte gMapObjects
-_0805E39C: .4byte sub_805E3A0
- thumb_func_end sub_805E37C
-
- thumb_func_start sub_805E3A0
-sub_805E3A0: @ 805E3A0
- push {r4,lr}
- ldr r3, _0805E3BC @ =gUnknown_083753FC
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E3BC: .4byte gUnknown_083753FC
- thumb_func_end sub_805E3A0
-
- thumb_func_start sub_805E3C0
-sub_805E3C0: @ 805E3C0
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E3C0
-
- thumb_func_start sub_805E3D4
-sub_805E3D4: @ 805E3D4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, _0805E408 @ =gUnknown_0836DC09
- ldrb r1, [r4, 0x6]
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r4, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805E3F6
- adds r0, r1, 0
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r1, r0, 24
-_0805E3F6:
- adds r0, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E408: .4byte gUnknown_0836DC09
- thumb_func_end sub_805E3D4
-
- thumb_func_start sub_805E40C
-sub_805E40C: @ 805E40C
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r7, r1, 0
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0
- beq _0805E43C
- ldr r1, [r4, 0xC]
- ldr r0, [r4, 0x10]
- cmp r1, r0
- bne _0805E43C
- movs r0, 0
- strb r0, [r2]
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetOppositeDirection
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetDirection
-_0805E43C:
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r5, 0x1
- bne _0805E492
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetOppositeDirection
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetDirection
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r5, r0, 24
-_0805E492:
- cmp r5, 0
- beq _0805E4A4
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetStepInPlaceDelay16AnimId
- lsls r0, 24
- lsrs r6, r0, 24
-_0805E4A4:
- adds r0, r4, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x3
- strh r0, [r7, 0x30]
- movs r0, 0x1
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_805E40C
-
- thumb_func_start sub_805E4C4
-sub_805E4C4: @ 805E4C4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E4E2
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805E4E2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E4C4
-
- thumb_func_start sub_805E4EC
-sub_805E4EC: @ 805E4EC
- push {r4,lr}
- adds r4, r1, 0
- bl npc_reset
- movs r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_805E4EC
-
- thumb_func_start MoveFieldObjectInNextDirectionInSequence
-MoveFieldObjectInNextDirectionInSequence: @ 805E500
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- mov r8, r1
- adds r7, r2, 0
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x3
- bne _0805E522
- ldr r1, [r4, 0xC]
- ldr r0, [r4, 0x10]
- cmp r1, r0
- bne _0805E522
- movs r0, 0
- strb r0, [r2]
-_0805E522:
- adds r5, r4, 0
- adds r5, 0x21
- ldrb r0, [r5]
- adds r0, r7, r0
- ldrb r1, [r0]
- adds r0, r4, 0
- bl FieldObjectSetDirection
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0805E57C
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldrb r0, [r5]
- adds r0, r7, r0
- ldrb r1, [r0]
- adds r0, r4, 0
- bl FieldObjectSetDirection
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetGoSpeed0AnimId
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r1, [r4, 0x18]
- lsrs r1, 4
- adds r0, r4, 0
- bl sub_805FF20
- lsls r0, 24
- lsrs r0, 24
-_0805E57C:
- cmp r0, 0
- beq _0805E58E
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetStepInPlaceDelay16AnimId
- lsls r0, 24
- lsrs r6, r0, 24
-_0805E58E:
- adds r0, r4, 0
- mov r1, r8
- adds r2, r6, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- mov r1, r8
- strh r0, [r1, 0x30]
- movs r0, 0x1
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end MoveFieldObjectInNextDirectionInSequence
-
- thumb_func_start sub_805E5B4
-sub_805E5B4: @ 805E5B4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl FieldObjectExecRegularAnim
- lsls r0, 24
- cmp r0, 0
- beq _0805E5D2
- ldrb r0, [r4]
- movs r1, 0x3
- negs r1, r1
- ands r1, r0
- strb r1, [r4]
- movs r0, 0x1
- strh r0, [r5, 0x30]
-_0805E5D2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_805E5B4
-
- thumb_func_start sub_805E5DC
-sub_805E5DC: @ 805E5DC
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E5F8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E5FC @ =sub_805E600
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E5F8: .4byte gMapObjects
-_0805E5FC: .4byte sub_805E600
- thumb_func_end sub_805E5DC
-
- thumb_func_start sub_805E600
-sub_805E600: @ 805E600
- push {r4,lr}
- ldr r3, _0805E61C @ =gUnknown_0837540C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E61C: .4byte gUnknown_0837540C
- thumb_func_end sub_805E600
-
- thumb_func_start sub_805E620
-sub_805E620: @ 805E620
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E664 @ =gUnknown_08375418
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E64C
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E64C
- movs r0, 0x3
- strb r0, [r2]
-_0805E64C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E664: .4byte gUnknown_08375418
- thumb_func_end sub_805E620
-
- thumb_func_start sub_805E668
-sub_805E668: @ 805E668
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E684 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E688 @ =sub_805E68C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E684: .4byte gMapObjects
-_0805E688: .4byte sub_805E68C
- thumb_func_end sub_805E668
-
- thumb_func_start sub_805E68C
-sub_805E68C: @ 805E68C
- push {r4,lr}
- ldr r3, _0805E6A8 @ =gUnknown_0837541C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E6A8: .4byte gUnknown_0837541C
- thumb_func_end sub_805E68C
-
- thumb_func_start sub_805E6AC
-sub_805E6AC: @ 805E6AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E6F0 @ =gUnknown_08375428
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E6D8
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E6D8
- movs r0, 0x2
- strb r0, [r2]
-_0805E6D8:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E6F0: .4byte gUnknown_08375428
- thumb_func_end sub_805E6AC
-
- thumb_func_start sub_805E6F4
-sub_805E6F4: @ 805E6F4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E710 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E714 @ =sub_805E718
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E710: .4byte gMapObjects
-_0805E714: .4byte sub_805E718
- thumb_func_end sub_805E6F4
-
- thumb_func_start sub_805E718
-sub_805E718: @ 805E718
- push {r4,lr}
- ldr r3, _0805E734 @ =gUnknown_0837542C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E734: .4byte gUnknown_0837542C
- thumb_func_end sub_805E718
-
- thumb_func_start sub_805E738
-sub_805E738: @ 805E738
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E77C @ =gUnknown_08375438
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E764
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E764
- movs r0, 0x2
- strb r0, [r2]
-_0805E764:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E77C: .4byte gUnknown_08375438
- thumb_func_end sub_805E738
-
- thumb_func_start sub_805E780
-sub_805E780: @ 805E780
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E79C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E7A0 @ =sub_805E7A4
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E79C: .4byte gMapObjects
-_0805E7A0: .4byte sub_805E7A4
- thumb_func_end sub_805E780
-
- thumb_func_start sub_805E7A4
-sub_805E7A4: @ 805E7A4
- push {r4,lr}
- ldr r3, _0805E7C0 @ =gUnknown_0837543C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E7C0: .4byte gUnknown_0837543C
- thumb_func_end sub_805E7A4
-
- thumb_func_start sub_805E7C4
-sub_805E7C4: @ 805E7C4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E808 @ =gUnknown_08375448
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E7F0
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E7F0
- movs r0, 0x3
- strb r0, [r2]
-_0805E7F0:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E808: .4byte gUnknown_08375448
- thumb_func_end sub_805E7C4
-
- thumb_func_start sub_805E80C
-sub_805E80C: @ 805E80C
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E828 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E82C @ =sub_805E830
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E828: .4byte gMapObjects
-_0805E82C: .4byte sub_805E830
- thumb_func_end sub_805E80C
-
- thumb_func_start sub_805E830
-sub_805E830: @ 805E830
- push {r4,lr}
- ldr r3, _0805E84C @ =gUnknown_0837544C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E84C: .4byte gUnknown_0837544C
- thumb_func_end sub_805E830
-
- thumb_func_start sub_805E850
-sub_805E850: @ 805E850
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E894 @ =gUnknown_08375458
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805E87C
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E87C
- movs r0, 0x3
- strb r0, [r2]
-_0805E87C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E894: .4byte gUnknown_08375458
- thumb_func_end sub_805E850
-
- thumb_func_start sub_805E898
-sub_805E898: @ 805E898
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E8B4 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E8B8 @ =sub_805E8BC
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E8B4: .4byte gMapObjects
-_0805E8B8: .4byte sub_805E8BC
- thumb_func_end sub_805E898
-
- thumb_func_start sub_805E8BC
-sub_805E8BC: @ 805E8BC
- push {r4,lr}
- ldr r3, _0805E8D8 @ =gUnknown_0837545C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E8D8: .4byte gUnknown_0837545C
- thumb_func_end sub_805E8BC
-
- thumb_func_start sub_805E8DC
-sub_805E8DC: @ 805E8DC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E920 @ =gUnknown_08375468
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E908
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E908
- movs r0, 0x2
- strb r0, [r2]
-_0805E908:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E920: .4byte gUnknown_08375468
- thumb_func_end sub_805E8DC
-
- thumb_func_start sub_805E924
-sub_805E924: @ 805E924
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E940 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E944 @ =sub_805E948
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E940: .4byte gMapObjects
-_0805E944: .4byte sub_805E948
- thumb_func_end sub_805E924
-
- thumb_func_start sub_805E948
-sub_805E948: @ 805E948
- push {r4,lr}
- ldr r3, _0805E964 @ =gUnknown_0837546C
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E964: .4byte gUnknown_0837546C
- thumb_func_end sub_805E948
-
- thumb_func_start sub_805E968
-sub_805E968: @ 805E968
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805E9AC @ =gUnknown_08375240
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805E994
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805E994
- movs r0, 0x2
- strb r0, [r2]
-_0805E994:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E9AC: .4byte gUnknown_08375240
- thumb_func_end sub_805E968
-
- thumb_func_start sub_805E9B0
-sub_805E9B0: @ 805E9B0
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805E9CC @ =gMapObjects
- adds r0, r2
- ldr r2, _0805E9D0 @ =sub_805E9D4
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805E9CC: .4byte gMapObjects
-_0805E9D0: .4byte sub_805E9D4
- thumb_func_end sub_805E9B0
-
- thumb_func_start sub_805E9D4
-sub_805E9D4: @ 805E9D4
- push {r4,lr}
- ldr r3, _0805E9F0 @ =gUnknown_08375478
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805E9F0: .4byte gUnknown_08375478
- thumb_func_end sub_805E9D4
-
- thumb_func_start sub_805E9F4
-sub_805E9F4: @ 805E9F4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EA38 @ =gUnknown_08375484
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EA20
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EA20
- movs r0, 0x3
- strb r0, [r2]
-_0805EA20:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EA38: .4byte gUnknown_08375484
- thumb_func_end sub_805E9F4
-
- thumb_func_start sub_805EA3C
-sub_805EA3C: @ 805EA3C
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EA58 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EA5C @ =sub_805EA60
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EA58: .4byte gMapObjects
-_0805EA5C: .4byte sub_805EA60
- thumb_func_end sub_805EA3C
-
- thumb_func_start sub_805EA60
-sub_805EA60: @ 805EA60
- push {r4,lr}
- ldr r3, _0805EA7C @ =gUnknown_08375488
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EA7C: .4byte gUnknown_08375488
- thumb_func_end sub_805EA60
-
- thumb_func_start sub_805EA80
-sub_805EA80: @ 805EA80
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EAC4 @ =gUnknown_08375494
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EAAC
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EAAC
- movs r0, 0x3
- strb r0, [r2]
-_0805EAAC:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EAC4: .4byte gUnknown_08375494
- thumb_func_end sub_805EA80
-
- thumb_func_start sub_805EAC8
-sub_805EAC8: @ 805EAC8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EAE4 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EAE8 @ =sub_805EAEC
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EAE4: .4byte gMapObjects
-_0805EAE8: .4byte sub_805EAEC
- thumb_func_end sub_805EAC8
-
- thumb_func_start sub_805EAEC
-sub_805EAEC: @ 805EAEC
- push {r4,lr}
- ldr r3, _0805EB08 @ =gUnknown_08375498
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EB08: .4byte gUnknown_08375498
- thumb_func_end sub_805EAEC
-
- thumb_func_start sub_805EB0C
-sub_805EB0C: @ 805EB0C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EB50 @ =gUnknown_083754A4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805EB38
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EB38
- movs r0, 0x2
- strb r0, [r2]
-_0805EB38:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EB50: .4byte gUnknown_083754A4
- thumb_func_end sub_805EB0C
-
- thumb_func_start sub_805EB54
-sub_805EB54: @ 805EB54
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EB70 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EB74 @ =sub_805EB78
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EB70: .4byte gMapObjects
-_0805EB74: .4byte sub_805EB78
- thumb_func_end sub_805EB54
-
- thumb_func_start sub_805EB78
-sub_805EB78: @ 805EB78
- push {r4,lr}
- ldr r3, _0805EB94 @ =gUnknown_083754A8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EB94: .4byte gUnknown_083754A8
- thumb_func_end sub_805EB78
-
- thumb_func_start sub_805EB98
-sub_805EB98: @ 805EB98
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EBDC @ =gUnknown_083754B4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805EBC4
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EBC4
- movs r0, 0x2
- strb r0, [r2]
-_0805EBC4:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EBDC: .4byte gUnknown_083754B4
- thumb_func_end sub_805EB98
-
- thumb_func_start sub_805EBE0
-sub_805EBE0: @ 805EBE0
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EBFC @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EC00 @ =sub_805EC04
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EBFC: .4byte gMapObjects
-_0805EC00: .4byte sub_805EC04
- thumb_func_end sub_805EBE0
-
- thumb_func_start sub_805EC04
-sub_805EC04: @ 805EC04
- push {r4,lr}
- ldr r3, _0805EC20 @ =gUnknown_083754B8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EC20: .4byte gUnknown_083754B8
- thumb_func_end sub_805EC04
-
- thumb_func_start sub_805EC24
-sub_805EC24: @ 805EC24
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EC68 @ =gUnknown_083754C4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EC50
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EC50
- movs r0, 0x3
- strb r0, [r2]
-_0805EC50:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EC68: .4byte gUnknown_083754C4
- thumb_func_end sub_805EC24
-
- thumb_func_start sub_805EC6C
-sub_805EC6C: @ 805EC6C
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EC88 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EC8C @ =sub_805EC90
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EC88: .4byte gMapObjects
-_0805EC8C: .4byte sub_805EC90
- thumb_func_end sub_805EC6C
-
- thumb_func_start sub_805EC90
-sub_805EC90: @ 805EC90
- push {r4,lr}
- ldr r3, _0805ECAC @ =gUnknown_083754C8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805ECAC: .4byte gUnknown_083754C8
- thumb_func_end sub_805EC90
-
- thumb_func_start sub_805ECB0
-sub_805ECB0: @ 805ECB0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805ECF4 @ =gUnknown_083754D4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805ECDC
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805ECDC
- movs r0, 0x3
- strb r0, [r2]
-_0805ECDC:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805ECF4: .4byte gUnknown_083754D4
- thumb_func_end sub_805ECB0
-
- thumb_func_start sub_805ECF8
-sub_805ECF8: @ 805ECF8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805ED14 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805ED18 @ =sub_805ED1C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805ED14: .4byte gMapObjects
-_0805ED18: .4byte sub_805ED1C
- thumb_func_end sub_805ECF8
-
- thumb_func_start sub_805ED1C
-sub_805ED1C: @ 805ED1C
- push {r4,lr}
- ldr r3, _0805ED38 @ =gUnknown_083754D8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805ED38: .4byte gUnknown_083754D8
- thumb_func_end sub_805ED1C
-
- thumb_func_start sub_805ED3C
-sub_805ED3C: @ 805ED3C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805ED80 @ =gUnknown_083754E4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805ED68
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805ED68
- movs r0, 0x2
- strb r0, [r2]
-_0805ED68:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805ED80: .4byte gUnknown_083754E4
- thumb_func_end sub_805ED3C
-
- thumb_func_start sub_805ED84
-sub_805ED84: @ 805ED84
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EDA0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EDA4 @ =sub_805EDA8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EDA0: .4byte gMapObjects
-_0805EDA4: .4byte sub_805EDA8
- thumb_func_end sub_805ED84
-
- thumb_func_start sub_805EDA8
-sub_805EDA8: @ 805EDA8
- push {r4,lr}
- ldr r3, _0805EDC4 @ =gUnknown_083754E8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EDC4: .4byte gUnknown_083754E8
- thumb_func_end sub_805EDA8
-
- thumb_func_start sub_805EDC8
-sub_805EDC8: @ 805EDC8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EE0C @ =gUnknown_083754F4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x1
- bne _0805EDF4
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EDF4
- movs r0, 0x2
- strb r0, [r2]
-_0805EDF4:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EE0C: .4byte gUnknown_083754F4
- thumb_func_end sub_805EDC8
-
- thumb_func_start sub_805EE10
-sub_805EE10: @ 805EE10
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EE2C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EE30 @ =sub_805EE34
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EE2C: .4byte gMapObjects
-_0805EE30: .4byte sub_805EE34
- thumb_func_end sub_805EE10
-
- thumb_func_start sub_805EE34
-sub_805EE34: @ 805EE34
- push {r4,lr}
- ldr r3, _0805EE50 @ =gUnknown_083754F8
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EE50: .4byte gUnknown_083754F8
- thumb_func_end sub_805EE34
-
- thumb_func_start sub_805EE54
-sub_805EE54: @ 805EE54
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EE98 @ =gUnknown_08375504
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EE80
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EE80
- movs r0, 0x3
- strb r0, [r2]
-_0805EE80:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EE98: .4byte gUnknown_08375504
- thumb_func_end sub_805EE54
-
- thumb_func_start sub_805EE9C
-sub_805EE9C: @ 805EE9C
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EEB8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EEBC @ =sub_805EEC0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EEB8: .4byte gMapObjects
-_0805EEBC: .4byte sub_805EEC0
- thumb_func_end sub_805EE9C
-
- thumb_func_start sub_805EEC0
-sub_805EEC0: @ 805EEC0
- push {r4,lr}
- ldr r3, _0805EEDC @ =gUnknown_08375508
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EEDC: .4byte gUnknown_08375508
- thumb_func_end sub_805EEC0
-
- thumb_func_start sub_805EEE0
-sub_805EEE0: @ 805EEE0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EF24 @ =gUnknown_08375514
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EF0C
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EF0C
- movs r0, 0x3
- strb r0, [r2]
-_0805EF0C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EF24: .4byte gUnknown_08375514
- thumb_func_end sub_805EEE0
-
- thumb_func_start sub_805EF28
-sub_805EF28: @ 805EF28
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EF44 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EF48 @ =sub_805EF4C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EF44: .4byte gMapObjects
-_0805EF48: .4byte sub_805EF4C
- thumb_func_end sub_805EF28
-
- thumb_func_start sub_805EF4C
-sub_805EF4C: @ 805EF4C
- push {r4,lr}
- ldr r3, _0805EF68 @ =gUnknown_08375518
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EF68: .4byte gUnknown_08375518
- thumb_func_end sub_805EF4C
-
- thumb_func_start sub_805EF6C
-sub_805EF6C: @ 805EF6C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805EFB0 @ =gUnknown_08375524
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805EF98
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805EF98
- movs r0, 0x3
- strb r0, [r2]
-_0805EF98:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EFB0: .4byte gUnknown_08375524
- thumb_func_end sub_805EF6C
-
- thumb_func_start sub_805EFB4
-sub_805EFB4: @ 805EFB4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805EFD0 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805EFD4 @ =sub_805EFD8
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805EFD0: .4byte gMapObjects
-_0805EFD4: .4byte sub_805EFD8
- thumb_func_end sub_805EFB4
-
- thumb_func_start sub_805EFD8
-sub_805EFD8: @ 805EFD8
- push {r4,lr}
- ldr r3, _0805EFF4 @ =gUnknown_08375528
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805EFF4: .4byte gUnknown_08375528
- thumb_func_end sub_805EFD8
-
- thumb_func_start sub_805EFF8
-sub_805EFF8: @ 805EFF8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F03C @ =gUnknown_08375534
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F024
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F024
- movs r0, 0x3
- strb r0, [r2]
-_0805F024:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F03C: .4byte gUnknown_08375534
- thumb_func_end sub_805EFF8
-
- thumb_func_start sub_805F040
-sub_805F040: @ 805F040
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805F05C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F060 @ =sub_805F064
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F05C: .4byte gMapObjects
-_0805F060: .4byte sub_805F064
- thumb_func_end sub_805F040
-
- thumb_func_start sub_805F064
-sub_805F064: @ 805F064
- push {r4,lr}
- ldr r3, _0805F080 @ =gUnknown_08375538
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F080: .4byte gUnknown_08375538
- thumb_func_end sub_805F064
-
- thumb_func_start sub_805F084
-sub_805F084: @ 805F084
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F0C8 @ =gUnknown_08375544
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F0B0
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F0B0
- movs r0, 0x3
- strb r0, [r2]
-_0805F0B0:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F0C8: .4byte gUnknown_08375544
- thumb_func_end sub_805F084
-
- thumb_func_start sub_805F0CC
-sub_805F0CC: @ 805F0CC
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805F0E8 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F0EC @ =sub_805F0F0
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F0E8: .4byte gMapObjects
-_0805F0EC: .4byte sub_805F0F0
- thumb_func_end sub_805F0CC
-
- thumb_func_start sub_805F0F0
-sub_805F0F0: @ 805F0F0
- push {r4,lr}
- ldr r3, _0805F10C @ =gUnknown_08375548
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F10C: .4byte gUnknown_08375548
- thumb_func_end sub_805F0F0
-
- thumb_func_start sub_805F110
-sub_805F110: @ 805F110
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F154 @ =gUnknown_08375554
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F13C
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F13C
- movs r0, 0x3
- strb r0, [r2]
-_0805F13C:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F154: .4byte gUnknown_08375554
- thumb_func_end sub_805F110
-
- thumb_func_start sub_805F158
-sub_805F158: @ 805F158
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805F174 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F178 @ =sub_805F17C
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F174: .4byte gMapObjects
-_0805F178: .4byte sub_805F17C
- thumb_func_end sub_805F158
-
- thumb_func_start sub_805F17C
-sub_805F17C: @ 805F17C
- push {r4,lr}
- ldr r3, _0805F198 @ =gUnknown_08375558
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F198: .4byte gUnknown_08375558
- thumb_func_end sub_805F17C
-
- thumb_func_start sub_805F19C
-sub_805F19C: @ 805F19C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F1E0 @ =gUnknown_08375564
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F1C8
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- movs r3, 0x12
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F1C8
- movs r0, 0x3
- strb r0, [r2]
-_0805F1C8:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F1E0: .4byte gUnknown_08375564
- thumb_func_end sub_805F19C
-
- thumb_func_start sub_805F1E4
-sub_805F1E4: @ 805F1E4
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805F200 @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F204 @ =sub_805F208
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F200: .4byte gMapObjects
-_0805F204: .4byte sub_805F208
- thumb_func_end sub_805F1E4
-
- thumb_func_start sub_805F208
-sub_805F208: @ 805F208
- push {r4,lr}
- ldr r3, _0805F224 @ =gUnknown_08375568
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F224: .4byte gUnknown_08375568
- thumb_func_end sub_805F208
-
- thumb_func_start sub_805F228
-sub_805F228: @ 805F228
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F26C @ =gUnknown_08375574
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F254
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F254
- movs r0, 0x3
- strb r0, [r2]
-_0805F254:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F26C: .4byte gUnknown_08375574
- thumb_func_end sub_805F228
-
- thumb_func_start sub_805F270
-sub_805F270: @ 805F270
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- ldr r2, _0805F28C @ =gMapObjects
- adds r0, r2
- ldr r2, _0805F290 @ =sub_805F294
- bl meta_step
- pop {r0}
- bx r0
- .align 2, 0
-_0805F28C: .4byte gMapObjects
-_0805F290: .4byte sub_805F294
- thumb_func_end sub_805F270
-
- thumb_func_start sub_805F294
-sub_805F294: @ 805F294
- push {r4,lr}
- ldr r3, _0805F2B0 @ =gUnknown_08375578
- movs r4, 0x30
- ldrsh r2, [r1, r4]
- lsls r2, 2
- adds r2, r3
- ldr r2, [r2]
- bl _call_via_r2
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F2B0: .4byte gUnknown_08375578
- thumb_func_end sub_805F294
-
- thumb_func_start sub_805F2B4
-sub_805F2B4: @ 805F2B4
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0805F2F8 @ =gUnknown_08375584
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _0805F2E0
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r1, r0
- bne _0805F2E0
- movs r0, 0x3
- strb r0, [r2]
-_0805F2E0:
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- bl MoveFieldObjectInNextDirectionInSequence
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F2F8: .4byte gUnknown_08375584
- thumb_func_end sub_805F2B4
-
thumb_func_start sub_805F2FC
sub_805F2FC: @ 805F2FC
push {lr}
@@ -7192,2933 +1348,10 @@ sub_805FD08: @ 805FD08
strb r1, [r0]
movs r0, 0
bx lr
- thumb_func_end sub_805FD08
-
- thumb_func_start npc_reset
-npc_reset: @ 805FD18
- ldrb r3, [r0]
- movs r2, 0x3
- negs r2, r2
- ands r2, r3
- movs r3, 0x41
- negs r3, r3
- ands r2, r3
- movs r3, 0x7F
- ands r2, r3
- strb r2, [r0]
- movs r2, 0xFF
- strb r2, [r0, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x30]
- bx lr
- thumb_func_end npc_reset
-
- thumb_func_start FieldObjectDirectionToImageAnimId
-FieldObjectDirectionToImageAnimId: @ 805FD38
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD44 @ =gUnknown_083755F4
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD44: .4byte gUnknown_083755F4
- thumb_func_end FieldObjectDirectionToImageAnimId
-
- thumb_func_start get_go_image_anim_num
-get_go_image_anim_num: @ 805FD48
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD54 @ =gUnknown_083755FD
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD54: .4byte gUnknown_083755FD
- thumb_func_end get_go_image_anim_num
-
- thumb_func_start get_go_fast_image_anim_num
-get_go_fast_image_anim_num: @ 805FD58
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD64 @ =gUnknown_08375606
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD64: .4byte gUnknown_08375606
- thumb_func_end get_go_fast_image_anim_num
-
- thumb_func_start get_go_faster_image_anim_num
-get_go_faster_image_anim_num: @ 805FD68
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD74 @ =gUnknown_0837560F
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD74: .4byte gUnknown_0837560F
- thumb_func_end get_go_faster_image_anim_num
-
- thumb_func_start sub_805FD78
-sub_805FD78: @ 805FD78
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD84 @ =gUnknown_08375618
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD84: .4byte gUnknown_08375618
- thumb_func_end sub_805FD78
-
- thumb_func_start sub_805FD88
-sub_805FD88: @ 805FD88
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FD94 @ =gUnknown_08375621
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FD94: .4byte gUnknown_08375621
- thumb_func_end sub_805FD88
-
- thumb_func_start sub_805FD98
-sub_805FD98: @ 805FD98
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDA4 @ =gUnknown_0837562A
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDA4: .4byte gUnknown_0837562A
- thumb_func_end sub_805FD98
-
- thumb_func_start unref_sub_805FDA8
-unref_sub_805FDA8: @ 805FDA8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDB4 @ =gUnknown_08375633
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDB4: .4byte gUnknown_08375633
- thumb_func_end unref_sub_805FDA8
-
- thumb_func_start sub_805FDB8
-sub_805FDB8: @ 805FDB8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDC4 @ =gUnknown_0837563C
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDC4: .4byte gUnknown_0837563C
- thumb_func_end sub_805FDB8
-
- thumb_func_start sub_805FDC8
-sub_805FDC8: @ 805FDC8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDD4 @ =gUnknown_08375645
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDD4: .4byte gUnknown_08375645
- thumb_func_end sub_805FDC8
-
- thumb_func_start sub_805FDD8
-sub_805FDD8: @ 805FDD8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDE4 @ =gUnknown_0837564E
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDE4: .4byte gUnknown_0837564E
- thumb_func_end sub_805FDD8
-
- thumb_func_start sub_805FDE8
-sub_805FDE8: @ 805FDE8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FDF4 @ =gUnknown_08375657
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FDF4: .4byte gUnknown_08375657
- thumb_func_end sub_805FDE8
-
- thumb_func_start sub_805FDF8
-sub_805FDF8: @ 805FDF8
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FE04 @ =gUnknown_08375660
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FE04: .4byte gUnknown_08375660
- thumb_func_end sub_805FDF8
-
- thumb_func_start sub_805FE08
-sub_805FE08: @ 805FE08
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FE14 @ =gUnknown_08375669
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FE14: .4byte gUnknown_08375669
- thumb_func_end sub_805FE08
-
- thumb_func_start get_run_image_anim_num
-get_run_image_anim_num: @ 805FE18
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FE24 @ =gUnknown_08375672
- adds r0, r1
- ldrb r0, [r0]
- bx lr
.align 2, 0
-_0805FE24: .4byte gUnknown_08375672
- thumb_func_end get_run_image_anim_num
-
- thumb_func_start sub_805FE28
-sub_805FE28: @ 805FE28
- push {r4,lr}
- adds r3, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r0, 0x1]
- lsls r0, 27
- lsrs r4, r0, 31
- cmp r4, 0
- bne _0805FE5E
- adds r0, r3, 0
- adds r0, 0x2A
- strb r2, [r0]
- adds r0, 0x1
- ldrb r2, [r0]
- adds r1, r0, 0
- cmp r2, 0x1
- bne _0805FE50
- movs r0, 0x2
- strb r0, [r1]
- b _0805FE56
-_0805FE50:
- cmp r2, 0x3
- bne _0805FE56
- strb r4, [r1]
-_0805FE56:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl SeekSpriteAnim
-_0805FE5E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_805FE28
-
- thumb_func_start sub_805FE64
-sub_805FE64: @ 805FE64
- push {lr}
- lsls r2, 24
- lsrs r2, 24
- ldrb r0, [r0, 0x1]
- lsls r0, 27
- cmp r0, 0
- blt _0805FE8C
- adds r0, r1, 0
- adds r0, 0x2A
- strb r2, [r0]
- movs r2, 0x3
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _0805FE84
- movs r2, 0x1
-_0805FE84:
- adds r0, r1, 0
- adds r1, r2, 0
- bl SeekSpriteAnim
-_0805FE8C:
- pop {r0}
- bx r0
- thumb_func_end sub_805FE64
-
- thumb_func_start sub_805FE90
-sub_805FE90: @ 805FE90
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- asrs r0, 16
- lsls r2, 16
- asrs r2, 16
- cmp r0, r2
- ble _0805FEAA
- movs r0, 0x3
- b _0805FEC0
-_0805FEAA:
- cmp r0, r2
- bge _0805FEB2
- movs r0, 0x4
- b _0805FEC0
-_0805FEB2:
- lsls r1, 16
- lsls r0, r3, 16
- cmp r1, r0
- bgt _0805FEBE
- movs r0, 0x1
- b _0805FEC0
-_0805FEBE:
- movs r0, 0x2
-_0805FEC0:
- pop {r1}
- bx r1
- thumb_func_end sub_805FE90
-
- thumb_func_start npc_set_running_behaviour_etc
-npc_set_running_behaviour_etc: @ 805FEC4
- push {r4,lr}
- mov r12, r0
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0
- strb r1, [r0, 0x6]
- adds r0, 0x21
- strb r3, [r0]
- adds r0, 0x1
- strb r3, [r0]
- ldr r4, _0805FF08 @ =gSprites
- mov r0, r12
- ldrb r2, [r0, 0x4]
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r2, r4, 0
- adds r2, 0x1C
- adds r0, r2
- ldr r2, _0805FF0C @ =gUnknown_0836DA88
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- str r1, [r0]
- mov r0, r12
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r3, [r0, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805FF08: .4byte gSprites
-_0805FF0C: .4byte gUnknown_0836DA88
- thumb_func_end npc_set_running_behaviour_etc
-
- thumb_func_start npc_running_behaviour_by_direction
-npc_running_behaviour_by_direction: @ 805FF10
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0805FF1C @ =gUnknown_0837567B
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0805FF1C: .4byte gUnknown_0837567B
- thumb_func_end npc_running_behaviour_by_direction
-
- thumb_func_start sub_805FF20
-sub_805FF20: @ 805FF20
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- lsls r5, r1, 24
- lsrs r5, 24
- ldrh r1, [r6, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r6, 0x12]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- adds r0, r5, 0
- mov r1, sp
- adds r2, r4, 0
- bl MoveCoords
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r4, r0]
- adds r0, r6, 0
- adds r3, r5, 0
- bl npc_block_way
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_805FF20
-
- thumb_func_start npc_block_way
-npc_block_way: @ 805FF60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r6, r0, 0
- lsls r1, 16
- lsls r2, 16
- lsls r3, 24
- lsrs r7, r3, 24
- mov r8, r7
- lsrs r0, r1, 16
- mov r9, r0
- asrs r5, r1, 16
- lsrs r0, r2, 16
- mov r10, r0
- asrs r4, r2, 16
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl IsCoordOutsideFieldObjectMovementRect
- lsls r0, 24
- cmp r0, 0
- beq _0805FF96
- movs r0, 0x1
- b _08060016
-_0805FF96:
- adds r0, r5, 0
- adds r1, r4, 0
- bl MapGridIsImpassableAt
- lsls r0, 24
- cmp r0, 0
- bne _0805FFD8
- adds r0, r5, 0
- adds r1, r4, 0
- bl GetMapBorderIdAt
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0805FFD8
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- adds r3, r7, 0
- bl IsMetatileDirectionallyImpassable
- lsls r0, 24
- cmp r0, 0
- bne _0805FFD8
- ldrb r0, [r6, 0x1]
- lsrs r0, 7
- cmp r0, 0
- beq _0805FFDC
- mov r0, r8
- bl CanCameraMoveInDirection
- cmp r0, 0
- bne _0805FFDC
-_0805FFD8:
- movs r0, 0x2
- b _08060016
-_0805FFDC:
- ldrb r0, [r6, 0xB]
- lsls r0, 28
- lsrs r0, 28
- mov r2, r9
- lsls r1, r2, 16
- asrs r5, r1, 16
- mov r2, r10
- lsls r1, r2, 16
- asrs r4, r1, 16
- adds r1, r5, 0
- adds r2, r4, 0
- bl IsZCoordMismatchAt
- lsls r0, 24
- cmp r0, 0
- beq _08060000
- movs r0, 0x3
- b _08060016
-_08060000:
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r4, 0
- bl CheckForCollisionBetweenFieldObjects
- lsls r0, 24
- cmp r0, 0
- bne _08060014
- movs r0, 0
- b _08060016
-_08060014:
- movs r0, 0x4
-_08060016:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end npc_block_way
-
- thumb_func_start sub_8060024
-sub_8060024: @ 8060024
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r7, r0, 0
- lsls r1, 16
- lsls r2, 16
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsrs r0, r1, 16
- mov r9, r0
- asrs r6, r1, 16
- lsrs r0, r2, 16
- mov r10, r0
- asrs r5, r2, 16
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl IsCoordOutsideFieldObjectMovementRect
- lsls r0, 24
- lsrs r0, 24
- negs r1, r0
- orrs r1, r0
- lsrs r4, r1, 31
- adds r0, r6, 0
- adds r1, r5, 0
- bl MapGridIsImpassableAt
- lsls r0, 24
- cmp r0, 0
- bne _0806009C
- adds r0, r6, 0
- adds r1, r5, 0
- bl GetMapBorderIdAt
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0806009C
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- mov r3, r8
- bl IsMetatileDirectionallyImpassable
- lsls r0, 24
- cmp r0, 0
- bne _0806009C
- ldrb r0, [r7, 0x1]
- lsrs r0, 7
- cmp r0, 0
- beq _080600A0
- mov r0, r8
- bl CanCameraMoveInDirection
- cmp r0, 0
- bne _080600A0
-_0806009C:
- movs r0, 0x2
- orrs r4, r0
-_080600A0:
- ldrb r0, [r7, 0xB]
- lsls r0, 28
- lsrs r0, 28
- mov r2, r9
- lsls r1, r2, 16
- asrs r6, r1, 16
- mov r2, r10
- lsls r1, r2, 16
- asrs r5, r1, 16
- adds r1, r6, 0
- adds r2, r5, 0
- bl IsZCoordMismatchAt
- lsls r0, 24
- cmp r0, 0
- beq _080600C8
- movs r0, 0x4
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080600C8:
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl CheckForCollisionBetweenFieldObjects
- lsls r0, 24
- cmp r0, 0
- beq _080600E0
- movs r0, 0x8
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080600E0:
- adds r0, r4, 0
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8060024
-
- thumb_func_start IsCoordOutsideFieldObjectMovementRect
-IsCoordOutsideFieldObjectMovementRect: @ 80600F0
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r2, 16
- lsrs r5, r2, 16
- ldrb r1, [r4, 0x19]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- beq _08060128
- lsls r1, 28
- lsrs r2, r1, 28
- ldrh r0, [r4, 0xC]
- subs r2, r0, r2
- lsrs r1, 28
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r2, 16
- lsls r0, r3, 16
- asrs r3, r0, 16
- cmp r2, r0
- bgt _08060154
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, r3
- blt _08060154
-_08060128:
- ldrb r1, [r4, 0x19]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _08060158
- lsls r1, 24
- lsrs r2, r1, 28
- ldrh r0, [r4, 0xE]
- subs r2, r0, r2
- lsrs r1, 28
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r2, 16
- lsls r0, r5, 16
- asrs r3, r0, 16
- cmp r2, r0
- bgt _08060154
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, r3
- bge _08060158
-_08060154:
- movs r0, 0x1
- b _0806015A
-_08060158:
- movs r0, 0
-_0806015A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end IsCoordOutsideFieldObjectMovementRect
-
- thumb_func_start IsMetatileDirectionallyImpassable
-IsMetatileDirectionallyImpassable: @ 8060160
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r7, r2, 16
- lsls r3, 24
- ldr r1, _080601A8 @ =gUnknown_08375684
- lsrs r3, 22
- subs r5, r3, 0x4
- adds r1, r5, r1
- ldrb r0, [r0, 0x1E]
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _080601A2
- ldr r4, _080601AC @ =gUnknown_08375694
- adds r4, r5, r4
- lsls r0, r6, 16
- asrs r0, 16
- lsls r1, r7, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _080601B0
-_080601A2:
- movs r0, 0x1
- b _080601B2
- .align 2, 0
-_080601A8: .4byte gUnknown_08375684
-_080601AC: .4byte gUnknown_08375694
-_080601B0:
- movs r0, 0
-_080601B2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end IsMetatileDirectionallyImpassable
-
- thumb_func_start CheckForCollisionBetweenFieldObjects
-CheckForCollisionBetweenFieldObjects: @ 80601B8
- push {r4-r7,lr}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r7, r1, 16
- movs r4, 0
- lsls r2, 16
- asrs r5, r2, 16
-_080601C6:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- ldr r1, _0806021C @ =gMapObjects
- adds r2, r0, r1
- ldrb r0, [r2]
- lsls r0, 31
- cmp r0, 0
- beq _08060220
- cmp r2, r6
- beq _08060220
- movs r0, 0x10
- ldrsh r1, [r2, r0]
- lsls r0, r7, 16
- asrs r3, r0, 16
- cmp r1, r3
- bne _080601F0
- movs r1, 0x12
- ldrsh r0, [r2, r1]
- cmp r0, r5
- beq _08060200
-_080601F0:
- movs r1, 0x14
- ldrsh r0, [r2, r1]
- cmp r0, r3
- bne _08060220
- movs r1, 0x16
- ldrsh r0, [r2, r1]
- cmp r0, r5
- bne _08060220
-_08060200:
- ldrb r0, [r6, 0xB]
- lsls r0, 28
- lsrs r0, 28
- ldrb r1, [r2, 0xB]
- lsls r1, 28
- lsrs r1, 28
- bl AreZCoordsCompatible
- lsls r0, 24
- cmp r0, 0
- beq _08060220
- movs r0, 0x1
- b _0806022C
- .align 2, 0
-_0806021C: .4byte gMapObjects
-_08060220:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080601C6
- movs r0, 0
-_0806022C:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end CheckForCollisionBetweenFieldObjects
-
- thumb_func_start sub_8060234
-sub_8060234: @ 8060234
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08060280
- ldr r3, _08060278 @ =gSprites
- ldr r2, _0806027C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x3C]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08060280
- movs r0, 0x1
- b _08060282
- .align 2, 0
-_08060278: .4byte gSprites
-_0806027C: .4byte gMapObjects
-_08060280:
- movs r0, 0
-_08060282:
- add sp, 0x4
- pop {r1}
- bx r1
- thumb_func_end sub_8060234
-
- thumb_func_start sub_8060288
-sub_8060288: @ 8060288
- push {lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _080602C6
- ldr r3, _080602CC @ =gSprites
- ldr r2, _080602D0 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r2, [r1, 0x3C]
- movs r0, 0x4
- orrs r0, r2
- strh r0, [r1, 0x3C]
-_080602C6:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080602CC: .4byte gSprites
-_080602D0: .4byte gMapObjects
- thumb_func_end sub_8060288
-
- thumb_func_start MoveCoords
-MoveCoords: @ 80602D4
- push {r4,lr}
- lsls r0, 24
- ldr r3, _080602F4 @ =gDirectionToVector
- lsrs r0, 22
- adds r0, r3
- ldrh r3, [r0]
- ldrh r4, [r1]
- adds r3, r4
- strh r3, [r1]
- ldrh r0, [r0, 0x2]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080602F4: .4byte gDirectionToVector
- thumb_func_end MoveCoords
-
- thumb_func_start unref_sub_80602F8
-unref_sub_80602F8: @ 80602F8
- push {r4,lr}
- lsls r0, 24
- ldr r3, _0806031C @ =gDirectionToVector
- lsrs r0, 22
- adds r0, r3
- ldrh r3, [r0]
- lsls r3, 4
- ldrh r4, [r1]
- adds r3, r4
- strh r3, [r1]
- ldrh r0, [r0, 0x2]
- lsls r0, 4
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0806031C: .4byte gDirectionToVector
- thumb_func_end unref_sub_80602F8
-
- thumb_func_start sub_8060320
-sub_8060320: @ 8060320
- push {r4-r7,lr}
- adds r4, r1, 0
- ldr r1, [sp, 0x14]
- lsls r0, 24
- lsls r3, 16
- lsrs r3, 16
- adds r7, r3, 0
- lsls r1, 16
- lsrs r6, r1, 16
- mov r12, r6
- ldr r1, _08060384 @ =gDirectionToVector
- lsrs r0, 22
- adds r5, r0, r1
- movs r0, 0
- ldrsh r1, [r5, r0]
- cmp r1, 0
- ble _0806034C
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r3, [r4]
- adds r0, r3
- strh r0, [r4]
-_0806034C:
- cmp r1, 0
- bge _0806035A
- ldrh r1, [r4]
- lsls r0, r7, 16
- asrs r0, 16
- subs r1, r0
- strh r1, [r4]
-_0806035A:
- movs r0, 0x2
- ldrsh r1, [r5, r0]
- cmp r1, 0
- ble _0806036C
- lsls r0, r6, 16
- asrs r0, 16
- ldrh r3, [r2]
- adds r0, r3
- strh r0, [r2]
-_0806036C:
- cmp r1, 0
- bge _0806037C
- ldrh r1, [r2]
- mov r3, r12
- lsls r0, r3, 16
- asrs r0, 16
- subs r1, r0
- strh r1, [r2]
-_0806037C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08060384: .4byte gDirectionToVector
- thumb_func_end sub_8060320
-
- thumb_func_start sub_8060388
-sub_8060388: @ 8060388
- push {r4,r5,lr}
- ldr r5, _080603C0 @ =gSaveBlock1
- ldrh r4, [r5]
- lsls r0, 16
- asrs r0, 16
- subs r0, r4
- lsls r0, 4
- strh r0, [r2]
- ldrh r0, [r5, 0x2]
- lsls r1, 16
- asrs r1, 16
- subs r1, r0
- lsls r1, 4
- strh r1, [r3]
- ldr r1, _080603C4 @ =gUnknown_0300489C
- ldrh r0, [r2]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2]
- ldr r1, _080603C8 @ =gUnknown_03004898
- ldrh r0, [r3]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r3]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080603C0: .4byte gSaveBlock1
-_080603C4: .4byte gUnknown_0300489C
-_080603C8: .4byte gUnknown_03004898
- thumb_func_end sub_8060388
-
- thumb_func_start sub_80603CC
-sub_80603CC: @ 80603CC
- push {r4-r7,lr}
- adds r7, r2, 0
- mov r12, r3
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r0, _0806045C @ =gUnknown_0300489C
- ldrh r0, [r0]
- negs r0, r0
- ldr r1, _08060460 @ =gUnknown_03004880
- ldr r2, [r1, 0x10]
- subs r0, r2
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, _08060464 @ =gUnknown_03004898
- ldrh r0, [r0]
- negs r0, r0
- ldr r1, [r1, 0x14]
- subs r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r2, 0
- ble _08060406
- lsls r0, r3, 16
- movs r3, 0x80
- lsls r3, 13
- adds r0, r3
- lsrs r3, r0, 16
-_08060406:
- cmp r2, 0
- bge _08060412
- lsls r0, r3, 16
- ldr r2, _08060468 @ =0xfff00000
- adds r0, r2
- lsrs r3, r0, 16
-_08060412:
- cmp r1, 0
- ble _08060420
- lsls r0, r4, 16
- movs r2, 0x80
- lsls r2, 13
- adds r0, r2
- lsrs r4, r0, 16
-_08060420:
- cmp r1, 0
- bge _0806042C
- lsls r0, r4, 16
- ldr r1, _08060468 @ =0xfff00000
- adds r0, r1
- lsrs r4, r0, 16
-_0806042C:
- ldr r2, _0806046C @ =gSaveBlock1
- ldrh r1, [r2]
- lsls r0, r5, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- lsls r1, r3, 16
- asrs r1, 16
- adds r1, r0
- strh r1, [r7]
- ldrh r1, [r2, 0x2]
- lsls r0, r6, 16
- asrs r0, 16
- subs r0, r1
- lsls r0, 4
- lsls r1, r4, 16
- asrs r1, 16
- adds r1, r0
- mov r2, r12
- strh r1, [r2]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806045C: .4byte gUnknown_0300489C
-_08060460: .4byte gUnknown_03004880
-_08060464: .4byte gUnknown_03004898
-_08060468: .4byte 0xfff00000
-_0806046C: .4byte gSaveBlock1
- thumb_func_end sub_80603CC
-
- thumb_func_start sub_8060470
-sub_8060470: @ 8060470
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r6, r0, 0
- mov r8, r1
- adds r4, r2, 0
- adds r5, r3, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- movs r1, 0
- ldrsh r0, [r6, r1]
- mov r2, r8
- movs r3, 0
- ldrsh r1, [r2, r3]
- adds r2, r6, 0
- mov r3, r8
- bl sub_80603CC
- lsls r4, 16
- asrs r4, 16
- ldrh r0, [r6]
- adds r4, r0
- strh r4, [r6]
- lsls r5, 16
- asrs r5, 16
- mov r1, r8
- ldrh r1, [r1]
- adds r5, r1
- mov r2, r8
- strh r5, [r2]
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8060470
-
- thumb_func_start GetFieldObjectMovingCameraOffset
-GetFieldObjectMovingCameraOffset: @ 80604BC
- push {lr}
- adds r2, r0, 0
- movs r0, 0
- strh r0, [r2]
- strh r0, [r1]
- ldr r3, _080604F8 @ =gUnknown_03004880
- ldr r0, [r3, 0x10]
- cmp r0, 0
- ble _080604D2
- movs r0, 0x1
- strh r0, [r2]
-_080604D2:
- ldr r0, [r3, 0x10]
- cmp r0, 0
- bge _080604DE
- ldrh r0, [r2]
- subs r0, 0x1
- strh r0, [r2]
-_080604DE:
- ldr r2, [r3, 0x14]
- cmp r2, 0
- ble _080604EA
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080604EA:
- cmp r2, 0
- bge _080604F4
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
-_080604F4:
- pop {r0}
- bx r0
- .align 2, 0
-_080604F8: .4byte gUnknown_03004880
- thumb_func_end GetFieldObjectMovingCameraOffset
-
- thumb_func_start FieldObjectMoveDestCoords
-FieldObjectMoveDestCoords: @ 80604FC
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- ldrh r4, [r0, 0x10]
- strh r4, [r2]
- ldrh r0, [r0, 0x12]
- strh r0, [r3]
- adds r0, r1, 0
- adds r1, r2, 0
- adds r2, r3, 0
- bl MoveCoords
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectMoveDestCoords
-
- thumb_func_start FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
-FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive: @ 806051C
- push {lr}
- ldrb r1, [r0]
- movs r0, 0x42
- ands r0, r1
- cmp r0, 0
- bne _0806052C
- movs r0, 0
- b _0806052E
-_0806052C:
- movs r0, 0x1
-_0806052E:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
-
- thumb_func_start FieldObjectIsSpecialAnimActive
-FieldObjectIsSpecialAnimActive: @ 8060534
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- bge _0806054A
- ldrb r0, [r1, 0x1C]
- cmp r0, 0xFF
- beq _0806054A
- movs r0, 0x1
- b _0806054C
-_0806054A:
- movs r0, 0
-_0806054C:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectIsSpecialAnimActive
-
- thumb_func_start FieldObjectSetSpecialAnim
-FieldObjectSetSpecialAnim: @ 8060550
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- bl FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _08060590
- adds r0, r4, 0
- bl UnfreezeMapObject
- strb r5, [r4, 0x1C]
- ldrb r0, [r4]
- movs r1, 0x40
- orrs r0, r1
- movs r1, 0x7F
- ands r0, r1
- strb r0, [r4]
- ldr r2, _0806058C @ =gSprites
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x32]
- movs r0, 0
- b _08060592
- .align 2, 0
-_0806058C: .4byte gSprites
-_08060590:
- movs r0, 0x1
-_08060592:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectSetSpecialAnim
-
- thumb_func_start FieldObjectForceSetSpecialAnim
-FieldObjectForceSetSpecialAnim: @ 8060598
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- bl FieldObjectClearAnimIfSpecialAnimActive
- adds r0, r5, 0
- adds r1, r4, 0
- bl FieldObjectSetSpecialAnim
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectForceSetSpecialAnim
-
- thumb_func_start FieldObjectClearAnimIfSpecialAnimActive
-FieldObjectClearAnimIfSpecialAnimActive: @ 80605B4
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- bge _080605C6
- adds r0, r1, 0
- bl FieldObjectClearAnim
-_080605C6:
- pop {r0}
- bx r0
- thumb_func_end FieldObjectClearAnimIfSpecialAnimActive
-
- thumb_func_start FieldObjectClearAnim
-FieldObjectClearAnim: @ 80605CC
- movs r1, 0xFF
- strb r1, [r0, 0x1C]
- ldrb r2, [r0]
- movs r1, 0x41
- negs r1, r1
- ands r1, r2
- movs r2, 0x7F
- ands r1, r2
- strb r1, [r0]
- ldr r3, _080605FC @ =gSprites
- ldrb r2, [r0, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- movs r2, 0
- strh r2, [r1, 0x30]
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- strh r2, [r0, 0x32]
- bx lr
- .align 2, 0
-_080605FC: .4byte gSprites
- thumb_func_end FieldObjectClearAnim
-
- thumb_func_start FieldObjectCheckIfSpecialAnimFinishedOrInactive
-FieldObjectCheckIfSpecialAnimFinishedOrInactive: @ 8060600
- push {lr}
- ldrb r1, [r0]
- lsls r0, r1, 25
- cmp r0, 0
- blt _0806060E
- movs r0, 0x10
- b _08060610
-_0806060E:
- lsrs r0, r1, 7
-_08060610:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectCheckIfSpecialAnimFinishedOrInactive
-
- thumb_func_start FieldObjectClearAnimIfSpecialAnimFinished
-FieldObjectClearAnimIfSpecialAnimFinished: @ 8060614
- push {r4,r5,lr}
- adds r5, r0, 0
- bl FieldObjectCheckIfSpecialAnimFinishedOrInactive
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0806062E
- cmp r4, 0x10
- beq _0806062E
- adds r0, r5, 0
- bl FieldObjectClearAnimIfSpecialAnimActive
-_0806062E:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectClearAnimIfSpecialAnimFinished
-
- thumb_func_start FieldObjectGetSpecialAnim
-FieldObjectGetSpecialAnim: @ 8060638
- push {lr}
- adds r1, r0, 0
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08060648
- movs r0, 0xFF
- b _0806064A
-_08060648:
- ldrb r0, [r1, 0x1C]
-_0806064A:
- pop {r1}
- bx r1
- thumb_func_end FieldObjectGetSpecialAnim
-
- thumb_func_start meta_step
-meta_step: @ 8060650
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- bl DoGroundEffects_OnSpawn
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80634A0
- adds r0, r4, 0
- bl FieldObjectIsSpecialAnimActive
- lsls r0, 24
- cmp r0, 0
- beq _0806067A
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectExecSpecialAnim
- b _08060690
-_0806067A:
- ldrb r0, [r4, 0x1]
- lsls r0, 31
- cmp r0, 0
- bne _08060690
-_08060682:
- adds r0, r4, 0
- adds r1, r5, 0
- bl _call_via_r6
- lsls r0, 24
- cmp r0, 0
- bne _08060682
-_08060690:
- adds r0, r4, 0
- adds r1, r5, 0
- bl DoGroundEffects_OnBeginStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl DoGroundEffects_OnFinishStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl npc_obj_transfer_image_anim_pause_flag
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80634D0
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectUpdateSubpriority
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end meta_step
-
- thumb_func_start GetFaceDirectionAnimId
-GetFaceDirectionAnimId: @ 80606C0
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080606E8 @ =gUnknown_083756C8
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080606D8
- movs r4, 0
-_080606D8:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080606E8: .4byte gUnknown_083756C8
- thumb_func_end GetFaceDirectionAnimId
-
- thumb_func_start GetSimpleGoAnimId
-GetSimpleGoAnimId: @ 80606EC
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060714 @ =gUnknown_083756CD
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060704
- movs r4, 0
-_08060704:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060714: .4byte gUnknown_083756CD
- thumb_func_end GetSimpleGoAnimId
-
- thumb_func_start GetGoSpeed0AnimId
-GetGoSpeed0AnimId: @ 8060718
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060740 @ =gUnknown_083756D2
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060730
- movs r4, 0
-_08060730:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060740: .4byte gUnknown_083756D2
- thumb_func_end GetGoSpeed0AnimId
-
- thumb_func_start sub_8060744
-sub_8060744: @ 8060744
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0806076C @ =gUnknown_083756D7
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _0806075C
- movs r4, 0
-_0806075C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806076C: .4byte gUnknown_083756D7
- thumb_func_end sub_8060744
-
- thumb_func_start d2s_08064034
-d2s_08064034: @ 8060770
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060798 @ =gUnknown_083756DC
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060788
- movs r4, 0
-_08060788:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060798: .4byte gUnknown_083756DC
- thumb_func_end d2s_08064034
-
- thumb_func_start sub_806079C
-sub_806079C: @ 806079C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080607C4 @ =gUnknown_083756E1
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080607B4
- movs r4, 0
-_080607B4:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080607C4: .4byte gUnknown_083756E1
- thumb_func_end sub_806079C
-
- thumb_func_start sub_80607C8
-sub_80607C8: @ 80607C8
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080607F0 @ =gUnknown_083756E6
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080607E0
- movs r4, 0
-_080607E0:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080607F0: .4byte gUnknown_083756E6
- thumb_func_end sub_80607C8
-
- thumb_func_start sub_80607F4
-sub_80607F4: @ 80607F4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0806081C @ =gUnknown_083756EB
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _0806080C
- movs r4, 0
-_0806080C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806081C: .4byte gUnknown_083756EB
- thumb_func_end sub_80607F4
-
- thumb_func_start GetJumpLedgeAnimId
-GetJumpLedgeAnimId: @ 8060820
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060848 @ =gUnknown_083756F0
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060838
- movs r4, 0
-_08060838:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060848: .4byte gUnknown_083756F0
- thumb_func_end GetJumpLedgeAnimId
-
- thumb_func_start sub_806084C
-sub_806084C: @ 806084C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060874 @ =gUnknown_083756F5
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060864
- movs r4, 0
-_08060864:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060874: .4byte gUnknown_083756F5
- thumb_func_end sub_806084C
-
- thumb_func_start sub_8060878
-sub_8060878: @ 8060878
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080608A0 @ =gUnknown_083756FA
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060890
- movs r4, 0
-_08060890:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080608A0: .4byte gUnknown_083756FA
- thumb_func_end sub_8060878
-
- thumb_func_start sub_80608A4
-sub_80608A4: @ 80608A4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080608CC @ =gUnknown_083756FF
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080608BC
- movs r4, 0
-_080608BC:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080608CC: .4byte gUnknown_083756FF
- thumb_func_end sub_80608A4
-
- thumb_func_start sub_80608D0
-sub_80608D0: @ 80608D0
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080608F8 @ =gUnknown_08375704
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080608E8
- movs r4, 0
-_080608E8:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080608F8: .4byte gUnknown_08375704
- thumb_func_end sub_80608D0
-
- thumb_func_start GetStepInPlaceDelay32AnimId
-GetStepInPlaceDelay32AnimId: @ 80608FC
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060924 @ =gUnknown_08375709
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060914
- movs r4, 0
-_08060914:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060924: .4byte gUnknown_08375709
- thumb_func_end GetStepInPlaceDelay32AnimId
-
- thumb_func_start GetStepInPlaceDelay16AnimId
-GetStepInPlaceDelay16AnimId: @ 8060928
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060950 @ =gUnknown_0837570E
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060940
- movs r4, 0
-_08060940:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060950: .4byte gUnknown_0837570E
- thumb_func_end GetStepInPlaceDelay16AnimId
-
- thumb_func_start GetStepInPlaceDelay8AnimId
-GetStepInPlaceDelay8AnimId: @ 8060954
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0806097C @ =gUnknown_08375713
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _0806096C
- movs r4, 0
-_0806096C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0806097C: .4byte gUnknown_08375713
- thumb_func_end GetStepInPlaceDelay8AnimId
-
- thumb_func_start GetStepInPlaceDelay4AnimId
-GetStepInPlaceDelay4AnimId: @ 8060980
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _080609A8 @ =gUnknown_08375718
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060998
- movs r4, 0
-_08060998:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_080609A8: .4byte gUnknown_08375718
- thumb_func_end GetStepInPlaceDelay4AnimId
-
- thumb_func_start FieldObjectFaceOppositeDirection
-FieldObjectFaceOppositeDirection: @ 80609AC
- push {r4,lr}
- adds r4, r0, 0
- lsls r0, r1, 24
- lsrs r0, 24
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetFaceDirectionAnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectFaceOppositeDirection
-
- thumb_func_start sub_80609D8
-sub_80609D8: @ 80609D8
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A00 @ =gUnknown_0837571D
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _080609F0
- movs r4, 0
-_080609F0:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A00: .4byte gUnknown_0837571D
- thumb_func_end sub_80609D8
-
- thumb_func_start sub_8060A04
-sub_8060A04: @ 8060A04
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A2C @ =gUnknown_08375722
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060A1C
- movs r4, 0
-_08060A1C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A2C: .4byte gUnknown_08375722
- thumb_func_end sub_8060A04
-
- thumb_func_start sub_8060A30
-sub_8060A30: @ 8060A30
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A58 @ =gUnknown_08375727
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060A48
- movs r4, 0
-_08060A48:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A58: .4byte gUnknown_08375727
- thumb_func_end sub_8060A30
-
- thumb_func_start sub_8060A5C
-sub_8060A5C: @ 8060A5C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060A84 @ =gUnknown_0837572C
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060A74
- movs r4, 0
-_08060A74:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060A84: .4byte gUnknown_0837572C
- thumb_func_end sub_8060A5C
-
- thumb_func_start sub_8060A88
-sub_8060A88: @ 8060A88
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060AB0 @ =gUnknown_08375731
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060AA0
- movs r4, 0
-_08060AA0:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060AB0: .4byte gUnknown_08375731
- thumb_func_end sub_8060A88
-
- thumb_func_start sub_8060AB4
-sub_8060AB4: @ 8060AB4
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060ADC @ =gUnknown_08375736
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060ACC
- movs r4, 0
-_08060ACC:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060ADC: .4byte gUnknown_08375736
- thumb_func_end sub_8060AB4
-
- thumb_func_start sub_8060AE0
-sub_8060AE0: @ 8060AE0
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B08 @ =gUnknown_0837573B
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060AF8
- movs r4, 0
-_08060AF8:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B08: .4byte gUnknown_0837573B
- thumb_func_end sub_8060AE0
-
- thumb_func_start sub_8060B0C
-sub_8060B0C: @ 8060B0C
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B34 @ =gUnknown_08375740
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060B24
- movs r4, 0
-_08060B24:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B34: .4byte gUnknown_08375740
- thumb_func_end sub_8060B0C
-
- thumb_func_start sub_8060B38
-sub_8060B38: @ 8060B38
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B60 @ =gUnknown_08375745
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060B50
- movs r4, 0
-_08060B50:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B60: .4byte gUnknown_08375745
- thumb_func_end sub_8060B38
-
- thumb_func_start sub_8060B64
-sub_8060B64: @ 8060B64
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060B8C @ =gUnknown_0837574A
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- cmp r4, 0x4
- bls _08060B7C
- movs r4, 0
-_08060B7C:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060B8C: .4byte gUnknown_0837574A
- thumb_func_end sub_8060B64
-
- thumb_func_start GetOppositeDirection
-GetOppositeDirection: @ 8060B90
- push {r4,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _08060BB4 @ =gUnknown_0837574F
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- subs r1, r4, 0x1
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _08060BB8
- mov r2, sp
- adds r0, r2, r1
- ldrb r0, [r0]
- b _08060BBA
- .align 2, 0
-_08060BB4: .4byte gUnknown_0837574F
-_08060BB8:
- adds r0, r4, 0
-_08060BBA:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetOppositeDirection
-
- thumb_func_start zffu_offset_calc
-zffu_offset_calc: @ 8060BC4
- lsls r0, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08060BD8 @ =gUnknown_08375757
- lsrs r0, 22
- subs r0, 0x5
- adds r1, r0
- adds r1, r2
- ldrb r0, [r1]
- bx lr
- .align 2, 0
-_08060BD8: .4byte gUnknown_08375757
- thumb_func_end zffu_offset_calc
-
- thumb_func_start state_to_direction
-state_to_direction: @ 8060BDC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r0, r1, 0
- lsls r2, 24
- lsrs r2, 24
- cmp r1, 0
- beq _08060BFC
- cmp r2, 0
- beq _08060BFC
- cmp r1, 0x4
- bhi _08060BFC
- cmp r2, 0x4
- bls _08060C00
-_08060BFC:
- movs r0, 0
- b _08060C12
-_08060C00:
- adds r1, r2, 0
- bl zffu_offset_calc
- ldr r2, _08060C18 @ =gUnknown_08375767
- lsls r1, r4, 2
- subs r1, 0x5
- adds r0, r1
- adds r0, r2
- ldrb r0, [r0]
-_08060C12:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08060C18: .4byte gUnknown_08375767
- thumb_func_end state_to_direction
-
- thumb_func_start FieldObjectExecSpecialAnim
-FieldObjectExecSpecialAnim: @ 8060C1C
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _08060C50 @ =gUnknown_08375778
- ldrb r0, [r4, 0x1C]
- lsls r0, 2
- adds r0, r2
- movs r3, 0x32
- ldrsh r2, [r1, r3]
- ldr r0, [r0]
- lsls r2, 2
- adds r2, r0
- ldr r2, [r2]
- adds r0, r4, 0
- bl _call_via_r2
- lsls r0, 24
- cmp r0, 0
- beq _08060C48
- ldrb r0, [r4]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r4]
-_08060C48:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08060C50: .4byte gUnknown_08375778
- thumb_func_end FieldObjectExecSpecialAnim
-
- thumb_func_start FieldObjectExecRegularAnim
-FieldObjectExecRegularAnim: @ 8060C54
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _08060C80 @ =gUnknown_08375778
- ldrb r0, [r4, 0x1C]
- lsls r0, 2
- adds r0, r1
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- ldr r0, [r0]
- lsls r1, 2
- adds r1, r0
- ldr r2, [r1]
- adds r0, r4, 0
- adds r1, r5, 0
- bl _call_via_r2
- lsls r0, 24
- cmp r0, 0
- bne _08060C84
- movs r0, 0
- b _08060C8E
- .align 2, 0
-_08060C80: .4byte gUnknown_08375778
-_08060C84:
- movs r0, 0xFF
- strb r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08060C8E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectExecRegularAnim
-
- thumb_func_start FieldObjectSetRegularAnim
-FieldObjectSetRegularAnim: @ 8060C94
- movs r3, 0
- strb r2, [r0, 0x1C]
- strh r3, [r1, 0x32]
- bx lr
- thumb_func_end FieldObjectSetRegularAnim
-
- thumb_func_start an_look_any
-an_look_any: @ 8060C9C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r1, r2, 24
- lsrs r1, 24
- bl FieldObjectSetDirection
- adds r0, r4, 0
- bl npc_coords_shift_still
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl get_go_image_anim_num
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805FE64
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
- strh r0, [r5, 0x32]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end an_look_any
-
- thumb_func_start sub_8060CE0
-sub_8060CE0: @ 8060CE0
- push {lr}
- movs r2, 0x1
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060CE0
-
- thumb_func_start sub_8060CF0
-sub_8060CF0: @ 8060CF0
- push {lr}
- movs r2, 0x2
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060CF0
-
- thumb_func_start sub_8060D00
-sub_8060D00: @ 8060D00
- push {lr}
- movs r2, 0x3
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060D00
-
- thumb_func_start sub_8060D10
-sub_8060D10: @ 8060D10
- push {lr}
- movs r2, 0x4
- bl an_look_any
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_8060D10
-
- thumb_func_start sub_8060D20
-sub_8060D20: @ 8060D20
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- mov r8, r0
- mov r9, r1
- adds r4, r2, 0
- adds r6, r3, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- ldrh r1, [r0, 0x10]
- mov r0, sp
- strh r1, [r0]
- mov r1, r8
- ldrh r0, [r1, 0x12]
- mov r5, sp
- adds r5, 0x2
- strh r0, [r5]
- mov r0, r8
- adds r1, r4, 0
- bl FieldObjectSetDirection
- adds r0, r4, 0
- mov r1, sp
- adds r2, r5, 0
- bl MoveCoords
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- mov r0, r8
- bl npc_coords_shift
- mov r0, r9
- adds r1, r4, 0
- adds r2, r6, 0
- bl oamt_npc_ministep_reset
- mov r2, r9
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x4
- orrs r0, r1
- mov r2, r8
- strb r0, [r2]
- movs r0, 0x1
- mov r1, r9
- strh r0, [r1, 0x32]
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8060D20
-
- thumb_func_start do_go_anim
-do_go_anim: @ 8060DA4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r5, r0, 0
- mov r8, r1
- adds r4, r3, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 24
- lsrs r4, 24
- mov r1, sp
- ldr r0, _08060DFC @ =gUnknown_083759C0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6}
- stm r1!, {r3,r6}
- adds r0, r5, 0
- mov r1, r8
- adds r3, r4, 0
- bl sub_8060D20
- lsls r4, 2
- mov r7, sp
- adds r1, r7, r4
- ldrb r0, [r5, 0x18]
- lsls r0, 28
- lsrs r0, 28
- ldr r1, [r1]
- bl _call_via_r1
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- mov r1, r8
- bl sub_805FE28
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08060DFC: .4byte gUnknown_083759C0
- thumb_func_end do_go_anim
-
- thumb_func_start do_run_anim
-do_run_anim: @ 8060E00
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0x1
- bl sub_8060D20
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl get_run_image_anim_num
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805FE28
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end do_run_anim
-
- thumb_func_start npc_obj_ministep_stop_on_arrival
-npc_obj_ministep_stop_on_arrival: @ 8060E30
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl obj_npc_ministep
- lsls r0, 24
- cmp r0, 0
- bne _08060E46
- movs r0, 0
- b _08060E62
-_08060E46:
- adds r0, r4, 0
- bl npc_coords_shift_still
- ldrb r0, [r4]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
-_08060E62:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end npc_obj_ministep_stop_on_arrival
-
- thumb_func_start sub_8060E68
-sub_8060E68: @ 8060E68
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r6, r0, 0
- mov r8, r1
- lsls r5, r2, 24
- lsrs r5, 24
- ldrh r1, [r6, 0x10]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r6, 0x12]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- adds r0, r6, 0
- adds r1, r5, 0
- bl FieldObjectSetDirection
- adds r0, r5, 0
- mov r1, sp
- adds r2, r4, 0
- bl MoveCoords
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r4, r0]
- adds r0, r6, 0
- bl npc_coords_shift
- mov r0, r8
- adds r1, r5, 0
- bl sub_806467C
- mov r2, r8
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r6]
- movs r0, 0x1
- mov r1, r8
- strh r0, [r1, 0x32]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8060E68
-
- thumb_func_start sub_8060ED8
-sub_8060ED8: @ 8060ED8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- bl sub_8060E68
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl get_go_image_anim_num
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805FE28
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8060ED8
-
- thumb_func_start an_walk_any_2
-an_walk_any_2: @ 8060F04
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r0, r5, 0
- bl sub_806468C
- lsls r0, 24
- cmp r0, 0
- bne _08060F1A
- movs r0, 0
- b _08060F36
-_08060F1A:
- adds r0, r4, 0
- bl npc_coords_shift_still
- ldrb r0, [r4]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r4]
- adds r2, r5, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x1
-_08060F36:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end an_walk_any_2
-
- thumb_func_start sub_8060F3C
-sub_8060F3C: @ 8060F3C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8060F5C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F3C
-
- thumb_func_start sub_8060F5C
-sub_8060F5C: @ 8060F5C
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _08060F6E
- movs r0, 0
- b _08060F74
-_08060F6E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08060F74:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F5C
-
- thumb_func_start sub_8060F7C
-sub_8060F7C: @ 8060F7C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8060F9C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F7C
-
- thumb_func_start sub_8060F9C
-sub_8060F9C: @ 8060F9C
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _08060FAE
- movs r0, 0
- b _08060FB4
-_08060FAE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08060FB4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8060F9C
-
- thumb_func_start sub_8060FBC
-sub_8060FBC: @ 8060FBC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8060FDC
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060FBC
-
- thumb_func_start sub_8060FDC
-sub_8060FDC: @ 8060FDC
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _08060FEE
- movs r0, 0
- b _08060FF4
-_08060FEE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08060FF4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8060FDC
-
- thumb_func_start sub_8060FFC
-sub_8060FFC: @ 8060FFC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- bl sub_8060ED8
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806101C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8060FFC
-
- thumb_func_start sub_806101C
-sub_806101C: @ 806101C
- push {r4,lr}
- adds r4, r1, 0
- bl an_walk_any_2
- lsls r0, 24
- cmp r0, 0
- bne _0806102E
- movs r0, 0
- b _08061034
-_0806102E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061034:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806101C
-
- thumb_func_start sub_806103C
-sub_806103C: @ 806103C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806105C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806103C
-
- thumb_func_start sub_806105C
-sub_806105C: @ 806105C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _0806106E
- movs r0, 0
- b _08061074
-_0806106E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061074:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806105C
-
- thumb_func_start sub_806107C
-sub_806107C: @ 806107C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806109C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806107C
-
- thumb_func_start sub_806109C
-sub_806109C: @ 806109C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _080610AE
- movs r0, 0
- b _080610B4
-_080610AE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_080610B4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806109C
-
- thumb_func_start sub_80610BC
-sub_80610BC: @ 80610BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80610DC
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80610BC
-
- thumb_func_start sub_80610DC
-sub_80610DC: @ 80610DC
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _080610EE
- movs r0, 0
- b _080610F4
-_080610EE:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_080610F4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80610DC
-
- thumb_func_start sub_80610FC
-sub_80610FC: @ 80610FC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- movs r3, 0
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806111C
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80610FC
+ thumb_func_end sub_805FD08
- thumb_func_start sub_806111C
-sub_806111C: @ 806111C
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _0806112E
- movs r0, 0
- b _08061134
-_0806112E:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061134:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_806111C
+ .section .text_805fd18
thumb_func_start sub_806113C
sub_806113C: @ 806113C
diff --git a/include/asm.inc.h b/include/asm.inc.h
index 3db79b128..9bd8324ad 100644
--- a/include/asm.inc.h
+++ b/include/asm.inc.h
@@ -1,6 +1,14 @@
// src/rom3.o
void sub_800C35C(void);
+struct UnkStruct8060024 {
+ u8 outsideMovementRect:1;
+ u8 tileIsImpassable:1;
+ u8 elevationMismatch:1;
+ u8 pathBlockedByObject:1;
+ u8 pad_04:4;
+};
+
// asm/battle_2.o
void sub_800E7C4(void);
u8 b_first_side(u8, u8, u8);
@@ -120,7 +128,7 @@ u8 sub_80608D0(u8);
u8 GetStepInPlaceDelay32AnimId(u8 a);
u8 GetStepInPlaceDelay16AnimId(u8);
u8 GetStepInPlaceDelay8AnimId(u8 a);
-u8 FieldObjectFaceOppositeDirection(void *, u8);
+u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8);
u8 sub_80609D8(u8);
u8 sub_8060A04(u8);
u8 sub_8060A30(u8);
diff --git a/include/data2.h b/include/data2.h
new file mode 100644
index 000000000..987c7cb2e
--- /dev/null
+++ b/include/data2.h
@@ -0,0 +1,46 @@
+#ifndef GUARD_DATA2_H
+#define GUARD_DATA2_H
+
+#include "sprite.h"
+
+struct UnknownStructD2 {
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+};
+
+struct MonCoords
+{
+ // This would use a bitfield, but sub_8079F44
+ // uses it as a u8 and casting won't match.
+ u8 coords; // u8 x:4, y:4;
+ u8 y_offset;
+};
+
+extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18;
+extern const union AnimCmd *const gSpriteAnimTable_81E7C64[];
+extern struct MonCoords gMonFrontPicCoords[];
+extern struct MonCoords gMonBackPicCoords[];
+extern struct SpriteSheet gMonFrontPicTable[];
+extern struct SpriteSheet gMonBackPicTable[];
+extern const struct SpritePalette gMonPaletteTable[];
+extern const struct SpritePalette gMonShinyPaletteTable[];
+extern const union AnimCmd *const *const gUnknown_081EC2A4[];
+extern const union AnimCmd *const *const gUnknown_081ECACC[];
+extern struct MonCoords gTrainerBackPicCoords[];
+extern struct SpriteSheet gTrainerBackPicTable[];
+extern struct SpritePalette gTrainerBackPicPaletteTable[];
+extern u8 gEnemyMonElevation[];
+extern const u8 gTrainerClassNames[][13];
+extern const struct Trainer gTrainers[];
+extern u8 gSpeciesNames[][11];
+extern u8 gMoveNames[][13];
+extern const struct UnknownStructD2 gUnknown_081F9674;
+extern const u8 gUnknown_081F96C8[];
+extern struct SpriteSheet gUnknown_081FAEA4;
+extern struct SpritePalette gUnknown_081FAEAC;
+extern const struct SpriteTemplate gSpriteTemplate_81FAF0C;
+extern void *gUnknown_081FAF4C[];
+extern struct BattleMove gBattleMoves[];
+
+#endif // GUARD_DATA2_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 51c370d0a..9021b579e 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -1,6 +1,16 @@
#ifndef GUARD_FIELD_CAMERA_H
#define GUARD_FIELD_CAMERA_H
+struct CameraSomething
+{
+ void (*callback)(struct CameraSomething *);
+ u32 unk4;
+ s32 unk8;
+ s32 unkC;
+ s32 unk10;
+ s32 unk14;
+};
+
void move_tilemap_camera_to_upper_left_corner(void);
void sub_8057A58(void);
void sub_8057B14(u16 *a, u16 *b);
diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h
new file mode 100644
index 000000000..8a69426b3
--- /dev/null
+++ b/include/field_ground_effect.h
@@ -0,0 +1,11 @@
+//
+// Created by Scott Norton on 5/22/17.
+//
+
+#ifndef POKERUBY_FIELD_GROUND_EFFECT_H
+#define POKERUBY_FIELD_GROUND_EFFECT_H
+
+bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y);
+bool8 AreZCoordsCompatible(u8 z1, u8 z2);
+
+#endif //POKERUBY_FIELD_GROUND_EFFECT_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index dfc41d38b..2bd875f17 100644..100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -3,9 +3,90 @@
#include "sprite.h"
+#define fieldmap_object_cb(setup, callback, table) \
+extern u8 (*const table[])(struct MapObject *, struct Sprite *);\
+static u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return table[sprite->data1](mapObject, sprite);\
+}
+
+#define fieldmap_object_null_cb(setup, callback) \
+static u8 callback(struct MapObject *, struct Sprite *);\
+void setup(struct Sprite *sprite)\
+{\
+ meta_step(&gMapObjects[sprite->data0], sprite, callback);\
+}\
+static u8 callback(struct MapObject *mapObject, struct Sprite *sprite)\
+{\
+ return 0;\
+}
+
+
void sub_805C058(struct MapObject *mapObject, s16 a, s16 b);
void FieldObjectSetDirection(struct MapObject *pObject, u8 unk_18);
void MoveCoords(u8 direction, s16 *x, s16 *y);
-void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u32 (*d8)());
+void meta_step(struct MapObject *pObject, struct Sprite *pSprite, u8 (*d8)(struct MapObject *, struct Sprite *));
+void npc_reset(struct MapObject *mapObject, struct Sprite *sprite);
+
+extern const u8 gUnknown_08375240[4];
+extern u8 (*const gUnknown_08375244[])(s16 a0, s16 a1, s16 a2, s16 a3);
+extern bool8 (*const gUnknown_08375684[4])(u8);
+extern bool8 (*const gUnknown_08375694[4])(u8);
+
+extern const u8 gUnknown_083752A0[2];
+extern const u8 gUnknown_083752C0[2];
+extern const u8 gUnknown_08375320[2];
+extern const u8 gUnknown_08375338[2];
+extern const u8 gUnknown_08375350[2];
+extern const u8 gUnknown_08375368[2];
+extern const u8 gUnknown_08375380[2];
+extern const u8 gUnknown_08375398[2];
+extern const u8 gUnknown_083753B0[2];
+extern const u8 gUnknown_083753C8[2];
+extern const u8 gUnknown_083753DC[5];
+extern const u8 gUnknown_083753F4[5];
+extern const u8 gUnknown_08375418[4];
+extern const u8 gUnknown_08375428[4];
+extern const u8 gUnknown_08375438[4];
+extern const u8 gUnknown_08375448[4];
+extern const u8 gUnknown_08375458[4];
+extern const u8 gUnknown_08375468[4];
+extern const u8 gUnknown_08375240[4];
+extern const u8 gUnknown_08375484[4];
+extern const u8 gUnknown_08375494[4];
+extern const u8 gUnknown_083754A4[4];
+extern const u8 gUnknown_083754B4[4];
+extern const u8 gUnknown_083754C4[4];
+extern const u8 gUnknown_083754D4[4];
+extern const u8 gUnknown_083754E4[4];
+extern const u8 gUnknown_083754F4[4];
+extern const u8 gUnknown_08375504[4];
+extern const u8 gUnknown_08375514[4];
+extern const u8 gUnknown_08375524[4];
+extern const u8 gUnknown_08375534[4];
+extern const u8 gUnknown_08375544[4];
+extern const u8 gUnknown_08375554[4];
+extern const u8 gUnknown_08375564[4];
+extern const u8 gUnknown_08375574[4];
+extern const u8 gUnknown_08375584[4];
+
+extern const u8 gUnknown_0837567B[9];
+extern const u8 gUnknown_0837574F[8];
+
+extern const u8 gUnknown_08375757[4][4];
+extern const u8 gUnknown_08375767[4][4];
+
+extern const struct Coords16 gDirectionToVector[];
+
+extern u8 (**const gUnknown_08375778[])(struct MapObject *, struct Sprite *);
+
+extern struct CameraSomething gUnknown_03004880;
+extern u16 gUnknown_03004898;
+extern u16 gUnknown_0300489C;
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
index daae74ae9..a61dcc63c 100644
--- a/include/field_map_obj_helpers.h
+++ b/include/field_map_obj_helpers.h
@@ -8,5 +8,8 @@ void UnfreezeMapObjects(void);
void sub_806487C(struct Sprite *sprite, bool8 invisible);
void sub_8064990(u8, u8);
void UnfreezeMapObject(struct MapObject *mapObject);
+void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3);
+void sub_806467C(struct Sprite *sprite, u8 direction);
+bool8 sub_806468C(struct Sprite *sprite);
#endif
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 936d27b4a..530e15798 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -1,6 +1,10 @@
#ifndef GUARD_FIELDMAP2_H
#define GUARD_FIELDMAP2_H
+#include "field_map_obj.h"
struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection);
+int GetMapBorderIdAt(int x, int y);
+extern bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
+int CanCameraMoveInDirection(int direction);
#endif
diff --git a/include/menu.h b/include/menu.h
index 6a11ffdc2..cb5efa448 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -5,7 +5,7 @@
struct MenuAction
{
- u8 *text;
+ const u8 *text;
u8 (*func)();
};
@@ -23,7 +23,7 @@ void MenuZeroFillWindowRect(u8, u8, u8, u8);
void MenuFillWindowRectWithBlankTile(u8, u8, u8, u8);
void MenuZeroFillScreen(void);
void MenuDrawTextWindow(u8, u8, u8, u8);
-void sub_8071F40(u8 *);
+void sub_8071F40(const u8 *);
void sub_8071F60(u8, u8, u8, u8);
u16 unref_sub_8071F98(u8, u8);
void unref_sub_8071FBC(u16, u8, u8, u8, u8);
@@ -50,16 +50,16 @@ void InitYesNoMenu(u8, u8, u8);
void DisplayYesNoMenu(u8, u8, u32);
s8 ProcessMenuInputNoWrap_(void);
u8 MenuPrint_PixelCoords(const u8 *, u8, u16, u8);
-u8 sub_8072A18(u8 *, u8, u16, u8, u32);
+u8 sub_8072A18(const u8 *, u8, u16, u8, u32);
u8 unref_sub_8072A5C(u8 *, u8 *, u8, u16, u8, u32);
int sub_8072AB0(u8 *, u8, u16, u8, u8, u32);
void MenuPrint_RightAligned(u8 *, u8, u8);
void sub_8072B80(u8 *, u8, u8, u8 *);
-void sub_8072BD8(u8 *, u8, u8, u16);
+void sub_8072BD8(const u8 *, u8, u8, u16);
u8 *sub_8072C14(u8 *, s32, u8, u8);
u8 *sub_8072C44(u8 *, s32, u8, u8);
u8 *sub_8072C74(u8 *, const u8 *, u8, u8);
-u8 sub_8072CA4(u8 *s);
+u8 sub_8072CA4(const u8 *s);
u8 sub_8072CBC(void);
void sub_8072CD4(u8 *, u8 *, u8 *);
u32 MenuUpdateWindowText_OverrideLineLength(u8);
diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h
index 6d4e689b5..629980a2d 100644
--- a/include/script_pokemon_80C4.h
+++ b/include/script_pokemon_80C4.h
@@ -1,11 +1,6 @@
#ifndef GUARD_SCRIPTPOKE80C4_H
#define GUARD_SCRIPTPOKE80C4_H
-struct MonCoords
-{
- u8 x, y;
-};
-
void sub_80C5190(u8);
void sub_80C5580(void);
void SetBattleTowerPlayerParty(void);
diff --git a/include/strings2.h b/include/strings2.h
new file mode 100644
index 000000000..600bb2d31
--- /dev/null
+++ b/include/strings2.h
@@ -0,0 +1,322 @@
+#ifndef GUARD_STRINGS2_H
+#define GUARD_STRINGS2_H
+
+// ???
+extern const u8 gOtherText_TopSpeed[];
+
+// berry_blender
+extern const u8 gMultiText_BerryBlenderMaxSpeedRecord[];
+extern const u8 gMultiText_2P3P4P[];
+extern const u8 gMultiText_Saving[];
+
+// link
+extern const u8 gMultiText_LinkError[];
+
+// option_menu
+extern const u8 gSystemText_OptionMenu[];
+extern const u8 gSystemText_TextSpeed[];
+extern const u8 gSystemText_BattleScene[];
+extern const u8 gSystemText_BattleStyle[];
+extern const u8 gSystemText_Sound[];
+extern const u8 gSystemText_Frame[];
+extern const u8 gSystemText_Cancel[];
+extern const u8 gSystemText_ButtonMode[];
+extern const u8 gSystemText_Slow[];
+extern const u8 gSystemText_Mid[];
+extern const u8 gSystemText_Fast[];
+extern const u8 gSystemText_On[];
+extern const u8 gSystemText_Off[];
+extern const u8 gSystemText_Shift[];
+extern const u8 gSystemText_Set[];
+extern const u8 gSystemText_Mono[];
+extern const u8 gSystemText_Stereo[];
+extern const u8 gSystemText_Type[];
+extern const u8 gSystemText_Terminator[];
+extern const u8 gSystemText_Normal[];
+extern const u8 gSystemText_LR[];
+extern const u8 gSystemText_LA[];
+
+// start_menu
+extern const u8 SystemText_Pokedex[];
+extern const u8 SystemText_Pokemon[];
+extern const u8 SystemText_BAG[];
+extern const u8 SystemText_Pokenav[];
+extern const u8 SystemText_Player[];
+extern const u8 SystemText_Save[];
+extern const u8 SystemText_Option[];
+extern const u8 SystemText_Exit[];
+extern const u8 SystemText_Retire[];
+extern const u8 gOtherText_SafariStock[];
+
+// mystery_event_menu
+extern const u8 gSystemText_LinkStandby[];
+extern const u8 gSystemText_LoadEventPressA[];
+extern const u8 gSystemText_LoadingEvent[];
+extern const u8 gSystemText_DontCutLink[];
+extern const u8 gSystemText_EventLoadSuccess[];
+extern const u8 gSystemText_LoadingError[];
+
+// field_region_map
+extern const u8 gOtherText_Hoenn[];
+
+// field_player_avatar
+extern const u8 gOtherText_OhABite[];
+extern const u8 gOtherText_PokeOnHook[];
+extern const u8 gOtherText_NotEvenANibble[];
+extern const u8 gOtherText_ItGotAway[];
+
+// trade
+extern const u8 gTradeText_WillBeSent[];
+extern const u8 gTradeText_ByeBye[];
+extern const u8 gTradeText_SentOverPoke[];
+extern const u8 gTradeText_TakeGoodCare[];
+extern const u8 TradeText_Cancel[];
+extern const u8 TradeText_ChoosePoke[];
+extern const u8 TradeText_Summary1[];
+extern const u8 TradeText_Trade1[];
+extern const u8 TradeText_CancelTradePrompt[];
+extern const u8 TradeText_PressBToExit[];
+extern const u8 TradeText_Summary2[];
+extern const u8 TradeText_Trade2[];
+extern const u8 TradeText_LinkStandby[];
+extern const u8 TradeText_TradeCancelled[];
+extern const u8 TradeText_OnlyPoke[];
+extern const u8 TradeText_NonTradablePoke[];
+extern const u8 TradeText_WaitingForFriend[];
+extern const u8 TradeText_WantToTrade[];
+extern const u8 gTradeText_TradeOkayPrompt[];
+extern const u8 gOtherText_Terminator2[];
+extern const u8 gOtherText_ControlAndMiscText[];
+extern const u8 gOtherText_FourQuestions[];
+
+// easy_chat
+extern const u8 gEasyChatGroupName_Pokemon[];
+extern const u8 gEasyChatGroupName_Trainer[];
+extern const u8 gEasyChatGroupName_Status[];
+extern const u8 gEasyChatGroupName_Battle[];
+extern const u8 gEasyChatGroupName_Greetings[];
+extern const u8 gEasyChatGroupName_People[];
+extern const u8 gEasyChatGroupName_Voices[];
+extern const u8 gEasyChatGroupName_Speech[];
+extern const u8 gEasyChatGroupName_Endings[];
+extern const u8 gEasyChatGroupName_Feelings[];
+extern const u8 gEasyChatGroupName_Conditions[];
+extern const u8 gEasyChatGroupName_Actions[];
+extern const u8 gEasyChatGroupName_Lifestyle[];
+extern const u8 gEasyChatGroupName_Hobbies[];
+extern const u8 gEasyChatGroupName_Time[];
+extern const u8 gEasyChatGroupName_Misc[];
+extern const u8 gEasyChatGroupName_Adjectives[];
+extern const u8 gEasyChatGroupName_Events[];
+extern const u8 gEasyChatGroupName_Move1[];
+extern const u8 gEasyChatGroupName_Move2[];
+extern const u8 gEasyChatGroupName_TrendySaying[];
+extern const u8 gEasyChatGroupName_Pokemon2[];
+extern const u8 gOtherText_ThreeQuestions[];
+
+// mail
+extern const u8 gOtherText_From[];
+
+// record_mixing
+extern const u8 gOtherText_MixingRecordsWithFriend[];
+extern const u8 gOtherText_MixingComplete[];
+
+// trainer_card
+extern const u8 gOtherText_TrainersTrainerCard[];
+extern const u8 gOtherText_FirstHOF[];
+extern const u8 gOtherText_LinkCableBattles[];
+extern const u8 gOtherText_BattleTowerWinRecord[];
+extern const u8 gOtherText_ContestRecord[];
+extern const u8 gOtherText_MixingRecord[];
+extern const u8 gOtherText_TradeRecord[];
+extern const u8 gOtherText_Boy[];
+extern const u8 gOtherText_Girl[];
+
+// save_menu_util
+extern const u8 gOtherText_Player[];
+extern const u8 gOtherText_Badges[];
+extern const u8 gOtherText_Pokedex[];
+extern const u8 gOtherText_PlayTime[];
+
+// naming_screen
+extern const u8 gOtherText_SentToPC[];
+extern const u8 OtherText_YourName[];
+extern const u8 OtherText_BoxName[];
+extern const u8 OtherText_PokeName[];
+
+// pokemon_size_record
+extern const u8 gOtherText_Marco[];
+
+// roulette
+extern const u8 gOtherText_Coins[];
+
+// battle_records
+extern const u8 gOtherText_BattleResults[];
+extern const u8 gOtherText_WinRecord[];
+extern const u8 gOtherText_WinLoseDraw[];
+extern const u8 gOtherText_SevenDashes[];
+extern const u8 gOtherText_FourDashes[];
+extern const u8 gOtherText_BattleTowerResults[];
+extern const u8 gOtherText_Lv50[];
+extern const u8 gOtherText_Lv100[];
+extern const u8 gOtherText_WinStreak[];
+extern const u8 gOtherText_Current[];
+extern const u8 gOtherText_Record[];
+extern const u8 gOtherText_Prev[];
+
+// slot_machine
+extern const u8 gOtherText_QuitGamePrompt[];
+extern const u8 gOtherText_MaxCoins[];
+extern const u8 gOtherText_OutOfCoins[];
+extern const u8 gOtherText_DontHaveThreeCoins[];
+extern const u8 gOtherText_ReelTime[];
+
+// daycare
+extern const u8 DaycareText_GetAlongVeryWell[];
+extern const u8 DaycareText_GetAlong[];
+extern const u8 DaycareText_DontLikeOther[];
+extern const u8 DaycareText_PlayOther[];
+extern const u8 gOtherText_NewLine2[];
+extern const u8 gOtherText_CancelAndLv[];
+
+// pokemon_2
+extern const u8 gEggNickname[];
+
+// egg_hatch
+extern const u8 gOtherText_HatchedFromEgg[];
+extern const u8 gOtherText_NickHatchPrompt[];
+
+// learn_move
+extern const u8 OtherText_Battle[];
+extern const u8 OtherText_Contest[];
+
+// ???
+extern const u8 OtherText_Type[];
+extern const u8 OtherText_PP[];
+
+// learn_move
+extern const u8 OtherText_Power[];
+extern const u8 OtherText_Accuracy[];
+extern const u8 OtherText_Appeal[];
+extern const u8 OtherText_Jam[];
+extern const u8 gOtherText_TeachWhichMove[];
+extern const u8 gOtherText_TeachSpecificMove[];
+extern const u8 gOtherText_PokeLearnedMove[];
+extern const u8 gOtherText_DeleteOlderMove[];
+extern const u8 gOtherText_StopLearningMove[];
+extern const u8 gOtherText_ForgotMove123[];
+extern const u8 gOtherText_ForgotOrDidNotLearnMove[];
+extern const u8 gOtherText_GiveUpTeachingMove[];
+extern const u8 gOtherText_WhichMoveToForget[];
+
+// clear_save_data_menu
+extern const u8 gSystemText_ClearAllSaveDataPrompt[];
+extern const u8 gSystemText_ClearingData[];
+
+// contest_link_80C2020
+extern const u8 gContestText_AnnounceResults[];
+extern const u8 gContestText_PreliminaryResults[];
+extern const u8 gContestText_Round2Results[];
+extern const u8 gContestText_PokeWon[];
+extern const u8 gOtherText_LinkStandby[];
+
+// landmark
+extern const u8 gLandmarkName_FlowerShop[];
+extern const u8 gLandmarkName_PetalburgWoods[];
+extern const u8 gLandmarkName_MrBrineysCottage[];
+extern const u8 gLandmarkName_AbandonedShip[];
+extern const u8 gLandmarkName_SeashoreHouse[];
+extern const u8 gLandmarkName_SlateportBeach[];
+extern const u8 gLandmarkName_CyclingRoad[];
+extern const u8 gLandmarkName_NewMauville[];
+extern const u8 gLandmarkName_TrickHouse[];
+extern const u8 gLandmarkName_OldLadysRestShop[];
+extern const u8 gLandmarkName_Desert[];
+extern const u8 gLandmarkName_WinstrateFamily[];
+extern const u8 gLandmarkName_CableCar[];
+extern const u8 gLandmarkName_GlassWorkshop[];
+extern const u8 gLandmarkName_WeatherInstitute[];
+extern const u8 gLandmarkName_MeteorFalls[];
+extern const u8 gLandmarkName_TunnelersRestHouse[];
+extern const u8 gLandmarkName_RusturfTunnel[];
+extern const u8 gLandmarkName_PokemonDayCare[];
+extern const u8 gLandmarkName_SafariZoneEntrance[];
+extern const u8 gLandmarkName_MtPyre[];
+extern const u8 gLandmarkName_ShoalCave[];
+extern const u8 gLandmarkName_SeafloorCavern[];
+extern const u8 gLandmarkName_GraniteCave[];
+extern const u8 gLandmarkName_OceanCurrent[];
+extern const u8 gLandmarkName_LanettesHouse[];
+extern const u8 gLandmarkName_FieryPath[];
+extern const u8 gLandmarkName_JaggedPass[];
+extern const u8 gLandmarkName_SkyPillar[];
+extern const u8 gLandmarkName_BerryMastersHouse[];
+extern const u8 gLandmarkName_IslandCave[];
+extern const u8 gLandmarkName_DesertRuins[];
+extern const u8 gLandmarkName_ScorchedSlab[];
+extern const u8 gLandmarkName_AncientTomb[];
+extern const u8 gLandmarkName_SealedChamber[];
+extern const u8 gLandmarkName_FossilManiacsHouse[];
+extern const u8 gLandmarkName_HuntersHouse[];
+
+// pokemon_summary_screen
+extern const u8 gOtherText_Terminator4[];
+extern const u8 gOtherText_Nature[];
+extern const u8 gOtherText_Comma[];
+extern const u8 gOtherText_Met[];
+extern const u8 gOtherText_Egg2[];
+extern const u8 gOtherText_ObtainedInTrade[];
+extern const u8 gOtherText_FatefulEncounter[];
+extern const u8 gOtherText_Met2[];
+extern const u8 gOtherText_EggDayCare[];
+extern const u8 gOtherText_EggNicePlace[];
+extern const u8 gOtherText_EggObtainedInTrade[];
+extern const u8 gOtherText_EggHotSprings[];
+
+// evolution_scene, trade
+extern const u8 gOtherText_LinkStandby2[];
+
+// evolution_scene
+extern const u8 gOtherText_YesNoAndPlayer[];
+
+// diploma
+extern const u8 gOtherText_HoennDex[];
+extern const u8 gOtherText_NationalDex[];
+extern const u8 gOtherText_DiplomaCertificationGameFreak[];
+
+// cable_club
+extern const u8 gOtherText_PLink[];
+
+// berry_blender
+extern const u8 gOtherText_YesNoTerminating[];
+extern const u8 gOtherText_LinkNotFound[];
+extern const u8 gOtherText_BlenderChooseBerry[];
+extern const u8 gOtherText_PokeBlockMade[];
+extern const u8 gOtherText_PressAToStart[];
+extern const u8 gOtherText_PleaseWait[];
+extern const u8 gOtherText_LinkStandby3[];
+extern const u8 gOtherText_BlendAnotherBerryPrompt[];
+extern const u8 gOtherText_OutOfBerries[];
+extern const u8 gOtherText_CaseIsFull[];
+extern const u8 gOtherText_NoBerriesForBlend[];
+extern const u8 gOtherText_OtherCaseIsFull[];
+extern const u8 gOtherText_ResultsOfBlending[];
+extern const u8 gOtherText_Berry[];
+extern const u8 gOtherText_RequiredTime[];
+extern const u8 gOtherText_Min[];
+extern const u8 gOtherText_Sec[];
+extern const u8 gOtherText_MaxSpeed[];
+extern const u8 gOtherText_RPM[];
+extern const u8 gOtherText_Ranking[];
+extern const u8 gOtherText_BlockLevelIs[];
+extern const u8 gOtherText_BlockFeelIs[];
+extern const u8 gOtherText_Period[];
+
+// reset_rtc_screen
+extern const u8 gOtherText_Day[];
+extern const u8 gOtherText_OK[];
+
+// wallclock
+extern const u8 gOtherText_CorrectTimePrompt[];
+
+#endif // GUARD_STRINGS2_H
diff --git a/include/trig.h b/include/trig.h
index 5a948e1ef..03d8c453e 100644
--- a/include/trig.h
+++ b/include/trig.h
@@ -1,6 +1,8 @@
#ifndef GUARD_TRIG_H
#define GUARD_TRIG_H
+extern s16 gSineTable[];
+
s16 Sin(s16 index, s16 amplitude);
s16 Cos(s16 index, s16 amplitude);
s16 Sin2(u16 angle);
diff --git a/ld_script.txt b/ld_script.txt
index dac5fb782..866dcff5e 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -92,6 +92,8 @@ SECTIONS {
src/field_player_avatar.o(.text);
src/field_map_obj.o(.text);
asm/field_map_obj.o(.text);
+ src/field_map_obj.o(.text_b);
+ asm/field_map_obj.o(.text_805fd18);
src/field_ground_effect.o(.text);
asm/field_ground_effect.o(.text);
src/field_map_obj_helpers.o(.text);
diff --git a/src/battle_2.c b/src/battle_2.c
index 073da1cab..e5091bd08 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "asm.h"
#include "battle.h"
+#include "data2.h"
#include "main.h"
#include "text.h"
#include "palette.h"
@@ -17,18 +18,6 @@
#include "trig.h"
#include "abilities.h"
-struct MonCoords
-{
- u8 x, y;
-};
-
-struct UnknownStruct5
-{
- u32 unk0;
- u32 unk4;
- u32 unk8;
-};
-
struct UnknownStruct6
{
u16 unk0[0xA0];
@@ -138,14 +127,7 @@ struct UnknownStruct13
u8 filler4[12];
};
-extern const struct UnknownStruct5 gUnknown_081F9674;
-extern const u8 gUnknown_081F96C8[];
-extern void *const gUnknown_081FAF4C[];
extern const u16 gUnknown_08D004E0[];
-extern const struct Trainer gTrainers[];
-extern const u8 gSpeciesNames[][11];
-extern const struct BattleMove gBattleMoves[];
-extern const struct MonCoords gMonFrontPicCoords[];
extern const struct MonCoords gCastformFrontSpriteCoords[];
extern const struct BaseStats gBaseStats[];
extern const u32 gBitTable[];
@@ -1524,19 +1506,19 @@ void sub_8010384(struct Sprite *sprite)
else
unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters
- yOffset = gMonFrontPicCoords[unownSpecies].y;
+ yOffset = gMonFrontPicCoords[unownSpecies].y_offset;
}
else if (species == SPECIES_CASTFORM)
{
- yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y;
+ yOffset = gCastformFrontSpriteCoords[gBattleMonForms[r6]].y_offset;
}
else if (species > NUM_SPECIES)
{
- yOffset = gMonFrontPicCoords[SPECIES_NONE].y;
+ yOffset = gMonFrontPicCoords[SPECIES_NONE].y_offset;
}
else
{
- yOffset = gMonFrontPicCoords[species].y;
+ yOffset = gMonFrontPicCoords[species].y_offset;
}
sprite->data3 = 8 - yOffset / 8;
@@ -2562,39 +2544,39 @@ void sub_8012324(void)
r5 = battle_get_per_side_status(gUnknown_02024A60);
switch (gUnknown_02024D1E[gUnknown_02024A60])
{
- case 0:
- ewram[0x016068 + gUnknown_02024A60] = 6;
- if (!(gBattleTypeFlags & 0x40)
- && (r5 & 2)
- && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)])
- && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4)
- break;
- //_080123F8
- if (ewram160A6 & gBitTable[gUnknown_02024A60])
- {
- gUnknown_02024C18[gUnknown_02024A60] = 13;
- if (!(gBattleTypeFlags & 0x40))
- gUnknown_02024D1E[gUnknown_02024A60] = 4;
- //_08012454
- else
- gUnknown_02024D1E[gUnknown_02024A60] = 3;
- break;
- }
- //_08012468
- if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000)
- || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000))
- {
- gUnknown_02024C18[gUnknown_02024A60] = 0;
- gUnknown_02024D1E[gUnknown_02024A60] = 3;
- }
+ case 0:
+ ewram[0x016068 + gUnknown_02024A60] = 6;
+ if (!(gBattleTypeFlags & 0x40)
+ && (r5 & 2)
+ && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)])
+ && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4)
+ break;
+ //_080123F8
+ if (ewram160A6 & gBitTable[gUnknown_02024A60])
+ {
+ gUnknown_02024C18[gUnknown_02024A60] = 13;
+ if (!(gBattleTypeFlags & 0x40))
+ gUnknown_02024D1E[gUnknown_02024A60] = 4;
+ //_08012454
else
- {
- dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8));
- dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
- gUnknown_02024D1E[gUnknown_02024A60]++;
- }
+ gUnknown_02024D1E[gUnknown_02024A60] = 3;
break;
- case 1:
+ }
+ //_08012468
+ if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000)
+ || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000))
+ {
+ gUnknown_02024C18[gUnknown_02024A60] = 0;
+ gUnknown_02024D1E[gUnknown_02024A60] = 3;
+ }
+ else
+ {
+ dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8));
+ dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60);
+ gUnknown_02024D1E[gUnknown_02024A60]++;
+ }
+ break;
+ case 1:
}
}
}
diff --git a/src/battle_ai.c b/src/battle_ai.c
index 9bbaf908e..f10c6a013 100644
--- a/src/battle_ai.c
+++ b/src/battle_ai.c
@@ -4,6 +4,7 @@
#include "asm.h"
#include "battle.h"
#include "battle_move_effects.h"
+#include "data2.h"
#include "item.h"
#include "moves.h"
#include "pokemon.h"
@@ -36,8 +37,6 @@ extern u8 gCritMultiplier;
extern u16 gTrainerBattleOpponent;
extern u32 gBitTable[];
extern u8 *BattleAIs[];
-extern struct Trainer gTrainers[];
-extern struct BattleMove gBattleMoves[];
extern struct BaseStats gBaseStats[];
/*
diff --git a/src/battle_interface.c b/src/battle_interface.c
index ba3cba894..61a6a5853 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -2409,23 +2409,23 @@ static void sub_80451A0(u8 a, struct Pokemon *pkmn)
gender = 100;
switch (gender)
{
- default:
- ptr[0] = 0xB;
- ptr[1] = EOS;
- ptr += 1;
- break;
- case MON_MALE:
- ptr[0] = 0xB;
- ptr[1] = CHAR_MALE;
- ptr[2] = EOS;
- ptr += 2;
- break;
- case MON_FEMALE:
- ptr[0] = 0xA;
- ptr[1] = CHAR_FEMALE;
- ptr[2] = EOS;
- ptr += 2;
- break;
+ default:
+ ptr[0] = 0xB;
+ ptr[1] = EOS;
+ ptr += 1;
+ break;
+ case MON_MALE:
+ ptr[0] = 0xB;
+ ptr[1] = CHAR_MALE;
+ ptr[2] = EOS;
+ ptr += 2;
+ break;
+ case MON_FEMALE:
+ ptr[0] = 0xA;
+ ptr[1] = CHAR_FEMALE;
+ ptr[2] = EOS;
+ ptr += 2;
+ break;
}
ptr[0] = EXT_CTRL_CODE_BEGIN;
ptr[1] = 0x13;
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
index 690ef99be..359517ecd 100644
--- a/src/battle_party_menu.c
+++ b/src/battle_party_menu.c
@@ -8,6 +8,7 @@
#include "songs.h"
#include "sound.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "text.h"
@@ -58,16 +59,6 @@ extern u8 gUnknown_0202E8F6;
extern u8 gUnknown_02038473;
extern u8 gUnknown_020384F0;
extern void (*gUnknown_03004AE4)(); //don't know types yet
-extern const u8 gOtherText_CantSwitchPokeWithYours[];
-extern const u8 gOtherText_NoEnergyLeft[];
-extern const u8 gOtherText_EGGCantBattle[];
-extern const u8 gOtherText_AlreadySelected[];
-extern const u8 gOtherText_CantBeSwitched[];
-extern const u8 gOtherText_AlreadyBattle[];
-extern const u8 OtherText_Summary[];
-extern const u8 gOtherText_CancelNoTerminator[];
-extern const u8 OtherText_Shift[];
-extern const u8 OtherText_SendOut[];
static void Task_809527C(u8);
static void Task_80952B4(u8);
diff --git a/src/battle_records.c b/src/battle_records.c
index 3290bbebe..35fd3284b 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -1,8 +1,6 @@
#include "global.h"
#include "menu.h"
-
-extern const u8 gOtherText_BattleResults[];
-extern const u8 gOtherText_WinLoseDraw[];
+#include "strings2.h"
void PrintLinkBattleWinsLossesDraws(void *);
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 0753fba70..a70157a43 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -2,6 +2,7 @@
#include "battle_setup.h"
#include "asm.h"
#include "battle.h"
+#include "data2.h"
#include "event_data.h"
#include "field_control_avatar.h"
#include "field_map_obj_helpers.h"
@@ -23,6 +24,7 @@
#include "species.h"
#include "starter_choose.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "text.h"
#include "trainer.h"
@@ -33,7 +35,6 @@ extern void (*gUnknown_0300485C)(void);
extern struct Pokemon gEnemyParty[];
extern struct Pokemon gPlayerParty[];
-extern struct Trainer gTrainers[];
EWRAM_DATA u16 gTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent = 0;
@@ -45,8 +46,6 @@ EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL;
EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL;
EWRAM_DATA u8 *gTrainerBattleEndScript = NULL;
-extern u8 gOtherText_CancelWithTerminator[];
-
extern u16 gBattleTypeFlags;
extern u16 gScriptLastTalked;
extern u8 gUnknown_02024D26;
@@ -753,7 +752,7 @@ u8 GetWildBattleTransition(void)
u8 GetTrainerBattleTransition(void)
{
- struct Trainer *trainer;
+ const struct Trainer *trainer;
u8 minPartyCount;
u8 flashVar;
u8 level;
@@ -1169,12 +1168,12 @@ void PlayTrainerEncounterMusic(void)
}
//Returns an empty string if a null pointer was passed, otherwise returns str
-u8 *SanitizeString(u8 *str)
+u8 *SanitizeString(const u8 *str)
{
if (str)
- return str;
+ return (u8 *) str;
else
- return gOtherText_CancelWithTerminator;
+ return (u8 *) gOtherText_CancelWithTerminator;
}
u8 *sub_808281C(void)
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index 511b88c5a..f0bcb4f27 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -12,6 +12,7 @@
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "text.h"
@@ -38,10 +39,6 @@ extern u16 gUnknown_030041B4;
extern const struct SpriteSheet gUnknown_083C1F74;
extern const struct SpritePalette gUnknown_083C1F7C;
-extern u8 gOtherText_ThreeQuestions2[];
-extern u8 gOtherText_Size[];
-extern u8 gOtherText_Firm[];
-extern u8 gContestStatsText_Unknown1[];
extern u8 *gUnknown_0841192C[];
extern u8 gBerryCheck_Gfx[];
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 220e8420c..2ee4f91bb 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -151,50 +151,50 @@ void Task_BrailleWait(u8 taskId)
switch (data[0])
{
- case 0:
- data[1] = 7200;
- data[0] = 1;
- break;
- case 1:
- if (BrailleWait_CheckButtonPress() != FALSE)
+ case 0:
+ data[1] = 7200;
+ data[0] = 1;
+ break;
+ case 1:
+ if (BrailleWait_CheckButtonPress() != FALSE)
+ {
+ MenuZeroFillScreen();
+ PlaySE(5);
+ data[0] = 2;
+ }
+ else
+ {
+ data[1] = data[1] - 1;
+ if (data[1] == 0)
{
MenuZeroFillScreen();
- PlaySE(5);
- data[0] = 2;
- }
- else
- {
- data[1] = data[1] - 1;
- if (data[1] == 0)
- {
- MenuZeroFillScreen();
- data[0] = 3;
- data[1] = 30;
- }
- }
- break;
- case 2:
- if (BrailleWait_CheckButtonPress() == FALSE)
- {
- data[1] = data[1] - 1;
- if (data[1] == 0)
- data[0] = 4;
- break;
+ data[0] = 3;
+ data[1] = 30;
}
- sub_8064E2C();
- DestroyTask(taskId);
- ScriptContext2_Disable();
- break;
- case 3:
+ }
+ break;
+ case 2:
+ if (BrailleWait_CheckButtonPress() == FALSE)
+ {
data[1] = data[1] - 1;
if (data[1] == 0)
data[0] = 4;
break;
- case 4:
- sub_8064E2C();
- ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber);
- DestroyTask(taskId);
- break;
+ }
+ sub_8064E2C();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ break;
+ case 3:
+ data[1] = data[1] - 1;
+ if (data[1] == 0)
+ data[0] = 4;
+ break;
+ case 4:
+ sub_8064E2C();
+ ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber);
+ DestroyTask(taskId);
+ break;
}
}
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 293e2f24d..7868a2c67 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -2,6 +2,7 @@
#include "abilities.h"
#include "battle.h"
#include "berry.h"
+#include "data2.h"
#include "event_data.h"
#include "hold_effects.h"
#include "item.h"
@@ -11,6 +12,7 @@
#include "species.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings2.h"
#include "text.h"
extern u8 gPlayerPartyCount;
@@ -34,15 +36,9 @@ extern u16 gTrainerBattleOpponent;
extern struct PokemonStorage gPokemonStorage;
extern u8 gBadEggNickname[];
-extern u8 gEggNickname[];
extern u32 gBitTable[];
extern struct BaseStats gBaseStats[];
-extern u8 gSpeciesNames[][11];
-extern struct BattleMove gBattleMoves[];
extern struct SpriteTemplate gSpriteTemplate_8208288[];
-extern union AmimCmd *gSpriteAnimTable_81E7C64[];
-extern union AnimCmd **gUnknown_081EC2A4[];
-extern union AnimCmd **gUnknown_081ECACC[];
extern u8 gTrainerClassToPicIndex[];
extern u8 gTrainerClassToNameIndex[];
extern u8 gSecretBaseTrainerClasses[];
diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c
index 21cd643ef..690ce3f55 100644
--- a/src/clear_save_data_menu.c
+++ b/src/clear_save_data_menu.c
@@ -7,10 +7,9 @@
#include "songs.h"
#include "sound.h"
#include "sprite.h"
+#include "strings2.h"
#include "task.h"
-extern u8 gSystemText_ClearAllSaveDataPrompt[];
-extern u8 gSystemText_ClearingData[];
extern const struct MenuAction gMenuYesNoItems[];
static void VBlankCB_ClearSaveDataScreen(void);
@@ -99,65 +98,65 @@ static u8 InitClearSaveDataScreen(void)
switch (gMain.state)
{
- case 0:
- default:
- SetVBlankCallback(NULL);
-
- REG_DISPCNT = 0;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- REG_BG3HOFS = 0;
- REG_BG3VOFS = 0;
- REG_WIN0H = 0;
- REG_WIN0V = 0;
- REG_WININ = 0;
- REG_WINOUT = 0;
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
-
- DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
- DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
- DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
-
- ResetPaletteFade();
-
- gPlttBufferUnfaded[0] = 0x7fff;
- gPlttBufferFaded[0] = 0x7fff;
- gPlttBufferUnfaded[1] = 0x3945;
- gPlttBufferFaded[1] = 0x3945;
-
- for (i = 0; i < 0x10; i++)
- ((u16 *)(VRAM + 0x20))[i] = 0x1111;
-
- for (i = 0; i < 0x500; i++)
- ((u16 *)(VRAM + 0x3800))[i] = 0x0001;
-
- ResetTasks();
- ResetSpriteData();
-
- SetUpWindowConfig(&gWindowConfig_81E6C3C);
- InitMenuWindow(&gWindowConfig_81E6CE4);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff);
-
- ime = REG_IME;
- REG_IME = 0;
- REG_IE |= INTR_FLAG_VBLANK;
- REG_IME = ime;
- REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
-
- SetVBlankCallback(VBlankCB_InitClearSaveDataScreen);
-
- REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG3_ON;
- gMain.state = 1;
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+
+ REG_DISPCNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+
+ DmaFill16(3, 0, (void *)VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *)OAM, OAM_SIZE);
+ DmaFill16(3, 0, (void *)(PLTT + 2), PLTT_SIZE - 2);
+
+ ResetPaletteFade();
+
+ gPlttBufferUnfaded[0] = 0x7fff;
+ gPlttBufferFaded[0] = 0x7fff;
+ gPlttBufferUnfaded[1] = 0x3945;
+ gPlttBufferFaded[1] = 0x3945;
+
+ for (i = 0; i < 0x10; i++)
+ ((u16 *)(VRAM + 0x20))[i] = 0x1111;
+
+ for (i = 0; i < 0x500; i++)
+ ((u16 *)(VRAM + 0x3800))[i] = 0x0001;
+
+ ResetTasks();
+ ResetSpriteData();
+
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0xffff);
+
+ ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+
+ SetVBlankCallback(VBlankCB_InitClearSaveDataScreen);
+
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG3_ON;
+ gMain.state = 1;
+ return 0;
+ case 1:
+ UpdatePaletteFade();
+ if (gPaletteFade.active)
return 0;
- case 1:
- UpdatePaletteFade();
- if (gPaletteFade.active)
- return 0;
- SetMainCallback2(CB2_ClearSaveDataScreen);
- return 1;
+ SetMainCallback2(CB2_ClearSaveDataScreen);
+ return 1;
}
}
@@ -165,16 +164,16 @@ static void CB2_SoftReset(void)
{
switch (gMain.state)
{
- case 0:
- default:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff);
- gMain.state = 1;
- break;
- case 1:
- UpdatePaletteFade();
- if (gPaletteFade.active)
- return;
- DoSoftReset();
- break;
+ case 0:
+ default:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0xffff);
+ gMain.state = 1;
+ break;
+ case 1:
+ UpdatePaletteFade();
+ if (gPaletteFade.active)
+ return;
+ DoSoftReset();
+ break;
}
}
diff --git a/src/coins.c b/src/coins.c
index 193ea249e..3c6356612 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -2,11 +2,10 @@
#include "coins.h"
#include "menu.h"
#include "string_util.h"
+#include "strings.h"
#define MAX_COINS 9999
-extern u8 gOtherText_Coins2[];
-
void UpdateCoinsWindow(s32 a, u8 b, u8 c)
{
PrintCoins(a, 4, b + 2, c + 1);
diff --git a/src/contest_painting.c b/src/contest_painting.c
index 2ef50ee17..d7bacb905 100644
--- a/src/contest_painting.c
+++ b/src/contest_painting.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "contest_painting.h"
#include "asm.h"
+#include "data2.h"
#include "decompress.h"
#include "main.h"
#include "menu.h"
@@ -8,6 +9,7 @@
#include "rng.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "text.h"
extern u8 unk_2000000[];
@@ -23,48 +25,6 @@ extern struct Unk2015E00 unk_2015e00;
extern struct Unk3000756 gUnknown_03000756;
extern struct Unk03005E20 gUnknown_03005E20;
extern struct ContestEntry *gUnknown_03005E8C;
-extern const struct SpriteSheet gMonFrontPicTable[];
-extern const struct MonCoords gMonFrontPicCoords[];
-extern const struct SpriteSheet gMonBackPicTable[];
-extern const struct MonCoords gMonBackPicCoords[];
-extern void *gUnknown_081FAF4C[];
-extern const u8 OtherText_Cool[];
-extern const u8 OtherText_Beauty2[];
-extern const u8 OtherText_Cute[];
-extern const u8 OtherText_Smart[];
-extern const u8 OtherText_Tough[];
-extern const u8 OtherText_NonstopSuperCool[];
-extern const u8 OtherText_Terminator6[];
-extern const u8 OtherText_GoodLookingPoke[];
-extern const u8 OtherText_Terminator7[];
-extern const u8 OtherText_MarvelousGreat[];
-extern const u8 OtherText_Terminator8[];
-extern const u8 OtherText_CenturyLastVenus[];
-extern const u8 OtherText_Terminator9[];
-extern const u8 OtherText_Terminator10[];
-extern const u8 OtherText_DazzlingSmile[];
-extern const u8 OtherText_PokeCenterIdol[];
-extern const u8 OtherText_Terminator11[];
-extern const u8 OtherText_LovelyAndSweet[];
-extern const u8 OtherText_Terminator12[];
-extern const u8 OtherText_ThePretty[];
-extern const u8 OtherText_WinningPortrait[];
-extern const u8 OtherText_GiveUsWink[];
-extern const u8 OtherText_Terminator13[];
-extern const u8 OtherText_SmartnessMaestro[];
-extern const u8 OtherText_Terminator14[];
-extern const u8 OtherText_ChosenPokeAmong[];
-extern const u8 OtherText_Terminator15[];
-extern const u8 OtherText_TheExcellent[];
-extern const u8 OtherText_ItsMomentOfElegance[];
-extern const u8 OtherText_PowerfullyMuscular[];
-extern const u8 OtherText_Terminator16[];
-extern const u8 OtherText_StrongErEst[];
-extern const u8 OtherText_Terminator17[];
-extern const u8 OtherText_MightyTough[];
-extern const u8 OtherText_Exclamation[];
-extern const u8 gContestText_ContestWinner[];
-extern const u8 gOtherText_Unknown1[];
static const u16 gPictureFramePalettes[][16] =
{
@@ -381,13 +341,6 @@ static void VBlankCB_ContestPainting(void)
TransferPlttBuffer();
}
-
-struct MonCoords
-{
- u8 x;
- u8 y;
-};
-
#ifdef NONMATCHING
static void sub_8106AC4(u16 species, u8 arg1)
{
diff --git a/src/credits.c b/src/credits.c
index ca5553c2e..de1d52361 100644
--- a/src/credits.c
+++ b/src/credits.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "asm.h"
+#include "data2.h"
#include "decompress.h"
#include "event_data.h"
#include "m4a.h"
@@ -20,11 +21,6 @@ asm(".set OFFSET_REG_BLDALPHA, 0x52");
asm(".set REG_BLDCNT, REG_BASE + OFFSET_REG_BLDCNT");
asm(".set REG_BLDALPHA, REG_BASE + OFFSET_REG_BLDALPHA");
-struct MonCoords
-{
- u8 x, y;
-};
-
extern void *species_and_otid_get_pal(u32, u16, u16);
enum
@@ -173,10 +169,6 @@ extern s16 gUnknown_0203935C;
extern u8 gReservedSpritePaletteCount;
-// data/data2
-extern struct MonCoords gMonFrontPicCoords[];
-extern struct SpriteSheet gMonFrontPicTable[];
-
// data/starter_choose
extern u16 gBirchBagGrassPal[32];
extern u8 gBirchGrassTilemap[];
@@ -1520,8 +1512,8 @@ static u8 sub_81456B4(u16 species, u16 x, u16 y, u16 position)
LoadSpecialPokePic(
&gMonFrontPicTable[species],
- gMonFrontPicCoords[species].x,
- gMonFrontPicCoords[species].y,
+ gMonFrontPicCoords[species].coords,
+ gMonFrontPicCoords[species].y_offset,
0x2000000,
gUnknown_0840B5A0[position],
species,
diff --git a/src/decompress.c b/src/decompress.c
index 12be8a055..37aa1e8d5 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -1,15 +1,12 @@
#include "global.h"
#include "decompress.h"
#include "asm.h"
+#include "data2.h"
#include "species.h"
#include "text.h"
#define WRAM 0x02000000
-extern struct SpriteSheet gMonFrontPicTable[];
-extern struct SpriteSheet gMonBackPicTable[];
-extern void *gUnknown_081FAF4C[];
-
void sub_800D238(const void *src, void *dest)
{
LZ77UnCompWram(src, dest);
diff --git a/src/diploma.c b/src/diploma.c
index c32b72a70..80adac8f7 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -7,13 +7,10 @@
#include "rom4.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings2.h"
#include "task.h"
#include "text.h"
-extern u8 gOtherText_NationalDex[];
-extern u8 gOtherText_HoennDex[];
-extern u8 gOtherText_DiplomaCertificationGameFreak[];
-
static void VBlankCB(void);
static void MainCB2(void);
static void Task_DiplomaFadeIn(u8);
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 86719a2ae..b21b00368 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -1,12 +1,14 @@
#include "global.h"
#include "easy_chat.h"
#include "asm.h"
+#include "data2.h"
#include "event_data.h"
#include "field_message_box.h"
#include "pokedex.h"
#include "rng.h"
#include "string_util.h"
#include "strings.h"
+#include "strings2.h"
#include "text.h"
u8 sub_80EB37C(u16);
@@ -21,15 +23,11 @@ static u16 sub_80EB9D8(void);
static u16 sub_80EB960(void);
u16 sub_80EB72C(u16);
-extern const u8 gSpeciesNames[][11];
-extern u8 gMoveNames[][13];
extern void *gEasyChatGroupWords[];
extern const u8 gEasyChatGroupSizes[];
extern u16 gSpecialVar_0x8004;
-extern const u8 gOtherText_ThreeQuestions[];
-
#ifdef NONMATCHING
u8 *sub_80EB3FC(u8 *dst, u16 word) {
int group, wordIndex;
diff --git a/src/field_camera.c b/src/field_camera.c
index 442bc095b..df5ccc301 100644
--- a/src/field_camera.c
+++ b/src/field_camera.c
@@ -25,16 +25,6 @@ extern s16 gUnknown_0300059A;
extern u8 gUnknown_0300059C;
extern void (*gUnknown_030005A0)(void);
-struct CameraSomething
-{
- void (*callback)(struct CameraSomething *);
- u32 unk4;
- s32 unk8;
- s32 unkC;
- s32 unk10;
- s32 unk14;
-};
-
extern struct CameraSomething gUnknown_03004880;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
@@ -258,54 +248,54 @@ static void DrawMetatile(s32 a, u16 *b, u16 c)
{
switch (a)
{
- case 2:
- gBGTilemapBuffers[3][c] = b[0];
- gBGTilemapBuffers[3][c + 1] = b[1];
- gBGTilemapBuffers[3][c + 0x20] = b[2];
- gBGTilemapBuffers[3][c + 0x21] = b[3];
-
- gBGTilemapBuffers[2][c] = 0;
- gBGTilemapBuffers[2][c + 1] = 0;
- gBGTilemapBuffers[2][c + 0x20] = 0;
- gBGTilemapBuffers[2][c + 0x21] = 0;
-
- gBGTilemapBuffers[1][c] = b[4];
- gBGTilemapBuffers[1][c + 1] = b[5];
- gBGTilemapBuffers[1][c + 0x20] = b[6];
- gBGTilemapBuffers[1][c + 0x21] = b[7];
- break;
- case 1:
- gBGTilemapBuffers[3][c] = b[0];
- gBGTilemapBuffers[3][c + 1] = b[1];
- gBGTilemapBuffers[3][c + 0x20] = b[2];
- gBGTilemapBuffers[3][c + 0x21] = b[3];
-
- gBGTilemapBuffers[2][c] = b[4];
- gBGTilemapBuffers[2][c + 1] = b[5];
- gBGTilemapBuffers[2][c + 0x20] = b[6];
- gBGTilemapBuffers[2][c + 0x21] = b[7];
-
- gBGTilemapBuffers[1][c] = 0;
- gBGTilemapBuffers[1][c + 1] = 0;
- gBGTilemapBuffers[1][c + 0x20] = 0;
- gBGTilemapBuffers[1][c + 0x21] = 0;
- break;
- case 0:
- gBGTilemapBuffers[3][c] = 0x3014;
- gBGTilemapBuffers[3][c + 1] = 0x3014;
- gBGTilemapBuffers[3][c + 0x20] = 0x3014;
- gBGTilemapBuffers[3][c + 0x21] = 0x3014;
-
- gBGTilemapBuffers[2][c] = b[0];
- gBGTilemapBuffers[2][c + 1] = b[1];
- gBGTilemapBuffers[2][c + 0x20] = b[2];
- gBGTilemapBuffers[2][c + 0x21] = b[3];
-
- gBGTilemapBuffers[1][c] = b[4];
- gBGTilemapBuffers[1][c + 1] = b[5];
- gBGTilemapBuffers[1][c + 0x20] = b[6];
- gBGTilemapBuffers[1][c + 0x21] = b[7];
- break;
+ case 2:
+ gBGTilemapBuffers[3][c] = b[0];
+ gBGTilemapBuffers[3][c + 1] = b[1];
+ gBGTilemapBuffers[3][c + 0x20] = b[2];
+ gBGTilemapBuffers[3][c + 0x21] = b[3];
+
+ gBGTilemapBuffers[2][c] = 0;
+ gBGTilemapBuffers[2][c + 1] = 0;
+ gBGTilemapBuffers[2][c + 0x20] = 0;
+ gBGTilemapBuffers[2][c + 0x21] = 0;
+
+ gBGTilemapBuffers[1][c] = b[4];
+ gBGTilemapBuffers[1][c + 1] = b[5];
+ gBGTilemapBuffers[1][c + 0x20] = b[6];
+ gBGTilemapBuffers[1][c + 0x21] = b[7];
+ break;
+ case 1:
+ gBGTilemapBuffers[3][c] = b[0];
+ gBGTilemapBuffers[3][c + 1] = b[1];
+ gBGTilemapBuffers[3][c + 0x20] = b[2];
+ gBGTilemapBuffers[3][c + 0x21] = b[3];
+
+ gBGTilemapBuffers[2][c] = b[4];
+ gBGTilemapBuffers[2][c + 1] = b[5];
+ gBGTilemapBuffers[2][c + 0x20] = b[6];
+ gBGTilemapBuffers[2][c + 0x21] = b[7];
+
+ gBGTilemapBuffers[1][c] = 0;
+ gBGTilemapBuffers[1][c + 1] = 0;
+ gBGTilemapBuffers[1][c + 0x20] = 0;
+ gBGTilemapBuffers[1][c + 0x21] = 0;
+ break;
+ case 0:
+ gBGTilemapBuffers[3][c] = 0x3014;
+ gBGTilemapBuffers[3][c + 1] = 0x3014;
+ gBGTilemapBuffers[3][c + 0x20] = 0x3014;
+ gBGTilemapBuffers[3][c + 0x21] = 0x3014;
+
+ gBGTilemapBuffers[2][c] = b[0];
+ gBGTilemapBuffers[2][c + 1] = b[1];
+ gBGTilemapBuffers[2][c + 0x20] = b[2];
+ gBGTilemapBuffers[2][c + 0x21] = b[3];
+
+ gBGTilemapBuffers[1][c] = b[4];
+ gBGTilemapBuffers[1][c + 1] = b[5];
+ gBGTilemapBuffers[1][c + 0x20] = b[6];
+ gBGTilemapBuffers[1][c + 0x21] = b[7];
+ break;
}
}
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index c5f2c08e7..8220a144b 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -342,41 +342,41 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse
return gUnknown_081C6C02;
switch (bgEvent->kind)
{
- case 0:
- default:
- return bgEvent->bgUnion.script;
- case 1:
- if (c != 2)
- return NULL;
- break;
- case 2:
- if (c != 1)
- return NULL;
- break;
- case 3:
- if (c != 4)
- return NULL;
- break;
- case 4:
- if (c != 3)
- return NULL;
- break;
- case 5:
- case 6:
- case 7:
- gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258;
- gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script;
- if (FlagGet(gSpecialVar_0x8004) == TRUE)
- return NULL;
- return HiddenItemScript;
- case 8:
- if (c == 2)
- {
- gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script;
- if (sub_80BC050())
- return gUnknown_081A2C51;
- }
+ case 0:
+ default:
+ return bgEvent->bgUnion.script;
+ case 1:
+ if (c != 2)
+ return NULL;
+ break;
+ case 2:
+ if (c != 1)
+ return NULL;
+ break;
+ case 3:
+ if (c != 4)
return NULL;
+ break;
+ case 4:
+ if (c != 3)
+ return NULL;
+ break;
+ case 5:
+ case 6:
+ case 7:
+ gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258;
+ gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script;
+ if (FlagGet(gSpecialVar_0x8004) == TRUE)
+ return NULL;
+ return HiddenItemScript;
+ case 8:
+ if (c == 2)
+ {
+ gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script;
+ if (sub_80BC050())
+ return gUnknown_081A2C51;
+ }
+ return NULL;
}
return bgEvent->bgUnion.script;
}
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index f7e09aacf..8c85e7b6d 100644..100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -1,30 +1,36 @@
#include "global.h"
#include "field_map_obj.h"
+#include "field_map_obj_helpers.h"
+#include "fieldmap.h"
#include "asm.h"
#include "berry.h"
#include "event_data.h"
#include "field_player_avatar.h"
+#include "field_effect.h"
+#include "field_ground_effect.h"
#include "palette.h"
#include "rom4.h"
+#include "rng.h"
#include "sprite.h"
+#include "field_camera.h"
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
+
extern void strange_npc_table_clear(void);
extern void ClearPlayerAvatarInfo(void);
extern void npc_load_two_palettes__no_record(u16, u8);
extern void npc_load_two_palettes__and_record(u16, u8);
extern void sub_8060388(s16, s16, s16 *, s16 *);
-extern void sub_80634D0();
+extern void sub_80634D0(struct MapObject *, struct Sprite *);
extern void pal_patch_for_npc(u16, u16);
-extern void sub_80603CC();
extern void CameraObjectReset1(void);
void sub_805AAB0(void);
u8 GetFieldObjectIdByLocalId(u8);
u8 GetFieldObjectIdByLocalIdAndMapInternal(u8, u8, u8);
u8 GetAvailableFieldObjectSlot(u16, u8, u8, u8 *);
-void FieldObjectHandleDynamicGraphicsId();
+void FieldObjectHandleDynamicGraphicsId(struct MapObject *);
void RemoveFieldObjectInternal(struct MapObject *);
u16 GetFieldObjectFlagIdByFieldObjectId(u8);
void MakeObjectTemplateFromFieldObjectTemplate(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *sprTemplate, struct SubspriteTable **subspriteTables);
@@ -609,7 +615,7 @@ u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 c
}
extern void sub_8064970(struct Sprite *);
-extern void sub_8060470();
+extern void sub_8060470(s16 *, s16 *, s16, s16);
extern void InitObjectPriorityByZCoord();
u8 sub_805B410(u8 a, u8 b, s16 c, s16 d, u8 e, u8 f)
@@ -1503,47 +1509,2910 @@ u16 npc_paltag_by_palslot(u8 a)
return 0x11FF;
}
-u32 sub_805C8A8(void);
+fieldmap_object_null_cb(sub_805C884, sub_805C8A8);
+fieldmap_object_cb(sub_805C8AC, sub_805C8D0, gUnknown_08375224);
+
+u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+extern void FieldObjectSetRegularAnim(struct MapObject *, struct Sprite *, u8);
+
+u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *);
+extern const s16 gUnknown_0837520C[];
+extern const s16 gUnknown_0837521C[];
+extern void sub_8064820(struct Sprite *, s16);
-void sub_805C884(struct Sprite *sprite)
+u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite)
{
- meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8A8);
+ if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ {
+ return 0;
+ }
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ sprite->data1 = 3;
+ return 1;
}
-u32 sub_805C8A8(void)
+extern u8 sub_8064824(struct Sprite *);
+
+u8 sub_805C96C(struct MapObject *mapObject, struct Sprite *sprite)
{
+ if (sub_8064824(sprite) != 0)
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
return 0;
}
-u32 sub_805C8D0(struct MapObject *, struct Sprite *);
+extern u8 sub_805FF20(struct MapObject *, u8);
-void sub_805C8AC(struct Sprite *sprite)
+u8 sub_805C98C(struct MapObject *mapObject, struct Sprite *sprite)
{
- meta_step(&gMapObjects[sprite->data0], sprite, sub_805C8D0);
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375240, 4);
+ direction = directions[Random() & 3];
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 5;
+ if (sub_805FF20(mapObject, direction) != 0)
+ {
+ sprite->data1 = 1;
+ }
+ return 1;
}
-extern u8 (*const gUnknown_08375224[])();
+u8 sub_805C9D8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 6;
+ return 1;
+}
-u32 sub_805C8D0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_805CA08(struct MapObject *mapObject, struct Sprite *sprite)
{
- return gUnknown_08375224[sprite->data1](mapObject, sprite);
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
}
-void npc_reset();
+u8 FieldObjectIsTrainerAndCloseToPlayer(struct MapObject *mapObject)
+{
+ s16 x;
+ s16 y;
+ s16 objx;
+ s16 objy;
+ s16 minx;
+ s16 maxx;
+ s16 miny;
+ s16 maxy;
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_DASH) == 0)
+ {
+ return 0;
+ }
+ if (mapObject->trainerType != 1 && mapObject->trainerType != 3)
+ {
+ return 0;
+ }
+ PlayerGetDestCoords(&x, &y);
+ objx = mapObject->coords2.x;
+ objy = mapObject->coords2.y;
+ minx = objx - mapObject->trainerRange_berryTreeId;
+ miny = objy - mapObject->trainerRange_berryTreeId;
+ maxx = objx + mapObject->trainerRange_berryTreeId;
+ maxy = objy + mapObject->trainerRange_berryTreeId;
+ if (minx > x || maxx < x || miny > y || maxy < y)
+ {
+ return 0;
+ }
+ return 1;
+}
-u8 sub_805C8F0(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_805CAAC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ if (a2 > a3)
+ {
+ dirn = DIR_EAST;
+ if (a0 < 0)
+ {
+ dirn = DIR_WEST;
+ }
+ }
+ else
+ {
+ dirn = DIR_SOUTH;
+ if (a1 < 0)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CADC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = DIR_SOUTH;
+ if (a1 < 0)
+ {
+ dirn = DIR_NORTH;
+ }
+ return dirn;
+}
+
+u8 sub_805CAEC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = DIR_EAST;
+ if (a0 < 0)
+ {
+ dirn = DIR_WEST;
+ }
+ return dirn;
+}
+
+u8 sub_805CB00(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ else if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CB5C(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ else if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = DIR_NORTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CBB8(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ else if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CC14(s16 a0, s16 a1, s16 a2, s16 a3) {
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ else if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = DIR_SOUTH;
+ }
+ }
+ return dirn;
+}
+
+u8 sub_805CC70(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_EAST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_WEST)
+ {
+ dirn = sub_805CADC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_SOUTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ u8 dirn;
+ dirn = sub_805CAAC(a0, a1, a2, a3);
+ if (dirn == DIR_NORTH)
+ {
+ dirn = sub_805CAEC(a0, a1, a2, a3);
+ }
+ return dirn;
+}
+
+u8 sub_805CD60(struct MapObject *mapObject, u8 a1)
+{
+ s16 x;
+ s16 y;
+ s16 x2;
+ s16 y2;
+ if (!FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ return 0;
+ }
+ PlayerGetDestCoords(&x, &y);
+ x -= mapObject->coords2.x;
+ y -= mapObject->coords2.y;
+ x2 = x;
+ y2 = y;
+ if (x2 < 0)
+ {
+ x2 = -x2;
+ }
+ if (y2 < 0)
+ {
+ y2 = -y2;
+ }
+ return gUnknown_08375244[a1](x, y, x2, y2);
+}
+
+fieldmap_object_cb(sub_805CDE8, sub_805CE0c, gUnknown_08375270);
+
+u8 sub_805CE2C(struct MapObject *mapObject, struct Sprite *sprite)
{
- npc_reset(mapObject);
+ npc_reset(mapObject, sprite);
sprite->data1 = 1;
return 1;
}
-extern void FieldObjectSetRegularAnim();
+u8 sub_805CE40(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
-u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
+u8 sub_805CE6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805CEB0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805CEE0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375240, 4);
+ direction = sub_805CD60(mapObject, 0);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805CF28, sub_805CF4C, gUnknown_08375284);
+
+u8 sub_805CF6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805CF80(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
sprite->data1 = 2;
return 1;
}
+u8 sub_805CFAC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ {
+ return 0;
+ }
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ sprite->data1 = 3;
+ return 1;
+}
+
+u8 sub_805CFE8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) != 0)
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D008(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752A0, 2);
+ direction = directions[Random() & 1];
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 5;
+ if (sub_805FF20(mapObject, direction) != 0)
+ {
+ sprite->data1 = 1;
+ }
+ return 1;
+}
+
+u8 sub_805D054(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 6;
+ return 1;
+}
+
+u8 sub_805D084(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805D0AC, sub_805D0D0, gUnknown_083752A4);
+
+u8 sub_805D0F0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D104(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D130(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) == 0)
+ {
+ return 0;
+ }
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ sprite->data1 = 3;
+ return 1;
+}
+
+u8 sub_805D16C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) != 0)
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D18C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752C0, 2);
+ direction = directions[Random() & 1];
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 5;
+ if (sub_805FF20(mapObject, direction) != 0)
+ {
+ sprite->data1 = 1;
+ }
+ return 1;
+}
+
+u8 sub_805D1D8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 6;
+ return 1;
+}
+
+u8 sub_805D208(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805D230, sub_805D254, gUnknown_083752C4);
+
+u8 sub_805D274(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D2A0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite) != 0)
+ {
+ sprite->data1 = 2;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D2C0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_1 = 0;
+ return 0;
+}
+
+u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite);
+extern u8 (*const gUnknown_083752D0[])(struct MapObject *mapObject, struct Sprite *sprite);
+
+void FieldObjectCB_BerryTree(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ mapObject = &gMapObjects[sprite->data0];
+ if (!(sprite->data7 & 1))
+ {
+ get_berry_tree_graphics(mapObject, sprite);
+ sprite->data7 |= 1;
+ }
+ meta_step(mapObject, sprite, sub_805D314);
+}
+
+u8 sub_805D314(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ return gUnknown_083752D0[sprite->data1](mapObject, sprite);
+}
+
+extern u32 gUnknown_0202FF84[];
+
+u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 berryTreeStage;
+ npc_reset(mapObject, sprite);
+ mapObject->mapobj_bit_13 = 1;
+ sprite->invisible = 1;
+ berryTreeStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
+ if (!berryTreeStage)
+ {
+ if (!(sprite->data7 & 4) && sprite->animNum == 4)
+ {
+ gUnknown_0202FF84[0] = mapObject->coords2.x;
+ gUnknown_0202FF84[1] = mapObject->coords2.y;
+ gUnknown_0202FF84[2] = sprite->subpriority - 1;
+ gUnknown_0202FF84[3] = sprite->oam.priority;
+ FieldEffectStart(0x17);
+ sprite->animNum = 0;
+ }
+ return 0;
+ }
+ mapObject->mapobj_bit_13 = 0;
+ sprite->invisible = 0;
+ berryTreeStage--;
+ if (sprite->animNum != berryTreeStage)
+ {
+ sprite->data1 = 2;
+ return 1;
+ }
+ get_berry_tree_graphics(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, 0x39);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D3EC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sprite->data1 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 3;
+ sprite->data2 = 0;
+ sprite->data7 |= 2;
+ gUnknown_0202FF84[0] = mapObject->coords2.x;
+ gUnknown_0202FF84[1] = mapObject->coords2.y;
+ gUnknown_0202FF84[2] = sprite->subpriority - 1;
+ gUnknown_0202FF84[3] = sprite->oam.priority;
+ FieldEffectStart(0x17);
+ return 1;
+}
+
+u8 sub_805D458(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->data2++;
+ mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1);
+ sprite->animPaused = 1;
+ if (sprite->data2 > 64)
+ {
+ get_berry_tree_graphics(mapObject, sprite);
+ sprite->data1 = 4;
+ sprite->data2 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D4A8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sprite->data2++;
+ mapObject->mapobj_bit_13 = ((sprite->data2 & 0x2) >> 1);
+ sprite->animPaused = 1;
+ if (sprite->data2 > 64)
+ {
+ sprite->data1 = 0;
+ sprite->data7 &= (-3);
+ return 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805D4F4, sub_805D518, gUnknown_083752E4);
+
+u8 sub_805D538(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D54C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D578(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D5BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D5EC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752A0, 2);
+ direction = sub_805CD60(mapObject, 1);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D634, sub_805D658, gUnknown_083752F8);
+
+u8 sub_805D678(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D68C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D6B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837520C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D6FC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D72C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_083752C0, 2);
+ direction = sub_805CD60(mapObject, 2);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D774, sub_805D798, gUnknown_0837530C);
+
+u8 sub_805D7B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D7CC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D7F8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D83C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D86C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375320, 2);
+ direction = sub_805CD60(mapObject, 3);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D8B4, sub_805D8D8, gUnknown_08375324);
+
+u8 sub_805D8F8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805D90C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805D938(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805D97C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805D9AC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375338, 2);
+ direction = sub_805CD60(mapObject, 4);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805D9F4, sub_805DA18, gUnknown_0837533C);
+
+u8 sub_805DA38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DA4C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DA78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DABC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DAEC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375350, 2);
+ direction = sub_805CD60(mapObject, 5);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DB34, sub_805DB58, gUnknown_08375354);
+
+u8 sub_805DB78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DB8C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DBB8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DBFC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DC2C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[2];
+ memcpy(directions, gUnknown_08375368, 2);
+ direction = sub_805CD60(mapObject, 6);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 1];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DC74, sub_805DC98, gUnknown_0837536C);
+
+u8 sub_805DCB8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DCCC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DCF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DD3C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DD6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375380, 4);
+ direction = sub_805CD60(mapObject, 7);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DDB4, sub_805DDD8, gUnknown_08375384);
+
+u8 sub_805DDF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DE0C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DE38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DE7C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DEAC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375398, 4);
+ direction = sub_805CD60(mapObject, 8);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805DEF4, sub_805DF18, gUnknown_0837539C);
+
+u8 sub_805DF38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805DF4C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805DF78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805DFBC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805DFEC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_083753B0, 4);
+ direction = sub_805CD60(mapObject, 9);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805E034, sub_805E058, gUnknown_083753B4);
+
+u8 sub_805E078(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E08C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805E0B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, gUnknown_0837521C[Random() & 3]);
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805E0FC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 4;
+ return 1;
+ }
+ return 0;
+}
+
+u8 sub_805E12C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[4];
+ memcpy(directions, gUnknown_083753C8, 4);
+ direction = sub_805CD60(mapObject, 10);
+ if (direction == 0)
+ {
+ direction = directions[Random() & 3];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 1;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805E174, sub_805E198, gUnknown_083753CC);
+
+u8 sub_805E1B8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E1E4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, 0x30);
+ sprite->data1 = 2;
+ }
+ return 0;
+}
+
+u8 sub_805E208(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805E234(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[5];
+ memcpy(directions, gUnknown_083753DC, 5);
+ direction = sub_805CD60(mapObject, 0);
+ if (direction == 0)
+ {
+ direction = directions[mapObject->mapobj_unk_18];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 0;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805E278, sub_803E29C, gUnknown_083753E4);
+
+u8 sub_805E2BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E2E8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ sub_8064820(sprite, 0x30);
+ sprite->data1 = 2;
+ }
+ return 0;
+}
+
+u8 sub_805E30C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064824(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
+ {
+ sprite->data1 = 3;
+ }
+ return 0;
+}
+
+u8 sub_805E338(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ u8 directions[5];
+ memcpy(directions, gUnknown_083753F4, 5);
+ direction = sub_805CD60(mapObject, 0);
+ if (direction == 0)
+ {
+ direction = directions[mapObject->mapobj_unk_18];
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 0;
+ return 1;
+}
+
+fieldmap_object_cb(sub_805E37C, sub_805E3A0, gUnknown_083753FC);
+
+u8 sub_805E3C0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 sub_805E3D4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 direction;
+ direction = gUnknown_0836DC09[mapObject->animPattern];
+ if (mapObject->mapobj_unk_21 != 0)
+ {
+ direction = GetOppositeDirection(direction);
+ }
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805E40C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 v0;
+ u8 goSpeed0AnimId;
+ if (mapObject->mapobj_unk_21 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 0;
+ FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
+ }
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ if (v0 == 1)
+ {
+ mapObject->mapobj_unk_21 ++;
+ FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ }
+ if (v0 != 0)
+ {
+ goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
+ }
+ FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId);
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 3;
+ return 1;
+}
+
+u8 sub_805E4C4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+u8 sub_805E4EC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_reset(mapObject, sprite);
+ sprite->data1 = 1;
+ return 1;
+}
+
+u8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, struct Sprite *sprite, u8 *directionSequence)
+{
+ u8 v0;
+ u8 goSpeed0AnimId;
+ if (mapObject->mapobj_unk_21 == 3 && mapObject->coords1.x == mapObject->coords2.x && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 0;
+ }
+ FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]);
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ if (v0 == 1)
+ {
+ mapObject->mapobj_unk_21 ++;
+ FieldObjectSetDirection(mapObject, directionSequence[mapObject->mapobj_unk_21]);
+ goSpeed0AnimId = GetGoSpeed0AnimId(mapObject->placeholder18);
+ v0 = sub_805FF20(mapObject, mapObject->placeholder18);
+ }
+ if (v0 != 0)
+ {
+ goSpeed0AnimId = GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18);
+ }
+ FieldObjectSetRegularAnim(mapObject, sprite, goSpeed0AnimId);
+ mapObject->mapobj_bit_1 = 1;
+ sprite->data1 = 2;
+ return 1;
+}
+
+u8 sub_805E5B4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (FieldObjectExecRegularAnim(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_1 = 0;
+ sprite->data1 = 1;
+ }
+ return 0;
+}
+
+fieldmap_object_cb(sub_805E5DC, sub_805E600, gUnknown_0837540C);
+
+u8 sub_805E620(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375418, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E668, sub_805E68C, gUnknown_0837541C);
+
+u8 sub_805E6AC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375428, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E6F4, sub_805E718, gUnknown_0837542C);
+
+u8 sub_805E738(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375438, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E780, sub_805E7A4, gUnknown_0837543C);
+
+u8 sub_805E7C4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375448, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+
+
+fieldmap_object_cb(sub_805E80C, sub_805E830, gUnknown_0837544C);
+
+u8 sub_805E850(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375458, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E898, sub_805E8BC, gUnknown_0837545C);
+
+u8 sub_805E8DC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375468, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E924, sub_805E948, gUnknown_0837546C);
+
+u8 sub_805E968(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375240, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805E9B0, sub_805E9D4, gUnknown_08375478);
+
+u8 sub_805E9F4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375484, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EA3C, sub_805EA60, gUnknown_08375488);
+
+u8 sub_805EA80(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375494, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EAC8, sub_805EAEC, gUnknown_08375498);
+
+u8 sub_805EB0C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754A4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EB54, sub_805EB78, gUnknown_083754A8);
+
+u8 sub_805EB98(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754B4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EBE0, sub_805EC04, gUnknown_083754B8);
+
+u8 sub_805EC24(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754C4, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EC6C, sub_805EC90, gUnknown_083754C8);
+
+u8 sub_805ECB0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754D4, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805ECF8, sub_805ED1C, gUnknown_083754D8);
+
+u8 sub_805ED3C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754E4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805ED84, sub_805EDA8, gUnknown_083754E8);
+
+u8 sub_805EDC8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_083754F4, 4);
+ if (mapObject->mapobj_unk_21 == 1 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EE10, sub_805EE34, gUnknown_083754F8);
+
+u8 sub_805EE54(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375504, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EE9C, sub_805EEC0, gUnknown_08375508);
+
+u8 sub_805EEE0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375514, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EF28, sub_805EF4C, gUnknown_08375518);
+
+u8 sub_805EF6C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375524, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805EFB4, sub_805EFD8, gUnknown_08375528);
+
+u8 sub_805EFF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375534, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F040, sub_805F064, gUnknown_08375538);
+
+u8 sub_805F084(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375544, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F0CC, sub_805F0F0, gUnknown_08375548);
+
+u8 sub_805F110(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375554, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F158, sub_805F17C, gUnknown_08375558);
+
+u8 sub_805F19C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375564, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.y == mapObject->coords2.y)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F1E4, sub_805F208, gUnknown_08375568);
+
+u8 sub_805F228(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375574, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+}
+
+fieldmap_object_cb(sub_805F270, sub_805F294, gUnknown_08375578);
+
+u8 sub_805F2B4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 directions[4];
+ memcpy(directions, gUnknown_08375584, 4);
+ if (mapObject->mapobj_unk_21 == 2 && mapObject->coords1.x == mapObject->coords2.x)
+ {
+ mapObject->mapobj_unk_21 = 3;
+ }
+ return MoveFieldObjectInNextDirectionInSequence(mapObject, sprite, directions);
+};
+
+void sub_805F2FC(struct Sprite *sprite);
+void FieldObjectCB_TreeDisguise(struct Sprite *sprite);
+void FieldObjectCB_MountainDisguise(struct Sprite *sprite);
+void sub_805F8E0(struct Sprite *sprite);
+void FieldObjectCB_Hidden1(struct Sprite *sprite);
+void sub_805FB20(struct Sprite *sprite);
+void sub_805FB90(struct Sprite *sprite);
+void sub_805FC00(struct Sprite *sprite);
+void sub_805FC70(struct Sprite *sprite);
+
+asm(".section .text_b\n");
+
+void npc_reset(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_1 = 0;
+ mapObject->mapobj_bit_6 = 0;
+ mapObject->mapobj_bit_7 = 0;
+ mapObject->mapobj_unk_1C = 0xff;
+ sprite->data1 = 0;
+}
+
+extern const u8 gUnknown_083755F4[9];
+extern const u8 gUnknown_083755FD[9];
+extern const u8 gUnknown_08375606[9];
+extern const u8 gUnknown_0837560F[9];
+extern const u8 gUnknown_08375618[9];
+extern const u8 gUnknown_08375621[9];
+extern const u8 gUnknown_0837562A[9];
+extern const u8 gUnknown_08375633[9];
+extern const u8 gUnknown_0837563C[9];
+extern const u8 gUnknown_08375645[9];
+extern const u8 gUnknown_0837564E[9];
+extern const u8 gUnknown_08375657[9];
+extern const u8 gUnknown_08375660[9];
+extern const u8 gUnknown_08375669[9];
+extern const u8 gUnknown_08375672[9];
+
+u8 FieldObjectDirectionToImageAnimId(u8 direction)
+{
+ return gUnknown_083755F4[direction];
+}
+
+u8 get_go_image_anim_num(u8 direction)
+{
+ return gUnknown_083755FD[direction];
+}
+
+u8 get_go_fast_image_anim_num(u8 direction)
+{
+ return gUnknown_08375606[direction];
+}
+
+u8 get_go_faster_image_anim_num(u8 direction)
+{
+ return gUnknown_0837560F[direction];
+}
+
+u8 sub_805FD78(u8 direction)
+{
+ return gUnknown_08375618[direction];
+}
+
+u8 sub_805FD88(u8 direction)
+{
+ return gUnknown_08375621[direction];
+}
+
+u8 sub_805FD98(u8 direction)
+{
+ return gUnknown_0837562A[direction];
+}
+
+u8 unref_sub_805FDA8(u8 direction)
+{
+ return gUnknown_08375633[direction];
+}
+
+u8 sub_805FDB8(u8 direction)
+{
+ return gUnknown_0837563C[direction];
+}
+
+u8 sub_805FDC8(u8 direction)
+{
+ return gUnknown_08375645[direction];
+}
+
+u8 sub_805FDD8(u8 direction)
+{
+ return gUnknown_0837564E[direction];
+}
+
+u8 sub_805FDE8(u8 direction)
+{
+ return gUnknown_08375657[direction];
+}
+
+u8 sub_805FDF8(u8 direction)
+{
+ return gUnknown_08375660[direction];
+}
+
+u8 sub_805FE08(u8 direction)
+{
+ return gUnknown_08375669[direction];
+}
+
+u8 get_run_image_anim_num(u8 direction)
+{
+ return gUnknown_08375672[direction];
+}
+
+void sub_805FE28(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
+{
+ if (!mapObject->mapobj_bit_12)
+ {
+ sprite->animNum = animNum;
+ if (sprite->animCmdIndex == 1)
+ {
+ sprite->animCmdIndex = 2;
+ } else if (sprite->animCmdIndex == 3)
+ {
+ sprite->animCmdIndex = 0;
+ }
+ SeekSpriteAnim(sprite, sprite->animCmdIndex);
+ }
+}
+
+void sub_805FE64(struct MapObject *mapObject, struct Sprite *sprite, u8 animNum)
+{
+ u8 animCmdIndex;
+ if (!mapObject->mapobj_bit_12)
+ {
+ sprite->animNum = animNum;
+ animCmdIndex = 3;
+ if (sprite->animCmdIndex < 2)
+ {
+ animCmdIndex = 1;
+ }
+ SeekSpriteAnim(sprite, animCmdIndex);
+ }
+}
+
+u8 sub_805FE90(s16 a0, s16 a1, s16 a2, s16 a3)
+{
+ if (a0 > a2)
+ {
+ return DIR_WEST;
+ } else if (a0 < a2)
+ {
+ return DIR_EAST;
+ } else if (a1 > a3)
+ {
+ return DIR_NORTH;
+ } else
+ {
+ return DIR_SOUTH;
+ }
+}
+
+void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern)
+{
+ mapObject->animPattern = animPattern;
+ mapObject->mapobj_unk_21 = 0;
+ mapObject->animId = 0;
+ gSprites[mapObject->spriteId].callback = gUnknown_0836DA88[animPattern];
+ gSprites[mapObject->spriteId].data1 = 0;
+}
+
+u8 npc_running_behaviour_by_direction(u8 direction)
+{
+ return gUnknown_0837567B[direction];
+}
+
+u8 sub_805FF20(struct MapObject *mapObject, u8 direction)
+{
+ s16 x;
+ s16 y;
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ MoveCoords(direction, &x, &y);
+ return npc_block_way(mapObject, x, y, direction);
+}
+
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y);
+bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y);
+bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
+
+u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+{
+ if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ {
+ return 1;
+ }
+ if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
+ {
+ return 2;
+ } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
+ {
+ return 2;
+ }
+ if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
+ {
+ return 3;
+ }
+ if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
+ {
+ return 4;
+ }
+ return 0;
+}
+
+u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+{
+ u8 flags;
+ flags = 0;
+ if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
+ {
+ flags |= 1;
+ }
+ if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
+ {
+ flags |= 2;
+ }
+ if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
+ {
+ flags |= 4;
+ }
+ if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
+ {
+ flags |= 8;
+ }
+ return flags;
+}
+
+bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y)
+{
+ s16 minv;
+ s16 maxv;
+ if (mapObject->mapobj_unk_19 != 0)
+ {
+ minv = mapObject->coords1.x - (mapObject->mapobj_unk_19);
+ maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19);
+ if (minv > x || maxv < x)
+ {
+ return 1;
+ }
+ }
+ if (mapObject->mapobj_unk_19b != 0)
+ {
+ minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b);
+ maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b);
+ if (minv > y || maxv < y)
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+{
+ if (gUnknown_08375684[direction - 1](mapObject->mapobj_unk_1E) || gUnknown_08375694[direction - 1](MapGridGetMetatileBehaviorAt(x, y)))
+ {
+ return 1;
+ }
+ return 0;
+}
+
+bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y)
+{
+ struct MapObject *mapObject2;
+ u8 i;
+ for (i=0; i<16; i++)
+ {
+ mapObject2 = &gMapObjects[i];
+ if (mapObject2->active && mapObject2 != mapObject)
+ {
+ if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y))
+ {
+ continue;
+ }
+ if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0))
+ {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+bool8 sub_8060234(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ if (gSprites[gMapObjects[mapObjectId].spriteId].data7 & 2)
+ {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+void sub_8060288(u8 localId, u8 mapNum, u8 mapGroup)
+{
+ u8 mapObjectId;
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
+ {
+ gSprites[gMapObjects[mapObjectId].spriteId].data7 |= 4;
+ }
+}
+
+void MoveCoords(u8 direction, s16 *x, s16 *y)
+{
+ *x += gDirectionToVector[direction].x;
+ *y += gDirectionToVector[direction].y;
+}
+
+void unref_sub_80602F8(u8 direction, s16 *x, s16 *y)
+{
+ *x += gDirectionToVector[direction].x << 4;
+ *y += gDirectionToVector[direction].y << 4;
+}
+
+void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
+{
+ if (gDirectionToVector[direction].x > 0)
+ {
+ *x += deltaX;
+ }
+ if (gDirectionToVector[direction].x < 0)
+ {
+ *x -= deltaX;
+ }
+ if (gDirectionToVector[direction].y > 0)
+ {
+ *y += deltaY;
+ }
+ if (gDirectionToVector[direction].y < 0)
+ {
+ *y -= deltaY;
+ }
+}
+
+void sub_8060388(s16 x1, s16 y1, s16 *x2, s16 *y2)
+{
+ *x2 = (x1 - gSaveBlock1.pos.x) << 4;
+ *y2 = (y1 - gSaveBlock1.pos.y) << 4;
+ *x2 -= gUnknown_0300489C;
+ *y2 -= gUnknown_03004898;
+}
+
+void sub_80603CC(s16 x1, s16 y1, s16 *x2, s16 *y2)
+{
+ s16 x3;
+ s16 y3;
+ x3 = -gUnknown_0300489C - gUnknown_03004880.unk10;
+ y3 = -gUnknown_03004898 - gUnknown_03004880.unk14;
+ if (gUnknown_03004880.unk10 > 0)
+ {
+ x3 += 0x10;
+ }
+ if (gUnknown_03004880.unk10 < 0)
+ {
+ x3 -= 0x10;
+ }
+ if (gUnknown_03004880.unk14 > 0)
+ {
+ y3 += 0x10;
+ }
+ if (gUnknown_03004880.unk14 < 0)
+ {
+ y3 -= 0x10;
+ }
+ *x2 = ((x1 - gSaveBlock1.pos.x) << 4) + x3;
+ *y2 = ((y1 - gSaveBlock1.pos.y) << 4) + y3;
+}
+
+void sub_8060470(s16 *x, s16 *y, s16 dx, s16 dy)
+{
+ sub_80603CC(*x, *y, x, y);
+ *x += dx;
+ *y += dy;
+}
+
+void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y)
+{
+ *x = 0;
+ *y = 0;
+ if (gUnknown_03004880.unk10 > 0)
+ {
+ (*x)++;
+ }
+ if (gUnknown_03004880.unk10 < 0)
+ {
+ (*x)--;
+ }
+ if (gUnknown_03004880.unk14 > 0)
+ {
+ (*y)++;
+ }
+ if (gUnknown_03004880.unk14 < 0)
+ {
+ (*y)--;
+ }
+}
+
+void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y)
+{
+ *x = mapObject->coords2.x;
+ *y = mapObject->coords2.y;
+ MoveCoords(direction, x, y);
+}
+
+bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_1 || mapObject->mapobj_bit_6)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 FieldObjectIsSpecialAnimActive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6 && mapObject->mapobj_unk_1C != 0xff)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
+{
+ if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
+ {
+ return TRUE;
+ }
+ UnfreezeMapObject(mapObject);
+ mapObject->mapobj_unk_1C = specialAnimId;
+ mapObject->mapobj_bit_6 = 1;
+ mapObject->mapobj_bit_7 = 0;
+ gSprites[mapObject->spriteId].data2 = 0;
+ return FALSE;
+}
+
+void FieldObjectForceSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
+{
+ FieldObjectClearAnimIfSpecialAnimActive(mapObject);
+ FieldObjectSetSpecialAnim(mapObject, specialAnimId);
+}
+
+void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6)
+ {
+ FieldObjectClearAnim(mapObject);
+ }
+}
+
+void FieldObjectClearAnim(struct MapObject *mapObject)
+{
+ mapObject->mapobj_unk_1C = 0xFF;
+ mapObject->mapobj_bit_6 = 0;
+ mapObject->mapobj_bit_7 = 0;
+ gSprites[mapObject->spriteId].data1 = 0;
+ gSprites[mapObject->spriteId].data2 = 0;
+}
+
+bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6)
+ return mapObject->mapobj_bit_7;
+ return 0x10;
+}
+
+bool8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *mapObject)
+{
+ u8 specialAnimStatus;
+ specialAnimStatus = FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject);
+ if (specialAnimStatus != 0 && specialAnimStatus != 0x10)
+ {
+ FieldObjectClearAnimIfSpecialAnimActive(mapObject);
+ }
+ return specialAnimStatus;
+}
+
+u8 FieldObjectGetSpecialAnim(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6)
+ {
+ return mapObject->mapobj_unk_1C;
+ }
+ return 0xFF;
+}
+
+extern void DoGroundEffects_OnSpawn(struct MapObject *mapObject, struct Sprite *sprite);
+extern void DoGroundEffects_OnBeginStep(struct MapObject *mapObject, struct Sprite *sprite);
+extern void DoGroundEffects_OnFinishStep(struct MapObject *mapObject, struct Sprite *sprite);
+extern void npc_obj_transfer_image_anim_pause_flag(struct MapObject *mapObject, struct Sprite *sprite);
+void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite);
+void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite);
+void FieldObjectUpdateSubpriority(struct MapObject *mapObject, struct Sprite *sprite);
+
+void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback)(struct MapObject *, struct Sprite *))
+{
+ DoGroundEffects_OnSpawn(mapObject, sprite);
+ sub_80634A0(mapObject, sprite);
+ if (FieldObjectIsSpecialAnimActive(mapObject))
+ {
+ FieldObjectExecSpecialAnim(mapObject, sprite);
+ } else
+ {
+ if (!mapObject->mapobj_bit_8)
+ {
+ while (callback(mapObject, sprite));
+ }
+ }
+ DoGroundEffects_OnBeginStep(mapObject, sprite);
+ DoGroundEffects_OnFinishStep(mapObject, sprite);
+ npc_obj_transfer_image_anim_pause_flag(mapObject, sprite);
+ sub_80634D0(mapObject, sprite);
+ FieldObjectUpdateSubpriority(mapObject, sprite);
+}
+
+
+extern const u8 gUnknown_083756C8[5];
+
+u8 GetFaceDirectionAnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756C8, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756CD[5];
+
+u8 GetSimpleGoAnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756CD, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756D2[5];
+
+u8 GetGoSpeed0AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756D2, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756D7[5];
+
+u8 sub_8060744(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756D7, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756DC[5];
+
+u8 d2s_08064034(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756DC, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756E1[5];
+
+u8 sub_806079C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756E1, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756E6[5];
+
+u8 sub_80607C8(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756E6, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756EB[5];
+
+u8 sub_80607F4(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756EB, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756F0[5];
+
+u8 GetJumpLedgeAnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756F0, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756F5[5];
+
+u8 sub_806084C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756F5, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756FA[5];
+
+u8 sub_8060878(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756FA, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_083756FF[5];
+
+u8 sub_80608A4(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_083756FF, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375704[5];
+
+u8 sub_80608D0(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375704, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375709[5];
+
+u8 GetStepInPlaceDelay32AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375709, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_0837570E[5];
+
+u8 GetStepInPlaceDelay16AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837570E, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375713[5];
+
+u8 GetStepInPlaceDelay8AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375713, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375718[5];
+
+u8 GetStepInPlaceDelay4AnimId(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375718, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction)
+{
+ return FieldObjectSetSpecialAnim(mapObject, GetFaceDirectionAnimId(GetOppositeDirection(direction)));
+}
+
+extern const u8 gUnknown_0837571D[5];
+
+u8 sub_80609D8(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837571D, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375722[5];
+
+u8 sub_8060A04(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375722, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375727[5];
+
+u8 sub_8060A30(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375727, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_0837572C[5];
+
+u8 sub_8060A5C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837572C, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375731[5];
+
+u8 sub_8060A88(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375731, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375736[5];
+
+u8 sub_8060AB4(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375736, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_0837573B[5];
+
+u8 sub_8060AE0(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837573B, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375740[5];
+
+u8 sub_8060B0C(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375740, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_08375745[5];
+
+u8 sub_8060B38(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_08375745, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+extern const u8 gUnknown_0837574A[5];
+
+u8 sub_8060B64(u8 index)
+{
+ u8 directions[5];
+ memcpy(directions, gUnknown_0837574A, 5);
+ if (index >= 5)
+ {
+ index = 0;
+ }
+ return directions[index];
+}
+
+u8 GetOppositeDirection(u8 direction)
+{
+ u8 directions[8];
+ memcpy(directions, gUnknown_0837574F, 8);
+ if (direction == 0 || direction > 8)
+ {
+ return direction;
+ }
+ return directions[direction - 1];
+}
+
+int zffu_offset_calc(u8 a0, u8 a1)
+{
+ return gUnknown_08375757[a0 - 1][a1 - 1];
+}
+
+#ifdef NONMATCHING
+u8 state_to_direction(u8 a0, u8 a1, u8 a2)
+{
+ int zffuOffset;
+ asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call.")
+ if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4)
+ {
+ return 0;
+ }
+ zffuOffset = zffu_offset_calc(a1, a2);
+ return gUnknown_08375767[a0 - 1][zffuOffset - 1];
+}
+#else
+__attribute__((naked))
+u8 state_to_direction(u8 a0, u8 a1, u8 a2)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r0, r1, 0\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ cmp r1, 0\n\
+ beq _08060BFC\n\
+ cmp r2, 0\n\
+ beq _08060BFC\n\
+ cmp r1, 0x4\n\
+ bhi _08060BFC\n\
+ cmp r2, 0x4\n\
+ bls _08060C00\n\
+_08060BFC:\n\
+ movs r0, 0\n\
+ b _08060C12\n\
+_08060C00:\n\
+ adds r1, r2, 0\n\
+ bl zffu_offset_calc\n\
+ ldr r2, _08060C18 @ =gUnknown_08375767\n\
+ lsls r1, r4, 2\n\
+ subs r1, 0x5\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+_08060C12:\n\
+ pop {r4}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08060C18: .4byte gUnknown_08375767\n\
+.syntax divided\n");
+}
+#endif
+
+void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
+ {
+ mapObject->mapobj_bit_7 = 1;
+ }
+}
+
+bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (gUnknown_08375778[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
+ {
+ mapObject->mapobj_unk_1C = 0xFF;
+ sprite->data2 = 0;
+ return 1;
+ }
+ return 0;
+}
+
+void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId)
+{
+ mapObject->mapobj_unk_1C = animId;
+ sprite->data2 = 0;
+}
+
+void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ FieldObjectSetDirection(mapObject, direction);
+ npc_coords_shift_still(mapObject);
+ sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+ sprite->animPaused = 1;
+ sprite->data2 = 1;
+}
+
+u8 sub_8060CE0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_SOUTH);
+ return 1;
+}
+
+u8 sub_8060CF0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_NORTH);
+ return 1;
+}
+
+u8 sub_8060D00(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_WEST);
+ return 1;
+}
+
+u8 sub_8060D10(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ an_look_any(mapObject, sprite, DIR_EAST);
+ return 1;
+}
+
+void sub_8060D20(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2)
+{
+ s16 x;
+ s16 y;
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ FieldObjectSetDirection(mapObject, direction);
+ MoveCoords(direction, &x, &y);
+ npc_coords_shift(mapObject, x, y);
+ oamt_npc_ministep_reset(sprite, direction, a2);
+ sprite->animPaused = 0;
+ mapObject->mapobj_bit_2 = 1;
+ sprite->data2 = 1;
+}
+
+extern u8 (*const gUnknown_083759C0[5])(u8);
+
+void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 a2)
+{
+ u8 (*functions[5])(u8);
+ memcpy(functions, gUnknown_083759C0, sizeof(gUnknown_083759C0));
+ sub_8060D20(mapObject, sprite, direction, a2);
+ sub_805FE28(mapObject, sprite, functions[a2](mapObject->mapobj_unk_18));
+}
+
+void do_run_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ sub_8060D20(mapObject, sprite, direction, 1);
+ sub_805FE28(mapObject, sprite, get_run_image_anim_num(mapObject->mapobj_unk_18));
+}
+
+bool8 obj_npc_ministep(struct Sprite *);
+
+bool8 npc_obj_ministep_stop_on_arrival(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (obj_npc_ministep(sprite))
+ {
+ npc_coords_shift_still(mapObject);
+ mapObject->mapobj_bit_3 = 1;
+ sprite->animPaused = 1;
+ return 1;
+ }
+ return 0;
+}
+
+void sub_8060E68(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ s16 x;
+ s16 y;
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ FieldObjectSetDirection(mapObject, direction);
+ MoveCoords(direction, &x, &y);
+ npc_coords_shift(mapObject, x, y);
+ sub_806467C(sprite, direction);
+ sprite->animPaused = 0;
+ mapObject->mapobj_bit_2 = 1;
+ sprite->data2 = 1;
+}
+
+void sub_8060ED8(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ sub_8060E68(mapObject, sprite, direction);
+ sub_805FE28(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+}
+
+bool8 an_walk_any_2(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_806468C(sprite))
+ {
+ npc_coords_shift_still(mapObject);
+ mapObject->mapobj_bit_3 = 1;
+ sprite->animPaused = 1;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8060F5C(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060F3C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_SOUTH);
+ return sub_8060F5C(mapObject, sprite);
+}
+
+bool8 sub_8060F5C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8060F9C(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060F7C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_NORTH);
+ return sub_8060F9C(mapObject, sprite);
+}
+
+bool8 sub_8060F9C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8060FDC(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060FBC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_WEST);
+ return sub_8060FDC(mapObject, sprite);
+}
+
+bool8 sub_8060FDC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806101C(struct MapObject *, struct Sprite *);
+
+bool8 sub_8060FFC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8060ED8(mapObject, sprite, DIR_EAST);
+ return sub_806101C(mapObject, sprite);
+}
+
+bool8 sub_806101C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (an_walk_any_2(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806105C(struct MapObject *, struct Sprite *);
+
+bool8 sub_806103C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_SOUTH, 0);
+ return sub_806105C(mapObject, sprite);
+}
+
+bool8 sub_806105C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806109C(struct MapObject *, struct Sprite *);
+
+bool8 sub_806107C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_NORTH, 0);
+ return sub_806109C(mapObject, sprite);
+}
+
+bool8 sub_806109C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80610DC(struct MapObject *, struct Sprite *);
+
+bool8 sub_80610BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_WEST, 0);
+ return sub_80610DC(mapObject, sprite);
+}
+
+bool8 sub_80610DC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806111C(struct MapObject *, struct Sprite *);
+
+bool8 sub_80610FC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_EAST, 0);
+ return sub_806111C(mapObject, sprite);
+}
+
+bool8 sub_806111C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 6a0fe1dce..1e1162350 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -16,18 +16,13 @@
#include "script.h"
#include "songs.h"
#include "sound.h"
+#include "strings2.h"
#include "task.h"
#include "wild_encounter.h"
-extern u8 gOtherText_OhABite[];
-extern u8 gOtherText_PokeOnHook[];
-extern u8 gOtherText_NotEvenANibble[];
-extern u8 gOtherText_ItGotAway[];
-
extern u32 gUnknown_0202FF84[];
//Functions
-static u32 sub_80587D8(void);
static bool8 sub_8058854(struct MapObject *, u8);
static void npc_clear_strange_bits(struct MapObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
@@ -246,16 +241,7 @@ static u8 (*const gUnknown_0830FC98[])(struct Task *, struct MapObject *) =
sub_805A1B8,
};
-
-void sub_80587B4(struct Sprite *sprite)
-{
- meta_step(&gMapObjects[sprite->data0], sprite, sub_80587D8);
-}
-
-static u32 sub_80587D8(void)
-{
- return 0;
-}
+fieldmap_object_null_cb(sub_80587B4, sub_80587D8);
void player_step(u8 direction, u16 newKeys, u16 heldKeys)
{
diff --git a/src/field_poison.c b/src/field_poison.c
index 8e49080b0..4d4d4b975 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -72,32 +72,32 @@ void Task_WhiteOut(u8 taskId)
switch (taskData[TD_STATE])
{
- case 0: //Check if Pokemon have fainted due to poison
- while (taskData[TD_PARTY_MEMBER] < 6)
+ case 0: //Check if Pokemon have fainted due to poison
+ while (taskData[TD_PARTY_MEMBER] < 6)
+ {
+ if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER]))
{
- if (CheckMonFaintedFromPoison(taskData[TD_PARTY_MEMBER]))
- {
- MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]);
- ShowFieldMessage(fieldPoisonText_PokemonFainted);
- taskData[TD_STATE]++;
- return;
- }
- taskData[TD_PARTY_MEMBER]++;
+ MonFaintFromPoisonOnField(taskData[TD_PARTY_MEMBER]);
+ ShowFieldMessage(fieldPoisonText_PokemonFainted);
+ taskData[TD_STATE]++;
+ return;
}
- taskData[TD_STATE] = 2;
- break;
- case 1: //Wait for message box to disappear
- if (IsFieldMessageBoxHidden())
- taskData[TD_STATE]--; //Check next party member
- break;
- case 2: //Done checking Pokemon
- if (AllMonsFainted())
- gScriptResult = 1;
- else
- gScriptResult = 0;
- EnableBothScriptContexts();
- DestroyTask(taskId);
- break;
+ taskData[TD_PARTY_MEMBER]++;
+ }
+ taskData[TD_STATE] = 2;
+ break;
+ case 1: //Wait for message box to disappear
+ if (IsFieldMessageBoxHidden())
+ taskData[TD_STATE]--; //Check next party member
+ break;
+ case 2: //Done checking Pokemon
+ if (AllMonsFainted())
+ gScriptResult = 1;
+ else
+ gScriptResult = 0;
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
}
}
diff --git a/src/field_region_map.c b/src/field_region_map.c
index ec630ad00..66e3d968c 100644
--- a/src/field_region_map.c
+++ b/src/field_region_map.c
@@ -5,6 +5,7 @@
#include "palette.h"
#include "sprite.h"
#include "text.h"
+#include "strings2.h"
extern void sub_80FA8EC(u32, u8);
extern void sub_80FAB10(void);
@@ -29,8 +30,6 @@ struct UnkStruct
extern struct UnkStruct unk_2000000;
-extern u8 gOtherText_Hoenn[];
-
void CB2_FieldInitRegionMap(void);
void CB2_FieldRegionMap(void);
void VBlankCB_FieldRegionMap(void);
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 59280b743..9e06ede81 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -143,64 +143,64 @@ void Task_HandleTruckSequence(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
- {
- /*
- Each case has a timer which is handled with data[1], incrementing
- until it reaches the if function's condition, which sets the next task up.
- */
- case 0:
- data[1]++;
- if (data[1] == SECONDS(1.5))
- {
- SetCameraPanningCallback(0);
- data[1] = 0; // reset the timer.
- data[2] = CreateTask(Task_Truck1, 0xA);
- data[0] = 1; // run the next case.
- PlaySE(SE_TRACK_MOVE);
- }
- break;
- case 1:
- data[1]++;
- if (data[1] == SECONDS(2.5))
- {
- pal_fill_black();
- data[1] = 0;
- data[0] = 2;
- }
- break;
- case 2:
- data[1]++;
- if (!gPaletteFade.active && data[1] > SECONDS(5))
- {
- data[1] = 0;
- DestroyTask(data[2]);
- data[3] = CreateTask(Task_Truck2, 0xA);
- data[0] = 3;
- PlaySE(SE_TRACK_STOP);
- }
- break;
- case 3:
- if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?)
- {
- InstallCameraPanAheadCallback();
- data[1] = 0;
- data[0] = 4;
- }
- break;
- case 4:
- data[1]++;
- if (data[1] == 90)
- {
- PlaySE(SE_TRACK_HAIK);
- data[1] = 0;
- data[0] = 5;
- }
- break;
- case 5:
- data[1]++;
- if (data[1] == 120)
- {
+ switch (data[0])
+ {
+ /*
+ Each case has a timer which is handled with data[1], incrementing
+ until it reaches the if function's condition, which sets the next task up.
+ */
+ case 0:
+ data[1]++;
+ if (data[1] == SECONDS(1.5))
+ {
+ SetCameraPanningCallback(0);
+ data[1] = 0; // reset the timer.
+ data[2] = CreateTask(Task_Truck1, 0xA);
+ data[0] = 1; // run the next case.
+ PlaySE(SE_TRACK_MOVE);
+ }
+ break;
+ case 1:
+ data[1]++;
+ if (data[1] == SECONDS(2.5))
+ {
+ pal_fill_black();
+ data[1] = 0;
+ data[0] = 2;
+ }
+ break;
+ case 2:
+ data[1]++;
+ if (!gPaletteFade.active && data[1] > SECONDS(5))
+ {
+ data[1] = 0;
+ DestroyTask(data[2]);
+ data[3] = CreateTask(Task_Truck2, 0xA);
+ data[0] = 3;
+ PlaySE(SE_TRACK_STOP);
+ }
+ break;
+ case 3:
+ if (!gTasks[data[3]].isActive) // is Truck2 no longer active (is Truck3 active?)
+ {
+ InstallCameraPanAheadCallback();
+ data[1] = 0;
+ data[0] = 4;
+ }
+ break;
+ case 4:
+ data[1]++;
+ if (data[1] == 90)
+ {
+ PlaySE(SE_TRACK_HAIK);
+ data[1] = 0;
+ data[0] = 5;
+ }
+ break;
+ case 5:
+ data[1]++;
+ if (data[1] == 120)
+ {
MapGridSetMetatileIdAt(11, 8, 520);
MapGridSetMetatileIdAt(11, 9, 528);
MapGridSetMetatileIdAt(11, 10, 536);
@@ -208,9 +208,9 @@ void Task_HandleTruckSequence(u8 taskId)
PlaySE(SE_TRACK_DOOR);
DestroyTask(taskId);
ScriptContext2_Disable();
- }
- break;
- }
+ }
+ break;
+ }
}
void ExecuteTruckSequence(void)
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index 77c8752d1..8fde74852 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -160,37 +160,37 @@ void sub_80A27A8(s16 x, s16 y)
switch(metatileId)
{
- case 0x208:
- case 0x15:
- case 0xD:
- MapGridSetMetatileIdAt(x, y, 0x1);
- break;
- case 0x1C6:
- MapGridSetMetatileIdAt(x, y, 0x1CE);
- break;
- case 0x1C7:
- MapGridSetMetatileIdAt(x, y, 0x1CF);
- break;
- case 0x281:
- MapGridSetMetatileIdAt(x, y, 0x279);
- break;
- case 0x282:
- MapGridSetMetatileIdAt(x, y, 0x27A);
- break;
- case 0x283:
- MapGridSetMetatileIdAt(x, y, 0x27B);
- break;
- case 0x206:
- case 0x207:
- MapGridSetMetatileIdAt(x, y, 0x271);
- break;
- case 0x212:
- case 0x20A:
- MapGridSetMetatileIdAt(x, y, 0x218);
- break;
- case 0x25:
- MapGridSetMetatileIdAt(x, y, 0xE);
- break;
+ case 0x208:
+ case 0x15:
+ case 0xD:
+ MapGridSetMetatileIdAt(x, y, 0x1);
+ break;
+ case 0x1C6:
+ MapGridSetMetatileIdAt(x, y, 0x1CE);
+ break;
+ case 0x1C7:
+ MapGridSetMetatileIdAt(x, y, 0x1CF);
+ break;
+ case 0x281:
+ MapGridSetMetatileIdAt(x, y, 0x279);
+ break;
+ case 0x282:
+ MapGridSetMetatileIdAt(x, y, 0x27A);
+ break;
+ case 0x283:
+ MapGridSetMetatileIdAt(x, y, 0x27B);
+ break;
+ case 0x206:
+ case 0x207:
+ MapGridSetMetatileIdAt(x, y, 0x271);
+ break;
+ case 0x212:
+ case 0x20A:
+ MapGridSetMetatileIdAt(x, y, 0x218);
+ break;
+ case 0x25:
+ MapGridSetMetatileIdAt(x, y, 0xE);
+ break;
}
}
@@ -223,18 +223,18 @@ void sub_80A28F4(s16 x, s16 y)
{
switch((u8)sub_80A28A0(currentXsigned, y + 1))
{
- case 1:
- MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x208);
- break;
- case 2:
- MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x281);
- break;
- case 3:
- MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x282);
- break;
- case 4:
- MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x283);
- break;
+ case 1:
+ MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x208);
+ break;
+ case 2:
+ MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x281);
+ break;
+ case 3:
+ MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x282);
+ break;
+ case 4:
+ MapGridSetMetatileIdAt(currentXsigned, y + 1, 0x283);
+ break;
}
}
if(MapGridGetMetatileIdAt((s16)currentX, (s16)lowerY) == 1)
diff --git a/src/intro.c b/src/intro.c
index 98c978119..ba2197ae7 100644
--- a/src/intro.c
+++ b/src/intro.c
@@ -2,6 +2,7 @@
#include "gba/m4a_internal.h"
#include "intro.h"
#include "asm.h"
+#include "data2.h"
#include "decompress.h"
#include "libgncmultiboot.h"
#include "link.h"
@@ -21,12 +22,6 @@
extern void *species_and_otid_get_pal(/*TODO: arg types*/);
extern void sub_8143680(int, u8);
-struct MonCoords
-{
- u8 x, y;
-};
-
-
extern struct SpriteTemplate gUnknown_02024E8C;
extern u16 gUnknown_02039318;
extern u16 gUnknown_0203931A;
@@ -36,13 +31,6 @@ extern u32 gIntroFrameCounter;
extern struct GcmbStruct gMultibootProgramStruct;
extern u16 gSaveFileStatus;
extern u8 gReservedSpritePaletteCount;
-extern struct SpriteSheet gMonFrontPicTable[];
-extern struct MonCoords gMonFrontPicCoords[];
-extern struct SpriteSheet gMonBackPicTable[];
-extern struct MonCoords gMonBackPicCoords[];
-extern struct SpriteSheet gTrainerBackPicTable[];
-extern struct MonCoords gTrainerBackPicCoords[];
-extern struct SpritePalette gTrainerBackPicPaletteTable[];
extern const u8 gInterfaceGfx_PokeBall[];
extern const u16 gInterfacePal_PokeBall[];
extern const struct SpriteSheet gIntro2BrendanSpriteSheet;
@@ -56,7 +44,6 @@ extern const u16 gIntroCopyright_Pal[];
extern const u16 gIntroCopyright_Tilemap[];
extern const u16 gUnknown_08393E64[];
extern void *const gUnknown_0840B5A0[];
-extern const s16 gSineTable[];
//--------------------------------------------------
// Graphics Data
@@ -1797,9 +1784,9 @@ static u16 sub_813CE88(u16 species, s16 x, s16 y, u16 d, u8 front)
u8 spriteId;
if (front)
- LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1);
+ LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 1);
else
- LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].x, gMonBackPicCoords[species].y, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0);
+ LoadSpecialPokePic(&gMonBackPicTable[species], gMonBackPicCoords[species].coords, gMonBackPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[d], species, 0, 0);
pal = species_and_otid_get_pal(species, 0, 0xFFFF);
LoadCompressedPalette(pal, 0x100 + d * 0x10, 0x20);
sub_8143648(d, d);
@@ -1813,7 +1800,7 @@ static u8 sub_813CFA8(u16 a, u16 b, u16 c, u16 d)
{
u8 spriteId;
- DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].x, gTrainerBackPicCoords[a].y, (void *)0x2000000, gUnknown_0840B5A0[d], a);
+ DecompressPicFromTable_2(&gTrainerBackPicTable[a], gTrainerBackPicCoords[a].coords, gTrainerBackPicCoords[a].y_offset, (void *)0x2000000, gUnknown_0840B5A0[d], a);
LoadCompressedPalette(gTrainerBackPicPaletteTable[a].data, 0x100 + d * 0x10, 0x20);
sub_8143680(d, d);
gUnknown_02024E8C.anims = gUnknown_0840B064;
@@ -2084,29 +2071,29 @@ static void sub_813D788(struct Sprite *sprite)
{
switch (sprite->data0)
{
- case 0:
- StartSpriteAnimIfDifferent(sprite, 0);
- sprite->pos1.x--;
- break;
- case 1:
- StartSpriteAnimIfDifferent(sprite, 0);
- if (gIntroFrameCounter & 7)
- return;
+ case 0:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ sprite->pos1.x--;
+ break;
+ case 1:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ if (gIntroFrameCounter & 7)
+ return;
+ sprite->pos1.x++;
+ break;
+ case 2:
+ StartSpriteAnimIfDifferent(sprite, 2);
+ if (sprite->pos1.x <= 120 || (gIntroFrameCounter & 7))
sprite->pos1.x++;
- break;
- case 2:
- StartSpriteAnimIfDifferent(sprite, 2);
- if (sprite->pos1.x <= 120 || (gIntroFrameCounter & 7))
- sprite->pos1.x++;
- break;
- case 3:
- StartSpriteAnimIfDifferent(sprite, 3);
- break;
- case 4:
- StartSpriteAnimIfDifferent(sprite, 0);
- if (sprite->pos1.x > -32)
- sprite->pos1.x -= 2;
- break;
+ break;
+ case 3:
+ StartSpriteAnimIfDifferent(sprite, 3);
+ break;
+ case 4:
+ StartSpriteAnimIfDifferent(sprite, 0);
+ if (sprite->pos1.x > -32)
+ sprite->pos1.x -= 2;
+ break;
}
if (gIntroFrameCounter & 7)
return;
@@ -2118,16 +2105,16 @@ static void sub_813D788(struct Sprite *sprite)
{
switch (Random() & 3)
{
- case 0:
- sprite->pos2.y = -1;
- break;
- case 1:
- sprite->pos2.y = 1;
- break;
- case 2:
- case 3:
- sprite->pos2.y = 0;
- break;
+ case 0:
+ sprite->pos2.y = -1;
+ break;
+ case 1:
+ sprite->pos2.y = 1;
+ break;
+ case 2:
+ case 3:
+ sprite->pos2.y = 0;
+ break;
}
}
}
@@ -2136,24 +2123,24 @@ static void sub_813D880(struct Sprite *sprite)
{
switch (sprite->data0)
{
- case 0:
- break;
- case 1:
- if (sprite->pos2.x + sprite->pos1.x < 304)
- sprite->pos2.x += 8;
- else
- sprite->data0 = 2;
- break;
- case 2:
- if (sprite->pos2.x + sprite->pos1.x > 120)
- sprite->pos2.x -= 1;
- else
- sprite->data0 = 3;
- break;
- case 3:
- if (sprite->pos2.x > 0)
- sprite->pos2.x -= 2;
- break;
+ case 0:
+ break;
+ case 1:
+ if (sprite->pos2.x + sprite->pos1.x < 304)
+ sprite->pos2.x += 8;
+ else
+ sprite->data0 = 2;
+ break;
+ case 2:
+ if (sprite->pos2.x + sprite->pos1.x > 120)
+ sprite->pos2.x -= 1;
+ else
+ sprite->data0 = 3;
+ break;
+ case 3:
+ if (sprite->pos2.x > 0)
+ sprite->pos2.x -= 2;
+ break;
}
sprite->pos2.y = Sin((u8)sprite->data1, 8) - gUnknown_0203935A;
sprite->data1 += 4;
diff --git a/src/item.c b/src/item.c
index 7257c3649..ad2b9aed3 100644
--- a/src/item.c
+++ b/src/item.c
@@ -1,10 +1,10 @@
#include "global.h"
#include "item.h"
#include "string_util.h"
+#include "strings.h"
extern struct Berry *GetBerryInfo(u8 berry);
-extern u8 gOtherText_Berry2[];
extern u8 gUnknown_02038560;
extern struct Item gItems[];
diff --git a/src/item_use.c b/src/item_use.c
index 4047ade5c..d1c1dbf2a 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -3,6 +3,7 @@
#include "battle.h"
#include "berry.h"
#include "coins.h"
+#include "data2.h"
#include "event_data.h"
#include "field_map_obj_helpers.h"
#include "field_player_avatar.h"
@@ -22,6 +23,7 @@
#include "songs.h"
#include "sound.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "vars.h"
@@ -29,8 +31,6 @@ extern void (* gUnknown_03005D00)(u8);
extern void (* gUnknown_0300485C)(void);
extern void (* gUnknown_03004AE4)(u8);
-extern u8 gMoveNames[][13];
-
extern u8 gUnknown_02038561;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_02024E6C;
@@ -74,23 +74,6 @@ extern u8 GetItemEffectType();
extern void sub_808B020(void);
extern void sub_810B96C(void);
-extern u8 gOtherText_DadsAdvice[];
-extern u8 gOtherText_CantGetOffBike[];
-extern u8 gOtherText_NoResponse[];
-extern u8 gOtherText_ItemfinderResponding[];
-extern u8 gOtherText_ItemfinderItemUnderfoot[];
-extern u8 gOtherText_Coins3[];
-extern u8 gOtherText_BootedHM[];
-extern u8 gOtherText_BootedTM[];
-extern u8 gOtherText_ContainsMove[];
-extern u8 gOtherText_UsedItem[];
-extern u8 gOtherText_RepelLingers[];
-extern u8 gOtherText_UsedFlute[];
-extern u8 gOtherText_UsedRepel[];
-extern u8 gOtherText_BoxIsFull[];
-extern u8 gOtherText_WontHaveAnyEffect[];
-extern u8 gOtherText_SnapConfusion[];
-
extern u16 gScriptItemId;
extern u16 gBattleTypeFlags;
@@ -180,13 +163,13 @@ void HandleDeniedItemUseMessage(u8 var1, u8 playerMenuStatus, const u8 *text)
switch (playerMenuStatus)
{
- case 0: // Item Menu
- MenuZeroFillWindowRect(0, 13, 13, 20);
- DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1);
- break;
- default: // Field
- DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0);
- break;
+ case 0: // Item Menu
+ MenuZeroFillWindowRect(0, 13, 13, 20);
+ DisplayItemMessageOnField(var1, gStringVar4, CleanUpItemMenuMessage, 1);
+ break;
+ default: // Field
+ DisplayItemMessageOnField(var1, gStringVar4, CleanUpOverworldMessage, 0);
+ break;
}
}
@@ -439,33 +422,33 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y)
switch(connection->direction)
{
- // same weird temp variable behavior seen in HiddenItemAtPos
- case 2:
- localOffset = connection->offset + 7;
- localX = x - localOffset;
- localLength = mapHeader->mapData->height - 7;
- localY = localLength + y; // additions are reversed for some reason
- break;
- case 1:
- localOffset = connection->offset + 7;
- localX = x - localOffset;
- localLength = gMapHeader.mapData->height + 7;
- localY = y - localLength;
- break;
- case 3:
- localLength = mapHeader->mapData->width - 7;
- localX = localLength + x; // additions are reversed for some reason
- localOffset = connection->offset + 7;
- localY = y - localOffset;
- break;
- case 4:
- localLength = gMapHeader.mapData->width + 7;
- localX = x - localLength;
- localOffset = connection->offset + 7;
- localY = y - localOffset;
- break;
- default:
- return FALSE;
+ // same weird temp variable behavior seen in HiddenItemAtPos
+ case 2:
+ localOffset = connection->offset + 7;
+ localX = x - localOffset;
+ localLength = mapHeader->mapData->height - 7;
+ localY = localLength + y; // additions are reversed for some reason
+ break;
+ case 1:
+ localOffset = connection->offset + 7;
+ localX = x - localOffset;
+ localLength = gMapHeader.mapData->height + 7;
+ localY = y - localLength;
+ break;
+ case 3:
+ localLength = mapHeader->mapData->width - 7;
+ localX = localLength + x; // additions are reversed for some reason
+ localOffset = connection->offset + 7;
+ localY = y - localOffset;
+ break;
+ case 4:
+ localLength = gMapHeader.mapData->width + 7;
+ localX = x - localLength;
+ localOffset = connection->offset + 7;
+ localY = y - localOffset;
+ break;
+ default:
+ return FALSE;
}
return HiddenItemAtPos(mapHeader->events, localX, localY);
}
@@ -1188,42 +1171,42 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
{
switch(GetItemEffectType(gScriptItemId) - 1)
{
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- gTasks[taskId].data[15] = 1;
- ItemUseOutOfBattle_Medicine(taskId);
- break;
- case 9:
- gTasks[taskId].data[15] = 1;
- ItemUseOutOfBattle_SacredAsh(taskId);
- break;
- case 0:
- gTasks[taskId].data[15] = 1;
- ItemUseOutOfBattle_RareCandy(taskId);
- break;
- case 18:
- case 19:
- gTasks[taskId].data[15] = 1;
- ItemUseOutOfBattle_PPUp(taskId);
- break;
- case 20:
- gTasks[taskId].data[15] = 1;
- ItemUseOutOfBattle_PPRecovery(taskId);
- break;
- default:
- gTasks[taskId].data[15] = 4;
- ItemUseOutOfBattle_CannotUse(taskId);
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ gTasks[taskId].data[15] = 1;
+ ItemUseOutOfBattle_Medicine(taskId);
+ break;
+ case 9:
+ gTasks[taskId].data[15] = 1;
+ ItemUseOutOfBattle_SacredAsh(taskId);
+ break;
+ case 0:
+ gTasks[taskId].data[15] = 1;
+ ItemUseOutOfBattle_RareCandy(taskId);
+ break;
+ case 18:
+ case 19:
+ gTasks[taskId].data[15] = 1;
+ ItemUseOutOfBattle_PPUp(taskId);
+ break;
+ case 20:
+ gTasks[taskId].data[15] = 1;
+ ItemUseOutOfBattle_PPRecovery(taskId);
+ break;
+ default:
+ gTasks[taskId].data[15] = 4;
+ ItemUseOutOfBattle_CannotUse(taskId);
}
}
@@ -1231,25 +1214,25 @@ void ItemUseInBattle_EnigmaBerry(u8 taskId)
{
switch(GetItemEffectType(gScriptItemId))
{
- case 0:
- ItemUseInBattle_StatIncrease(taskId);
- break;
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 11:
- ItemUseInBattle_Medicine(taskId);
- break;
- case 21:
- ItemUseInBattle_PPRecovery(taskId);
- break;
- default:
- ItemUseOutOfBattle_CannotUse(taskId);
+ case 0:
+ ItemUseInBattle_StatIncrease(taskId);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 11:
+ ItemUseInBattle_Medicine(taskId);
+ break;
+ case 21:
+ ItemUseInBattle_PPRecovery(taskId);
+ break;
+ default:
+ ItemUseOutOfBattle_CannotUse(taskId);
}
}
diff --git a/src/link.c b/src/link.c
index be5edf633..17e78e0a5 100644
--- a/src/link.c
+++ b/src/link.c
@@ -10,6 +10,7 @@
#include "songs.h"
#include "sound.h"
#include "sprite.h"
+#include "strings2.h"
#include "task.h"
#include "text.h"
@@ -39,8 +40,6 @@ extern u16 gScriptItemId;
extern u16 word_3004858;
-extern u8 gMultiText_LinkError[];
-
static void InitLinkTestBG(u8, u8, u8, u8);
void InitLinkTestBG_Unused(u8, u8, u8, u8);
void LinkTestScreen();
diff --git a/src/mail.c b/src/mail.c
index 807864332..4ec107011 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -8,6 +8,7 @@
#include "rom4.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings2.h"
#include "task.h"
#include "text.h"
@@ -70,8 +71,6 @@ extern u16 gUnknown_083E562C[][2];
extern struct MailLayout gUnknown_083E5730[];
extern struct MailLayout gUnknown_083E57A4[];
-extern u8 gOtherText_From[];
-
static u8 sub_80F8A28(void);
static void sub_80F8D50(void);
static void sub_80F8DA0(void);
diff --git a/src/main_menu.c b/src/main_menu.c
index 50fefc471..b2d08698b 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "main_menu.h"
#include "asm.h"
+#include "data2.h"
#include "decompress.h"
#include "event_data.h"
#include "menu.h"
@@ -15,17 +16,13 @@
#include "sound.h"
#include "species.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "text.h"
#include "title_screen.h"
#define BirchSpeechUpdateWindowText() ((u8)MenuUpdateWindowText_OverrideLineLength(24))
-struct MonCoords
-{
- u8 x, y;
-};
-
extern struct PaletteFadeControl gPaletteFade;
extern u16 gSaveFileStatus;
@@ -41,24 +38,8 @@ extern const u8 gBirchSpeech_WhatsYourName[];
extern u8 gBirchSpeech_SoItsPlayer[];
extern u8 gBirchSpeech_AhOkayYouArePlayer[];
extern u8 gBirchSpeech_AreYouReady[];
-extern u8 gSaveFileDeletedMessage[];
-extern u8 gSaveFileCorruptMessage[];
-extern u8 gBoardNotInstalledMessage[];
-extern u8 gBatteryDryMessage[];
-extern u8 gMainMenuString_Continue[];
-extern u8 gMainMenuString_NewGame[];
-extern u8 gMainMenuString_MysteryEvents[];
-extern u8 gMainMenuString_Option[];
-extern u8 gMainMenuString_Player[];
-extern u8 gMainMenuString_Time[];
-extern u8 gMainMenuString_Pokedex[];
-extern u8 gMainMenuString_Badges[];
-
-extern const struct MonCoords gMonFrontPicCoords[];
-extern const struct SpriteSheet gMonFrontPicTable[];
-extern const struct SpritePalette gMonPaletteTable[];
+
extern struct SpriteTemplate gUnknown_02024E8C;
-extern void * const gUnknown_081FAF4C[];
extern u16 gUnknown_081E795C[];
extern const struct MenuAction gUnknown_081E79B0[];
extern const struct MenuAction gMalePresetNames[];
@@ -68,7 +49,6 @@ extern const u8 gUnknown_081E764C[];
extern const u8 gBirchIntroShadowGfx[];
extern const u8 gUnknown_081E7834[];
extern const u8 gUnknown_081E796C[];
-extern const u8 gSystemText_NewPara[];
extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[];
@@ -115,7 +95,7 @@ static void Task_MainMenuProcessKeyInput(u8 taskId);
static void Task_MainMenuPressedA(u8 taskId);
static void Task_MainMenuPressedB(u8 taskId);
static void HighlightCurrentMenuItem(u8 layout, u8 menuItem);
-static void PrintMainMenuItem(u8 *text, u8 left, u8 top);
+static void PrintMainMenuItem(const u8 *text, u8 left, u8 top);
static void PrintSaveFileInfo(void);
static void PrintPlayerName(void);
static void PrintPlayTime(void);
@@ -657,7 +637,7 @@ void HighlightCurrentMenuItem(u8 layout, u8 menuItem)
}
}
-void PrintMainMenuItem(u8 *text, u8 left, u8 top)
+void PrintMainMenuItem(const u8 *text, u8 left, u8 top)
{
u8 i;
u8 buffer[32];
@@ -1412,8 +1392,8 @@ u8 CreateAzurillSprite(u8 x, u8 y)
{
DecompressPicFromTable_2(
&gMonFrontPicTable[SPECIES_AZURILL],
- gMonFrontPicCoords[SPECIES_AZURILL].x,
- gMonFrontPicCoords[SPECIES_AZURILL].y,
+ gMonFrontPicCoords[SPECIES_AZURILL].coords,
+ gMonFrontPicCoords[SPECIES_AZURILL].y_offset,
gUnknown_081FAF4C[0],
gUnknown_081FAF4C[1],
SPECIES_AZURILL);
@@ -1646,9 +1626,9 @@ static void SetPresetPlayerName(u8 index)
u8 *name;
if (gSaveBlock2.playerGender == MALE)
- name = gMalePresetNames[index].text;
+ name = (u8 *) gMalePresetNames[index].text;
else
- name = gFemalePresetNames[index].text;
+ name = (u8 *) gFemalePresetNames[index].text;
for (i = 0; i < 7; i++)
gSaveBlock2.playerName[i] = name[i];
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c
index d2ca754bb..018e36567 100644
--- a/src/matsuda_debug_menu.c
+++ b/src/matsuda_debug_menu.c
@@ -2,6 +2,7 @@
#include "matsuda_debug_menu.h"
#include "asm.h"
#include "contest.h"
+#include "data2.h"
#include "link.h"
#include "main.h"
#include "menu.h"
@@ -55,7 +56,6 @@ extern struct SpriteTemplate gSpriteTemplate_83C92CC;
extern void (*gUnknown_083C92E4[][2])(struct Sprite *, s8);
extern u32 gUnknown_083C9400[2];
-extern u8 gMoveNames[][13];
extern u8 gMatsudaDebugMenu_UnknownByteArray[];
extern u8* gMatsudaDebugMenuTextList1[];
@@ -528,41 +528,41 @@ void sub_80AA754(struct Sprite *sprite)
{
switch (gMain.newAndRepeatedKeys)
{
- case 0x10:
- case 0x20:
- sprite->data0 ^= 1;
- break;
- case 0x40:
- if (sprite->data1 == 0)
- sprite->data1 = 8;
- else
- sprite->data1--;
- break;
- case 0x80:
- if (sprite->data1 == 8)
- sprite->data1 = 0;
- else
- sprite->data1++;
- break;
- case 0x1:
- gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1);
- sub_80AA614(sprite->data2, sprite->data3);
- break;
- case 0x2:
- gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1);
- sub_80AA614(sprite->data2, sprite->data3);
- break;
- case 0x100:
- gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10);
- sub_80AA614(sprite->data2, sprite->data3);
- break;
- case 0x200:
- gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10);
- sub_80AA614(sprite->data2, sprite->data3);
- break;
- case 0x8:
- sub_80AAD08(sprite, 1);
- break;
+ case DPAD_RIGHT:
+ case DPAD_LEFT:
+ sprite->data0 ^= 1;
+ break;
+ case DPAD_UP:
+ if (sprite->data1 == 0)
+ sprite->data1 = 8;
+ else
+ sprite->data1--;
+ break;
+ case DPAD_DOWN:
+ if (sprite->data1 == 8)
+ sprite->data1 = 0;
+ else
+ sprite->data1++;
+ break;
+ case A_BUTTON:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 1);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case B_BUTTON:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -1);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case R_BUTTON:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, 10);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case L_BUTTON:
+ gUnknown_083C92E4[sprite->data1][sprite->data0](sprite, -10);
+ sub_80AA614(sprite->data2, sprite->data3);
+ break;
+ case START_BUTTON:
+ sub_80AAD08(sprite, 1);
+ break;
}
sprite->pos1.x = gUnknown_083C9296[sprite->data0 + sprite->data1 * 2];
sprite->pos1.y = gUnknown_083C92A8[sprite->data1];
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
index 11dadf380..d6fb33917 100644
--- a/src/mauville_old_man.c
+++ b/src/mauville_old_man.c
@@ -4,6 +4,7 @@
#include "rng.h"
#include "script.h"
#include "string_util.h"
+#include "strings.h"
extern u16 gScriptResult;
extern u16 gSpecialVar_0x8004;
@@ -14,8 +15,6 @@ extern void sub_80F83D0(void);
extern void sub_80F7F80(u8);
extern u16 sub_80EB8EC(void);
extern void sub_80F7DC0(void);
-extern u8 gOtherText_Is[];
-extern u8 gOtherText_DontYouAgree[];
extern u32 gUnknown_083E5388[];
extern u32 gUnknown_083E53A8[];
@@ -65,21 +64,21 @@ void SetMauvilleOldMan(void)
switch(var)
{
- case 0:
- sub_80F7A34();
- break;
- case 1:
- sub_80F7A6C();
- break;
- case 2:
- sub_80F7A98();
- break;
- case 3:
- sub_80F7A7C();
- break;
- case 4:
- sub_80F7A88();
- break;
+ case 0:
+ sub_80F7A34();
+ break;
+ case 1:
+ sub_80F7A6C();
+ break;
+ case 2:
+ sub_80F7A98();
+ break;
+ case 3:
+ sub_80F7A7C();
+ break;
+ case 4:
+ sub_80F7A88();
+ break;
}
sub_80F83D0();
}
diff --git a/src/menu.c b/src/menu.c
index 3759d22c9..61eaebb6f 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -6,6 +6,7 @@
#include "script.h"
#include "songs.h"
#include "sound.h"
+#include "strings.h"
#include "text.h"
#include "text_window.h"
@@ -22,9 +23,6 @@ struct Menu
u8 columnXCoords[8];
};
-extern u8 OtherText_Yes[];
-extern u8 OtherText_No[];
-
static void MultistepInitMenuWindowInternal(const struct WindowConfig *, u16);
static void InitMenuWindowInternal(const struct WindowConfig *, u16);
static bool8 sub_80723D4(void);
@@ -175,7 +173,7 @@ void MenuDrawTextWindow(u8 left, u8 top, u8 right, u8 bottom)
DrawTextWindow(gMenuWindowPtr, left, top, right, bottom);
}
-void sub_8071F40(u8 *str)
+void sub_8071F40(const u8 *str)
{
MenuDrawTextWindow(2, 14, 28, 19);
MenuPrint(str, 3, 15);
@@ -603,7 +601,7 @@ u8 MenuPrint_PixelCoords(const u8 *text, u8 left, u16 top, u8 a4)
return sub_8004D04(gMenuWindowPtr, text, gMenuTextTileOffset, left, top, a4);
}
-u8 sub_8072A18(u8 *text, u8 left, u16 top, u8 width, u32 a5)
+u8 sub_8072A18(const u8 *text, u8 left, u16 top, u8 width, u32 a5)
{
return sub_8004FD0(gMenuWindowPtr, 0, text, gMenuTextTileOffset, left, top, width, a5);
}
@@ -639,7 +637,7 @@ void sub_8072B80(u8 *a1, u8 a2, u8 a3, u8 *a4)
sub_8003460(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3);
}
-void sub_8072BD8(u8 *a1, u8 a2, u8 a3, u16 a4)
+void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4)
{
sub_8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4);
}
@@ -659,7 +657,7 @@ u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4)
return AlignString(gMenuWindowPtr, a1, a2, a3, a4);
}
-u8 sub_8072CA4(u8 *str)
+u8 sub_8072CA4(const u8 *str)
{
return GetStringWidth(gMenuWindowPtr, str);
}
diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c
index fd0ad773b..18c65b7e6 100644
--- a/src/mori_debug_menu.c
+++ b/src/mori_debug_menu.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "mori_debug_menu.h"
#include "asm.h"
+#include "data2.h"
#include "link.h"
#include "main.h"
#include "menu.h"
@@ -20,8 +21,6 @@ extern u8 gUnknown_0839B257[];
extern const struct MenuAction gMoriDebugMenuActions[];
-extern u8 gSpeciesNames[][11];
-
void unref_sub_8083CF0(void)
{
int i;
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 97deb348c..77c959b07 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -10,19 +10,13 @@
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings2.h"
#include "task.h"
#include "text.h"
extern u8 unk_2000000[];
extern u8 gUnknown_02039338;
-extern u8 gSystemText_LinkStandby[];
-extern u8 gSystemText_LoadEventPressA[];
-extern u8 gSystemText_LoadingEvent[];
-extern u8 gSystemText_DontCutLink[];
-extern u8 gSystemText_EventLoadSuccess[];
-extern u8 gSystemText_LoadingError[];
-
static void VBlankCB(void);
static bool8 CheckLanguageMatch(void);
static bool8 GetEventLoadMessage(u8 *dest, u32 status);
@@ -91,240 +85,240 @@ static void CB2_MysteryEventMenu(void)
switch (gMain.state)
{
- case 0:
- MenuDrawTextWindow(0, 14, 29, 19);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
- gMain.state++;
+ case 0:
+ MenuDrawTextWindow(0, 14, 29, 19);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
+ gMain.state++;
+ break;
+ case 1:
+ if (gPaletteFade.active)
break;
- case 1:
- if (gPaletteFade.active)
- break;
- sub_8072044(gSystemText_LinkStandby);
+ sub_8072044(gSystemText_LinkStandby);
+ gMain.state++;
+ break;
+ case 2:
+ if (MenuUpdateWindowText())
+ {
gMain.state++;
- break;
- case 2:
- if (MenuUpdateWindowText())
- {
- gMain.state++;
- gLinkType = 21761;
- OpenLink();
- }
- break;
- case 3:
- if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4)
- {
- PlaySE(SE_PIN);
- sub_8072044(gSystemText_LoadEventPressA);
- gMain.state++;
- }
- if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- CloseLink();
- gMain.state = 15;
- }
- break;
- case 4:
- if (MenuUpdateWindowText())
- gMain.state++;
- break;
+ gLinkType = 21761;
+ OpenLink();
+ }
+ break;
+ case 3:
+ if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4)
+ {
+ PlaySE(SE_PIN);
+ sub_8072044(gSystemText_LoadEventPressA);
+ gMain.state++;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ CloseLink();
+ gMain.state = 15;
+ }
+ break;
+ case 4:
+ if (MenuUpdateWindowText())
+ gMain.state++;
+ break;
#ifdef NONMATCHING
- case 5:
- if (GetLinkPlayerCount_2() != 2)
+ case 5:
+ if (GetLinkPlayerCount_2() != 2)
+ {
+ GetEventLoadMessage(gStringVar4, 1);
+ sub_8072044(gStringVar4);
+ gMain.state = 13;
+ break;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8007F4C();
+ MenuDrawTextWindow(6, 5, 23, 8);
+ MenuPrint(gSystemText_LoadingEvent, 7, 6);
+ gMain.state++;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ CloseLink();
+ gMain.state = 15;
+ }
+ break;
+ case 6:
+ if (IsLinkConnectionEstablished())
+ {
+ if (!gReceivedRemoteLinkPlayers)
+ break;
+
+ if (GetLinkPlayerDataExchangeStatusTimed() == 3)
{
+ sub_800832C();
+ MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
sub_8072044(gStringVar4);
gMain.state = 13;
break;
}
- if (gMain.newKeys & A_BUTTON)
+ else if (CheckLanguageMatch())
{
- PlaySE(SE_SELECT);
- sub_8007F4C();
- MenuDrawTextWindow(6, 5, 23, 8);
- MenuPrint(gSystemText_LoadingEvent, 7, 6);
+ sub_8072044(gSystemText_DontCutLink);
gMain.state++;
+ break;
}
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- CloseLink();
- gMain.state = 15;
- }
- break;
- case 6:
- if (IsLinkConnectionEstablished())
- {
- if (!gReceivedRemoteLinkPlayers)
- break;
-
- if (GetLinkPlayerDataExchangeStatusTimed() == 3)
- {
- sub_800832C();
- MenuZeroFillWindowRect(6, 5, 23, 8);
- GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
- gMain.state = 13;
- break;
- }
- else if (CheckLanguageMatch())
- {
- sub_8072044(gSystemText_DontCutLink);
- gMain.state++;
- break;
- }
- else
- {
- CloseLink();
- MenuZeroFillWindowRect(6, 5, 23, 8);
- GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
- gMain.state = 13;
- break;
- }
- }
- if (gMain.newKeys & B_BUTTON)
+ else
{
- PlaySE(SE_SELECT);
CloseLink();
- gMain.state = 15;
+ MenuZeroFillWindowRect(6, 5, 23, 8);
+ GetEventLoadMessage(gStringVar4, 1);
+ sub_8072044(gStringVar4);
+ gMain.state = 13;
break;
}
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ CloseLink();
+ gMain.state = 15;
break;
+ }
+ break;
#else
- case 5:
- if (GetLinkPlayerCount_2() != 2)
- {
- goto label;
- }
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sub_8007F4C();
- MenuDrawTextWindow(6, 5, 23, 8);
- MenuPrint(gSystemText_LoadingEvent, 7, 6);
- gMain.state++;
- }
- else if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- CloseLink();
- gMain.state = 15;
- }
- break;
- case 6:
- if (IsLinkConnectionEstablished())
- {
- register u8 *ptr asm("r0");
- register u32 offset1 asm("r2");
- register u32 offset2 asm("r1");
-
- if (!gReceivedRemoteLinkPlayers)
- break;
+ case 5:
+ if (GetLinkPlayerCount_2() != 2)
+ {
+ goto label;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8007F4C();
+ MenuDrawTextWindow(6, 5, 23, 8);
+ MenuPrint(gSystemText_LoadingEvent, 7, 6);
+ gMain.state++;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ CloseLink();
+ gMain.state = 15;
+ }
+ break;
+ case 6:
+ if (IsLinkConnectionEstablished())
+ {
+ register u8 *ptr asm("r0");
+ register u32 offset1 asm("r2");
+ register u32 offset2 asm("r1");
- if (GetLinkPlayerDataExchangeStatusTimed() == 3)
- {
- sub_800832C();
- MenuZeroFillWindowRect(6, 5, 23, 8);
- GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
- ptr = (u8 *)&gMain;
- offset1 = offsetof(struct Main, state);
- asm("" ::: "r1");
- ptr += offset1;
- *ptr = 13;
- }
- else if (CheckLanguageMatch())
- {
- register u8 *ptr2 asm("r1");
- register int offset3 asm("r0");
- register int dummy asm("r2");
- sub_8072044(gSystemText_DontCutLink);
- ptr2 = (u8 *)&gMain;
- offset3 = offsetof(struct Main, state);
- if (dummy)
- dummy++;
- ptr2 += offset3;
- (*ptr2)++;
- break;
- }
- else
- {
- CloseLink();
- MenuZeroFillWindowRect(6, 5, 23, 8);
- label:
- GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
- ptr = (u8 *)&gMain;
- offset2 = offsetof(struct Main, state);
- ptr += offset2;
- *ptr = 13;
- }
+ if (!gReceivedRemoteLinkPlayers)
break;
+
+ if (GetLinkPlayerDataExchangeStatusTimed() == 3)
+ {
+ sub_800832C();
+ MenuZeroFillWindowRect(6, 5, 23, 8);
+ GetEventLoadMessage(gStringVar4, 1);
+ sub_8072044(gStringVar4);
+ ptr = (u8 *)&gMain;
+ offset1 = offsetof(struct Main, state);
+ asm("" ::: "r1");
+ ptr += offset1;
+ *ptr = 13;
}
- if (gMain.newKeys & B_BUTTON)
+ else if (CheckLanguageMatch())
{
- PlaySE(SE_SELECT);
- CloseLink();
- gMain.state = 15;
+ register u8 *ptr2 asm("r1");
+ register int offset3 asm("r0");
+ register int dummy asm("r2");
+ sub_8072044(gSystemText_DontCutLink);
+ ptr2 = (u8 *)&gMain;
+ offset3 = offsetof(struct Main, state);
+ if (dummy)
+ dummy++;
+ ptr2 += offset3;
+ (*ptr2)++;
break;
}
- break;
-#endif
- case 7:
- if (MenuUpdateWindowText())
- gMain.state++;
- break;
- case 8:
- if (GetBlockReceivedStatus())
+ else
{
- ResetBlockReceivedFlags();
- gMain.state++;
+ CloseLink();
+ MenuZeroFillWindowRect(6, 5, 23, 8);
+ label:
+ GetEventLoadMessage(gStringVar4, 1);
+ sub_8072044(gStringVar4);
+ ptr = (u8 *)&gMain;
+ offset2 = offsetof(struct Main, state);
+ ptr += offset2;
+ *ptr = 13;
}
break;
- case 9:
- gMain.state++;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ CloseLink();
+ gMain.state = 15;
break;
- case 10:
- sub_800832C();
+ }
+ break;
+#endif
+ case 7:
+ if (MenuUpdateWindowText())
gMain.state++;
- break;
- case 11:
- if (gReceivedRemoteLinkPlayers)
- break;
- unkVal = sub_812613C(unk_2000000);
- CpuFill32(0, unk_2000000, 0x7D4);
- if (!GetEventLoadMessage(gStringVar4, unkVal))
- TrySavingData(NORMAL_SAVE);
+ break;
+ case 8:
+ if (GetBlockReceivedStatus())
+ {
+ ResetBlockReceivedFlags();
gMain.state++;
+ }
+ break;
+ case 9:
+ gMain.state++;
+ break;
+ case 10:
+ sub_800832C();
+ gMain.state++;
+ break;
+ case 11:
+ if (gReceivedRemoteLinkPlayers)
break;
- case 12:
- sub_8072044(gStringVar4);
+ unkVal = sub_812613C(unk_2000000);
+ CpuFill32(0, unk_2000000, 0x7D4);
+ if (!GetEventLoadMessage(gStringVar4, unkVal))
+ TrySavingData(NORMAL_SAVE);
+ gMain.state++;
+ break;
+ case 12:
+ sub_8072044(gStringVar4);
+ gMain.state++;
+ break;
+ case 13:
+ MenuZeroFillWindowRect(6, 5, 23, 8);
+ if (MenuUpdateWindowText())
+ {
gMain.state++;
- break;
- case 13:
- MenuZeroFillWindowRect(6, 5, 23, 8);
- if (MenuUpdateWindowText())
- {
- gMain.state++;
- gUnknown_02039338 = 0;
- }
- break;
- case 14:
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- gMain.state++;
- }
- break;
- case 15:
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gUnknown_02039338 = 0;
+ }
+ break;
+ case 14:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
gMain.state++;
- break;
- case 16:
- if (!gPaletteFade.active)
- DoSoftReset();
- break;
+ }
+ break;
+ case 15:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, 0);
+ gMain.state++;
+ break;
+ case 16:
+ if (!gPaletteFade.active)
+ DoSoftReset();
+ break;
}
if (gLinkStatus & 0x40)
diff --git a/src/naming_screen.c b/src/naming_screen.c
index b14c690e2..53ee5ff19 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "naming_screen.h"
#include "asm.h"
+#include "data2.h"
#include "main.h"
#include "menu.h"
#include "palette.h"
@@ -8,6 +9,7 @@
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings2.h"
#include "task.h"
#include "text.h"
#include "trig.h"
@@ -48,7 +50,6 @@ extern const struct SpriteTemplate gSpriteTemplate_83CE670;
extern const struct SpriteTemplate gSpriteTemplate_83CE688;
extern const struct SpriteSheet gUnknown_083CE6A0[];
extern const struct SpritePalette gUnknown_083CE708[];
-extern const u8 gOtherText_SentToPC[];
extern const u8 gNamingScreenMenu_Gfx[];
extern u16 gMenuMessageBoxContentTileOffset;
extern const u16 gNamingScreenPalettes[];
@@ -56,10 +57,6 @@ extern const u16 gUnknown_083CE748[];
extern const u16 gUnknown_083CEBF8[];
extern const u16 gUnknown_083CF0A8[];
extern const u16 gUnknown_08E86258[];
-extern const u8 gSpeciesNames[][11];
-extern const u8 OtherText_YourName[];
-extern const u8 OtherText_BoxName[];
-extern const u8 OtherText_PokeName[];
static void C2_NamingScreen(void);
static void sub_80B5AA0(void);
diff --git a/src/option_menu.c b/src/option_menu.c
index 613012972..878df16ba 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -4,6 +4,7 @@
#include "menu.h"
#include "palette.h"
#include "sprite.h"
+#include "strings2.h"
#include "task.h"
extern void SetPokemonCryStereo(u32 val);
@@ -33,28 +34,6 @@ enum {
extern u8 gUnknown_0839F63C[];
extern u8 gUnknown_0839F5FC[]; //palette
-extern u8 gSystemText_Normal[];
-extern u8 gSystemText_LR[];
-extern u8 gSystemText_LA[];
-extern u8 gSystemText_Terminator[];
-extern u8 gSystemText_Type[];
-extern u8 gSystemText_Mono[];
-extern u8 gSystemText_Stereo[];
-extern u8 gSystemText_Shift[];
-extern u8 gSystemText_Set[];
-extern u8 gSystemText_On[];
-extern u8 gSystemText_Off[];
-extern u8 gSystemText_Slow[];
-extern u8 gSystemText_Mid[];
-extern u8 gSystemText_Fast[];
-extern u8 gSystemText_OptionMenu[];
-extern u8 gSystemText_TextSpeed[];
-extern u8 gSystemText_BattleScene[];
-extern u8 gSystemText_BattleStyle[];
-extern u8 gSystemText_Sound[];
-extern u8 gSystemText_ButtonMode[];
-extern u8 gSystemText_Frame[];
-extern u8 gSystemText_Cancel[];
static void Task_OptionMenuFadeIn(u8 taskId);
static void Task_OptionMenuProcessInput(u8 taskId);
@@ -93,135 +72,135 @@ void CB2_InitOptionMenu(void)
{
switch (gMain.state)
{
- default:
- case 0:
+ default:
+ case 0:
+ {
+ u8 *addr;
+ u32 size;
+
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ addr = (u8 *)VRAM;
+ size = 0x18000;
+ while (1)
{
- u8 *addr;
- u32 size;
-
- SetVBlankCallback(NULL);
- REG_DISPCNT = 0;
- REG_BG2CNT = 0;
- REG_BG1CNT = 0;
- REG_BG0CNT = 0;
- REG_BG2HOFS = 0;
- REG_BG2VOFS = 0;
- REG_BG1HOFS = 0;
- REG_BG1VOFS = 0;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- addr = (u8 *)VRAM;
- size = 0x18000;
- while (1)
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
{
- DmaFill16(3, 0, addr, 0x1000);
- addr += 0x1000;
- size -= 0x1000;
- if (size <= 0x1000)
- {
- DmaFill16(3, 0, addr, size);
- break;
- }
+ DmaFill16(3, 0, addr, size);
+ break;
}
- DmaClear32(3, OAM, OAM_SIZE);
- DmaClear16(3, PLTT, PLTT_SIZE);
- gMain.state++;
- break;
- }
- case 1:
- ResetPaletteFade();
- remove_some_task();
- ResetTasks();
- ResetSpriteData();
- gMain.state++;
- break;
- case 2:
- SetUpWindowConfig(&gWindowConfig_81E71B4);
- gMain.state++;
- break;
- case 3:
- MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4);
- gMain.state++;
- break;
- case 4:
- if (!MultistepInitMenuWindowContinue())
- return;
- gMain.state++;
- break;
- case 5:
- LoadPalette(gUnknown_0839F5FC, 0x80, 0x40);
- CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40);
- gMain.state++;
- break;
- case 6:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
- gMain.state++;
- break;
- case 7:
- {
- u16 savedIme;
-
- REG_WIN0H = 0;
- REG_WIN0V = 0;
- REG_WIN1H = 0;
- REG_WIN1V = 0;
- REG_WININ = 0x1111;
- REG_WINOUT = 0x31;
- REG_BLDCNT = 0xE1;
- REG_BLDALPHA = 0;
- REG_BLDY = 7;
- savedIme = REG_IME;
- REG_IME = 0;
- REG_IE |= INTR_FLAG_VBLANK;
- REG_IME = savedIme;
- REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- SetVBlankCallback(VBlankCB);
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON |
- DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
- gMain.state++;
- break;
- }
- case 8:
- {
- u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0);
-
- gTasks[taskId].data[TD_MENUSELECTION] = 0;
- gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed;
- gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff;
- gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle;
- gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound;
- gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode;
- gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType;
-
- MenuDrawTextWindow(2, 0, 27, 3);
- MenuDrawTextWindow(2, 4, 27, 19);
-
- MenuPrint(gSystemText_OptionMenu, 4, 1);
- MenuPrint(gSystemText_TextSpeed, 4, 5);
- MenuPrint(gSystemText_BattleScene, 4, 7);
- MenuPrint(gSystemText_BattleStyle, 4, 9);
- MenuPrint(gSystemText_Sound, 4, 11);
- MenuPrint(gSystemText_ButtonMode, 4, 13);
- MenuPrint(gSystemText_Frame, 4, 15);
- MenuPrint(gSystemText_Cancel, 4, 17);
-
- TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
- BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
- BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
- Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
- ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
- FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
-
- REG_WIN0H = WIN_RANGE(17, 223);
- REG_WIN0V = WIN_RANGE(1, 31);
-
- HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
- gMain.state++;
- break;
}
- case 9:
- SetMainCallback2(MainCB);
+ DmaClear32(3, OAM, OAM_SIZE);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ gMain.state++;
+ break;
+ }
+ case 1:
+ ResetPaletteFade();
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 2:
+ SetUpWindowConfig(&gWindowConfig_81E71B4);
+ gMain.state++;
+ break;
+ case 3:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E71B4);
+ gMain.state++;
+ break;
+ case 4:
+ if (!MultistepInitMenuWindowContinue())
return;
+ gMain.state++;
+ break;
+ case 5:
+ LoadPalette(gUnknown_0839F5FC, 0x80, 0x40);
+ CpuCopy16(gUnknown_0839F63C, (void *)0x0600BEE0, 0x40);
+ gMain.state++;
+ break;
+ case 6:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gMain.state++;
+ break;
+ case 7:
+ {
+ u16 savedIme;
+
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0x1111;
+ REG_WINOUT = 0x31;
+ REG_BLDCNT = 0xE1;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 7;
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = savedIme;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ SetVBlankCallback(VBlankCB);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_OBJ_ON |
+ DISPCNT_WIN0_ON | DISPCNT_WIN1_ON;
+ gMain.state++;
+ break;
+ }
+ case 8:
+ {
+ u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0);
+
+ gTasks[taskId].data[TD_MENUSELECTION] = 0;
+ gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2.optionsTextSpeed;
+ gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2.optionsBattleSceneOff;
+ gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2.optionsBattleStyle;
+ gTasks[taskId].data[TD_SOUND] = gSaveBlock2.optionsSound;
+ gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2.optionsButtonMode;
+ gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2.optionsWindowFrameType;
+
+ MenuDrawTextWindow(2, 0, 27, 3);
+ MenuDrawTextWindow(2, 4, 27, 19);
+
+ MenuPrint(gSystemText_OptionMenu, 4, 1);
+ MenuPrint(gSystemText_TextSpeed, 4, 5);
+ MenuPrint(gSystemText_BattleScene, 4, 7);
+ MenuPrint(gSystemText_BattleStyle, 4, 9);
+ MenuPrint(gSystemText_Sound, 4, 11);
+ MenuPrint(gSystemText_ButtonMode, 4, 13);
+ MenuPrint(gSystemText_Frame, 4, 15);
+ MenuPrint(gSystemText_Cancel, 4, 17);
+
+ TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
+ BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
+ BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
+ Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
+ ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
+ FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
+
+ REG_WIN0H = WIN_RANGE(17, 223);
+ REG_WIN0V = WIN_RANGE(1, 31);
+
+ HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
+ gMain.state++;
+ break;
+ }
+ case 9:
+ SetMainCallback2(MainCB);
+ return;
}
}
@@ -264,30 +243,30 @@ static void Task_OptionMenuProcessInput(u8 taskId)
{
switch (gTasks[taskId].data[TD_MENUSELECTION])
{
- case MENUITEM_TEXTSPEED:
- gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]);
- TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
- break;
- case MENUITEM_BATTLESCENE:
- gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]);
- BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
- break;
- case MENUITEM_BATTLESTYLE:
- gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]);
- BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
- break;
- case MENUITEM_SOUND:
- gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]);
- Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
- break;
- case MENUITEM_BUTTONMODE:
- gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]);
- ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
- break;
- case MENUITEM_FRAMETYPE:
- gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]);
- FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
- break;
+ case MENUITEM_TEXTSPEED:
+ gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]);
+ TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
+ break;
+ case MENUITEM_BATTLESCENE:
+ gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]);
+ BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
+ break;
+ case MENUITEM_BATTLESTYLE:
+ gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]);
+ BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
+ break;
+ case MENUITEM_SOUND:
+ gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]);
+ Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
+ break;
+ case MENUITEM_BUTTONMODE:
+ gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]);
+ ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
+ break;
+ case MENUITEM_FRAMETYPE:
+ gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]);
+ FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
+ break;
}
}
}
@@ -323,7 +302,7 @@ static void HighlightOptionMenuItem(u8 index)
REG_WIN1V = WIN_RANGE_(index * 16 + 40, index * 16 + 56);
}
-static void DrawOptionMenuChoice(u8 *text, u8 x, u8 y, u8 style)
+static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style)
{
u8 dst[16];
u16 i;
diff --git a/src/party_menu.c b/src/party_menu.c
index 8eb181f46..ee6bcf2a9 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -1,10 +1,12 @@
#include "global.h"
#include "asm.h"
+#include "data2.h"
#include "menu.h"
#include "pokemon.h"
#include "songs.h"
#include "sound.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "sprite.h"
#include "palette.h"
@@ -86,51 +88,6 @@ extern const u16 gUnknown_08376504[];
extern void (*const gUnknown_08376B54[])(u8);
extern const u8 *const gUnknown_08376D04[DATA_COUNT];
extern const struct UnknownStruct5 gUnknown_08376BB4[][6];
-extern const u8 gOtherText_TallPlusAndRightArrow[];
-extern const u8 gOtherText_WontHaveAnyEffect[];
-extern const u8 gOtherText_ElevatedTo[];
-extern const u8 gOtherText_MailMustBeRemoved[];
-extern const u8 gOtherText_AlreadyHolding[];
-extern const u8 gOtherText_TakenAndReplaced[];
-extern const u8 gOtherText_BagFullCannotRemoveItem[];
-extern const u8 gOtherText_WasGivenToHold[];
-extern const u8 gOtherText_PokeHoldingItemCantMail[];
-extern const u8 gOtherText_MailTransferredMailbox[];
-extern const u8 gOtherText_NotHoldingAnything[];
-extern const u8 gOtherText_ReceivedTheThingFrom[];
-extern const u8 gOtherText_SendRemovedMailPrompt[];
-extern const u8 gOtherText_MailTaken[];
-extern const u8 gOtherText_MailWasSent[];
-extern const u8 gOtherText_MailboxIsFull[];
-extern const u8 gOtherText_MailRemovedMessageLost[];
-extern const u8 gOtherText_WantsToLearn[];
-extern const u8 gOtherText_NotCompatible[];
-extern const u8 gOtherText_AlreadyKnows[];
-extern const u8 gOtherText_LearnedMove[];
-extern const u8 gOtherText_WhichMoveToForget2[];
-extern const u8 gOtherText_ForgetMove123_2[];
-extern const u8 gOtherText_StopTryingTo[];
-extern const u8 gOtherText_DidNotLearnMove2[];
-extern const u8 gOtherText_RegainedHealth[];
-extern const u8 gOtherText_HPRestoredBy[];
-extern const u8 gOtherText_CuredPoisoning[];
-extern const u8 gOtherText_WokeUp[];
-extern const u8 gOtherText_BurnHealed[];
-extern const u8 gOtherText_ThawedOut[];
-extern const u8 gOtherText_CuredParalysis[];
-extern const u8 gOtherText_SnapConfusion[];
-extern const u8 gOtherText_GotOverLove[];
-extern const u8 gOtherText_BecameHealthy[];
-extern const u8 gOtherText_Hp2[];
-extern const u8 gOtherText_Attack[];
-extern const u8 gOtherText_Defense[];
-extern const u8 gOtherText_Speed[];
-extern const u8 gOtherText_SpAtk2[];
-extern const u8 gOtherText_SpDef2[];
-extern const u8 gOtherText_WasRaised[];
-extern const u8 gOtherText_PPIncreased[];
-extern const u8 gOtherText_PPRestored[];
-extern const u8 gMoveNames[][13];
extern const u8 *const gItemEffectTable[];
extern bool8 IsDoubleBattle(void);
diff --git a/src/player_pc.c b/src/player_pc.c
index f0f0709b1..c012afb02 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -10,6 +10,7 @@
#include "script.h"
#include "sound.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#define NEW_GAME_PC_ITEMS(i, type) ((u16)(gNewGamePCItems + type)[i * 2])
@@ -21,7 +22,7 @@ enum
QUANTITY,
};
-extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16);
+extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16);
extern void DoPlayerPCDecoration(u8);
extern void BuyMenuFreeMemory(void);
extern void DestroyVerticalScrollIndicator(u8);
@@ -40,13 +41,8 @@ extern void sub_80F98DC(int);
extern void sub_80A4164(u8 *, u16, enum StringConvertMode, u8);
extern void CreateVerticalScrollIndicators(u32, u32, u32); // unknown args
-extern u8 gOtherText_NoItems[];
-
extern u16 gNewGamePCItems[];
-extern u8 gOtherText_WhatWillYouDo[];
-extern u8 gOtherText_NoMailHere[];
-
extern u8 *gUnknown_02039314;
extern struct MenuAction gUnknown_08406298[];
@@ -57,7 +53,6 @@ extern u8 gUnknown_08406327[];
extern u8 gUnknown_08406330[];
extern u8 gUnknown_0840631E[];
extern u8 gUnknown_08406318[];
-extern u8 gOtherText_CancelNoTerminator[];
extern u8 gUnknown_030007B4;
extern u8 unk_201FE00[];
@@ -784,17 +779,17 @@ void sub_813ABE8(u8 taskId)
switch(GetPocketByItemId(gSaveBlock1.pcItems[i].itemId) - 1)
{
- case 0:
- case 1:
- case 3:
- sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg);
- break;
- case 4:
- sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg);
- break;
- case 2:
- sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg);
- break;
+ case 0:
+ case 1:
+ case 3:
+ sub_813AB64((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg);
+ break;
+ case 4:
+ sub_813AB90((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg);
+ break;
+ case 2:
+ sub_813ABAC((struct ItemSlot *)&gSaveBlock1.pcItems[i], j + 2, tempArg);
+ break;
}
}
else
@@ -809,15 +804,15 @@ beforeLabel:
switch(data[1])
{
- default:
- CreateVerticalScrollIndicators(0, 0xB8, 8);
- break;
+ default:
+ CreateVerticalScrollIndicators(0, 0xB8, 8);
+ break;
weirdCase:
- sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1);
- goto beforeLabel;
- case 0:
- DestroyVerticalScrollIndicator(0);
- break;
+ sub_8072A18(gOtherText_CancelNoTerminator, 0x80, (j + 2) * 8, 0x68, 1);
+ goto beforeLabel;
+ case 0:
+ DestroyVerticalScrollIndicator(0);
+ break;
}
if(data[1] + data[4] <= data[2])
diff --git a/src/pokedex.c b/src/pokedex.c
index 5ea1f9938..97bac3390 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -12,7 +12,9 @@
#include "songs.h"
#include "sound.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
+#include "trig.h"
// I'm #define-ing these just for now so I can keep using the old unkXXX member names
#define unk60E selectedPokemon
@@ -77,7 +79,6 @@ extern struct SpriteTemplate gSpriteTemplate_83A056C;
extern struct SpriteTemplate gSpriteTemplate_83A0584;
extern struct SpriteTemplate gSpriteTemplate_83A059C;
extern struct SpriteTemplate gSpriteTemplate_83A05B4;
-extern s16 gSineTable[];
extern struct PokedexListItem *gUnknown_0202FFBC;
extern IntrCallback gUnknown_03005CEC;
extern u8 gUnknown_08E96BD4[];
@@ -90,12 +91,6 @@ extern u8 gUnknown_08E96ACC[];
extern u8 gUnknown_08E96B58[];
extern struct PokedexEntry gPokedexEntries[];
-extern u8 gDexText_UnknownPoke[];
-extern u8 gDexText_UnknownHeight[];
-extern u8 gDexText_UnknownWeight[];
-extern u8 gDexText_CryOf[];
-extern u8 gDexText_SizeComparedTo[];
-extern u8 gDexText_RegisterComplete[];
extern void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
extern bool8 BeginNormalPaletteFade(u32, s8, u8, u8, u16);
@@ -108,7 +103,6 @@ extern u16 NationalToHoennOrder(u16);
extern u16 gPokedexOrder_Alphabetical[];
extern u16 gPokedexOrder_Weight[];
extern u16 gPokedexOrder_Height[];
-extern u8 gSpeciesNames[][11];
u16 NationalPokedexNumToSpecies(u16);
@@ -207,97 +201,97 @@ void CB2_InitPokedex(void)
{
switch (gMain.state)
{
- case 0:
- default:
- {
- u8 *addr;
- u32 size;
+ case 0:
+ default:
+ {
+ u8 *addr;
+ u32 size;
- SetVBlankCallback(NULL);
- sub_8091060(0);
- addr = (u8 *)VRAM;
- size = VRAM_SIZE;
- while (1)
+ SetVBlankCallback(NULL);
+ sub_8091060(0);
+ addr = (u8 *)VRAM;
+ size = VRAM_SIZE;
+ while (1)
+ {
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
{
- DmaFill16(3, 0, addr, 0x1000);
- addr += 0x1000;
- size -= 0x1000;
- if (size <= 0x1000)
- {
- DmaFill16(3, 0, addr, size);
- break;
- }
+ DmaFill16(3, 0, addr, size);
+ break;
}
- DmaClear32(3, OAM, OAM_SIZE);
- DmaClear16(3, PLTT, PLTT_SIZE);
- gMain.state = 1;
- break;
}
+ DmaClear32(3, OAM, OAM_SIZE);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ gMain.state = 1;
+ break;
+ }
+ case 1:
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ SetUpWindowConfig(&gWindowConfig_81E7048);
+ InitMenuWindow(&gWindowConfig_81E7048);
+ gMain.state++;
+ break;
+ case 2:
+ switch (Random() & 3)
+ {
+ case 0:
+ default:
+ gPokedexView = (struct PokedexView *)0x02018000;
+ break;
case 1:
- remove_some_task();
- ResetTasks();
- ResetSpriteData();
- ResetPaletteFade();
- FreeAllSpritePalettes();
- gReservedSpritePaletteCount = 8;
- SetUpWindowConfig(&gWindowConfig_81E7048);
- InitMenuWindow(&gWindowConfig_81E7048);
- gMain.state++;
+ gPokedexView = (struct PokedexView *)0x02018800;
break;
case 2:
- switch (Random() & 3)
- {
- case 0:
- default:
- gPokedexView = (struct PokedexView *)0x02018000;
- break;
- case 1:
- gPokedexView = (struct PokedexView *)0x02018800;
- break;
- case 2:
- gPokedexView = (struct PokedexView *)0x02019000;
- break;
- case 3:
- gPokedexView = (struct PokedexView *)0x02019800;
- break;
- }
- ClearPokedexView(gPokedexView);
- CreateTask(Task_PokedexShowMainScreen, 0);
- gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1;
- if (!IsNationalPokedexEnabled())
- gPokedexView->dexMode = DEX_MODE_HOENN;
- gPokedexView->dexOrder = gSaveBlock2.pokedex.order;
- gPokedexView->selectedPokemon = gUnknown_0202FFB8;
- gPokedexView->unk62C = gUnknown_0202FFBA;
- gPokedexView->selectedScreen = PAGE_SCREEN;
- gPokedexView->unk64E = 0;
- if (!IsNationalPokedexEnabled())
- {
- gPokedexView->unk61A = GetHoennPokedexCount(0);
- gPokedexView->unk61C = GetHoennPokedexCount(1);
- }
- else
- {
- gPokedexView->unk61A = GetNationalPokedexCount(0);
- gPokedexView->unk61C = GetNationalPokedexCount(1);
- }
- gPokedexView->unk62D = 8;
- gMain.state++;
+ gPokedexView = (struct PokedexView *)0x02019000;
break;
case 3:
+ gPokedexView = (struct PokedexView *)0x02019800;
+ break;
+ }
+ ClearPokedexView(gPokedexView);
+ CreateTask(Task_PokedexShowMainScreen, 0);
+ gPokedexView->dexMode = gSaveBlock2.pokedex.unknown1;
+ if (!IsNationalPokedexEnabled())
+ gPokedexView->dexMode = DEX_MODE_HOENN;
+ gPokedexView->dexOrder = gSaveBlock2.pokedex.order;
+ gPokedexView->selectedPokemon = gUnknown_0202FFB8;
+ gPokedexView->unk62C = gUnknown_0202FFBA;
+ gPokedexView->selectedScreen = PAGE_SCREEN;
+ gPokedexView->unk64E = 0;
+ if (!IsNationalPokedexEnabled())
{
- u16 savedIme;
-
- savedIme = REG_IME;
- REG_IME = 0;
- REG_IE |= 1;
- REG_IME = savedIme;
- REG_DISPSTAT |= 8;
- SetVBlankCallback(sub_808C0B8);
- SetMainCallback2(MainCB);
- SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
- m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80);
+ gPokedexView->unk61A = GetHoennPokedexCount(0);
+ gPokedexView->unk61C = GetHoennPokedexCount(1);
+ }
+ else
+ {
+ gPokedexView->unk61A = GetNationalPokedexCount(0);
+ gPokedexView->unk61C = GetNationalPokedexCount(1);
}
+ gPokedexView->unk62D = 8;
+ gMain.state++;
+ break;
+ case 3:
+ {
+ u16 savedIme;
+
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = savedIme;
+ REG_DISPSTAT |= 8;
+ SetVBlankCallback(sub_808C0B8);
+ SetMainCallback2(MainCB);
+ SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x80);
+ }
}
}
@@ -423,29 +417,29 @@ void Task_PokedexMainScreenMenu(u8 taskId)
{
switch (gPokedexView->menuCursorPos)
{
- case 0: //BACK TO LIST
- default:
- gMain.newKeys |= START_BUTTON; //Exit menu
- break;
- case 1: //LIST TOP
- gPokedexView->selectedPokemon = 0;
- gPokedexView->unk62C = 0x40;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
- gMain.newKeys |= START_BUTTON; //Exit menu
- break;
- case 2: //LIST BOTTOM
- gPokedexView->selectedPokemon = gPokedexView->unk60C - 1;
- gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
- gMain.newKeys |= START_BUTTON; //Exit menu
- break;
- case 3: //CLOSE POKEDEX
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gTasks[taskId].func = Task_ClosePokedex;
- PlaySE(SE_PC_OFF);
- break;
+ case 0: //BACK TO LIST
+ default:
+ gMain.newKeys |= START_BUTTON; //Exit menu
+ break;
+ case 1: //LIST TOP
+ gPokedexView->selectedPokemon = 0;
+ gPokedexView->unk62C = 0x40;
+ sub_808E82C();
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON; //Exit menu
+ break;
+ case 2: //LIST BOTTOM
+ gPokedexView->selectedPokemon = gPokedexView->unk60C - 1;
+ gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30;
+ sub_808E82C();
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON; //Exit menu
+ break;
+ case 3: //CLOSE POKEDEX
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_ClosePokedex;
+ PlaySE(SE_PC_OFF);
+ break;
}
}
@@ -614,34 +608,34 @@ void Task_PokedexResultsScreenMenu(u8 taskId)
{
switch (gPokedexView->menuCursorPos)
{
- case 0: //BACK TO LIST
- default:
- gMain.newKeys |= START_BUTTON;
- break;
- case 1: //LIST TOP
- gPokedexView->selectedPokemon = 0;
- gPokedexView->unk62C = 0x40;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
- gMain.newKeys |= START_BUTTON;
- break;
- case 2: //LIST BOTTOM
- gPokedexView->selectedPokemon = gPokedexView->unk60C - 1;
- gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30;
- sub_808E82C();
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
- gMain.newKeys |= START_BUTTON;
- break;
- case 3: //BACK TO POKEDEX
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen;
- PlaySE(SE_TRACK_DOOR);
- break;
- case 4: //CLOSE POKEDEX
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex;
- PlaySE(SE_PC_OFF);
- break;
+ case 0: //BACK TO LIST
+ default:
+ gMain.newKeys |= START_BUTTON;
+ break;
+ case 1: //LIST TOP
+ gPokedexView->selectedPokemon = 0;
+ gPokedexView->unk62C = 0x40;
+ sub_808E82C();
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON;
+ break;
+ case 2: //LIST BOTTOM
+ gPokedexView->selectedPokemon = gPokedexView->unk60C - 1;
+ gPokedexView->unk62C = gPokedexView->unk60C * 16 + 0x30;
+ sub_808E82C();
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gMain.newKeys |= START_BUTTON;
+ break;
+ case 3: //BACK TO POKEDEX
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_PokedexResultsScreenReturnToMainScreen;
+ PlaySE(SE_TRACK_DOOR);
+ break;
+ case 4: //CLOSE POKEDEX
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_PokedexResultsScreenExitPokedex;
+ PlaySE(SE_PC_OFF);
+ break;
}
}
@@ -726,83 +720,83 @@ bool8 sub_808D344(u8 a)
{
switch (gMain.state)
{
- case 0:
- default:
- if (gPaletteFade.active)
- return 0;
- //_0808D39E
- SetVBlankCallback(NULL);
- gPokedexView->unk64A = a;
- sub_8091060(0);
- REG_BG2VOFS = gPokedexView->unk62D;
- LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM));
- LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800));
- LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800));
- DmaClear16(3, VRAM + 0x6000, 0x500);
- if (a == 0)
- LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500));
- else
- LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500));
- ResetPaletteFade();
- if (a == 0)
- gPokedexView->unk64C_1 = 0;
- else
- gPokedexView->unk64C_1 = 1;
- sub_808D640();
- gMain.state = 1;
- break;
- case 1:
- ResetSpriteData();
- FreeAllSpritePalettes();
- gReservedSpritePaletteCount = 8;
- LoadCompressedObjectPic(&gUnknown_083A05CC);
- LoadSpritePalettes(gUnknown_083A05DC);
- sub_808E978(a);
- gMain.state++;
- break;
- case 2:
- SetUpWindowConfig(&gWindowConfig_81E7048);
- InitMenuWindow(&gWindowConfig_81E7048);
- LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80));
- gMain.state++;
- break;
- case 3:
- if (a == 0)
- SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
- sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
- gPokedexView->menuIsOpen = 0;
- gPokedexView->menuY = 0;
- gMain.state++;
- break;
- case 4:
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
- SetVBlankCallback(sub_808C0B8);
- gMain.state++;
- break;
- case 5:
- REG_WININ = 0x3F3F;
- REG_WINOUT = 0x1D3F;
- REG_WIN0H = 0;
- REG_WIN0V = 0;
- REG_WIN1H = 0;
- REG_WIN1V = 0;
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
- REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON;
- gMain.state++;
- break;
- case 6:
- if (!gPaletteFade.active)
- {
- gMain.state = 0;
- return 1;
- }
- else
- return 0;
+ case 0:
+ default:
+ if (gPaletteFade.active)
+ return 0;
+ //_0808D39E
+ SetVBlankCallback(NULL);
+ gPokedexView->unk64A = a;
+ sub_8091060(0);
+ REG_BG2VOFS = gPokedexView->unk62D;
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM));
+ LZ77UnCompVram(gUnknown_08E96738, (void *)(VRAM + 0x6800));
+ LZ77UnCompVram(gUnknown_08E9C6DC, (void *)(VRAM + 0x7800));
+ DmaClear16(3, VRAM + 0x6000, 0x500);
+ if (a == 0)
+ LZ77UnCompVram(gUnknown_08E96888, (void *)(VRAM + 0x6500));
+ else
+ LZ77UnCompVram(gUnknown_08E96994, (void *)(VRAM + 0x6500));
+ ResetPaletteFade();
+ if (a == 0)
+ gPokedexView->unk64C_1 = 0;
+ else
+ gPokedexView->unk64C_1 = 1;
+ sub_808D640();
+ gMain.state = 1;
+ break;
+ case 1:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LoadCompressedObjectPic(&gUnknown_083A05CC);
+ LoadSpritePalettes(gUnknown_083A05DC);
+ sub_808E978(a);
+ gMain.state++;
+ break;
+ case 2:
+ SetUpWindowConfig(&gWindowConfig_81E7048);
+ InitMenuWindow(&gWindowConfig_81E7048);
+ LZ77UnCompVram(gUnknown_0839FA7C, (void *)(VRAM + 0xFF80));
+ gMain.state++;
+ break;
+ case 3:
+ if (a == 0)
+ SortPokedex(gPokedexView->dexMode, gPokedexView->dexOrder);
+ sub_808E0CC(gPokedexView->selectedPokemon, 0xE);
+ gPokedexView->menuIsOpen = 0;
+ gPokedexView->menuY = 0;
+ gMain.state++;
+ break;
+ case 4:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetVBlankCallback(sub_808C0B8);
+ gMain.state++;
+ break;
+ case 5:
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x1D3F;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(12) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON | DISPCNT_OBJWIN_ON;
+ gMain.state++;
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ gMain.state = 0;
+ return 1;
+ }
+ else
+ return 0;
}
return 0;
}
@@ -826,136 +820,136 @@ void SortPokedex(u8 dexMode, u8 sortMode)
switch (dexMode)
{
- default:
- case DEX_MODE_HOENN:
+ default:
+ case DEX_MODE_HOENN:
+ vars[0] = 202;
+ vars[1] = 1;
+ break;
+ case DEX_MODE_NATIONAL:
+ if (IsNationalPokedexEnabled())
+ {
+ vars[0] = 386;
+ vars[1] = 0;
+ }
+ else
+ {
vars[0] = 202;
vars[1] = 1;
- break;
- case DEX_MODE_NATIONAL:
- if (IsNationalPokedexEnabled())
- {
- vars[0] = 386;
- vars[1] = 0;
- }
- else
- {
- vars[0] = 202;
- vars[1] = 1;
- }
- break;
+ }
+ break;
}
switch (sortMode)
{
- case 0:
+ case 0:
+ {
+ if (vars[1])
{
- if (vars[1])
+ for (i = 0; i < vars[0]; i++)
{
- for (i = 0; i < vars[0]; i++)
- {
- vars[2] = HoennToNationalOrder(i + 1);
- gPokedexView->unk0[i].dexNum = vars[2];
- gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0);
- gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1);
- if (gPokedexView->unk0[i].seen)
- gPokedexView->unk60C = i + 1;
- }
+ vars[2] = HoennToNationalOrder(i + 1);
+ gPokedexView->unk0[i].dexNum = vars[2];
+ gPokedexView->unk0[i].seen = sub_8090D90(vars[2], 0);
+ gPokedexView->unk0[i].owned = sub_8090D90(vars[2], 1);
+ if (gPokedexView->unk0[i].seen)
+ gPokedexView->unk60C = i + 1;
}
- else
- {
- bool32 r10;
- s16 r5;
+ }
+ else
+ {
+ bool32 r10;
+ s16 r5;
- r10 = r5 = i = 0;
- for (i = 0; i < vars[0]; i++)
+ r10 = r5 = i = 0;
+ for (i = 0; i < vars[0]; i++)
+ {
+ vars[2] = i + 1;
+ if (sub_8090D90(vars[2], 0))
+ r10 = 1;
+ if (r10)
{
- vars[2] = i + 1;
- if (sub_8090D90(vars[2], 0))
- r10 = 1;
- if (r10)
- {
- asm(""); //Needed to match for some reason
- gPokedexView->unk0[r5].dexNum = vars[2];
- gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0);
- gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1);
- if (gPokedexView->unk0[r5].seen)
- gPokedexView->unk60C = r5 + 1;
- r5++;
- }
+ asm(""); //Needed to match for some reason
+ gPokedexView->unk0[r5].dexNum = vars[2];
+ gPokedexView->unk0[r5].seen = sub_8090D90(vars[2], 0);
+ gPokedexView->unk0[r5].owned = sub_8090D90(vars[2], 1);
+ if (gPokedexView->unk0[r5].seen)
+ gPokedexView->unk60C = r5 + 1;
+ r5++;
}
}
- break;
}
- case 1:
- for (i = 0; i < 411; i++)
- {
- vars[2] = gPokedexOrder_Alphabetical[i];
+ break;
+ }
+ case 1:
+ for (i = 0; i < 411; i++)
+ {
+ vars[2] = gPokedexOrder_Alphabetical[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0))
- {
- gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
- gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1);
- gPokedexView->unk60C++;
- }
- }
- break;
- case 2:
- for (i = 385; i >= 0; i--)
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 0))
{
- vars[2] = gPokedexOrder_Weight[i];
-
- if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
- {
- gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
- gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
- gPokedexView->unk60C++;
- }
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = sub_8090D90(vars[2], 1);
+ gPokedexView->unk60C++;
}
- break;
- case 3:
- for (i = 0; i < 386; i++)
- {
- vars[2] = gPokedexOrder_Weight[i];
+ }
+ break;
+ case 2:
+ for (i = 385; i >= 0; i--)
+ {
+ vars[2] = gPokedexOrder_Weight[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
- {
- gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
- gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
- gPokedexView->unk60C++;
- }
- }
- break;
- case 4:
- for (i = 385; i >=0; i--)
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
- vars[2] = gPokedexOrder_Height[i];
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
+ }
+ }
+ break;
+ case 3:
+ for (i = 0; i < 386; i++)
+ {
+ vars[2] = gPokedexOrder_Weight[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
- {
- gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
- gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
- gPokedexView->unk60C++;
- }
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
+ {
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
}
- break;
- case 5:
- for (i = 0; i < 386; i++)
+ }
+ break;
+ case 4:
+ for (i = 385; i >=0; i--)
+ {
+ vars[2] = gPokedexOrder_Height[i];
+
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
{
- vars[2] = gPokedexOrder_Height[i];
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
+ }
+ }
+ break;
+ case 5:
+ for (i = 0; i < 386; i++)
+ {
+ vars[2] = gPokedexOrder_Height[i];
- if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
- {
- gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
- gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
- gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
- gPokedexView->unk60C++;
- }
+ if (NationalToHoennOrder(vars[2]) <= vars[0] && sub_8090D90(vars[2], 1))
+ {
+ gPokedexView->unk0[gPokedexView->unk60C].dexNum = vars[2];
+ gPokedexView->unk0[gPokedexView->unk60C].seen = 1;
+ gPokedexView->unk0[gPokedexView->unk60C].owned = 1;
+ gPokedexView->unk60C++;
}
- break;
+ }
+ break;
}
for (i = gPokedexView->unk60C; i < 386; i++)
{
@@ -969,87 +963,87 @@ void sub_808DBE8(u8 a, u16 b, u16 c)
{
switch (a)
{
- case 0:
- default:
- {
- u16 i;
- s16 _b = b - 5;
+ case 0:
+ default:
+ {
+ u16 i;
+ s16 _b = b - 5;
- for (i = 0; i <= 10; i++)
- {
- if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
- sub_808E090(0x11, i * 2, c);
- else
- {
- sub_808E090(0x11, i * 2, c);
- if (gPokedexView->unk0[_b].seen)
- {
- sub_808DEB0(_b, 0x12, i * 2, c);
- sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c);
- sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2);
- }
- else
- {
- sub_808DEB0(_b, 0x12, i * 2, c);
- sub_808DF88(0, 0x11, i * 2, c);
- sub_808DFE4(0, 0x17, i * 2);
- }
- }
- _b++;
- }
- break;
- }
- case 1:
+ for (i = 0; i <= 10; i++)
{
- s16 _b = b - 5;
-
if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
- sub_808E090(0x11, gPokedexView->unk630 * 2, c);
+ sub_808E090(0x11, i * 2, c);
else
{
- sub_808E090(0x11, gPokedexView->unk630 * 2, c);
+ sub_808E090(0x11, i * 2, c);
if (gPokedexView->unk0[_b].seen)
{
- sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
- sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c);
- sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2);
+ sub_808DEB0(_b, 0x12, i * 2, c);
+ sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, i * 2, c);
+ sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, i * 2);
}
else
{
- sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
- sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c);
- sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2);
+ sub_808DEB0(_b, 0x12, i * 2, c);
+ sub_808DF88(0, 0x11, i * 2, c);
+ sub_808DFE4(0, 0x17, i * 2);
}
}
- break;
+ _b++;
}
- case 2:
+ break;
+ }
+ case 1:
+ {
+ s16 _b = b - 5;
+
+ if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+ sub_808E090(0x11, gPokedexView->unk630 * 2, c);
+ else
{
- s16 _b = b + 5;
- u16 r2 = gPokedexView->unk630 + 10;
+ sub_808E090(0x11, gPokedexView->unk630 * 2, c);
+ if (gPokedexView->unk0[_b].seen)
+ {
+ sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
+ sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, gPokedexView->unk630 * 2, c);
+ sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, gPokedexView->unk630 * 2);
+ }
+ else
+ {
+ sub_808DEB0(_b, 0x12, gPokedexView->unk630 * 2, c);
+ sub_808DF88(0, 0x11, gPokedexView->unk630 * 2, c);
+ sub_808DFE4(0, 0x17, gPokedexView->unk630 * 2);
+ }
+ }
+ break;
+ }
+ case 2:
+ {
+ s16 _b = b + 5;
+ u16 r2 = gPokedexView->unk630 + 10;
- if (r2 > 15)
- r2 -= 16;
- if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
- sub_808E090(0x11, r2 * 2, c);
+ if (r2 > 15)
+ r2 -= 16;
+ if ((u16)_b > 385 || gPokedexView->unk0[_b].dexNum == 0xFFFF)
+ sub_808E090(0x11, r2 * 2, c);
+ else
+ {
+ sub_808E090(0x11, r2 * 2, c);
+ if (gPokedexView->unk0[_b].seen)
+ {
+ sub_808DEB0(_b, 0x12, r2 * 2, c);
+ sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c);
+ sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2);
+ }
else
{
- sub_808E090(0x11, r2 * 2, c);
- if (gPokedexView->unk0[_b].seen)
- {
- sub_808DEB0(_b, 0x12, r2 * 2, c);
- sub_808DF88(gPokedexView->unk0[_b].owned, 0x11, r2 * 2, c);
- sub_808DFE4(gPokedexView->unk0[_b].dexNum, 0x17, r2 * 2);
- }
- else
- {
- sub_808DEB0(_b, 0x12, r2 * 2, c);
- sub_808DF88(0, 0x11, r2 * 2, c);
- sub_808DFE4(0, 0x17, r2 * 2);
- }
+ sub_808DEB0(_b, 0x12, r2 * 2, c);
+ sub_808DF88(0, 0x11, r2 * 2, c);
+ sub_808DFE4(0, 0x17, r2 * 2);
}
- break;
}
+ break;
+ }
}
}
@@ -1268,26 +1262,26 @@ bool8 sub_808E208(u8 a, u8 b, u8 c)
gPokedexView->unk62E--;
switch (a)
{
- case 1:
- for (i = 0; i < 4; i++)
- {
- if (gPokedexView->unk61E[i] != 0xFFFF)
- gSprites[gPokedexView->unk61E[i]].data5 += b;
- }
- foo = 16 * (c - gPokedexView->unk62E) / c;
- REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo;
- gPokedexView->unk62C -= gPokedexView->unk628;
- break;
- case 2:
- for (i = 0; i < 4; i++)
- {
- if (gPokedexView->unk61E[i] != 0xFFFF)
- gSprites[gPokedexView->unk61E[i]].data5 -= b;
- }
- foo = 16 * (c - gPokedexView->unk62E) / c;
- REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo;
- gPokedexView->unk62C += gPokedexView->unk628;
- break;
+ case 1:
+ for (i = 0; i < 4; i++)
+ {
+ if (gPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[gPokedexView->unk61E[i]].data5 += b;
+ }
+ foo = 16 * (c - gPokedexView->unk62E) / c;
+ REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 - foo;
+ gPokedexView->unk62C -= gPokedexView->unk628;
+ break;
+ case 2:
+ for (i = 0; i < 4; i++)
+ {
+ if (gPokedexView->unk61E[i] != 0xFFFF)
+ gSprites[gPokedexView->unk61E[i]].data5 -= b;
+ }
+ foo = 16 * (c - gPokedexView->unk62E) / c;
+ REG_BG2VOFS = gPokedexView->unk62D + gPokedexView->unk632 * 16 + foo;
+ gPokedexView->unk62C += gPokedexView->unk628;
+ break;
}
return 0;
}
@@ -1307,36 +1301,36 @@ void sub_808E398(u8 a, u16 b)
gPokedexView->unk632 = gPokedexView->unk630;
switch (a)
{
- case 1:
+ case 1:
+ {
+ unk = sub_808E888(b - 1);
+ if (unk != 0xFFFF)
{
- unk = sub_808E888(b - 1);
- if (unk != 0xFFFF)
- {
- spriteId = sub_808E8C8(unk, 0x60, 0x50);
- gSprites[spriteId].callback = sub_808EE28;
- gSprites[spriteId].data5 = 0xFFC0;
- }
- if (gPokedexView->unk630 > 0)
- gPokedexView->unk630--;
- else
- gPokedexView->unk630 = 0xF;
- break;
+ spriteId = sub_808E8C8(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = sub_808EE28;
+ gSprites[spriteId].data5 = 0xFFC0;
}
- case 2:
+ if (gPokedexView->unk630 > 0)
+ gPokedexView->unk630--;
+ else
+ gPokedexView->unk630 = 0xF;
+ break;
+ }
+ case 2:
+ {
+ unk = sub_808E888(b + 1);
+ if (unk != 0xFFFF)
{
- unk = sub_808E888(b + 1);
- if (unk != 0xFFFF)
- {
- spriteId = sub_808E8C8(unk, 0x60, 0x50);
- gSprites[spriteId].callback = sub_808EE28;
- gSprites[spriteId].data5 = 0x40;
- }
- if (gPokedexView->unk630 <= 0xE)
- gPokedexView->unk630++;
- else
- gPokedexView->unk630 = 0;
- break;
+ spriteId = sub_808E8C8(unk, 0x60, 0x50);
+ gSprites[spriteId].callback = sub_808EE28;
+ gSprites[spriteId].data5 = 0x40;
}
+ if (gPokedexView->unk630 <= 0xE)
+ gPokedexView->unk630++;
+ else
+ gPokedexView->unk630 = 0;
+ break;
+ }
}
}
#ifdef NONMATCHING
@@ -2206,126 +2200,126 @@ void Task_InitPageScreenMultistep(u8 taskId)
{
switch (gMain.state)
{
- case 0:
- default:
- if (!gPaletteFade.active)
- {
- u16 r2;
-
- gPokedexView->unk64A = 1;
- gPokedexView->unk64E = 0;
- gUnknown_03005CEC = gMain.vblankCallback;
- SetVBlankCallback(NULL);
- r2 = 0;
- if (gTasks[taskId].data[1] != 0)
- r2 += 0x1000;
- if (gTasks[taskId].data[2] != 0)
- r2 |= 0x200;
- sub_8091060(r2);
- gMain.state = 1;
- }
- break;
- case 1:
- LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
- LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
- sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC);
- gMain.state++;
- break;
- case 2:
- sub_80904FC(0xD);
- sub_8090584(gPokedexView->selectedScreen, 0xD);
- sub_808D640();
- gMain.state++;
- break;
- case 3:
- SetUpWindowConfig(&gWindowConfig_81E7064);
- InitMenuWindow(&gWindowConfig_81E7064);
- gMain.state++;
- break;
- case 4:
- if (gPokedexView->dexMode == DEX_MODE_HOENN)
- sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3);
- else
- sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3);
- //_0808F45A
- sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3);
- MenuPrint(gDexText_UnknownPoke, 11, 5);
- MenuPrint(gDexText_UnknownHeight, 16, 7);
- MenuPrint(gDexText_UnknownWeight, 16, 9);
- if (gUnknown_0202FFBC->owned)
- {
- sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5);
- sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7);
- sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9);
- MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13);
- sub_80917CC(14, 0x3FC);
- }
- //_0808F50C
- else
- {
- MenuPrint(gUnknown_083A05F8, 2, 13);
- LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E);
- }
- gMain.state++;
- break;
- case 5:
- if (gTasks[taskId].data[1] == 0)
- {
- //_0808F540
- gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
- gSprites[gTasks[taskId].data[4]].oam.priority = 0;
- }
- gMain.state++;
- break;
- case 6:
+ case 0:
+ default:
+ if (!gPaletteFade.active)
{
- u32 r3 = 0;
+ u16 r2;
- if (gTasks[taskId].data[2] != 0)
- r3 = 0x14;
+ gPokedexView->unk64A = 1;
+ gPokedexView->unk64E = 0;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ r2 = 0;
if (gTasks[taskId].data[1] != 0)
- {
- r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10));
- }
- BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0);
- SetVBlankCallback(gUnknown_03005CEC);
- gMain.state++;
- break;
+ r2 += 0x1000;
+ if (gTasks[taskId].data[2] != 0)
+ r2 |= 0x200;
+ sub_8091060(r2);
+ gMain.state = 1;
}
- case 7:
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
- REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
+ break;
+ case 1:
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
+ LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
+ sub_8091738(gUnknown_0202FFBC->dexNum, 2, 0x3FC);
+ gMain.state++;
+ break;
+ case 2:
+ sub_80904FC(0xD);
+ sub_8090584(gPokedexView->selectedScreen, 0xD);
+ sub_808D640();
+ gMain.state++;
+ break;
+ case 3:
+ SetUpWindowConfig(&gWindowConfig_81E7064);
+ InitMenuWindow(&gWindowConfig_81E7064);
+ gMain.state++;
+ break;
+ case 4:
+ if (gPokedexView->dexMode == DEX_MODE_HOENN)
+ sub_8091154(NationalToHoennOrder(gUnknown_0202FFBC->dexNum), 0xD, 3);
+ else
+ sub_8091154(gUnknown_0202FFBC->dexNum, 0xD, 3);
+ //_0808F45A
+ sub_80911C8(gUnknown_0202FFBC->dexNum, 0x10, 3);
+ MenuPrint(gDexText_UnknownPoke, 11, 5);
+ MenuPrint(gDexText_UnknownHeight, 16, 7);
+ MenuPrint(gDexText_UnknownWeight, 16, 9);
+ if (gUnknown_0202FFBC->owned)
+ {
+ sub_8091304(gPokedexEntries[gUnknown_0202FFBC->dexNum].categoryName, 11, 5);
+ sub_8091458(gPokedexEntries[gUnknown_0202FFBC->dexNum].height, 16, 7);
+ sub_8091564(gPokedexEntries[gUnknown_0202FFBC->dexNum].weight, 16, 9);
+ MenuPrint(gPokedexEntries[gUnknown_0202FFBC->dexNum].descriptionPage1, 2, 13);
+ sub_80917CC(14, 0x3FC);
+ }
+ //_0808F50C
+ else
+ {
+ MenuPrint(gUnknown_083A05F8, 2, 13);
+ LoadPalette(gPlttBufferUnfaded + 1, 0x31, 0x1E);
+ }
+ gMain.state++;
+ break;
+ case 5:
+ if (gTasks[taskId].data[1] == 0)
+ {
+ //_0808F540
+ gTasks[taskId].data[4] = (u16)sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
+ gSprites[gTasks[taskId].data[4]].oam.priority = 0;
+ }
+ gMain.state++;
+ break;
+ case 6:
+ {
+ u32 r3 = 0;
+
+ if (gTasks[taskId].data[2] != 0)
+ r3 = 0x14;
+ if (gTasks[taskId].data[1] != 0)
+ {
+ r3 |= (1 << (gSprites[gTasks[taskId].data[4]].oam.paletteNum + 0x10));
+ }
+ BeginNormalPaletteFade(~r3, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gMain.state++;
+ break;
+ }
+ case 7:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
+ gMain.state++;
+ break;
+ case 8:
+ if (!gPaletteFade.active)
+ {
gMain.state++;
- break;
- case 8:
- if (!gPaletteFade.active)
+ if (gTasks[taskId].data[3] == 0)
{
- gMain.state++;
- if (gTasks[taskId].data[3] == 0)
- {
- StopCryAndClearCrySongs();
- PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA);
- }
- else
- gMain.state++;
+ StopCryAndClearCrySongs();
+ PlayCry2(NationalPokedexNumToSpecies(gUnknown_0202FFBC->dexNum), 0, 0x7D, 0xA);
}
- break;
- case 9:
- if (!IsCryPlayingOrClearCrySongs())
+ else
gMain.state++;
- break;
- case 10:
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = 0;
- gTasks[taskId].data[2] = 1;
- gTasks[taskId].data[3] = 1;
- gTasks[taskId].func = Task_PageScreenProcessInput;
- gMain.state = 0;
- break;
+ }
+ break;
+ case 9:
+ if (!IsCryPlayingOrClearCrySongs())
+ gMain.state++;
+ break;
+ case 10:
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 1;
+ gTasks[taskId].data[3] = 1;
+ gTasks[taskId].func = Task_PageScreenProcessInput;
+ gMain.state = 0;
+ break;
}
}
@@ -2462,99 +2456,99 @@ void Task_InitCryScreenMultistep(u8 taskId)
{
switch (gMain.state)
{
- case 0:
- default:
- if (!gPaletteFade.active)
- {
- m4aMPlayStop(&gMPlay_BGM);
- gPokedexView->unk64A = 6;
- gUnknown_03005CEC = gMain.vblankCallback;
- SetVBlankCallback(NULL);
- sub_8091060(0x200);
- gPokedexView->selectedScreen = CRY_SCREEN;
- gMain.state = 1;
- }
- break;
- case 1:
- LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
- LZ77UnCompVram(gUnknown_0839F8A0, (void *)(VRAM + 0x7000));
- gMain.state++;
- break;
- case 2:
- sub_8090540(0xD);
- sub_8090644(2, 0xD);
- sub_808D640();
- DmaClear16(3, (void *)(VRAM + 0xF800), 0x500);
- gMain.state++;
- break;
- case 3:
- SetUpWindowConfig(&gWindowConfig_81E702C);
- InitMenuWindow(&gWindowConfig_81E702C);
- ResetPaletteFade();
- gMain.state++;
- break;
- case 4:
- MenuPrint(gDexText_CryOf, 10, 4);
- sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2);
- gMain.state++;
- break;
- case 5:
- gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
- gSprites[gTasks[taskId].data[4]].oam.priority = 0;
- gUnknown_03005E98 = 0;
- gMain.state++;
- break;
- case 6:
+ case 0:
+ default:
+ if (!gPaletteFade.active)
{
- struct CryRelatedStruct sp8;
-
- sp8.unk0 = 0x4020;
- sp8.unk2 = 0x1F;
- sp8.paletteNo = 8;
- sp8.yPos = 0x1E;
- sp8.xPos = 0xC;
- if (sub_8119E3C(&sp8, 0) != 0)
- {
- gMain.state++;
- gUnknown_03005E98 = 0;
- }
- break;
+ m4aMPlayStop(&gMPlay_BGM);
+ gPokedexView->unk64A = 6;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ sub_8091060(0x200);
+ gPokedexView->selectedScreen = CRY_SCREEN;
+ gMain.state = 1;
}
- case 7:
- {
- struct CryRelatedStruct sp10;
+ break;
+ case 1:
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
+ LZ77UnCompVram(gUnknown_0839F8A0, (void *)(VRAM + 0x7000));
+ gMain.state++;
+ break;
+ case 2:
+ sub_8090540(0xD);
+ sub_8090644(2, 0xD);
+ sub_808D640();
+ DmaClear16(3, (void *)(VRAM + 0xF800), 0x500);
+ gMain.state++;
+ break;
+ case 3:
+ SetUpWindowConfig(&gWindowConfig_81E702C);
+ InitMenuWindow(&gWindowConfig_81E702C);
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 4:
+ MenuPrint(gDexText_CryOf, 10, 4);
+ sub_8091260(gUnknown_0202FFBC->dexNum, 10, 6, 2);
+ gMain.state++;
+ break;
+ case 5:
+ gTasks[taskId].data[4] = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x30, 0x38, 0);
+ gSprites[gTasks[taskId].data[4]].oam.priority = 0;
+ gUnknown_03005E98 = 0;
+ gMain.state++;
+ break;
+ case 6:
+ {
+ struct CryRelatedStruct sp8;
- sp10.unk0 = 0x3000;
- sp10.unk2 = 0xE;
- sp10.paletteNo = 9;
- sp10.xPos = 0x12;
- sp10.yPos = 3;
- if (ShowPokedexCryScreen(&sp10, 1) != 0)
- {
- gMain.state++;
- }
- break;
- }
- case 8:
- BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
- SetVBlankCallback(gUnknown_03005CEC);
+ sp8.unk0 = 0x4020;
+ sp8.unk2 = 0x1F;
+ sp8.paletteNo = 8;
+ sp8.yPos = 0x1E;
+ sp8.xPos = 0xC;
+ if (sub_8119E3C(&sp8, 0) != 0)
+ {
gMain.state++;
- break;
- case 9:
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
- REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
+ gUnknown_03005E98 = 0;
+ }
+ break;
+ }
+ case 7:
+ {
+ struct CryRelatedStruct sp10;
+
+ sp10.unk0 = 0x3000;
+ sp10.unk2 = 0xE;
+ sp10.paletteNo = 9;
+ sp10.xPos = 0x12;
+ sp10.yPos = 3;
+ if (ShowPokedexCryScreen(&sp10, 1) != 0)
+ {
gMain.state++;
- break;
- case 10:
- gPokedexView->unk64F = 0;
- gMain.state = 0;
- gTasks[taskId].func = Task_CryScreenProcessInput;
- break;
+ }
+ break;
+ }
+ case 8:
+ BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gMain.state++;
+ break;
+ case 9:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG0CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG1CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(13) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
+ gMain.state++;
+ break;
+ case 10:
+ gPokedexView->unk64F = 0;
+ gMain.state = 0;
+ gTasks[taskId].func = Task_CryScreenProcessInput;
+ break;
}
}
@@ -2616,15 +2610,15 @@ void sub_808FFBC(u8 taskId)
DestroyCryMeterNeedleSprite();
switch (gPokedexView->unk64F)
{
- default:
- case 1:
- gTasks[taskId].func = Task_InitPageScreenMultistep;
- break;
- case 2:
- gTasks[taskId].func = Task_InitAreaScreenMultistep;
- break;
- case 3:
- gTasks[taskId].func = Task_InitSizeScreenMultistep;
+ default:
+ case 1:
+ gTasks[taskId].func = Task_InitPageScreenMultistep;
+ break;
+ case 2:
+ gTasks[taskId].func = Task_InitAreaScreenMultistep;
+ break;
+ case 3:
+ gTasks[taskId].func = Task_InitSizeScreenMultistep;
}
}
}
@@ -2646,87 +2640,87 @@ void Task_InitSizeScreenMultistep(u8 taskId)
switch (gMain.state)
{
- default:
- case 0:
- if (!gPaletteFade.active)
- {
- gPokedexView->unk64A = 7;
- gUnknown_03005CEC = gMain.vblankCallback;
- SetVBlankCallback(NULL);
- sub_8091060(0x200);
- gPokedexView->selectedScreen = SIZE_SCREEN;
- gMain.state = 1;
- }
- break;
- case 1:
- LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
- LZ77UnCompVram(gUnknown_0839F988, (void *)(VRAM + 0x7000));
- gMain.state++;
- break;
- case 2:
- sub_8090540(0xD);
- sub_8090644(3, 0xD);
- sub_808D640();
- gMain.state++;
- break;
- case 3:
+ default:
+ case 0:
+ if (!gPaletteFade.active)
{
- u8 string[40]; //I hope this is the correct size
+ gPokedexView->unk64A = 7;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ sub_8091060(0x200);
+ gPokedexView->selectedScreen = SIZE_SCREEN;
+ gMain.state = 1;
+ }
+ break;
+ case 1:
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)VRAM);
+ LZ77UnCompVram(gUnknown_0839F988, (void *)(VRAM + 0x7000));
+ gMain.state++;
+ break;
+ case 2:
+ sub_8090540(0xD);
+ sub_8090644(3, 0xD);
+ sub_808D640();
+ gMain.state++;
+ break;
+ case 3:
+ {
+ u8 string[40]; //I hope this is the correct size
- SetUpWindowConfig(&gWindowConfig_81E702C);
- InitMenuWindow(&gWindowConfig_81E702C);
- string[0] = EOS;
- StringAppend(string, gDexText_SizeComparedTo);
- StringAppend(string, gSaveBlock2.playerName);
- sub_8072BD8(string, 3, 15, 0xC0);
- gMain.state++;
- break;
+ SetUpWindowConfig(&gWindowConfig_81E702C);
+ InitMenuWindow(&gWindowConfig_81E702C);
+ string[0] = EOS;
+ StringAppend(string, gDexText_SizeComparedTo);
+ StringAppend(string, gSaveBlock2.playerName);
+ sub_8072BD8(string, 3, 15, 0xC0);
+ gMain.state++;
+ break;
+ }
+ case 4:
+ ResetPaletteFade();
+ gMain.state++;
+ break;
+ case 5:
+ spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0);
+ gSprites[spriteId].oam.affineMode = 1;
+ gSprites[spriteId].oam.matrixNum = 1;
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset;
+ SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale);
+ LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
+ gMain.state++;
+ break;
+ case 6:
+ spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1);
+ gSprites[spriteId].oam.affineMode = 1;
+ gSprites[spriteId].oam.matrixNum = 2;
+ gSprites[spriteId].oam.priority = 0;
+ gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset;
+ SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale);
+ LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
+ gMain.state++;
+ break;
+ case 7:
+ BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gMain.state++;
+ break;
+ case 8:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
+ gMain.state++;
+ break;
+ case 9:
+ if (!gPaletteFade.active)
+ {
+ gPokedexView->unk64F = 0;
+ gMain.state = 0;
+ gTasks[taskId].func = Task_SizeScreenProcessInput;
}
- case 4:
- ResetPaletteFade();
- gMain.state++;
- break;
- case 5:
- spriteId = sub_8091A4C(gSaveBlock2.playerGender, 0x98, 0x38, 0);
- gSprites[spriteId].oam.affineMode = 1;
- gSprites[spriteId].oam.matrixNum = 1;
- gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerOffset;
- SetOamMatrix(1, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].trainerScale);
- LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
- gMain.state++;
- break;
- case 6:
- spriteId = sub_80918EC(gUnknown_0202FFBC->dexNum, 0x58, 0x38, 1);
- gSprites[spriteId].oam.affineMode = 1;
- gSprites[spriteId].oam.matrixNum = 2;
- gSprites[spriteId].oam.priority = 0;
- gSprites[spriteId].pos2.y = gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonOffset;
- SetOamMatrix(2, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale, 0, 0, gPokedexEntries[gUnknown_0202FFBC->dexNum].pokemonScale);
- LoadPalette(gUnknown_083B4EC4, (gSprites[spriteId].oam.paletteNum + 16) * 16, 0x20);
- gMain.state++;
- break;
- case 7:
- BeginNormalPaletteFade(-0x15, 0, 0x10, 0, 0);
- SetVBlankCallback(gUnknown_03005CEC);
- gMain.state++;
- break;
- case 8:
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
- REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(14) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
- gMain.state++;
- break;
- case 9:
- if (!gPaletteFade.active)
- {
- gPokedexView->unk64F = 0;
- gMain.state = 0;
- gTasks[taskId].func = Task_SizeScreenProcessInput;
- }
- break;
+ break;
}
}
@@ -3094,81 +3088,81 @@ void sub_8090750(u8 taskId)
switch (gTasks[taskId].data[0])
{
- default:
- case 0:
- if (!gPaletteFade.active)
- {
- gUnknown_03005CEC = gMain.vblankCallback;
- SetVBlankCallback(NULL);
- sub_8091060(0x100);
- gTasks[taskId].data[0] = 1;
- }
- break;
- case 1:
+ default:
+ case 0:
+ if (!gPaletteFade.active)
{
- u16 i;
-
- LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000));
- LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
- for (i = 0; i < 0x280; i++)
- ((u16 *)(VRAM + 0x7800))[i] += 0x2000;
- sub_8091738(gTasks[taskId].data[1], 2, 0x3FC);
- ResetPaletteFade();
- LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E);
- gTasks[taskId].data[0]++;
- break;
+ gUnknown_03005CEC = gMain.vblankCallback;
+ SetVBlankCallback(NULL);
+ sub_8091060(0x100);
+ gTasks[taskId].data[0] = 1;
}
- case 2:
- SetUpWindowConfig(&gWindowConfig_81E7064);
- InitMenuWindow(&gWindowConfig_81E7064);
- DmaClear16(3, (void *)(VRAM + 0xC000), 0x200);
- gTasks[taskId].data[0]++;
- break;
- case 3:
- sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0);
- if (!IsNationalPokedexEnabled())
- sub_8091154(NationalToHoennOrder(dexNum), 13, 3);
- else
- sub_8091154(dexNum, 13, 3);
- sub_80911C8(dexNum, 16, 3);
- MenuPrint(gDexText_UnknownPoke, 11, 5);
- MenuPrint(gDexText_UnknownHeight, 16, 7);
- MenuPrint(gDexText_UnknownWeight, 16, 9);
- sub_8091304(&gPokedexEntries[dexNum], 11, 5);
- sub_8091458(gPokedexEntries[dexNum].height, 16, 7);
- sub_8091564(gPokedexEntries[dexNum].weight, 16, 9);
- MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13);
- sub_80917CC(14, 0x3FC);
- gTasks[taskId].data[0]++;
- break;
- case 4:
- {
- u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
+ break;
+ case 1:
+ {
+ u16 i;
- gSprites[spriteId].oam.priority = 0;
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
- SetVBlankCallback(gUnknown_03005CEC);
- gTasks[taskId].data[3] = spriteId;
- gTasks[taskId].data[0]++;
- break;
+ LZ77UnCompVram(gPokedexMenu_Gfx, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(gUnknown_08E96BD4, (void *)(VRAM + 0x7800));
+ for (i = 0; i < 0x280; i++)
+ ((u16 *)(VRAM + 0x7800))[i] += 0x2000;
+ sub_8091738(gTasks[taskId].data[1], 2, 0x3FC);
+ ResetPaletteFade();
+ LoadPalette(gPokedexMenu_Pal + 2, 0x21, 0x9E);
+ gTasks[taskId].data[0]++;
+ break;
+ }
+ case 2:
+ SetUpWindowConfig(&gWindowConfig_81E7064);
+ InitMenuWindow(&gWindowConfig_81E7064);
+ DmaClear16(3, (void *)(VRAM + 0xC000), 0x200);
+ gTasks[taskId].data[0]++;
+ break;
+ case 3:
+ sub_8072BD8(gDexText_RegisterComplete, 2, 0, 0xD0);
+ if (!IsNationalPokedexEnabled())
+ sub_8091154(NationalToHoennOrder(dexNum), 13, 3);
+ else
+ sub_8091154(dexNum, 13, 3);
+ sub_80911C8(dexNum, 16, 3);
+ MenuPrint(gDexText_UnknownPoke, 11, 5);
+ MenuPrint(gDexText_UnknownHeight, 16, 7);
+ MenuPrint(gDexText_UnknownWeight, 16, 9);
+ sub_8091304(&gPokedexEntries[dexNum], 11, 5);
+ sub_8091458(gPokedexEntries[dexNum].height, 16, 7);
+ sub_8091564(gPokedexEntries[dexNum].weight, 16, 9);
+ MenuPrint(gPokedexEntries[dexNum].descriptionPage1, 2, 13);
+ sub_80917CC(14, 0x3FC);
+ gTasks[taskId].data[0]++;
+ break;
+ case 4:
+ {
+ u8 spriteId = sub_80918EC(dexNum, 0x30, 0x38, 0);
+
+ gSprites[spriteId].oam.priority = 0;
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetVBlankCallback(gUnknown_03005CEC);
+ gTasks[taskId].data[3] = spriteId;
+ gTasks[taskId].data[0]++;
+ break;
+ }
+ case 5:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
+ gTasks[taskId].data[0]++;
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ PlayCry1(NationalPokedexNumToSpecies(dexNum), 0);
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[4] = 0;
+ gTasks[taskId].func = sub_8090A3C;
}
- case 5:
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
- REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(15) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_BG3_ON | DISPCNT_OBJ_ON;
- gTasks[taskId].data[0]++;
- break;
- case 6:
- if (!gPaletteFade.active)
- {
- PlayCry1(NationalPokedexNumToSpecies(dexNum), 0);
- gTasks[taskId].data[2] = 0;
- gTasks[taskId].data[4] = 0;
- gTasks[taskId].func = sub_8090A3C;
- }
- break;
+ break;
}
}
*/
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index 204fa7b9a..dacbb81c3 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "asm.h"
+#include "data2.h"
#include "items.h"
#include "main.h"
#include "pokemon.h"
@@ -25,7 +26,6 @@ extern u8 byte_2024E88;
extern u32 gExperienceTables[8][101];
extern struct BaseStats gBaseStats[];
-extern struct BattleMove gBattleMoves[];
extern const u16 *gLevelUpLearnsets[];
void ZeroBoxMonData(struct BoxPokemon *boxMon)
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 3be11f453..7fbfc1271 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "asm.h"
+#include "data2.h"
#include "event_data.h"
#include "main.h"
#include "pokemon.h"
@@ -8,6 +9,7 @@
#include "sprite.h"
#include "string_util.h"
#include "text.h"
+#include "strings2.h"
extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[6];
@@ -34,16 +36,10 @@ extern u16 gTrainerBattleOpponent;
extern struct PokemonStorage gPokemonStorage;
extern u8 gBadEggNickname[];
-extern u8 gEggNickname[];
extern u32 gBitTable[];
extern struct BaseStats gBaseStats[];
-extern u8 gSpeciesNames[][11];
-extern struct BattleMove gBattleMoves[];
extern const struct SpriteTemplate gSpriteTemplate_8208288[];
-extern const union AmimCmd *const gSpriteAnimTable_81E7C64[];
//array of pointers to arrays of pointers to union AnimCmd (We probably need to typedef this.)
-extern const union AnimCmd *const *const gUnknown_081EC2A4[];
-extern const union AnimCmd *const *const gUnknown_081ECACC[];
extern u8 gTrainerClassToPicIndex[];
extern u8 gTrainerClassToNameIndex[];
extern u8 gSecretBaseTrainerClasses[];
@@ -417,307 +413,307 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
switch (field)
{
- case MON_DATA_PERSONALITY:
- retVal = boxMon->personality;
- break;
- case MON_DATA_OT_ID:
- retVal = boxMon->otId;
- break;
- case MON_DATA_NICKNAME:
+ case MON_DATA_PERSONALITY:
+ retVal = boxMon->personality;
+ break;
+ case MON_DATA_OT_ID:
+ retVal = boxMon->otId;
+ break;
+ case MON_DATA_NICKNAME:
+ {
+ if (boxMon->isBadEgg)
{
- if (boxMon->isBadEgg)
- {
- StringCopy(data, gBadEggNickname);
- retVal = StringLength(data);
- }
- else if (boxMon->isEgg)
- {
- StringCopy(data, gEggNickname);
- retVal = StringLength(data);
- }
- else
- {
- retVal = 0;
-
- while (retVal < POKEMON_NAME_LENGTH && boxMon->nickname[retVal] != EOS)
- {
- data[retVal] = boxMon->nickname[retVal];
- retVal++;
- }
-
- data[retVal] = EOS;
- ConvertInternationalString(data, boxMon->language);
- retVal = StringLength(data);
- }
- break;
+ StringCopy(data, gBadEggNickname);
+ retVal = StringLength(data);
}
- case MON_DATA_LANGUAGE:
- retVal = boxMon->language;
- break;
- case MON_DATA_SANITY_BIT1:
- retVal = boxMon->isBadEgg;
- break;
- case MON_DATA_SANITY_BIT2:
- retVal = boxMon->hasSpecies;
- break;
- case MON_DATA_SANITY_BIT3:
- retVal = boxMon->isEgg;
- break;
- case MON_DATA_OT_NAME:
+ else if (boxMon->isEgg)
+ {
+ StringCopy(data, gEggNickname);
+ retVal = StringLength(data);
+ }
+ else
{
retVal = 0;
- while (retVal < OT_NAME_LENGTH && boxMon->otName[retVal] != EOS)
+ while (retVal < POKEMON_NAME_LENGTH && boxMon->nickname[retVal] != EOS)
{
- data[retVal] = boxMon->otName[retVal];
+ data[retVal] = boxMon->nickname[retVal];
retVal++;
}
data[retVal] = EOS;
- break;
+ ConvertInternationalString(data, boxMon->language);
+ retVal = StringLength(data);
}
- case MON_DATA_MARKINGS:
- retVal = boxMon->markings;
- break;
- case MON_DATA_CHECKSUM:
- retVal = boxMon->checksum;
- break;
- case MON_DATA_10:
- retVal = boxMon->unknown;
- break;
- case MON_DATA_SPECIES:
- retVal = boxMon->isBadEgg ? SPECIES_EGG : substruct0->species;
- break;
- case MON_DATA_HELD_ITEM:
- retVal = substruct0->heldItem;
- break;
- case MON_DATA_EXP:
- retVal = substruct0->experience;
- break;
- case MON_DATA_PP_BONUSES:
- retVal = substruct0->ppBonuses;
- break;
- case MON_DATA_FRIENDSHIP:
- retVal = substruct0->friendship;
- break;
- case MON_DATA_MOVE1:
- case MON_DATA_MOVE2:
- case MON_DATA_MOVE3:
- case MON_DATA_MOVE4:
- retVal = substruct1->moves[field - MON_DATA_MOVE1];
- break;
- case MON_DATA_PP1:
- case MON_DATA_PP2:
- case MON_DATA_PP3:
- case MON_DATA_PP4:
- retVal = substruct1->pp[field - MON_DATA_PP1];
- break;
- case MON_DATA_HP_EV:
- retVal = substruct2->hpEV;
- break;
- case MON_DATA_ATK_EV:
- retVal = substruct2->attackEV;
- break;
- case MON_DATA_DEF_EV:
- retVal = substruct2->defenseEV;
- break;
- case MON_DATA_SPD_EV:
- retVal = substruct2->speedEV;
- break;
- case MON_DATA_SPATK_EV:
- retVal = substruct2->spAttackEV;
- break;
- case MON_DATA_SPDEF_EV:
- retVal = substruct2->spDefenseEV;
- break;
- case MON_DATA_COOL:
- retVal = substruct2->cool;
- break;
- case MON_DATA_BEAUTY:
- retVal = substruct2->beauty;
- break;
- case MON_DATA_CUTE:
- retVal = substruct2->cute;
- break;
- case MON_DATA_SMART:
- retVal = substruct2->smart;
- break;
- case MON_DATA_TOUGH:
- retVal = substruct2->tough;
- break;
- case MON_DATA_SHEEN:
- retVal = substruct2->sheen;
- break;
- case MON_DATA_POKERUS:
- retVal = substruct3->pokerus;
- break;
- case MON_DATA_MET_LOCATION:
- retVal = substruct3->metLocation;
- break;
- case MON_DATA_MET_LEVEL:
- retVal = substruct3->metLevel;
- break;
- case MON_DATA_MET_GAME:
- retVal = substruct3->metGame;
- break;
- case MON_DATA_POKEBALL:
- retVal = substruct3->pokeball;
- break;
- case MON_DATA_OT_GENDER:
- retVal = substruct3->otGender;
- break;
- case MON_DATA_HP_IV:
- retVal = substruct3->hpIV;
- break;
- case MON_DATA_ATK_IV:
- retVal = substruct3->attackIV;
- break;
- case MON_DATA_DEF_IV:
- retVal = substruct3->defenseIV;
- break;
- case MON_DATA_SPD_IV:
- retVal = substruct3->speedIV;
- break;
- case MON_DATA_SPATK_IV:
- retVal = substruct3->spAttackIV;
- break;
- case MON_DATA_SPDEF_IV:
- retVal = substruct3->spDefenseIV;
- break;
- case MON_DATA_IS_EGG:
- retVal = substruct3->isEgg;
- break;
- case MON_DATA_ALT_ABILITY:
- retVal = substruct3->altAbility;
- break;
- case MON_DATA_COOL_RIBBON:
- retVal = substruct3->coolRibbon;
- break;
- case MON_DATA_BEAUTY_RIBBON:
- retVal = substruct3->beautyRibbon;
- break;
- case MON_DATA_CUTE_RIBBON:
- retVal = substruct3->cuteRibbon;
- break;
- case MON_DATA_SMART_RIBBON:
- retVal = substruct3->smartRibbon;
- break;
- case MON_DATA_TOUGH_RIBBON:
- retVal = substruct3->toughRibbon;
- break;
- case MON_DATA_CHAMPION_RIBBON:
- retVal = substruct3->championRibbon;
- break;
- case MON_DATA_WINNING_RIBBON:
- retVal = substruct3->winningRibbon;
- break;
- case MON_DATA_VICTORY_RIBBON:
- retVal = substruct3->victoryRibbon;
- break;
- case MON_DATA_ARTIST_RIBBON:
- retVal = substruct3->artistRibbon;
- break;
- case MON_DATA_EFFORT_RIBBON:
- retVal = substruct3->effortRibbon;
- break;
- case MON_DATA_GIFT_RIBBON_1:
- retVal = substruct3->giftRibbon1;
- break;
- case MON_DATA_GIFT_RIBBON_2:
- retVal = substruct3->giftRibbon2;
- break;
- case MON_DATA_GIFT_RIBBON_3:
- retVal = substruct3->giftRibbon3;
- break;
- case MON_DATA_GIFT_RIBBON_4:
- retVal = substruct3->giftRibbon4;
- break;
- case MON_DATA_GIFT_RIBBON_5:
- retVal = substruct3->giftRibbon5;
- break;
- case MON_DATA_GIFT_RIBBON_6:
- retVal = substruct3->giftRibbon6;
- break;
- case MON_DATA_GIFT_RIBBON_7:
- retVal = substruct3->giftRibbon7;
- break;
- case MON_DATA_FATEFUL_ENCOUNTER:
- retVal = substruct3->fatefulEncounter;
- break;
- case MON_DATA_SPECIES2:
- retVal = substruct0->species;
- if (substruct0->species && (substruct3->isEgg || boxMon->isBadEgg))
- retVal = SPECIES_EGG;
- break;
- case MON_DATA_IVS:
- retVal = substruct3->hpIV | (substruct3->attackIV << 5) | (substruct3->defenseIV << 10) | (substruct3->speedIV << 15) | (substruct3->spAttackIV << 20) | (substruct3->spDefenseIV << 25);
- break;
- case MON_DATA_KNOWN_MOVES:
- if (substruct0->species && !substruct3->isEgg)
- {
- u16 *moves = (u16 *)data;
- s32 i = 0;
-
- while (moves[i] != 355)
- {
- u16 move = moves[i];
- if (substruct1->moves[0] == move
- || substruct1->moves[1] == move
- || substruct1->moves[2] == move
- || substruct1->moves[3] == move)
- retVal |= gBitTable[i];
- i++;
- }
- }
- break;
- case MON_DATA_RIBBON_COUNT:
- retVal = 0;
- if (substruct0->species && !substruct3->isEgg)
- {
- retVal += substruct3->coolRibbon;
- retVal += substruct3->beautyRibbon;
- retVal += substruct3->cuteRibbon;
- retVal += substruct3->smartRibbon;
- retVal += substruct3->toughRibbon;
- retVal += substruct3->championRibbon;
- retVal += substruct3->winningRibbon;
- retVal += substruct3->victoryRibbon;
- retVal += substruct3->artistRibbon;
- retVal += substruct3->effortRibbon;
- retVal += substruct3->giftRibbon1;
- retVal += substruct3->giftRibbon2;
- retVal += substruct3->giftRibbon3;
- retVal += substruct3->giftRibbon4;
- retVal += substruct3->giftRibbon5;
- retVal += substruct3->giftRibbon6;
- retVal += substruct3->giftRibbon7;
- }
- break;
- case MON_DATA_RIBBONS:
- retVal = 0;
- if (substruct0->species && !substruct3->isEgg)
+ break;
+ }
+ case MON_DATA_LANGUAGE:
+ retVal = boxMon->language;
+ break;
+ case MON_DATA_SANITY_BIT1:
+ retVal = boxMon->isBadEgg;
+ break;
+ case MON_DATA_SANITY_BIT2:
+ retVal = boxMon->hasSpecies;
+ break;
+ case MON_DATA_SANITY_BIT3:
+ retVal = boxMon->isEgg;
+ break;
+ case MON_DATA_OT_NAME:
+ {
+ retVal = 0;
+
+ while (retVal < OT_NAME_LENGTH && boxMon->otName[retVal] != EOS)
+ {
+ data[retVal] = boxMon->otName[retVal];
+ retVal++;
+ }
+
+ data[retVal] = EOS;
+ break;
+ }
+ case MON_DATA_MARKINGS:
+ retVal = boxMon->markings;
+ break;
+ case MON_DATA_CHECKSUM:
+ retVal = boxMon->checksum;
+ break;
+ case MON_DATA_10:
+ retVal = boxMon->unknown;
+ break;
+ case MON_DATA_SPECIES:
+ retVal = boxMon->isBadEgg ? SPECIES_EGG : substruct0->species;
+ break;
+ case MON_DATA_HELD_ITEM:
+ retVal = substruct0->heldItem;
+ break;
+ case MON_DATA_EXP:
+ retVal = substruct0->experience;
+ break;
+ case MON_DATA_PP_BONUSES:
+ retVal = substruct0->ppBonuses;
+ break;
+ case MON_DATA_FRIENDSHIP:
+ retVal = substruct0->friendship;
+ break;
+ case MON_DATA_MOVE1:
+ case MON_DATA_MOVE2:
+ case MON_DATA_MOVE3:
+ case MON_DATA_MOVE4:
+ retVal = substruct1->moves[field - MON_DATA_MOVE1];
+ break;
+ case MON_DATA_PP1:
+ case MON_DATA_PP2:
+ case MON_DATA_PP3:
+ case MON_DATA_PP4:
+ retVal = substruct1->pp[field - MON_DATA_PP1];
+ break;
+ case MON_DATA_HP_EV:
+ retVal = substruct2->hpEV;
+ break;
+ case MON_DATA_ATK_EV:
+ retVal = substruct2->attackEV;
+ break;
+ case MON_DATA_DEF_EV:
+ retVal = substruct2->defenseEV;
+ break;
+ case MON_DATA_SPD_EV:
+ retVal = substruct2->speedEV;
+ break;
+ case MON_DATA_SPATK_EV:
+ retVal = substruct2->spAttackEV;
+ break;
+ case MON_DATA_SPDEF_EV:
+ retVal = substruct2->spDefenseEV;
+ break;
+ case MON_DATA_COOL:
+ retVal = substruct2->cool;
+ break;
+ case MON_DATA_BEAUTY:
+ retVal = substruct2->beauty;
+ break;
+ case MON_DATA_CUTE:
+ retVal = substruct2->cute;
+ break;
+ case MON_DATA_SMART:
+ retVal = substruct2->smart;
+ break;
+ case MON_DATA_TOUGH:
+ retVal = substruct2->tough;
+ break;
+ case MON_DATA_SHEEN:
+ retVal = substruct2->sheen;
+ break;
+ case MON_DATA_POKERUS:
+ retVal = substruct3->pokerus;
+ break;
+ case MON_DATA_MET_LOCATION:
+ retVal = substruct3->metLocation;
+ break;
+ case MON_DATA_MET_LEVEL:
+ retVal = substruct3->metLevel;
+ break;
+ case MON_DATA_MET_GAME:
+ retVal = substruct3->metGame;
+ break;
+ case MON_DATA_POKEBALL:
+ retVal = substruct3->pokeball;
+ break;
+ case MON_DATA_OT_GENDER:
+ retVal = substruct3->otGender;
+ break;
+ case MON_DATA_HP_IV:
+ retVal = substruct3->hpIV;
+ break;
+ case MON_DATA_ATK_IV:
+ retVal = substruct3->attackIV;
+ break;
+ case MON_DATA_DEF_IV:
+ retVal = substruct3->defenseIV;
+ break;
+ case MON_DATA_SPD_IV:
+ retVal = substruct3->speedIV;
+ break;
+ case MON_DATA_SPATK_IV:
+ retVal = substruct3->spAttackIV;
+ break;
+ case MON_DATA_SPDEF_IV:
+ retVal = substruct3->spDefenseIV;
+ break;
+ case MON_DATA_IS_EGG:
+ retVal = substruct3->isEgg;
+ break;
+ case MON_DATA_ALT_ABILITY:
+ retVal = substruct3->altAbility;
+ break;
+ case MON_DATA_COOL_RIBBON:
+ retVal = substruct3->coolRibbon;
+ break;
+ case MON_DATA_BEAUTY_RIBBON:
+ retVal = substruct3->beautyRibbon;
+ break;
+ case MON_DATA_CUTE_RIBBON:
+ retVal = substruct3->cuteRibbon;
+ break;
+ case MON_DATA_SMART_RIBBON:
+ retVal = substruct3->smartRibbon;
+ break;
+ case MON_DATA_TOUGH_RIBBON:
+ retVal = substruct3->toughRibbon;
+ break;
+ case MON_DATA_CHAMPION_RIBBON:
+ retVal = substruct3->championRibbon;
+ break;
+ case MON_DATA_WINNING_RIBBON:
+ retVal = substruct3->winningRibbon;
+ break;
+ case MON_DATA_VICTORY_RIBBON:
+ retVal = substruct3->victoryRibbon;
+ break;
+ case MON_DATA_ARTIST_RIBBON:
+ retVal = substruct3->artistRibbon;
+ break;
+ case MON_DATA_EFFORT_RIBBON:
+ retVal = substruct3->effortRibbon;
+ break;
+ case MON_DATA_GIFT_RIBBON_1:
+ retVal = substruct3->giftRibbon1;
+ break;
+ case MON_DATA_GIFT_RIBBON_2:
+ retVal = substruct3->giftRibbon2;
+ break;
+ case MON_DATA_GIFT_RIBBON_3:
+ retVal = substruct3->giftRibbon3;
+ break;
+ case MON_DATA_GIFT_RIBBON_4:
+ retVal = substruct3->giftRibbon4;
+ break;
+ case MON_DATA_GIFT_RIBBON_5:
+ retVal = substruct3->giftRibbon5;
+ break;
+ case MON_DATA_GIFT_RIBBON_6:
+ retVal = substruct3->giftRibbon6;
+ break;
+ case MON_DATA_GIFT_RIBBON_7:
+ retVal = substruct3->giftRibbon7;
+ break;
+ case MON_DATA_FATEFUL_ENCOUNTER:
+ retVal = substruct3->fatefulEncounter;
+ break;
+ case MON_DATA_SPECIES2:
+ retVal = substruct0->species;
+ if (substruct0->species && (substruct3->isEgg || boxMon->isBadEgg))
+ retVal = SPECIES_EGG;
+ break;
+ case MON_DATA_IVS:
+ retVal = substruct3->hpIV | (substruct3->attackIV << 5) | (substruct3->defenseIV << 10) | (substruct3->speedIV << 15) | (substruct3->spAttackIV << 20) | (substruct3->spDefenseIV << 25);
+ break;
+ case MON_DATA_KNOWN_MOVES:
+ if (substruct0->species && !substruct3->isEgg)
+ {
+ u16 *moves = (u16 *)data;
+ s32 i = 0;
+
+ while (moves[i] != 355)
{
- retVal = substruct3->championRibbon
- | (substruct3->coolRibbon << 1)
- | (substruct3->beautyRibbon << 4)
- | (substruct3->cuteRibbon << 7)
- | (substruct3->smartRibbon << 10)
- | (substruct3->toughRibbon << 13)
- | (substruct3->winningRibbon << 16)
- | (substruct3->victoryRibbon << 17)
- | (substruct3->artistRibbon << 18)
- | (substruct3->effortRibbon << 19)
- | (substruct3->giftRibbon1 << 20)
- | (substruct3->giftRibbon2 << 21)
- | (substruct3->giftRibbon3 << 22)
- | (substruct3->giftRibbon4 << 23)
- | (substruct3->giftRibbon5 << 24)
- | (substruct3->giftRibbon6 << 25)
- | (substruct3->giftRibbon7 << 26);
+ u16 move = moves[i];
+ if (substruct1->moves[0] == move
+ || substruct1->moves[1] == move
+ || substruct1->moves[2] == move
+ || substruct1->moves[3] == move)
+ retVal |= gBitTable[i];
+ i++;
}
- break;
- default:
- break;
+ }
+ break;
+ case MON_DATA_RIBBON_COUNT:
+ retVal = 0;
+ if (substruct0->species && !substruct3->isEgg)
+ {
+ retVal += substruct3->coolRibbon;
+ retVal += substruct3->beautyRibbon;
+ retVal += substruct3->cuteRibbon;
+ retVal += substruct3->smartRibbon;
+ retVal += substruct3->toughRibbon;
+ retVal += substruct3->championRibbon;
+ retVal += substruct3->winningRibbon;
+ retVal += substruct3->victoryRibbon;
+ retVal += substruct3->artistRibbon;
+ retVal += substruct3->effortRibbon;
+ retVal += substruct3->giftRibbon1;
+ retVal += substruct3->giftRibbon2;
+ retVal += substruct3->giftRibbon3;
+ retVal += substruct3->giftRibbon4;
+ retVal += substruct3->giftRibbon5;
+ retVal += substruct3->giftRibbon6;
+ retVal += substruct3->giftRibbon7;
+ }
+ break;
+ case MON_DATA_RIBBONS:
+ retVal = 0;
+ if (substruct0->species && !substruct3->isEgg)
+ {
+ retVal = substruct3->championRibbon
+ | (substruct3->coolRibbon << 1)
+ | (substruct3->beautyRibbon << 4)
+ | (substruct3->cuteRibbon << 7)
+ | (substruct3->smartRibbon << 10)
+ | (substruct3->toughRibbon << 13)
+ | (substruct3->winningRibbon << 16)
+ | (substruct3->victoryRibbon << 17)
+ | (substruct3->artistRibbon << 18)
+ | (substruct3->effortRibbon << 19)
+ | (substruct3->giftRibbon1 << 20)
+ | (substruct3->giftRibbon2 << 21)
+ | (substruct3->giftRibbon3 << 22)
+ | (substruct3->giftRibbon4 << 23)
+ | (substruct3->giftRibbon5 << 24)
+ | (substruct3->giftRibbon6 << 25)
+ | (substruct3->giftRibbon7 << 26);
+ }
+ break;
+ default:
+ break;
}
if (field > MON_DATA_10)
@@ -800,239 +796,239 @@ void SetBoxMonData(struct BoxPokemon *boxMon, s32 field, const u8 *data)
switch (field)
{
- case MON_DATA_PERSONALITY:
- SET32(boxMon->personality);
- break;
- case MON_DATA_OT_ID:
- SET32(boxMon->otId);
- break;
- case MON_DATA_NICKNAME:
- {
- s32 i;
- for (i = 0; i < POKEMON_NAME_LENGTH; i++)
- boxMon->nickname[i] = data[i];
- break;
- }
- case MON_DATA_LANGUAGE:
- SET8(boxMon->language);
- break;
- case MON_DATA_SANITY_BIT1:
- SET8(boxMon->isBadEgg);
- break;
- case MON_DATA_SANITY_BIT2:
- SET8(boxMon->hasSpecies);
- break;
- case MON_DATA_SANITY_BIT3:
- SET8(boxMon->isEgg);
- break;
- case MON_DATA_OT_NAME:
- {
- s32 i;
- for (i = 0; i < OT_NAME_LENGTH; i++)
- boxMon->otName[i] = data[i];
- break;
- }
- case MON_DATA_MARKINGS:
- SET8(boxMon->markings);
- break;
- case MON_DATA_CHECKSUM:
- SET16(boxMon->checksum);
- break;
- case MON_DATA_10:
- SET16(boxMon->unknown);
- break;
- case MON_DATA_SPECIES:
- {
- SET16(substruct0->species);
- if (substruct0->species)
- boxMon->hasSpecies = 1;
- else
- boxMon->hasSpecies = 0;
- break;
- }
- case MON_DATA_HELD_ITEM:
- SET16(substruct0->heldItem);
- break;
- case MON_DATA_EXP:
- SET32(substruct0->experience);
- break;
- case MON_DATA_PP_BONUSES:
- SET8(substruct0->ppBonuses);
- break;
- case MON_DATA_FRIENDSHIP:
- SET8(substruct0->friendship);
- break;
- case MON_DATA_MOVE1:
- case MON_DATA_MOVE2:
- case MON_DATA_MOVE3:
- case MON_DATA_MOVE4:
- SET16(substruct1->moves[field - MON_DATA_MOVE1]);
- break;
- case MON_DATA_PP1:
- case MON_DATA_PP2:
- case MON_DATA_PP3:
- case MON_DATA_PP4:
- SET8(substruct1->pp[field - MON_DATA_PP1]);
- break;
- case MON_DATA_HP_EV:
- SET8(substruct2->hpEV);
- break;
- case MON_DATA_ATK_EV:
- SET8(substruct2->attackEV);
- break;
- case MON_DATA_DEF_EV:
- SET8(substruct2->defenseEV);
- break;
- case MON_DATA_SPD_EV:
- SET8(substruct2->speedEV);
- break;
- case MON_DATA_SPATK_EV:
- SET8(substruct2->spAttackEV);
- break;
- case MON_DATA_SPDEF_EV:
- SET8(substruct2->spDefenseEV);
- break;
- case MON_DATA_COOL:
- SET8(substruct2->cool);
- break;
- case MON_DATA_BEAUTY:
- SET8(substruct2->beauty);
- break;
- case MON_DATA_CUTE:
- SET8(substruct2->cute);
- break;
- case MON_DATA_SMART:
- SET8(substruct2->smart);
- break;
- case MON_DATA_TOUGH:
- SET8(substruct2->tough);
- break;
- case MON_DATA_SHEEN:
- SET8(substruct2->sheen);
- break;
- case MON_DATA_POKERUS:
- SET8(substruct3->pokerus);
- break;
- case MON_DATA_MET_LOCATION:
- SET8(substruct3->metLocation);
- break;
- case MON_DATA_MET_LEVEL:
- {
- u8 metLevel = *data;
- substruct3->metLevel = metLevel;
- break;
- }
- case MON_DATA_MET_GAME:
- SET8(substruct3->metGame);
- break;
- case MON_DATA_POKEBALL:
- {
- u8 pokeball = *data;
- substruct3->pokeball = pokeball;
- break;
- }
- case MON_DATA_OT_GENDER:
- SET8(substruct3->otGender);
- break;
- case MON_DATA_HP_IV:
- SET8(substruct3->hpIV);
- break;
- case MON_DATA_ATK_IV:
- SET8(substruct3->attackIV);
- break;
- case MON_DATA_DEF_IV:
- SET8(substruct3->defenseIV);
- break;
- case MON_DATA_SPD_IV:
- SET8(substruct3->speedIV);
- break;
- case MON_DATA_SPATK_IV:
- SET8(substruct3->spAttackIV);
- break;
- case MON_DATA_SPDEF_IV:
- SET8(substruct3->spDefenseIV);
- break;
- case MON_DATA_IS_EGG:
- SET8(substruct3->isEgg);
- if (substruct3->isEgg)
- boxMon->isEgg = 1;
- else
- boxMon->isEgg = 0;
- break;
- case MON_DATA_ALT_ABILITY:
- SET8(substruct3->altAbility);
- break;
- case MON_DATA_COOL_RIBBON:
- SET8(substruct3->coolRibbon);
- break;
- case MON_DATA_BEAUTY_RIBBON:
- SET8(substruct3->beautyRibbon);
- break;
- case MON_DATA_CUTE_RIBBON:
- SET8(substruct3->cuteRibbon);
- break;
- case MON_DATA_SMART_RIBBON:
- SET8(substruct3->smartRibbon);
- break;
- case MON_DATA_TOUGH_RIBBON:
- SET8(substruct3->toughRibbon);
- break;
- case MON_DATA_CHAMPION_RIBBON:
- SET8(substruct3->championRibbon);
- break;
- case MON_DATA_WINNING_RIBBON:
- SET8(substruct3->winningRibbon);
- break;
- case MON_DATA_VICTORY_RIBBON:
- SET8(substruct3->victoryRibbon);
- break;
- case MON_DATA_ARTIST_RIBBON:
- SET8(substruct3->artistRibbon);
- break;
- case MON_DATA_EFFORT_RIBBON:
- SET8(substruct3->effortRibbon);
- break;
- case MON_DATA_GIFT_RIBBON_1:
- SET8(substruct3->giftRibbon1);
- break;
- case MON_DATA_GIFT_RIBBON_2:
- SET8(substruct3->giftRibbon2);
- break;
- case MON_DATA_GIFT_RIBBON_3:
- SET8(substruct3->giftRibbon3);
- break;
- case MON_DATA_GIFT_RIBBON_4:
- SET8(substruct3->giftRibbon4);
- break;
- case MON_DATA_GIFT_RIBBON_5:
- SET8(substruct3->giftRibbon5);
- break;
- case MON_DATA_GIFT_RIBBON_6:
- SET8(substruct3->giftRibbon6);
- break;
- case MON_DATA_GIFT_RIBBON_7:
- SET8(substruct3->giftRibbon7);
- break;
- case MON_DATA_FATEFUL_ENCOUNTER:
- SET8(substruct3->fatefulEncounter);
- break;
- case MON_DATA_IVS:
- {
+ case MON_DATA_PERSONALITY:
+ SET32(boxMon->personality);
+ break;
+ case MON_DATA_OT_ID:
+ SET32(boxMon->otId);
+ break;
+ case MON_DATA_NICKNAME:
+ {
+ s32 i;
+ for (i = 0; i < POKEMON_NAME_LENGTH; i++)
+ boxMon->nickname[i] = data[i];
+ break;
+ }
+ case MON_DATA_LANGUAGE:
+ SET8(boxMon->language);
+ break;
+ case MON_DATA_SANITY_BIT1:
+ SET8(boxMon->isBadEgg);
+ break;
+ case MON_DATA_SANITY_BIT2:
+ SET8(boxMon->hasSpecies);
+ break;
+ case MON_DATA_SANITY_BIT3:
+ SET8(boxMon->isEgg);
+ break;
+ case MON_DATA_OT_NAME:
+ {
+ s32 i;
+ for (i = 0; i < OT_NAME_LENGTH; i++)
+ boxMon->otName[i] = data[i];
+ break;
+ }
+ case MON_DATA_MARKINGS:
+ SET8(boxMon->markings);
+ break;
+ case MON_DATA_CHECKSUM:
+ SET16(boxMon->checksum);
+ break;
+ case MON_DATA_10:
+ SET16(boxMon->unknown);
+ break;
+ case MON_DATA_SPECIES:
+ {
+ SET16(substruct0->species);
+ if (substruct0->species)
+ boxMon->hasSpecies = 1;
+ else
+ boxMon->hasSpecies = 0;
+ break;
+ }
+ case MON_DATA_HELD_ITEM:
+ SET16(substruct0->heldItem);
+ break;
+ case MON_DATA_EXP:
+ SET32(substruct0->experience);
+ break;
+ case MON_DATA_PP_BONUSES:
+ SET8(substruct0->ppBonuses);
+ break;
+ case MON_DATA_FRIENDSHIP:
+ SET8(substruct0->friendship);
+ break;
+ case MON_DATA_MOVE1:
+ case MON_DATA_MOVE2:
+ case MON_DATA_MOVE3:
+ case MON_DATA_MOVE4:
+ SET16(substruct1->moves[field - MON_DATA_MOVE1]);
+ break;
+ case MON_DATA_PP1:
+ case MON_DATA_PP2:
+ case MON_DATA_PP3:
+ case MON_DATA_PP4:
+ SET8(substruct1->pp[field - MON_DATA_PP1]);
+ break;
+ case MON_DATA_HP_EV:
+ SET8(substruct2->hpEV);
+ break;
+ case MON_DATA_ATK_EV:
+ SET8(substruct2->attackEV);
+ break;
+ case MON_DATA_DEF_EV:
+ SET8(substruct2->defenseEV);
+ break;
+ case MON_DATA_SPD_EV:
+ SET8(substruct2->speedEV);
+ break;
+ case MON_DATA_SPATK_EV:
+ SET8(substruct2->spAttackEV);
+ break;
+ case MON_DATA_SPDEF_EV:
+ SET8(substruct2->spDefenseEV);
+ break;
+ case MON_DATA_COOL:
+ SET8(substruct2->cool);
+ break;
+ case MON_DATA_BEAUTY:
+ SET8(substruct2->beauty);
+ break;
+ case MON_DATA_CUTE:
+ SET8(substruct2->cute);
+ break;
+ case MON_DATA_SMART:
+ SET8(substruct2->smart);
+ break;
+ case MON_DATA_TOUGH:
+ SET8(substruct2->tough);
+ break;
+ case MON_DATA_SHEEN:
+ SET8(substruct2->sheen);
+ break;
+ case MON_DATA_POKERUS:
+ SET8(substruct3->pokerus);
+ break;
+ case MON_DATA_MET_LOCATION:
+ SET8(substruct3->metLocation);
+ break;
+ case MON_DATA_MET_LEVEL:
+ {
+ u8 metLevel = *data;
+ substruct3->metLevel = metLevel;
+ break;
+ }
+ case MON_DATA_MET_GAME:
+ SET8(substruct3->metGame);
+ break;
+ case MON_DATA_POKEBALL:
+ {
+ u8 pokeball = *data;
+ substruct3->pokeball = pokeball;
+ break;
+ }
+ case MON_DATA_OT_GENDER:
+ SET8(substruct3->otGender);
+ break;
+ case MON_DATA_HP_IV:
+ SET8(substruct3->hpIV);
+ break;
+ case MON_DATA_ATK_IV:
+ SET8(substruct3->attackIV);
+ break;
+ case MON_DATA_DEF_IV:
+ SET8(substruct3->defenseIV);
+ break;
+ case MON_DATA_SPD_IV:
+ SET8(substruct3->speedIV);
+ break;
+ case MON_DATA_SPATK_IV:
+ SET8(substruct3->spAttackIV);
+ break;
+ case MON_DATA_SPDEF_IV:
+ SET8(substruct3->spDefenseIV);
+ break;
+ case MON_DATA_IS_EGG:
+ SET8(substruct3->isEgg);
+ if (substruct3->isEgg)
+ boxMon->isEgg = 1;
+ else
+ boxMon->isEgg = 0;
+ break;
+ case MON_DATA_ALT_ABILITY:
+ SET8(substruct3->altAbility);
+ break;
+ case MON_DATA_COOL_RIBBON:
+ SET8(substruct3->coolRibbon);
+ break;
+ case MON_DATA_BEAUTY_RIBBON:
+ SET8(substruct3->beautyRibbon);
+ break;
+ case MON_DATA_CUTE_RIBBON:
+ SET8(substruct3->cuteRibbon);
+ break;
+ case MON_DATA_SMART_RIBBON:
+ SET8(substruct3->smartRibbon);
+ break;
+ case MON_DATA_TOUGH_RIBBON:
+ SET8(substruct3->toughRibbon);
+ break;
+ case MON_DATA_CHAMPION_RIBBON:
+ SET8(substruct3->championRibbon);
+ break;
+ case MON_DATA_WINNING_RIBBON:
+ SET8(substruct3->winningRibbon);
+ break;
+ case MON_DATA_VICTORY_RIBBON:
+ SET8(substruct3->victoryRibbon);
+ break;
+ case MON_DATA_ARTIST_RIBBON:
+ SET8(substruct3->artistRibbon);
+ break;
+ case MON_DATA_EFFORT_RIBBON:
+ SET8(substruct3->effortRibbon);
+ break;
+ case MON_DATA_GIFT_RIBBON_1:
+ SET8(substruct3->giftRibbon1);
+ break;
+ case MON_DATA_GIFT_RIBBON_2:
+ SET8(substruct3->giftRibbon2);
+ break;
+ case MON_DATA_GIFT_RIBBON_3:
+ SET8(substruct3->giftRibbon3);
+ break;
+ case MON_DATA_GIFT_RIBBON_4:
+ SET8(substruct3->giftRibbon4);
+ break;
+ case MON_DATA_GIFT_RIBBON_5:
+ SET8(substruct3->giftRibbon5);
+ break;
+ case MON_DATA_GIFT_RIBBON_6:
+ SET8(substruct3->giftRibbon6);
+ break;
+ case MON_DATA_GIFT_RIBBON_7:
+ SET8(substruct3->giftRibbon7);
+ break;
+ case MON_DATA_FATEFUL_ENCOUNTER:
+ SET8(substruct3->fatefulEncounter);
+ break;
+ case MON_DATA_IVS:
+ {
#ifdef BUGFIX_SETMONIVS
- u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);
+ u32 ivs = data[0] | (data[1] << 8) | (data[2] << 16) | (data[3] << 24);
#else
- u32 ivs = *data; // Bug: Only the HP IV and the lower 3 bits of the Attack IV are read. The rest become 0.
+ u32 ivs = *data; // Bug: Only the HP IV and the lower 3 bits of the Attack IV are read. The rest become 0.
#endif
- substruct3->hpIV = ivs & 0x1F;
- substruct3->attackIV = (ivs >> 5) & 0x1F;
- substruct3->defenseIV = (ivs >> 10) & 0x1F;
- substruct3->speedIV = (ivs >> 15) & 0x1F;
- substruct3->spAttackIV = (ivs >> 20) & 0x1F;
- substruct3->spDefenseIV = (ivs >> 25) & 0x1F;
- break;
- }
- default:
- break;
+ substruct3->hpIV = ivs & 0x1F;
+ substruct3->attackIV = (ivs >> 5) & 0x1F;
+ substruct3->defenseIV = (ivs >> 10) & 0x1F;
+ substruct3->speedIV = (ivs >> 15) & 0x1F;
+ substruct3->spAttackIV = (ivs >> 20) & 0x1F;
+ substruct3->spDefenseIV = (ivs >> 25) & 0x1F;
+ break;
+ }
+ default:
+ break;
}
if (field > MON_DATA_10)
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 270a52ad5..f9eb3a7e9 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "asm.h"
#include "battle.h"
+#include "data2.h"
#include "event_data.h"
#include "hold_effects.h"
#include "item.h"
@@ -74,9 +75,6 @@ extern u8 gEnemyMonIndex;
extern u8 gUnknown_02024C0B;
extern u8 gUnknown_02024E6C;
extern struct SpindaSpot gSpindaSpotGraphics[];
-extern void *gUnknown_081FAF4C[];
-extern u8 gSpeciesNames[][11];
-extern struct Trainer gTrainers[];
extern s8 gNatureStatTable[][5];
extern s8 gUnknown_082082FE[][3];
extern u16 gTrainerBattleOpponent;
@@ -88,8 +86,6 @@ extern u32 gTMHMLearnsets[][2];
extern const u16 *gLevelUpLearnsets[];
extern u8 gBattleMonForms[];
extern const u8 BattleText_Wally[];
-extern const struct SpritePalette gMonPaletteTable[];
-extern const struct SpritePalette gMonShinyPaletteTable[];
extern const u16 gHMMoves[];
extern s8 gUnknown_083F7E28[];
extern u8 byte_2024C06;
@@ -169,28 +165,28 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
{
switch (j)
{
- case 2:
- if (val & 0x10)
- val &= 0xEF;
- case 0:
- if (i == effectByte && (val & effectBit))
- return offset;
- offset++;
- break;
- case 1:
- if (i == effectByte && (val & effectBit))
- return offset;
- offset++;
- break;
- case 3:
- if (i == effectByte && (val & effectBit))
- return offset;
- offset++;
- break;
- case 7:
- if (i == effectByte)
- return 0;
- break;
+ case 2:
+ if (val & 0x10)
+ val &= 0xEF;
+ case 0:
+ if (i == effectByte && (val & effectBit))
+ return offset;
+ offset++;
+ break;
+ case 1:
+ if (i == effectByte && (val & effectBit))
+ return offset;
+ offset++;
+ break;
+ case 3:
+ if (i == effectByte && (val & effectBit))
+ return offset;
+ offset++;
+ break;
+ case 7:
+ if (i == effectByte)
+ return 0;
+ break;
}
}
j++;
@@ -208,21 +204,21 @@ u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit)
{
switch (j)
{
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- if (i == effectByte && (val & effectBit))
- return offset;
- offset++;
- break;
- case 7:
- if (i == effectByte)
- return 0;
- break;
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ if (i == effectByte && (val & effectBit))
+ return offset;
+ offset++;
+ break;
+ case 7:
+ if (i == effectByte)
+ return 0;
+ break;
}
}
j++;
@@ -1153,26 +1149,26 @@ u16 sub_8040728(void)
{
switch (gTrainers[gTrainerBattleOpponent].trainerClass)
{
- case 2:
- case 0x31:
- return BGM_BATTLE30;
- case 3:
- case 4:
- case 0x32:
- case 0x33:
- return BGM_BATTLE31;
- case 0x19:
- return BGM_BATTLE32;
- case 0x20:
- return BGM_BATTLE33;
- case 0x2E:
- if (!StringCompare(gTrainers[gTrainerBattleOpponent].trainerName, BattleText_Wally))
- return BGM_BATTLE20;
- return BGM_BATTLE35;
- case 0x18:
- return BGM_BATTLE38;
- default:
+ case 2:
+ case 0x31:
+ return BGM_BATTLE30;
+ case 3:
+ case 4:
+ case 0x32:
+ case 0x33:
+ return BGM_BATTLE31;
+ case 0x19:
+ return BGM_BATTLE32;
+ case 0x20:
+ return BGM_BATTLE33;
+ case 0x2E:
+ if (!StringCompare(gTrainers[gTrainerBattleOpponent].trainerName, BattleText_Wally))
return BGM_BATTLE20;
+ return BGM_BATTLE35;
+ case 0x18:
+ return BGM_BATTLE38;
+ default:
+ return BGM_BATTLE20;
}
}
return BGM_BATTLE27;
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index 6540858c1..b2f8a1569 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,8 +1,10 @@
#include "global.h"
#include "pokemon_size_record.h"
+#include "data2.h"
#include "event_data.h"
#include "species.h"
#include "string_util.h"
+#include "strings2.h"
#include "text.h"
extern u16 SpeciesToNationalPokedexNum(u16);
@@ -15,9 +17,7 @@ struct UnknownStruct
u16 unk4;
};
-extern u8 gOtherText_Marco[];
extern u16 gScriptResult;
-extern u8 gSpeciesNames[][11];
static const struct UnknownStruct sBigMonSizeTable[] =
{
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index 5f96512f0..56a56e455 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -4,22 +4,11 @@
#include "menu.h"
#include "pokemon.h"
#include "string_util.h"
+#include "strings2.h"
extern struct Pokemon *unk_2018000;
extern u8 *(gNatureNames[]);
-extern const u8 gOtherText_Terminator4[];
-extern const u8 gOtherText_Nature[];
-
-extern const u8 gOtherText_Met[];
-extern const u8 gOtherText_Egg2[];
-extern const u8 gOtherText_ObtainedInTrade[];
-extern const u8 gOtherText_FatefulEncounter[];
-extern const u8 gOtherText_Met2[];
-extern const u8 gOtherText_EggDayCare[];
-extern const u8 gOtherText_EggNicePlace[];
-extern const u8 gOtherText_EggObtainedInTrade[];
-extern const u8 gOtherText_EggHotSprings[];
u8 *sub_80A1E9C(u8 *dest, u8 *src, u8);
u8 PokemonSummaryScreen_CheckOT(struct Pokemon *pokemon);
diff --git a/src/pokenav.c b/src/pokenav.c
index 60e7c73e1..f50f039f8 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "battle.h"
+#include "data2.h"
#include "string_util.h"
struct UnkPokenavStruct_Sub {
@@ -17,8 +18,6 @@ struct UnkPokenavStruct {
extern struct UnkPokenavStruct *gUnknown_083DFEC4;
-extern const struct Trainer gTrainers[];
-extern const u8 gTrainerClassNames[][13];
void sub_80F700C(u8 *arg0, u16 arg1) {
struct Trainer *trainer;
diff --git a/src/record_mixing.c b/src/record_mixing.c
index 58722010f..c84cfd2ae 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -10,6 +10,7 @@
#include "songs.h"
#include "sound.h"
#include "string_util.h"
+#include "strings2.h"
#include "task.h"
extern void *recordMixingSecretBases;
@@ -28,8 +29,6 @@ extern u16 gSpecialVar_0x8005;
extern u32 gUnknown_03005D2C;
extern u8 gUnknown_03000718;
extern u8 gUnknown_0300071C[];
-extern u8 gOtherText_MixingComplete[];
-extern u8 gOtherText_MixingRecordsWithFriend[];
extern bool8 gReceivedRemoteLinkPlayers;
#define BUFFER_CHUNK_SIZE 200
@@ -262,31 +261,31 @@ void Task_RecordMixing_SendPacket(u8 taskId)
switch (task->data[TD_STATE])
{
- case 0: //Copy record data to send buffer
- {
- void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4];
+ case 0: //Copy record data to send buffer
+ {
+ void *recordData = (u8 *)LoadPtrFromTaskData(&task->data[2]) + BUFFER_CHUNK_SIZE * task->data[4];
- memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
- task->data[TD_STATE]++;
- break;
- }
- case 1:
- if (GetMultiplayerId() == 0)
- sub_8007E9C(1);
+ memcpy(gBlockSendBuffer, recordData, BUFFER_CHUNK_SIZE);
+ task->data[TD_STATE]++;
+ break;
+ }
+ case 1:
+ if (GetMultiplayerId() == 0)
+ sub_8007E9C(1);
+ task->data[TD_STATE]++;
+ break;
+ case 2:
+ break;
+ case 3:
+ task->data[4]++;
+ if ((u16)task->data[4] == 24)
task->data[TD_STATE]++;
- break;
- case 2:
- break;
- case 3:
- task->data[4]++;
- if ((u16)task->data[4] == 24)
- task->data[TD_STATE]++;
- else
- task->data[TD_STATE] = 0;
- break;
- case 4:
- if (!gTasks[task->data[10]].isActive)
- task->func = Task_RecordMixing_SendPacket_SwitchToReceive;
+ else
+ task->data[TD_STATE] = 0;
+ break;
+ case 4:
+ if (!gTasks[task->data[10]].isActive)
+ task->func = Task_RecordMixing_SendPacket_SwitchToReceive;
}
}
diff --git a/src/rom3.c b/src/rom3.c
index ef7b9a7ed..be6ae0b27 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -15,7 +15,6 @@ extern u8 unk_2000000[];
extern u16 gBattleTypeFlags;
extern const u32 gBitTable[];
extern u16 gBattleWeather;
-extern const struct BattleMove gBattleMoves[];
extern struct BattlePokemon gBattleMons[];
extern u8 gUnknown_020238C4;
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 437c62400..9561db690 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "blend_palette.h"
+#include "data2.h"
#include "decompress.h"
#include "palette.h"
#include "species.h"
@@ -40,13 +41,6 @@ struct TransformStatus {
u16 species;
};
-struct MonCoords {
- // This would use a bitfield, but sub_8079F44
- // uses it as a u8 and casting won't match.
- u8 coords; // u8 x:4, y:4;
- u8 y_offset;
-};
-
struct Struct_gUnknown_0837F578 {
u8 field_0;
u8 field_1;
@@ -101,11 +95,8 @@ extern struct Struct_unk_2019348 unk_2019348;
extern struct TransformStatus gTransformStatuses[];
extern u16 gBattleMonPartyPositions[];
extern u16 gBattleTypeFlags;
-extern struct MonCoords gMonBackPicCoords[];
-extern struct MonCoords gMonFrontPicCoords[];
extern u32 gTransformPersonalities[NUM_BATTLE_SLOTS];
extern u8 gBattleMonForms[NUM_BATTLE_SLOTS];
-extern u8 gEnemyMonElevation[];
extern u16 gUnknown_0202F7CA[];
extern u8 gBattleMonSprites[NUM_BATTLE_SLOTS];
extern u8 gBattleAnimPlayerMonIndex;
@@ -116,9 +107,6 @@ extern u8 gUnknown_02024A68; // gNumBattleMons?
extern struct OamMatrix gOamMatrices[];
extern struct Struct_2017810 unk_2017810[];
extern u8 gUnknown_0202F7BE;
-extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E7C18;
-extern struct SpriteSheet gMonFrontPicTable[];
-extern struct SpriteSheet gMonBackPicTable[];
extern u8 IsContest();
extern bool8 sub_8078874(u8);
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index d46abc74d..a3de0bd00 100644
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -7,6 +7,7 @@
#include "palette.h"
#include "save.h"
#include "sprite.h"
+#include "strings.h"
#include "task.h"
#include "text.h"
@@ -36,13 +37,6 @@ extern u32 gGameContinueCallback;
extern u8 gBirchHelpGfx[];
-extern u8 gSystemText_SaveFailedBackupCheck[];
-extern u8 gSystemText_CheckCompleteSaveAttempt[];
-extern u8 gSystemText_BackupDamagedGameContinue[];
-extern u8 gSystemText_SaveCompletedPressA[];
-extern u8 gSystemText_SaveCompletedGameEnd[];
-extern u8 gSystemText_GameplayEnded[];
-
extern u8 gBirchGrassTilemap[];
extern u8 gBirchBagTilemap[];
extern u8 gBirchBagGrassPal[0x40];
@@ -110,59 +104,59 @@ static void CB2_SaveFailedScreen(void)
switch (gMain.state)
{
- case 0:
- default:
- SetVBlankCallback(0);
- REG_DISPCNT = 0;
- REG_BG3CNT = 0;
- REG_BG2CNT = 0;
- REG_BG1CNT = 0;
- REG_BG0CNT = 0;
- REG_BG3HOFS = 0;
- REG_BG3VOFS = 0;
- REG_BG2HOFS = 0;
- REG_BG2VOFS = 0;
- REG_BG1HOFS = 0;
- REG_BG1VOFS = 0;
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- DmaFill16(3, 0, VRAM, VRAM_SIZE);
- DmaFill32(3, 0, OAM, OAM_SIZE);
- DmaFill16(3, 0, PLTT, PLTT_SIZE);
- LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
- LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000));
- LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800));
- LZ77UnCompVram(&gSaveFailedClockGfx, (void *)(VRAM + 0x10020));
- ResetSpriteData();
- ResetTasks();
- ResetPaletteFade();
- LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
- LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal));
- SetUpWindowConfig(&gWindowConfig_81E6C3C);
- InitMenuWindow(&gWindowConfig_81E6CE4);
- MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window
- MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window
- MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1);
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- ime = REG_IME;
- REG_IME = 0;
- REG_IE |= INTR_FLAG_VBLANK;
- REG_IME = ime;
- REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
- SetVBlankCallback(VBlankCB);
- REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG2_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0;
- gMain.state++;
- break;
- case 1:
- if (!UpdatePaletteFade())
- {
- SetMainCallback2(CB2_WipeSave);
- SetVBlankCallback(VBlankCB_UpdateClockGraphics);
- }
- break;
+ case 0:
+ default:
+ SetVBlankCallback(0);
+ REG_DISPCNT = 0;
+ REG_BG3CNT = 0;
+ REG_BG2CNT = 0;
+ REG_BG1CNT = 0;
+ REG_BG0CNT = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ DmaFill16(3, 0, VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, OAM, OAM_SIZE);
+ DmaFill16(3, 0, PLTT, PLTT_SIZE);
+ LZ77UnCompVram(&gBirchHelpGfx, (void *)VRAM);
+ LZ77UnCompVram(&gBirchBagTilemap, (void *)(VRAM + 0x3000));
+ LZ77UnCompVram(&gBirchGrassTilemap, (void *)(VRAM + 0x3800));
+ LZ77UnCompVram(&gSaveFailedClockGfx, (void *)(VRAM + 0x10020));
+ ResetSpriteData();
+ ResetTasks();
+ ResetPaletteFade();
+ LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal));
+ LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal));
+ SetUpWindowConfig(&gWindowConfig_81E6C3C);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ MenuDrawTextWindow(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window
+ MenuDrawTextWindow(1, MSG_WIN_TOP, 28, 19); // message window
+ MenuPrint(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ ime = REG_IME;
+ REG_IME = 0;
+ REG_IE |= INTR_FLAG_VBLANK;
+ REG_IME = ime;
+ REG_DISPSTAT |= DISPSTAT_VBLANK_INTR;
+ SetVBlankCallback(VBlankCB);
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(6) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG3_ON | DISPCNT_BG2_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0;
+ gMain.state++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ SetMainCallback2(CB2_WipeSave);
+ SetVBlankCallback(VBlankCB_UpdateClockGraphics);
+ }
+ break;
}
}
diff --git a/src/save_menu_util.c b/src/save_menu_util.c
index 7899fabb1..8910bb300 100644
--- a/src/save_menu_util.c
+++ b/src/save_menu_util.c
@@ -5,11 +5,7 @@
#include "menu.h"
#include "pokedex.h"
#include "string_util.h"
-
-extern u8 gOtherText_Player[];
-extern u8 gOtherText_Badges[];
-extern u8 gOtherText_Pokedex[];
-extern u8 gOtherText_PlayTime[];
+#include "strings2.h"
void HandleDrawSaveWindowInfo(s16 left, s16 top)
{
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 136181bd3..33867b58a 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -6,6 +6,7 @@
#include "clock.h"
#include "coins.h"
#include "contest_painting.h"
+#include "data2.h"
#include "decoration.h"
#include "event_data.h"
#include "field_door.h"
@@ -59,9 +60,6 @@ extern SpecialFunc gSpecials[];
extern u8 *gStdScripts[];
extern u8 *gStdScripts_End[];
-extern u8 gSpeciesNames[][11];
-extern u8 gMoveNames[][13];
-
extern u8 * const gUnknown_083CE048[];
extern struct Decoration gDecorations[];
diff --git a/src/script_menu.c b/src/script_menu.c
index eba438397..50941f9ac 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -913,19 +913,19 @@ void task_picbox(u8 taskId)
switch (task->data[0])
{
- case 0:
- task->data[0]++;
- break;
- case 1:
- break;
- case 2:
- FreeResourcesAndDestroySprite(&gSprites[task->data[2]]);
- task->data[0]++;
- break;
- case 3:
- MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10);
- DestroyTask(taskId);
- break;
+ case 0:
+ task->data[0]++;
+ break;
+ case 1:
+ break;
+ case 2:
+ FreeResourcesAndDestroySprite(&gSprites[task->data[2]]);
+ task->data[0]++;
+ break;
+ case 3:
+ MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10);
+ DestroyTask(taskId);
+ break;
}
}
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index 912458655..d111cf8f6 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -3,6 +3,7 @@
#include "battle.h"
#include "berry.h"
#include "contest.h"
+#include "data2.h"
#include "decompress.h"
#include "event_data.h"
#include "items.h"
@@ -21,9 +22,6 @@
#define CONTEST_ENTRY_PIC_LEFT 10
#define CONTEST_ENTRY_PIC_TOP 3
-extern const struct SpriteSheet gMonFrontPicTable[];
-extern struct MonCoords gMonFrontPicCoords[];
-
extern void sub_80C46EC(void);
extern void sub_80C4740(void);
extern void sub_80C48F4(void);
@@ -35,7 +33,6 @@ extern void sub_8042044(struct Pokemon *mon, u16, u8);
extern void sub_8121E10(void);
extern void sub_8121E34(void);
-extern void *gUnknown_081FAF4C[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern struct SpritePalette *sub_80409C8(u16, u32, u32);
@@ -73,18 +70,18 @@ void sub_80C4C28(void)
switch(specialVar)
{
- case 0:
- var = 3;
- break;
- case 1:
- var = 4;
- break;
- case 2:
- var = 5;
- break;
- default:
- var = 100;
- break;
+ case 0:
+ var = 3;
+ break;
+ case 1:
+ var = 4;
+ break;
+ case 2:
+ var = 5;
+ break;
+ default:
+ var = 100;
+ break;
}
gSpecialVar_0x8004 = var;
}
@@ -103,22 +100,22 @@ void sub_80C4C78(void)
switch(gScriptContestCategory)
{
- case 0:
- var = 8;
- break;
- case 1:
- var = 9;
- break;
- case 2:
- var = 10;
- break;
- case 3:
- var = 11;
- break;
- case 4:
- default:
- var = 12;
- break;
+ case 0:
+ var = 8;
+ break;
+ case 1:
+ var = 9;
+ break;
+ case 2:
+ var = 10;
+ break;
+ case 3:
+ var = 11;
+ break;
+ case 4:
+ default:
+ var = 12;
+ break;
}
returnVar = gSaveBlock1.sbStruct.unkSB2.sb1_2EFC_struct2[var].var;
@@ -437,7 +434,7 @@ void ShowContestEntryMonPic(void)
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = species;
HandleLoadSpecialPokePic((struct SpriteSheet *)&gMonFrontPicTable[species].data,
- gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y,
+ gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,
(u32)gUnknown_081FAF4C[0], gUnknown_081FAF4C[1], species, var1);
paletteData = sub_80409C8(species, var2, var1);
LoadCompressedObjectPalette(paletteData);
@@ -467,26 +464,26 @@ void sub_80C5190(u8 taskId)
switch(task->data[0])
{
- case 2:
- sprite = &gSprites[task->data[2]];
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
-
- if(sprite->oam.affineMode)
- FreeOamMatrix(sprite->oam.matrixNum);
-
- DestroySprite(sprite);
- task->data[0]++;
- break;
- case 0:
- task->data[0]++;
- break;
- case 3:
- MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10);
- DestroyTask(taskId);
- break;
- case 1:
- default:
- break;
+ case 2:
+ sprite = &gSprites[task->data[2]];
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
+
+ if(sprite->oam.affineMode)
+ FreeOamMatrix(sprite->oam.matrixNum);
+
+ DestroySprite(sprite);
+ task->data[0]++;
+ break;
+ case 0:
+ task->data[0]++;
+ break;
+ case 3:
+ MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10);
+ DestroyTask(taskId);
+ break;
+ case 1:
+ default:
+ break;
}
}
@@ -593,15 +590,15 @@ void CheckForAlivePartyMons(void)
switch(var)
{
- case 1:
- gScriptResult = var;
- break;
- case 0:
- gScriptResult = var;
- break;
- case 2:
- gScriptResult = var;
- break;
+ case 1:
+ gScriptResult = var;
+ break;
+ case 0:
+ gScriptResult = var;
+ break;
+ case 2:
+ gScriptResult = var;
+ break;
}
}
@@ -663,12 +660,12 @@ void sub_80C5580(void)
switch(var)
{
- case 0:
- gScriptResult = 0;
- break;
- default:
- gScriptResult = 1;
- break;
+ case 0:
+ gScriptResult = 0;
+ break;
+ default:
+ gScriptResult = 1;
+ break;
}
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
@@ -686,14 +683,14 @@ void SetBattleTowerPlayerParty(void)
switch(var)
{
- case 0: // player quit battle tower?
- LoadPlayerParty();
- gScriptResult = 0;
- break;
- default: // load battle tower.
- ReducePlayerPartyToThree();
- gScriptResult = 1;
- break;
+ case 0: // player quit battle tower?
+ LoadPlayerParty();
+ gScriptResult = 0;
+ break;
+ default: // load battle tower.
+ ReducePlayerPartyToThree();
+ gScriptResult = 1;
+ break;
}
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index ce62f2abb..9e833ec34 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "asm.h"
#include "battle_party_menu.h"
+#include "data2.h"
#include "palette.h"
#include "pokemon.h"
#include "rom4.h"
@@ -17,8 +18,6 @@ extern u16 gSpecialVar_0x8005;
extern u8 gUnknown_02038694;
extern u16 gScriptResult;
-extern u8 gMoveNames[][13];
-
extern void (*gUnknown_0300485C)(void);
extern void OpenPartyMenu(u8, u8);
@@ -81,62 +80,62 @@ bool8 sub_80F9ACC(void)
{
switch(EWRAM_1B000.unk264)
{
- case 0:
- if(EWRAM_1B000.unk266 < gPlayerPartyCount)
- {
- TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
- EWRAM_1B000.unk266++;
- }
- else
- {
- EWRAM_1B000.unk266 = 0;
- EWRAM_1B000.unk264++;
- }
- break;
- case 1:
- LoadHeldItemIconGraphics();
- EWRAM_1B000.unk264++;
- break;
- case 2:
- CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260);
- EWRAM_1B000.unk264++;
- break;
- case 3:
- if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
- {
- EWRAM_1B000.unk266++;
- break;
- }
- else
- {
- EWRAM_1B000.unk266 = 0;
- EWRAM_1B000.unk264++;
- break;
- }
- case 4:
- PartyMenuPrintMonsLevelOrStatus();
+ case 0:
+ if(EWRAM_1B000.unk266 < gPlayerPartyCount)
+ {
+ TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
+ EWRAM_1B000.unk266++;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
EWRAM_1B000.unk264++;
+ }
+ break;
+ case 1:
+ LoadHeldItemIconGraphics();
+ EWRAM_1B000.unk264++;
+ break;
+ case 2:
+ CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260);
+ EWRAM_1B000.unk264++;
+ break;
+ case 3:
+ if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
+ {
+ EWRAM_1B000.unk266++;
break;
- case 5:
- PrintPartyMenuMonNicknames();
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
EWRAM_1B000.unk264++;
break;
- case 6:
- sub_80F9C00();
- EWRAM_1B000.unk264++;
+ }
+ case 4:
+ PartyMenuPrintMonsLevelOrStatus();
+ EWRAM_1B000.unk264++;
+ break;
+ case 5:
+ PrintPartyMenuMonNicknames();
+ EWRAM_1B000.unk264++;
+ break;
+ case 6:
+ sub_80F9C00();
+ EWRAM_1B000.unk264++;
+ break;
+ case 7: // the only case that can return true.
+ if(sub_806B58C(EWRAM_1B000.unk266) != 1)
+ {
+ EWRAM_1B000.unk266++;
break;
- case 7: // the only case that can return true.
- if(sub_806B58C(EWRAM_1B000.unk266) != 1)
- {
- EWRAM_1B000.unk266++;
- break;
- }
- else
- {
- EWRAM_1B000.unk266 = 0;
- EWRAM_1B000.unk264 = 0;
- return TRUE;
- }
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264 = 0;
+ return TRUE;
+ }
}
return FALSE;
}
@@ -149,15 +148,15 @@ void sub_80F9C00(void)
{
switch(sub_80AE47C(&gPlayerParty[i]))
{
- case 0:
- case 3:
- case 4:
- sub_806BC3C(i, 0x7E);
- break;
- case 1:
- case 2:
- sub_806BC3C(i, 0x70);
- break;
+ case 0:
+ case 3:
+ case 4:
+ sub_806BC3C(i, 0x7E);
+ break;
+ case 1:
+ case 2:
+ sub_806BC3C(i, 0x70);
+ break;
}
}
}
@@ -168,18 +167,18 @@ void sub_80F9C6C(u8 var)
{
switch(sub_806BD80(var))
{
- case 1:
- PlaySE(5);
- gUnknown_02038694 = sub_806CA38(var);
- gSpecialVar_0x8004 = gUnknown_02038694;
- sub_8123138(var);
- break;
- case 2:
- PlaySE(5);
- gUnknown_02038694 = 0xFF;
- gSpecialVar_0x8004 = 0xFF;
- sub_8123138(var);
- break;
+ case 1:
+ PlaySE(5);
+ gUnknown_02038694 = sub_806CA38(var);
+ gSpecialVar_0x8004 = gUnknown_02038694;
+ sub_8123138(var);
+ break;
+ case 2:
+ PlaySE(5);
+ gUnknown_02038694 = 0xFF;
+ gSpecialVar_0x8004 = 0xFF;
+ sub_8123138(var);
+ break;
}
}
}
@@ -188,62 +187,62 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case
{
switch(EWRAM_1B000.unk264)
{
- case 0:
- if(EWRAM_1B000.unk266 < gPlayerPartyCount)
- {
- TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
- EWRAM_1B000.unk266++;
- }
- else
- {
- EWRAM_1B000.unk266 = 0;
- EWRAM_1B000.unk264++;
- }
- break;
- case 1:
- LoadHeldItemIconGraphics();
- EWRAM_1B000.unk264++;
- break;
- case 2:
- CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260);
- EWRAM_1B000.unk264++;
- break;
- case 3:
- if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
- {
- EWRAM_1B000.unk266++;
- break;
- }
- else
- {
- EWRAM_1B000.unk266 = 0;
- EWRAM_1B000.unk264++;
- break;
- }
- case 4:
- PartyMenuPrintMonsLevelOrStatus();
+ case 0:
+ if(EWRAM_1B000.unk266 < gPlayerPartyCount)
+ {
+ TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
+ EWRAM_1B000.unk266++;
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
EWRAM_1B000.unk264++;
+ }
+ break;
+ case 1:
+ LoadHeldItemIconGraphics();
+ EWRAM_1B000.unk264++;
+ break;
+ case 2:
+ CreateHeldItemIcons_806DC34(EWRAM_1B000.unk260);
+ EWRAM_1B000.unk264++;
+ break;
+ case 3:
+ if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
+ {
+ EWRAM_1B000.unk266++;
break;
- case 5:
- PrintPartyMenuMonNicknames();
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
EWRAM_1B000.unk264++;
break;
- case 6:
- sub_80F9E1C();
- EWRAM_1B000.unk264++;
+ }
+ case 4:
+ PartyMenuPrintMonsLevelOrStatus();
+ EWRAM_1B000.unk264++;
+ break;
+ case 5:
+ PrintPartyMenuMonNicknames();
+ EWRAM_1B000.unk264++;
+ break;
+ case 6:
+ sub_80F9E1C();
+ EWRAM_1B000.unk264++;
+ break;
+ case 7: // the only case that can return true.
+ if(sub_806B58C(EWRAM_1B000.unk266) != 1)
+ {
+ EWRAM_1B000.unk266++;
break;
- case 7: // the only case that can return true.
- if(sub_806B58C(EWRAM_1B000.unk266) != 1)
- {
- EWRAM_1B000.unk266++;
- break;
- }
- else
- {
- EWRAM_1B000.unk266 = 0;
- EWRAM_1B000.unk264 = 0;
- return TRUE;
- }
+ }
+ else
+ {
+ EWRAM_1B000.unk266 = 0;
+ EWRAM_1B000.unk264 = 0;
+ return TRUE;
+ }
}
return FALSE;
}
@@ -267,16 +266,16 @@ void sub_80F9E64(u8 var)
{
switch(sub_806BD80(var))
{
- case 1:
- PlaySE(5);
- gSpecialVar_0x8004 = sub_806CA38(var);
- gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]);
- sub_8123138(var);
- break;
- case 2:
- PlaySE(5);
- gSpecialVar_0x8004 = 0xFF;
- sub_8123138(var);
+ case 1:
+ PlaySE(5);
+ gSpecialVar_0x8004 = sub_806CA38(var);
+ gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]);
+ sub_8123138(var);
+ break;
+ case 2:
+ PlaySE(5);
+ gSpecialVar_0x8004 = 0xFF;
+ sub_8123138(var);
}
}
}
diff --git a/src/secret_base.c b/src/secret_base.c
index 2769806f6..c210a55d2 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -237,24 +237,24 @@ void sub_80BBA48(u8 taskid)
{
u16 curbaseid;
switch (gTasks[taskid].data[0]) {
- case 0:
- gTasks[taskid].data[0] = 1;
- break;
- case 1:
- if (!gPaletteFade.active) {
- gTasks[taskid].data[0] = 2;
- }
- break;
- case 2:
- curbaseid = VarGet(VAR_0x4054);
- if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
- gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++;
- sub_80BBA14();
- warp_in();
- gUnknown_0300485C = sub_8080990;
- SetMainCallback2(CB2_LoadMap);
- DestroyTask(taskid);
- break;
+ case 0:
+ gTasks[taskid].data[0] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active) {
+ gTasks[taskid].data[0] = 2;
+ }
+ break;
+ case 2:
+ curbaseid = VarGet(VAR_0x4054);
+ if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff)
+ gSaveBlock1.secretBases[curbaseid].sbr_field_10 ++;
+ sub_80BBA14();
+ warp_in();
+ gUnknown_0300485C = sub_8080990;
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskid);
+ break;
}
}
@@ -782,23 +782,23 @@ bool8 sub_80BC050(void)
void sub_80BC074(u8 taskid)
{
switch (gTasks[taskid].data[0]) {
- case 0:
- ScriptContext2_Enable();
- gTasks[taskid].data[0] = 1;
- break;
- case 1:
- if (!gPaletteFade.active) {
- gTasks[taskid].data[0] = 2;
- }
- break;
- case 2:
- copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E);
- warp_in();
- gUnknown_0300485C = mapldr_default;
- SetMainCallback2(CB2_LoadMap);
- ScriptContext2_Disable();
- DestroyTask(taskid);
- break;
+ case 0:
+ ScriptContext2_Enable();
+ gTasks[taskid].data[0] = 1;
+ break;
+ case 1:
+ if (!gPaletteFade.active) {
+ gTasks[taskid].data[0] = 2;
+ }
+ break;
+ case 2:
+ copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E);
+ warp_in();
+ gUnknown_0300485C = mapldr_default;
+ SetMainCallback2(CB2_LoadMap);
+ ScriptContext2_Disable();
+ DestroyTask(taskid);
+ break;
}
}
diff --git a/src/shop.c b/src/shop.c
index 780dff02a..81c403e92 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -9,6 +9,7 @@
#include "script.h"
#include "sound.h"
#include "sprite.h"
+#include "strings.h"
#include "task.h"
struct UnknownShopStruct
@@ -28,8 +29,6 @@ extern struct MenuAction gUnknown_083CC6D0[];
extern u8 gUnknown_083CC6E8[];
extern u8 gUnknown_083CC6EB[];
-extern u8 gOtherText_CanIHelpYou[];
-extern u8 gOtherText_AnythingElse[];
extern u8 gBuyMenuFrame_Gfx[];
extern u16 gBuyMenuFrame_Tilemap[];
@@ -38,7 +37,7 @@ extern u16 gUnknown_083CC710[2];
extern void sub_80A6300(void);
extern void sub_80BE3BC(void);
-extern void DisplayItemMessageOnField(u8, u8*, TaskFunc, u16);
+extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16);
extern u8 sub_807D770(void);
extern void pal_fill_black(void);
extern void sub_80B3764(int, int);
@@ -342,17 +341,17 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4)
switch(tempVar4)
{
- case 0: // _080B335C
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3);
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
- break;
- case 1: // _080B3364
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
- break;
- case 2: // _080B3398
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
- break;
+ case 0: // _080B335C
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
+ break;
+ case 1: // _080B3364
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
+ break;
+ case 2: // _080B3398
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
+ break;
}
}
diff --git a/src/smokescreen.c b/src/smokescreen.c
index 1d3a14a5b..0406c1cb3 100644
--- a/src/smokescreen.c
+++ b/src/smokescreen.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "data2.h"
#include "decompress.h"
#include "sprite.h"
@@ -6,9 +7,6 @@ extern u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
static void sub_8046388(struct Sprite *);
-extern struct SpriteSheet gUnknown_081FAEA4;
-extern struct SpritePalette gUnknown_081FAEAC;
-extern const struct SpriteTemplate gSpriteTemplate_81FAF0C;
u8 sub_8046234(s16 x, s16 y, u8 a3)
{
diff --git a/src/start_menu.c b/src/start_menu.c
index 37d361c0b..a3258bab1 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -21,6 +21,8 @@
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
+#include "strings2.h"
#include "task.h"
#include "trainer_card.h"
@@ -54,24 +56,11 @@ EWRAM_DATA static u8 sNumStartMenuActions = 0;
EWRAM_DATA static u8 sCurrentStartMenuActions[10] = {0};
//Text strings
-extern u8 gSystemText_Saving[];
extern u8 gSaveText_PlayerSavedTheGame[];
extern u8 gSaveText_DontTurnOff[];
-extern u8 gSystemText_SaveErrorExchangeBackup[];
extern u8 gSaveText_ThereIsAlreadyAFile[];
extern u8 gSaveText_ThereIsADifferentFile[];
extern u8 gSaveText_WouldYouLikeToSave[];
-extern u8 gOtherText_SafariStock[];
-extern u8 SystemText_Pokedex[];
-extern u8 SystemText_Pokemon[];
-extern u8 SystemText_BAG[];
-extern u8 SystemText_Pokenav[];
-extern u8 SystemText_Player[];
-extern u8 SystemText_Save[];
-extern u8 SystemText_Option[];
-extern u8 SystemText_Exit[];
-extern u8 SystemText_Retire[];
-extern u8 SystemText_Player[];
static u8 StartMenu_PokedexCallback(void);
static u8 StartMenu_PokemonCallback(void);
@@ -113,7 +102,7 @@ static u8 SaveCallback1(void);
static u8 SaveCallback2(void);
static void sub_807160C(void);
static u8 RunSaveDialogCallback(void);
-static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void));
+static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void));
static void Task_SaveDialog(u8 taskId);
static void sub_8071700(void);
static void HideSaveDialog(void);
@@ -227,30 +216,30 @@ static bool32 InitStartMenuMultistep(s16 *step, s16 *index)
{
switch (*step)
{
- case 1:
- BuildStartMenuActions();
+ case 1:
+ BuildStartMenuActions();
+ (*step)++;
+ break;
+ case 2:
+ MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3);
+ *index = 0;
+ (*step)++;
+ break;
+ case 3:
+ if (GetSafariZoneFlag())
+ DisplaySafariBallsWindow();
+ (*step)++;
+ break;
+ case 4:
+ if (PrintStartMenuItemsMultistep(index, 2))
(*step)++;
- break;
- case 2:
- MenuDrawTextWindow(22, 0, 29, sNumStartMenuActions * 2 + 3);
- *index = 0;
- (*step)++;
- break;
- case 3:
- if (GetSafariZoneFlag())
- DisplaySafariBallsWindow();
- (*step)++;
- break;
- case 4:
- if (PrintStartMenuItemsMultistep(index, 2))
- (*step)++;
- break;
- case 0:
- (*step)++;
- break;
- case 5:
- sStartMenuCursorPos = InitMenu(0, 0x17, 2, sNumStartMenuActions, sStartMenuCursorPos, 6);
- return TRUE;
+ break;
+ case 0:
+ (*step)++;
+ break;
+ case 5:
+ sStartMenuCursorPos = InitMenu(0, 0x17, 2, sNumStartMenuActions, sStartMenuCursorPos, 6);
+ return TRUE;
}
return FALSE;
}
@@ -288,14 +277,14 @@ void sub_80712B4(u8 taskId)
switch (task->data[0])
{
- case 0:
- gCallback_03004AE8 = StartMenu_InputProcessCallback;
- task->data[0]++;
- break;
- case 1:
- if (gCallback_03004AE8() == 1)
- DestroyTask(taskId);
- break;
+ case 0:
+ gCallback_03004AE8 = StartMenu_InputProcessCallback;
+ task->data[0]++;
+ break;
+ case 1:
+ if (gCallback_03004AE8() == 1)
+ DestroyTask(taskId);
+ break;
}
}
@@ -475,20 +464,20 @@ static u8 SaveCallback2(void)
{
switch (RunSaveDialogCallback())
{
- case SAVE_IN_PROGRESS:
- return FALSE;
- case SAVE_CANCELED:
- //Go back to start menu
- MenuZeroFillScreen();
- InitStartMenu();
- gCallback_03004AE8 = StartMenu_InputProcessCallback;
- return FALSE;
- case SAVE_SUCCESS:
- case SAVE_ERROR:
- MenuZeroFillScreen();
- sub_8064E2C();
- ScriptContext2_Disable();
- return TRUE;
+ case SAVE_IN_PROGRESS:
+ return FALSE;
+ case SAVE_CANCELED:
+ //Go back to start menu
+ MenuZeroFillScreen();
+ InitStartMenu();
+ gCallback_03004AE8 = StartMenu_InputProcessCallback;
+ return FALSE;
+ case SAVE_SUCCESS:
+ case SAVE_ERROR:
+ MenuZeroFillScreen();
+ sub_8064E2C();
+ ScriptContext2_Disable();
+ return TRUE;
}
return FALSE;
}
@@ -517,7 +506,7 @@ void InitSaveDialog(void)
CreateTask(Task_SaveDialog, 0x50);
}
-static void DisplaySaveMessageWithCallback(u8 *ptr, u8 (*func)(void))
+static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void))
{
StringExpandPlaceholders(gStringVar4, ptr);
MenuDisplayMessageBox();
@@ -532,15 +521,15 @@ static void Task_SaveDialog(u8 taskId)
switch (status)
{
- case SAVE_CANCELED:
- case SAVE_ERROR:
- gScriptResult = 0;
- break;
- case SAVE_SUCCESS:
- gScriptResult = status;
- break;
- case SAVE_IN_PROGRESS:
- return;
+ case SAVE_CANCELED:
+ case SAVE_ERROR:
+ gScriptResult = 0;
+ break;
+ case SAVE_SUCCESS:
+ gScriptResult = status;
+ break;
+ case SAVE_IN_PROGRESS:
+ return;
}
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -602,29 +591,29 @@ static u8 SaveDialogCB_ProcessConfirmYesNoMenu(void)
{
switch (ProcessMenuInputNoWrap_())
{
- case 0: //YES
- HideSaveDialog();
- switch (gSaveFileStatus)
+ case 0: //YES
+ HideSaveDialog();
+ switch (gSaveFileStatus)
+ {
+ case 0:
+ case 2:
+ if (gDifferentSaveFile == FALSE)
{
- case 0:
- case 2:
- if (gDifferentSaveFile == FALSE)
- {
- saveDialogCallback = SaveDialogCB_SaveFileExists;
- return SAVE_IN_PROGRESS;
- }
- saveDialogCallback = SaveDialogCB_DisplaySavingMessage;
- return SAVE_IN_PROGRESS;
- default:
- saveDialogCallback = SaveDialogCB_SaveFileExists;
- return SAVE_IN_PROGRESS;
+ saveDialogCallback = SaveDialogCB_SaveFileExists;
+ return SAVE_IN_PROGRESS;
}
- break;
- case -1: //B button
- case 1: //NO
- HideSaveDialog();
- sub_8071700();
- return SAVE_CANCELED;
+ saveDialogCallback = SaveDialogCB_DisplaySavingMessage;
+ return SAVE_IN_PROGRESS;
+ default:
+ saveDialogCallback = SaveDialogCB_SaveFileExists;
+ return SAVE_IN_PROGRESS;
+ }
+ break;
+ case -1: //B button
+ case 1: //NO
+ HideSaveDialog();
+ sub_8071700();
+ return SAVE_CANCELED;
}
return SAVE_IN_PROGRESS;
}
@@ -648,15 +637,15 @@ static u8 SaveDialogCB_ProcessOverwriteYesNoMenu(void)
{
switch (ProcessMenuInputNoWrap_())
{
- case 0: //YES
- HideSaveDialog();
- saveDialogCallback = SaveDialogCB_DisplaySavingMessage;
- break;
- case -1: //B button
- case 1: //NO
- HideSaveDialog();
- sub_8071700();
- return SAVE_CANCELED;
+ case 0: //YES
+ HideSaveDialog();
+ saveDialogCallback = SaveDialogCB_DisplaySavingMessage;
+ break;
+ case -1: //B button
+ case 1: //NO
+ HideSaveDialog();
+ sub_8071700();
+ return SAVE_CANCELED;
}
return SAVE_IN_PROGRESS;
}
@@ -749,55 +738,55 @@ static bool32 sub_80719FC(u8 *step)
{
switch (*step)
{
- case 0:
+ case 0:
+ {
+ u8 *addr;
+ u32 size;
+
+ REG_DISPCNT = 0;
+ SetVBlankCallback(NULL);
+ remove_some_task();
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ addr = (void *)VRAM;
+ size = 0x18000;
+ while (1)
{
- u8 *addr;
- u32 size;
-
- REG_DISPCNT = 0;
- SetVBlankCallback(NULL);
- remove_some_task();
- DmaClear16(3, PLTT, PLTT_SIZE);
- addr = (void *)VRAM;
- size = 0x18000;
- while (1)
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
{
- DmaFill16(3, 0, addr, 0x1000);
- addr += 0x1000;
- size -= 0x1000;
- if (size <= 0x1000)
- {
- DmaFill16(3, 0, addr, size);
- break;
- }
+ DmaFill16(3, 0, addr, size);
+ break;
}
- break;
}
- case 1:
- ResetSpriteData();
- ResetTasks();
- ResetPaletteFade();
- dp12_8087EA4();
- break;
- case 2:
- SetUpWindowConfig(&gWindowConfig_81E6CE4);
- InitMenuWindow(&gWindowConfig_81E6CE4);
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON;
- break;
- case 3:
- {
- u32 savedIme;
-
- BlendPalettes(-1, 0x10, 0);
- SetVBlankCallback(sub_80719F0);
- savedIme = REG_IME;
- REG_IME = 0;
- REG_IE |= 1;
- REG_IME = savedIme;
- break;
- }
- case 4:
- return TRUE;
+ break;
+ }
+ case 1:
+ ResetSpriteData();
+ ResetTasks();
+ ResetPaletteFade();
+ dp12_8087EA4();
+ break;
+ case 2:
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON;
+ break;
+ case 3:
+ {
+ u32 savedIme;
+
+ BlendPalettes(-1, 0x10, 0);
+ SetVBlankCallback(sub_80719F0);
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = savedIme;
+ break;
+ }
+ case 4:
+ return TRUE;
}
(*step)++;
return FALSE;
@@ -826,31 +815,31 @@ static void Task_8071B64(u8 taskId)
{
switch (*step)
{
- case 0:
- MenuDisplayMessageBox();
- MenuPrint(gSystemText_Saving, 2, 15);
- BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
- (*step)++;
- break;
- case 1:
- SetSecretBase2Field_9_AndHideBG();
- sub_8125E2C();
- (*step)++;
- break;
- case 2:
- if (!sub_8125E6C())
- break;
- ClearSecretBase2Field_9_2();
- (*step)++;
- break;
- case 3:
- BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
- (*step)++;
- break;
- case 4:
- SetMainCallback2(gMain.savedCallback);
- DestroyTask(taskId);
+ case 0:
+ MenuDisplayMessageBox();
+ MenuPrint(gSystemText_Saving, 2, 15);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ (*step)++;
+ break;
+ case 1:
+ SetSecretBase2Field_9_AndHideBG();
+ sub_8125E2C();
+ (*step)++;
+ break;
+ case 2:
+ if (!sub_8125E6C())
break;
+ ClearSecretBase2Field_9_2();
+ (*step)++;
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ (*step)++;
+ break;
+ case 4:
+ SetMainCallback2(gMain.savedCallback);
+ DestroyTask(taskId);
+ break;
}
}
}
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 6ef410d21..32b6adf36 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "starter_choose.h"
#include "asm.h"
+#include "data2.h"
#include "decompress.h"
#include "main.h"
#include "menu.h"
@@ -11,23 +12,11 @@
#include "species.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings.h"
#include "task.h"
#include "trig.h"
-struct MonCoords
-{
- u8 x, y;
-};
-
-extern void * const gUnknown_081FAF4C[];
-extern const u8 gOtherText_DoYouChoosePoke[];
extern u16 gScriptResult;
-extern const u8 gSpeciesNames[][11];
-extern const u8 gOtherText_Poke[];
-extern const struct SpriteSheet gMonFrontPicTable[];
-extern const struct MonCoords gMonFrontPicCoords[];
-extern const struct SpritePalette gMonPaletteTable[];
-extern const u8 gOtherText_BirchInTrouble[];
extern struct SpriteTemplate gUnknown_02024E8C;
//--------------------------------------------------
@@ -448,26 +437,26 @@ static void Task_StarterChoose5(u8 taskId)
switch (ProcessMenuInputNoWrap_())
{
- case 0: // YES
- //Return the starter choice and exit.
- gScriptResult = gTasks[taskId].tStarterSelection;
- SetMainCallback2(gMain.savedCallback);
- break;
- case 1: // NO
- case -1: // B button
- PlaySE(SE_SELECT);
- MenuZeroFillWindowRect(21, 7, 27, 12);
-
- spriteId = gTasks[taskId].tPkmnSpriteId;
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
- FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
- DestroySprite(&gSprites[spriteId]);
-
- spriteId = gTasks[taskId].tCircleSpriteId;
- FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
- DestroySprite(&gSprites[spriteId]);
- gTasks[taskId].func = Task_StarterChoose6;
- break;
+ case 0: // YES
+ //Return the starter choice and exit.
+ gScriptResult = gTasks[taskId].tStarterSelection;
+ SetMainCallback2(gMain.savedCallback);
+ break;
+ case 1: // NO
+ case -1: // B button
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(21, 7, 27, 12);
+
+ spriteId = gTasks[taskId].tPkmnSpriteId;
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteId].oam.paletteNum));
+ FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
+ DestroySprite(&gSprites[spriteId]);
+
+ spriteId = gTasks[taskId].tCircleSpriteId;
+ FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
+ DestroySprite(&gSprites[spriteId]);
+ gTasks[taskId].func = Task_StarterChoose6;
+ break;
}
}
@@ -567,7 +556,7 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
DecompressPicFromTable_2(
&gMonFrontPicTable[species],
- gMonFrontPicCoords[species].x, gMonFrontPicCoords[species].y,
+ gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,
gUnknown_081FAF4C[0], gUnknown_081FAF4C[1],
species);
LoadCompressedObjectPalette(&gMonPaletteTable[species]);
diff --git a/src/string_util.c b/src/string_util.c
index 957d70153..9686256a1 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "string_util.h"
+#include "strings.h"
#include "text.h"
u8 gUnknownStringVar[16];
@@ -23,20 +24,6 @@ static const s32 sPowersOfTen[] =
1000000000,
};
-extern u8 gExpandedPlaceholder_Empty[];
-extern u8 gExpandedPlaceholder_Kun[];
-extern u8 gExpandedPlaceholder_Chan[];
-extern u8 gExpandedPlaceholder_Sapphire[];
-extern u8 gExpandedPlaceholder_Ruby[];
-extern u8 gExpandedPlaceholder_Aqua[];
-extern u8 gExpandedPlaceholder_Magma[];
-extern u8 gExpandedPlaceholder_Archie[];
-extern u8 gExpandedPlaceholder_Maxie[];
-extern u8 gExpandedPlaceholder_Kyogre[];
-extern u8 gExpandedPlaceholder_Groudon[];
-extern u8 gExpandedPlaceholder_Brendan[];
-extern u8 gExpandedPlaceholder_May[];
-
u8 *StringCopy10(u8 *dest, const u8 *src)
{
u8 i;
@@ -473,17 +460,17 @@ static u8 *ExpandPlaceholder_StringVar3(void)
static u8 *ExpandPlaceholder_KunChan(void)
{
if (gSaveBlock2.playerGender == MALE)
- return gExpandedPlaceholder_Kun;
+ return (u8 *) gExpandedPlaceholder_Kun;
else
- return gExpandedPlaceholder_Chan;
+ return (u8 *) gExpandedPlaceholder_Chan;
}
static u8 *ExpandPlaceholder_RivalName(void)
{
if (gSaveBlock2.playerGender == MALE)
- return gExpandedPlaceholder_May;
+ return (u8 *) gExpandedPlaceholder_May;
else
- return gExpandedPlaceholder_Brendan;
+ return (u8 *) gExpandedPlaceholder_Brendan;
}
#define VERSION_DEPENDENT_PLACEHOLDER_LIST \
@@ -497,11 +484,11 @@ static u8 *ExpandPlaceholder_RivalName(void)
#ifdef SAPPHIRE
#define X(ph, r, s) \
-static u8 *ExpandPlaceholder_##ph(void) { return gExpandedPlaceholder_##s; }
+static u8 *ExpandPlaceholder_##ph(void) { return (u8 *) gExpandedPlaceholder_##s; }
VERSION_DEPENDENT_PLACEHOLDER_LIST
#else
#define X(ph, r, s) \
-static u8 *ExpandPlaceholder_##ph(void) { return gExpandedPlaceholder_##r; }
+static u8 *ExpandPlaceholder_##ph(void) { return (u8 *) gExpandedPlaceholder_##r; }
VERSION_DEPENDENT_PLACEHOLDER_LIST
#endif
@@ -530,7 +517,7 @@ u8 *GetExpandedPlaceholder(u32 id)
};
if (id >= ARRAY_COUNT(funcs))
- return gExpandedPlaceholder_Empty;
+ return (u8 *) gExpandedPlaceholder_Empty;
else
return funcs[id]();
}
diff --git a/src/text.c b/src/text.c
index 7be72833a..02cafea48 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1755,21 +1755,21 @@ u16 InitWindowTileData(struct Window *win, u16 startOffset)
case 1:
switch (win->config->fontNum)
{
- case 0:
- case 3:
- retVal = LoadFixedWidthFont(win, startOffset);
- break;
- case 1:
- case 2:
- retVal = LoadFixedWidthFont_Font1Latin(win, startOffset);
- break;
- case 4:
- case 5:
- retVal = LoadFixedWidthFont_Font4Latin(win, startOffset);
- break;
- case 6:
- retVal = LoadFixedWidthFont_Braille(win, startOffset);
- break;
+ case 0:
+ case 3:
+ retVal = LoadFixedWidthFont(win, startOffset);
+ break;
+ case 1:
+ case 2:
+ retVal = LoadFixedWidthFont_Font1Latin(win, startOffset);
+ break;
+ case 4:
+ case 5:
+ retVal = LoadFixedWidthFont_Font4Latin(win, startOffset);
+ break;
+ case 6:
+ retVal = LoadFixedWidthFont_Braille(win, startOffset);
+ break;
}
break;
}
@@ -1888,30 +1888,30 @@ static void MultistepLoadFont_LoadGlyph(struct Window *win, u16 startOffset, u8
switch (win->config->fontNum)
{
- case 0:
- case 3:
- buffer = win->tileData + 32 * startOffset + 64 * glyph;
- LoadFixedWidthGlyph(win, glyph, buffer);
- break;
- case 1:
- case 2:
- buffer = win->tileData + 32 * (glyph + startOffset);
- ApplyColors_UnshadowedFont(
- &sFont1LatinGlyphs[8 * glyph],
- (u32 *)buffer,
- win->foregroundColor,
- win->backgroundColor);
- break;
- case 4:
- case 5:
- buffer = win->tileData + 32 * (glyph + startOffset);
- ApplyColors_ShadowedFont(
- &gFont4LatinGlyphs[8 * glyph],
- buffer,
- win->foregroundColor,
- win->shadowColor,
- win->backgroundColor);
- break;
+ case 0:
+ case 3:
+ buffer = win->tileData + 32 * startOffset + 64 * glyph;
+ LoadFixedWidthGlyph(win, glyph, buffer);
+ break;
+ case 1:
+ case 2:
+ buffer = win->tileData + 32 * (glyph + startOffset);
+ ApplyColors_UnshadowedFont(
+ &sFont1LatinGlyphs[8 * glyph],
+ (u32 *)buffer,
+ win->foregroundColor,
+ win->backgroundColor);
+ break;
+ case 4:
+ case 5:
+ buffer = win->tileData + 32 * (glyph + startOffset);
+ ApplyColors_ShadowedFont(
+ &gFont4LatinGlyphs[8 * glyph],
+ buffer,
+ win->foregroundColor,
+ win->shadowColor,
+ win->backgroundColor);
+ break;
}
}
diff --git a/src/trainer_card.c b/src/trainer_card.c
index e6ed79c15..ef3a2d857 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -14,6 +14,7 @@
#include "sound.h"
#include "sprite.h"
#include "string_util.h"
+#include "strings2.h"
#include "task.h"
typedef void (*Callback)(void);
@@ -64,16 +65,6 @@ extern u16 gUnknown_083B5F4C[];
extern u16 gUnknown_08E8CFC0[];
extern u16 gUnknown_08E8D9C0[];
-extern u8 gOtherText_TrainersTrainerCard[];
-extern u8 gOtherText_FirstHOF[];
-extern u8 gOtherText_LinkCableBattles[];
-extern u8 gOtherText_BattleTowerWinRecord[];
-extern u8 gOtherText_ContestRecord[];
-extern u8 gOtherText_MixingRecord[];
-extern u8 gOtherText_TradeRecord[];
-extern u8 gOtherText_Boy[];
-extern u8 gOtherText_Girl[];
-
extern bool8 (*const gUnknown_083B5EBC[])(struct Task *);
extern bool8 (*const gUnknown_083B5ED8[])(struct Task *);
@@ -1831,7 +1822,7 @@ static void TrainerCard_Back_PrintPokemonTrades(void)
void unref_sub_8094588(u16 left, u16 top)
{
- u8 *text = gOtherText_Boy;
+ const u8 *text = gOtherText_Boy;
if (gSaveBlock2.playerGender == FEMALE)
{
diff --git a/src/trig.c b/src/trig.c
index 8b75b3838..d64231087 100644
--- a/src/trig.c
+++ b/src/trig.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "trig.h"
-extern s16 gSineTable[];
extern s16 gSineDegreeTable[];
// amplitude * sin(index*(π/128))
diff --git a/src/tv.c b/src/tv.c
index ea1f13047..d2e38c088 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "asm.h"
#include "tv.h"
+#include "data2.h"
#include "event_data.h"
#include "field_message_box.h"
#include "flags.h"
@@ -69,9 +70,6 @@ extern u8 gUnknown_020387E8;
extern struct UnkTvStruct gUnknown_03005D38;
-extern u8 gSpeciesNames[][11];
-extern u8 gMoveNames[][13];
-
extern u8 *gTVBravoTrainerTextGroup[];
extern u8 *gTVBravoTrainerBattleTowerTextGroup[];
extern u8 *gTVSmartShopperTextGroup[];
@@ -157,61 +155,61 @@ extern u8 GabbyAndTyGetBattleNum(void);
void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void) {
switch (GabbyAndTyGetBattleNum()) {
- case 1:
- gSpecialVar_0x8004 = 0xE;
- gSpecialVar_0x8005 = 0xD;
- break;
- case 2:
- gSpecialVar_0x8004 = 0x5;
- gSpecialVar_0x8005 = 0x6;
- break;
- case 3:
- gSpecialVar_0x8004 = 0x12;
- gSpecialVar_0x8005 = 0x11;
- break;
- case 4:
- gSpecialVar_0x8004 = 0x15;
- gSpecialVar_0x8005 = 0x16;
- break;
- case 5:
- gSpecialVar_0x8004 = 0x8;
- gSpecialVar_0x8005 = 0x9;
- break;
- case 6:
- gSpecialVar_0x8004 = 0x13;
- gSpecialVar_0x8005 = 0x14;
- break;
- case 7:
- gSpecialVar_0x8004 = 0x17;
- gSpecialVar_0x8005 = 0x18;
- break;
- case 8:
- gSpecialVar_0x8004 = 0xA;
- gSpecialVar_0x8005 = 0xB;
- break;
+ case 1:
+ gSpecialVar_0x8004 = 0xE;
+ gSpecialVar_0x8005 = 0xD;
+ break;
+ case 2:
+ gSpecialVar_0x8004 = 0x5;
+ gSpecialVar_0x8005 = 0x6;
+ break;
+ case 3:
+ gSpecialVar_0x8004 = 0x12;
+ gSpecialVar_0x8005 = 0x11;
+ break;
+ case 4:
+ gSpecialVar_0x8004 = 0x15;
+ gSpecialVar_0x8005 = 0x16;
+ break;
+ case 5:
+ gSpecialVar_0x8004 = 0x8;
+ gSpecialVar_0x8005 = 0x9;
+ break;
+ case 6:
+ gSpecialVar_0x8004 = 0x13;
+ gSpecialVar_0x8005 = 0x14;
+ break;
+ case 7:
+ gSpecialVar_0x8004 = 0x17;
+ gSpecialVar_0x8005 = 0x18;
+ break;
+ case 8:
+ gSpecialVar_0x8004 = 0xA;
+ gSpecialVar_0x8005 = 0xB;
+ break;
}
}
void sub_80BDE48(void) {
switch (gSpecialVar_0x8005) {
- case TVSHOW_FAN_CLUB_LETTER:
- sub_80BE5FC();
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- sub_80BE65C();
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- sub_80BE6A0();
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- nullsub_21();
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- sub_80BE188();
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- sub_80BE320();
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80BE5FC();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ sub_80BE65C();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80BE6A0();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ nullsub_21();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80BE188();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80BE320();
+ break;
}
}
@@ -1025,28 +1023,28 @@ bool8 IsPriceDiscounted(u8 arg0)
{
switch (arg0)
{
- case 1:
- if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a)
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
- break;
- case 3:
- if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
- {
- return TRUE;
- }
- else
- {
- return FALSE;
- }
- break;
- default:
+ case 1:
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1.location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 0x1a)
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ break;
+ case 3:
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1.location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
+ {
return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ break;
+ default:
+ return TRUE;
}
}
@@ -1098,18 +1096,18 @@ void sub_80BEF10(u8 strvaridx, u8 rank)
{
switch (rank)
{
- case NORMAL_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]);
- break;
- case SUPER_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]);
- break;
- case HYPER_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]);
- break;
- case MASTER_RANK:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]);
- break;
+ case NORMAL_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[NORMAL_RANK + 5]);
+ break;
+ case SUPER_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[SUPER_RANK + 5]);
+ break;
+ case HYPER_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[HYPER_RANK + 5]);
+ break;
+ case MASTER_RANK:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[MASTER_RANK + 5]);
+ break;
}
}
@@ -1117,21 +1115,21 @@ void CopyContestCategoryToStringVar(u8 strvaridx, u8 category)
{
switch (category)
{
- case CONTEST_COOL:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]);
- break;
- case CONTEST_BEAUTY:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]);
- break;
- case CONTEST_CUTE:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]);
- break;
- case CONTEST_SMART:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]);
- break;
- case CONTEST_TOUGH:
- StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]);
- break;
+ case CONTEST_COOL:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_COOL]);
+ break;
+ case CONTEST_BEAUTY:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_BEAUTY]);
+ break;
+ case CONTEST_CUTE:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_CUTE]);
+ break;
+ case CONTEST_SMART:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_SMART]);
+ break;
+ case CONTEST_TOUGH:
+ StringCopy(gUnknown_083D1464[strvaridx], gUnknown_083CE048[CONTEST_TOUGH]);
+ break;
}
}
@@ -1260,27 +1258,27 @@ void sub_80BF2C4(void)
{
gScriptResult = 0;
switch (gSpecialVar_0x8005) {
- case TVSHOW_FAN_CLUB_LETTER:
- sub_80BF334();
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- sub_80BF3A4();
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- sub_80BF3DC();
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- sub_80BF46C();
- break;
- case TVSHOW_NAME_RATER_SHOW:
- sub_80BF478();
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- sub_80BF484();
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- sub_80BF4BC();
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80BF334();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ sub_80BF3A4();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80BF3DC();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ sub_80BF46C();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ sub_80BF478();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80BF484();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80BF4BC();
+ break;
}
}
@@ -1827,18 +1825,18 @@ void sub_80BFD44(u8 *arg0, u32 arg1, u8 arg2)
}
ewramTVShows = &gUnknown_02007000;
switch (arg2) {
- case 0:
- sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]);
- break;
- case 1:
- sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]);
- break;
- case 2:
- sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]);
- break;
- case 3:
- sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows);
- break;
+ case 0:
+ sub_80BFE24(&gSaveBlock1.tvShows, &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]);
+ break;
+ case 1:
+ sub_80BFE24(&ewramTVShows->tvshows[0], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[2], &ewramTVShows->tvshows[3]);
+ break;
+ case 2:
+ sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &gSaveBlock1.tvShows, &ewramTVShows->tvshows[3]);
+ break;
+ case 3:
+ sub_80BFE24(&ewramTVShows->tvshows[0], &ewramTVShows->tvshows[1], &ewramTVShows->tvshows[2], &gSaveBlock1.tvShows);
+ break;
}
sub_80BF588(gSaveBlock1.tvShows.shows);
sub_80C04A0();
@@ -1899,15 +1897,15 @@ bool8 sub_80BFF68(struct SaveTVStruct ** arg1, struct SaveTVStruct ** arg2, u8 i
value = FALSE;
switchval = sub_80BFB54(tv2->shows[gUnknown_03000722].common.var00);
switch (switchval) {
- case 2:
- value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
- break;
- case 3:
- value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
- break;
- case 4:
- value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
- break;
+ case 2:
+ value = sub_80C004C(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
+ break;
+ case 3:
+ value = sub_80C00B4(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
+ break;
+ case 4:
+ value = sub_80C0134(&tv1->shows[gUnknown_03005D38.var0], &tv2->shows[gUnknown_03000722], idx);
+ break;
}
if (value == TRUE) {
sub_80BF55C(tv2->shows, gUnknown_03000722);
@@ -2102,50 +2100,50 @@ void sub_80C01D4(void) {
u8 i;
for (i=0; i<24; i++) {
switch (gSaveBlock1.tvShows.shows[i].common.var00) {
- case 0:
- break;
- case TVSHOW_FAN_CLUB_LETTER:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i);
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i);
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i);
- break;
- case TVSHOW_NAME_RATER_SHOW:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i);
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i);
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i);
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i);
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i);
- break;
- case TVSHOW_POKEMON_TODAY_CAUGHT:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i);
- break;
- case TVSHOW_SMART_SHOPPER:
- break;
- case TVSHOW_POKEMON_TODAY_FAILED:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i);
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i);
- break;
- case TVSHOW_FISHING_ADVICE:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i);
- break;
- case TVSHOW_WORLD_OF_MASTERS:
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i);
- sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i);
- break;
- case TVSHOW_MASS_OUTBREAK:
- break;
- default:
- sub_80C03A8(i);
+ case 0:
+ break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubLetter.species, i);
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].fanclubOpinions.var02, i);
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var06, i);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.species, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].nameRaterShow.var1C, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainer.species, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var0a, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].bravoTrainerTower.var14, i);
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonToday.species, i);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonTodayFailed.species2, i);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].pokemonAngler.var04, i);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var08, i);
+ sub_80C03C8(gSaveBlock1.tvShows.shows[i].worldOfMasters.var04, i);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ break;
+ default:
+ sub_80C03A8(i);
}
}
}
@@ -2508,45 +2506,45 @@ void sub_80C0788(void) {
void DoTVShow(void) {
if (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var01 != 0) {
switch (gSaveBlock1.tvShows.shows[gSpecialVar_0x8004].common.var00) {
- case TVSHOW_FAN_CLUB_LETTER:
- DoTVShowPokemonFanClubLetter();
- break;
- case TVSHOW_RECENT_HAPPENINGS:
- DoTVShowRecentHappenings();
- break;
- case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
- DoTVShowPokemonFanClubOpinions();
- break;
- case TVSHOW_UNKN_SHOWTYPE_04:
- nullsub_22();
- break;
- case TVSHOW_MASS_OUTBREAK:
- DoTVShowPokemonNewsMassOutbreak();
- break;
- case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
- DoTVShowBravoTrainerPokemonProfile();
- break;
- case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
- DoTVShowBravoTrainerBattleTowerProfile();
- break;
- case TVSHOW_POKEMON_TODAY_CAUGHT:
- DoTVShowPokemonTodaySuccessfulCapture();
- break;
- case TVSHOW_SMART_SHOPPER:
- DoTVShowTodaysSmartShopper();
- break;
- case TVSHOW_NAME_RATER_SHOW:
- DoTVShowTheNameRaterShow();
- break;
- case TVSHOW_POKEMON_TODAY_FAILED:
- DoTVShowPokemonTodayFailedCapture();
- break;
- case TVSHOW_FISHING_ADVICE:
- DoTVShowPokemonAngler();
- break;
- case TVSHOW_WORLD_OF_MASTERS:
- DoTVShowTheWorldOfMasters();
- break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ DoTVShowPokemonFanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ DoTVShowRecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ DoTVShowPokemonFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ nullsub_22();
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ DoTVShowPokemonNewsMassOutbreak();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ DoTVShowBravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ DoTVShowBravoTrainerBattleTowerProfile();
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ DoTVShowPokemonTodaySuccessfulCapture();
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ DoTVShowTodaysSmartShopper();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ DoTVShowTheNameRaterShow();
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ DoTVShowPokemonTodayFailedCapture();
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ DoTVShowPokemonAngler();
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ DoTVShowTheWorldOfMasters();
+ break;
}
}
}
@@ -2571,91 +2569,91 @@ void DoTVShowTheNameRaterShow(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
- gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1;
- break;
- case 1:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- if (tvShow->nameRaterShow.random == 0) {
- gUnknown_020387E8 = 9;
- } else if (tvShow->nameRaterShow.random == 1) {
- gUnknown_020387E8 = 10;
- } else if (tvShow->nameRaterShow.random == 2) {
- gUnknown_020387E8 = 11;
- }
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
- if (tvShow->nameRaterShow.random == 0) {
- gUnknown_020387E8 = 9;
- } else if (tvShow->nameRaterShow.random == 1) {
- gUnknown_020387E8 = 10;
- } else if (tvShow->nameRaterShow.random == 2) {
- gUnknown_020387E8 = 11;
- }
- break;
- case 9:
- case 10:
- case 11:
- sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
- gUnknown_020387E8 = 12;
- break;
- case 13:
- sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language);
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
- gUnknown_020387E8 = 14;
- break;
- case 14:
- sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language);
- sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
- gUnknown_020387E8 = 18;
- break;
- case 15:
- sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
- sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
- gUnknown_020387E8 = 16;
- break;
- case 16:
- sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
- gUnknown_020387E8 = 17;
- break;
- case 17:
- sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
- TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
- sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]);
- gUnknown_020387E8 = 18;
- break;
- case 12:
- switchval = 18;
- gUnknown_020387E8 = 18;
- case 18:
- TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
- TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
+ gUnknown_020387E8 = sub_80BF7E8(&tvShow->nameRaterShow) + 1;
+ break;
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ if (tvShow->nameRaterShow.random == 0) {
+ gUnknown_020387E8 = 9;
+ } else if (tvShow->nameRaterShow.random == 1) {
+ gUnknown_020387E8 = 10;
+ } else if (tvShow->nameRaterShow.random == 2) {
+ gUnknown_020387E8 = 11;
+ }
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ if (tvShow->nameRaterShow.random == 0) {
+ gUnknown_020387E8 = 9;
+ } else if (tvShow->nameRaterShow.random == 1) {
+ gUnknown_020387E8 = 10;
+ } else if (tvShow->nameRaterShow.random == 2) {
+ gUnknown_020387E8 = 11;
+ }
+ break;
+ case 9:
+ case 10:
+ case 11:
+ sub_80BF820(0, 1, 0, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(0, 0, 0, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
+ gUnknown_020387E8 = 12;
+ break;
+ case 13:
+ sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(0, 0, 2, 0, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.language);
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ gUnknown_020387E8 = 14;
+ break;
+ case 14:
+ sub_80BF820(0, 0, 3, 0, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.language);
+ sub_80BF820(0, 0, 2, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar2, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ gUnknown_020387E8 = 18;
+ break;
+ case 15:
+ sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.species]);
+ sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
+ gUnknown_020387E8 = 16;
+ break;
+ case 16:
+ sub_80BF820(0, 0, 3, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar3, gStringVar1, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(0, 0, 2, 2, tvShow->nameRaterShow.species, &tvShow->nameRaterShow);
+ gUnknown_020387E8 = 17;
+ break;
+ case 17:
+ sub_80BF820(1, 0, 2, 1, 0, &tvShow->nameRaterShow);
+ TVShowConvertInternationalString(gStringVar1, gStringVar2, tvShow->nameRaterShow.pokemonNameLanguage);
+ sub_80BF820(2, 0, 3, 2, tvShow->nameRaterShow.var1C, &tvShow->nameRaterShow);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->nameRaterShow.var1C]);
+ gUnknown_020387E8 = 18;
+ break;
+ case 12:
+ switchval = 18;
+ gUnknown_020387E8 = 18;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, tvShow->nameRaterShow.pokemonName, tvShow->nameRaterShow.pokemonNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, tvShow->nameRaterShow.trainerName, tvShow->nameRaterShow.language);
+ TVShowDone();
+ break;
}
ShowFieldMessage(gTVNameRaterTextGroup[switchval]);
}
@@ -2667,64 +2665,64 @@ void DoTVShowPokemonTodaySuccessfulCapture(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
- if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) {
- gUnknown_020387E8 = 5;
- } else {
- gUnknown_020387E8 = 1;
- }
- break;
- case 1:
- gUnknown_020387E8 = 2;
- break;
- case 2:
- StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name);
- sub_80BF088(2, tvShow->pokemonToday.var12);
- if (tvShow->pokemonToday.var12 < 4) {
- gUnknown_020387E8 = 3;
- } else {
- gUnknown_020387E8 = 4;
- }
- break;
- case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
- gUnknown_020387E8 = 6;
- break;
- case 4:
- gUnknown_020387E8 = 6;
- break;
- case 5:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
- gUnknown_020387E8 = 6;
- break;
- case 6:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
- gUnknown_020387E8 += (Random() % 4) + 1;
- break;
- case 7:
- case 8:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
- sub_80BF638(2, tvShow->pokemonToday.species);
- gUnknown_020387E8 = 11;
- break;
- case 9:
- case 10:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
- TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
- gUnknown_020387E8 = 11;
- break;
- case 11:
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ if (tvShow->pokemonToday.ball == ITEM_MASTER_BALL) {
+ gUnknown_020387E8 = 5;
+ } else {
+ gUnknown_020387E8 = 1;
+ }
+ break;
+ case 1:
+ gUnknown_020387E8 = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar2, ItemId_GetItem(tvShow->pokemonToday.ball)->name);
+ sub_80BF088(2, tvShow->pokemonToday.var12);
+ if (tvShow->pokemonToday.var12 < 4) {
+ gUnknown_020387E8 = 3;
+ } else {
+ gUnknown_020387E8 = 4;
+ }
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ gUnknown_020387E8 = 6;
+ break;
+ case 4:
+ gUnknown_020387E8 = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ gUnknown_020387E8 = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonToday.playerName, tvShow->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ gUnknown_020387E8 += (Random() % 4) + 1;
+ break;
+ case 7:
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ sub_80BF638(2, tvShow->pokemonToday.species);
+ gUnknown_020387E8 = 11;
+ break;
+ case 9:
+ case 10:
+ StringCopy(gStringVar1, gSpeciesNames[tvShow->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, tvShow->pokemonToday.nickname, tvShow->pokemonToday.language2);
+ gUnknown_020387E8 = 11;
+ break;
+ case 11:
+ TVShowDone();
+ break;
}
ShowFieldMessage(gTVPokemonTodayTextGroup[switchval]);
}
@@ -2737,40 +2735,40 @@ void DoTVShowPokemonTodayFailedCapture(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]);
- gUnknown_020387E8 = 1;
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
- sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0);
- StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]);
- if (tvShow->pokemonTodayFailed.var11 == 1) {
- gUnknown_020387E8 = 3;
- } else {
- gUnknown_020387E8 = 2;
- }
- break;
- case 2:
- case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
- sub_80BF088(1, tvShow->pokemonTodayFailed.var10);
- rval = (Random() % 3);
- if (rval == 0) {
- gUnknown_020387E8 = 5;
- } else {
- gUnknown_020387E8 = 4;
- }
- break;
- case 4:
- case 5:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
- gUnknown_020387E8 = 6;
- break;
- case 6:
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonTodayFailed.species]);
+ gUnknown_020387E8 = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ sub_80FBFB4(gStringVar2, tvShow->pokemonTodayFailed.var12, 0);
+ StringCopy(gStringVar3, gSpeciesNames[tvShow->pokemonTodayFailed.species2]);
+ if (tvShow->pokemonTodayFailed.var11 == 1) {
+ gUnknown_020387E8 = 3;
+ } else {
+ gUnknown_020387E8 = 2;
+ }
+ break;
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ sub_80BF088(1, tvShow->pokemonTodayFailed.var10);
+ rval = (Random() % 3);
+ if (rval == 0) {
+ gUnknown_020387E8 = 5;
+ } else {
+ gUnknown_020387E8 = 4;
+ }
+ break;
+ case 4:
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonTodayFailed.playerName, tvShow->pokemonTodayFailed.language);
+ gUnknown_020387E8 = 6;
+ break;
+ case 6:
+ TVShowDone();
+ break;
}
ShowFieldMessage(gTVPokemonTodayFailedCaptureTextGroup[switchval]);
}
@@ -2783,46 +2781,46 @@ void DoTVShowPokemonFanClubLetter(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]);
- gUnknown_020387E8 = 50;
- break;
- case 1:
- rval = (Random() % 4) + 1;
- if (rval == 1) {
- gUnknown_020387E8 = 2;
- } else {
- gUnknown_020387E8 = rval + 2;
- }
- break;
- case 2:
- gUnknown_020387E8 = 51;
- break;
- case 3:
- gUnknown_020387E8 += (Random() % 3) + 1;
- break;
- case 4:
- case 5:
- case 6:
- sub_80BF79C(tvShow);
- gUnknown_020387E8 = 7;
- break;
- case 7:
- rval = (Random() % 0x1f) + 0x46;
- sub_80BF088(2, rval);
- TVShowDone();
- break;
- case 50:
- ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
- ShowFieldMessage(gStringVar4);
- gUnknown_020387E8 = 1;
- return;
- case 51:
- ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
- ShowFieldMessage(gStringVar4);
- gUnknown_020387E8 = 3;
- return;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubLetter.playerName, tvShow->fanclubLetter.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubLetter.species]);
+ gUnknown_020387E8 = 50;
+ break;
+ case 1:
+ rval = (Random() % 4) + 1;
+ if (rval == 1) {
+ gUnknown_020387E8 = 2;
+ } else {
+ gUnknown_020387E8 = rval + 2;
+ }
+ break;
+ case 2:
+ gUnknown_020387E8 = 51;
+ break;
+ case 3:
+ gUnknown_020387E8 += (Random() % 3) + 1;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ sub_80BF79C(tvShow);
+ gUnknown_020387E8 = 7;
+ break;
+ case 7:
+ rval = (Random() % 0x1f) + 0x46;
+ sub_80BF088(2, rval);
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 1;
+ return;
+ case 51:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->fanclubLetter.pad04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 3;
+ return;
}
ShowFieldMessage(gTVFanClubTextGroup[switchval]);
}
@@ -2834,27 +2832,27 @@ void DoTVShowRecentHappenings(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language);
- sub_80BF79C(tvShow);
- gUnknown_020387E8 = 50;
- break;
- case 1:
- gUnknown_020387E8 += 1 + (Random() % 3);
- break;
- case 2:
- case 3:
- case 4:
- gUnknown_020387E8 = 5;
- break;
- case 5:
- TVShowDone();
- break;
- case 50:
- ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2);
- ShowFieldMessage(gStringVar4);
- gUnknown_020387E8 = 1;
- return;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->recentHappenings.playerName, tvShow->recentHappenings.language);
+ sub_80BF79C(tvShow);
+ gUnknown_020387E8 = 50;
+ break;
+ case 1:
+ gUnknown_020387E8 += 1 + (Random() % 3);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ gUnknown_020387E8 = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, tvShow->recentHappenings.var04, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ gUnknown_020387E8 = 1;
+ return;
}
ShowFieldMessage(gTVRecentHappeningsTextGroup[switchval]);
}
@@ -2866,25 +2864,25 @@ void DoTVShowPokemonFanClubOpinions(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
- TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E);
- gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1;
- break;
- case 1:
- case 2:
- case 3:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
- sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]);
- gUnknown_020387E8 = 4;
- break;
- case 4:
- TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
- sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
+ TVShowConvertInternationalString(gStringVar3, tvShow->fanclubOpinions.var10, tvShow->fanclubOpinions.var0E);
+ gUnknown_020387E8 = tvShow->fanclubOpinions.var04B + 1;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->fanclubOpinions.var02]);
+ sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[0]);
+ gUnknown_020387E8 = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, tvShow->fanclubOpinions.playerName, tvShow->fanclubOpinions.language);
+ sub_80EB3FC(gStringVar3, tvShow->fanclubOpinions.var1C[1]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(gTVFanClubOpinionsTextGroup[switchval]);
}
@@ -2914,50 +2912,50 @@ void DoTVShowInSearchOfTrainers(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
- if (gSaveBlock1.gabbyAndTyData.val9 > 1) {
- gUnknown_020387E8 = 1;
- } else {
- gUnknown_020387E8 = 2;
- }
- break;
- case 1:
+ case 0:
+ sub_80FBFB4(gStringVar1, gSaveBlock1.gabbyAndTyData.mapnum, 0);
+ if (gSaveBlock1.gabbyAndTyData.val9 > 1) {
+ gUnknown_020387E8 = 1;
+ } else {
gUnknown_020387E8 = 2;
- break;
- case 2:
- if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) {
- gUnknown_020387E8 = 4;
- } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) {
- gUnknown_020387E8 = 5;
- } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) {
- gUnknown_020387E8 = 6;
- } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) {
- gUnknown_020387E8 = 7;
- } else {
- gUnknown_020387E8 = 3;
- }
- break;
- case 3:
- StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
- StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]);
- StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
- gUnknown_020387E8 = 8;
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- gUnknown_020387E8 = 8;
- break;
- case 8:
- sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2);
- StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
- StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
- gScriptResult = 1;
- gUnknown_020387E8 = 0;;
- TakeTVShowInSearchOfTrainersOffTheAir();
- break;
+ }
+ break;
+ case 1:
+ gUnknown_020387E8 = 2;
+ break;
+ case 2:
+ if (gSaveBlock1.gabbyAndTyData.valA_0 == 0) {
+ gUnknown_020387E8 = 4;
+ } else if (gSaveBlock1.gabbyAndTyData.valA_3 != 0) {
+ gUnknown_020387E8 = 5;
+ } else if (gSaveBlock1.gabbyAndTyData.valA_2 != 0) {
+ gUnknown_020387E8 = 6;
+ } else if (gSaveBlock1.gabbyAndTyData.valA_1 != 0) {
+ gUnknown_020387E8 = 7;
+ } else {
+ gUnknown_020387E8 = 3;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
+ StringCopy(gStringVar2, gMoveNames[gSaveBlock1.gabbyAndTyData.move1]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
+ gUnknown_020387E8 = 8;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ gUnknown_020387E8 = 8;
+ break;
+ case 8:
+ sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.move2);
+ StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
+ gScriptResult = 1;
+ gUnknown_020387E8 = 0;;
+ TakeTVShowInSearchOfTrainersOffTheAir();
+ break;
}
ShowFieldMessage(gTVGabbyAndTyTextGroup[switchval]);
}
@@ -2974,18 +2972,18 @@ void DoTVShowPokemonAngler(void) {
}
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
- sub_80BF088(2, tvShow->pokemonAngler.var03);
- TVShowDone();
- break;
- case 1:
- TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
- StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
- sub_80BF088(2, tvShow->pokemonAngler.var02);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
+ sub_80BF088(2, tvShow->pokemonAngler.var03);
+ TVShowDone();
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, tvShow->pokemonAngler.playerName, tvShow->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[tvShow->pokemonAngler.var04]);
+ sub_80BF088(2, tvShow->pokemonAngler.var02);
+ TVShowDone();
+ break;
}
ShowFieldMessage(gTVFishingGuruAdviceTextGroup[switchval]);
}
@@ -2997,24 +2995,24 @@ void DoTVShowTheWorldOfMasters(void) {
gScriptResult = 0;
switchval = gUnknown_020387E8;
switch (switchval) {
- case 0:
- TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
- tvShow->worldOfMasters.language);
- sub_80BF088(1, tvShow->worldOfMasters.var06);
- sub_80BF088(2, tvShow->worldOfMasters.var02);
- gUnknown_020387E8 = 1;
- break;
- case 1:
- StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]);
- gUnknown_020387E8 = 2;
- break;
- case 2:
- TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
- tvShow->worldOfMasters.language);
- sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0);
- StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]);
- TVShowDone();
- break;
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
+ tvShow->worldOfMasters.language);
+ sub_80BF088(1, tvShow->worldOfMasters.var06);
+ sub_80BF088(2, tvShow->worldOfMasters.var02);
+ gUnknown_020387E8 = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[tvShow->worldOfMasters.var08]);
+ gUnknown_020387E8 = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, tvShow->worldOfMasters.playerName,
+ tvShow->worldOfMasters.language);
+ sub_80FBFB4(gStringVar2, tvShow->worldOfMasters.var0a, 0);
+ StringCopy(gStringVar3, gSpeciesNames[tvShow->worldOfMasters.var04]);
+ TVShowDone();
+ break;
}
ShowFieldMessage(gTVWorldOfMastersTextGroup[switchval]);
}
diff --git a/src/wallclock.c b/src/wallclock.c
index 0f3665c65..0b9948adc 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -8,6 +8,7 @@
#include "rtc.h"
#include "songs.h"
#include "sound.h"
+#include "strings2.h"
#include "task.h"
#include "trig.h"
@@ -15,7 +16,6 @@ extern u16 gSpecialVar_0x8004;
extern u8 gMiscClock_Gfx[];
extern u8 gUnknown_08E95774[];
extern u8 gUnknown_08E954B0[];
-extern u8 gOtherText_CorrectTimePrompt[];
extern const struct MenuAction gMenuYesNoItems[];
extern u16 gMiscClockMale_Pal[];
extern u16 gMiscClockFemale_Pal[];
@@ -428,17 +428,17 @@ static void Task_SetClock4(u8 taskId)
{
switch (ProcessMenuInputNoWrap_())
{
- case 0: //YES
- PlaySE(SE_SELECT);
- gTasks[taskId].func = Task_SetClock5; //Move on
- return;
- case -1: //B button
- case 1: //NO
- sub_8072DEC();
- PlaySE(SE_SELECT);
- MenuZeroFillWindowRect(23, 8, 29, 13);
- MenuZeroFillWindowRect(2, 16, 27, 19);
- gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock
+ case 0: //YES
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = Task_SetClock5; //Move on
+ return;
+ case -1: //B button
+ case 1: //NO
+ sub_8072DEC();
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(23, 8, 29, 13);
+ MenuZeroFillWindowRect(2, 16, 27, 19);
+ gTasks[taskId].func = Task_SetClock2; //Go back and let player adjust clock
}
}
@@ -501,18 +501,18 @@ static u16 CalcNewMinHandAngle(u16 angle, u8 direction, u8 speed)
switch (direction)
{
- case MVMT_BACKWARD:
- if (angle)
- angle = angle - delta;
- else
- angle = 360 - delta;
- break;
- case MVMT_FORWARD:
- if (angle < 360 - delta)
- angle = angle + delta;
- else
- angle = 0;
- break;
+ case MVMT_BACKWARD:
+ if (angle)
+ angle = angle - delta;
+ else
+ angle = 360 - delta;
+ break;
+ case MVMT_FORWARD:
+ if (angle < 360 - delta)
+ angle = angle + delta;
+ else
+ angle = 0;
+ break;
}
return angle;
}
@@ -522,32 +522,32 @@ static u8 AdvanceClock(u8 taskId, u8 direction)
{
switch (direction)
{
- case MVMT_BACKWARD:
- if (gTasks[taskId].tMinutes > 0)
- gTasks[taskId].tMinutes--;
+ case MVMT_BACKWARD:
+ if (gTasks[taskId].tMinutes > 0)
+ gTasks[taskId].tMinutes--;
+ else
+ {
+ gTasks[taskId].tMinutes = 59;
+ if (gTasks[taskId].tHours > 0)
+ gTasks[taskId].tHours--;
else
- {
- gTasks[taskId].tMinutes = 59;
- if (gTasks[taskId].tHours > 0)
- gTasks[taskId].tHours--;
- else
- gTasks[taskId].tHours = 23;
- UpdateClockPeriod(taskId, direction);
- }
- break;
- case MVMT_FORWARD:
- if (gTasks[taskId].tMinutes < 59)
- gTasks[taskId].tMinutes++;
+ gTasks[taskId].tHours = 23;
+ UpdateClockPeriod(taskId, direction);
+ }
+ break;
+ case MVMT_FORWARD:
+ if (gTasks[taskId].tMinutes < 59)
+ gTasks[taskId].tMinutes++;
+ else
+ {
+ gTasks[taskId].tMinutes = 0;
+ if (gTasks[taskId].tHours < 23)
+ gTasks[taskId].tHours++;
else
- {
- gTasks[taskId].tMinutes = 0;
- if (gTasks[taskId].tHours < 23)
- gTasks[taskId].tHours++;
- else
- gTasks[taskId].tHours = 0;
- UpdateClockPeriod(taskId, direction);
- }
- break;
+ gTasks[taskId].tHours = 0;
+ UpdateClockPeriod(taskId, direction);
+ }
+ break;
}
return 0;
}
@@ -559,28 +559,28 @@ static void UpdateClockPeriod(u8 taskId, u8 direction)
switch (direction)
{
- case MVMT_BACKWARD:
- switch (hours)
- {
- case 11:
- gTasks[taskId].tPeriod = PERIOD_AM;
- break;
- case 23:
- gTasks[taskId].tPeriod = PERIOD_PM;
- break;
- }
+ case MVMT_BACKWARD:
+ switch (hours)
+ {
+ case 11:
+ gTasks[taskId].tPeriod = PERIOD_AM;
break;
- case MVMT_FORWARD:
- switch (hours)
- {
- case 0:
- gTasks[taskId].tPeriod = PERIOD_AM;
- break;
- case 12:
- gTasks[taskId].tPeriod = PERIOD_PM;
- break;
- }
+ case 23:
+ gTasks[taskId].tPeriod = PERIOD_PM;
break;
+ }
+ break;
+ case MVMT_FORWARD:
+ switch (hours)
+ {
+ case 0:
+ gTasks[taskId].tPeriod = PERIOD_AM;
+ break;
+ case 12:
+ gTasks[taskId].tPeriod = PERIOD_PM;
+ break;
+ }
+ break;
}
}